diff --git a/.codespellrc b/.codespellrc index 73904da08..f3fb3ae79 100644 --- a/.codespellrc +++ b/.codespellrc @@ -1,3 +1,3 @@ [codespell] -ignore-words-list: crate,everytime,inout,co-ordinate,ot,nwo,atleast,ue,afterall,ser -skip: **/target,node_modules,build,dist,./out,**/Cargo.lock,./docs/kcl/*.md,.yarn.lock,**/yarn.lock,./openapi/*.json,./packages/codemirror-lang-kcl/test/all.test.ts,./public/kcl-samples,./rust/kcl-lib/tests/kcl_samples,tsconfig.tsbuildinfo +ignore-words-list: crate,everytime,inout,co-ordinate,ot,nwo,atleast,ue,afterall,ser,fromM,FromM +skip: **/target,node_modules,build,dist,./out,**/Cargo.lock,./docs/kcl/*.md,.package-lock.json,**/package-lock.json,./openapi/*.json,./packages/codemirror-lang-kcl/test/all.test.ts,./public/kcl-samples,./rust/kcl-lib/tests/kcl_samples,tsconfig.tsbuildinfo,./src/lib/machine-api.d.ts diff --git a/.github/ci-cd-scripts/playwright-electron.sh b/.github/ci-cd-scripts/playwright-electron.sh index f5c5acc2b..931653f4c 100755 --- a/.github/ci-cd-scripts/playwright-electron.sh +++ b/.github/ci-cd-scripts/playwright-electron.sh @@ -7,11 +7,11 @@ if [[ ! -f "test-results/.last-run.json" ]]; then # If no last run artifact, than run Playwright normally echo "run playwright normally" if [[ "$3" == *ubuntu* ]]; then - xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test:playwright:electron:ubuntu -- --shard=$1/$2 || true + xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test:playwright:electron:ubuntu -- --shard=$1/$2 || true elif [[ "$3" == *windows* ]]; then - yarn test:playwright:electron:windows -- --shard=$1/$2 || true + npm run test:playwright:electron:windows -- --shard=$1/$2 || true elif [[ "$3" == *macos* ]]; then - yarn test:playwright:electron:macos -- --shard=$1/$2 || true + npm run test:playwright:electron:macos -- --shard=$1/$2 || true else echo "Do not run Playwright. Unable to detect os runtime." exit 1 @@ -31,11 +31,11 @@ while [[ $retry -le $max_retries ]]; do echo "retried=true" >>$GITHUB_OUTPUT echo "run playwright with last failed tests and retry $retry" if [[ "$3" == *ubuntu* ]]; then - xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test:playwright:electron:ubuntu -- --last-failed || true + xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test:playwright:electron:ubuntu -- --last-failed || true elif [[ "$3" == *windows* ]]; then - yarn test:playwright:electron:windows -- --last-failed || true + npm run test:playwright:electron:windows -- --last-failed || true elif [[ "$3" == *macos* ]]; then - yarn test:playwright:electron:macos -- --last-failed || true + npm run test:playwright:electron:macos -- --last-failed || true else echo "Do not run playwright. Unable to detect os runtime." exit 1 diff --git a/.github/ci-cd-scripts/start-vector-macos.sh b/.github/ci-cd-scripts/start-vector-macos.sh new file mode 100755 index 000000000..689de546f --- /dev/null +++ b/.github/ci-cd-scripts/start-vector-macos.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -euo pipefail + +# Install vector +brew tap vectordotdev/brew && brew install vector + +# Configure vector +mkdir -p /tmp/vector +cp .github/workflows/vector.toml /tmp/vector.toml +sed -i '' "s#OS_NAME#${OS_NAME}#g" /tmp/vector.toml +sed -i '' "s#GITHUB_WORKFLOW#${GITHUB_WORKFLOW}#g" /tmp/vector.toml +sed -i '' "s#GITHUB_REPOSITORY#${GITHUB_REPOSITORY}#g" /tmp/vector.toml +sed -i '' "s#GITHUB_SHA#${GITHUB_SHA}#g" /tmp/vector.toml +sed -i '' "s#GITHUB_REF_NAME#${GITHUB_REF_NAME}#g" /tmp/vector.toml +sed -i '' "s#GH_ACTIONS_AXIOM_TOKEN#${GH_ACTIONS_AXIOM_TOKEN}#g" /tmp/vector.toml + +# Display settings +echo +echo 'Vector config:' +cat /tmp/vector.toml +echo + +# Start in the background +$(brew --prefix)/opt/vector/bin/vector --config /tmp/vector.toml & diff --git a/.github/ci-cd-scripts/start-vector-ubuntu.sh b/.github/ci-cd-scripts/start-vector-ubuntu.sh new file mode 100755 index 000000000..1f80337db --- /dev/null +++ b/.github/ci-cd-scripts/start-vector-ubuntu.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -euo pipefail + +# Install vector +curl --proto '=https' --tlsv1.2 -sSfL https://sh.vector.dev | bash -s -- -y + +# Configure vector +mkdir -p /tmp/vector +cp .github/workflows/vector.toml /tmp/vector.toml +sed -i "s#OS_NAME#${OS_NAME}#g" /tmp/vector.toml +sed -i "s#GITHUB_WORKFLOW#${GITHUB_WORKFLOW}#g" /tmp/vector.toml +sed -i "s#GITHUB_REPOSITORY#${GITHUB_REPOSITORY}#g" /tmp/vector.toml +sed -i "s#GITHUB_SHA#${GITHUB_SHA}#g" /tmp/vector.toml +sed -i "s#GITHUB_REF_NAME#${GITHUB_REF_NAME}#g" /tmp/vector.toml +sed -i "s#GH_ACTIONS_AXIOM_TOKEN#${GH_ACTIONS_AXIOM_TOKEN}#g" /tmp/vector.toml + +# Display settings +echo +echo 'Vector config:' +cat /tmp/vector.toml +echo + +# Start in background +${HOME}/.vector/bin/vector --config /tmp/vector.toml & diff --git a/.github/workflows/build-and-store-wasm.yml b/.github/workflows/build-and-store-wasm.yml index b001a6594..7e9f0237e 100644 --- a/.github/workflows/build-and-store-wasm.yml +++ b/.github/workflows/build-and-store-wasm.yml @@ -13,9 +13,9 @@ jobs: - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - cache: 'yarn' + cache: 'npm' - name: Install dependencies - run: yarn + run: npm install - name: Use correct Rust toolchain shell: bash run: | @@ -24,7 +24,7 @@ jobs: uses: actions-rust-lang/setup-rust-toolchain@v1 with: cache: false # Configured below. - - uses: taiki-e/install-action@37bdc826eaedac215f638a96472df572feab0f9b + - uses: taiki-e/install-action@d4635f2de61c8b8104d59cd4aede2060638378cc with: tool: wasm-pack - name: Rust Cache @@ -32,7 +32,7 @@ jobs: with: workspaces: rust - name: build wasm - run: yarn build:wasm + run: npm run build:wasm # Upload the WASM bundle as an artifact diff --git a/.github/workflows/build-apps.yml b/.github/workflows/build-apps.yml index c4751ed84..1daf0945f 100644 --- a/.github/workflows/build-apps.yml +++ b/.github/workflows/build-apps.yml @@ -29,9 +29,9 @@ jobs: - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - cache: 'yarn' + cache: 'npm' - - run: yarn install + - run: npm install - id: filter name: Check for Rust changes @@ -77,7 +77,7 @@ jobs: with: cache: false # Configured below. - - uses: taiki-e/install-action@37bdc826eaedac215f638a96472df572feab0f9b + - uses: taiki-e/install-action@d4635f2de61c8b8104d59cd4aede2060638378cc if: ${{ steps.wasm.outputs.should-build-wasm == 'true' }} with: tool: wasm-pack @@ -90,20 +90,20 @@ jobs: - name: Run build:wasm if: ${{ steps.wasm.outputs.should-build-wasm == 'true' }} - run: "yarn build:wasm" + run: "npm run build:wasm" - name: Set nightly version, product name, release notes, and icons if: ${{ env.IS_NIGHTLY == 'true' }} run: | export VERSION=${GITHUB_REF_NAME#nightly-v} - yarn files:set-version - yarn files:flip-to-nightly + npm run files:set-version + npm run files:flip-to-nightly - name: Set release version if: ${{ env.IS_RELEASE == 'true' }} run: | export VERSION=${GITHUB_REF_NAME#v} - yarn files:set-version + npm run files:set-version - uses: actions/upload-artifact@v4 with: @@ -172,16 +172,16 @@ jobs: uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - cache: 'yarn' # Set this to npm, yarn or pnpm. + cache: 'npm' # Set this to npm, npm or pnpm. - - name: yarn install + - name: npm install # Windows is picky sometimes and fails on fetch. Step takes about ~30s uses: nick-fields/retry@v3.0.2 with: shell: bash timeout_minutes: 2 max_attempts: 3 - command: yarn install + command: npm install - name: Prepare certificate and variables (Windows only) if: ${{ (env.IS_RELEASE == 'true' || env.IS_NIGHTLY == 'true') && matrix.os == 'windows-2022' }} @@ -207,13 +207,20 @@ jobs: smctl.exe keypair ls C:\Windows\System32\certutil.exe -csp "DigiCert Signing Manager KSP" -key -user smksp_cert_sync.exe + smctl windows certsync + # This last line `smctl windows certsync` was added after windows codesign failures started happening + # with nightly-v25.4.10. It looks like `smksp_cert_sync.exe` used to do the sync to the local cert store, + # but stopped doing it overnight. This extra call that I randomly got from this azure-related doc page + # https://docs.digicert.com/en/digicert-keylocker/code-signing/sign-with-third-party-signing-tools/windows-applications/sign-azure-apps-with-signtool-using-ksp-library.html#sync-certificates--windows-only--618365 + # seems to be doing that extra sync that we need for scripts/sign-win.js to work. + # TODO: we still need to make sign-win.js errors fail the workflow, see issue #6276 shell: cmd - name: Build the app (debug) if: ${{ env.IS_RELEASE == 'false' && env.IS_NIGHTLY == 'false' }} # electron-builder doesn't have a concept of release vs debug, # this is just not doing any codesign or release yml generation, and points to dev infra - run: yarn tronb:package:dev + run: npm run tronb:package:dev - name: Build the app (release) if: ${{ env.IS_RELEASE == 'true' || env.IS_NIGHTLY == 'true' }} @@ -233,7 +240,7 @@ jobs: shell: bash timeout_minutes: 10 max_attempts: 3 - command: yarn tronb:package:prod + command: npm run tronb:package:prod - name: List artifacts in out/ run: ls -R out @@ -295,7 +302,7 @@ jobs: shell: bash timeout_minutes: 10 max_attempts: 3 - command: yarn tronb:package:prod + command: npm run tronb:package:prod - uses: actions/upload-artifact@v4 if: ${{ env.IS_RELEASE == 'true' }} @@ -378,7 +385,7 @@ jobs: NOTES: ${{ needs.prepare-files.outputs.notes }} PUB_DATE: ${{ github.event.repository.updated_at }} WEBSITE_DIR: ${{ env.IS_NIGHTLY == 'true' && 'dl.zoo.dev/releases/modeling-app/nightly' || 'dl.zoo.dev/releases/modeling-app' }} - URL_CODED_NAME: ${{ env.IS_NIGHTLY == 'true' && 'Zoo%20Modeling%20App%20%28Nightly%29' || 'Zoo%20Modeling%20App' }} + URL_CODED_NAME: ${{ env.IS_NIGHTLY == 'true' && 'Zoo%20Design%20Studio%20%28Nightly%29' || 'Zoo%20Design%20Studio' }} run: | RELEASE_DIR=https://${WEBSITE_DIR} jq --null-input \ @@ -435,7 +442,7 @@ jobs: export TAG="nightly-${VERSION}" export PREVIOUS_TAG=$(git tag --list --sort=-committerdate "nightly-v[0-9]*" | head -n2 | tail -n1) export NOTES=$(./scripts/get-nightly-changelog.sh) - yarn files:set-notes + npm run files:set-notes - name: Authenticate to Google Cloud if: ${{ env.IS_NIGHTLY == 'true' }} @@ -460,4 +467,4 @@ jobs: - name: Invalidate bucket cache on latest*.yml and last_download.json files if: ${{ env.IS_NIGHTLY == 'true' }} - run: yarn files:invalidate-bucket:nightly + run: npm run files:invalidate-bucket:nightly diff --git a/.github/workflows/cargo-test.yml b/.github/workflows/cargo-test.yml index ce73f7303..037916a03 100644 --- a/.github/workflows/cargo-test.yml +++ b/.github/workflows/cargo-test.yml @@ -34,20 +34,11 @@ jobs: uses: actions-rust-lang/setup-rust-toolchain@v1 with: cache: false # Configured below. - - name: Install vector - run: | - curl --proto '=https' --tlsv1.2 -sSfL https://sh.vector.dev > /tmp/vector.sh - chmod +x /tmp/vector.sh - /tmp/vector.sh -y -no-modify-path - mkdir -p /tmp/vector - cp .github/workflows/vector.toml /tmp/vector.toml - sed -i "s#GITHUB_WORKFLOW#${GITHUB_WORKFLOW}#g" /tmp/vector.toml - sed -i "s#GITHUB_REPOSITORY#${GITHUB_REPOSITORY}#g" /tmp/vector.toml - sed -i "s#GITHUB_SHA#${GITHUB_SHA}#g" /tmp/vector.toml - sed -i "s#GITHUB_REF_NAME#${GITHUB_REF_NAME}#g" /tmp/vector.toml - sed -i "s#GH_ACTIONS_AXIOM_TOKEN#${{secrets.GH_ACTIONS_AXIOM_TOKEN}}#g" /tmp/vector.toml - cat /tmp/vector.toml - ${HOME}/.vector/bin/vector --config /tmp/vector.toml & + - name: Start Vector + run: .github/ci-cd-scripts/start-vector-ubuntu.sh + env: + GH_ACTIONS_AXIOM_TOKEN: ${{ secrets.GH_ACTIONS_AXIOM_TOKEN }} + OS_NAME: ${{ env.OS_NAME }} - uses: taiki-e/install-action@cargo-llvm-cov - uses: taiki-e/install-action@nextest - name: Install just diff --git a/.github/workflows/check-exampleKcl.yml b/.github/workflows/check-exampleKcl.yml index 60ec6418c..de3863b66 100644 --- a/.github/workflows/check-exampleKcl.yml +++ b/.github/workflows/check-exampleKcl.yml @@ -5,6 +5,7 @@ on: types: [opened, synchronize] paths: - 'src/lib/exampleKcl.ts' + - 'public/kcl-samples/bracket/main.kcl' permissions: contents: read @@ -22,11 +23,11 @@ jobs: uses: actions/github-script@v7 with: script: | - const message = '`src/lib/exampleKcl.ts` has been updated in this PR, please review and update the `src/routes/onboarding`, if needed.'; + const message = '`public/kcl-samples/bracket/main.kcl` or `src/lib/exampleKcl.ts` has been updated in this PR, please review and update the `src/routes/onboarding`, if needed.'; const issue_number = context.payload.pull_request.number; const owner = context.repo.owner; const repo = context.repo.repo; - + const { data: comments } = await github.rest.issues.listComments({ owner, repo, @@ -43,4 +44,4 @@ jobs: issue_number, body: message, }); - } \ No newline at end of file + } diff --git a/.github/workflows/codemirror-lang-kcl.yml b/.github/workflows/codemirror-lang-kcl.yml index ba9b25be7..d5c7bd95a 100644 --- a/.github/workflows/codemirror-lang-kcl.yml +++ b/.github/workflows/codemirror-lang-kcl.yml @@ -11,7 +11,7 @@ concurrency: cancel-in-progress: true jobs: - yarn-unit-test: + npm-unit-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -19,14 +19,11 @@ jobs: - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - cache: 'yarn' + cache: 'npm' - - run: yarn install - working-directory: packages/codemirror-lang-kcl + - run: npm install - - run: yarn tsc - working-directory: packages/codemirror-lang-kcl + - run: npm run tsc --workspace=packages/codemirror-lang-kcl - name: run unit tests - run: yarn test - working-directory: packages/codemirror-lang-kcl + run: npm run test --workspace=packages/codemirror-lang-kcl diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index 7634b3058..4d56e7931 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -97,11 +97,11 @@ jobs: if: needs.conditions.outputs.should-run == 'true' with: node-version-file: '.nvmrc' - cache: 'yarn' + cache: 'npm' - name: Install dependencies if: needs.conditions.outputs.should-run == 'true' - run: yarn + run: npm install - name: Download Wasm Cache id: download-wasm @@ -140,7 +140,7 @@ jobs: with: cache: false # Configured below. - - uses: taiki-e/install-action@37bdc826eaedac215f638a96472df572feab0f9b + - uses: taiki-e/install-action@d4635f2de61c8b8104d59cd4aede2060638378cc if: ${{ needs.conditions.outputs.should-run == 'true' && steps.wasm.outputs.should-build-wasm == 'true' }} with: tool: wasm-pack @@ -154,7 +154,7 @@ jobs: - name: Build Wasm if: ${{ needs.conditions.outputs.should-run == 'true' && steps.wasm.outputs.should-build-wasm == 'true' }} shell: bash - run: yarn build:wasm + run: npm run build:wasm - uses: actions/upload-artifact@v4 if: needs.conditions.outputs.should-run == 'true' @@ -197,12 +197,12 @@ jobs: if: needs.conditions.outputs.should-run == 'true' with: node-version-file: '.nvmrc' - cache: 'yarn' + cache: 'npm' - name: Install dependencies id: deps-install if: needs.conditions.outputs.should-run == 'true' - run: yarn + run: npm install - name: Cache Playwright Browsers if: needs.conditions.outputs.should-run == 'true' @@ -210,27 +210,32 @@ jobs: with: path: | ~/.cache/ms-playwright/ - key: ${{ runner.os }}-playwright-${{ hashFiles('yarn.lock') }} + key: ${{ runner.os }}-playwright-${{ hashFiles('package-lock.json') }} - name: Install Playwright Browsers if: needs.conditions.outputs.should-run == 'true' - run: yarn playwright install --with-deps + run: npm run playwright install --with-deps - name: build web if: needs.conditions.outputs.should-run == 'true' - run: yarn tronb:vite:dev + run: npm run tronb:vite:dev - name: Run ubuntu/chrome snapshots if: needs.conditions.outputs.should-run == 'true' uses: nick-fields/retry@v3.0.2 with: shell: bash - command: yarn test:snapshots + command: npm run test:snapshots timeout_minutes: 30 max_attempts: 3 env: token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }} snapshottoken: ${{ secrets.KITTYCAD_API_TOKEN }} + TAB_API_URL: ${{ secrets.TAB_API_URL }} + TAB_API_KEY: ${{ secrets.TAB_API_KEY }} + CI_COMMIT_SHA: ${{ github.event.pull_request.head.sha }} + CI_PR_NUMBER: ${{ github.event.pull_request.number }} + TARGET: web - uses: actions/upload-artifact@v4 if: ${{ needs.conditions.outputs.should-run == 'true' && !cancelled() && (success() || failure()) }} @@ -316,12 +321,12 @@ jobs: if: needs.conditions.outputs.should-run == 'true' with: node-version-file: '.nvmrc' - cache: 'yarn' + cache: 'npm' - name: Install dependencies id: deps-install if: needs.conditions.outputs.should-run == 'true' - run: yarn + run: npm install - name: Cache Playwright Browsers if: needs.conditions.outputs.should-run == 'true' @@ -329,32 +334,22 @@ jobs: with: path: | ~/.cache/ms-playwright/ - key: ${{ runner.os }}-playwright-${{ hashFiles('yarn.lock') }} + key: ${{ runner.os }}-playwright-${{ hashFiles('package-lock.json') }} - name: Install Playwright Browsers if: needs.conditions.outputs.should-run == 'true' - run: yarn playwright install --with-deps + run: npm run playwright install --with-deps - name: Build web if: needs.conditions.outputs.should-run == 'true' - run: yarn tronb:vite:dev + run: npm run tronb:vite:dev - - name: Install vector - if: ${{ needs.conditions.outputs.should-run == 'true' && contains(matrix.os, 'ubuntu') }} - shell: bash - run: | - curl --proto '=https' --tlsv1.2 -sSfL https://sh.vector.dev > /tmp/vector.sh - chmod +x /tmp/vector.sh - /tmp/vector.sh -y -no-modify-path - mkdir -p /tmp/vector - cp .github/workflows/vector.toml /tmp/vector.toml - sed -i "s#GITHUB_WORKFLOW#${GITHUB_WORKFLOW}#g" /tmp/vector.toml - sed -i "s#GITHUB_REPOSITORY#${GITHUB_REPOSITORY}#g" /tmp/vector.toml - sed -i "s#GITHUB_SHA#${GITHUB_SHA}#g" /tmp/vector.toml - sed -i "s#GITHUB_REF_NAME#${GITHUB_REF_NAME}#g" /tmp/vector.toml - sed -i "s#GH_ACTIONS_AXIOM_TOKEN#${{secrets.GH_ACTIONS_AXIOM_TOKEN}}#g" /tmp/vector.toml - cat /tmp/vector.toml - ${HOME}/.vector/bin/vector --config /tmp/vector.toml & + - name: Start Vector + if: ${{ needs.conditions.outputs.should-run == 'true' && !contains(matrix.os, 'windows') }} + run: .github/ci-cd-scripts/start-vector-${{ env.OS_NAME }}.sh + env: + GH_ACTIONS_AXIOM_TOKEN: ${{ secrets.GH_ACTIONS_AXIOM_TOKEN }} + OS_NAME: ${{ env.OS_NAME }} - uses: actions/download-artifact@v4 if: ${{ needs.conditions.outputs.should-run == 'true' && !cancelled() && (success() || failure()) }} @@ -375,6 +370,11 @@ jobs: env: FAIL_ON_CONSOLE_ERRORS: true token: ${{ secrets.KITTYCAD_API_TOKEN_DEV }} + TAB_API_URL: ${{ secrets.TAB_API_URL }} + TAB_API_KEY: ${{ secrets.TAB_API_KEY }} + CI_COMMIT_SHA: ${{ github.event.pull_request.head.sha }} + CI_PR_NUMBER: ${{ github.event.pull_request.number }} + TARGET: desktop - uses: actions/upload-artifact@v4 if: ${{ needs.conditions.outputs.should-run == 'true' && always() }} diff --git a/.github/workflows/generate-machine-api-types.yml b/.github/workflows/generate-machine-api-types.yml index 3433dd713..13ed0bd3a 100644 --- a/.github/workflows/generate-machine-api-types.yml +++ b/.github/workflows/generate-machine-api-types.yml @@ -21,10 +21,10 @@ jobs: - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - cache: 'yarn' - - run: yarn install - - run: yarn generate:machine-api - - run: yarn fmt + cache: 'npm' + - run: npm install + - run: npm run generate:machine-api + - run: npm run fmt || true - name: check for changes id: git-check run: | diff --git a/.github/workflows/kcl-language-server.yml b/.github/workflows/kcl-language-server.yml index 5ea6503df..ca435d214 100644 --- a/.github/workflows/kcl-language-server.yml +++ b/.github/workflows/kcl-language-server.yml @@ -56,21 +56,19 @@ jobs: node-version-file: ".nvmrc" - name: Install dependencies run: | - yarn install - cd rust/kcl-language-server - yarn install + npm install - name: Run tests run: | cd rust/kcl-language-server - yarn build - yarn test-compile + npm run build + npm run test-compile ls -la dist - xvfb-run -a yarn test + xvfb-run -a npm run test if: runner.os == 'Linux' - name: Run tests run: | cd rust/kcl-language-server - yarn test + npm run test if: runner.os != 'Linux' build-release: strategy: @@ -183,19 +181,20 @@ jobs: - name: Install dependencies run: | cd rust/kcl-language-server + # npm will symlink which will cause issues w tarballing later yarn install - name: Package Extension (release) if: startsWith(github.event.ref, 'refs/tags/') run: | cd rust/kcl-language-server - npx vsce package -o "../build/kcl-language-server-${{ matrix.code-target }}.vsix" --target ${{ matrix.code-target }} + npx vsce package --yarn -o "../build/kcl-language-server-${{ matrix.code-target }}.vsix" --target ${{ matrix.code-target }} - name: Package Extension (nightly) if: startsWith(github.event.ref, 'refs/tags/') == false run: | cd rust/kcl-language-server - npx vsce package -o "../build/kcl-language-server-${{ matrix.code-target }}.vsix" --target ${{ matrix.code-target }} --pre-release + npx vsce package --yarn -o "../build/kcl-language-server-${{ matrix.code-target }}.vsix" --target ${{ matrix.code-target }} --pre-release - name: remove server if: matrix.target == 'x86_64-unknown-linux-gnu' @@ -207,13 +206,13 @@ jobs: if: matrix.target == 'x86_64-unknown-linux-gnu' && startsWith(github.event.ref, 'refs/tags/') run: | cd rust/kcl-language-server - npx vsce package -o ../build/kcl-language-server-no-server.vsix + npx vsce package --yarn -o ../build/kcl-language-server-no-server.vsix - name: Package Extension (no server, nightly) if: matrix.target == 'x86_64-unknown-linux-gnu' && startsWith(github.event.ref, 'refs/tags/') == false run: | cd rust/kcl-language-server - npx vsce package -o ../build/kcl-language-server-no-server.vsix --pre-release + npx vsce package --yarn -o ../build/kcl-language-server-no-server.vsix --pre-release - name: Upload artifacts uses: actions/upload-artifact@v4 @@ -244,8 +243,8 @@ jobs: lld \ musl-dev \ nodejs \ - yarn \ - npm + npm \ + yarn - name: Checkout repository uses: actions/checkout@v4 @@ -272,19 +271,20 @@ jobs: - name: Install dependencies run: | cd rust/kcl-language-server + # npm will symlink which will cause issues w tarballing later yarn install - name: Package Extension (release) if: startsWith(github.event.ref, 'refs/tags/') run: | cd rust/kcl-language-server - npx vsce package -o "../build/kcl-language-server-alpine-x64.vsix" --target alpine-x64 + npx vsce package --yarn -o "../build/kcl-language-server-alpine-x64.vsix" --target alpine-x64 - name: Package Extension (release) if: startsWith(github.event.ref, 'refs/tags/') == false run: | cd rust/kcl-language-server - npx vsce package -o "../build/kcl-language-server-alpine-x64.vsix" --target alpine-x64 --pre-release + npx vsce package --yarn -o "../build/kcl-language-server-alpine-x64.vsix" --target alpine-x64 --pre-release - name: Upload artifacts uses: actions/upload-artifact@v4 diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml new file mode 100644 index 000000000..435ca7a2f --- /dev/null +++ b/.github/workflows/nix.yml @@ -0,0 +1,55 @@ +name: Test Nix Flake + +on: + push: + branches: [main] + pull_request: + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true +jobs: + nix-flake-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - uses: cachix/install-nix-action@v31 + with: + nix_path: nixpkgs=channel:nixos-unstable + + - name: nix flake check for all platforms + run: | + nix flake check --all-systems + + nix-build-linux: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - uses: cachix/install-nix-action@v31 + with: + nix_path: nixpkgs=channel:nixos-unstable + + - name: nix build . for x86_64-linux + run: nix build . + + nix-build-macos: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - uses: cachix/install-nix-action@v31 + with: + nix_path: nixpkgs=channel:nixos-unstable + + - name: nix build . for x86_64-darwin + run: nix build . + diff --git a/.github/workflows/publish-apps-release.yml b/.github/workflows/publish-apps-release.yml index 610c97c9a..1279ae86b 100644 --- a/.github/workflows/publish-apps-release.yml +++ b/.github/workflows/publish-apps-release.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - cache: 'yarn' + cache: 'npm' - name: Find tag workflow id id: tag_workflow_id @@ -105,7 +105,7 @@ jobs: - name: Override release notes env: NOTES: ${{ github.event.release.body }} - run: yarn files:set-notes + run: npm run files:set-notes - name: Authenticate to Google Cloud uses: 'google-github-actions/auth@v2.1.8' @@ -126,7 +126,7 @@ jobs: destination: 'dl.kittycad.io/releases/modeling-app' - name: Invalidate bucket cache on latest*.yml and last_download.json files - run: yarn files:invalidate-bucket + run: npm run files:invalidate-bucket - name: Upload release files to Github if: ${{ github.event_name == 'release' }} diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index fa741eada..735f2ed28 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -16,18 +16,18 @@ permissions: actions: read jobs: - yarn-fmt-check: + npm-fmt-check: runs-on: 'ubuntu-22.04' steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - cache: 'yarn' - - run: yarn install - - run: yarn fmt-check + cache: 'npm' + - run: npm install + - run: npm run fmt-check - yarn-build-wasm: + npm-build-wasm: # Build the wasm blob once on the fastest runner. runs-on: runs-on=${{ github.run_id }}/family=i7ie.2xlarge/image=ubuntu22-full-x64 steps: @@ -36,10 +36,10 @@ jobs: - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - cache: 'yarn' + cache: 'npm' - name: Install dependencies - run: yarn install + run: npm install - name: Use correct Rust toolchain shell: bash @@ -51,7 +51,7 @@ jobs: with: cache: false # Configured below. - - uses: taiki-e/install-action@37bdc826eaedac215f638a96472df572feab0f9b + - uses: taiki-e/install-action@d4635f2de61c8b8104d59cd4aede2060638378cc with: tool: wasm-pack @@ -62,7 +62,7 @@ jobs: - name: Build Wasm shell: bash - run: yarn build:wasm + run: npm run build:wasm - uses: actions/upload-artifact@v4 with: @@ -76,17 +76,17 @@ jobs: path: | rust/kcl-lib/bindings/* - yarn-tsc: + npm-tsc: runs-on: ubuntu-latest - needs: yarn-build-wasm + needs: npm-build-wasm steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - cache: 'yarn' - - run: yarn install + cache: 'npm' + - run: npm install - name: Download all artifacts uses: actions/download-artifact@v4 @@ -104,19 +104,19 @@ jobs: mkdir rust/kcl-lib/bindings cp -r prepared-ts-rs-bindings/* rust/kcl-lib/bindings/ - - run: yarn tsc + - run: npm run tsc - yarn-lint: + npm-lint: runs-on: ubuntu-latest - needs: yarn-build-wasm + needs: npm-build-wasm steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - cache: 'yarn' - - run: yarn install + cache: 'npm' + - run: npm install - name: Download all artifacts uses: actions/download-artifact@v4 @@ -134,19 +134,19 @@ jobs: mkdir rust/kcl-lib/bindings cp -r prepared-ts-rs-bindings/* rust/kcl-lib/bindings/ - - run: yarn lint + - run: npm run lint - yarn-circular-dependencies: + npm-circular-dependencies: runs-on: ubuntu-latest - needs: yarn-build-wasm + needs: npm-build-wasm steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - cache: 'yarn' - - run: yarn install + cache: 'npm' + - run: npm install - name: Download all artifacts uses: actions/download-artifact@v4 @@ -164,7 +164,7 @@ jobs: mkdir rust/kcl-lib/bindings cp -r prepared-ts-rs-bindings/* rust/kcl-lib/bindings/ - - run: yarn circular-deps:diff + - run: npm run circular-deps:diff python-codespell: runs-on: ubuntu-22.04 @@ -179,19 +179,19 @@ jobs: - name: Run codespell run: codespell --config .codespellrc # Edit this file to tweak the typo list and other configuration. - yarn-unit-test-kcl-samples: + npm-unit-test-kcl-samples: runs-on: ubuntu-latest - needs: yarn-build-wasm + needs: npm-build-wasm steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - cache: 'yarn' + cache: 'npm' - - run: yarn install - - uses: taiki-e/install-action@37bdc826eaedac215f638a96472df572feab0f9b + - run: npm install + - uses: taiki-e/install-action@d4635f2de61c8b8104d59cd4aede2060638378cc with: tool: wasm-pack @@ -211,32 +211,32 @@ jobs: mkdir rust/kcl-lib/bindings cp -r prepared-ts-rs-bindings/* rust/kcl-lib/bindings/ - - run: yarn simpleserver:bg + - run: npm run simpleserver:bg if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }} - name: Install Chromium Browser if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }} - run: yarn playwright install chromium --with-deps + run: npm run playwright install chromium --with-deps - name: run unit tests for kcl samples if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }} - run: yarn test:unit:kcl-samples + run: npm run test:unit:kcl-samples env: VITE_KC_DEV_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN_DEV }} - yarn-unit-test: + npm-unit-test: runs-on: ubuntu-latest - needs: yarn-build-wasm + needs: npm-build-wasm steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - cache: 'yarn' + cache: 'npm' - - run: yarn install - - uses: taiki-e/install-action@37bdc826eaedac215f638a96472df572feab0f9b + - run: npm install + - uses: taiki-e/install-action@d4635f2de61c8b8104d59cd4aede2060638378cc with: tool: wasm-pack @@ -256,16 +256,16 @@ jobs: mkdir rust/kcl-lib/bindings cp -r prepared-ts-rs-bindings/* rust/kcl-lib/bindings/ - - run: yarn simpleserver:bg + - run: npm run simpleserver:bg if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }} - name: Install Chromium Browser if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }} - run: yarn playwright install chromium --with-deps + run: npm run playwright install chromium --with-deps - name: Run unit tests if: ${{ github.event_name != 'release' && github.event_name != 'schedule' }} - run: xvfb-run -a yarn test:unit + run: xvfb-run -a npm run test:unit env: VITE_KC_DEV_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN_DEV }} diff --git a/.github/workflows/tag-nightly.yml b/.github/workflows/tag-nightly.yml index 5fd99f818..c560af471 100644 --- a/.github/workflows/tag-nightly.yml +++ b/.github/workflows/tag-nightly.yml @@ -27,7 +27,7 @@ jobs: with: node-version-file: '.nvmrc' - - run: yarn install + - run: npm install - name: Push tag run: | diff --git a/.github/workflows/vector.toml b/.github/workflows/vector.toml index bf4069b4a..9204755d0 100644 --- a/.github/workflows/vector.toml +++ b/.github/workflows/vector.toml @@ -8,6 +8,7 @@ include = ["/tmp/github-actions.log"] type = "remap" inputs = [ "github-actions-file" ] source = ''' +.platform = "OS_NAME" .action = "GITHUB_WORKFLOW" .repo = "GITHUB_REPOSITORY" .sha = "GITHUB_SHA" diff --git a/.gitignore b/.gitignore index 03e6f521b..9c82688f2 100644 --- a/.gitignore +++ b/.gitignore @@ -26,10 +26,12 @@ yarn-error.log* .idea .vscode .helix +result # rust rust/target rust/kcl-lib/bindings +rust/kcl-language-server/server public/kcl_wasm_lib_bg.wasm rust/lcov.info rust/kcl-wasm-lib/pkg diff --git a/.husky/pre-push b/.husky/pre-push index 8a17e3f29..6ca0c7637 100755 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,4 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -yarn fmt-check +npm run fmt-check diff --git a/.npmrc b/.npmrc new file mode 100644 index 000000000..521a9f7c0 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +legacy-peer-deps=true diff --git a/Makefile b/Makefile index 4cc05b788..44917e567 100644 --- a/Makefile +++ b/Makefile @@ -5,36 +5,38 @@ all: install build check # INSTALL ifeq ($(OS),Windows_NT) - CARGO ?= ~/.cargo/bin/cargo.exe - WASM_PACK ?= ~/.cargo/bin/wasm-pack.exe +export WINDOWS := true +ifndef MSYSTEM +export POWERSHELL := true +endif +endif + +ifdef WINDOWS +CARGO ?= $(USERPROFILE)/.cargo/bin/cargo.exe +WASM_PACK ?= $(USERPROFILE)/.cargo/bin/wasm-pack.exe else - CARGO ?= ~/.cargo/bin/cargo - WASM_PACK ?= ~/.cargo/bin/wasm-pack +CARGO ?= ~/.cargo/bin/cargo +WASM_PACK ?= ~/.cargo/bin/wasm-pack endif .PHONY: install -install: node_modules/.yarn-integrity $(CARGO) $(WASM_PACK) ## Install dependencies +install: node_modules/.package-lock.json $(CARGO) $(WASM_PACK) ## Install dependencies -node_modules/.yarn-integrity: package.json yarn.lock - yarn install -ifeq ($(OS),Windows_NT) - @ type nul > $@ -else - @ touch $@ -endif +node_modules/.package-lock.json: package.json package-lock.json + npm install $(CARGO): -ifeq ($(OS),Windows_NT) - yarn install:rust:windows +ifdef WINDOWS + npm run install:rust:windows else - yarn install:rust + npm run install:rust endif $(WASM_PACK): -ifeq ($(OS),Windows_NT) - yarn install:wasm-pack:cargo +ifdef WINDOWS + npm run install:wasm-pack:cargo else - yarn install:wasm-pack:sh + npm run install:wasm-pack:sh endif ############################################################################### @@ -57,17 +59,17 @@ build-web: install public/kcl_wasm_lib_bg.wasm build/index.html build-desktop: install public/kcl_wasm_lib_bg.wasm .vite/build/main.js public/kcl_wasm_lib_bg.wasm: $(CARGO_SOURCES) $(RUST_SOURCES) -ifeq ($(OS),Windows_NT) - yarn build:wasm:dev:windows +ifdef WINDOWS + npm run build:wasm:dev:windows else - yarn build:wasm:dev + npm run build:wasm:dev endif build/index.html: $(REACT_SOURCES) $(TYPESCRIPT_SOURCES) $(VITE_SOURCES) - yarn build:local + npm run build:local .vite/build/main.js: $(REACT_SOURCES) $(TYPESCRIPT_SOURCES) $(VITE_SOURCES) - yarn tronb:vite:dev + npm run tronb:vite:dev ############################################################################### # CHECK @@ -77,12 +79,12 @@ check: format lint .PHONY: format format: install ## Format the code - yarn fmt + npm run fmt .PHONY: lint lint: install ## Lint the code - yarn tsc - yarn lint + npm run tsc + npm run lint ############################################################################### # RUN @@ -94,11 +96,11 @@ run: run-$(TARGET) .PHONY: run-web run-web: install build-web ## Start the web app - yarn start + npm run start .PHONY: run-desktop run-desktop: install build-desktop ## Start the desktop app - yarn tron:start + npm run tron:start ############################################################################### # TEST @@ -113,7 +115,7 @@ test: test-unit test-e2e .PHONY: test-unit test-unit: install ## Run the unit tests @ curl -fs localhost:3000 >/dev/null || ( echo "Error: localhost:3000 not available, 'make run-web' first" && exit 1 ) - yarn test:unit + npm run test:unit .PHONY: test-e2e test-e2e: test-e2e-$(TARGET) @@ -122,17 +124,17 @@ test-e2e: test-e2e-$(TARGET) test-e2e-web: install build-web ## Run the web e2e tests @ curl -fs localhost:3000 >/dev/null || ( echo "Error: localhost:3000 not available, 'make run-web' first" && exit 1 ) ifdef E2E_GREP - yarn chrome:test --headed --grep="$(E2E_GREP)" --max-failures=$(E2E_FAILURES) + npm run chrome:test -- --headed --grep="$(E2E_GREP)" --max-failures=$(E2E_FAILURES) else - yarn chrome:test --headed --workers='100%' + npm run chrome:test -- --headed --workers='100%' endif .PHONY: test-e2e-desktop test-e2e-desktop: install build-desktop ## Run the desktop e2e tests ifdef E2E_GREP - yarn test:playwright:electron --grep="$(E2E_GREP)" --max-failures=$(E2E_FAILURES) + npm run test:playwright:electron -- --grep="$(E2E_GREP)" --max-failures=$(E2E_FAILURES) else - yarn test:playwright:electron --workers='100%' + npm run test:playwright:electron -- --workers='100%' endif ############################################################################### @@ -140,8 +142,8 @@ endif .PHONY: clean clean: ## Delete all artifacts -ifeq ($(OS),Windows_NT) - git clean --force -d -X +ifdef POWERSHELL + git clean --force -d -x --exclude=.env* --exclude=**/*.env else rm -rf .vite/ build/ rm -rf trace.zip playwright-report/ test-results/ @@ -152,7 +154,7 @@ endif .PHONY: help help: install -ifeq ($(OS),Windows_NT) +ifdef POWERSHELL @ powershell -Command "Get-Content $(MAKEFILE_LIST) | Select-String -Pattern '^[^\s]+:.*##\s.*$$' | ForEach-Object { $$line = $$_.Line -split ':.*?##\s+'; Write-Host -NoNewline $$line[0].PadRight(30) -ForegroundColor Cyan; Write-Host $$line[1] }" else @ grep -E '^[^[:space:]]+:.*## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' @@ -167,5 +169,5 @@ endif # It should work for you other Linux users. lee-electron-test: Xephyr -br -ac -noreset -screen 1200x500 :2 & - DISPLAY=:2 NODE_ENV=development PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:4444/ yarn tron:test -g "when using the file tree" + DISPLAY=:2 NODE_ENV=development PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:4444/ npm run tron:test -g "when using the file tree" killall Xephyr diff --git a/README.md b/README.md index b8615b492..c77d7ff9d 100644 --- a/README.md +++ b/README.md @@ -62,39 +62,39 @@ fnm use Install the NPM dependencies with: ``` -yarn install +npm install ``` This project uses a lot of Rust compiled to [WASM](https://webassembly.org/) within it. We have package scripts to run rustup, see `package.json` for reference: ``` # macOS/Linux -yarn install:rust -yarn install:wasm-pack:sh +npm run install:rust +npm run install:wasm-pack:sh # Windows -yarn install:rust:windows -yarn install:wasm-pack:cargo +npm run install:rust:windows +npm run install:wasm-pack:cargo ``` Then to build the WASM layer, run: ``` # macOS/Linux -yarn build:wasm +npm run build:wasm # Windows -yarn build:wasm:windows +npm run build:wasm:windows ``` -Or if you have the `gh` cli installed and want to download the latest main wasm bundle. Note that on Windows, you need to associate .ps1 files with PowerShell, which can be done via the right click menu, selecting `C:\Program Files\PowerShell\7\pwsh.exe`, and you can install tools like `gh` via `yarn install:tools:windows`. +Or if you have the `gh` cli installed and want to download the latest main wasm bundle. Note that on Windows, you need to associate .ps1 files with PowerShell, which can be done via the right click menu, selecting `C:\Program Files\PowerShell\7\pwsh.exe`, and you can install tools like `gh` via `npm run install:tools:windows`. ``` # macOS/Linux -yarn fetch:wasm +npm run fetch:wasm # Windows -yarn fetch:wasm:windows +npm run fetch:wasm:windows ``` That will build the WASM binary and put in the `public` dir (though gitignored). @@ -102,7 +102,7 @@ That will build the WASM binary and put in the `public` dir (though gitignored). Finally, to run the web app only, run: ``` -yarn start +npm start ``` If you're not a Zoo employee you won't be able to access the dev environment, you should copy everything from `.env.production` to `.env.development.local` to make it point to production instead, then when you navigate to `localhost:3000` the easiest way to sign in is to paste `localStorage.setItem('TOKEN_PERSIST_KEY', "your-token-from-https://zoo.dev/account/api-tokens")` replacing the with a real token from https://zoo.dev/account/api-tokens of course, then navigate to `localhost:3000` again. Note that navigating to `localhost:3000/signin` removes your token so you will need to set the token again. @@ -122,17 +122,17 @@ Third-Party Cookies". ## Desktop -To spin up the desktop app, `yarn install` and `yarn build:wasm` need to have been done before hand then: +To spin up the desktop app, `npm install` and `npm run build:wasm` need to have been done before hand then: ``` -yarn tron:start +npm run tron:start ``` This will start the application and hot-reload on changes. Devtools can be opened with the usual Command-Option-I (macOS) or Ctrl-Shift-I (Linux and Windows). -To package the app for your platform with electron-builder, run `yarn tronb:package:dev` (or `yarn tronb:package:prod` to point to the .env.production variables). +To package the app for your platform with electron-builder, run `npm run tronb:package:dev` (or `npm run tronb:package:prod` to point to the .env.production variables). ## Checking out commits / Bisecting @@ -141,9 +141,9 @@ Which commands from setup are one off vs. need to be run every time? The following will need to be run when checking out a new commit and guarantees the build is not stale: ```bash -yarn install -yarn build:wasm -yarn start # or yarn build:local && yarn serve for slower but more production-like build +npm install +npm run build:wasm +npm start # or npm run build:local && npm run serve for slower but more production-like build ``` ## Before submitting a PR @@ -153,10 +153,10 @@ Before you submit a contribution PR to this repo, please ensure that: - There is a corresponding issue for the changes you want to make, so that discussion of approach can be had before work begins. - You have separated out refactoring commits from feature commits as much as possible - You have run all of the following commands locally: - - `yarn fmt` - - `yarn tsc` - - `yarn test` - - Here they are all together: `yarn fmt && yarn tsc && yarn test` + - `npm run fmt` + - `npm run tsc` + - `npm run test` + - Here they are all together: `npm run fmt && npm run tsc && npm run test` ## Release a new version @@ -266,7 +266,7 @@ docker run --network host --rm --init -it playwright/chrome:playwright-x.xx.x and in another terminal, run: ```bash -PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:4444/ yarn playwright test --project="Google Chrome" +PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:4444/ npm run playwright test --project="Google Chrome" ``` #### Specific example @@ -280,7 +280,7 @@ docker run --network host --rm --init -it playwright/chrome:playwright-1.46.0 and in another terminal, run: ```bash -PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:4444/ yarn playwright test --project="Google Chrome" e2e/playwright/command-bar-tests.spec.ts +PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:4444/ npm run playwright test --project="Google Chrome" e2e/playwright/command-bar-tests.spec.ts ``` run a specific test change the test from `test('...` to `test.only('...` @@ -291,13 +291,13 @@ run a specific test change the test from `test('...` to `test.only('...` run headed ``` -yarn playwright test --headed +npm run playwright test --headed ``` run with step through debugger ``` -PWDEBUG=1 yarn playwright test +PWDEBUG=1 npm run playwright test ``` However, if you want a debugger I recommend using VSCode and the `playwright` extension, as the above command is a cruder debugger that steps into every function call which is annoying. @@ -308,7 +308,7 @@ Or comment out browsers in `playwright.config.ts`. note chromium has encoder compat issues which is why were testing against the branded 'Google Chrome' -You may consider using the VSCode extension, it's useful for running individual threads, but some some reason the "record a test" is locked to chromium with we can't use. A work around is to us the CI `yarn playwright codegen -b wk --load-storage ./store localhost:3000` +You may consider using the VSCode extension, it's useful for running individual threads, but some some reason the "record a test" is locked to chromium with we can't use. A work around is to us the CI `npm run playwright codegen -b wk --load-storage ./store localhost:3000`
@@ -351,21 +351,21 @@ However because much of our tests involve clicking in the stream at specific loc If you already haven't, run the following: ``` -yarn -yarn build:wasm -yarn start +npm +npm run build:wasm +npm start ``` and finally: ``` -yarn test:unit +npm run test:unit ``` For individual testing: ``` -yarn test abstractSyntaxTree -t "unexpected closed curly brace" --silent=false +npm run test abstractSyntaxTree -t "unexpected closed curly brace" --silent=false ``` Which will run our suite of [Vitest unit](https://vitest.dev/) and [React Testing Library E2E](https://testing-library.com/docs/react-testing-library/intro) tests, in interactive mode by default. @@ -439,16 +439,16 @@ Part of the CI CD pipeline performs static analysis on the code. Use the followi The following set of commands should get us closer to one and done commands to instantly retest issues. ``` -yarn test-setup +npm run test-setup ``` > Gotcha, are packages up to date and is the wasm built? ``` -yarn tsc -yarn fmt-check -yarn lint -yarn test:unit:local +npm run tsc +npm run fmt-check +npm run lint +npm run test:unit:local ``` > Gotcha: Our unit tests have integration tests in them. You need to run a localhost server to run the unit tests. @@ -460,10 +460,10 @@ yarn test:unit:local These E2E tests run in electron. There are tests that are skipped if they are ran in a windows, linux, or macos environment. We can use playwright tags to implement test skipping. ``` -yarn test:playwright:electron:local -yarn test:playwright:electron:windows:local -yarn test:playwright:electron:macos:local -yarn test:playwright:electron:ubuntu:local +npm run test:playwright:electron:local +npm run test:playwright:electron:windows:local +npm run test:playwright:electron:macos:local +npm run test:playwright:electron:ubuntu:local ``` > Why does it say local? The CI CD commands that run in the pipeline cannot be ran locally. A single command will not properly setup the testing environment locally. diff --git a/docs/kcl/abs.md b/docs/kcl/abs.md index 3adfaa722..21e399c7c 100644 --- a/docs/kcl/abs.md +++ b/docs/kcl/abs.md @@ -36,9 +36,9 @@ myAngle = -120 sketch001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [8, 0]) - |> angledLine({ angle = abs(myAngle), length = 5 }, %) + |> angledLine(angle = abs(myAngle), length = 5) |> line(end = [-5, 0]) - |> angledLine({ angle = myAngle, length = 5 }, %) + |> angledLine(angle = myAngle, length = 5) |> close() baseExtrusion = extrude(sketch001, length = 5) diff --git a/docs/kcl/acos.md b/docs/kcl/acos.md index 3f680df0b..45a26465b 100644 --- a/docs/kcl/acos.md +++ b/docs/kcl/acos.md @@ -33,10 +33,7 @@ acos(num: number): number ```js sketch001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ - angle = toDegrees(acos(0.5)), - length = 10 - }, %) + |> angledLine(angle = toDegrees(acos(0.5)), length = 10) |> line(end = [5, 0]) |> line(endAbsolute = [12, 0]) |> close() diff --git a/docs/kcl/angleToMatchLengthX.md b/docs/kcl/angleToMatchLengthX.md index 84d6e1309..70efebdbf 100644 --- a/docs/kcl/angleToMatchLengthX.md +++ b/docs/kcl/angleToMatchLengthX.md @@ -36,7 +36,7 @@ angleToMatchLengthX( sketch001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [2, 5], tag = $seg01) - |> angledLineToX([-angleToMatchLengthX(seg01, 7, %), 10], %) + |> angledLine(angle = -angleToMatchLengthX(seg01, 7, %), endAbsoluteX = 10) |> close() extrusion = extrude(sketch001, length = 5) diff --git a/docs/kcl/angleToMatchLengthY.md b/docs/kcl/angleToMatchLengthY.md index 01c562068..154892d57 100644 --- a/docs/kcl/angleToMatchLengthY.md +++ b/docs/kcl/angleToMatchLengthY.md @@ -36,10 +36,7 @@ angleToMatchLengthY( sketch001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [1, 2], tag = $seg01) - |> angledLine({ - angle = angleToMatchLengthY(seg01, 15, %), - length = 5 - }, %) + |> angledLine(angle = angleToMatchLengthY(seg01, 15, %), length = 5) |> yLine(endAbsolute = 0) |> close() diff --git a/docs/kcl/angledLine.md b/docs/kcl/angledLine.md index 2aecbeb00..d70629bbf 100644 --- a/docs/kcl/angledLine.md +++ b/docs/kcl/angledLine.md @@ -10,8 +10,13 @@ Draw a line segment relative to the current origin using the polar measure of so ```js angledLine( - data: AngledLineData, sketch: Sketch, + angle: number, + length?: number, + lengthX?: number, + lengthY?: number, + endAbsoluteX?: number, + endAbsoluteY?: number, tag?: TagDeclarator, ): Sketch ``` @@ -21,9 +26,14 @@ angledLine( | Name | Type | Description | Required | |----------|------|-------------|----------| -| `data` | [`AngledLineData`](/docs/kcl/types/AngledLineData) | Data to draw an angled line. | Yes | -| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | | Yes | -| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | +| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes | +| `angle` | [`number`](/docs/kcl/types/number) | Which angle should the line be drawn at? | Yes | +| `length` | [`number`](/docs/kcl/types/number) | Draw the line this distance along the given angle. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No | +| `lengthX` | [`number`](/docs/kcl/types/number) | Draw the line this distance along the X axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No | +| `lengthY` | [`number`](/docs/kcl/types/number) | Draw the line this distance along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No | +| `endAbsoluteX` | [`number`](/docs/kcl/types/number) | Draw the line along the given angle until it reaches this point along the X axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No | +| `endAbsoluteY` | [`number`](/docs/kcl/types/number) | Draw the line along the given angle until it reaches this point along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given. | No | +| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No | ### Returns @@ -36,7 +46,7 @@ angledLine( exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> yLine(endAbsolute = 15) - |> angledLine({ angle = 30, length = 15 }, %) + |> angledLine(angle = 30, length = 15) |> line(end = [8, -10]) |> yLine(endAbsolute = 0) |> close() diff --git a/docs/kcl/angledLineOfXLength.md b/docs/kcl/angledLineOfXLength.md deleted file mode 100644 index f628491b9..000000000 --- a/docs/kcl/angledLineOfXLength.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: "angledLineOfXLength" -excerpt: "Create a line segment from the current 2-dimensional sketch origin along some angle (in degrees) for some relative length in the 'x' dimension." -layout: manual ---- - -Create a line segment from the current 2-dimensional sketch origin along some angle (in degrees) for some relative length in the 'x' dimension. - - - -```js -angledLineOfXLength( - data: AngledLineData, - sketch: Sketch, - tag?: TagDeclarator, -): Sketch -``` - - -### Arguments - -| Name | Type | Description | Required | -|----------|------|-------------|----------| -| `data` | [`AngledLineData`](/docs/kcl/types/AngledLineData) | Data to draw an angled line. | Yes | -| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | | Yes | -| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | - -### Returns - -[`Sketch`](/docs/kcl/types/Sketch) - - -### Examples - -```js -sketch001 = startSketchOn(XZ) - |> startProfileAt([0, 0], %) - |> angledLineOfXLength({ angle = 45, length = 10 }, %, $edge1) - |> angledLineOfXLength({ angle = -15, length = 20 }, %, $edge2) - |> line(end = [0, -5]) - |> close(tag = $edge3) - -extrusion = extrude(sketch001, length = 10) -``` - -![Rendered example of angledLineOfXLength 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADWV0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FcFVV1111VVXXXXV/zLXXHPNg7nqqquuuuqqq6666qqrXhRUrrrqqquuuuqqq/4X+fAP//DvAnixF3ux1z579uytf//3f//b//AP//A7//AP//DbXHXVVVddddVVV1111VXPDT3oQQ/iqquuuuqqq6666n+Dz/3cz/2tF3uxF3ttgKc//ekAPOQhDwHgvvvuu/Xs2bO3/tZv/db33Hfffbf+wz/8w29z1VVXXXXVVVddddVVV6EHPehBXHXVVVddddVVV/1P97mf+7m/dcMNN7z2iRMnAPj0T/90AI4fP85DHvIQHvKQh/CyL/uy3O++++679R/+4R9++x/+4R9+57777rv1H/7hH36bq6666qqrrrrqqquu+v8HPehBD+Kqq6666qqrrrrqf7LP/dzP/a0bbrjhtZ/2tKfxci/3cvzlX/4lP/mTP8nzc/z4cR7ykIfwkIc8hJd92Zflfvfdd9+t//AP//Db//AP//A79913363/8A//8NtcddVVV1111VVXXXXV/33oQQ96EFddddVVV1111VX/U33u537ub91www2v/WM/9mO83Mu9HC/3ci/Hb/7mb/Kbv/mbvCiOHz/OQx7yEB7ykIfwsi/7stzvvvvuu/Uf/uEffvsf/uEffue+++679R/+4R9+m6uuuuqqq6666qqrrvq/Bz3oQQ/iqquuuuqqq6666n+iz/3cz/2tG2644bV/7Md+jKc97Wl80id9EidOnOA7v/M7edrTnsa/hm0ATpw4wUMe8hAe8pCH8LIv+7Lc77777rv1H/7hH377H/7hH37nvvvuu/Uf/uEffpurrrrqqquuuuqqq6763w896EEP4qqrrrrqqquuuup/ms/93M/9rRtuuOG1f+zHfoynPe1pSOKLvuiLAPiMz/gM7mebfy3bAJw4cQKAhzzkIbzsy74sD3nIQ7jffffdd+s//MM//PY//MM//M5v/dZvfTdXXXXVVVddddVVV131vxN60IMexFVXXXXVVVddddX/JJ/7uZ/7WzfccMNr/9iP/RhPe9rTkMTLvdzL8fZv//b81V/9FT/5kz/J82Obfw3bPNCJEycAeMhDHsLLvuzL8pCHPIT73Xfffbf+wz/8w2//wz/8w+/81m/91ndz1VVXXXXVVVddddVV/zugBz3oQVx11VVXXXXVVVf9T/G5n/u5v3XDDTe89o/92I/xtKc9DQBJvP3bvz0v93Ivx0/+5E/yV3/1V7wwtvnXsM3zc+LECY4fP85DHvIQHvrQh/KQhzyE+9133323/sM//MNv/8M//MPv/NZv/dZ3c9VVV1111VVXXXXVVf8zoQc96EFcddVVV1111VVX/U/wuZ/7ub91ww03vPaP/diP8bSnPQ0ASQB84id+IidOnOArvuIr2N3d5UVlm38N27wgJ06c4Pjx4zzkIQ/hoQ99KA95yEO433333XfrP/zDP/z2P/zDP/zOb/3Wb303V1111VVXXXXVVVdd9T8DetCDHsRVV1111VVXXXXVf7fP/dzP/a0bbrjhtX/sx36Mpz3taQBIAuChD30oH/ABHwDAZ37mZwJgm38N2/xr2OZfcuLECY4fP85DHvIQHvKQh/DQhz6U+9133323/sM//MNv/9Zv/db3/MM//MNvc9VVV1111VVXXXXVVf890IMe9CCuuuqqq6666qqr/jt97ud+7m/dcMMNr/1jP/ZjPO1pTwNAEvd7uZd7Od7+7d+ev/qrv+KnfuqneCDb/GvY5l/LNi+KEydO8JCHPISHPOQhHD9+nIc+9KEA3HfffbcC/MM//MNv/9Zv/db3/MM//MNvc9VVV1111VVXXXXVVf810IMe9CCuuuqqq6666qqr/rt87ud+7m/dcMMNr/1jP/ZjPO1pTwNAEveTxNu//dvzsi/7svzUT/0Uf/VXf8ULYpt/Ddv8a9jmX+P48eM85CEP4aEPfSjHjx/noQ99KAD33XffrWfPnr317//+73/7H/7hH37nH/7hH36bq6666qqrrrrqqquu+s+BHvSgB3HVVVddddVVV1313+FzP/dzf+uGG2547R/7sR/jaU97GgCSeCBJfOEXfiEAX/mVX8nu7i7/Etv8a9jmX8M2/xq2AThx4gQPechDeOhDH8rx48d56EMfCsB9991369mzZ2/9+7//+9/+h3/4h9/5h3/4h9/mqquuuuqqq6666qqr/mOgBz3oQVx11VVXXXXVVVf9V/vcz/3c37rhhhte+8d+7Md42tOexv0kcT9JvOzLvixv//Zvz6233sp3fud38q9hm38t2/xr2OZfwzb3O3HiBA95yEN46EMfyvHjx3noQx8KwH333Xfr2bNnb/37v//73/6Hf/iH3/mHf/iH3+aqq6666qqrrrrqqqv+bahcddVVV1111VVX/Rf73M/93N+64YYbXvtHf/RHefrTn879JHE/SQA89KEPBWB3dxdJANjmRSGJ+9nmRSEJANu8KCQBYJsXhSQAbHPx4kUuXrzIX/7lXwJw4sQJHvKQh/DQhz70wcePH3/wO73TO702wH333Xfr2bNnb/37v//73/6Hf/iH3/mHf/iH3+aqq6666qqrrrrqqqteNFSuuuqqq6666qqr/gt97ud+7m/dcMMNr/2jP/qjPP3pT+d+krifJO73kIc8BIC/+qu/4n6SuJ9tXhSSALDNi0ISALZ5UUgCwDYvCkkA2OZ+Fy9e5OLFi/zlX/4lACdOnOAhD3kID33oQx/8si/7sg9+sRd7sdcGuO+++279h3/4h9/+h3/4h9+57777bv2Hf/iH3+aqq6666qqrrrrqqqueP/SgBz2Iq6666qqrrrrq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ddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8V/wiq5Us3vyw5LAAAAABJRU5ErkJggg==) - - diff --git a/docs/kcl/angledLineOfYLength.md b/docs/kcl/angledLineOfYLength.md deleted file mode 100644 index 610bfb7ee..000000000 --- a/docs/kcl/angledLineOfYLength.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: "angledLineOfYLength" -excerpt: "Create a line segment from the current 2-dimensional sketch origin along some angle (in degrees) for some relative length in the 'y' dimension." -layout: manual ---- - -Create a line segment from the current 2-dimensional sketch origin along some angle (in degrees) for some relative length in the 'y' dimension. - - - -```js -angledLineOfYLength( - data: AngledLineData, - sketch: Sketch, - tag?: TagDeclarator, -): Sketch -``` - - -### Arguments - -| Name | Type | Description | Required | -|----------|------|-------------|----------| -| `data` | [`AngledLineData`](/docs/kcl/types/AngledLineData) | Data to draw an angled line. | Yes | -| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | | Yes | -| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | - -### Returns - -[`Sketch`](/docs/kcl/types/Sketch) - - -### Examples - -```js -exampleSketch = startSketchOn(XZ) - |> startProfileAt([0, 0], %) - |> line(end = [10, 0]) - |> angledLineOfYLength({ angle = 45, length = 10 }, %) - |> line(end = [0, 10]) - |> angledLineOfYLength({ angle = 135, length = 10 }, %) - |> line(end = [-10, 0]) - |> line(end = [0, -30]) - -example = extrude(exampleSketch, length = 10) -``` - -![Rendered example of angledLineOfYLength 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADyYElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquu+h/ldV7ndd77dV7ndd6Lq676T/L1X//173PffffdylVXXXXVVVddddVV/x+gBz3oQVx11VVXXXXVVf8zfPiHf/h3vdiLvdhrP/GJT3ww/8PY5qorbPO/1Wu91msB8Fu/9Vvf/fVf//Xvw1VXXXXVVVddddVV/9dRueqqq6666qqr/kd4x3d8x896ndd5nff+gR/4AW677Tb+M9nmfyLb/HewzX8l2/xnss0L8lqv9VoAvORLvuR7f/iHfzhf//Vf/z5cddVVV1111VVXXfV/GcFVV1111VVXXfXf7nVe53Xe+53e6Z0++wd/8Ae5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V13134ngqquuuuqqq676b3fffffdCrCzs8O/hm1sYxvb2MY2trnqqv9NbGMb29jGNraxzf80trGNbWxjm/9qtrGNbWzzn802trGNba666qqrrrrqqv9VCK666qqrrrrqqv92Z8+evRVgZ2eH/yi2sY1tbGMb29jGNldd9V/NNraxjW1sYxvb/E9mG9vYxjb/XWxjG9v8V7CNbWzzr7WzswPAfffddytXXXXVVVddddV/NypXXXXVVVddddX/S7b5l0jiqqteFLb5v8A2/1PY5r+abf4jHDt2DICzZ8/eylVXXXXVVVdd9d+N4Kqrrrrqqquu+m9333333Qqws7PD/yS2sY1tbGMb29jGNraxzVX/t9nGNraxjW1sYxvb2OZ/G9vYxja2sY1t/jvZxja2sc1/FdvYxjb/UXZ2dgC47777buWqq6666qqrrvrvRuWqq6666qqrrvpvd999990KsLOzw/9GtvnXkMRV/31s8/+Jbf6nsc1/F9tcddVVV1111VX/r1C56qqrrrrqqquu+i9mm38PSfx/Zpurnpdt/qeyzX8n2/xXsc3Ozg4A9913361cddVVV1111VX/3ahcddVVV1111VX/7c6ePfsMgJ2dHWzz/Ejiqitsc9X/X7b5n842/51s81/JNg907NgxAM6ePfsMrrrqqquuuuqq/25Urrrqqquuuuqq/3b33XffrQA7Ozu8ILZ5QSRx1VX/l9jmfwvb/HezzX8121x11VVXXXXVVf8rULnqqquuuuqqq/7Xs80LI4mrrvqfxjb/29jmfwrb/FezzYvi2LFjANx33323ctVVV1111VVX/XejctVVV1111VVX/bc7e/bsrQDHjh3jP4Nt/iWSuOqq/0i2+d/ONv9T2Oa/mm3+LXZ2dgA4e/bsrVx11VVXXXXVVf/dqFx11VVXXXXVVVcBtvmXSOKqqwBs83+Jbf6nsc1/B9v8ex07dgyA++6771auuuqqq6666qr/blSuuuqqq6666qr/dvfdd9+tADs7O/xPZpsXlSSu+t/FNv8f2OZ/Itv8d7HNVVddddVVV131fxbBVVddddVVV131P8J99913K8DOzg7/F9jGNraxjW1sYxvb2MY2trGNbWxz1X8M29jGNraxjW1sYxvb2MY2trHN/zW2sY1tbGMb2/xPYBvb2MY2tvmvZBvb2MY2/5F2dnYAuO++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Vbb5jyCJ/8tsc9W/jW3+t7DNf4Zjx47xpm/6ptxyyy0AfOZnfubr/MM//MNvc9VVV1111VVX/X9C5aqrrrrqqquuuup/Mdtc9f+bbf63sc1/tltuuYV3eZd3AeC+++679eu//uvf5x/+4R9+m6uuuuqqq6666v8bKlddddVVV1111f8oZ8+evRVgZ2cH2zyQJK666v8j2/xvZZv/aq/2aq/Gq7/6qwPwD//wD7/9mZ/5ma/DVVddddVVV131/xWVq6666qqrrrrqf5T77rvvVoBjx47x3Gzzwkjiqqv+t7LN/3a2+e/2Lu/yLtxyyy0A/MiP/Mhn/+iP/ujncNVVV1111VVX/X9G5aqrrrrqqquu+j/DNv8SSVx11X8H2/xfYpv/SY4dO8abvumbcssttwDwmZ/5ma/zD//wD7/NVVddddVVV131/x2Vq6666qqrrrrqf5SzZ8/eCnDzzTfzn8E2/xJJXHXVv4Zt/i+zzf9Utrnlllt413d9VwDuu+++W7/+67/+ff7hH/7ht7nqqquuuuqqq64CKlddddVVV1111f8o99133638N7PNi0oSV/3fZJv/j2zzP5ltHujVX/3VefVXf3UA/uEf/uG3P/MzP/N1uOqqq6666qqrrno2KlddddVVV1111f8o9913360Ax44d438D2/xrSeKq/3q2uerZbPO/gW1ekHd913fllltuAeBHfuRHPvtHf/RHP4errrrqqquuuuqq50Tlqquuuuqqq6666r+Ybf4jSOL/Ottc9e9jm/9NbPMvOXbsGG/2Zm/GLbfcwn333Xfr13/917/PP/zDP/w2V1111VVXXXXVVc+LylVXXXXVVVdd9T/K2bNnnwFw7NgxrnrhbHPVVfezzf82tvnXuuWWW3jXd31XAO67775bP+uzPut17rvvvlu56qqrrrrqqquuev4Irrrqqquuuuqq/3Huu+++WwF2dnawzVVXXXWFbWxjG9vYxja2+d/ANraxjW3+tV791V+dd33XdwXgH/7hH377Qz7kQx5y33333cpVV1111VVXXXXVC0blqquuuuqqq676H+fs2bO3XnPNNQ8+duwYly5dwjYvjCSuuur/Ctv8X2Cb/0jv+q7vyi233ALAj/zIj3z2j/7oj34OV1111VVXXXXVVf8yKlddddVVV1111f96tnlhJHHVVf9T2Ob/Gtv8Zzl27Bhv9mZvxi233MJ9991369d//de/zz/8wz/8NlddddVVV1111VUvGipXXXXVVVddddX/WMeOHeM/gm1eFJK46qp/D9v8X2eb/yq33HIL7/qu7wrAfffdd+tnfdZnvc599913K1ddddVVV1111VUvOoKrrrrqqquuuup/nL//+7//bYCdnR3+K9nGNraxjW1sYxvb2MY2V/3/Yxvb2MY2trGNbWxjG9v8X2Ib29jGNraxzX+VV3/1V+dd3/VdAfiHf/iH3/6QD/mQh9x33323ctVVV1111VVXXfWvQ+Wqq6666qqrrrrqX8k2/1qSuOp/Bttc9Zxs8z/Ju77ru3LLLbcA8CM/8iOf/aM/+qOfw1VXXXXVVVddddW/DZWrrrrqqquuuup/nLNnzz4D4NixY/xfYZt/L0n8f2ebq/7tbPM/2bFjx3izN3szbrnlFu67775bv/7rv/59/uEf/uG3ueqqq6666qqrrvq3o3LVVVddddVVV/2Pc999990KcOzYMa56NttcddWLwjb/29x8882827u9GwD33XffrZ/1WZ/1Ovfdd9+tXHXVVVddddVVV/37ULnqqquuuuqqq6666qr/hWzzv5lt7vfqr/7qvMZrvAYA//AP//Dbn/mZn/k6XHXVVVddddVVV/3HoHLVVVddddVVV/2Pc/bs2VsBjh07hm2eH0lcddX/dbb5v8A2L8i7vdu7ccsttwDwIz/yI5/9oz/6o5/DVVddddVVV1111X8cKlddddVVV1111f9KtnlhJHHVVf/T2eb/Gtu8KI4dO8abv/mbc8stt3Dffffd+vVf//Xv8w//8A+/zVVXXXXVVVddddV/LCpXXXXVVVddddX/OPfdd9+tAMeOHePfyjb/EklcddV/Ftv8X2ebf4tbbrmFd3u3dwPgvvvuu/WzPuuzXue+++67lauuuuqqq6666qr/eFSuuuqqq6666qr/ke67775br7nmmgcfO3aMS5cu8Z/BNi8qSVx1FYBt/j+yzX+EV3/1V+c1XuM1APiHf/iH3/7Mz/zM1+Gqq6666qqrrrrqPw+Vq6666qqrrrrqf6SzZ8/ees011zz42LFjXLp0if9utvnXkMRV/zvY5qpns81/hmPHjvHmb/7m3HLLLQD8yI/8yGf/6I/+6Odw1VVXXXXVVVdd9Z+LylVXXXXVVVddddV/Atv8W0niqn8d21z1r2Ob/yrHjh3j3d7t3Th27Bj33XffrV//9V//Pv/wD//w21x11VVXXXXVVVf956Ny1VVXXXXVVVf9j3Tffffd+mIv9mIcO3aM/29s899JEv9atrnqfybb/He65ZZbeLd3ezcA7rvvvls/67M+63Xuu+++W7nqqquuuuqqq676r0Hlqquuuuqqq676H+m+++67FeDYsWNc9V/LNlf972Ob/2le/dVfndd4jdcA4B/+4R9++zM/8zNfh6uuuuqqq6666qr/WlSuuuqqq6666qr/0WxjG0lcddX/Z7b53+LYsWO8+Zu/ObfccgsAP/IjP/LZP/qjP/o5XHXVVVddddVVV/3Xo3LVVVddddVVV/2PdPbs2WcAHD9+HADbvDCSuOqq/+1s87/dsWPHeLd3ezeOHTvGfffdd+vXf/3Xv88//MM//DZXXXXVVVddddVV/z2oXHXVVVddddVV/yPdd999twIcO3aMF4Vt/iWSuOqq/y62+b/u5ptv5t3f/d0BuO+++279rM/6rNe57777buWqq6666qqrrrrqvw+Vq6666qqrrrrqf6SzZ8/eCnDs2DH+o9jmRSGJq67617DN/ze2eaDXeI3X4DVe4zUA+K3f+q3v/vqv//r34aqrrrrqqquuuuq/H5Wrrrrqqquuuuqq52KbF5Ukrvq/yTZXgW1emGPHjvHmb/7mPOhBDwLgR37kRz77R3/0Rz+Hq6666qqrrrrqqv8ZqFx11VVXXXXVVf8j3XfffbcCHDt2jP/JbPNvIYmr/mvY5qoXjW3+NY4dO8a7v/u7c+zYMe67775bv/7rv/59/uEf/uG3ueqqq6666qqrrvqfg8pVV1111VVXXfU/1n333XfrNddc8+Bjx45x6dIl/i+xzX80SfxfYJur/nPZ5t/rlltu4d3f/d0BuO+++279kA/5kIdw1VVXXXXVVVdd9T8Plauuuuqqq6666n+8Y8eOcenSJa564Wxz1VX3s81/ltd4jdfgNV7jNQD4rd/6re/++q//+vfhqquuuuqqq6666n8mKlddddVVV1111f9YZ8+evfWaa655MFddddXzZZv/SseOHePN3/zNedCDHgTAj/zIj3z2j/7oj34OV1111VVXXXXVVf9zUbnqqquuuuqqq/7HO3bsGLa5nySuuur/C9v8T3Ds2DHe/d3fnWPHjnHffffd+vVf//Xv8w//8A+/zVVXXXXVVVddddX/bFSuuuqqq6666qr/se67775bX+zFXoxjx47xQLb5l0jiqqv+N7DN/3S33HIL7/7u7w7Afffdd+uHfMiHPISrrrrqqquuuuqq/x2oXHXVVVddddVV/2Pdd999t/JvZJt/iSSuuuo/k23+t3uN13gNXuM1XgOA3/qt3/rur//6r38frrrqqquuuuqqq/73oHLVVVddddVVV/2Pdfbs2WcAHDt2jP8MtnlRSOKqqx7INv/XHTt2jDd/8zfnQQ96EAA/8iM/8tk/+qM/+jlcddVVV1111VVX/e9C5aqrrrrqqquu+h/rvvvuuxXg+PHj/Heyzb+WJK7638M2Vz3bsWPHePd3f3eOHTvGfffdd+vXf/3Xv88//MM//DZXXXXVVVddddVV//tQueqqq6666qqrrvpPYJt/D0lc9aKzzVX/PrYBeNCDHsS7v/u7A/AP//APv/2Zn/mZr8NVV1111VVXXXXV/15Urrrqqquuuuqq/7HOnj17K8CxY8f4/8Y2V131H802L8xrvMZr8Jqv+ZoA/NZv/dZ3f/3Xf/37cNVVV1111VVXXfW/G5Wrrrrqqquuuuqqq676P8Y2/xrHjh3jLd7iLXjQgx4EwNd//de/z2/91m99N1ddddVVV1111VX/+1G56qqrrrrqqqv+x7rvvvtuBTh27BhXXXXVc7LNf4Rjx47xHu/xHhw7doz77rvv1q//+q9/n3/4h3/4ba666qqrrrrqqqv+b6By1VVXXXXVVVf9j3bffffdes011zx4Z2eHS5cu8dwkcdVV/xfZ5j/bS77kS/IWb/EWAPzDP/zDb3/mZ37m63DVVVddddVVV131fwvBVVddddVVV131P9rZs2dvBTh+/DjPj21sYxvb2MY2trHNVVf9T2Ub29jGNraxjW1s85/tNV7jNXiLt3gLAH7rt37ruz/zMz/zdbjqqquuuuqqq676v4fKVVddddVVV131f5ptXhSSuOqq/wi2+Z/s2LFjvMVbvAUPetCDAPj6r//69/mt3/qt7+aqq6666qqrrrrq/yYqV1111VVXXXXV/2j33XffrS/2Yi/GsWPH+M9kmxeVJK76/8U2/xccO3aMD//wDwfgvvvuu/Xrv/7r3+cf/uEffpurrrrqqquuuuqq/7uoXHXVVVddddVV/6Pdd999twIcO3aM/yls828hiav++9nm/6OXfMmX5C3e4i0A+Id/+Iff/szP/MzX4aqrrrrqqquuuur/PipXXXXVVVddddVV/0Vs8x9BEv8f2eaqf5vXeI3X4DVf8zUB+K3f+q3v/vqv//r34aqrrrrqqquuuur/BypXXXXVVVddddX/aGfPnn0GwPHjx7nqCttcddWL4tixY7zFW7wFD3rQgwD4+q//+vf5rd/6re/mqquuuuqqq6666v8PKlddddVVV1111f9o9913360Ax44d46qrrvqX2Qbg+PHjfPiHfzgA9913361f//Vf/z7/8A//8NtcddVVV1111VVX/f9C5aqrrrrqqquu+h/t7NmztwIcP36cq6666grbvDAv+ZIvyVu+5VsC8A//8A+//Zmf+Zmvw1VXXXXVVVddddX/T1Suuuqqq6666qr/FWxjm+dHEldd9X+Jbf6tXvM1X5PXfM3XBOC3fuu3vvvrv/7r34errrrqqquuuuqq/7+oXHXVVVddddVV/6Pdd999twIcP36cF8Q2/xJJXHXV/xS2+Y92/Phx3uIt3oIHPehBAHz913/9+/zWb/3Wd3PVVVddddVVV131/xuVq6666qqrrrrqf7z77rvv1muuuebBx48fZ3d3l38L27woJHHVVf9WtvnvcPz4cT78wz8cgPvuu+/Wr//6r3+ff/iHf/htrrrqqquuuuqqq66ictVVV1111VVX/a9x7Ngxdnd3+c9km38NSVz1f5dt/qd7yZd8Sd7yLd8SgH/4h3/47c/8zM98Ha666qqrrrrqqquuuh+Vq6666qqrrrrqf7z77rvv1muuuebB/A9km38LSVz1X8c2/xe9xVu8BS/1Ui8FwG/91m9999d//de/D1ddddVVV1111VVXPRCVq6666qqrrrrqqv8GtvnPIIn/7Wxz1Qt3/Phx3uIt3oIHPehBAHz913/9+/zWb/3Wd3PVVVddddVVV1111XOjctVVV1111VVX/Y939uzZWwEe9KAH8YxnPIOrXjDbXPV/24Me9CDe4z3eA4D77rvv1q//+q9/n3/4h3/4ba666qqrrrrqqquuen6oXHXVVVddddVV/+Pdd999t3LVVVfxki/5krzlW74lAP/wD//w25/5mZ/5Olx11VVXXXXVVVdd9cJQueqqq6666qqr/sc7e/bsrQDHjh3jqqv+v3qLt3gLXuqlXgqA3/qt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qquuuuqqF+K1Xuu1eO3Xfm0A/uEf/uG3P/MzP/N1uOqqq6666qqrrrrqfwsqV1111VVXXXXV/xr33XffrQDHjx/nqqv+K7zXe70XD37wgwH4kR/5kc/+0R/90c/hqquuuuqqq6666qr/TahcddVVV1111VX/q9x33323XnPNNQ8+duwYu7u7AEjiqqv+Ix0/fpy3equ34sEPfjAAn/mZn/k6//AP//DbXHXVVVddddVVV131vw2Vq6666qqrrrrqf5WzZ8/ees011zz4+PHj7O7uAmCbf4kkrrrqRfHgBz+Y93qv9wLgvvvuu/Xrv/7r3+cf/uEffpurrrrqqquuuuqqq/43onLVVVddddVVV/2/YJsXlSSu+v/ptV7rtXjt135tAP7hH/7htz/zMz/zdbjqqquuuuqqq6666n8zKlddddVVV1111f8q9913360v9mIvxvHjx/nPYpt/DUlc9b/fe73Xe/HgBz8YgB/5kR/57B/90R/9HK666qqrrrrqqquu+t+OylVXXXXVVVdd9b/KfffddyvA8ePH+Z/CNv8ekrjqP5dtXpDjx4/z1m/91jz4wQ8G4DM/8zNf5x/+4R9+m6uuuuqqq6666qqr/i+gctVVV1111VVXXfXfzDb/2STxP5Vt/rs8+MEP5r3f+70BuO+++279+q//+vf5h3/4h9/mqquuuuqqq6666qr/K6hcddVVV1111VX/q5w9e/YZAMePH+eqF51trnpOr/3ar81rv/ZrA/AP//APv/2Zn/mZr8NVV1111VVXXXXVVf/XULnqqquuuuqqq/5Xue+++24FOH78OFdd9W/13u/93jz4wQ8G4Ed+5Ec++0d/9Ec/h6uuuuqqq6666qqr/i+ictVVV1111VVX/a90/PhxHvzgB3PVVf9ar/3ar82DH/xg7rvvvlu//uu//n3+4R/+4be56qqrrrrqqquuuur/KipXXXXVVVddddX/KmfPnr31vvvuu/Waa6558Hu/93tz1VX/Fvfdd9+tn/mZn/naZ8+efQZXXXXVVVddddVVV/1fhh70oAdx1VVXXXXVVVf973LNNdc8+MM//MO/i6uu+jf4rd/6re/5rd/6re/mqquuuuqqq6666qr/D9CDHvQgrrrqqquuuuqqq6666qqrrrrqqquuuuqq/5OoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/Ff8IWBE5L5B2Be0AAAAASUVORK5CYII=) - - diff --git a/docs/kcl/angledLineToX.md b/docs/kcl/angledLineToX.md deleted file mode 100644 index dbb19aece..000000000 --- a/docs/kcl/angledLineToX.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: "angledLineToX" -excerpt: "Create a line segment from the current 2-dimensional sketch origin along some angle (in degrees) for some length, ending at the provided value in the 'x' dimension." -layout: manual ---- - -Create a line segment from the current 2-dimensional sketch origin along some angle (in degrees) for some length, ending at the provided value in the 'x' dimension. - - - -```js -angledLineToX( - data: AngledLineToData, - sketch: Sketch, - tag?: TagDeclarator, -): Sketch -``` - - -### Arguments - -| Name | Type | Description | Required | -|----------|------|-------------|----------| -| `data` | [`AngledLineToData`](/docs/kcl/types/AngledLineToData) | Data to draw an angled line to a point. | Yes | -| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | | Yes | -| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | - -### Returns - -[`Sketch`](/docs/kcl/types/Sketch) - - -### Examples - -```js -exampleSketch = startSketchOn(XZ) - |> startProfileAt([0, 0], %) - |> angledLineToX({ angle = 30, to = 10 }, %) - |> line(end = [0, 10]) - |> line(end = [-10, 0]) - |> close() - -example = extrude(exampleSketch, length = 10) -``` - -![Rendered example of angledLineToX 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADuHklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVdd9f/G67zO67z3i73Yi73W67zO67w3V1111f9Lv/Vbv/Xd//AP//A7v/Vbv/XdXHXVVVddddVV/x9Queqqq6666qqr/l94sRd7sdf+8A//8O+69dZb+amf+imuuur/Ktv8f2Kbf42XfdmXfe8Xe7EXe+377rvv1n/4h3/4ba666qqrrrrqqv/r0IMe9CCuuuqqq6666qr/26655poHf9M3fdPTAb76q7+a3d1d/qPY5qr/3Wxz1fNnm/9rjh8/zsd93Mdx33333fpZn/VZr3Pffffd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Y5v/SraxjW1sY5v/SWxjG9vYxja2sc1VV70gtrGNbWxjG9vY5n8C29jGNraxzX8F29jGNrb5z2Kbra0tAM6ePfsMrrrqqquuuuqq/y4EV1111VVXXXXVf5uzZ8/eCrC9vc1zs41tbGOb/2q2sY1tbGOb/4lsYxvb2MY2trGNba76v8s2trGNbWxjG9vY5n8S29jGNraxzX8l29jGNv+ZbGMb2wBsb28DcN99993KVVddddVVV13134XKVVddddVVV131v4JtHkgS/9Vs89wk8T+Zbf4lkrjqfxbb/G9lm/9utvmvYpsXZGdnB4D77rvvVq666qqrrrrqqv8uBFddddVVV1111X+b++6771aA7e1t/rVsYxvb2Oa/i21sYxvb2OZ/G9vYxja2sY1tbGMb29jGNlf929nGNraxjW1sYxvb2MY2tvnfwja2sY1tbPPfwTa2sY1t/rPZxja2ueqqq6666qqr/sejctVVV1111VVX/be57777bgXY3t7m38s2DySJ/y62eX4k8b+dbf49JPG/lW3+P7PN/xS2+a9mm3+t7e1tAO67776nc9VVV1111VVX/XehctVVV1111VVX/Z9kmweSxH832zw/kvj/wjZX/c9mm/9pbPNfzTb/Xtvb2wCcPXv2GVx11VVXXXXVVf9dCK666qqrrrrqqv82Z8+efQbAjTfeyH8229jGNraxzf8UtrGNbWxjG9tcddV/FtvYxja2sY1tbPPfzTa2sY1tbPNfxTa2sc1VV1111VVXXfV/BpWrrrrqqquuuuq/zX333XcrgG3+O9jmgSTxP4ltXhBJXHXVC2Ob/w1s89/FNv+Ztre3ATh79uytXHXVVVddddVV/12oXHXVVVddddVV/23Onj17K8DOzg62eSBJ/FezzXOTxP9EtnlhJHHV/222+d/GNv+dbPNfaWdnB4D77rvvVq666qqrrrrqqv8uVK666qqrrrrqqv+RbPNAkvjvYJvnJon/6WzzopDEVf/z2OZ/O9v8T2Cb/yq2ueqqq6666qqr/sehctVVV1111VVX/be57777bgXY3t7mX2KbB5LEfxfbPDdJ/G9kmxeVJK76t7PN/1W2+Z/CNv+VbPOCbG9vA3DffffdylVXXXXVVVdd9d+F4Kqrrrrqqquu+m9133333Qqwvb3Nv4ZtbGMb2/x3s41tbGMb29jm/xLb2MY2trGNbWxjG9vYxja2sY1tbGOb/+1sYxvb2MY2trGNbWxjG9vYxja2sY1t/i+wjW1sYxvb2Oa/k21sYxvb/FewjW1sc9VVV1111VVX/Y9H5aqrrrrqqquu+m919uzZW6+55poHb29vs7+/z7+VbR5IEv8T2Ob5kcT/N7a56n8H2/xPZJv/Drb519re3gbgvvvuu5Wrrrrqqquuuuq/E5Wrrrrqqquuuur/JNs8N0n8T2Gb50cSV131X8U2/5PZ5r+Lbf49dnZ2ADh79uytXHXVVVddddVV/50Irrrqqquuuuqq/xF2dnb4z2Yb29jGNrb5n8Y2trGNbWxjG9vY5qqr/rVsYxvb2MY2trHN/zS2sY1tbPNfyTa2sY1t/r22t7cBuO+++27lqquuuuqqq67670Rw1VVXXXXVVVf9t7rvvvtuBdje3ua/g21sYxvb/E9nG9vYxja2sY1trvr/yTa2sY1tbGMb29jmfyrb2MY2trHNfzXb2MY2V1111VVXXXXV/1lUrrrqqquuuuqq/1b33XffrQC2sc39JPHfwTbPTRL/G9jmXyKJq/73sM3/Bbb5n8A2/1W2t7cBuO+++27lqquuuuqqq67670Tlqquuuuqqq676b3X27NlnAOzs7PBAtnkgSfx3sc3zI4n/bWzzopLEVf85bPN/lW3+p7DNfzXbAGxvbwNw9uzZZ3DVVVddddVVV/13onLVVVddddVVV/23uu+++24F2N7e5oWxzQNJ4r+bbZ6bJP6vsM2/lST+r7PN/2e2+Z/GNv8dbHPVVVddddVVV/2PReWqq6666qqrrvpfyTYPJIn/CWzz/Eji/xPbXPV/g23+p7LNfwfb/Et2dnYAuO+++27lqquuuuqqq67670Tlqquuuuqqq676b3X27NlbAXZ2dvj3sM0DSeJ/Ets8P5K46qr/CWzzP51t/rvY5l9je3sbgLNnz97KVVddddVVV13134nKVVddddVVV131f5Jtnpsk/qexzQsiiauu+o9km/8tbPPfyTZXXXXVVVddddX/CVSuuuqqq6666qr/Vvfdd9+tANvb2/xns81zk8T/VLZ5YSRx1VXPzTb/29jmfwLb/EfZ2dkB4L777ruVq6666qqrrrrqvxPBVVddddVVV1313+6+++67FWB7e5v/araxjW1sY5v/LWxjG9vYxja2sY1trvq/xza2sY1tbGMb29jGNv8b2MY2trHNfxfb2MY2tvmPsr29DcB99913K1ddddVVV1111X83gquuuuqqq6666r/d2bNnbwXY3t7GNv/dbGMb29jGNv8b2cY2trGNbWxjG9vYxjZX/fezjW1sYxvb2MY2trGNbf43so1tbGMb2/x3sY1tbGOb/yw7OzsAnD179lauuuqqq6666qr/blSuuuqqq6666qr/cWzzQJL472ab5yaJ/wts868liateMNv8f2Ob/2ls899he3sbgPvuu+9Wrrrqqquuuuqq/25Urrrqqquuuuqq/3b33XffrS/2Yi/G9vY2z49tHkgS/xPY5vmRxP91tvnPIIn/Sra56l/HNv9T2ea/m22uuuqqq6666qr/UahcddVVV1111VX/7e67775bAXZ2dnhR2OaBJPE/iW2eH0lc9cLZ5qr/GWzzP51t/rvZ5rltb29z1VVXXXXVVVf9j0Hlqquuuuqqq676X882z00S/9PY5gWRxFVX/Xewzf8GtvmfwjYvivvuu+9Wrrrqqquuuuqq/25Urrrqqquuuuqq/3Znz559BsD29jb/UWzzQJL4n8w2L4gkrrrq38M2/9vY5n8K2/xr7OzsAHD27NlncNVVV1111VVX/XejctVVV1111VVX/be77777bgXY2dnhP4ttnpsk/jewzQsjiav+f7PN/2a2+Z/GNlddddVVV1111f8JVK666qqrrrrqqv+3bPPcJPG/jW3+JZK46n8n2/xfYpv/iWzzH+XGG28E4B/+4R9+m6uuuuqqq6666r8blauuuuqqq6666r/d2bNnbwXY3t7mv5ttnpsk/rezzYtKElf957LN/we2+Z/KNlddddVVV1111f8LVK666qqrrrrqqqv+BbZ5fiTxf5Ft/q0k8f+Fba56Ntv8T2ab/yo7OzsA3Hfffbdy1VVXXXXVVVf9d6Ny1VVXXXXVVVf9t7vvvvtuBdjZ2cE2z00S/xPZ5vmRxP9Xtrnq/zbb/G9gm6uuuuqqq6666iqA4Kqrrrrqqquu+h/hvvvuuxVgZ2eH52Yb29jGNv/T2cY2trGNbWxz1VX/W9jGNraxjW1sY5v/qWxjG9vY5r+abWyzvb0NwH333XcrV1111VVXXXXV/wQEV1111VVXXXXV/whnz569FWB7e5t/iW1sYxvb/G9hG9vYxja2sY1trrrqv4NtbGMb29jG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/ke57777bgXY2dnh+bHNc5PE/za2eWEkcdVV/xFs83+Jbf6nsY1trrrqqquuuuqq/5GoXHXVVVddddVV/+vZ5rlJ4n8z2/xLJHHV/2+2+b/MNv8T2ea57ezsAHDfffc9nauuuuqqq6666n8SKlddddVVV1111f8oZ8+evRVgZ2eHfw/bPDdJ/F9imxeFJK7638U2/9/Y5n8q2/xLjh07BsDZs2efwVVXXXXVVVdd9T8Jlauuuuqqq6666n+U++6771aAnZ0d/qPZ5rlJ4v862/xrSeKq/zi2ueoK2/xPZ5urrrrqqquuuur/DCpXXXXVVVddddX/a7Z5fiTx/5lt/iNI4n8r21z172Ob/w1s8+910003AfAP//APv81VV1111VVXXfU/CZWrrrrqqquuuup/lPvuu+9WgJ2dHf472eb5kcRVLzrbXPV/n23+N7HNVVddddVVV131/waVq6666qqrrrrqqn8F2zw/krjqqv/LbPO/lW3+s+3s7ABw33333cpVV1111VVXXfU/CZWrrrrqqquuuup/lLNnzz4DYGdnh/9NbPOCSOKqq/43sM3/dra56qqrrrrqqquuegCCq6666qqrrrrqf5z77rvvVoDt7W1sYxvb/G9lG9vYxja2sY1tbHPVVf+VbGMb29jGNraxzf9GtrGNbWzz32FnZweA++6771auuuqqq6666qr/aQiuuuqqq6666qr/cc6ePXsrwM7ODg9kG9vYxja2+b/ANraxjW1sYxvb2Oaqq/41bGMb29jGNraxjW3+N7ONbWxjG9v8T7CzswPA2bNnb+Wqq6666qqrrvqfhspVV1111VVXXfW/mm2emyT+L7HNi0ISV/3fZZv/T2zzP5lt7rezswPAfffddytXXXXVVVddddX/NARXXXXVVVddddX/OPfdd9+tADs7O/xb2MY2trGNbWzzf51tbGMb29jGNraxjW1sY5ur/mewjW1sYxvb2MY2trGNbWzzf5ltbGMb29jmfxrb2MY2trnqqquuuuqqq/7XoHLVVVddddVVV/2Pc999990KsLOzw38k2zw3Sfx/ZJt/K0lc9Wy2uepFY5v/LWzzotrZ2QHgvvvuu5Wrrrrqqquuuup/GipXXXXVVVddddX/a7Z5fiRx1fNnm6uuemFs87+Nbf6tdnZ2ADh79uwzuOqqq6666qqr/qchuOqqq6666qqr/sc5e/bsMwBuvvlm/rvYxja2sY1tbGObq6666grb2MY2trGNbf6ns41tbGMb21x11VVXXXXVVf9nUbnqqquuuuqqq/7Hue+++27lfzDbPD+SuOqq/2ts87+dbf4z7ezsAHDffffdylVXXXXVVVdd9T8Nlauuuuqqq6666n+cs2fP3gqws7PD/ya2eUEkcdVV/1PZ5v8K2/xX2dnZ4cVe7MW4+eab+Yd/+IffPnv27K1cddVVV1111VX/01C56qqrrrrqqqv+R7MNgCT+N7PNCyOJq676z2Sb/4ts819tZ2eHF3uxF+NVXuVVuN/f//3f//Z99913K1ddddVVV1111f80VK666qqrrrrqqv9x7rvvvlsBdnZ2uJ9tnpsk/q+wzb9EEldd9fzY5v8D2/x32tnZ4VVe5VV4sRd7Me73Iz/yI5/927/9299z33333cpVV1111VVXXfU/EZWrrrrqqquuuup/pPvuu+/Wa6655sE7Ozvs7e3x/Njm+ZHE/0W2eVFI4qr/G2zz/5Vt/qfY2dnhjd7ojbj55pu534/8yI989m/91m9999mzZ5/BVVddddVVV131PxmVq6666qqrrrrqf7SdnR329vb417DNc5PE/xe2+deSxFX/+Wxz1XOyzf9UN910E2/8xm/Mzs4OAPfdd9+tv/Vbv/XdP/qjP/o5XHXVVVddddVV/1tQueqqq6666qqr/kc6e/bsrddcc82D+Q9im+dHEleBbf69JPF/lW2u+vezzf8Gr/Iqr8KLvdiLsbOzA8B9991362/91m9994/+6I9+DlddddVVV1111f82VK666qqrrrrqqv/Rjh07xh133MF/Fts8P5K46l/HNlddBWCb/41e+ZVfmVd91Vflfvfdd9+tv/Vbv/XdP/qjP/o5XHXVVVddddVV/1tRueqqq6666qqr/ke67777bn2xF3sxdnZ2+O9gm+dHElddddUVtvnfzDY7Ozu82Iu9GK/6qq/K/e67775bf+u3fuu7f/RHf/RzuOqqq6666qqr/rejctVVV1111VVX/Y9033333cr/QLZ5QSRx1VX/19jm/wLbPNDOzg4v9mIvxqu+6qtyv/vuu+/WH/3RH/2c3/qt3/purrrqqquuuuqq/yuoXHXVVVddddVV/yOdPXv2GQA7Ozv8b2GbF0QSV131P5Ft/q+xzQuys7PDi73Yi/Gqr/qq3O8f/uEffvtHfuRHPucf/uEffpurrrrqqquuuur/GipXXXXVVVddddX/SPfdd9+tADs7O/xfYJt/iSSuuuo/mm3+r7PNv2RnZ4dXfdVX5cVe7MW434/8yI989m/91m9999mzZ5/BVVddddVVV131fxWVq6666qqrrrrqfzzbPJAk/i+yzb9EEldddT/b/H9jm3+NnZ0d3viN35ibb76Z+/3Ij/zIZ//2b//299x33323ctVVV1111VVX/V9H5aqrrrrqqquu+h/p7NmztwIcO3aM52ab50cS/9fZ5kUhiav+97LNVWCbf6ubb76ZN37jN2ZnZweA++6779bf+q3f+u4f/dEf/Ryuuuqqq6666qr/T6hcddVVV1111VX/Z9jmuUni/yPb/FtI4qr/WLa56oWzzX+UV3mVV+HFX/zF2dnZAeC+++679bd+67e++0d/9Ec/h6uuuuqqq6666v8jKlddddVVV1111f9I9913360AOzs7/HvY5vmRxFXPyzb/USTxv5FtrvrPYZv/DDs7O7zYi70Yr/qqr8r97rvvvlt/67d+67t/9Ed/9HO46qqrrrrqqqv+P6Ny1VVXXXXVVVf9j3Xffffdes011zz42LFjXLp0if9Itnl+JHHVfwzbXPX/k23+K+zs7PBiL/ZivOqrvir3u++++279rd/6re/+0R/90c/hqquuuuqqq666CqhcddVVV1111VX/Y509e/bWa6655sE7OztcunSJ/wq2eUEkcdVVVz2bbf477Ozs8GIv9mK86qu+Kve77777bv3RH/3Rz/mt3/qt7+aqq6666qqrrrrq2ahcddVVV1111VVXvYhs84JI4qqr/i+yzf8UOzs7vNiLvRiv+qqvyv3+4R/+4be/7uu+7r3Pnj37DK666qqrrrrqqqueF5Wrrrrqqquuuup/rPvuu+/WF3uxF2NnZ4f/6Wzzgkjiqqv+J7PN/2Q7Ozu86qu+Ki/2Yi/G/X7kR37ks3/7t3/7e+67775bueqqq6666qqrrnrBqFx11VVXXXXVVf9j3XfffbcC7Ozs8L+Zbf4lkrjqqv8stvnfaGdnhzd+4zfm5ptv5n4/8iM/8tm//du//T333XffrVx11VVXXXXVVVf9y6hcddVVV1111VX/K9hGEv9X2eZfIomrrnog2/xf9GIv9mK86qu+Kjs7OwDcd999t/7Wb/3Wd//oj/7o53DVVVddddVVV131r0Plqquuuuqqq676H+vs2bPPADh27BgAtnlukvj/wjYvKklc9b+Xbf4/epVXeRVe/MVfnJ2dHQDuu+++W3/rt37ru3/0R3/0c7jqqquuuuqqq676t6Fy1VVXXXXVVVf9j3XffffdCrCzs8MLYpvnRxL/n9nmX0sSV/3Hss1VL9zOzg4v9mIvxqu+6qtyv/vuu+/W3/qt3/ruH/3RH/0crrrqqquuuuqqq/59qFx11VVXXXXVVf8n2eb5kcRVz59t/iNJ4n8b21z1n882Ozs7vPiLvziv+qqvyv3uu+++W3/rt37ru3/0R3/0c7jqqquuuuqqq676j0Hlqquuuuqqq676H+vs2bO3Ahw7doz/KLZ5fiRx1X8s21z1/5ttntvOzg4v/uIvzqu+6qtyv/vuu+/WH/3RH/3s3/qt3/oerrrqqquuuuqqq/5jUbnqqquuuuqqq64CbPP8SOKqq656wWzzotjZ2eHFX/zFedVXfVXu9w//8A+//fVf//Xvc999993KVVddddVVV1111X8OKlddddVVV1111f9Y9913360AOzs7/HexzQsiiauu+v/CNv8WOzs7vOqrviov/uIvzv1+5Ed+5LN/+7d/+3vuu+++W7nqqquuuuqqq676z0Xlqquuuuqqq676H+2+++679Zprrnnwzs4Oe3t7/E9imxdGEldd9b+Fbf4j7ezs8CZv8ibcfPPN3O9HfuRHPvu3f/u3v+e+++67lauuuuqqq6666qr/GlSuuuqqq6666qr/0c6ePXvrNddc8+Bjx46xt7fH/ya2eWEkcdVV/1Vs81/hVV/1VXmxF3sxjh07BsB9991362/91m9994/+6I9+DlddddVVV1111VX/9ahcddVVV1111VVX/Texzb9EEldd9S+xzX+3V33VV+XFX/zF2dnZAeC+++679bd+67e++0d/9Ec/h6uuuuqqq6666qr/PlSuuuqqq6666qr/0e67775bX+zFXoydnR1sAyCJ/y9s86KSxFX/d9jmf7qdnR1e/MVfnFd91Vflfvfdd9+tv/Vbv/XdP/qjP/o5XHXVVVddddVVV/33o3LVVVddddVVV/2Pdt99990KsLOzw/1s8/xI4v8z2/xrSeKq/3y2+b9kZ2eHF3/xF+dVX/VVud99991364/+6I9+9m/91m99D1ddddVVV1111VX/c1C56qqrrrrqqqv+z7DNc5PEVS+Ybf4jSeL/Cttc9Zx2dnZ48Rd/cV71VV+V+9133323/uiP/ujn/NZv/dZ3c9VVV1111VVXXfU/D5Wrrrrqqquuuup/tLNnzz4D4JZbbuEP//AP+deyzQsiiav+Y9nmqv97dnZ2ePEXf3Fe9VVflfv9wz/8w29//dd//fvcd999t3LVVVddddVVV131PxeVq6666qqrrrrqf7T77rvvVv6T2Ob5kcRVV10FOzs7vOqrviov/uIvzv1+5Ed+5LN/+7d/+3vuu+++W7nqqquuuuqqq676n4/KVVddddVVV131P9rZs2dvBdjZ2eG/im1eEElcddX/dTs7O7zJm7wJN998M/f7kR/5kc/+0R/90c/hqquuuuqqq6666n8XKlddddVVV1111VX/CrZ5QSRx1VX/m73qq74qL/7iL87Ozg4A9913362/9Vu/9d0/+qM/+jlcddVVV1111VVX/e9E5aqrrrrqqquu+h/tvvvuuxXg2LFj/E9nm3+JJK666r+bbR7oVV/1VXnxF39xjh07BsB9991362/91m9994/+6I9+DlddddVVV1111VX/u1G56qqrrrrqqqv+x7vvvvtuveaaax587NgxLl26xP9mtvmXSOKqq/6tbPOiOHbsGC/2Yi/Gq73aq3G/++6779bf+q3f+u4f/dEf/Ryuuuqqq6666qqr/m+gctVVV1111VVX/a+xs7PDpUuX+L/ONi8KSVz1/4Nt/qMcO3aMF3uxF+PVXu3VuN99991364/+6I9+zm/91m99N1ddddVVV1111VX/t1C56qqrrrrqqqv+x7vvvvtuveaaax5sG9sASOL/O9v8a0niqv9+tvmvduzYMV7sxV6MV3u1V+N+9913360/+qM/+jm/9Vu/9d1cddVVV1111VVX/d9E5aqrrrrqqquu+l/JNs+PJK56wWzz7yWJ/89s87/JsWPHeLEXezFe7dVejfv9wz/8w29//dd//fvcd999t3LVVVddddVVV131fxuVq6666qqrrrrqf7yzZ8/eCnDLLbdw++2388LY5vmRxFX/MWxz1f98x44d41Vf9VV58Rd/ce73Iz/yI5/927/9299z33333cpVV1111VVXXXXV/w9Urrrqqquuuuqq//Huu+++W/l3ss0LIomrrvq/4uabb+bVXu3VuPnmm7nfj/zIj3z2j/7oj34OV1111VVXXXXVVf//ULnqqquuuuqqq/7HO3v27K0Ax44d4z+DbV4QSVx11f8Gr/qqr8qLv/iLc+zYMQDuu+++W3/rt37ru3/0R3/0c7jqqquuuuqqq676/4vKVVddddVVV131P9599913K8DOzg7/1Wzzgkjiqqv+u73qq74qL/7iL86xY8cAuO+++279rd/6re/+0R/90c/hqquuuuqqq6666ioqV1111VVXXXXVVf9GtnlhJHHVVf8Zjh07xou92Ivxaq/2atzvvvvuu/W3fuu3vvtHf/RHP4errrrqqquuuuqqq+5H5aqrrrrqqquu+h/vvvvuuxXg2LFj/G9im3+JJK666kV17NgxXuzFXoxXe7VX43733XffrT/6oz/6Ob/1W7/13Vx11VVXXXXVVVdd9dyoXHXVVVddddVVV/03ss2LQhJX/f917NgxXuzFXoxXe7VX43733XffrV//9V//Pv/wD//w21x11VVXXXXVVVdd9YJQueqqq6666qqr/sc7e/bsMwCOHTvG/1e2eVFJ4qr/fWzz3I4dO8aLv/iL82qv9mrc7x/+4R9+++u//uvf57777ruVq6666qqrrrrqqqv+JVSuuuqqq6666qr/Fe67775br7nmmgfv7Oxw6dIlACRx1fOyzb+VJK7697HNv9exY8d4tVd7NV78xV+c+/3Ij/zIZ//Wb/3Wd589e/YZXHXVVVddddVVV131oqJy1VVXXXXVVVf9r3D27Nlbr7nmmgcfO3aMS5cuAWCb50cSV/3b2Oa/giT+q9nmf7qbb76ZN33TN+XYsWPc70d+5Ec++0d/9Ec/h6uuuuqqq6666qqr/i2oXHXVVVddddVV/+fY5gWRxFX//Wxz1bO92qu9Gi/+4i/OsWPHALjvvvtu/a3f+q3v/tEf/dHP4aqrrrrqqquuuuqqfw8qV1111VVXXXXV/wr33XffrS/2Yi/GsWPH+PewzfMjiauu+q/2aq/2arz4i784x44dA+C+++679bd+67e++0d/9Ec/h6uuuuqqq6666qqr/iNQueqqq6666qqr/le47777bgXY2dnhP4NtXhBJXHXVf5Rjx47x4i/+4rzaq70a97vvvvtu/a3f+q3v/tEf/dHP4aqrrrrqqquuuuqq/0hUrrrqqquuuuqqq/4FtnlhJHHVVf+SY8eO8eIv/uK82qu9Gve77777bv3RH/3Rz/mt3/qt7+aqq6666qqrrrrqqv8MVK666qqrrrrqqv8Vzp49+wyAY8eO8T+Nbf4lkrjq/6djx47x4i/+4rzaq70a97vvvvtu/fqv//r3+Yd/+Iff5qqrrrrqqquuuuqq/0xUrrrqqquuuuqq/xXuu+++WwGOHTvG/0a2+ZdI4qr/O44dO8arvdqr8eIv/uLc7x/+4R9+++u+7uve++zZs8/gqquuuuqqq6666qr/ClSuuuqqq6666qqr/oewzYtKElf9z3Ts2DFe7dVejRd/8Rfnfj/yIz/y2b/927/9Pffdd9+tXHXVVVddddVVV131X4nKVVddddVVV131v8LZs2dvBTh27BhXgW3+tSRx1X+em2++mTd90zfl2LFjANx33323/tZv/dZ3/+iP/ujncNVVV1111VVXXXXVfxcqV1111VVXXXXV/zq2AZDEVS862/xHkMT/R7Z5fl7t1V6Nl3iJl+DYsWMA3Hfffbf+1m/91nf/6I/+6Odw1VVXXXXVVVddddV/NypXXXXVVVddddX/Cvfdd9+tAMeOHeN+tnlBJHHVfw7bXAWv9mqvxku8xEtw7NgxAO67775bf+u3fuu7f/RHf/RzuOqqq6666qqrrrrqfwoqV1111VVXXXXV/xr33Xffrddcc82Djx07xqVLl3hhbPP8SOKqq/6tjh07xou/+Ivz6q/+6tzvvvvuu/W3fuu3vvtHf/RHP4errrrqqquuuuqqq/6noXLVVVddddVVV/2vcfbs2VuvueaaBx87doxLly7xb2GbF0QSV131/Bw7dowXf/EX59Vf/dW533333Xfrj/7oj37Ob/3Wb303V1111VVXXXXVVVf9T0Xlqquuuuqqq6666pls88JI4qr/X44dO8aLv/iL8+qv/urc77777rv167/+69/nH/7hH36bq6666qqrrrrqqqv+p6Ny1VVXXXXVVVf9r3Hffffd+mIv9mIcO3aM/w62eWEkcdX/DceOHePVXu3VeImXeAnu91u/9Vvf/aM/+qOfc999993KVVddddVVV1111VX/W1C56qqrrrrqqqv+17jvvvtuBTh27Bj/E9nmhZHEVf+zHTt2jFd7tVfjJV7iJbjfj/zIj3z2b//2b3/PfffddytXXXXVVVddddVVV/1vQ+Wqq6666qqrrrrqv4htXhSSuOq/1i233MKbvumbcuzYMQDuu+++W3/rt37ru3/0R3/0c7jqqquuuuqqq6666n8zKlddddVVV1111f8aZ8+efQbALbfcwv9ltvnXkMRV/zav9mqvxku8xEtw7NgxAO67775bf+u3fuu7f/RHf/RzuOqqq6666qqrrrrq/wIqV1111VVXXXXV/xr33XffrVz1PGzzbyGJ/69e7dVejVd/9Vfnfvfdd9+tv/Vbv/XdP/qjP/o5XHXVVVddddVVV131fwmVq6666qqrrrrqf42zZ8/eCnDs2DFsI4mr/u1s859FEv/THDt2jBd/8Rfn1V/91bnffffdd+tv/dZvffeP/uiPfg5XXXXVVVddddVVV/1fROWqq6666qqrrvpfyzbPjySu+u9lm/8pjh07xku8xEvw6q/+6tzvvvvuu/VHf/RHP/u3fuu3voerrrrqqquuuuqqq/4vo3LVVVddddVVV/2vcd99990KcOzYMV4Y27wgkrjq/4djx47xEi/xErz6q78697vvvvtu/fqv//r3+Yd/+Iff5qqrrrrqqquuuuqq/w+oXHXVVVddddVV/6vcd999t15zzTUPPnbsGJcuXeJfyzYviCSu+t/v2LFjvPqrvzov8RIvwf1+5Ed+5LN/+7d/+3vuu+++W7nqqquuuuqqq6666v8TKlddddVVV1111f9Kx44d49KlS/xHss0LI4mr/uc6duwYb/Zmb8Ytt9zC/X7kR37ks3/7t3/7e+67775bueqqq6666qqrrrrq/yMqV1111VVXXXXV/ypnz5699Zprrnkw/w1s88JI4qr/erfccgtv9mZvxrFjxwC47777bv2t3/qt7/7RH/3Rz+Gqq6666qqrrrrqqv/vqFx11VVXXXXVVVf9B7HNv0QSV/3HePVXf3Ve4iVegmPHjgFw33333fpbv/Vb3/2jP/qjn8NVV1111VVXXXXVVVddQeWqq6666qqrrvpf5b777rv1xV7sxbjlllu47bbb+N/GNi8qSVz1vF791V+dV3/1V+d+9913362/9Vu/9d0/+qM/+jlcddVVV1111VVXXXXVc6Jy1VVXXXXVVVf9r3Lffffdyv8TtvnXkMT/VceOHeMlXuIlePVXf3Xud9999936W7/1W9/9oz/6o5/DVVddddVVV1111VVXPX9Urrrqqquuuuqq/1XOnj37DIDjx49z1XOyzb+HJP6nOXbsGC/xEi/Bq7/6q3O/++6779Yf/dEf/Zzf+q3f+m6uuuqqq6666qqrrrrqhaNy1VVXXXXVVVf9r3LffffdCnDs2DGu+o9lm/8Oknhux44d4yVe4iV49Vd/de73D//wD7/9Iz/yI5/zD//wD7/NVVddddVVV1111VVXvWioXHXVVVddddVV/2vZ5rlJ4qr/XWxzv2PHjvEar/EavMRLvAT3+5Ef+ZHP/u3f/u3vue+++27lqquuuuqqq6666qqr/nWoXHXVVVddddVV/6ucPXv2VoBjx47x/NjmBZHEVf8zHTt2jDd/8zfnlltu4X4/8iM/8tm//du//T333XffrVx11VVXXXXVVVddddW/DZWrrrrqqquuuur/Ddu8MJK46r/WLbfcwpu/+Ztz7NgxAO67775bf+u3fuu7f/RHf/RzuOqqq6666qqrrrrqqn8/KlddddVVV1111f8q9913360Ax44d4z+abV4QSVz1H+fVX/3VecmXfEmOHTsGwH333Xfrb/3Wb333j/7oj34OV1111VVXXXXVVVdd9R+HylVXXXXVVVdd9b/Offfdd+s111zz4GPHjnHp0iX+K9jmXyKJq16wY8eO8RIv8RK8xmu8Bve77777bv2t3/qt7/7RH/3Rz+Gqq6666qqrrrrqqqv+41G56qqrrrrqqqv+1zl79uyt11xzzYOPHTvGpUuX+J/CNv8SSfx/c+zYMV7iJV6C13iN1+B+9913362/9Vu/9d0/+qM/+jlcddVVV1111VVXXXXVfx4qV1111VVXXXXVVf+FbPOiksT/ZseOHeMlXuIleI3XeA3ud9999936oz/6o5/zW7/1W9/NVVddddVVV1111VVX/eejctVVV1111VVX/a9z33333fpiL/ZiHD9+nNtuu43/q2zzryWJ/27Hjh3jJV7iJXiN13gN7vcP//APv/0jP/Ijn/MP//APv81VV1111VVXXXXVVVf916Fy1VVXXXXVVVf9r3PffffdCnDs2DGuek62+feQxL/VsWPHeI3XeA1e4iVegvv9yI/8yGf/9m//9vfcd999t3LVVVddddVVV1111VX/9ahcddVVV1111VVXXfUstvnXOnbsGG/+5m/Ogx70IO73Iz/yI5/9W7/1W9999uzZZ3DVVVddddVVV1111VX/fahcddVVV1111VX/65w9e/YZAMeOHcM295PEVf91XvIlX5LXeI3X4NixYwDcd999t/7Wb/3Wd//oj/7o53DVVVddddVVV1111VX/M1C56qqrrrrqqqv+17nvvvtuBTh27BgPZJsXRBJX/cd4jdd4DV7yJV+SY8eOAXDffffd+lu/9Vvf/aM/+qOfw1VXXXXVVVddddVVV/3PQuWqq6666qqrrvp/wTYviCSueuGOHTvGS77kS/Iar/Ea3O++++679bd+67e++0d/9Ec/h6uuuuqqq6666qqrrvqficpVV1111VVXXfW/ztmzZ28FOH78OP8RbPPCSOL/q2PHjvGSL/mSvMZrvAb3u++++279rd/6re/+0R/90c/hqquuuuqqq6666qqr/mejctVVV1111VVXXfUvsM2/RBL/lxw7doyXfMmX5DVe4zW433333Xfrj/7oj37Ob/3Wb303V1111VVXXXXVVVdd9b8Dlauuuuqqq6666n+d++6771aAY8eO8T+Fbf4lkvif7tixY7zkS74kr/Ear8H9/uEf/uG3v/7rv/597rvvvlu56qqrrrrqqquuuuqq/12oXHXVVVddddVV/yvdd999t15zzTUPPnbsGJcuXeJ/A9u8qCTxX+nYsWO8xmu8Bi/5ki/J/X7kR37ks3/rt37ru8+ePfsMrrrqqquuuuqqq6666n8nKlddddVVV1111f9K9913363XXHPNg48fP86lS5f4v8Y2/1qS+Nc6duwYb/7mb86DHvQg7vcjP/Ijn/3bv/3b33PffffdylVXXXXVVVddddVVV/3vRuWqq6666qqrrrrq/wjbvKhe8iVfktd8zdfk2LFjANx33323/tZv/dZ3/+iP/ujncNVVV1111VVXXXXVVf93ULnqqquuuuqqq/5XOnv27K0Ax44d46oX3Wu8xmvwUi/1Uhw7dgyA++6779bf+q3f+u4f/dEf/Ryuuuqqq6666qqrrrrq/x4qV1111VVXXXXV/0r33XffrQDHjh3jqhfu2LFjvORLviSv+Zqvyf3uu+++W3/rt37ru3/0R3/0c7jqqquuuuqqq6666qr/u6hcddVVV1111VX/69nm+ZHE/2fHjh3jJV/yJXnN13xN7nfffffd+qM/+qOf81u/9VvfzVVXXXXVVVddddVVV/3fR+Wqq6666qqrrvpf6ezZs7cCPOhBD+IFsc0LI4n/i44dO8ZLvuRL8pqv+Zrc77777rv1R3/0Rz/nt37rt76bq6666qqrrrrqqquu+v+DylVXXXXVVVdd9b/Sfffddyv/TrZ5YSTxv8mxY8d4yZd8SV7zNV+T+/3DP/zDb3/d133de589e/YZXHXVVVddddVVV1111f8/VK666qqrrrrqqv+V7rvvvlsBjh07xn8W27wwkvif4NixY7zma74mL/mSL8n9fuRHfuSzf/u3f/t77rvvvlu56qqrrrrqqquuuuqq/7+oXHXVVVddddVVV/0b2eZFIYn/DMeOHeMt3uIteNCDHsT9fuRHfuSzf/u3f/t77rvvvlu56qqrrrrqqquuuuqqq6hcddVVV1111VX/K509e/YZAMePH+d/Otu8qCTxL3mN13gNXuqlXopjx44BcN999936W7/1W9/9oz/6o5/DVVddddVVV1111VVXXfVAVK666qqrrrrqqv+17rvvvluvueaaBx8/fpzd3V3+L7DNC/Kar/mavORLviTHjx8H4L777rv1t37rt777R3/0Rz+Hq6666qqrrrrqqquuuur5oXLVVVddddVVV/2vd+zYMXZ3d/m/6Pjx47zkS74kr/mar8n97rvvvlt/67d+67t/9Ed/9HO46qqrrrrqqquuuuqqq14YKlddddVVV1111f9aZ8+evfWaa655MP8HHT9+nJd8yZfkNV/zNbnffffdd+uP/uiPfs5v/dZvfTdXXXXVVVddddVVV1111YuCylVXXXXVVVddddX/IMePH+clX/Ilec3XfE3ud9999936oz/6o5/9W7/1W9/DVVddddVVV1111VVXXfWvQeWqq6666qqrrvpf67777rv1xV7sxXjQgx7EM57xDP43O378OC/5ki/Ja77ma3K/f/iHf/jtr//6r3+f++6771auuuqqq6666qqrrrrqqn8LKlddddVVV1111f9a9913360AtrHNc5PE/3THjx/nNV7jNXipl3op7vcjP/Ijn/3bv/3b33PffffdylVXXXXVVVddddVVV13170Hlqquuuuqqq676X+vs2bPPADh+/DjPj21eEEn8d3rQgx7Ea77ma/KgBz2I+/3Ij/zIZ//oj/7o53DVVVddddVVV1111VVX/UehctVVV1111VVX/a9133333Qpw/Phx/rVs8y+RxH+013zN1+QlX/IlOX78OAD33Xffrb/1W7/13T/6oz/6OVx11VVXXXXVVVddddVV/9GoXHXVVVddddVVV70AtnlhJPGies3XfE1e6qVeimPHjgFw33333fpbv/Vb3/2jP/qjn8NVV1111VVXXXXVVVdd9Z+FylVXXXXVVVdd9b/W2bNnbwU4duwY/x1s88IcP36cl3zJl+S1Xuu1uN99991362/91m9994/+6I9+DlddddVVV1111VVXXXXVfzYqV1111VVXXXXVVf/Bjh8/zku+5EvyWq/1Wtzvvvvuu/VHf/RHP/u3fuu3voerrrrqqquuuuqqq6666r8Klauuuuqqq6666n+t++6771aA48eP8z/B8ePHecmXfEle67Vei/vdd999t37913/9+/zDP/zDb3PVVVddddVVV1111VVX/VejctVVV1111VVX/a9233333XrNNdc8+Pjx4+zu7vLf4fjx47zkS74kr/Var8X9/uEf/uG3v/7rv/597rvvvlu56qqrrrrqqquuuuqqq/67ULnqqquuuuqqq/5XO3v27K3XXHPNg48dO8bu7i7/lY4fP85rvuZr8lIv9VLc70d+5Ec++7d/+7e/57777ruVq6666qqrrrrqqquuuuq/G5Wrrrrqqquuuuqqf6UHPehBvOVbviXHjx/nfj/yIz/y2T/6oz/6OVx11VVXXXXVVVddddVV/5NQueqqq6666qqr/le77777bn2xF3sxjh07xn+213zN1+SlX/qlOXbsGAD33Xffrb/1W7/13T/6oz/6OVx11VVXXXXVVVddddVV/xNRueqqq6666qqr/le77777bgU4fvw4tnlhJPFv8Zqv+Zq81Eu9FMePHwfgvvvuu/W3fuu3vvtHf/RHP4errrrqqquuuuqqq6666n8yKlddddVVV1111f8btnlhJHG/48eP85Iv+ZK81mu9Fve77777bv2t3/qt7/7RH/3Rz+Gqq6666qqrrrrqqquu+t+AylVXXXXVVVdd9b/a2bNnnwFw/Phx/r1sc/z4cV7qpV6K13qt1+J+9913360/+qM/+jm/9Vu/9d1cddVVV1111VVXXXXVVf+bULnqqquuuuqqq/5Xu++++24FOHbsGP8ex48f56Ve6qV4rdd6Le5333333fr1X//17/MP//APv81VV1111VVXXXXVVVdd9b8Rlauuuuqqq6666v+148eP81Iv9VK81mu9Fvf7h3/4h9/++q//+ve57777buWqq6666qqrrrrqqquu+t+MylVXXXXVVVdd9b/a2bNnbwU4fvw4/xrHjx/ntV7rtXipl3op7vcjP/Ijn/3bv/3b33PffffdylVXXXXVVVddddVVV131fwGVq6666qqrrrrq/5UHPehBvNVbvRXHjx8H4L777rv1t37rt777R3/0Rz+Hq6666qqrrrrqqquuuur/GipXXXXVVVddddX/avfdd9+tAMePH+eFea3Xei1e6qVeiuPHjwNw33333fpbv/Vb3/2jP/qjn8NVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666n+9++6779ZrrrnmwcePH2d3d5cHeq3Xei1e6qVeiuPHjwNw33333fpbv/Vb3/2jP/qjn8NVV1111VVXXXXVVVdd9X8dlauuuuqqq6666n+9s2fP3nrNNdc8+Pjx4+zu7nL8+HFe6qVeitd6rdfifvfdd9+tv/Vbv/XdP/qjP/o5XHXVVVddddVVV1111VX/X1C56qqrrrrqqqv+zzh27Biv+ZqvyWu/9mtzv/vuu+/WH/3RH/2c3/qt3/purrrqqquuuuqqq6666qr/b6hcddVVV1111VX/69133323vtiLvRhv9VZvxf3uu+++W7/+67/+ff7hH/7ht7nqqquuuuqqq6666qqr/r+ictVVV1111VVX/a/3D//wD79zzTXXPPjFXuzFXvu3fuu3vvtHf/RHP+e+++67lauuuuqqq6666qqrrrrq/zv0oAc9iKuuuuqqq6666n+/a6655sG2ffbs2Wdw1VVXXXXVVVddddVVV111BXrQgx7EVVddddVVV1111VVXXXXVVVddddVVV131fxKVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q/iHwEzPQ7SiftHpAAAAABJRU5ErkJggg==) - - diff --git a/docs/kcl/angledLineToY.md b/docs/kcl/angledLineToY.md deleted file mode 100644 index b6e325eca..000000000 --- a/docs/kcl/angledLineToY.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: "angledLineToY" -excerpt: "Create a line segment from the current 2-dimensional sketch origin along some angle (in degrees) for some length, ending at the provided value in the 'y' dimension." -layout: manual ---- - -Create a line segment from the current 2-dimensional sketch origin along some angle (in degrees) for some length, ending at the provided value in the 'y' dimension. - - - -```js -angledLineToY( - data: AngledLineToData, - sketch: Sketch, - tag?: TagDeclarator, -): Sketch -``` - - -### Arguments - -| Name | Type | Description | Required | -|----------|------|-------------|----------| -| `data` | [`AngledLineToData`](/docs/kcl/types/AngledLineToData) | Data to draw an angled line to a point. | Yes | -| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | | Yes | -| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | - -### Returns - -[`Sketch`](/docs/kcl/types/Sketch) - - -### Examples - -```js -exampleSketch = startSketchOn(XZ) - |> startProfileAt([0, 0], %) - |> angledLineToY({ angle = 60, to = 20 }, %) - |> line(end = [-20, 0]) - |> angledLineToY({ angle = 70, to = 10 }, %) - |> close() - -example = extrude(exampleSketch, length = 10) -``` - -![Rendered example of angledLineToY 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADgYklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqr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p3/6pz/NVVddddVVV1111X8OyvHjx7nqqquuuuqq/w8ODw93/+Ef/uF3Dg8Pd1/8xV/8tW+66SYe+9jHcvbsWfb29nhukvivJIn/CSTxv40krrrqfrb5n+7N3uzN2NnZ4R/+4R9++7u+67s+hquuuuqqq6666qr/POhBD3oQV1111VVXXfX/zTXXXPPgz/mcz/mta6655sEAf/zHf8wf//Ef84JI4r+aJP6nkMT/dpK46n8/2/xvZptXeqVX4pVe6ZW47777bv2QD/mQh3DVVVddddVVV131n4ty/Phxrrrqqquuuur/m8PDw90/+7M/+5nDw8PdF3/xF3/tm266icc+9rGcPXuWvb09/iWS+K8mif9JJPF/kSSu+q9nm/9rbPPcbrzxRt7gDd4AgC/5ki95m7Nnz97KVVddddVVV1111X8uyvHjx7nqqquuuuqq/48ODw93/+Ef/uF3fvu3f/t7XvEVX/GtT548efymm25iNptxxx138KKSxH8XSfxPI4n/jyRxFdjm/xvbvKje4A3egJ2dHX7rt37re37hF37hq7nqqquuuuqqq676z0c5fvw4V1111VVXXfX/2eHh4e6f/dmf/czh4eHuy73cy732TTfdxGMf+1ie+tSnsl6v+deSxH8XSfxPJYmr/mNJ4oWxzVX/cWzz7/G2b/u23HTTTdx33323ftZnfdbrcNVVV1111VVXXfVfg3L8+HGuuuqqq6666v+7w8PD3X/4h3/4nd/+7d/+nld8xVd865MnTx5/2MMexmw244477uDfShL/nSTxP50krrrqfxLb/Ee78cYbeeVXfmUAvuRLvuRtzp49eytXXXXVVVddddVV/zUox48f56qrrrrqqquuuuLw8HD3z/7sz37m8PBw9+Ve7uVe+6abbuKxj30sT33qU1mv1/x7SeK/myT+t5DEVVf9Z7DNf5WdnR3e9V3fFYAf+ZEf+ezf/u3f/h6uuuqqq6666qqr/utQjh8/zlVXXXXVVVdd9WyHh4e7//AP//A7v/3bv/09r/iKr/jWJ0+ePP6whz2M2WzGHXfcwX8kSfxPIIn/jSRx1VXPj23+p3izN3szdnZ2+Id/+Iff/vqv//r34aqrrrrqqquuuuq/FuX48eNcddVVV1111VXP6/DwcPfP/uzPfubw8HD35V7u5V77pptu4rGPfSxPfepTWa/X/GeQ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177llls4duwY9913H+v1mqv+73vxF39xXv7lXx6Az/qsz3qdw8PDXa666qqrrrrqqquuelFRjh8/zlVXXXXVVVddddX/ZIeHh7v/8A//8DsAL/7iL/7a11xzDY94xCOYz+fcfvvtXPV/17Fjx3iXd3kXAD7zMz/zdW699da/5qqrrrrqqquuuuqqfw3K8ePHueqqq6666qqrrvrf4B/+4R9+57d/+7e/5/DwcPflXu7lXvuWW27h2LFj3HfffazXa676v+dt3uZtOHbsGL/1W7/13b/wC7/wNVx11VVXXXXVVVdd9a9FOX78OFddddVVV1111VX/WxweHu7+wz/8w+8AvPiLv/hrX3PNNTziEY9gPp9z++23c9X/Ha/2aq/GS7zES3Dffffd+lmf9Vmvw1VXXXXVVVddddVV/xaU48ePc9VVV1111VVXXfW/zT/8wz/8zm/91m9990Me8pCXvvnmmx98yy23AHD77bdz1f9+N998M2/6pm8KwJd8yZe8zdmzZ2/lqquuuuqqq6666qp/C8rx48e56qqrrrrqqquu+t/o6Ojo0m/91m99D8CLv/iLv/Ytt9zCi7/4izOfz7n99tu56n+vd3mXd2E+n/MjP/Ijn/3bv/3b38NVV1111VVXXXXVVf9WlOPHj3PVVVddddVVV131v9k//MM//M5v//Zvf89DHvKQl7755psffMstt2Cb2267jftJ4qr/Hd75nd+Za6+9ln/4h3/47a//+q9/H6666qqrrrrqqquu+vegHD9+nKuuuuqqq6666qr/7Q4PD3f/4R/+4XcODw93X/zFX/y1b7nlFl7iJV6C++67j0uXLvFvJYmr/mPY5l/yEi/xErz8y788AJ/1WZ/1OoeHh7tcddVVV1111VVXXfXvQTl+/DhXXXXVVVddddVV/xccHh7u/sM//MPv/PZv//b3POQhD3npm2+++cEv8RIvgSRuu+02/ieRxP9UtvnvcOzYMd7lXd4FgM/8zM98nVtvvfWvueqqq6666qqrrrrq34ty/Phxrrrqqquuuuqqq/4vOTw83P2Hf/iH3zk8PNx98Rd/8de+5ZZbeImXeAnuu+8+Ll26xFX/M73t274tx44d4x/+4R9++0d/9Ec/h6uuuuqqq6666qqr/iOgBz3oQVx11VVXXXXVVVf9X3XNNdc8+HM+53N+65prrnkwwO///u/zB3/wB1z1P8urvdqr8eqv/urcd999t37Ih3zIQ7jqqquuuuqqq6666j8K5fjx41x11VVXXXXVVVf9X3V4eLj7p3/6pz99eHi4++Iv/uKvfcstt/ASL/ES3HfffVy6dImr/vvdcsstvNmbvRkAX/IlX/I2Z8+evZWrrrrqqquuuuqqq/6jUI4fP85VV1111VVXXXXV/2VHR0eX/uEf/uF3fvu3f/t7XvEVX/GtT506dfyWW25hNptx++23c9V/r3d5l3dhPp/zIz/yI5/927/929/DVVddddVVV1111VX/kSjHjx/nqquuuuqqq6666v+Dw8PD3T/7sz/7mcPDw92Xe7mXe+1bbrmFl3iJl+DJT34y6/Waq/7rvcu7vAvXXnst//AP//DbX//1X/8+XHXVVVddddVVV131H41y/Phxrrrqqquuuuqqq/6/ODw83P2Hf/iH3/mt3/qt737FV3zFtz516tTxRzziEcxmM26//Xau+q9zyy238Oqv/uoAfNZnfdbrHB4e7nLVVVddddVVV1111X80yvHjx7nqqquuuuqqq676/+bo6OjSn/3Zn/3M4eHh7su93Mu99i233MJLvMRL8OQnP5n1es1V/7mOHTvG+7zP+wDwmZ/5ma9z6623/jVXXXXVVVddddVVV/1noBw/fpyrrrrqqquuuuqq/48ODw93/+Ef/uF3fvu3f/t7XvEVX/GtT506dfwRj3gEs9mM2267jRdGElc9f7b5l7zt274tx44d4x/+4R9++0d/9Ec/h6uuuuqqq6666qqr/rNQjh8/zlVXXXXVVVddddX/Z4eHh7t/9md/9jOHh4e7L/dyL/fat9xyCy/xEi/Bk5/8ZNbrNVf9x3r1V391XuIlXoL77rvv1o//+I9/Ga666qqrrrrqqquu+s9EOX78OFddddVVV1111VX/3x0eHu7+wz/8w+/89m//9ve84iu+4lufOnXq+CMf+Ujm8zm33XYbV/3HuOWWW3izN3szAL7kS77kbc6ePXsrV1111VVXXXXVVVf9Z6IcP36cq6666qqrrrrqqquuODw83P2zP/uznzk8PNx9uZd7ude+5ZZbeImXeAme/OQns16vuerf513f9V2Zz+f8yI/8yGf/9m//9vdw1VVXXXXVVVddddV/Nsrx48e56qqrrrrqqquuuurZDg8Pd//hH/7hd/7hH/7hd17sxV7stU+dOnX8kY98JPP5nNtuu42r/m3e9V3flWuvvZZ/+Id/+O2v//qvfx+uuuqqq6666qqrrvqvQDl+/DhXXXXVVVddddVVVz2vs2fP3vqnf/qnP314eLj7ci/3cq99yy238BIv8RI8+clPZr1ec9WL7pZbbuHVX/3VAfj6r//69zl79uytXHXVVVddddVVV131X4Fy/Phxrrrqqquuuuqqq656/o6Oji79wz/8w+/8wz/8w++82Iu92GufOnXq+CMf+Ujm8zm33XYbV/3Ljh07xvu+7/sC8Jmf+Zmv8w//8A+/zVVXXXXVVVddddVV/1Uox48f56qrrrrqqquuuuqqF+7s2bO3/tmf/dnPHB4e7r7cy73ca99yyy28xEu8BE9+8pNZr9dc9YK93du9HceOHeMf/uEffvtHf/RHP4errrrqqquuuuqqq/4rUY4fP85VV1111VVXXXXVVf+yw8PD3X/4h3/4nbNnz9764Ac/+KVPnTp1/JGPfCTz+ZzbbruNq57Xq7/6q/MSL/ES3Hfffbd+/Md//Mtw1VVXXXXVVVddddV/Ncrx48e56qqrrrrqqquuuupFd+utt/7Nn/3Zn/3M4eHh7su93Mu99i233MItt9zCbbfdxnq95v8T27wgt9xyC2/+5m8OwJd8yZe8zdmzZ2/lqquuuuqqq6666qr/apTjx49z1VVXXXXVVVddddW/zuHh4e4//MM//M7Zs2ef8eAHP/ilb7jhhuOPfOQjmc1m3HbbbVwF7/Zu78Z8PudHfuRHPvu3f/u3v4errrrqqquuuuqqq/47UI4fP85VV1111VVXXXXVVf82t95661//2Z/92c8cHh7uvtzLvdxrP+hBD+JBD3oQt912G+v1mv+v3u3d3o1rr72Wf/iHf/jtr//6r38frrrqqquuuuqqq67670I5fvw4V1111VVXXXXVVVf92x0eHu7+wz/8w+8AvPiLv/hrHzt2jEc+8pHM53Nuu+02/r+55ZZbeI3XeA0Avv7rv/59zp49eytXXXXVVVddddVVV/13oRw/fpyrrrrqqquuuuqqq/79/uEf/uF3fvu3f/t7Dg8Pd1/u5V7utW+55RaOHz/Ovffey3q95v+DY8eO8X7v934AfOZnfubr/MM//MNvc9VVV1111VVXXXXVfyfK8ePHueqqq6666qqrrrrqP8bh4eHuP/zDP/wOwIu/+Iu/9rXXXssjH/lIZrMZt912G//Xvf3bvz3Hjh3jH/7hH377R3/0Rz+Hq6666qqrrrrqqqv+u1GOHz/OVVddddVVV1111VX/sf7hH/7hd37rt37rux/ykIe89M033/zgBz3oQQDcdttt/F/16q/+6rzkS74k9913360f//Ef/zJcddVVV1111VVXXfU/AeX48eNcddVVV1111VVXXfUf7+jo6NJv/dZvfQ/Ai7/4i7/2gx70IF7yJV+S2WzGbbfdxv8lt9xyC2/+5m8OwJd8yZe8zdmzZ2/lqquuuuqqq6666qr/CSjHjx/nqquuuuqqq6666qr/PP/wD//wO7/927/9PQ95yENe+uabb37wgx70IABuu+02/q948zd/c44dO8aP/MiPfPZv//Zvfw9XXXXVVVddddVVV/1PQTl+/DhXXXXVVVddddVVV/3nOjw83P2Hf/iH3zk8PNx98Rd/8dd+0IMexEu+5EuyWq247777+N/GNvd7t3d7Nx70oAfxD//wD7/99V//9e/DVVddddVVV1111VX/k1COHz/OVVddddVVV1111VX/+Q4PD3f/4R/+4Xd++7d/+3se8pCHvPTNN9/84Ec+8pEAPOMZz+B/o1tuuYXXfM3XBODrv/7r3+fs2bO3ctVVV1111VVXXXXV/ySU48ePc9VVV1111VVXXXXVf53Dw8Pdf/iHf/idw8PD3Rd/8Rd/7Qc96EG85Eu+JPfeey+XLl3if4tjx47x/u///gB8/dd//fv86Z/+6U9z1VVXXXXVVVddddX/NJTjx49z1VVXXXXVVVddddV/rcPDw91/+Id/+J3f/u3f/p5XfMVXfOtTp04df8mXfEkAbrvtNv43ePu3f3uOHz/OP/zDP/z2d33Xd30MV1111VVXXXXVVVf9T0Q5fvw4V1111VVXXXXVVVf99zg8PNz90z/9058+PDzcffEXf/HXftCDHsRLvuRLcu+993Lp0iX+p3qN13gNXvIlXxKAD/mQD3kIV1111VVXXXXVVVf9T0U5fvw4V1111VVXXXXVVVf99zk6Orr0D//wD7/z27/929/ziq/4im996tSp4w960IOYz+fcdttt/E9zyy238BZv8RYAfOZnfubrnD179lauuuqqq6666qqrrvqfinL8+HGuuuqqq6666qqrrvrvd3h4uPtnf/ZnP3N4eLj7ci/3cq/9oAc9iJd8yZfk3nvv5dKlS/xP8eZv/uYcP36c3/qt3/ruX/iFX/garrrqqquuuuqqq676nww96EEP4qqrrrrqqquuuuqq/1nOnDnzoM/93M/97WuuuebBly5d4m//9m/5vd/7Pf67vfmbvzkv+ZIvyX333Xfrh3zIhzyEq6666qqrrrrqqqv+p6McP36cq6666qqrrrrqqqv+Zzk6Orr0Z3/2Zz9zeHi4+3Iv93Kv/aAHPYiXfMmX5ElPehLr9Zr/Drfccgtv8AZvAMCXfMmXvM3Zs2dv5aqrrrrqqquuuuqq/+kox48f56qrrrrqqquuuuqq/3kODw93/+Ef/uF3fvu3f/t7XvEVX/GtT506dfxRj3oU8/mc2267jf9Kx44d4/3f//0B+JEf+ZHP/u3f/u3v4aqrrrrqqquuuuqq/w0ox48f56qrrrrqqquuuuqq/7kODw93/+zP/uxnDg8Pd1/u5V7utR/0oAfxki/5kjzxiU9ktVrxX+Ht3/7tOX78OP/wD//w21//9V//Plx11VVXXXXVVVdd9b8FetCDHsRVV1111VVXXXXVVf87XHPNNQ/+nM/5nN+65pprHnzp0iX+9m//lt/93d/lP9NrvMZr8Jqv+ZoAfMiHfMhD7rvvvlu56qqrrrrqqquuuup/C8rx48e56qqrrrrqqquuuup/h8PDw90/+7M/+5nDw8Pdl3u5l3vtBz3oQbzUS70UT3ziE1mv1/xHe9CDHsRbvMVbAPCZn/mZr3Prrbf+NVddddVVV1111VVX/W9COX78OFddddVVV1111VVX/e9xeHi4+w//8A+/89u//dvf84qv+IpvferUqeOPetSjmM1m3HbbbfxHeou3eAuOHz/Ob/3Wb333L/zCL3wNV1111VVXXXXVVVf9b0M5fvw4V1111VVXXXXVVVf973N4eLj7p3/6pz99eHi4+3Iv93Kv/aAHPYiXeqmX4olPfCLr9Zp/r9d4jdfgpV7qpbjvvvtu/azP+qzX4aqrrrrqqquuuuqq/40ox48f56qrrrrqqquuuuqq/52Ojo4u/cM//MPv/MM//MPvvNiLvdhrnzp16vijHvUoZrMZt912G/9WD3rQg3iLt3gLAL7kS77kbc6ePXsrV1111VVXXXXVVVf9b0Q5fvw4V1111VVXXXXVVVf973b27Nlb/+zP/uxnDg8Pd1/u5V7utR/0oAfxUi/1UjzxiU9kvV7zr/XhH/7hAPzIj/zIZ//2b//293DVVVddddVVV1111f9WlOPHj3PVVVddddVVV1111f9+h4eHu//wD//wO//wD//wOy/2Yi/22qdOnTr+qEc9itlsxm233caL6t3f/d05fvw4//AP//DbX//1X/8+XHXVVVddddVVV131vxnl+PHjXHXVVVddddVVV131f8fZs2dv/bM/+7OfOTw83H25l3u5137Qgx7Egx70IJ7xjGewXq95YV7yJV+SV3zFVwTgsz7rs17n8PBwl6uuuuqqq6666qqr/jejHD9+nKuuuuqqq6666qqr/m85PDzc/Yd/+IffOXv27DMe/OAHv/SNN954/JGPfCTz+ZxnPOMZPD/Hjx/nPd7jPQD4zM/8zNe59dZb/5qrrrrqqquuuuqqq/63oxw/fpyrrrrqqquuuuqqq/5vuvXWW//6z/7sz37m8PBw9+Vf/uVf+0EPehAPetCDuO2221itVjzQO7zDO3D8+HF+67d+67t/4Rd+4Wu46qqrrrrqqquuuur/Asrx48e56qqrrrrqqquuuur/rsPDw91/+Id/+B2AF3/xF3/t48eP88hHPpL5fM4znvEMAF7zNV+Tl3qpl+K+++679bM+67Neh6uuuuqqq6666qqr/q+gHD9+nKuuuuqqq6666qqr/u/7h3/4h9/57d/+7e85PDzcffmXf/nXftCDHsSxY8eYz+e84Ru+IQBf8iVf8jZnz569lauuuuqqq6666qqr/q+gHD9+nKuuuuqqq6666qqr/n84PDzc/Yd/+IffAXjxF3/x177uuut41KMeBcCP/MiPfPZv//Zvfw9XXXXVVVddddVVV/1fgh70oAdx1VVXXXXVVVddddX/P2fOnHnQR3zER3z3fffddyvA13/9178PV1111VVXXXXVVVf9X4Me9KAHcdVVV1111VVXXXXVVVddddVVV1111VVX/Z9E5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q/iHwFAChIcMEYFegAAAABJRU5ErkJggg==) - - diff --git a/docs/kcl/appearance.md b/docs/kcl/appearance.md index fd47b5f5e..459a2359d 100644 --- a/docs/kcl/appearance.md +++ b/docs/kcl/appearance.md @@ -103,7 +103,7 @@ firstSketch = startSketchOn(XY) |> close() |> extrude(length = 6) -shell(firstSketch, faces = ['end'], thickness = 0.25) +shell(firstSketch, faces = [END], thickness = 0.25) |> appearance(color = '#ff0000', metalness = 90, roughness = 90) ``` @@ -121,7 +121,7 @@ firstSketch = startSketchOn(XY) |> extrude(length = 6) |> appearance(color = '#ff0000', metalness = 90, roughness = 90) -shell(firstSketch, faces = ['end'], thickness = 0.25) +shell(firstSketch, faces = [END], thickness = 0.25) ``` ![Rendered example of appearance 4](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAD8QklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddX/Y9dcc82DX+zFXuy1P/zDP/y7uOqqq6666v+cr//6r3+ff/iHf/jt++6771auuuqqq6666v8n9KAHPYirrrrqqquu+v/qcz/3c3/rxV7sxV770t13c79j11/PVVddddVV/7tduvtujl1/PQD33XffrR/yIR/yEK666qqrrrrq/yeCq6666qqrrvp/6h3f8R0/68Ve7MVe+9Ldd/Mt7/AO/P0v/RLHrr+eq6666qqr/ve77a/+im96+7fn0t13c8011zz4Hd/xHT+Lq6666qqrrvr/CT3oQQ/iqquuuuqqq/6/ueaaax78Td/0TU8H+KGP+AgA3uXrvo77/c5HfRT/EvGfS/wLJB5IvOjEfy7xryf+dcR/LvEvkHgg8a8j/muIfz3xbyP+e4h/H/EfQ/zfIP53e8mv+ioALt19N7/wBV8AwLt+/ddz33333fr1X//17/MP//APv81VV1111VVX/f9C5aqrrrrqqqv+H/rwD//w7wL4+1/8RW7/q7/inb/u63igw3vu4eiee3hhxL+O+NcR/wKJBxIvOvGvI/51xL+eeNGJfx3xryNeBBIPJP51xL+O+NcT/3ri30b824h/O/FcJP41xH8M8R9P/NcR//dcvPtuTlx/PW/2aZ/GN7392/P73/EdvPr7vd+DP/zDP/y7PuRDPuQhXHXVVVddddX/LwRXXXXVVVdd9f/MO77jO37Wi73Yi732pbvv5pe+8At5tfd9X255mZfh4J57+P0v+iIANq+7jv9NxP9u4n8ZiQcS/zriP5/41xP/NuLfRvzbieci8a8h/v0EiP9YAsR/LgECBIj/W+bXXQfAn//iL3Lx7rs5dv31vPr7vi9//0u/xKW77+aaa6558Du+4zt+FlddddVV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AeKqq676v0iAAAECBAgQIECAAAECBIj/WwQIECBAgAABAsR/IQkkkEDi9r/+a277q7/iYS/zMvx/9gff+Z0AXP/SL80j3+RNEPDkX/olnvRLv8SZM2ce9OEf/uHfxVVXXXXVVf9fUI4fP85VV1111VX/973O67zOe7/5m7/5RwP82Du9E/d7q+/8TgD+5GM+hv2nPpUXlfiXiRdM/OuIf5l4TuKZJP4lj33v9+aal3kZfvkLv5C9e+5BgAAB4qr/DAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAeKq/2gCBAgQIECAAAECBAgQIP53EyBAgAABAgQIEP95Lt1zD6/wju/Iieuv5x9+93cRzyaeTTybeDbxbOLZxHMSzyaeSUI8m3hO4tnEs4nnJJ5NPCfxbOI5iSvWBwfs3XMPj3jN1+TUIx7BM37v9xgPDrjw5Cfz4Nd8TW566EMfDPAP//APv8NVV1111VX/1xFcddVVV131f94111zz4A//8A//LoBf+siP5H5v8jVfA8CFv/5rLvzN3wAgHkDihRH/PuKZJB5IvGjEv514NgEv9j7vw+1/9Vfc/ld/xf93AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAsRV/xsIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCuekEECBAgQIAAAQIECBD/OwkQIECAAAECBIh/m9v/6q+47a/+ioe97Mvy/9nf/+Ivcttf/RVb113Hy77v+wJwcM89/OV3ficAr/M6r/Pe11xzzYO56qqrrrrq/zqCq6666qqr/s/78A//8O8CuOev/op7//qvEXD9S780173MywDwt1/6pTyQeNGJF07824jnJf5l4gUTz9+D3viNAfj7X/xF/jcSIECAAAECBAgQIECAAAECBAgQIECAuOqq/x4CBAgQIECAAAECBAgQIECAAAECBIj/vwQIECBAgAABAgQIEP+7CBAgQIAAAQIEiOfv73/xFzlx3XW8/Ju+Kf+f/eIXfAEAj3iTN+ERb/ImADz5l36JJ//SL3HNNdc8+MM//MO/i6uuuuqqq/6voxw/fpyrrrrqqqv+73qd13md937zN3/zjwb48Xd6J+739j/6owD87Zd8CRf+5m94buKZJP4l4oUTL5j49xEvnHgmiRfkVb/gC1ju7/PLX/iF/FcTIECAAAECBAgQIECAAAECBAgQV1111XMTIECAAAECBAgQIECAAAECBAgQ//cJECBAgAABAgQIEP97CBAgQICA4eCAax7xCB7zmq/J7//oj3I/8Wzi2cSziWcTzyaek3g28UwS4tnEcxLPJp5NPCfxbOI5iWcTz0k8m4D14SGX7r6bR7zma3LqEY/gGb/3ewwHB5x/8pN58Gu+Jjc99KEPBviHf/iH3+Gqq6666qr/qwiuuuqqq676P+uaa6558Id/+Id/F8Avf+RHcr83/pqvAeDCX/81d/7Kr/CCiP844gUTgMRzE89L/PuIZxPwoDd+Yzavu44//M7v5N9DgAABAgQIECBAgAABAgSIq6666n8qAQIECBAgQIAAAQIECBAg/u8RIECAAAECBAgQIP5nunTPPfz9L/4iJ66/npd70zflP4L53+nvf+mXuO2v/oqt667jZd/3fQE4uOce/vI7vxOA13md13nva6655sFcddVVV131fxXBVVddddVV/2d9+Id/+HcB3PNXf8U9f/3XAFz30i/NdS/zMgD87Zd+Kf8S8aIR/33EcxLPSbxgj32f9wHgH37pl7ifAAECBAgQIECAAAECBIir/icRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAHHV/yQCBAgQIECAAAECBAgQIP5vECBAgAABAgQIEP89bvurv+L2v/or3uD93o//LuZFY14w8+/3S1/wBQA84k3ehBte5mUQ8JRf+iWe/Eu/xDXXXPPgD//wD/9urrrqqquu+r+Kcvz4ca666qqrrvq/53Ve53Xe+83f/M0/+uCee/jZ93s/7vfGX/u19Ftb/O2XfAkX/uZveFFI4kUhXjjxgglA4rmJ5yX+jSQe6EFv/MY8+E3ehF/+gi/g7FOeggBx1b+FAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAHi/ycBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSIq/61BAgQIECAAAECBAgQ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//AP/y6Ap/7SL3HvX/81AJvXXcerfsqnAPBnH/uxvDCSEP82AsSLQAJAvHDiBRPPn3he4oW7+Y3fmDv+6q+446/+iv9pBAgQIECAAAECBAgQIECAuOqqq/69BAgQIECAAAECBAgQIECAAPF/lwABAgQIECBAgADxP58AAQIECBAgQPzL7virv+L2v/orHvIyL8OJ66/nuZn/n/buuYc/+s7vBODhb/ImbF13HQD3/PVf89ff9V1cc801D/7wD//w7+Kqq6666qr/6Qiuuuqqq676H+0d3/EdP+vFXuzFXvvgnnv4oy/6Iu73qp/yKQBc+Ju/4eLf/A0vCvFvJ1504oUTL5j4txNXvMwnfzIAf/yd38l/JgECBAgQIECAAAECBAgQIK666qr/jQQIECBAgAABAgQIECBA/N8iQIAAAQIECBAg/mcTIECAAAECxLP90Xd+Jyeuv57Xe7/346pn+4df+iX+4Rd/ka3rruPVPuVTuN9Tf+mXOLjnHq655poHv9M7vdNnc9VVV1111f9kBFddddVVV/2P9WIv9mKv/U7v9E6fDfBHX/iF3O+hb/ImXPsyLwPAn3/sx/IikQAQIP5txL9A4kUl/nUEIPFA4vm7+Y3fmDv+6q+446/+in8NAQIECBAgQIAAAQIEiKv+qwkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBIir/qsJECBAgAABAgQIECBA/O8nQIAAAQIECBD/cwkQcOdf/RV3/NVf8ZCXeRlOXH89/17mRWNeMPMfz/zr/dF3fid7d9/NdS/zMjz8Td4EgIN77uEPvvALAXid13md936xF3ux1+aqq6666qr/qQiuuuqqq676H+ud3umdPgvgqb/0S9z7138NwOZ11/Gqn/IpAPzZx34s/yoS9xP/NuJFI/7txL/do977vQH44+/8TgAECBAgQIAAAQIECBBX/WsIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgLjqP4IAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBXvagECBAgQIAAAQIECBD/OwkQIECAAAECxP8Mf/Sd38mJ66/n9d7v/TBXmSv27rmHP/rO7wTgpd7nfdi67joA7vnrv+avv+u7OHPmzIM+/MM//Lu46qqrrrrqfyqCq6666qqr/kd6x3d8x896sRd7sdc+uOce/uiLvoj7veqnfAoAF/7mb7j4N3/Dv4cA8a8nXgiJ+4kXTrxg4nkJQOKBxHN61Hu/N3f81V9x51/9FeKq+wkQIECAAAECBAgQIECAAAECBAgQIEBcddW/jgABAgQIECBAgAABAgQIECBAgAABAsRVAAIECBAgQIAAAQLE/y4CBAgQIECAAPFf446/+ivu+Ku/4iEv8zL8T2deMPMf7x9+6Ze446/+iq3rruOl3+d9ECDgab/0Sxzccw/XXHPNg9/xHd/xs7jqqquuuup/IoKrrrrqqqv+x3mxF3ux136nd3qnzwb4oy/8Qu537Uu/NNe+zMsA8Lgv/VLEv4HEcxP/euJFI1448a8jXrBHvvd7A/An3/md/F8iQIAAAQIECBAgQIAAAQIECBAgrrrq/xYBAgQIECBAgAABAgQIECBAgPj/RYAAAQIECBAgQID430GAAAECBAgQIP7j/NF3ficnrr+et//0T+f/DJv/CL/yBV8AwMPe5E142Ju8CQAH99zDH3zhFwLwOq/zOu/9Yi/2Yq/NVVddddVV/9MQXHXVVVdd9T/OO73TO30WwNN+6Ze476//GgEC3uBrvxaAf/jSL2V5zz0ACBD/fgLEv44A8S8TL5x4/sSLRlzxqPd+b+74q7/ijr/6K/4nEiBAgAABAgQIECBAgAAB4qqrrvqPJkCAAAECBAgQIECAAAECxP9tAgQIECBAgAAB4n8+AQIECBAgQPzr3PFXf8Udf/VXPORlX5Z/LfNMNv8X7d1zD7/yBV8AwEu9z/uwdd11ANz713/N33zXd3HNNdc8+MM//MO/i6uuuuqqq/6nIbjqqquuuup/lHd8x3f8rBd7sRd77cN77uGPvuiLuN/rf83XAHDxb/6Gu37lV3hu4l9B4gUR/3riuUg8N/EfRxLP7eY3fmMAHv+Lv8h/BQECBAgQIECAAAECBAgQV1111f92AgQIECBAgAABAgQIECD+bxEgQIAAAQIEiP/ZBAgQIECAAAHief3Rd34nJ667jpd90zfl/zrzojPwuF/6Je74q79i67rreKn3eR/u99Rf+iUO7rmHa6655sHv+I7v+FlcddVVV131PwnBVVddddVV/2O82Iu92Gu/0zu902cD/NEXfiH3u/alX5prX+ZlAPiHL/1SXhAB4t9P/OuJf5l4wcTzJ140j3zv92bv7rt53C/9Ev8WAgQIECBAgAABAgQIEFf9VxAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgrvrPJkCAAAECBAgQIECAAPG/mwABAgQIECBAgPifS4AAAQL2776bO/7qr3jd93s//jOY/91+5Qu+AICHvcmbcO1LvzQAB/fcwx984RcC8Dqv8zrv/eIv/uKvzVVXXXXVVf9TEFx11VVXXfU/xju90zt9FsDTfumXuPev/5r7vcqnfioA//ClX8rynnv4lwgQ/wKJF0aA+NcRDyDx/IgXTDx/4nmJZ7vpjd+Yjeuu40++8zt5bgIECBAgQIAAAQLEVS8qAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLEVf9VBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQV70oBAgQIECAAAECBIj/vQQIECBAgAAB4n+OvXvu4XG/+IucuP56XvZN35SrntPePffwK1/wBQC82qd+Kve796//mr/5ru/immuuefCHf/iHfzdXXXXVVVf9T0Fw1VVXXXXV/wjv+I7v+Fkv9mIv9tqH99zDH33RF3G/1/+ar2Hzuuu4+Dd/w12/8iv8awgQ/z7iX0f8y8R/AIn7PfK935u9u+/m8b/0SwgQIEBcJUCAAAECBAgQIECAAAECBAgQIECAAHHVVf8+AgQIECBAgAABAgQIECBAgAABAgSIqwQIECBAgAABAgQIEP+7CBAgQIAAAQLEf607/uqvuOOv/orXfb/344Ux//OZ/3iP+6Vf4o6/+iu2rruOV/uUT0GAgKf90i9xcM89nDlz5kHv+I7v+FlcddVVV131PwHBVVddddVV/+1e7MVe7LXf6Z3e6bMB/ugLv5D7XfvSL821L/MyADz1e76HfyvxAki8KMS/jngmiX8t8fyJ5yXgpjd+Yzauu44/+c7v5P8iAQIECBAgQIAAAQIECBAgQIC46qr/uwQIECBAgAABAgQIECBAgAAB4v8XAQIECBAgQIAA8b+HAAECBAgQIP7j7d1zD4/7xV/kxPXX87Jv+qb8T2D+Z/mVL/gCAB72Jm/CtS/90gAc3HMPf/iFXwjA67zO67z3i73Yi702V1111VVX/XcjuOqqq6666r/dO73TO30WwN9913dx31//NQIEvMqnfioAT/2e7+Hi3/wN/x4CxL+dAPGiEy+ceMHEi+6R7/3eADz+l36J/8kECBAgQIAAAQIECBAgQIC46qqr/rMIECBAgAABAgQIECBAgADxf5cAAQIECBAgQID4n0+AAAECBAgQIP5t7virv2Lv7rt53fd7P/6rmH8b8x/DvOj27rmHX/2CLwDgVT/1U7nfvX/91/zNd30X11xzzYM//MM//Lu46qqrrrrqvxvl+PHjXHXVVVdd9d/nHd/xHT/rdV7ndd778J57+N1P+zTu98qf8ilc+zIvw8W/+Rv+4Uu/lP8oAsS/nXjRiRdOvGDieYnndNObvAk3v/Eb82tf8AWce8pT+K8kQIAAAQIECBAgQIAAcdVVV/1fIUCAAAECBAgQIECAAAHi/w4BAgQIECBAgADxP5sAAQIECBAgXrD1wQHrgwNe/E3flIt33809T34yAOI5iWcTzyQhnpN4NvFs4jmJZxPPSTybeE7i2cRzksT9xHMSz0k8m3hO4jkNBwececQjOP2IR7B13XXc/vu/D8DBPfdw8uEP59qHP/w4wD/8wz/8DlddddVVV/13Ibjqqquuuuq/zYu92Iu99ju90zt9NsAffeEXcr9rXvqleeibvAkAT/ue70H8xxPPJPGvJV50knhhxL+OeLZHvtd7AfD4X/ol/r0ECBAgQIAAAQIECBAgrvrPJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECxFX/mQQIECBAgAABAgQIEP/7CRAgQIAAAQLE/1wCBAgQIEBcccdf/RV7d9/N677f+3E/c9X99u65h1/9gi8A4GFv8iZc+9IvDcDhPffwh1/0RQC8zuu8znu/2Iu92Gtz1VVXXXXVfxeCq6666qqr/tu80zu902cB/N13fRf3/fVfc79X+dRPBeBp3/u9XPybvwFAgPiPJUD824gXnfi3ES/YTW/8xiyuu44/+c7v5IURIECA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BBJI/HcQIECAAAECBAgQIECAuOqqq/4nEiBAgAABAgQIECBAgPhvIoEEEkgggQQSSCCBxH8EAQIECBAgQID4n02AAAECBAgQ/3Z799zD43/xF3nIy74sD3nZl+V/A/Pf4/G/+Ivs3X03m9ddx0u+z/twv6f90i9x71/9FWfOnHnQh3/4h38XV1111VVX/WciuOqqq6666j/Ni73Yi732O73TO302wJ980Rdxv83rruPF3+d9AHjcl30Zz48AAeI/l3gBJP4lAsSLRjyAxHMTz5+AR7zXewHwp9/1XSCBxH8lAQIECBAgQIAAAQIEiKv+JxMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBX/U8lQIAAAQIECBAgQIAA8V9MAgkkkEACCSSQQOLfS4AAAQIECBAg/ucSIECAAAECxL/sT77zOwF4nfd7P8x/HfOCmf8Y5j/O3j338Gtf+IUAPPRN3oTN664D4PCee/ijL/oiAF7sxV7stV/sxV7stbnqqquuuuo/C8FVV1111VX/ad7pnd7pswD+/ru+i/v++q+53yt9yqcAcPev/AoX/+Zv+JcIEM9F4j+KAPFvJ1404oUTz2tx3XWcfOmX5vG/9Evs33MP/1EECBAgQIAAAQIECBBX/XsIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA/N8gQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIC46t9DgAABAgQIECBAgADxX0QCCSSQQAIJJJD49xIgQIAAAQIEiP+ZBAgQIECAeLa9e+7hjr/6K05cfz0PeZmX4T+S+d/LPK87/+qvePwv/iKb113Hq3zKp3C/w3vu4W+/67u45pprHvzhH/7h38VVV1111VX/WQiuuuqqq676T/GO7/iOn/ViL/Zir33fX/81f//d3839HvLGb8w1L/3SADzuy76Mfw0B4j+PAPFvI1404l/n4e/1XgA84Zd+iReFAAECBAgQIECAAHHV8yNAgAABAgQIECBAgAABAgQIECBAgAAB4qr/6wQIECBAgAABAgQIECBAgAABAgQIECBAgLjquQkQIECAAAECBAgQ/8kkkEACCSSQQAIJJP49BAgQIECAAPE/jwABAn7jC76A49ddx8u82Ztx1Qv3J9/5nezdfTfXvszL8BLv8z7c72m/9Evc+1d/xTXXXPPgD//wD/8urrrqqquu+s9AcNVVV1111X+4F3uxF3vtd3qnd/psgL//ru/ifpvXXccrfcqnAPCXH/dx/FsJECCJ/wwCBCDxryFeNAKQeH7Esy2uu44b3/iNefwv/RJ3/tVfIUCAAAECBAgQIP7/EiBAgAABAgQIECBAgAABAgQIEFdd9T+HAAECBAgQIECAAAECBAgQIED8/yVAgAABAgQIECD+k0kggQQSSCCBBBL/VgIECBAgQIAA8d9r7557uOOv/oqHvMzL8OCXeRn+Jeb/H3PF3j338Cff+Z0APOxN3oTN664D4PCee/ijL/oiAF7sxV7stV/sxV7stbnqqquuuuo/GsFVV1111VX/4d7pnd7pswD+/ru+i/v++q+53yt9yqcAcPFv/oaLf/M3/EcQIP5ziH898aIRL5i44uHv9V4APPGXfgnx/4MAAQIECBAgQIAAAQIECBBXXXXVAwkQIECAAAECBAgQIECAAAHi/z4BAgQIECBAgADxn0gCCSSQQAIJJP49BAgQIECAAPFf49e/4As4fv31vMybvRn/m5gXnfmP8fhf+iUe/4u/yOZ11/Eqn/IpCBBweM89/O13fRfXXHPNgz/8wz/8u7jqqquuuuo/GsFVV1111VX/oT78wz/8u17sxV7ste/767/m77/7u7nfQ9/4jbnmpV8agL/8uI/jP4wEgAAB4j+WJMS/jviPceMbvzFP+KVf4s6/+iv+NxIgQIAAAQIECBAgQIAAcdVVV/13EyBAgAABAgQIECBAgPi/SYAAAQIECBAg/pNIIIEEEkgggQQS/1YCBAgQIED8x9q/5x7u/Ku/4iEv8zIcv/56rnrh/uQ7v5O9u+/m2pd5GR76Jm8CgICn/9Ivce9f/RXXXHPNgz/8wz/8u7jqqquuuuo/EsFVV1111VX/YV7sxV7stV/ndV7nvQH+4bu+CwECtq67jlf8lE8B4C8/7uP4DyfxQALEfyzxryNAvHCSeEFe4pM+CYAn/NIv8T+FAAECBAgQIECAAAECxFX/VwkQIECAAAECBAgQIECAAAHiqv+LBAgQIECAAAECBAgQIP5vECBAgAABAgSI/yQSSCCBBBJIIPFvIUCAAAECBIh/mz/5zu/k+PXX8zrv9378ZzD/d+zdcw9/+p3fCcBLvM/7sHnddQAc3nMPf/xFXwTA67zO67z3i73Yi702V1111VVX/UchuOqqq6666j/Mh3/4h38XwN9/13dx31//Nfd7xU/5FAAu/s3fcPFv/ob/KgLEfwAJAAHiX0e8cOL5u/GN35g7/+qvuPOv/or/bAIECBAgQIAAAQLEVf+RBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAPHvI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBIir/qMIECBAgAABAgQIECD+9xIgQIAAAQIEiP8EEkgggQQSSCDxbyFAgAABAgSIF+zOv/or7vyrv+IhL/MyHL/+eh7IvGjMv415wcxzsfmf4PG/9Evc+Vd/xeZ11/Eqn/qp3O/wnnv4u+/6LgA+/MM//Lu46qqrrrrqPwrBVVddddVV/yE+/MM//LuuueaaB9/313/NP3z3d3O/a176pbnmpV8agMd/6Zfyn0biBREgQPzHEP864oWQEM/pxT/pkwD4s+/6Lv49BAgQIECAAAECBIirXhABAgQIECBAgAABAgQIECBAgAABAgQIECBAXPW/kQABAgQIECBAgAABAgQIECBAgAABAgQIECCuekEECBAgQIAAAQLE/04CBAgQIECAAPEfTAIJJJBAAgkk/i0ECBAgQIC44k++8zs5fv31vM77vR//15l/v1//gi8A4JqXfmke+iZvwv2e9ku/xL1/9Vdcc801D/7wD//w7+Kqq6666qr/CARXXXXVVVf9u73Yi73Ya7/O67zOewP8w3d9Fw/0Ol/zNQD85cd9HKt770WA+O8jQPwbSDyQAPGiEy+ceLYb3/iNufOv/oo7/+qveH4ECBAgQIAAAQIEiP/fBAgQIECAAAECBAgQIECAAAECxFVX/dcRIECAAAECBAgQIECAAAECBAgQ/38JECBAgAABAgQIEP+7CBAgQIAAAeI/mAQSSCCBBBL/FgLu+qu/4s6/+ise8jIvw/9G5r/W3j338Otf8AUAvMT7vA+b110HwOE99/DHX/RFALzO67zOe7/Yi73Ya3PVVVddddW/F8FVV1111VX/bh/+4R/+XQB//13fxX1//dfc73W+5msAuPg3f8Pu3/wNDyRAgPgPJPGi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d30XD/SKn/IpADz9e7+X3b/5G14gif8KAiQh/uOJfx3xgt3wRm/E4rrr+M0v/EL+txMgQIAAAQIECBAgQIC46qqr/rcQIECAAAECBAgQIECA+L9FgAABAgQIECD+ZxMgQIAAAQLEf439e+7hT7/zOzl+/fW89Ju+Kfcz/3OY/xnMs+3fcw9/+p3fCcArf8qnIEDA0T338Mdf9EUAvM7rvM57v9iLvdhrc9VVV1111YuK4KqrrrrqqhfZh3/4h38XwD9813dx9q//GgECXuy935vN667j4t/8DU//vu/jfxoB4j+WJMSLTjx/D32v9wLgib/0S/xPJECAAAECBAgQIECAuOq/mwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSIq/67CBAgQIAAAQIECBAg/vcTIECAAAECBIj/uQQIECBAgPiPd+df/RX799zDa7/v+3LVi+7xv/RL3PlXf8XmddfxSp/yKdzv6J57+JMv+iIAPvzDP/y7uOqqq6666kVFcNVVV1111Yvkcz/3c3/rmmuuefDZv/5rHvfd34244sxLvzQv9j7vA8Ct3/d9CBD/Aon/MhL3EyBA/McRLzrxnG54ozdicd11/OYXfiH/1QQIECBAgAABAgSIq/4tBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAuOr5ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgABx1b+WAAECBAgQIECAAPG/lwABAgQIECD+ZxIgQIAAAQLEv83+Pffwp9/5nRy//noe/LIvy38H81xs/qfbv+cefuMLvxCAa176pbnmpV+a+93313/NfX/911xzzTUP/vAP//Dv4qqrrrrqqhcFwVVXXXXVVf+iF3uxF3vtF3uxF3ttgH/4ru/igV7sfd4HgKd/7/ey+zd/w/0ECBAvgMR/JwHi30kCQLzoxLPd8EZvBMATf+mX+I8kQIAAAQIECBAgrnpuAgQIECBAgAABAgQIECBAgAABAgSIq/6/EyBAgAABAgQIECBAgAABAgQIECBAXPVAAgQIECBAgAAB4n8fAQIECBAgQID4n0eAAAECBIh/2Z1/9VcAvPWnfRr/EvOCmRfM/Ncz/7n277mHP/3O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/7MYMGDA/O9mwIABAwYMmKv+uxkwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwV/1PYMCAAQMGzP9uBgwYMP9zGDBgwPz3MGDA/NcyYP5rGDBgntP1L/3SANx33323ctVVV1111X8VKlddddVVV/2X+Yd/+IffAbjupV+afwvzbOK/lnk28d/DPCfxP4d5XuJ/P/OCiauuuupfw/zfZf7nMv8zmP8e5r+OedGdPXv2GVx11VVXXfVfhcpVV1111VX/Zc6ePXsrwNb11/PvZZ5N/Ncyzyb++5jnJP5nMc9J/N9iXjBx1VX//5j/H8z/bOZ/BvPfx/zXMi+6617mZQD4h3/4h9/mqquuuuqq/ypUrrrqqquu+i9z33333Qqwdd11/Ecyzyb+a5nnJP77mOck/mcxz0v832ReOHHVVf87mf9fzP8O5n8G89/H/Ncy/zZb110HwH333XcrV1111VVX/VehctVVV1111X+pf/iHf/jtF3uxF3vth7/Jm3DPX/0V/5nEfy/xP4u46n8TcdVV/7XMVf9bmP85zH8f81/L/Ptc99IvDcA//MM//DZXXXXVVVf9V6Jy1VVXXXXVf4tX/5RP4aqrrrrqqquuuur/k/vuu+/W++6771auuuqqq676r4Qe9KAHcdVVV1111X+t13md13nvd3zHd/wsrrrqqquuuuqqq/4f+a3f+q3v/tEf/dHP4aqrrrrqqv9K6EEPehBXXXXVVVddddVVV1111VVXXXXVVVddddX/SVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r+IfAd5TarEg9QL9AAAAAElFTkSuQmCC) @@ -188,9 +188,9 @@ example = extrude(exampleSketch, length = 1) sweepPath = startSketchOn(XZ) |> startProfileAt([0.05, 0.05], %) |> line(end = [0, 7]) - |> tangentialArc({ offset = 90, radius = 5 }, %) + |> tangentialArc(angle = 90, radius = 5) |> line(end = [-3, 0]) - |> tangentialArc({ offset = -90, radius = 5 }, %) + |> tangentialArc(angle = -90, radius = 5) |> line(end = [0, 7]) pipeHole = startSketchOn(XY) @@ -203,6 +203,6 @@ sweepSketch = startSketchOn(XY) |> appearance(color = "#ff0000", metalness = 50, roughness = 50) ``` -![Rendered example of appearance 8](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEmGUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVS+Sa6655sE805kzZx4McM011zyYZzpz5syDeC7XXHPNg3k+rrnmmgfzAtx333238gLcd999t/JMZ8+efQbPdN99993KM509e/bW++6771auuuqqq6666qqrrrrqqqsAPehBD+Kqq6666qqr/r+55pprHgxw5syZB19zzTUPPnPmzIN4pmuuuebB11xzzYMBzpw58+BrrrnmwbyIbv+rv+J+e/fcw8511/H87N1zDy/IznXXAbB3zz08t53rruOBbn6Zl+GF+Yd/+IffPnPmzIPPnj1763333XcrwD/8wz/8DsB9991369mzZ2+97777buWqq6666qqrrrrqqquu+r8KPehBD+Kqq6666qqr/q+55pprHnzmzJkHX3PNNQ8GOHPmzINe/MVf/LXPnDnz4GuuuebBPB+3/9VfsXfPPQDs3X03O9dfz97dd3O/m17mZdi75x727r6bneuvZ+e667jfseuvB2Dnuuv499q75x52rruOvXvuYee66wDYu+ceHmjv7rvZu+ce7nf7X/0V99u75x727r6bneuvZ+e66wDYue46jl1/PQA7113HTS/zMtzvvvvuuxXgH/7hH34b4B/+4R9+5x/+4R9++7777ruVq6666qqrrrrqqquuuup/O/SgBz2Iq6666qqrrvrf6pprrnnwmTNnHvxiL/Zir3XNNdc8+Jprrnnwi73Yi702D3D7X/0Ve/fcw97ddwNw+1//Nceuu45L99zDseuuY+e66wC4+WVeBoCbXuZleG5799wDwN7dd3PTy7wML6p2/jwA5cSJ3Vwu7/Vy+ShzhW0ADGBjwFxhm8W11/KiuOOv/gqAneuvZ+e667jf3j33sHf33ezdcw93/NVfsXfPPdzxV3/F/Xauuw6AneuvZ+e667jpZV6Gneuu46aXeRkA7rvvvlv/4R/+4bf/4R/+4Xd+67d+67u56qqrrrrqqquuuuqqq/43Qg960IO46qqrrrrqqv8trrnmmge/9mu/9nu9+Iu/+Gu/2Iu92GvzTHv33MMdf/VXXLr7bu74678G4I6/+isAdq67jse+yZsAcPPLvAw3vczLcL+9e+4BYOe663huy3vvRcDqvvtY33cf6/vuQxICxnPnaOfOERIlAp8/T0hw4QIlghJBSBz70A/949nLvuwr8wC3v/d7M2UyZTK2xpTJ2BpTJmMmUyYtk8mmZdJsZtdcQ8vENovrriNtNq69FgOb117L5nXXYWDruuvYuu46tq+7jvs97pd+iZte5mXYue469u65hzv+6q+446/+isf90i/xguxcdx03vczLcNPLvAyPfZM34b777rv1t37rt777R3/0Rz+Hq6666qqrrrrqqquuuup/E/SgBz2Iq6666qqrrvqf6pprrnnwi73Yi73267zO67zXi73Yi702wN499/APv/iLANzx13/NHX/1VzzQznXX8dg3eRNufpmX4aaXeRkA9u65h7277+aml3kZAI7uuQeAc3/zNyzvvRdJXPjbv0XA7t/9HZIIiZAIiZAIiYigSJQIikSNoERQS6FGUCMoEZQIQuKab/92ntv6CU/gri/8QqZMxtaYMhlbY8pkzGTKpGUy2bRMmk2zyUyaTQJpkza2SSBt0iaBtElg89pr2bz+eravu44bXvql2b7+em55mZfhcb/0Szz2Td6EO/7qr/i1L/oi9u65hxdm57rruOllXoZXep/34fbz53/7Mz/zM1+Hq6666qqrrrrqqquuuup/CypXXXXVVVdd9T/QNddc8+DXfu3Xfq93eqd3+myAP/7O7+THv+VbuOOv/ornJq646WVehld+n/fhppd5GfbuuYed664D4PCeezj/13/N4T338OTv/V7O/+3fEoAkApBESEgiAEmIZzNgnskGCWyQMM9kA2DAgAHzLxPPJAEgQAAS2DwHCWxeVPv33MOle+6hAX/3i7/IBGxedx03vszLcP1LvzQAr/w+78OvfdEX8cLs33MPj/+lX2Lv7rt5g0/91Nd+sRd7sdf+h3/4h9/mqquuuuqqq6666qqrrvrfgMpVV1111VVX/Q9zzTXXPPibvumbnv5Hv/7rv/2rX/iFPO6XfokHEs/rppd5Gd7ua7+WP/7O7+TY9dfzlF/6JY7uuYen/cqvEEBIBBASIWFA/MsMiCvMFQYMmGczYJtnsUHi+WkXL94ruJYHEM9LPB8S2AAIMC+EBDYPdOmeexj/6q94yXvu4aEv8zL8yXd9Fy+KG1/6pXmDT/1Udq67jrNnz97KVVddddVVV1111VVXXfW/BZWrrrrqqquu+h/mSz7rs57+uF/6Jf70i77otQEk8S+58WVeBoCQ+MF3fEeKRAGKxPOwQeJ52CBxPwPiX2aezTbYWALg3Ed/9IXTX/3VJ3mA89/yLddyP4lnkXgeEtiIK8QVAsyLZue669i87jpufJmX4cXf5E04dv317N1zDz/5kR/JnX/914jnb+e663j0m7wJj3mTN2Hnuuu435kzZx5833333cpVV1111VVXXXXVVVdd9b8Blauuuuqqq676H+Saa6558C/9zu989pu81mt99k0v/dLc+dd/zb9k57rr2L/nHgAe/SZvQgD3/vVfc99f/zX/EgMCDAgwIF4wA9ggAWCuMGCuMFfYJg8OTt73AR/ANd/2bQ0od73v+3I/cYW4QgASSGADIEA8JwHm+du+7jo2r72W617mZdi67joe/SZvwv327rmHx//SL/GEX/ol9u65h+e2c9113PgyL8P2ddfxmDd5E3auu469e+5h57rr2L/nHv7ou76LN/yUT+Gqq6666qqrrrrqqquu+l+FylVXXXXVVVf9D3LffffdCvD4X/ol3u5rv5a9e+7h8b/0S9zxV3/FnX/91zw/e/fcw94v/RJ3/tVf8Zg3eRNufOmX5uXf5304uOceDu65h8N77uHs3/wNR/fcw/Leezm65x7Ei8jmWSTuZ8AANrbBBsA8JwOyaefOlXL6NOX0adrZs/xLxPPauPZa0mZx7bVsXHstG9dei22ueemXZuu669i67jrut3fPPTzhl36JP/2u7+LOv/or7vzrv+aBdq67jhtf5mXYue46bnzpl+bGl3kZAPbuuYf9u+9m57rrOLjnHu7967/mL//qr/iHX/olRuCV3ud9uOaaax78D//wD1x11VVXXXXVVVddddVV/ytQueqqq6666qr/YX77t3/7e17pxhs/+/Rf/RUPe5mX4TFv8ia80vu8D3v33MOdf/VX3PnXf83e3Xezf8897N1zD/fbv+ce/vS7vguAneuu48aXeRm2r7uOneuu45U/6ZN4oKN77gHg6N57Wd57LwDLe+9lde+9SGJ1330ICEAS6/vuo0QgifHsWQCwscT9bIONAdsgUU6dQkA5fRqA2aMehU6dIluj2WycOkVmUk6fJm3Spr/mGtJmds01LK65hsW11/L83PlXf8XePfdw21/9FQB3/tVfcedf/zUA29ddB8CNL/My3PgyL8ONL/My3PjSL82NL/My3G/vnnvYv/tubnyZlwHg8J57WN5zD+f/5m/4++/5Hu76q78igQaIq6666qqrrrrqqquuuup/KfSgBz2Iq6666qqrrvqfZvvee5/+iGuvffCjX/ZledjLvAwv/aZvCsDjf+mX2LnuOm58mZcBYO+eewC486/+CoA7//qvAdi/+2727rmH/Xvu4YG2r7uOneuuY/v66wG48aVfGoCd664D4MaXeRn+u9z5V38FwP4997B3zz3cb/+ee9i/+262r7+eO//qr9i57jq2r7+e7euu4343vvRLA7Bz/fVsX3cd99u/5x4A7vyrv+LRb/Im3O/onns4vOcezv7N33B4zz087Zd/mQRsk0ACzSaBBkw2I/A2X/M1/NGTnvTZP/qjP/o5XHXVVVddddVVV1111VX/G6AHPehBXHXVVVddddX/NLNz537runF87YVED3QSJ6+7jge/zMtwy8u+LAIe8yZvwnO786/+ihtf5mV4oL177uF++3ffzd4993C//XvuAWDvnnu4n4D9u+/mftvXX8/99u++G4Dt66/nhdm+7joA9u+5hwfavu469u+5B4Dt667jgXauuw6A7euuA2Dn+usB2L7uOp7b/j33ALB3993c+DIvw3Nb3nsvAOf/5m84uuceAM79zd9wdM89HNxzDwYMpI2BtDGQNgkkkDYNaMBkMwJv8zVfwx896Umf/aM/+qOfw1VXXXXVVVddddVVV131vwGVq6666qqrrvofqAEGDBgwcOmee/j7X/olHv/Lv0wBfuMLv5Bj111HSNz4Mi+DgBte5mV4yi//MlvXXcfWddexdd117Fx3Hffbue46jt9zD5vXXcf99u+5B4Dt667jv9r+Pfewfd11vCDDffdxv/V99wGwuvdeVvfdx+ree7HN0x/3OFb33svy3ns5uuceju69F9sYSBvbGLCN+fe75pprHsxVV1111VVXXXXVVVdd9b8Flauuuuqqq676H6j1/W/nOL62eT5skADYv+ceQuJJv/RLBPDUX/5lBAQgiQC2rr+eACSxde21bF1/PQIEbF53HZLYuO46Lv3d3yEAiY1rrwVAgCQABMyvuQYkAMQVApAAEFfk+fMASOKB2vnzYGOb6dw5sNkD0ma87z7SZn32LJnJ+t57aTar++4jM2k2aWObtEkb26SNAdukzQMJMM9FApt/DQEC9u65B+Zzrrrqqquuuuqqq6666qr/NahcddVVV1111f9AA2CuMGDAPJt5/gyI53R4zz0ICImje+7h3N/+LZIIICQkERIhEUBIRARFIiSKRImgSJQIagRFokRQIygR1AhKBBFBkYgIQkIS4tkM2CYzSZu0aZm0TFommUmzaZm0TJrN/QQIMM9FApsXSAKb/yjXXHPNg7nqqquuuuqqq6666qqr/rcguOqqq6666qr/gbKUZyRgnpMB8/yZZzNXmBfOPIDNs9iY58829zNXGDCAzWU2l9k8B5sXRAASzyIh/mXi2cQLIQEgnk1cIZ5J4oEEiGe7dPfdXHXVVVddddVVV1111VX/qxBcddVVV1111f9EpdxqwIAB87wMGDBg/pVsnoONAQPmeRkwz2aezTyTDYC5wjbPl81/BPF8SDw38a8nnpcAJK666qqrrrrqqquuuuqq/1UIrrrqqquuuup/oFLrrQkYMICNedGY52SuMFeYK8yzmedkABsDBrABsI25wjyTjW0MmCvMFQbMv0z8CyT+q4gXbO+eezhz5syDueqqq6666qqrrrrqqqv+tyC46qqrrrrqqv+h0sZcYa4wYMD8y8yLyOZfywA2tjHPyTbPwcaA+a8h/mOIZxNXiKuuuuqqq6666qqrrrrqfxmCq6666qqrrvofqNZ6awK2MVeY52SeyeZ+tnlhzBXm2czzZwAbAAMGzDPZmGczV9gGwIB5LjYA5j+QxItCPCfx/IkHkHggAXt3381VV1111VVXXXXVVVdd9b8K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Zp7JBhts7mfAPJPNv8jmXyTxohDPJPHvJa666qqrrrrqqquuuuqq/8EIrrrqqquuuup/sVrrrQYMGDBXGDBXmGczz2auMFeYZzPPn3kAG2zuZxtsAMyzmedknsnmfxoBSDw3AQLEFQIEiGc7c+bMg7nqqquuuuqqq6666qqr/qchuOqqq6666qr/5cZSbjVgrjDPy4D5N7B5fgwYMGCezQA2AObZDBgwV5hnM89mHsAGwPznEM8mnpN4NvHC7d9zD1ddddVVV1111VVXXXXV/1gEV1111VVXXfW/3FjKrQYMmCvMFQaweW7mudgAmGczV5grzBUGsHkg82wGsAEwL4CNAXOFAfNMNv+hJACQAEDieUg8D4nnR1x11VVXXXXVVVddddVV/4sQXHXVVVddddX/chNgns1cYZ4/82zmCvPvZ57NADbYGDBXGDAPYPPczH888fyJF068aC7dcw/XXHPNg7nqqquuuuqqq6666qqr/qchuOqqq6666qr/5VoptxowYJ6XeTbzLzPPyzYABrB5QcyzmWeywcYANtiYZzMvmHk2828jrhAgHkDi30uAuOqqq6666qqrrrrqqqv+ByO46qqrrrrqqv/lplJuTcBcYcBcYa4wYJ6TucJcYZ6Xef4MGDBgwDybeTYD5plsHsiAAWyemwHz7yQhnpd4/sQV4rlIPD/imST27r6bM2fOPIirrrrqqquuuuqqq6666n8agquuuuqqq676X66V8gwDBsyzmX8787zMC2eezTwnAwYMmGeyuZ8BA7Z5kUm8MOJFIx5A4n7iBRPPJq666qqrrrrqqquuuuqq/8EIrrrqqquuuup/OZdyawLYmCvMs5nnYmOeyeaBzPMyD2Bjng8bbGxzPwPm+TPPxQab/yriASReFJIQDyBx1VVXXXXVVVddddVVV/2PR3DVVVddddVV/8sZSMBcYQAbAHOFeTbzbOYK8wA2ALZ5YQzYxjYPZBts7meekwFszBXmhbD5V5MQL4DEv4V4AIn7iSv27rmHa6655sFcddVVV1111VVXXXXVVf/TEFx11VVXXXXV/3K11lttY8A8m3lOBsy/zDwXG3OFef4MmGczgA02AAYMGMDmfrZ5bgaw+Q8l8RwkxLOJK8QVkrifeE7i+bvmmmsezFVXXXXVVVddddVVV131Pw3BVVddddVVV/0vV2u91YC5woB5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wKW77+bMmTMP4qqrrrrqqquuuuqqq676n4Lgqquuuuqqq/6PyVJuNWAbAHOFeQCb+5lnMw9g88LYBsA8LwO2sY0BAwYMmGeyATBXmOfP/OsJQOKFEYDEs0iIF06AeACJq6666qqrrrrqqquuuup/NIKrrrrqqquu+j9mZWOuMM/LvGjMs5lnM8+fAQPmRWOezTybecHMv48kHki8EBIPJJ5NPCdJ3O+aa655MFddddVVV1111VVXXXXV/xQEV1111VVXXfV/TJ3NficBc4UBc4W5woAB82zmCvOiM1eY52LzwtgGwAA2ANjcz1xhnsnmP5t4NvGcxPMSz2vvnnu46qqrrrrqqquuuuqqq/5HIbjqqquuuuqq/2MmwIAB82zmX888m3k28wA2z8HmgQwYMGDANg9kns08m3k283zY/IskxBXi+ROAxP0EIHE/AUg8i8TzI0DANddc82Cuuuqqq6666qqrrrrqqv8pCK666qqrrrrq/5ha6622MWCel3le5gpzhXnRmedkwIAB81xs7meezYD51zP/DhL/EvEvE8+2d889XHXVVVddddVVV1111VX/oxBcddVVV1111f9BDTBXGDAvmAFsnsXmgQxgA2Cb+5nnZMA2z5cNNvczV9jmOdiYF878K0k8BwnxnMQVApAAEP8ycYW46qqrrrrqqquuuuqqq/6HIrjqqquuuuqq/2NqrbfyTObZDJgrDBgwL5h5/gxg80DmhbABMGDAPB82z2LzQLb5jySuECAAiRdK4kUhrjhz5syDueqqq6666qqrrrrqqqv+pyC46qqrrrrqqv+DxlJuNVcYMP8yc4V5Xub5Mw9g80AGbGPAPC/bABgwYMBcYcCAbe5nAJsXlXg2SfxLBCABIJ6XAAECxPO3f889XHXVVVddddVVV1111VX/oxBcddVVV1111f9BYym3GjAPYANgnpd5/mxzP/Ns5plsHsiAAfPC2eaFssHmBTH/NuJ5iRdCAkA8k8T9JHHVVVddddVVV1111VVX/Y9HcNVVV1111VX/BzXAgAFzhQHzADYviHnRmSvMc7F5bgbMsxnABgAbAPOfROJZJC6TeBYJAPGcxAsnnm3vnnu45pprHsxVV1111VVXXXXVVVdd9T8FwVVXXXXVVVf9HzSVcqsBbADMczJgrjDPZp6XeTbzbOYBbJ6DDYABAwbMM9kAmCvM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7icJSQgQIEASkhAgQMBweMhdf/3X7N19N6cf8QjOPOIRvNibvAkv8aZvysbWFj0cz9tvf+lrVqv3Pr5avXc3ji89wKVW661cddVVV1111VVXXXXV/w2U48ePc9VVV1111VVXPaeI2B2n6cGzaXrpACQRgCQECBCAhAABkhBXCEBCABICBCAhQBIAkgCQhCQAJCEJAElIQhICBAgQgAQSkpCEJMQVkkBCgCTEFZK4nyQkASAJJACQeBYJ8UwS95OEACSeRQIACQAkBEhCgCQAkJCEAEkIECAJACSQuExCEveThCSeRUISAgQIkIQkAhAg4PxTnsLf/tiPsX/PPZx6xCPYue46bn6Zl+HF3+RNeIk3fVM2trbo4Ti33/7SZ9br9z6+Wr13N44vPcClVuutXHXVVVddddVVV1111f9e6EEPehBXXXXVVVddddXzmqbpwSfuu+/pc6ADZhIdUCUKUIAiEUABAggJAQGEhIAAJBGAJAIICQEhEYAkApBEACEhiZAIICRCIiQkERIBhERIhERIhIQkQiIASQiQhABJAIhnM4CNAQO2MWAb2xiwjYG0sY0B29gmAdsYsI0B29jGgG0MGLCNAdsYsI0BA7YxYMA2BgzYxlxhG3OFAduYKwzYxoC5woBtDBgwYGDruut41Bu/Ma/4vu/LA+3dcw//8Iu/yN/90i+xe/fdJLAs5dZLff/be133Oyvp1vV8/ttcddVVV1111VVXXXXV/x7oQQ96EFddddVVV1111Qtw8eJ3nVgu33sGdBI90EkUoAIBFIkAAgiJAAIIQBIBCAgJASERgCQCCAkBISGJAEIiAEmEREgICImQCImQCImQCIkAQiIkJBESkghAEgIkASCelwHbANjGgG0SsI1tDNgmbQzYxoBtbGMgbQzYxoBtDNjGgG0MGLCNAdsYMGAbA7YxVxiwjbnCNuYKA7YxVxgwYBsAAwYM2AbAgIGt665j67rrePSbvAmPfpM34X5799zD3t138w+/9Ev83S/9ErZJwMCylFtXpdx6GHHrfq2/M5Ry6zCf/zZXXXXVVVddddVVV131PxN60IMexFVXXXXVVVdd9fxN0/Tg4/fd9/QF0AG9RAdUiQoUICQKEEAAIRFAAJIIQEBICAggJAKQRACSCIkAJBGAJEIigJCQREiERAAhERIhERIhERKSCIkAQkISkghAEgDi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G5+zv7Hx3Vx11VVXXXXVVVf910IPetCDuOqqq6666qqr/m1Wh4fvfd2lS9/VAx1QJTqgAkWiAAUIiQIEEIAkAgggJAIICQEBhISAkBAQEgJCQkBICAgJSQQgiZAIiQAkERIhERIhERIhERIhERIhERIhEYAkQkISAiQhrpDEc7AxYAAbAwZsY8A2BmxjwDYGsDFgGwO2MWAAGwMGbANgrrCNucI2AAZsA2DANgAGbANgwDYABgxgY66wjbnCADbmCgPYAJgrzDPZmOdknovNA5l/G/F/l3nhzPOyzQOZZzOAjXk2c4VtAMwVBrAxVxgwV9jGXGHAXGEbAwYMGDCwde21bF93HTe+zMtg4B9+6ZfYvece0iaBBixLufW++fy7z21tfQ5XXXXVVVddddVV/zXQgx70IK666qqrrrrqqn+72blzv7UxDK89AypQJTqgShSgAAUIiQACCIkAAgiJAAKQRACSCCAASQQgCQEhISAkJBFASEgiAEmEREgEEBIhERIhERIhERIhERIhERKSCIkAJCGJkBBXSAJAPJu5wjYABmxjwDYGbANgGwO2MWAbAwawMWDANgAGbANgrrCNucI2AAawMWCusI25wjbmCtuYK2wDYMAANuYK2wCYKwxgY57NPJMNgHlO5rnY/KeR+F/L5oHM82cewMY8J3OFbe5nrjCAjbnCXGEbAHOFAdsAGDBX2AbAgAEDtgEwYMCAAQNb117L9vXXs33ddRj4+1/6JRJImwSOSnnGbtf91p2z2fcwn/82V1111VVXXXXVVf950IMe9CCuuuqqq6666qp/u2maHnztffc9XUAHVIkOqECVKEABQiKAAggoEgEEEBICAggJASEhICQEBCCJACQREgJCQkBISCKAkAgJSYRESAQQEiEREiEREiEREiEREiEREpIICQGSECAJ8UwSz2IDYK6wjQHbANjGgG0MGLCNAdsA2MaAucI25grbAJgrbANgrrCNucI2AAawMWCusI25wjbmCtuYKwxgY66wDYC5wgA2AObZDGBzP3PVv4Z5AJsHMs/JPJMNgLnCPJONucJcYQAbc4UBbMwVBrAxYK4wYBsAc4UB25grDBiwjQFzRQIGbLN13XXc+DIvw6V77sHAbX/1V6RNA5C4az7/7nOz2fesZ7Pf5qqrrrrqqquuuuo/HnrQgx7EVVddddVVV13177M6PHzvay9d+q4Z0AFFogMqUCUKEECRCCCAAEIigABCIoCQEBCAJAKQRACSCEASAkJCQEgEIImQkEQAIRESkgiJkAggJEIiJEIiJEIiJEIiJEJCEiEREgIkIQAJ8fwZwMaAbQAM2MaAbQzYBsA2BgxgY8CAbe5nrrANgLnCNgAGsDFXGLANgLnCNuYK25grbANgwDYA5grbAJgrbANgrjCADYB5NvNMNg9k/u3E/13mBTOAzf3Ms5lnsjFXmGeyMVcYwMaAucI2AOYK25grDGBjwFxhwDYABgxgY8CAAXOFbQwYMGDANglsX3cdN77My5DA3//SL5E2DUjgsJRn3LGx8dkHGxvfzVVXXXXVVVddddV/HPSgBz2Iq6666qqrrrrq308XL37X8eXyvXugA4pEB1SgSBSgACERQABFIoAAQiIAASERgICQEBASAkJCgCQCkEQAkggJASEREgJCIiRCIiQkERIhERJFIiRCIiQCCImQkERIhIQkBEhCEgLEM0k8i425wgA2BmxjABsDtjFgwDYABmxjnsnGXGGusM39zBW2ATBX2AbAXGEbAAO2ATCAjQEDtgEwV9gGwFxhG/NstgEwz2YAm/uZf5l5TuL/J/NMNg9knpMBbADMs9kGwIABbMwVBrAxVxiwDYC5wjbmCgO2ATBgGwBzhQHbmCsM2MZcYcCAbQwYMGDANga2rruOG1/mZdi67jpu/+u/5hl/+Zc0oAFHpdx622LxOUebm9/NVVddddVVV1111b8fetCDHsRVV1111VVXXfXvN03Tg7fPnfutjcwH90CVKEAHVIkCFCCAIhFAAEUigAAkEUAAkgggJAQICAkBISEgJASEhICQkEQAkgiJkBAQEiEREiEREiEREiEREiEREiEREiEREgJCQhIhIUASApAQz8s8k40B25grbGPANgAGbGOusI15NtsAmAewMVeYZ7IxV5grbANgrrANgAHbABiwDYC5wjbmCgPYmCsMYANgrjCADYB5Trb5H0fiP53N85B4DjbPzTwnA9gAmGezDYC5wgA25grbABgwgI0BA9gYMICNAXOFbcwVtjFXGLANgAEDtgEwYAAbAwYMGLCNAQMGDNjGwNZ113Hjy7wMN77My3Dpnnv4u1/4BS7ecw8TcFjKrU/f2nqfYT7/ba666qqrrrrqqqv+7dCDHvQgrrrqqquuuuqq/xir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gCQAkABA4n62eWHMFW0cueqqq6666qqr/lUIrrrqqquuuuqqq6666qr/NMEVAsR/DPMfTzyTxANJ4oHEFQIESEKAJCQBIAkBAiTxQALEv91hxK1cddVVV1111VX/GgRXXXXVVVddddVVV1111X+aAMR/D/MfQ1whrhCAxLNIAAiQhAAkJAEgCSTEi8DmBbJZ1XorV1111VVXXXXVvwbBVVddddVVV1111VVXXfWfJlp7MA8gQPzbmX8DiX8L8UwS4gEkBEhCgAABSAhAQlwhrhD/DjYABpa13spVV1111VVXXfWvQXDVVVddddVVV1111VVX/acRIP5zmf8Y4tkEIPEsEkhI4oEkIUASApAQIAlJIHHVVVddddVVV/23Irjqqquuuuqqq6666qqr/tOU1h4MIP5tzLOZ58Pmgcy/TLxgAsSziWcTVwiQhHgmCQBJCEDigcQzSUji3+oo4lauuuqqq6666qp/LYKrrrrqqquuuuqqq6666r+WxL+W+e8jQFwhAAkASQgQIAkAAQIkIUAAEpIQzyZA/OscSLdy1VVXXXXVVVf9axFcddVVV1111VVXXXXVVf9pamsPFs+feNGYfz1zhXkuEs8iIV4AicsknpsA8UwSSABIAglJACCBhHhOApD41zqIuJWrrrrqqquuuupfi8pVV1111VVXXXXVVVdd9Z8meDbxvMT/XOKZJAAEIHGZhCQECJCEAHGFAHGF+Y9xKN3KVVddddVVV131r0Vw1VVXXXXVVVddddVVV/2nSUAS4j+H+U8gcT8BAiSBhABJiCskIUAAEkhIAgkkACQhHkDifuIBbF4Q2xxGPIOrrrrqqquuuupfi+Cqq6666qqrrrrqqquu+k8xTdODxfMn/uOZfxvxvMTzEs8mQDyTBBICxBUCBEjiMglJiH+7No5cddVVV1111VX/alSuuuqqq6666qqrrrrqqv804n8G8QJIPDfxTBLPTRICkEBCEgIESEISkpDEA4l/JRtsHugw4lauuuqqq6666qp/LSpXXXXVVVddddVVV1111X+KaZoeDCCeTfzPJJ5J4n7i2cRzEiCukIQk7ieukMT9bHOZxIvCPK9lrbdy1VVXXXXVVVf9axFcddVVV1111VVXXXXVVf9pxH89c4V5wcQDSABIQjwnSUgCCUkIkAQSAsSzSUISSEhCPICEuEI8J/FC2NxvWeutXHXVVVddddVV/1oEV1111VVXXXXVVVddddV/imztweIKAeI/lnkBbP7VJJ6DxAsjAAlJSEISAgQIEICEAAECkBBXiBfCBsBcYUASV1111VVXXXXVvwnBVVddddVVV1111VVXXfWfQvzXMf+xxHMSIEAS4gpxhQABSCAhCSQEIIHEv5W54kC6lauuuuqqq6666t+C4Kqrrrrqqquuuuqqq676T1EBAeI5if8dxBXimSQAkJAEEpJAAgkB4goBSAgQIEC8cOYFsLkn4re56qqrrrrqqqv+LahcddVVV1111VVXXXXVVf8pcpoexP9C4pkkxBXiCgHiCgECBAiQhCQkgYQAS1wmcZnEVVddddVVV131X4rgqquuuuqqq6666qqrrvpP0UmI/1rmRSABIF4AiWeRQAIJAUggIUASSEhCEpdJCBCAhADxTBICJAEgnj/zvA6kW7nqqquuuuqqq/4tCK666qqrrrrqqquuuuqq/xRq7cH8JzEvnHle4l8mnpd4NgECJAEgrhAgCQFISEIAEgACxIvA5vk5jHgGV1111VVXXXXVvwXBVVddddVVV1111VVXXfWfIgABAsT/TOL5EyBAXCFAEgDiCgGSkAQSAiQhrhAgAAkk/j3aNHHVVVddddVVV/2bEFx11VVXXXXVVVddddVV/ynEfw3zIpB4QQQIEIDEZRLPjySQkIQkAAQIkIQASUgCCQDx73cg3cpVV1111VVXXfVvQXDVVVddddVVV1111VVX/acorT2YF4H4n0U8JwGSEFeIZxMgCUlcJnE/AZIAEM9JEi8qA8tab+Wqq6666qqrrvq3ILjqqquuuuqqq6666qqr/tMIEFeI/xjm3078K0hIAgkAJMQVAiQhiftJQoAkJIEEgCQAJCH+FWzut6z1Vq666qqrrrrqqn8LKlddddVVV1111VVXXXXVf4o6TQ/muYj/PAbEi0jieUjcT4C4QlwhAAlJSEJcIQlJSEISAsSzGUDiMonnYYPNc7C5zCa46qqrrrrqqqv+HahcddVVV1111VVXXXXVVf85JMR/HwPiX0cAEs9NEgDiASQkIUA8gAQSz2Ijnk386+xLt3LVVVddddVVV/1bEVx11VVXXXXVVVddddVV/ylqaw/mv4EBbF4Q8XxIPD/i2cQVAiQhQAASkpCEJCQhQIAASbxIbACweaC7I36bq6666qqrrrrq34rKVVddddVVV1111VVXXfWfQjyb+M9hQPwbSQAgASCuEFeIKyQhAAlJSEKAJCQhAAkBkhCAxLPYAIirrrrqqquuuuq/AcFVV1111VVXXXXVVVdd9Z/CgADxH8c2/xHEM0k8P5JAAon7iQeQuExCEgIkAYCEAAECBEgCQPzrGDiIuJWrrrrqqquuuurfiuCqq6666qqrrrrqqquu+g83TdODxf8e4pkkHkhcIQkAAZIQIAkBkpAEgCQESAKJ5yDxb3EgPYOrrrrqqquuuurfiuCqq6666qqrrrrqqquu+n9JgADxbOJ5iSskgQSAAAGSABAgCQFIAAiQBBIvkM0DmefVpomrrrrqqquuuurfjOCqq6666qqrrrrqqquu+g83TdODAcR/HPOCmedkng+JF4UAAeKZJMQVAiSBhCQAJIGEJJAQIAkkAAQIEM+feQCb53au636bq6666qqrrrrq34rgqquuuuqqq6666qqrrvpPIV4w8e9nnsnmfuY/gMT9JCEACQGSECCukIQAcYUASQAIQOIyiWeReFGYq6666qqrrrrqPwDBVVddddVVV1111VVXXfUfLlt7sAAkxBXiCvF8SACY/z6SeBYJJJ6DxP0kIQkBkpCEJCQBIAkAAUj8m9hgc1TrrVx11VVXXXXVVf9WBFddddVVV1111VVXXXXVfzgB4tnE/z4CBAgQIECAJAAESAJAEgKQkASAJADEA0i8SGwAJHHVVVddddVVV/27EFx11VVXXXXVVVddddVV/+EqV4j/GOY/l7hCgADxABLPIiFAEkgASAJAEgKQkASAJAAEICFAvOjuivgdrrrqqquuuuqqfw+Cq6666qqrrrrqqquuuuo/XE7Tg/jfROKFkYQkBCAhQIAkJCEJJCQhrpAEABIA4oWweRab+x1It3LVVVddddVVV/17EFx11VVXXXXVVVddddVV/+E6CfFfw7xgkhAgnkniuYkHkLifAEmIZ5OEACQkIQkBkhCAhCQkcT/xr2euuuqqq6666qr/IARXXXXVVVddddVVV1111X84tfZgAPGcxLOJF415XuYFM8+feF4CkAAQzyQhAAkAJARIAkCAAAECkACQhLhCgCQkcZnEC2QDgM1zO5CezlVXXXXVVVdd9e9BcNVVV1111VVXXXXVVVf9hwtAXCH+a5jnJJ6XAHGFeF4CBCAhQIAASQgQgIQkkEBCgCSQkIQkkHgg8W+zLz2Dq6666qqrrrrq34Pgqquuuuqqq6666qqrrvoPJ/5nE88k8a8iIUCAAAGSECCuECAJAQIk8Txsni+bB2rTxFVXXXXVVVdd9e9CcNVVV1111VVXXXXVVVf9hyutPVj825hnM/8JJJ6bACTuJ55JQoAASQiQBBKSkIQkJCEJSSABgAQSL5DNC2Obs13321x11VVXXXXVVf8eVK666qqrrrrqqquuuuqq/zTifygJJB5IPCcBApBAAkASAAIEiGeSQEISkgDA5oHEv4LNVVddddVVV131H4Lgqquuuuqqq6666qqrrvoPV6bpweLZxL+OAfP8mWcz/37i2SQhnkkCQIAAcYUkJIGEJCQhQDwXCQECJPFvcVTrrVx11VVXXXXVVf8eVK666qqrrrrqqquuuuqq/3gS/2tJSAJAPICEAAECJIGEJCQhCUlIAsA2SCABgIR4LjbPzVwRElddddVVV1111b8bwVVXXXXVVVddddVVV131H6629mCei/jPY64wz4fECyKeSeK5CUBCEpIQIAkkkBAgQIAkJCGeTRLiRWPAPJMNwJ3Sb3PVVVddddVVV/17Ubnqqquuuuqqq6666qqr/sOJZxP/84lnE8+fJAAECJCEJJB4FglJANjmRWbz3A6kW7nqqquuuuqqq/69CK666qqrrrrqqquuuuqq/3AGBIj/ucRzEiCuECAJAQLEFZKQhCQAJCEJSUhCEuIKAUiIF5HNA5mrrrrqqquuuuo/AMFVV1111VVXXXXVVVdd9R9qmqYHi/8c5gWw+dcQDyABgMTzkEACCQECBCAhCQABkpAEABKSQEK8CGyenwPpVq666qqrrrrqqn8vgquuuuqqq6666qqrrrrqfyXzbyOek3hOApAAECBAgCSQQEKAJCQhiftJQhIA4pkkxAPY3M88FxsA21xq7RlcddVVV1111VX/XgRXXXXVVVddddVVV1111X+oaZoeLED89zDPh4QA8fyJZ5JAQoB4NkkACBAgCQGSQEISkpAEgCSQQOIyCfGvY6666qqrrrrqqv8ABFddddVVV1111VVXXXXV/2rmXyaeP0ncT4B4AAkBkgCQhCQkIQAJAQIkIQkASdxPgPi3ua/rfpurrrrqqquuuurfi+Cqq6666qqrrrrqqquu+g+VrT1Y/Nczz5/4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GTCwL93KVVddddVVV131H4ngqquuuuqqq6666qqrrvoPI/5zmP9gEpdJAAgQIAAJJASIKwQIkIQkBEhCABKSECCuEIDE82WDzVVXXXXVVVdd9V+CylVXXXXVVVddddVVV131H0Y8m/jXMVeIF40BAQbECyeek3g28UwSAAIESEKAJARIQjyThCSQkAQSSAAggcSLyjzbpcxbueqqq6666qqr/iMRXHXVVVddddVVV1111VX/YUprDxb/vcQV4nmJZxMgAAkkAMRzkRAgCQFISEISkpAEgABJAIgXkQ02l9lgcynzGVx11VVXXXXVVf+RCK666qqrrrrqqquuuuqq/3sk/jUECEBCgCQECEACAAlJSEISSEhCEkgASOL5MYANNi+Mueqqq6666qqr/oMRXHXVVVddddVVV1111VX/Yco0PViA+E9m86ISz0XihZIAQAIJAZIQIECAAAFISEISSAAggcRzM2CeD5v73dN1v81VV1111VVXXfUfieCqq6666qqrrrrqqquu+g9zzTXXPJj/YObZzL+duEI8kwSAeDYBAgQIECBAEpKQBBJISEISSCAhCSQEiOdi8yw2tnl+zFVXXXXVVVdd9R+M4Kqrrrrqqquuuuqqq676D/E6r/M673Xh7rt5IPFfwzwfEs9DAkCAAHGFAEncT1whAAkASQBIQhJICJCEuEIAEgDiX8nmqNZbueqqq6666qqr/iMRXHXVVVddddVVV1111VX/IV7sxV7stQ2I50/8xzPPn7hC/OsIEICEJJAQIAkASQiQhCSQuExCEkj8S8wD2Fxmsyc9g6uuuuqqq6666j8awVVXXXXVVVddddVVV131H+LFXuzFXhuJ+4lnE/+xzPMnnosEgAAkxHORkAQSApBAQoAAAZIQIAlJSEKAJCQhCUkgASAACSSegw0297ONebY96Vauuuqqq6666qr/aFSuuuqqq6666qqrrrrqqv8QrbUHB1eI/0EkkHh+xBXiCgHi2cQVkhAgAAkkLpNAAgkBSFjiX8UGYA9u5aqrrrrqqquu+o9GcNVVV1111VVXXXXVVVf9u11zzTUP5pkEIPEfwuY/mgBJiBdMEpJAQhIAkpCEJCQhCUlIQgAS9xMvhA02D2Suuuqqq6666qr/JARXXXXVVVddddVVV1111b/bmTNnHsx/AvNs5l9HXCGuEM+fuEISAJK4nwABkrhMQoAkJCEACSQuk3hhzAu2m/l0rrrqqquuuuqq/2hUrrrqqquuuuqqq6666qp/t7Nnz956/fXXI56X+K8l/vXEFZIAECBAEpIQIAkBkkACCSQEICEAm+dhg415NgPYYHOZzaXMZ3DVVVddddVVV/1HI7jqqquuuuqqq6666qqr/sM8+mVflv9q5kUnHkBCPJOEuEIAEkg8i4QkJIGEAElIAgkBSCAhiRfIxjwnc8VBrbdy1VVXXXXVVVf9RyO46qqrrrrqqquuuuqqq/7d7rvvvlvvu+++Wx/9Mi+DAPGfx1xh/mXiCvFskhAgrpCEuEJcIUCAJCQhQIAkJCEJSSAhCST+RTbPlw3A/Nprueqqq6666qqr/sMRXHXVVVddddVVV1111VX/If7+7//+tx79si/L/wTiRSTx3CQBIECAAEkggYQAJAAkgYQkJCGJyyQeyDyADTbP7bEv9mKvxVVXXXXVVVdd9R+N4Kqrrrrqqquuuuqqq676D3H27NlnnL7+eh75si/LfwTzryNeOPG8xLNJQhIAkkACAAkBkhCAhCQkIUA8F4lnsXlBzAPYvNIbvMHrcNVVV1111VVX/UcjuOqqq6666qqrrrrqqqv+Q/zWb/3Wd5++/npe+U3fFADxn8zmfgaQEM9LvHACxLMJECBAEgKQECAJSUhCEkggIQkk7ieezQA2l9k8i41tAGbXXstVV1111VVXXfWfguCqq6666qqrrrrqqquu+g9x9uzZZ/zDP/zDbz/yZV+Wk9dfz38k868nnpckBEhCPICEAAFIAEgCQBKSQAIJSQAgIQlJICEACfFcbACwMc+Hzfyaa7jqqquuuuqqq/5TEFx11VVXXXXVVVddddVV/2F+5Ed+5HNOXX89b/J+78d/C4l/LwGSAJAEgABJCBAgCUkggQQAEuIFM89kY5sH6q+5hvvuu+9Wrrrqqquuuuqq/2gEV1111VVXXXXVVVddddV/mH/4h3/47X/4h3/47Vd60zflFd70TRHPSbxozIvGPC/xvMTzJ0ASApCQxP0ECJCEJARIAglJAEhCgCReVOZ5HX/xF+e+++57OlddddVVV1111X80gquuuuqqq6666qqrrrrqP9TXf/3Xvw/AG73f+3Hi+uv5j2SuMC+ExP3Es0nigSSBxP3EFQIEICEJcYUkJCEJJCSBBBJISAIJJJ6beSabZ7HBBuDYS7wEZ8+efQZXXXXVVVddddV/NIKrrrrqqquuuuqqq6666j/Ufffdd+uP/MiPfPbJ66/nQ77hG3iR2PxHEs+fuEI8J/EAEkiIKyQhicskJCEJJARI4vmyeRYbbJ6f7Rd7MfakW//hH/7ht7nqqquuuuqqq/6jEVx11VVXXXXVVVddddVV/+F++7d/+3v+4R/+4bdPXHcd7/jpn85/OYn7CUDifpK4nwABSAgQIECAAEkACJCEACQkIQkkkJAEEs/D5oEMYIPN/a55vdfj7Nmzt9533323ctVVV1111VVX/UcjuOqqq6666qqrrrrqqqv+w9133323fv3Xf/37ALzcm74pr/d+78e/lfk3kkACiReJBBIAApAAkAQSkpCEuEISknggSTwPGwDznAz011zDmdd9XX7rt37re7jqqquuuuqqq/4zEFx11VVXXXXVVVddddVV/ynuu+++Wz/zMz/ztQFe//3ej9d9v/fjRWH+dQwIEM9JPJt4XuLZBAgQIAkkBAgQIAkBSEhCEkggIQkkJAEgnpN5ABvzTDYP+fAPB+C3fuu3vpurrrrqqquuuuo/A8FVV1111VVXXXXVVVdd9Z/mH/7hH37n67/+698H4PXe7/14nfd9X/5D2TyQeMHEs4krBEjiuQmQhCSQEICEACSQEIAEEpJ4oWywuZ+B697hHdh+sRfjR37kRz6bq6666qqrrrrqPwvl+PHjXHXVVVddddVVV1111VX/eW699da/Pnv27DNe8RVf8a0f8rIvCxK3/tVfIUCAAAGSEFcIECAACXGFAPFsApAQEBIhERKSCImQkERIhERIhEREEBIhEREUiRJBKYUaQYmglkItha4UulqptVJrpXYdpVaiVqIUIgIksHEmbo1sjTZNTNNEG0em1mit0Vqjtcb8UY/ipg/5EO67775bv/RLv/RtuOqqq6666qqr/rMQXHXVVVddddVVV1111VX/6X7rt37ruz/zMz/zde67775bX+d935eP+fEf5/j11/PczL/M/OuIB5C4nySQEIDEs0hIQoAkJAEgAAkASUgCCSSQQAKJ52DzQAZ2Xv3VefCnfzoAX//1X/8+XHXVVVddddVV/5kox48f56qrrrrqqquuuuqqq676z3f27Nlb/+zP/uxnXvEVX/GtT1133fFHv8ZrMN/a4hl/9VcIkASAAAHi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A5w5c+bBANdcc82DeaZ/+Id/+O0zZ848GODs2bO33nfffbfed999twL8wz/8w+/8wz/8w29z1VVXXXXVVVf9b4Qe9KAHcdVVV1111VVXXXXVVVddddVVV1111VVX/Z9E5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q/iHwGa+0KuIUuNGwAAAABJRU5ErkJggg==) +![Rendered example of appearance 8](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEmAklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVS+Sa6655sE805kzZx4McM011zyYZzpz5syDeC7XXHPNg3k+rrnmmgfzAtx333238gLcd999t/JMZ8+efQbPdN99993KM509e/bW++6771auuuqqq6666qqrrrrqqqsAPehBD+Kqq6666qqr/r+55pprHgxw5syZB19zzTUPPnPmzIN4pmuuuebB11xzzYMBzpw58+BrrrnmwbyIbv+rv+J+e/fcw8511/H87N1zDy/IznXXAbB3zz08t53rruOBbn6Zl+GF+Yd/+IffPnPmzIPPnj1763333XcrwD/8wz/8DsB9991369mzZ2+97777buWqq6666qqrrrrqqquu+r8KPehBD+Kqq6666qqr/q+55pprHnzmzJkHX3PNNQ8GOHPmzINe/MVf/LXPnDnz4GuuuebBPB+3/9VfsXfPPQDs3X03O9dfz97dd3O/m17mZdi75x727r6bneuvZ+e667jfseuvB2Dnuuv499q75x52rruOvXvuYee66wDYu+ceHmjv7rvZu+ce7nf7X/0V99u75x727r6bneuvZ+e66wDYue46jl1/PQA7113HTS/zMtzvvvvuuxXgH/7hH34b4B/+4R9+5x/+4R9++7777ruVq6666qqrrrrqqquuuup/O/SgBz2Iq6666qqrrvrf6pprrnnwmTNnHvxiL/Zir3XNNdc8+Jprrnnwi73Yi702D3D7X/0Ve/fcw97ddwNw+1//Nceuu45L99zDseuuY+e66wC4+WVeBoCbXuZleG5799wDwN7dd3PTy7wML6p2/jzPYgNgrrANgAFsDJgrbLO49lpeFHf81V8BsHP99excdx3327vnHvbuvpu9e+7hjr/6K/buuYc7/uqvuN/OddcBsHP99excdx03vczLsHPdddz0Mi8DwH333XfrP/zDP/z2P/zDP/zOb/3Wb303V1111VVXXXXVVVddddX/RuhBD3oQV1111VVXXfW/xTXXXPPg137t136vF3/xF3/tF3uxF3ttnmnvnnu446/+ikt3380df/3XANzxV38FwM511/HYN3kTAG5+mZfhppd5Ge63d889AOxcdx3PbXnvvQhY3Xcf6/vuY33ffUhCwHjuHO3cOUKiRODz5wkJLlygRFAiCAlJ3C9tWiYtkymTKZOxNaZMxtaYMhkzmTJpmUw2LZNmM7vmGlomtllcdx1ps3HttRjYvPZaNq+7DgNb113H1nXXsX3dddzvcb/0S9z0Mi/DznXXsXfPPdzxV3/FHX/1Vzzul36JF2Tnuuu46WVehpte5mV47Ju8Cffdd9+tv/Vbv/XdP/qjP/o5XHXVVVddddVVV1111VX/m6AHPehBXHXVVVddddX/VNdcc82DX+zFXuy1X+d1Xue9XuzFXuy1AfbuuYd/+MVfBOCOv/5r7virv+KBdq67jse+yZtw88u8DDe9zMsAsHfPPezdfTc3vczLAHB0zz0AnPubv2F5771I4sLf/i0Cdv/u75BESIRESIRESEQERaJEUCRqBCWCWgo1ghpBiaBEEBKSADBgm5ZJy2TKZMpkbI0pk7E1pkzGTKZMWiaTTcuk2TSbzKTZJJA2aWObBNImbRJImwQ2r72WzeuvZ/u667jhpV+a7euv55aXeRke90u/xGPf5E2446/+il/7oi9i7557eGF2rruOm17mZXil93kfbj9//rc/8zM/83W46qqrrrrqqquuuuqqq/63QA960IO46qqrrrrqqv9prrnmmge/9mu/9nu90zu902cD/PF3fid3/PVfc8df/RUvyE0v8zK88vu8Dze9zMuwd8897Fx3HQCH99zDfX/91xzecw9n/+ZvOP+3f0sAkghAEiEhiQAkERIhERKSCIkiERIlgiJRIigR1AhqBLUUSgQlghJBSIQEgAHbtExaJlMmUyZTa4yZjJlMrTFlMmUy2UyZtEyaTbNJm5ZJAmmTNrZJIG3SJoG0SSBtEmhAs5mAzeuu48aXeRle633fl8N77mH/nnv4tS/6Il4UN770S/MGn/qpfPk3fuPr/MM//MNvc9VVV1111VVXXXXVVVf9b0Dlqquuuuqqq/6Hueaaax78Td/0TU//o1//9d/+1S/8Qh73S7/EA4nnddPLvAxv97Vfyx9/53dy7Prrecov/RJH99zD037lVwggJAIIiZAwIP5lBsQV5goDBsyzGbDNs9ggYUA8L/GcxPMSz4cENgACzAshgc0DXbrnHsa/+ite8p57eOjLvAx/8l3fxYvixpd+ad7gUz+Vneuu4+zZs7dy1VVXXXXVVVddddVVV/1vQeWqq6666qqr/of5ks/6rKc/7pd+iT/9oi96bQBJ/EtufJmXASAkfvAd35EiUYAi8TxskHgeNkjcz4D4l5lnsw02lrjMBglsni+JZ5F4HhLYiCvEFQLMi2bnuuvYvO46bnyZl+HF3+RNOHb99ezdcw8/+ZEfyZ1//deI52/nuut49Ju8CY95kzdh57rruN+ZM2cefN99993KVVddddVVV1111VVXXfW/AZWrrrrqqquu+h/kmmuuefAv/c7vfPabvNZrffZNL/3S3PnXf82/ZOe669i/5x4AHv0mb0IA9/71X3PfX/81/xIDAgwIMCBeMAPYIAFgrjBgrjBX2EYS5vkTV4grBCCBBDYAAsRzEmCev+3rrmPz2mu57mVehq3rruPRb/Im3G/vnnt4/C/9Ek/4pV9i7557eG47113HjS/zMmxfdx2PeZM3Yee669i75x52rruO/Xvu4Y++67t4w0/5FK666qqrrrrqqquuuuqq/1WoXHXVVVddddX/IPfdd9+tAI//pV/i7b72a9m75x4e/0u/xB1/9Vfc+dd/zfOzd8897P3SL3HnX/0Vj3mTN+HGl35pXv593oeDe+7h4J57OLznHs7+zd9wdM89LO+9l6N77kG8iGyeReJ+BgxgYxtsAMxzMiCb5yDxLxHPa+Paa0mbxbXXsnHttWxcey22uealX5qt665j67rruN/ePffwhF/6Jf70u76LO//qr7jzr/+aB9q57jpufJmXYee667jxpV+aG1/mZQDYu+ce9u++m53rruPgnnu496//mr/8q7/iH37plxiBV3qf9+Gaa6558D/8wz9w1VVXXXXVVVddddVVV/2vgB70oAdx1VVXXXXVVf+TXHPNNQ9+pRtvfPprvNmb8bCXeRn27rmHneuuY++ee7jzr/6KO//6r9m7+27277mHvXvu4fnZue46bnyZl2H7uuvYue46HvMmb8IDHd1zDwBH997L8t57AVjeey+re+9FEqv77kNAAJJY33cfJQJJjGfPUiIoEiWCGkGNoERQIyilUCRKBPX0acQVCaSNTp0iW6PZ6NQpMpNy+jRpkzb9NdeQNrNrrmFxzTUsrr2W5+fOv/or9u65h/177gHgzr/6K+78678GYPu66wC48WVehp3rrgPgxpd+aW58mZfhfnv33MP+3Xdz48u8DACH99zDwT33cO9f/zV3//Vfc9df/RUJNGCyGYD3+dEf5ft+/Mff57d+67e+m6uuuuqqq6666qqrrrrqfwP0oAc9iKuuuuqqq676n2b73nuf/ohrr33wo1/2ZXnYy7wML/2mbwrA43/pl9i57jpufJmXAWDvnnsAuPOv/gqAO//6rwHYv/tu9u65h/177uGBtq+7jp3rrmP7+usBuPGlXxqAneuuA+DGl3kZ/rvc+Vd/BcD+Pfewd8893G//nnvYv/tutq+/njv/6q/Yue46tq+/nu3rruN+N770SwOwc/31bF93Hffbv+ceAO78q7/i0W/yJtzv6J57OLznHs7+zd9weM89PO2Xf5kEbJNAAs0mgQZMNiPwNl/zNfzRk5702T/6oz/6OVx11VVXXXXVVVddddVV/xugBz3oQVx11VVXXXXV/zSzc+d+67pxfO2FRA90Eievu44Hv8zLcMvLviwCHvMmb8Jzu/Ov/oobX+ZleKC9e+7hfvt3383ePfdwv/177gFg7557uJ+A/bvv5n7b11/P/fbvvhuA7euv54XZvu46APbvuYcH2r7uOvbvuQeA7euu44F2rrsOgO3rrgNg5/rrAdi+7jqe2/499wCwd/fd3PgyL8NzW957LwDn/+ZvOLrnHgDO/c3fcHTPPRzccw8GDKSNgbQxkDYJJJA2DWjAZDMCb/M1X8MfPelJn/2jP/qjn8NVV1111VVXXXXVVVdd9b8Blauuuuqqq676H6gBBgwYMHDpnnv4+1/6JR7/y79MAX7jC7+QY9ddR0jc+DIvg4AbXuZleMov/zJb113H1nXXsXXddexcdx3327nuOo7fcw+b113H/fbvuQeA7euu47/a/j33sH3ddbwgw333cb/1ffcBsLr3Xlb33cfq3nuxzdMf9zhW997L8t57ObrnHo7uvRfbGEgb2xiwjfn3u+aaax7MVVddddVVV1111VVXXfW/BZWrrrrqqquu+h+o9f1v5zi+tnk+bJAA2L/nHkLiSb/0SwTw1F/+ZQQEIIkAtq6/ngAksXXttWxdfz0CBGxedx2S2LjuOi793d8hAImNa68FQIAkAATMr7kGJADEFQKQABBX5PnzAEjigdr582Bjm+ncObDZA9JmvO8+0mZ99iyZyfree2k2q/vuIzNpNmljm7RJG9ukjQHbpM0DCTDPRQKbfw0BAvbuuQfmc6666qqrrrrqqquuuuqq/zWoXHXVVVddddX/QANgrjBgwDybef4MiOd0eM89CAiJo3vu4dzf/i2SCCAkJBESIRFASEQERSIkikSJoEiUCGoERaJEUCMoEdQISgQRQZGICEJCEuLZDNgmM0mbtGmZtExaJplJs2mZtEyazf0ECDDPRQKbF0gCm/8o11xzzYO56qqrrrrqqquuuuqqq/63ILjqqquuuuqq/4GylGckYJ6TAfP8mWczV5gXzjyAzbPYmOfPNvczVxgwgM1lNpfZPAebF0QAEs8iIf5l4tnECyEBIJ5NXCGeSeKBBIhnu3T33Vx11VVXXXXVVVddddVV/6sQXHXVVVddddX/RKXcasCAAfO8DBgwYP6VbJ6DjQED5nkZMM9mns08kw2AucI2z5fNfwTxfEg8N/GvJ56XACSuuuqqq6666qqrrrrqqv9VCK666qqrrrrqf6BS660JGDCAjXnRmOdkrjBXmCvMs5nnZAAbAwawAbCNucI8k41tDJgrzBUGzL9M/Ask/quIF2zvnns4c+bMg7nqqquuuuqqq6666qqr/rcguOqqq6666qr/odLGXGGuMGDA/MvMi8jmX8sANrYxz8k2z8HGgPmvIf5jiGcTV4irrrrqqquuuuqqq6666n8Zgquuuuqqq676H6jWemsCtjFXmOdknsnmfrZ5YcwV5tnM82cAGwADBswz2ZhnM1fYBsCAeS42AOY/kMSLQjwn8fyJB5B4IAF7d9/NVVddddVVV1111VVXXfW/CsFVV1111VVX/Q81lnKrAQPm+TNXGDDP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VVddddVVV1111f84BFddddVVV131f8gEmGczz8k8m3k2c4W5wjyTjQFsAMx/EJtnsXlRmBeNJADEM0k8i8S/lnjhJCFg/+67ueqqq6666qqrrrrqqqv+xyG46qqrrrrqqv9DWt//tgED5plsHsiA+TeyeX5sY8CAAQPm+bCxjbnCgAED5nmZ52T+g0ncTxL/GuK5SFxzzTUP5qqrrrrqqquuuuqqq676n4Tgqquuuuqqq/4PmYAEbANgwIAB8/yZ58PGPJt5NnOFucK8YAYM2MY25tkMYPMvsnkg868jXjjxnMSziauuuuqqq6666qqrrrrqfzmCq6666qqrrvo/JEt5RgIGzPMygM3zY64wz2aezTyAzbPYvEA22PyLbADMs5n/HALEv0DiX2v/nnsAuOaaax7MVVddddVVV1111VVXXfU/BcFVV1111VVX/R+SpdzKMxkwYJ6TeTbzb2OuMM/LgG2weX4MGMDGPJu5woB5NvO8zL+SBIB4NvFsknhu4jkJkIR4NnGFuOqqq6666qqrrrrqqqv+hyK46qqrrrrqqv9Daq23po15TgbMsxkwz2aek3k282zm+TNgwAA2AAYMGDBgwDwvAwaweaFs/j3EM0kAIPHcxPMh8dzEs4krxBVnzpx5MFddddVVV1111VVXXXXV/xQEV1111VVXXfV/TAMMGDD/OuZFZwAb829gY57J5n7mudj8m0i8KMTzISGek/iX7d1zD1ddddVVV1111VVXXXXV/zgEV1111VVXXfV/SK31VgMGzBXm2czzss2z2NzPPJt5NvNC2PxLbGOuMC+cucI8gM1/KAkA8fyJ5088J3HVVVddddVVV1111VVX/Q9EcNVVV1111VX/x4yl3JpcYa4wYK4wz2aezVxhnosNADYvlI0BAwYMGDBgwIBtnpsBAwawMS8a8y8TVwhA4vkR/wYSDySuuHTPPVxzzTUP5qqrrrrqqquuuuqqq676n4Lgqquuuuqqq/6PGUu51YC5wjwvA+ZfZp7NPJONucJcYcC8EDbYPJABbJ6HjW1s819OQjybJP41xFVXXXXVVVddddVVV131PwzBVVddddVVV/0fM5VyqwED5grbAJjnzzwn82zm2cwLYPMC2Tw3c4V5JhsA84KZF0LiRSVAEg8knpd4LhLPTYC4QsClu+/mzJkzD+Kqq6666qqrrrrqqquu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Y64wYAAbA+YKA9gYMFeYKwzYBsDA9nXXsXXdddzwMi/D9nXXsX3ddRi48WVehhfV3j33cNXz2r/7bvbuuYc7/uqvANi75x72776bS/fcw/3Ms5lnM2CuMGDANgYMGFiWcute3//2kXTrUSnP2O/736613spVV1111VVXXXXV/33oQQ96EFddddVVV1111Qs3TdODN3d3v2t7GF67AzqJHqgSFShAAEUigABCIoAABISEgJAIIABJBBASAkJCQEgICImQEBASISGJAEIiJEIiJEIiJAIICUmEREiEREhIIgBJCJCEeCaJZ7EBMGAbA9gYSBsDtrGNAdskYBvbGLCNAdsYsI0B2xiwjQEDtjFgGwMGbGMAGwMGbANgwAA2BgxgY8BcYRtzhQFsDJgrDGBjrjBgrrANgLnCXGGusA2Aebat664DYPu669i6/noAbnzplwZg+7rrMHDjy7wMAPv33MP2dddx1b9s/557ANi7+2727rmH/bvvZu+ee9i/5x727r6bvXvuAcBcYcBcYcCAuSIB2yRgYFnKrUMpty5LufX8fP49y77/ba666qqrrrrqqqv+70EPetCDuOqqq6666qqr/mXjev3ap86f/6050AGdRAdUiQoUICQKEEAAIRGAgJAQEEBIBCCJAAKQRACSCEASIRGAJEIiAEmEREgEIImQCImQCImQCImQCIkAQkISISEJASEBIEASz802AAZsY8A2tjFgmwRsY8A2tjFgGwNpY8A2BmxjwDYGbGOuSBsDtgEwYBsAA7YxV9jGXGEbc4UBbAyYK2xjrjCAjbnCXGEbc4W5wlxhm/uZK8yzmWezzXMzV/1rbV93HebZtq+7DoCt668HYPu66wDYvu469u+5BwADO9ddxx1/9Vfs33MPBu78q7/CgAFzhYEEDBhIGwPLUm5dlnLrXtf9zn6tv72az3+bq6666qqrrrrqqv/90IMe9CCuuuqqq6666qoXTT137rd2huG1e6CT6IAOqBIFKEBIBFCAACQRQACSCCCAkBAQEgFIIgBJBCCJAEJCQEhIIiQCCAlJhEQAIRESIRESIRESIRESISGJACQREgIkIUASL4htDGBjwDYJ2MaAbQzYxjYG0saAbQzYxoBtDNjGgG0MGLCNAdsAGLCNucI25grbmCtsY66wjbnCADYGzBW2ATBgrrANgLnCPJONucJcYZ7J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g7jqqquuuuqqq/5tVoeH733dpUvf1QMdUCU6oAJFogAFCIkCBBCAJAIIICQCCAkBAYSEgJAQEBICQkJASAgICUkEIImQCIkAJBESIRESIRESIRESIRESIRESIRGAJEJCEgIkIa6QxHOwMWAAGwMGbGPANgZsY8A2BrAxYBsDtjFgABsDBmwDYK6wjbnCNgAGbANgwDYABmwDYMA2AAYMYGOusI25wgA25goD2ACYK8wz2ZjnZJ6LzQOZfxvxf5d54czzss0DmWczgI15NnOFbQDMFQawMVcYMFfYxlxhwFxhGwMGDBgwsHXttWxfdx03vszLYOAffumX2L3nHtImgQYsS7n1vvn8u89tbX0OV1111VVXXXXVVf810IMe9CCuuuqqq6666qp/u9m5c7+1MQyvPQMqUCU6oEoUoAAFCIkAAgiJAAIIiQACkEQAkgggAEkEIAkBISEgJCQRQEhIIgBJhERIBBASIRESIRESIRESIRESIRESkgiJACQhiZAQV0gCQDybucI2AAZsY8A2BmwDYBsDtjFgGwMGsDFgwDYABmwDYK6wjbnCNgAGsDFgrrCNucI25grbmCtsA2DAADbmCtsAmCsMYGOezTyTDYB5Tua52Pynkfhfy+aBzPNnHsDGPCdzhW3uZ64wgI25wlxhGwBzhQHbABgwV9gGwIABA7YBMGDAgAEDW9dey/b117N93XUY+Ptf+iUSSJsEjkp5xm7X/dads9n3MJ//NlddddVVV1111VX/edCDHvQgrrrqqquuuuqqf7tpmh587X33PV1AB1SJDqhAlShAAUIigAIIKBIBBBASAgIICQEhISAkBAQgiQAkERICQkJASEgigJAICUmEREgEEBIhERIhERIhERIhERIhERKSCAkBkhAgCfFMEs9iA2CusI0B2wDYxoBtDBiwjQHbANjGgLnCNuYK2wCYK2wDYK6wjbnCNgAGsDFgrrCNucI25grbmCsMYGOusA2AucIANgDm2Qxgcz9z1b+GeQCbBzLPyTyTDYC5wjyTjbnCXGEAG3OFAWzMFQawMWCuMGAbAHOFAduYKwwYsI0Bc0UCBmyzdd113PgyL8Ole+7BwG1/9VekTQOQuGs+/+5zs9n3rGez3+aqq6666qqrrrrqPx560IMexFVXXXXVVVdd9e+zOjx872svXfquGdABRaIDKlAlChBAkQgg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n0I8m/jPYUD8G0kAIAEgrhBXiCskIQAJSUhCgCQkIQAJAZIQgMSz2ACIq6666qqrrrrqvwHBVVddddVVV1111VVXXfWfwoAA8R/HNv8RxDNJPD+SQAKJ+4kHkLhMQhICJAGAhAABAgRIAkD86xg4iLiVq6666qqrrrrq34rgqquuuuqqq6666qqrrvoPN03Tg8X/HuKZJB5IXCEJAAGSECAJAZKQBIAkBEgCiecg8W9xID2Dq6666qqrrrrq34rgqquuuuqqq6666qqrrvp/SYAA8WzieYkrJIEEgAABkgAQIAkBSAAIkAQSL5DNA5nn1aaJq6666qqrrrrq34zgqquuuuqqq6666qqrrvoPN03TgwHEfxzzgpnnZJ4PiReFAAHimSTEFQIkgYQkACSBhCSQECAJJAAECBDPn3kAm+d2rut+m6uuuuqqq6666t+K4Kqrrrrqqquuuuqqq676TyFeMPHvZ57J5n7mP4DE/SQhAAkBkhAgrpCEAHGFAEkACEDiMolnkXhRmKuuuuqqq6666j8AwVVXXXXVVVddddVVV131Hy5be7AAJMQV4grxfEgAmP8+kngWCSSeg8T9JCEJAZKQhCQkASAJAAFI/JvYYHNU661cddVVV1111VX/VgRXXXXVVVddddVVV1111X84AeLZxP8+AgQIECBAgCQABEgCQBICkJAEgCQAxANIvEhsACRx1VVXXXXVVVf9uxBcddVVV1111VVXXXXVVf/hKleI/xjmP5e4QoAA8QASzyIhQBJIAEgCQBICkJAEgCQABCAhQLzo7or4Ha666qqrrrrqqn8Pgquuuuqqq6666qqrrrrqP1xO04P430TihZGEJAQgIUCAJCQhCSQkIa6QBAASAOKFsHkWm/sdSLdy1VVXXXXVVVf9exBcddVVV1111VVXXXXVVf/hOgnxX8O8YJIQIJ5J4rmJB5C4nwBJiGeThAAkJCEJAZIQgIQkJHE/8a9nrrrqqquuuuqq/yAEV1111VVXXXXVVVddddV/OLX2YADxnMSziReNeV7mBTPPn3heApAAEM8kIQAJACQESAJAgAABApAAkIS4QoAkJHGZxAtkA4DNczuQns5VV1111VVXXfXvQXDVVVddddVVV1111VVX/YcLQFwh/muY5ySelwBxhXheAgQgIUCAAEkIEICEJJBAQoAkkJCEJJB4IPFv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gloKtRRqrXS1Umulq5VSK6XrKF1H1EpEoAiQwGZaLFg+9rEs3+zN8C23APAjP/Ijn/31X//173P27Nlbueqqq6666qqr/quhBz3oQVx11VVXXXXVVVddddVV/3Ncc801D36xF3ux136d13md93qxF3ux1+aZbvurv+Lvf+mX+Idf+iUAxBUCikSRKBJFokiERJEoEiWCIlEkSgQlghpBjaBG0JVCVwp9rfS1MquVWdcx73vmsxmz2YzZbMZsPqefz6mzGXU2I2pFEbTNTY4e9CAOXuIluN9v/dZvffeP/uiPfs599913K1ddddVVV1111X8X9KAHPYirrrrqqquuuuqqq6666n+ma6655sHv+I7v+Fmv8zqv894806V77mHv7rv5+1/6JfbuuYc7/vqvKUCRKBJFokgUiZAoEiWCIlEkSgQ1ghJBjaCLoJZCXwp9rfS1Mus6Zl3HvO+Z9T3z2YzZfM5sPqebz+lmMzh5kvUjHsHyIQ+hbW4CcN99990K8PVf//Xv8w//8A+/zVVXXXXVVVdd9d8NPehBD+Kqq6666qqrrrrqqquu+p/tmmuuefCLvdiLvfbrvM7rvNeLvdiLvfZ999136zXXXPNggL177uGOv/5r7vrrv+bgnnu492/+hiJRJIpESJQIikSJoEjUCGoENYJaCl0EXa30pdDXyqzrmHcds75nPpsxn82YXXst5WEPQydPMj7mMeTWFve77777bv2t3/qt7/6t3/qt7z579uwzuOqqq6666qqr/qdAD3rQg7jqqquuuuqqq6666qqr/ve45pprHvxiL/Zir/1iL/Zir/U6r/M6783zcXDvvRzccw+H99zDfX/3dwhY3ncfRWJ99iwhMZ47R42gK4XN666jL4WuFDauvZaNa69lds011FKYPeIRlIc+lOd233333fpbv/Vb33327Nln/NZv/dZ3c9VVV1111VVX/U+EHvSgB3HVVVddddVVV1111VVX/e915syZB734i7/467zYi73Ya11zzTUPfrEXe7HX5t/p6K672LjhBu5333333Qpw9uzZW//+7//+t//hH/7hd/7hH/7ht7nqqquuuuqqq/6nQw960IO46qqrrrrqqquuuuqqq/7vuOaaax5s29dcc81Drrnmmge/2Iu92Gvdd999t774i7/4awOcOXPmwQDXXHPNg3mmf/iHf/jtM2fOPBjg7Nmzt95333233nfffbcC/MM//MPv/MM//MNvc9VVV1111VVX/W+EHvSgB3HVVVddddVVV1111VVXXXXVVVddddVVV/2fROWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6v4h8BpGRtLgE2rRwAAAAASUVORK5CYII=) diff --git a/docs/kcl/asin.md b/docs/kcl/asin.md index 9e15b2c93..2ceeab762 100644 --- a/docs/kcl/asin.md +++ b/docs/kcl/asin.md @@ -33,10 +33,7 @@ asin(num: number): number ```js sketch001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ - angle = toDegrees(asin(0.5)), - length = 20 - }, %) + |> angledLine(angle = toDegrees(asin(0.5)), length = 20) |> yLine(endAbsolute = 0) |> close() diff --git a/docs/kcl/atan.md b/docs/kcl/atan.md index 1cd02a1ac..ae16b2221 100644 --- a/docs/kcl/atan.md +++ b/docs/kcl/atan.md @@ -33,10 +33,7 @@ atan(num: number): number ```js sketch001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ - angle = toDegrees(atan(1.25)), - length = 20 - }, %) + |> angledLine(angle = toDegrees(atan(1.25)), length = 20) |> yLine(endAbsolute = 0) |> close() diff --git a/docs/kcl/atan2.md b/docs/kcl/atan2.md index c389a48ba..1a31c08c4 100644 --- a/docs/kcl/atan2.md +++ b/docs/kcl/atan2.md @@ -24,8 +24,8 @@ atan2( | Name | Type | Description | Required | |----------|------|-------------|----------| -| `y` | [`number`](/docs/kcl/types/number) | | Yes | -| `x` | [`number`](/docs/kcl/types/number) | | Yes | +| `y` | [`number`](/docs/kcl/types/number) | Y | Yes | +| `x` | [`number`](/docs/kcl/types/number) | X | Yes | ### Returns @@ -37,10 +37,7 @@ atan2( ```js sketch001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ - angle = toDegrees(atan2(1.25, 2)), - length = 20 - }, %) + |> angledLine(angle = toDegrees(atan2(y = 1.25, x = 2)), length = 20) |> yLine(endAbsolute = 0) |> close() diff --git a/docs/kcl/chamfer.md b/docs/kcl/chamfer.md index c3fb0359f..e7552be83 100644 --- a/docs/kcl/chamfer.md +++ b/docs/kcl/chamfer.md @@ -80,7 +80,7 @@ part001 = cube([0, 0], 20) // We tag the chamfer to reference it later. |> chamfer(length = 10, tags = [getOppositeEdge(line1)], tag = $chamfer1) -sketch001 = startSketchOn(part001, chamfer1) +sketch001 = startSketchOn(part001, face = chamfer1) |> startProfileAt([10, 10], %) |> line(end = [2, 0]) |> line(end = [0, 2]) diff --git a/docs/kcl/consts.md b/docs/kcl/consts.md index dde4ffd82..ca7855777 100644 --- a/docs/kcl/consts.md +++ b/docs/kcl/consts.md @@ -9,6 +9,8 @@ layout: manual ### `std` +- [`END`](/docs/kcl/consts/std-END) +- [`START`](/docs/kcl/consts/std-START) - [`X`](/docs/kcl/consts/std-X) - [`XY`](/docs/kcl/consts/std-XY) - [`XZ`](/docs/kcl/consts/std-XZ) diff --git a/docs/kcl/consts/std-END.md b/docs/kcl/consts/std-END.md new file mode 100644 index 000000000..196085a03 --- /dev/null +++ b/docs/kcl/consts/std-END.md @@ -0,0 +1,15 @@ +--- +title: "std::END" +excerpt: "Identifies the ending face of an extrusion. I.e., the new face created by an extrusion." +layout: manual +--- + +Identifies the ending face of an extrusion. I.e., the new face created by an extrusion. + + + +```js +std::END: string = 'end' +``` + + diff --git a/docs/kcl/consts/std-START.md b/docs/kcl/consts/std-START.md new file mode 100644 index 000000000..19021c91f --- /dev/null +++ b/docs/kcl/consts/std-START.md @@ -0,0 +1,15 @@ +--- +title: "std::START" +excerpt: "Identifies the starting face of an extrusion. I.e., the face which is extruded." +layout: manual +--- + +Identifies the starting face of an extrusion. I.e., the face which is extruded. + + + +```js +std::START: string = 'start' +``` + + diff --git a/docs/kcl/consts/std-math-E.md b/docs/kcl/consts/std-math-E.md index 0ba1fa96d..636d755a8 100644 --- a/docs/kcl/consts/std-math-E.md +++ b/docs/kcl/consts/std-math-E.md @@ -17,10 +17,10 @@ std::math::E: number = 2.71828182845904523536028747135266250_ ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ + |> angledLine( angle = 30, length = 2 * E ^ 2, - }, %) + ) |> yLine(endAbsolute = 0) |> close() diff --git a/docs/kcl/consts/std-math-PI.md b/docs/kcl/consts/std-math-PI.md index b2c280bdd..b18e4f306 100644 --- a/docs/kcl/consts/std-math-PI.md +++ b/docs/kcl/consts/std-math-PI.md @@ -18,7 +18,7 @@ std::math::PI: number = 3.14159265358979323846264338327950288_ circumference = 70 exampleSketch = startSketchOn(XZ) - |> circle(center = [0, 0], radius = circumference/ (2 * PI)) + |> circle(center = [0, 0], radius = circumference / (2 * PI)) example = extrude(exampleSketch, length = 5) ``` diff --git a/docs/kcl/consts/std-math-TAU.md b/docs/kcl/consts/std-math-TAU.md index b4de51451..03e09365c 100644 --- a/docs/kcl/consts/std-math-TAU.md +++ b/docs/kcl/consts/std-math-TAU.md @@ -17,10 +17,10 @@ std::math::TAU: number = 6.28318530717958647692528676655900577_ ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ + |> angledLine( angle = 50, length = 10 * TAU, - }, %) + ) |> yLine(endAbsolute = 0) |> close() diff --git a/docs/kcl/e.md b/docs/kcl/e.md index 60939801c..1c86a2aa2 100644 --- a/docs/kcl/e.md +++ b/docs/kcl/e.md @@ -30,7 +30,7 @@ e(): number ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ angle = 30, length = 2 * e() ^ 2 }, %) + |> angledLine(angle = 30, length = 2 * e() ^ 2) |> yLine(endAbsolute = 0) |> close() diff --git a/docs/kcl/extrude.md b/docs/kcl/extrude.md index 101e35975..6e67c8a67 100644 --- a/docs/kcl/extrude.md +++ b/docs/kcl/extrude.md @@ -12,6 +12,8 @@ You can provide more than one sketch to extrude, and they will all be extruded i extrude( sketches: [Sketch], length: number, + symmetric?: bool, + bidirectionalLength?: number, tagStart?: TagDeclarator, tagEnd?: TagDeclarator, ): [Solid] @@ -24,6 +26,8 @@ extrude( |----------|------|-------------|----------| | `sketches` | [`[Sketch]`](/docs/kcl/types/Sketch) | Which sketch or sketches should be extruded | Yes | | `length` | [`number`](/docs/kcl/types/number) | How far to extrude the given sketches | Yes | +| `symmetric` | [`bool`](/docs/kcl/types/bool) | If true, the extrusion will happen symmetrically around the sketch. Otherwise, the | No | +| `bidirectionalLength` | [`number`](/docs/kcl/types/number) | If specified, will also extrude in the opposite direction to 'distance' to the specified distance. If 'symmetric' is true, this value is ignored. | No | | `tagStart` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | A named tag for the face at the start of the extrusion, i.e. the original sketch | No | | `tagEnd` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | A named tag for the face at the end of the extrusion, i.e. the new face created by extruding the original sketch | No | @@ -81,4 +85,52 @@ example = extrude(exampleSketch, length = 10) ![Rendered example of extrude 1](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAD36klEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yrK8ePHueqqq6666qqrrrrq/7ZrrrnmwW/2Zm/2UR/+4R/+3UdHR5duvfXWv+aqq6666qqrrrrqqv8PqFx11VVXXXXVVVdd9X/WO77jO37W67zO67z3Nddc8+Dd3V2OHz/Oh3/4h3/Xfffdd+s//MM//DZXXXXVVVddddVVV/1fR3DVVVddddVVV1111f8p11xzzYPf8R3f8bN+4id+wu/0Tu/02X3fP/infuqn+Mqv/Eru907v9E6fxVVXXXXVVVddddVV/x9Queqqq6666qqrrrrq/4R3fMd3/KzXeZ3Xee9rrrnmwbu7u/zmb/4mv/3bv83z82Iv9mKv/WIv9mKv/Q//8A+/zVVXXXXVVVddddVV/5dRueqqq6666qqrrrrqf61rrrnmwa/92q/9Xu/0Tu/02QC7u7v85E/+JH/913/NC/PkJz+Z13md13mvf/iHf/htrrrqqquuuuqqq676v4zKVVddddVVV1111VX/67zjO77jZ73O67zOe19zzTUP3t3d5Td/8zf5q7/6Ky5dusQLIon7/dIv/RLv/M7v/NpcddVVV1111VVXXfV/HZWrrrrqqquuuuqqq/5XuOaaax782q/92u/1Tu/0Tp8NsLu7y0/+5E/y13/917wwknhuFy5coNb64Bd7sRd77X/4h3/4ba666qqrrrrqqquu+r+KylVXXXXVVVddddVV/6O94zu+42e9zuu8zntfc801D97d3eU3f/M3+au/+isuXbrECyOJF+TChQv8yZ/8Ce/0Tu/0WZ/5mZ/521x11VVXXXXVVVdd9X8Vlauuuuqqq6666qqr/se55pprHvzar/3a7/VO7/ROnw2wu7vLT/7kT/JXf/VXSOIFkcSL6k/+5E94kzd5k9d+sRd7sdf+h3/4h9/mqquuuuqqq6666qr/i6hcddVVV1111VVXXfU/xju+4zt+1uu8zuu89zXXXPPg3d1dfvM3f5O/+qu/Ynd3F0lI4vmRxAsjied24cIFnvzkJ/M6r/M67/UP//APv81VV1111VVXXXXVVf8XUbnqqquuuuqqq6666r/VNddc8+DXfu3Xfq93eqd3+myA3d1dfvInf5K/+qu/AkASknh+JPGCSOJf8ku/9Eu88zu/82tz1VVXXXXVVVddddX/VVSuuuqqq6666qqrrvpv8Y7v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++LFi5/DVVddddVVV131vxXl+PHjXHXVVVddddX/ZNdcc82DX/zFX/y1r7nmmgffd999t/78z//8V3/pl37p2/zDP/zD73DVf6jDw8Pdf/iHf/idP/uzP/uZW2+99W82NzeP33zzzQ+++eabebEXezFmsxl33HEHL4wk/r+QxFX/drb5v842/9PY5vlZr9fs7e1x5swZrrvuOiTxxCc+kWmaGIbhe7jqqquuuuqqq/63ohw/fpyrrrrqqquu+p/s8PBw9x/+4R9+5/DwcPdLv/RL3+Yf/uEffoer/lMdHh7u3nrrrX/9W7/1W99z9uzZZ2xubh6/+eabH3zzzTdz8803s7Ozwx133MG/hiSuel6S+N/INlc9J9v8T2SbF9V6vWZvb48Xe7EX49SpU/zVX/0Vh4eHD57NZt8zDMMuV1111VVXXXXV/0aU48ePc9VVV1111VX/0x0eHu7+wz/8w+9w1X+5W2+99a9/67d+63vOnj37jM3NzeMPf/jDH3zzzTfzYi/2YqzXa86ePcu/hySuuup/E9v8T2Wbf6+9vT12dnZ40IMexC233MLv//7vU2v9m9Vq9ddcddVVV1111VX/G1GOHz/OVVddddVVV1111b/k1ltv/evf+q3f+p6zZ8/e+uAHP/ilT548efzhD384N998M3fccQfr9Zr/SJK46qr/Trb5n842/xnOnj3Ly77sy3L69Gme9KQnceHChePL5fJ7uOqqq6666qqr/jeiHD9+nKuuuuqqq6666qoX1a233vo3f/Znf/Yzh4eHuy/+4i/+2js7Ozz84Q9nNptxxx138F9BEldd9R/BNv+b2Oa/wnq9Zm9vj4c//OE86lGP4ud+7ueYpulruOqqq6666qqr/jeiHD9+nKuuuuqqq6666qp/jcPDw91/+Id/+J3f/u3f/p7Dw8Pdl3u5l3vtm2++mRd7sRdjNptxxx138N9JElddBWCb/61s899pvV5z5swZrr/+eq699trjf/u3f/s74zjeylVXXXXVVVdd9b8N5fjx41x11VVXXXXVVVf9WxweHu7+wz/8w+/81m/91nc/5CEPeembb775wTfffDPHjh3j7NmzrNdr/qeSxFX/u9nm/wrb/E9hG4D1es3tt9/Oy73cy3H8+HFuu+027rzzzp/hqquuuuqqq67634Zy/Phxrrrqqquuuuqqq/49jo6O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sc3/dbaxjW1sY5v/aY4dOwbAfffddytXXXXVVVddddX/VARXXXXVVVddddVV/01e7MVe7LUBnva0p/Gf6clPfjIAN998M/9atrGNbWxjG9vYxja2sY1tbGMb29jGNv+f2MY2trGNbWxjG9vYxja2sY1tbGMb2/x/ZRvb2MY2trHN/1S2sY1tbHPVVVddddVVV/2PR3DVVVddddVVV1313+Saa655MMDFixeRxH+WJz3pSQDccsst/FezjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxz1b/MNraxjW1s8z+dbWxjG9s80LFjxwA4e/bsrVx11VVXXXXVVf9TUbnqqquuuuqqq676b/BiL/Zirw1w8eJF/rOdP38egGPHjnHVVf/ZbPO/mW1eVMeOHeOqq6666qqrrvofj+Cqq6666qqrrrrqv8E111zzYICnPe1p/EexzfNz4cIFzp8/z7Fjx7jlllu46qr/CLaxjW1sYxvb/G9iG9vYxja2+be47777buWqq6666qqrrvqfiuCqq6666qqrrrrqv8GLvdiLvRbAhQsX+K9w/vx5rrrqX8s2trGNbWxjG9v8b2Qb29jGNv9ex44d46qrrrrqqquu+h+P4Kqrrrrqqquuuuq/0cWLF3l+JPEf6UlPehIAN998M1dddT/b2MY2trGNbWxjm//NbGMb29jGNv/Rjh8/DsA//MM//A5XXXXVVVddddX/VARXXXXVVVddddVV/w1e7MVe7LUBnva0p/GfzTZPetKTALjlllu46v8H29jGNraxjW1sYxvb/F9hG9vYxja2ueqqq6666qqrrnomKlddddVVV1111VX/Da655poHA1y8eJH7ScI2z00StvmPcOzYMWwjiav+97HN/3e2+Z/i2LFjANx33323ctVVV1111VVX/U9F5aqrrrrqqquuuuq/2Ou8zuu8N8Bf/MVf8F/l3LlzPJBt/rUkcdV/LNtc9YLZ5n+yY8eOAXD27Nlbueqqq6666qqr/qeictVVV1111VVXXfV/mG0Azp8/D8CxY8f4t7LNfxRJ/G9lm6v+Y9nmfxvbHDt2DID77rvvVq666qqrrrrqqv+pqFx11VVXXXXVVVf9F3uxF3ux1wJ42tOehiRs81/h/PnznDp1imPHjnHp0iX+O9nmqv9/bPO/lW2uuuqqq6666qr/lQiuuuqqq6666qqr/ou92Iu92GsDPO1pT+O/0rlz5wA4duwYV131n8k2trGNbWxjm/8tbGMb29jGNs/tlltuAeAf/uEffpurrrrqqquuuup/MipXXXXVVVddddVV/8WuueaaB/OfxDb3s81VV/1nsc3/Fbb51zp+/DgA9913361cddVVV1111VX/kxFcddVVV1111VVX/Re65pprHswzXbx4kf8KtrHNuXPnADh27BhXXfUvsY1tbGMb29jGNrb538o2trGNbWxz1VVXXXXVVVf9n0blqquuuuqqq6666r/Qi73Yi702wF/8xV/wn8U2trnqqhfGNv8f2OY/w7FjxwC47777buWqq6666qqrrvqfjMpVV1111VVXXXXVf6EzZ848CODixYs8P5KwzVVX/XvY5v8j2/xXOXbsGABnz559BlddddVVV1111f9kVK666qqrrrrqqqv+C11zzTUPBrh48SL/EknY5j+abWwjiav+d7HNVWCb/27Hjh0D4L777ruVq6666qqrrrrqfzIqV1111VVXXXXVVf+FXuzFXuy1AZ72tKdxP0nY5r/CpUuXuJ9t/rUkcdW/n22uetHY5n+i48ePA3D27Nlbueqqq6666qqr/iejctVVV1111VVXXfVf6JprrnkwwMWLF/mvYBsA2wAcO3aMfw/b/EeTxP90trnqP5dt/jc5duwYAPfdd9+tXHXVVVddddVV/5NRueqqq6666qqrrvov8mIv9mKvBfC0pz2NfytJ2OZfwzYAtvmfyDZX/f9hm//NbHPs2DGuuuqqq6666qr/NahcddVVV1111VVX/Re55pprHgxw8eJF/jucPn0agEuXLnHVVf/ZbPN/gW2e24Me9CAA/uEf/uF3uOqqq6666qqr/qejctVVV1111VVXXfVf5MVe7MVeG+DpT386krDNfxXbnD59GoBLly5x1VX/EWzzf4lt/jXuu+++W7nqqquuuuqqq/6no3LVVVddddVVV131X+TMmTMP5j+BbZ4f21x11b+Xbf6vss2/xbFjxwC47777ns5VV1111VVXXfU/HZWrrrrqqquuuuqq/yLXXHPNgwGe9rSn8V/JNgCnT58G4NKlS1x11f1s8/+Bbf6jHD9+HICzZ88+g6uuuuqq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jwNgG9sA2MY2tvnd3/1dAF78xV/8tbnqqquuuuqqq/6rUbnqqquuuuqqq676D3DNNdc8GODixYvc7/jx47zt274tD3nIQwDY3d3le77ne9jd3eW/im3+LSRx1X8t21z1H8M2/9m++7u/m4/+6I/m4Q9/OB/yIR/Cr//6r/PXf/3XPD+7u7sAnDlz5sFcddVVV1111VX/1ahcddVVV1111VVX/TudOXPmQTzT7u4ux48f52Ve5mV43dd9XQB2d3f567/+a37nd36H/y1s8x9FEv9X2eaq/162+e/y3d/93bz2a782L/3SL807vMM7cPLkSX7rt34L20jifpcuXeIZz3gGD3rQgx78Yi/2Yq/9D//wD7/NVVddddVVV131X4Vy/Phxrrrqqquuuuqqq/49XumVXumtX/EVX/Gtn/70p3P8+HHe7d3ejYc85CEA/PZv/zY/8iM/wjOe8Qyuuuqqfzvb/E+zWq245557WK1WPPjBD+ahD30oL/uyL8tqtWKxWHDp0iUkIYnjx4/zoAc9iPvuu+/Wf/iHf/gdrrrqqquuuuqq/ypUrrrqqquuuuqqq/6dzpw582CAhzzkITzkIQ8BYHd3l9/5nd9hd3eXBz/4wVx11VX/Mtv8b3Trrbfy0z/907z1W781AG/zNm/D/XZ3d7l06RL3e/EXf/HX/tEf/dHP4aqrrrrqqquu+q9C5aqrrrrqqquuuurf6ezZs8+47777br3mmmsezDMdP36ct3qrt+Kqq676/+X48eM80PHjxzl+/Dj3+63f+q3v4aqrrrrqqquu+q9E5aqrrrrqqquuuurf6bd+67e++8Ve7MVe6+zZsw/mqquuuuqF+K3f+q3v5qqrrrrqqquu+q+EHvSgB3HVVVddddVVV1111VVXXXXVVVddddVVV/2fROWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q/iHwG97wDVI1xkdgAAAABJRU5ErkJggg==) +```js +exampleSketch = startSketchOn(XZ) + |> startProfileAt([-10, 0], %) + |> arc({ + angleStart = 120, + angleEnd = -60, + radius = 5 + }, %) + |> line(end = [10, 0]) + |> line(end = [5, 0]) + |> bezierCurve({ + control1 = [-3, 0], + control2 = [2, 10], + to = [-5, 10] + }, %) + |> line(end = [-4, 10]) + |> line(end = [-5, -2]) + |> close() + +example = extrude(exampleSketch, length = 20, symmetric = true) +``` + +![Rendered example of extrude 2](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEUM0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1UEV1111VVXXXXVVVf9n3fNNdc8+B3f8R0/65u+6Zuefs011zyYq6666qqrrrrqqqv+v0APetCDuOqqq6666qqrrrrq/6bXeZ3Xee8Xe7EXe63XeZ3XeW8e4DM/8zNf5x/+4R9+m6uuuuqqq6666qqr/q9DD3rQg7jqqquuuuqqq6666v+Oa6655sGv/dqv/V7v9E7v9NkAFy9e5M/+7M/4tV/7Nb7sy74MgH/4h3/47c/8zM98Ha666qqrrrrqqquu+r+OylVXXXXVVVddddVV/ye8zuu8znu/2Iu92Gu9zuu8znsD/Oqv/ipPe9rTeOpTnwqAJO535syZB7/Yi73Ya//DP/zDb3PVVVddddVVV1111f9lVK666qqrrrrqqquu+l/rmmuuefBrv/Zrv9c7vdM7fTbAxYsX+dVf/VV+7dd+DQBJSOK57e7uPvjFXuzFXusf/uEffpurrrrqqquuuuqqq/4vo3LVVVddddVVV1111f86r/M6r/PeL/ZiL/Zar/M6r/PeAL/6q7/K0572NJ761KcCIIkX5g//8A950zd90/f+0R/90c/hqquuuuqqq6666qr/y6hcddVVV1111VVXXfW/wjXXXPPg137t136vd3qnd/psgIsXL/Krv/qr/Nqv/Rr3k8QLIon7PelJT+K93/u9H/xiL/Zir/0P//APv81VV1111VVXXXXVVf9XUbnqqquuuuqqq6666n+013md13nvF3uxF3ut13md13lvgF/91V/laU97Gk996lO5nyReEEk8t/Pnz/NHf/RHvNM7vdNnfeZnfuZvc9VVV1111VVXXXXV/1VUrrrqqquuuuqqq676H+eaa6558Gu/9mu/1zu90zt9NsDFixf51V/9VX7t136NB5LECyKJF0QSP/dzP8dHf/RHP/jFXuzFXvsf/uEffpurrrrqqquuuuqqq/4vonLVVVddddVVV1111f8Yr/M6r/PeL/ZiL/Zar/M6r/PeAL/6q7/K0572NJ761KdyP0m8IJJ4UZ0/f57d3d0Hv9iLvdhr/cM//MNvc9VVV1111VVXXXXV/0VUrrrqqquuuuqqq676b3XNNdc8+LVf+7Xf653e6Z0+G+DixYv86q/+Kr/2a7/GA0niBZHECyKJ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qqv+r7HN/xQ7Ozs8+tGP5pVe6ZW431/91V/xG7/xG1y4cAHbZCaZSWaSmbTWaK0xTRPDMDCbzT777Nmzn8NVV1111VVXXfV/BXrQgx7EVVddddVVV/1v9Y7v+I6f9aAHPeiz//iP/5iP/uiPBuA7v/M72dvb436S+LfY2dnhpptuYnt7m52dHXZ2drjpppv477K3t8fe3h77+/vccccd7O3tsb+/z97eHs+PJP43kcRVV/1PZpv/DWyzs7PDYx7zGF7plV4JgIsXL/KXf/mX/Pqv/zq2yUwyk8yktUZrjWmaGMeR2Wx267333vsQrrrqqquuuuqq/yvQgx70IK666qqrrrrqf6tv+qZvevoP/MAPPPg93/M9OXXqFL/6q7/K4x73OF4QSTw/Ozs77OzscOONN3LTTTdx00038YLcd999t549e/bW++6779b77rvvVoCzZ88+47777rsV4OzZs7cC3HfffbfyLzhz5syDJAngzJkzD77mmmseDPjMmTMPvuaaax58zTXXPBjgxV7sxV6bF2Bvb4+9vT329/d53OMex5133skLIon/jSRx1VX/FWzzv41tXpCdnR0e85jH8Eqv9EoA/OVf/iU/+qM/im0yk8yktUZrjWmamKaJaZrY29sTV1111VVXXXXV/xXoQQ96EFddddVVV131v9HrvM7rvPeHf/iHf9cf//Ef88qv/Mrccccd/PiP/zgvip2dHY4dO8aNN97ITTfdxE033cRzu++++249e/bsrX//93//22fPnn3Gfffdd+s//MM//Db/Ta655poHnzlz5sHXXHPNg1/sxV7sta655poHv9iLvdhr83zs7e1x5513cscdd/D4xz+eF0YS/5tJ4qqrXlS2+d/MNv8WOzs7vPd7vzcAf/EXf8GP/uiPkplkJplJa43WGuM4MgwDmfk6h4eHv81VV1111VVXXfV/AXrQgx7EVVddddVVV/1v9Lmf+7m/1XXdaz/ykY8E4Md//Me54447eEF2dnZ47GMfy0033cTOzg47Ozs80H333Xfrb/3Wb333P/zDP/zOP/zDP/w2/0tcc801D36xF3ux136xF3ux17rmmmse/GIv9mKvzQPs7e2xt7fHnXfeyR133MGdd97Jv0QS/5dI4qr/+2zzf4lt/iPt7Ozwtm/7tuzs7HDx4kW+6Iu+iMwkM2mt0VpjmiaGYWBra+t37rzzztfmqquuuuqqq676vwA96EEP4qqrrrrqqqv+t7nmmmse/E3f9E1PP3/+PKdOneKP//iP+eM//mOe287ODo997GO56aabuOmmm3ig++6779bf+q3f+u5/+Id/+J1/+Id/+G3+j7jmmmsefObMmQe/2Iu92Gu9+Iu/+Gu/2Iu92GvzAHt7e9x555087nGP48477+RFJYn/6yRx1f88tvm/zjb/FXZ2dnjbt31bdnZ2uHjxIt/0Td/EuXPnyExaa0zTxDiOSHrGhQsXHsxVV1111VVXXfV/AXrQgx7EVVddddVVV/1v8+Ef/uHf9Tqv8zrvDbC3t8d3fud38kCPfexjuemmm3jsYx/LA/3DP/zDb//93//9b//oj/7o5/D/xJkzZx704i/+4q/zYi/2Yq/1Yi/2Yq99zTXXPJhn2tvb48477+Rxj3scd955J/8Wkvj/TBJXvehs8/+Zbf677ezs8LZv+7bs7Oxw8eJFvvEbv5Fz587RWmOaJsZxZBgGSimvc+nSpd/mqquuuuqqq6763w496EEP4qqrrrrqqqv+t/mJn/gJ80w//uM/zh133MHOzg6PfexjeeVXfmUe6B/+4R9+++///u9/+0d/9Ec/h6u45pprHvzar/3a7/XiL/7ir/1iL/Zir80z7e3t8fjHP54/+ZM/4T+CJK76t5HE/xS2uepfzzb/k21vb/N2b/d27OzscPHiRb7+67+ec+fOMU0T0zQxDAPz+fyz77vvvs/hqquuuuqqq6763w496EEP4qqrrrrqqqv+N3md13md9/7wD//w7wJ43OMexx/90R/xKq/yKjz2sY/lfvfdd9+tv/Vbv/XdP/qjP/o5XPUCXXPNNQ9+7dd+7fd6p3d6p8/mmfb29rjzzjt53OMex5133sl/NElcddX/Fbb538A2z21nZ4c3eIM34KabbuLChQt8/dd/Pffddx/TNDGOI33f//Z99933Olx11VVXXXXVVf/boQc96EFcddVVV1111f8mn/u5n/tbL/ZiL/baAHt7e+zs7HC/H/mRH/ns3/7t3/6e++6771auepFdc801D36xF3ux13qxF3ux136d13md9+aZ9vb2ePzjH8+f/Mmf8F9BEldd9T+Nbf63sc2LYmdnh8c85jG88iu/MhcuXOD7v//7ecITnsA4jmTmrbu7uw/hqquuuuqqq6763w496EEP4qqrrrrqqqv+t3ixF3ux1/7cz/3c3+IB7rvvvlt/67d+67t/9Ed/9HO46t/tmmuuefBrv/Zrv9frvM7rvPc111zzYIC9vT0e//jH8yd/8if8d5HEVVf9Z7HN/1a2+ffY2dnhMY95DK/8yq/MhQsX+Oqv/mruuece1us1tl/n8PDwt7nqqquuuuqqq/43oxw/fpyrrrrqqquu+t/ixV/8xV/7FV/xFd8a4L777rv153/+57/6S7/0S9/mH/7hH36Hq/5DHB4e7v7DP/zD7/zZn/3Zz9x6661/vbm5efzmm29+8E033cRjHvMYZrMZd955J//TSOKqq14Q2/xfYJv/aOv1mjvvvJOdnR1uueUWbrrpJv74j/8Y2/R9f+tyufwdrrrqqquuuuqq/83Qgx70IK666qqrrrrqf5PXeZ3Xee8zZ8486Ed/9Ec/h6v+S1xzzTUP/vAP//DverEXe7HXBtjb2+Pxj388f/Inf8L/JpK46v8e2/xfZJv/Sjs7O7zP+7wPAF/1VV/FP/zDP9B13a333XffQ7jqqquuuuqqq/43Qw960IO46qqrrrrqqquuelFcc801D37Hd3zHz3qd13md9wbY29vj8Y9/PH/yJ3/C/zWSuOq/j23+P7HN/wSPfexjeYM3eAMuXLjAJ33SJzFNExHxOru7u7/NVVddddVVV131vxXl+PHjXHXVVVddddVVV70oDg8Pd//0T//0Z377t3/7ex7ykIe89M033/zgm266icc85jHMZjPuvPNO/r+TxFXPZpurns02/5OtVivOnDnDtddey5kzZ/jzP/9zWmvfM47jrVx11VVXXXXVVf9bUY4fP85VV1111VVXXXXVv8bh4eHub/3Wb33PP/zDP/zONddc8+Cbb775wTfddBOPecxjeOpTn8owDFx11f9ntvnfwDYPtF6vueOOO3iZl3kZjh07xjOe8QyWy+WDDw4Ovoerrrrqqquuuup/K8rx48e56qqrrrrqqquu+rc4e/bsrf/wD//wO4eHh7vXXHPNg0+ePHn8YQ97GH3fc8cdd/D8SOKqq/6vsM3/FrZ5UazXawAe9rCH8ehHP5pf+ZVfYblcfg1XXXXVVVddddX/VpTjx49z1VVXXXXVVVdd9W91eHi4+w//8A+/82d/9mc/c3h4uPtyL/dyr33TTTdx0003sbOzw5133smLQhJXXfU/kW3+N7LNv9Xe3h4Pe9jDOHHiBJl5/NZbb/2d9Xp9K1ddddVVV1111f9GlOPHj3PVVVddddVVV13173V4eLj7D//wD7/z27/929/zkIc85KUf/vCHP/imm24C4M477+TfSxJXXfWfxTb/m9nmP9J6vebs2bM89rGP5fTp0/zd3/3drefPn/8drrrqqquuuuqq/40ox48f56qrrrrqqquuuuo/yuHh4e4//MM//M7h4eHui7/4i7/2TTfdxGMf+1iGYeDs2bP8Z5HEVVe9ILb5v8I2/xX29vbY2dnhQQ96ENdffz2/9Vu/9T1cddVVV1111VX/G1GOHz/OVVddddVVV1111X+kw8PD3X/4h3/4nd/+7d/+noc85CEvffPNNz/4YQ97GJK44447+O8kiav+77DN/2W2+e909uxZXuZlXoaLFy8++O/+7u++5/DwcJerrrrqqquuuup/G8rx48e56qqrrrrqqquu+s9weHi4+w//8A+/c3h4uPviL/7ir33TTTfx2Mc+lqc97Wms12v+p5PEVf/1bPP/kW3+p1mv1wC89Eu/NJubm8f/9E//9Ge46qqrrrrqqqv+t6EcP36cq6666qqrrrrqqv8sh4eHu//wD//wO7/927/9Pa/4iq/41idPnjz+sIc9jNlsxp133sn/VZL4/8w2Vz1/tvmfzjb329vb42Vf9mXZ2to68fM///NfzVVXXXXVVVdd9b8N5fjx41x11VVXXXXVVVf9Zzs8PNz90z/9058+PDzcfbmXe7nXvummmwC48847ueqq/4ts87+FbV6Q9XrNzTffzPXXX3/8H/7hH37n7Nmzt3LVVVddddVVV/1vQjl+/DhXXXXVVVddddVV/xWOjo4u/cM//MPvALz4i7/4a990003s7OzwtKc9jauu+t/KNv+b2OZfa2dnh5tvvplrrrnmwb/1W7/1PVx11VVXXXXVVf+bEFx11VVXXXXVVVf9F/vRH/3Rz/mQD/mQhwA89rGP5X3e533Y2dnhqqv+p7KNbWxjG9vYxjb/09nGNraxzb/F4x73OABuvvnm1+aqq6666qqrrvrfhuCqq6666qqrrrrqv8F9991364d8yIc85L777rt1Z2eHt3u7t2N7exvb2MY2trHNVVf9V7CNbWxjG9vYxjb/W9jGNraxjW3+I+zt7XH77bezs7PDi73Yi702V111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uuqqq676b/JiL/ZirwXwtKc9jf9Mv/iLvwjAzTffzL+XbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2/5PZxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNba56XraxjW1sYxvbXHXVVVddddVVV/07Ubnqqquuuuqqq676P+7ChQsA7Ozs8D+Vba76v882/5vZ5qqrrrrqqquu+l+H4Kqrrrrqqquuuuq/yYu92Iu9NsDTn/50/jNduHCBJz/5yRw7doybb76Zq676z2Yb29jGNraxzf8mtrGNbWxjmwc6duwYAPfdd9+tXHXVVVddddVV/5MRXHXVVVddddVVV/03ueaaax4McPHiRf6zPfnJTwbg5ptv5qqr/iPYxja2sY1tbGOb/41sYxvb2Oaqq6666qqrrvo/g+Cqq6666qqrrrrqv8GLvdiLvTbA05/+dP4tJPGv8aQnPQmAm2++mauuelHYxja2sY1tbGMb2/xvZhvb2MY2tvnXOHbsGFddddVVV1111f8aVK666qqrrrrqqqv+G1xzzTUPBrh48SIPJAnbAEjCNv8RLly4wFVX3c82/1/Y5j/L2bNnn8FVV1111VVXXfU/HcFVV1111VVXXXXVf4MXe7EXey2Apz/96fxrSOLf4vz585w/f56bb76ZnZ0drvq/yTa2sY1tbGMb29jGNrb5v8o2trGNbWzzn2FnZweA++6771auuuqqq6666qr/6Qiuuuqqq6666qqr/ptJ4r/C+fPnAdjZ2cE2trGNba76n8s2trGNbWxjG9vYxja2sc3/F7axjW1sYxvb/Fc5duwYAPfdd9+tXHXVVVddddVV/9MRXHXVVVddddVVV/03eLEXe7HXBnj605/OfzbbADzpSU8C4Oabb+a52cY2trGNbWxjG9vYxja2sY1tbGObq14429jGNraxjW1sYxvb2MY2trGNbWxjm//PbGMb29jGNrb573bs2DGuuuqqq6666qr/NahcddVVV1111VVX/Te45pprHgxw8eJF/itdunSJY8eO8R/JNldd9e9hm/9Njh07BsA//MM//DZXXXXVVVddddX/dARXXXXVVVddddVV/8Ve7MVe7LUBnv70p/MfyTYvzJOe9CSOHTvGsWPHuOqq/w62sY1tbGMb2/xvYhvbXHXVVVddddVV/2tQueqqq6666qqrrvovds011zwY4OLFi7yoJGGbfyvbnD9/HoCdnR2uuuo/i23+r7DN83PLLbcAcPbs2Vu56qqrrrrqqqv+p6Ny1VVXXXXVVVdd9V/sxV7sxV4L4OLFi/xns81VV/1Hs83/Rbb517jvvvtu5aqrrrrqqquu+p+OylVXXXXVVVddddV/k93dXZ4fSdjmP9r58+cBOHbsGFdd9cLY5v862/xbHTt2DID77rvvVq666qqrrrrqqv/pCK666qqrrrrqqqv+i73Yi73YawM8/elP536S+K907Ngxrvr/yTa2sY1tbGMb29jGNv/X2MY2trGNbf6tjh07xlVXXXXVVVdd9b8KwVVXXXXVVVddddV/sWuuuebBABcvXuQ/k20eyDbnzp3jqv+bbGMb29jGNraxjW1sY5v/y2xjG9vYxja2+Y907NgxAP7hH/7ht7nqqquuuuqqq/43oHLVVVddddVVV131X+jFXuzFXhvg6U9/OpKwzX822zw329jmuUniqv9+trnqhbPNf4djx44BcN99993KVVddddVVV131vwGVq6666qqrrrrqqv9C11xzzYMBLl68yItCErZ5UdkGwDYPZJsXhW3+vSTx/51trvqPYZurrrrqqquuuuqqfwcqV1111VVXXXXVVf+FXuzFXuy1AHZ3d/nPYpvnxzb/FWxz1VX/Wrb53+Dmm28G4L777ruVq6666qqrrrrqfwMqV1111VVXXXXVVf8NLl68yFVX/X9jm/8rzp49+wyuuuqqq6666qr/DahcddVVV1111VVX/Rd6sRd7sdcGePrTn85VV/1fZZv/S2xzv1tuuQWAf/iHf/htrrrqqquuuuqq/w2oXHXVVVddddVVV/0Xuuaaax4MsLu7y38F2wDYxjZXXfUfwTb/V9nmhTl27BhXXXXVVVddddX/KlSuuuqqq6666qqr/ou82Iu92GsBPP3pT+f5kYRt/jOdPn0agEuXLnHVVS+Ibf4/sM2/1X333XcrV1111VVXXXXV/wZUrrrqqquuuuqqq/6LXHPNNQ8GuHjxIveThG3+M9nmqqvuZ5v/j2zz73XLLbcA8A//8A+/zVVXXXXVVVdd9b8Flauuuuqqq6666qr/Ii/2Yi/22gC7u7v8SyRhm/9Ij3zkIwG4dOkSV/3fYpurns02/xmOHTsGwJkzZx7MVVddddVVV131vwWVq6666qqrrrrqqv9iu7u7/FezzalTpwC47bbbsM0LIomr/nvZ5qp/mW3+Kx07dgyAa6655sFcddVVV1111VX/WxBcddVVV1111VVX/Rd5sRd7sdcGePrTn85/Bds8t0uXLvEvsY1tbGMb29jGNraxjW1sYxvb2MY2trHN/1e2sY1tbGMb29jGNraxjW1sYxvb2MY2trHNVc/JNraxjW1sY5v/aseOHeN+L/ZiL/baXHXVVVddddVV/xtQueqqq6666qqrrvovcs011zwYYHd3l/8Oj3rUozh27Bi33347/9lsc9VV/1q2+Z/s2LFj3O/FXuzFXusf/uEffpurrrrqqquuuup/OoKrrrrqqquuuuqq/wIv9mIv9toAu7u7/FeyjW1sc+rUKa666n8C29jGNraxjW3+pzt27Bj3e53XeZ335qqrrrrqqquu+t+AylVXXXXVVVddddV/gWuuuebBAE9/+tP573L69GkAbrvtNq666j+bbf6vOXbsGPe75pprHsxVV1111VVXXfW/AcFVV1111VVXXXXVf4EXe7EXey2Aixcv8twk8R/NNs/t9OnTAFy6dImrrvr3so1tbGMb29jGNrb53842trGNbXZ2dgDY3d3lGc94BgAv/uIv/tpcddVVV1111VX/0xFcddVVV1111VVX/Rfa3d3lv8OrvMqrAPB3f/d3XHXVi8I2trGNbWxjG9vY5v8S29jGNraxzXO75ZZbAHjGM57BrbfeCsBjH/vY1+Kqq6666qqrrvqfjuCqq6666qqrrrrqv8CLvdiLvTbA05/+dAAk8fxI4j+abR71qEcBcPvtt3PVVbaxjW1sYxvb2MY2tvm/yja2sY1tbPOv9YxnPAOA133d130frrrqqquuuuqq/+moXHXVVVddddVVV/0XuOaaax4MsLu7y3822zy3Rz3qUQDcdtttXPV/k22uek62+Y9y7NgxAHZ3d7l06RIAZ86ceRBXXXXVVVddddX/dARXXXXVVVddddVV/8le7MVe7LUBdnd3+c9gm+fHNrYBOHXqFAC7u7vYxja2sY1tbGObq/5nsI1tbGMb29jGNraxjW1sYxvb/H9mG9vYxja2sc1/pOPHjwOwu7vL7u4uz3jGMwB4sRd7sdfmqquuuuqqq676n4zgqquuuuqqq6666j/ZNddc82CApz/96fx3eJVXeRUA/u7v/o5/iW1sYxvb2MY2trGNbWxjG9vYxja2sY1t/r+zjW1sYxvb2MY2trGNbWxjG9vYxja2sc1Vz59tbGMb29jGNv8VbrnlFgCe8YxnYJtbb70VgBd7sRd7La666qqrrrrqqv/JCK666qqrrrrqqqv+k505c+ZBALu7u/xns81ze5VXeRUAbrvtNv4r2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb21z172cb29jGNraxzf8EtgF4xjOeAcDrvM7rvDdXXXXVVVddddX/ZFSuuuqqq6666qqr/pNdc801DwbY3d3lP4ttbPP8PPKRjwTg7/7u77jqqv9JbPO/xbFjxwDY3d1FEpcuXQLgmmuueTBXXXXVVVddddX/ZARXXXXVVVddddVV/8le7MVe7LUBnv70p/Nf7ZVf+ZUB+Lu/+zuuuuq/g21sYxvb2MY2tvnf4pZbbgFgd3eX++3u7vKMZzwDgBd7sRd7ba666qqrrrrqqv+pCK666qqrrrrqqqv+k11zzTUPBtjd3eW/im0A3uzN3gyA2267jauu+s9gG9vYxja2sY1tbPN/wbFjxwC49dZbeaBnPOMZALzYi73Ya3HVVVddddVVV/1PRXDVVVddddVVV131n+jFXuzFXhtgd3eX5yaJ/0wPf/jDOXXqFAB/93d/x1VX/VvYxja2sY1tbGMb2/xfYxvb2MY2tnlBnvGMZwDwOq/zOu/NVVddddVVV131PxWVq6666qqrrrrqqv9E11xzzYMBnv70pwMgCds8N0nY5j/SK7/yKwPwd3/3d1x11fNjm//PbPOiOHbsGABPf/rTsY0kAC5evMhVV1111VVXXfU/HsFVV1111VVXXXXVf6IzZ848CGB3d5d/K0n8W7zyK78yAL//+7/PVf9/2MY2trGNbWxjG9vYxja2+f/CNraxjW1sY5sX1bFjx3gg2wBcunSJZzzjGVxzzTUPfrEXe7HX5qqrrrrqqquu+p+I4Kqrrrrqqquuuuo/0TXXXPNggN3dXf4j2eYFsc27v/u7A/B3f/d37O7uYhvb2MY2trGNba76n802trGNbWxjG9vYxja2sY1t/r+zjW1sYxvb/HsdO3YMgIsXL3I/2wA84xnPAODFXuzFXourrrrqqquuuup/IoKrrrrqqquuuuqq/0Qv9mIv9toAT3/60/nXksS/1Su90isB8Ld/+7f8S2xjG9vYxja2sY1tbGMb29jGNraxjW1sc9XzZxvb2MY2trGNbWxjG9vYxja2sY1tbGObq54/29jGNraxjW3+Mxw/fhyA3d1dbPNAz3jGMwB48Rd/8dfmqquuuuqqq676n4jKVVddddVVV1111X+ia6655sEAu7u7/Fd5kzd5EwBuu+02brvtNv4r2Oaqq/4z2OZ/Cts8t0uXLgFw5syZB3PVVVddddVVV/1PRHDVVVddddVVV131n+TFXuzFXhtgd3eX/0pv8iZvAsDv/d7vcdVV/xvYxja2sY1tbGOb/wmOHTsGwO7uLgC2ud/u7i7PeMYzuOaaax78Yi/2Yq/NVVddddVVV131Pw3BVVddddVVV1111X+Sa6655sEAt956K/9V3vVd3xWAn//5n+e2227jqqv+p7CNbWxjG9vYxjb/W9jGNs/tGc94BgAv9mIv9lpcddVVV1111VX/0xBcddVVV1111VVX/Sc5c+bMgwAuXrzIf4WTJ0/yiq/4igBcunSJq676r2Yb29jGNraxjW3+t7rlllsAuHjxIg9km/s94xnPAODFX/zFX5urrrrqqquuuup/GipXXXXVVVddddVV/0muueaaBwPs7u7yQJKwzX+0d3mXdwHg7/7u77jtttu46qr/aLb5/8Q2x44dA+DixYvY5oFsI4lLly4BcObMmQdz1VVXXXXVVVf9T0Nw1VVXXXXVVVdd9Z/kxV7sxV4b4NZbb+UFkcRzk8S/1iu8wivw8Ic/HICf//mf56qr/rVsYxvb2MY2trGNbWzzf5ltbGMb29jmgS5evIhtbGOb+9lmd3eXZzzjGVxzzTUPfvEXf/HX5qqrrrrqqquu+p+E4Kqrrrrqqquuuuo/yTXXXPNggN3dXSTxH80293uXd3kXAH7gB36Aq666n21sYxvb2MY2trGNbWxjm/9PbGMb29jGNi/IsWPHALDNC/OMZzwDgMc+9rGvxVVXXXXVVVdd9T8JwVVXXXXVVVddddV/ghd7sRd7LYDd3V3+s33oh34oAH/7t3/LM57xDGxjG9vYxja2sY1trvrfyza2sY1tbGMb29jGNraxjW3+v7ONbWxjG9vY5t/iwoUL2MY2trHNA912220AvPiLv/jrcNVVV1111VVX/U9C5aqrrrrqqquuuuo/wTXXXPNggFtvvZX/TC//8i/Pwx72MAB+7/d+jxeFbf49JHHVv51trvqPZZv/CrZ5QXZ3dwG45pprHsxVV1111VVXXfU/CcFVV1111VVXXXXVf4IzZ848GODixYv8Zzlx4gTv/M7vDMD3f//3c+nSJf4r2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbf4z2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxz1b+dbWxjG9vYxjb/FWwDYJv72eZ+ly5d4hnPeAZnzpx50Iu92Iu9NlddddVVV1111f8UBFddddVVV1111VX/Ca655poHA+zu7vKf5Z3f+Z0BeMYznsFtt93G/2W2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjm6v+Z7KNbWxjG9vYxjb/3WxjG9vY5rk94xnPAODFXuzFXourrrrqqquuuup/CoKrrrrqqquuuuqq/wQv9mIv9toAt956K/8ZPviDP5iHPexhXLp0iR/4gR/gqqv+t7GNbWxjG9vY5n8q29jmudnGNra57bbbAHjxF3/x1+aqq6666qqrrvqfgspVV1111VVXXXXVf4JrrrnmwQC7u7u8qCRhm3/JG7zBG/Cwhz0MgJ/7uZ/jqqv+J7LN/yURgW1sYxsA20jifru7uwCcOXPmwVx11VVXXXXVVf9TEFx11VVXXXXVVVf9B7vmmmseDLC7u8t/tIc+9KG8wRu8AQDf//3fz2233cZVV/13sI1tbGMb29jGNrb5v2Zrawvb2MY2tnluly5d4hnPeAbXXHPNg1/sxV7stbnqqquuuuqqq/4nILjqqquuuuqqq676D/ZiL/Zirw1w66238h/poQ99KB/0QR8EwM///M9z2223cdVV/xlsYxvb2MY2trGNbWzzf51tbHO/+XyObWzzwtx2220AvNiLvdhrcdVVV1111VVX/U9AcNVVV1111VVXXfUf7MyZMw8C2N3d5YEkcT9J/Gs89KEP5YM+6IMA+Nu//Vv+9m//lquu+rewjW1sYxvb2MY2trHN/ye2sY1tbGMb2zy32WyGbWxjG9vYxjYP9IxnPAOAF3/xF39trrrqqquuuuqq/wmoXHXVVVddddVVV/0Hu+aaax4MsLu7y3+EEydO8IEf+IEAPOMZz+Dnfu7neFFJ4qr/22xz1YvGNv9az3jGMwC47rrryExsY5sX5NKlSwCcOXPmwVx11VVXXXXVVf8TEFx11VVXXXXVVVf9B3uxF3ux1wa49dZbkcS/x4kTJ/jET/xEAJ7xjGfw/d///fxr2MY2trGNbWxjG9vYxja2sY1tbGObq/5r2cY2trGNbWxjG9vYxja2sY1tbHPV87KNbWxjG9vY5t/i0qVLAGxubnLmzBlsA2Ab2wDY5n67u7s84xnP4Jprrnnwi73Yi702V1111VVXXXXVfzeCq6666qqrrrrqqv9g11xzzYMBdnd3+fd4yEMewid+4icC8IxnPIPv//7v57+SbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2Ob/CtvYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trHNVf96trGNbWxjG9v8R9rd3QVgPp9z8uRJbGMb2wDYBsA2tgG47bbbAHixF3ux1+Kqq6666qqrrvrvRnDVVVddddVVV131H+iaa655MMDu7i7/Hg95yEP4gA/4AACe8Yxn8P3f//38X2Ab29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb21z1X8c2trGNbWxjG9v8V3nGM54BwCMe8QhsY5sX5hnPeAYAL/7iL/7aXHXVVVddddVV/92oXHXVVVddddVVV/0HerEXe7HXBrj11lv5t3rIQx7C+7//+wPwjGc8g+///u/nqqv+r7PN/3QnT57ENraxjW1sYxtJ3O/SpUsAnDlz5sFcddVVV1111VX/3Qiuuuqqq6666qqr/gOdOXPmQQC7u7u8qCRxv9d93dfl/d///QH427/9W77/+7+fq676v8A2trGNbWxjG9vY5n+yZzzjGQAcO3aMra0tbGMb2zw/ly5d4rbbbuOaa6558Iu92Iu9NlddddVVV1111X8ngquuuuqqq6666qr/QNdcc82DAXZ3d/nXer/3ez9e7/VeD4Cf+7mf4+d+7ue46qr/TWxjG9vYxja2sc3/Zs94xjMAOHXqFGfOnME2tgGwDYBtHugZz3gGAC/2Yi/2Wlx11VVXXXXVVf+dCK666qqrrrrqqqv+A73Yi73YawPceuutvKiOHz/Ox33cx/GQhzyES5cu8f3f//387d/+LVdd9T+JbWxjG9vYxja2sY1t/q+6dOkSly5d4vjx4zzykY/ENgC2AbDNc3vGM54BwIu/+Iu/NlddddVVV1111X8ngquuuuqqq6666qr/QNdcc82DAXZ3d3lRvMzLvAwf93Efx4kTJ9jd3eX7vu/7uPXWW7GNba666r+CbWxjG9vYxja2sY1t/r+yzcWLF/nrv/5rAF7u5V4O29jGNra5n23ud+nSJQDOnDnzYK666qqrrrrqqv9OBFddddVVV1111VX/Qa655poH83xI4n6SADh+/Djv+77vy9u+7dsC8Dd/8zd8/dd/Pbu7uzyQbWxjG9vYxja2sY1tbHPVVc/NNraxjW1sYxvb2MY2trHNVWAb29jGNraxzf3+5m/+BoAzZ87wyEc+Etvczza2AbCNbS5dusRtt93GNddc8+AXf/EXf22uuuqqq6666qr/LgRXXXXVVVddddVV/0Fe7MVe7LUB/vqv/5oX5sEPfjAf+7Efy0Me8hB2d3f5vu/7Pn7u536Ofw/b2MY2trGNbWxjG9vYxja2sc1V/3vYxja2sY1tbGMb29jGNraxjW2uesFsYxvb2MY2/5JLly7xsz/7swC82Zu9GbaxjW1ekGc84xkAPPaxj30trrrqqquuuuqq/y4EV1111VVXXXXVVf9Bzpw58yBeiOPHj/M+7/M+vO/7vi8Az3jGM/i+7/s+nvGMZ/DfwTa2sY1tbGMb29jGNraxjW1sYxvb2MY2trnqhbONbWxjG9vYxja2sY1tbGMb29jGNraxzVX/NraxjW1sYxvb/Fs94xnPYHd3l5tvvpmHPvSh2AbANgC2eaDbbrsNgBd/8Rd/Ha666qqrrrrqqv8uVK666qqrrrrqqqv+g1xzzTUPBnjGM56BJGxzv9d+7dfmdV7ndbjf7/7u7/K7v/u7/F9gm6uu+u9km/8Ku7u7/O7v/i5v+ZZvyTu90zvxl3/5l/zWb/0WALaRxANdunQJgGuuuebBXHXVVVddddVV/12oXHXVVVddddVVV/0HebEXe7HXBrj11lu534Mf/GDe+q3fmuPHjwPwjGc8g+/7vu/jqquu+texzf8Ef/M3fwPAW77lW/L6r//6nDx5kp/6qZ/i+bl06RK33XYbt9xyy4Ne7MVe7LX/4R/+4be56qqrrrrqqqv+q1G56qqrrrrqqquu+g9yzTXXPBhgd3eX48eP81Zv9VY8+MEPBuAZz3gGv/u7v8sznvEMrrrqqhfMNv/T/c3f/A3Hjh3jtV7rtXjZl31ZHvrQh/JTP/VT3H777dhGEvd7xjOewS233MKLvdiLvdY//MM//DZXXXXVVVddddV/Ncrx48e56qqrrrrqqquu+ve65pprHvzmb/7mHw1w/Phx3vqt35rjx4+zu7vLn/7pn/JzP/dzXLp0iauu+v/ONv8XPOMZz+Bv/uZvuO6667juuut4yEMewqMe9Sge/OAHM5vNmM/n7O3tAfCSL/mSSOK3fuu3voerrrrqqquuuuq/GpWrrrrqqquuuuqq/wAv9mIv9to800u/9Etzv2c84xkcO3aMt3iLt0AStnkgSdjmgSRhmweShG0eSBK2eSBJ2OaBJGGbB5KEbR5IErZ5IEnY5oEkYZsHkoRtHkgStnkgSdjmgSRhmweShG0eSBK2eSBJ2OaBJGGbB5KEbR5IErZ5IEnY5oEkYZsHkoRtHkgStnkgSdjmgSRhmweShG0eSBK2eSBJ2OaBJGGbB5KEbR5IErZ5IEnY5oEkYZsHkoRtHkgStnkgSdjm/6Pjx49z/PhxAF7qpV6K53bmzJkHc9VVV1111VVX/XegctVVV1111VVXXfUf4B/+4R9++7d+67e++3Ve53Xemwd4qZd6Ka666qqrfuu3fuu7ueqqq6666qqr/jugBz3oQVx11VVXXXXVVVf9R3ixF3ux177mmmsezBUGxHMyIJ6TAfGcDIjnZEA8JwPiORkQz8mAeE4GxHMyIJ6TAfGcDIjnZEA8JwPiORkQz8mAeE4GxHMyIJ6TAfGcDIjnZEA8JwPiORkQz8mAeE4GxHMyIJ6TAfGcDIjnZEA8JwPiORkQz8mAeE4GxHMyIJ6TAfGcDIjnZEA8JwPiORkQz8mAeE4GxHMyIJ6TAfGcDIjnZEA8JwPiORkQz8mAeE4GxHMyIJ6TAfGcDIjn5N/6rd/6Hq666qqrrrrqqv8O6EEPehBXXXXVVVddddVVV1111VVXXXXVVVddddX/SVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X8U/AmyBjpfDnh8jAAAAAElFTkSuQmCC) + +```js +exampleSketch = startSketchOn(XZ) + |> startProfileAt([-10, 0], %) + |> arc({ + angleStart = 120, + angleEnd = -60, + radius = 5 + }, %) + |> line(end = [10, 0]) + |> line(end = [5, 0]) + |> bezierCurve({ + control1 = [-3, 0], + control2 = [2, 10], + to = [-5, 10] + }, %) + |> line(end = [-4, 10]) + |> line(end = [-5, -2]) + |> close() + +example = extrude(exampleSketch, length = 10, bidirectionalLength = 50) +``` + +![Rendered example of extrude 3](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAD/n0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVX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2MY2trGNbWzzf4ltbGMb29jGNraxjW1s89d//dcAvPZrvzb/VpJ4bru7u+zs7PBAknhuknh+JPFAknggSUhCEpIAkMQDSQJAEpKQRGuN+Xz+2lx11VVXXXXVVVf9z0Plqquuuuqqq676f+eaa6558FOe8hQAJPGCSOIFkcQLIokXRBKv+7qvC8Df/M3fcO+99/J/nW3+vzk8POSee+7huuuu48EPfjDPeMYz+PeQxAsjCQDb3E8StgGQhG1eEEkA2OaBJGEbSUhCEgCSkIQkJDGOI6WUB3PVVVddddVVV131Pw/BVVddddVVV131/8rrvM7rvDfAhQsXeCBJAEjiuUniBZEEgCSemyQAJHG/t33bt+UhD3kI99xzD3/913+NbWxjG9tc9X/DwcEBT33qUwF47dd+bV4UkviX3HbbbRw7dowXRBIPJIn7SQJAEgCSeFFI4oEkcT9JSAJA0oPn8/mDueqqq6666qqrrvqfheCqq6666qqrrvp/5cVe7MVe60//9E8BkMQLIonnJgkASbwgknhBHvrQh/KyL/uyAPzN3/wNz49tbGMb29jGNraxzVX/e9x7770APPjBD+bBD34wz00SL4gkXhhJ/EeRxANJQhLPTRKSAJCEJAAkIYnWGrXWB3PVVVddddVVV131PwvBVVddddVVV131/8qLvdiLvfaTn/xkHkgSAJJ4bpJ4QSQBIInnJgkASdzv/d7v/QD467/+a+655x7+LWxjG9vYxja2sY1tbHPV/wwHBwf8zd/8DQCv9Vqvxb+VJO536dIldnZ2AJCEJJ6bJB5IEveTBIAkACRxP0lI4n6SkASAJO4nCQBJSEISEUFrje3t7dfiqquuuuqqq6666n8Wgquuuuqqq6666v+Va6655sFPecpTkMQLIonnJgkASbwgknhB3v/93x+Ae+65h7/5m7/hP5NtbGMb29jGNraxjW1sY5ur/nM99alPBeD48eM8+MEP5j/KTTfdxP0k8dwk8UCSeGEk8YJI4n6SAJAEgCQkIYnWGrXWh3DVVVddddVVV131PwvBVVddddVVV131/8brvM7rvDfAhQsXuJ8kXhBJvCCSeEEkASAJgJd92ZflIQ95CAB/8Ad/wP8ktrGNbWxjG9vYxja2sY1tbGObq150+/v7POUpT+H48eO81Eu9FP8ekrh06RLPjySemySeH0kASOJf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gefnvvvuu/Xs2bO3/v3f//1vA5w9e/YZ9913361nz5699b777ruVF8GZM2ceJElnzpx58DXXXPNggBd7sRd7LYBrrrnmwS/2Yi/22gDb29sAPOpRjwJgf3+fu+66i7vuuou77rqL/f19npskrrrqP5pt/iPs7+/z53/+5zzxiU/kUY96FC//8i/Pa77ma2Kb3/qt30ISkgCQhCSmaULSg7a2th58cHBwK1ddddVVV1111VX/udCDHvQgrrrqqquuuuqq/z0+/MM//Lu2t7ff+8SJEzzsYQ/jrrvu4md+5me43/b2No961KN4hVd4BZ7bfffdd+tv/dZvfTfAP/zDP/zOP/zDP/w2/0WuueaaB7/Yi73Ya505c+bBL/7iL/7aL/ZiL/baPJf9/X2e+MQnctddd3HXXXfxryGJq66yzX+nl3/5l+flX/7lAfjrv/5rfvInf5LWGq01pmlimibW6zXXXHMNd9111+tcuHDht7nqqquuuuqqq676z4Ue9KAHcdVVV1111VVX/e/xTd/0TU/f399/8MMe9jAAvv/7vx+AG264gdd93dflge67775bf+u3fuu7AX70R3/0c/gf5pprrnnwi73Yi73Wi73Yi73267zO67w3D7C/v89dd93FE5/4RO666y7+I0niqv89bPO/yfb2Nu/2bu8GwO7uLt/+7d/O+fPnmaaJaZoYhoETJ04wDMNnP/WpT/0crrrqqquuuuqqq/5zoQc96EFcddVVV1111VX/e/zET/yEeaa77rqL7e1ttre3ud99991362/91m9992//9m9/z3333Xcr/0tcc801Dz5z5syDX+zFXuy1Xud1Xue9r7nmmgcD7O/vA/DEJz6RP//zP+e/mySu+tezzf8n29vbvOVbviXb29vs7u7yrd/6rZw7d45pmhiGga2tLUop3/2EJzzhfbjqqquuuuqqq676z4Ue9KAHcdVVV1111VVX/e/wOq/zOu/94R/+4d/Fc7nvvvtu/a3f+q3v/q3f+q3vPnv27DP4P+Caa6558Gu/9mu/1zu90zt9Ns+0v7/PXXfdxROf+ETuuusu/i+TxH8F21z1n2N7e5u3fMu3ZHt7m4sXL/It3/It3HfffYzjSN/3bG5u/vY//MM/vA5XXXXVVVddddVV/7nQgx70IK666qqrrrrqqv8dPvzDP/y7Xud1Xue9eab77rvv1h/90R/9nN/6rd/6bv6Puuaaax78Yi/2Yq/9Oq/zOu/1Yi/2Yq/NM9111138+Z//OXfddRdXXfU/gW2e2/b2No961KN49KMfzTRNfP7nfz7jOCKJkydP3vq3f/u3D+Gqq6666qqrrrrqPxfl+PHjXHXVVVddddVV/zvceuutf7O5uXn86Oho9zM/8zNf+0d/9Ec/59Zbb/1r/g87PDzcvfXWW//6t37rt77nt3/7t7/n8PBw98Vf/MVfe3t7m0c96lE86lGP4vz58+zv73PVVf+ZbPOvNQwD+/v73HjjjVxzzTWcPHmSv/u7v2OaJra3t48fHBx8zzAMu1x11VVXXXXVVVf950EPetCDuOqqq6666qqrrvrf5Jprrnnwa7/2a7/XO73TO302z3TXXXfxW7/1W+zv73PVVf8WtvnPsr29zbu/+7sD8PVf//U87nGP48yZM9x5552vc/Hixd/mqquuuuqqq6666j8P5fjx41x11VVXXXXVVVf9b3J4eLj7D//wD7/zW7/1W999eHi4++Iv/uKvvb29zUMe8hBmsxn7+/sMw8BVV93PNv+dhmFgf3+fhzzkITz84Q/nt37rt+j7nr7vb7148eLvcNVVV1111VVXXfWfh3L8+HGuuuqqq6666qqr/jc6Ojq69A//8A+/89u//dvfc3h4uPuyL/uyr33DDTfwkIc8hL7vufvuu7nq/y7b/G8yDAOnT5/mmmuu4dSpUzz+8Y9nc3OTe++993u46qqrrrrqqquu+s9DOX78OFddddVVV1111VX/mx0eHu7+wz/8w+/89m//9vc85CEPeembbrrpwTfeeCOPetSjePrTn856veZFJYmr/nvY5v+yYRi46667eMmXfEluuukmzp07x3333Xfr2bNnv4errrrqqquuuuqq/zyU48ePc9VVV1111VVXXfV/weHh4e5v/dZvfc/Zs2ef8eAHP/ilT548efwhD3kIs9mMu+66i/9Kkvj/wjZXvWiGYWB/f5+HPOQh3HDDDfzZn/0Z995779dw1VVXXXXVVVdd9Z+Hcvz4ca666qqrrrrqqqv+L7n11lv/+s/+7M9+5vDwcPdlX/ZlX/uGG27gxhtv5K677mIYBq666r+KbZ7buXPnuOGGG7j22mu5dOnS8ac+9anfMwzDLlddddVVV1111VX/OSjHjx/nqquuuuqqq6666v+a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VVddddX/UwRXXXXVVVddddVV/4ddc801DwbY3d0FQBL/WhcvXuQv/uIvAHiFV3gFrvrPYRvb2MY2trGNbWxjG9vYxja2sc3/Bfv7+wBcc801D+aqq6666qqrrrrqPxbBVVddddVVV1111f9R11xzzYMBLl26hCQeSBL/Gr/2a78GwI033sgNN9yAbWxjG9vYxja2sc3/J7axjW1sYxvb2MY2trGNbWxjG9vYxja2sc1VV1111VVXXXXVVf8pCK666qqrrrrqqqv+j3qxF3ux1wbY3d3l3+vixYv8+Z//OQCPfvSj+ZfYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNra56t/GNraxjW329vYAuOaaax7MVVddddVVV1111X8cgquuuuqqq6666qr/4y5dusR/hF/7tV8D4KabbuKqq14UtrGNbWxjG9vY5qqrrrrqqquuuuq/CMFVV1111VVXXXXV/1Fnzpx5EMDu7i4viCReVBcvXuSpT30q29vbPPrRj+aqq2xjG9vYxja2sY1trrrqqquuuuqqq/4HILjqqquuuuqqq676P+qaa655MMDu7i4vCkn8S/7sz/4MgMc85jFc9X+fbWxjG9vYxja2sc1VV1111VVXXXXV/wIEV1111VVXXXXVVVe9yJ761KcCcOONN7K9vc1V/3vZxja2sY1tbGMb29jmv9LOzg5XXXXVVVddddVV/wkIrrrqqquuuuqqq/6PerEXe7HXBrjtttv4j3Lx4kWe8pSnAHDjjTdy1f88trGNbWxjG9vYxja2sc3/VGfOnHkwV1111VVXXXXVVf9xCK666qqrrrrqqquu+lf5sz/7MwAe85jHcNV/LtvYxja2sY1tbGMb29jGNraxzf92L/ZiL/ZaXHXVVVddddVVV/3HoXLVVVddddVVV131f9Q111zzYIDd3V0AJGEbSdjm3+opT3kKANvb21z1gtnmqquuuuqqq6666qr/dgRXXXXVVVddddVV/wddc801Dwa4dOkS/1FsA3DhwgWe/OQns7Ozww033IBtbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1t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/i/Y2dnhsY99LAC/9Vu/9d1cddVVV1111VVXveioXHXVVVddddVVV/0v96M/+qOfA3DNNdc8mKuu+j/uR3/0Rz/nvvvuu5WrrrrqqquuuuqqFw160IMexFVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Slauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4p/BCFowdSvQSRKAAAAAElFTkSuQmCC) + diff --git a/docs/kcl/fromCm.md b/docs/kcl/fromCm.md new file mode 100644 index 000000000..66f3ac439 --- /dev/null +++ b/docs/kcl/fromCm.md @@ -0,0 +1,45 @@ +--- +title: "fromCm" +excerpt: "Converts a number from centimeters to the current default unit." +layout: manual +--- + +Converts a number from centimeters to the current default unit. + +No matter what units the current file uses, this function will always return a number equivalent to the input in centimeters. + +For example, if the current file uses inches, `fromCm(1)` will return `0.393701`. If the current file uses millimeters, `fromCm(1)` will return `10`. If the current file uses centimeters, `fromCm(1)` will return `1`. + +**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function. + +We merely provide these functions for convenience and readability, as `fromCm(10)` is more readable that your intent is "I want 10 centimeters" than `10 * 10`, if the file settings are in millimeters. + +```js +fromCm(input: number): number +``` + +### Tags + +* `units` + + +### Arguments + +| Name | Type | Description | Required | +|----------|------|-------------|----------| +| `input` | [`number`](/docs/kcl/types/number) | | Yes | + +### Returns + +[`number`](/docs/kcl/types/number) + + +### Examples + +```js +totalWidth = fromCm(10) +``` + +![Rendered example of fromCm 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABMiklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V/FPwKn4gueWQqZ4gAAAABJRU5ErkJggg==) + + diff --git a/docs/kcl/yd.md b/docs/kcl/fromFt.md similarity index 88% rename from docs/kcl/yd.md rename to docs/kcl/fromFt.md index 927e67c7d..44b3ddbaf 100644 --- a/docs/kcl/yd.md +++ b/docs/kcl/fromFt.md @@ -1,21 +1,21 @@ --- -title: "yd" -excerpt: "Yards conversion factor for current projects units." +title: "fromFt" +excerpt: "Converts a number from feet to the current default unit." layout: manual --- -Yards conversion factor for current projects units. +Converts a number from feet to the current default unit. -No matter what units the current project uses, this function will always return the conversion factor to yards. +No matter what units the current file uses, this function will always return a number equivalent to the input in feet. -For example, if the current project uses inches, this function will return `36`. If the current project uses millimeters, this function will return `914.4`. If the current project uses yards, this function will return `1`. +For example, if the current file uses inches, `fromFt(1)` will return `12`. If the current file uses millimeters, `fromFt(1)` will return `304.8`. If the current file uses feet, `fromFt(1)` will return `1`. -**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function. +**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function. -We merely provide these functions for convenience and readability, as `10 * yd()` is more readable that your intent is "I want 10 yards" than `10 * 914.4`, if the project settings are in millimeters. +We merely provide these functions for convenience and readability, as `fromFt(10)` is more readable that your intent is "I want 10 feet" than `10 * 304.8`, if the file settings are in millimeters. ```js -yd(): number +fromFt(input: number): number ``` ### Tags @@ -23,6 +23,11 @@ yd(): number * `units` +### Arguments + +| Name | Type | Description | Required | +|----------|------|-------------|----------| +| `input` | [`number`](/docs/kcl/types/number) | | Yes | ### Returns @@ -32,9 +37,9 @@ yd(): number ### Examples ```js -totalWidth = 10 * yd() +totalWidth = fromFt(10) ``` -![Rendered example of yd 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABMiklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V/FPwKn4gueWQqZ4gAAAABJRU5ErkJggg==) +![Rendered example of fromFt 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABMiklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V/FPwKn4gueWQqZ4gAAAABJRU5ErkJggg==) diff --git a/docs/kcl/cm.md b/docs/kcl/fromInches.md similarity index 89% rename from docs/kcl/cm.md rename to docs/kcl/fromInches.md index 621f840a0..b810927b9 100644 --- a/docs/kcl/cm.md +++ b/docs/kcl/fromInches.md @@ -1,21 +1,21 @@ --- -title: "cm" -excerpt: "Centimeters conversion factor for current projects units." +title: "fromInches" +excerpt: "Converts a number from inches to the current default unit." layout: manual --- -Centimeters conversion factor for current projects units. +Converts a number from inches to the current default unit. -No matter what units the current project uses, this function will always return the conversion factor to centimeters. +No matter what units the current file uses, this function will always return a number equivalent to the input in inches. -For example, if the current project uses inches, this function will return `0.393701`. If the current project uses millimeters, this function will return `10`. If the current project uses centimeters, this function will return `1`. +For example, if the current file uses inches, `fromInches(1)` will return `1`. If the current file uses millimeters, `fromInches(1)` will return `25.4`. -**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function. +**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function. -We merely provide these functions for convenience and readability, as `10 * cm()` is more readable that your intent is "I want 10 centimeters" than `10 * 10`, if the project settings are in millimeters. +We merely provide these functions for convenience and readability, as `fromInches(10)` is more readable that your intent is "I want 10 inches" than `10 * 25.4`, if the file settings are in millimeters. ```js -cm(): number +fromInches(input: number): number ``` ### Tags @@ -23,6 +23,11 @@ cm(): number * `units` +### Arguments + +| Name | Type | Description | Required | +|----------|------|-------------|----------| +| `input` | [`number`](/docs/kcl/types/number) | | Yes | ### Returns @@ -32,9 +37,9 @@ cm(): number ### Examples ```js -totalWidth = 10 * cm() +totalWidth = fromInches(10) ``` -![Rendered example of cm 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABMiklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V/FPwKn4gueWQqZ4gAAAABJRU5ErkJggg==) +![Rendered example of fromInches 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABMiklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V/FPwKn4gueWQqZ4gAAAABJRU5ErkJggg==) diff --git a/docs/kcl/m.md b/docs/kcl/fromM.md similarity index 88% rename from docs/kcl/m.md rename to docs/kcl/fromM.md index 0a8812dd6..ef47b6191 100644 --- a/docs/kcl/m.md +++ b/docs/kcl/fromM.md @@ -1,21 +1,21 @@ --- -title: "m" -excerpt: "Meters conversion factor for current projects units." +title: "fromM" +excerpt: "Converts a number from meters to the current default unit." layout: manual --- -Meters conversion factor for current projects units. +Converts a number from meters to the current default unit. -No matter what units the current project uses, this function will always return the conversion factor to meters. +No matter what units the current file uses, this function will always return a number equivalent to the input in meters. -For example, if the current project uses inches, this function will return `39.3701`. If the current project uses millimeters, this function will return `1000`. If the current project uses meters, this function will return `1`. +For example, if the current file uses inches, `fromM(1)` will return `39.3701`. If the current file uses millimeters, `fromM(1)` will return `1000`. If the current file uses meters, `fromM(1)` will return `1`. -**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function. +**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function. -We merely provide these functions for convenience and readability, as `10 * m()` is more readable that your intent is "I want 10 meters" than `10 * 1000`, if the project settings are in millimeters. +We merely provide these functions for convenience and readability, as `fromM(10)` is more readable that your intent is "I want 10 meters" than `10 * 1000`, if the file settings are in millimeters. ```js -m(): number +fromM(input: number): number ``` ### Tags @@ -23,6 +23,11 @@ m(): number * `units` +### Arguments + +| Name | Type | Description | Required | +|----------|------|-------------|----------| +| `input` | [`number`](/docs/kcl/types/number) | | Yes | ### Returns @@ -32,9 +37,9 @@ m(): number ### Examples ```js -totalWidth = 10 * m() +totalWidth = 10 * fromM(10) ``` -![Rendered example of m 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABMiklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V/FPwKn4gueWQqZ4gAAAABJRU5ErkJggg==) +![Rendered example of fromM 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABMiklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V/FPwKn4gueWQqZ4gAAAABJRU5ErkJggg==) diff --git a/docs/kcl/ft.md b/docs/kcl/fromMm.md similarity index 88% rename from docs/kcl/ft.md rename to docs/kcl/fromMm.md index 0e1c54278..e9bc571b8 100644 --- a/docs/kcl/ft.md +++ b/docs/kcl/fromMm.md @@ -1,21 +1,21 @@ --- -title: "ft" -excerpt: "Feet conversion factor for current projects units." +title: "fromMm" +excerpt: "Converts a number from mm to the current default unit." layout: manual --- -Feet conversion factor for current projects units. +Converts a number from mm to the current default unit. -No matter what units the current project uses, this function will always return the conversion factor to feet. +No matter what units the current file uses, this function will always return a number equivalent to the input in millimeters. -For example, if the current project uses inches, this function will return `12`. If the current project uses millimeters, this function will return `304.8`. If the current project uses feet, this function will return `1`. +For example, if the current file uses inches, `fromMm(1)` will return `1/25.4`. If the current file uses millimeters, `fromMm(1)` will return `1`. -**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function. +**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function. -We merely provide these functions for convenience and readability, as `10 * ft()` is more readable that your intent is "I want 10 feet" than `10 * 304.8`, if the project settings are in millimeters. +We merely provide these functions for convenience and readability, as `fromMm(10)` is more readable that your intent is "I want 10 millimeters" than `10 * (1/25.4)`, if the file settings are in inches. ```js -ft(): number +fromMm(input: number): number ``` ### Tags @@ -23,6 +23,11 @@ ft(): number * `units` +### Arguments + +| Name | Type | Description | Required | +|----------|------|-------------|----------| +| `input` | [`number`](/docs/kcl/types/number) | | Yes | ### Returns @@ -32,9 +37,9 @@ ft(): number ### Examples ```js -totalWidth = 10 * ft() +totalWidth = fromMm(10) ``` -![Rendered example of ft 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABMiklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V/FPwKn4gueWQqZ4gAAAABJRU5ErkJggg==) +![Rendered example of fromMm 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABMiklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V/FPwKn4gueWQqZ4gAAAABJRU5ErkJggg==) diff --git a/docs/kcl/mm.md b/docs/kcl/fromYd.md similarity index 88% rename from docs/kcl/mm.md rename to docs/kcl/fromYd.md index b7b4ef546..e58e9e18b 100644 --- a/docs/kcl/mm.md +++ b/docs/kcl/fromYd.md @@ -1,21 +1,21 @@ --- -title: "mm" -excerpt: "Millimeters conversion factor for current projects units." +title: "fromYd" +excerpt: "Converts a number from yards to the current default unit." layout: manual --- -Millimeters conversion factor for current projects units. +Converts a number from yards to the current default unit. -No matter what units the current project uses, this function will always return the conversion factor to millimeters. +No matter what units the current file uses, this function will always return a number equivalent to the input in yards. -For example, if the current project uses inches, this function will return `(1/25.4)`. If the current project uses millimeters, this function will return `1`. +For example, if the current file uses inches, `fromYd(1)` will return `36`. If the current file uses millimeters, `fromYd(1)` will return `914.4`. If the current file uses yards, `fromYd(1)` will return `1`. -**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function. +**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function. -We merely provide these functions for convenience and readability, as `10 * mm()` is more readable that your intent is "I want 10 millimeters" than `10 * (1/25.4)`, if the project settings are in inches. +We merely provide these functions for convenience and readability, as `fromYd(10)` is more readable that your intent is "I want 10 yards" than `10 * 914.4`, if the file settings are in millimeters. ```js -mm(): number +fromYd(input: number): number ``` ### Tags @@ -23,6 +23,11 @@ mm(): number * `units` +### Arguments + +| Name | Type | Description | Required | +|----------|------|-------------|----------| +| `input` | [`number`](/docs/kcl/types/number) | | Yes | ### Returns @@ -32,9 +37,9 @@ mm(): number ### Examples ```js -totalWidth = 10 * mm() +totalWidth = fromYd(10) ``` -![Rendered example of mm 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABMiklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V/FPwKn4gueWQqZ4gAAAABJRU5ErkJggg==) +![Rendered example of fromYd 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABMiklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V/FPwKn4gueWQqZ4gAAAABJRU5ErkJggg==) diff --git a/docs/kcl/getNextAdjacentEdge.md b/docs/kcl/getNextAdjacentEdge.md index 5ac612cff..764de41ed 100644 --- a/docs/kcl/getNextAdjacentEdge.md +++ b/docs/kcl/getNextAdjacentEdge.md @@ -30,10 +30,10 @@ getNextAdjacentEdge(tag: TagIdentifier): Uuid exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [10, 0]) - |> angledLine({ angle = 60, length = 10 }, %) - |> angledLine({ angle = 120, length = 10 }, %) + |> angledLine(angle = 60, length = 10) + |> angledLine(angle = 120, length = 10) |> line(end = [-10, 0]) - |> angledLine({ angle = 240, length = 10 }, %, $referenceEdge) + |> angledLine(angle = 240, length = 10, tag = $referenceEdge) |> close() example = extrude(exampleSketch, length = 5) diff --git a/docs/kcl/getOppositeEdge.md b/docs/kcl/getOppositeEdge.md index 8583c336c..8ff4b784a 100644 --- a/docs/kcl/getOppositeEdge.md +++ b/docs/kcl/getOppositeEdge.md @@ -30,10 +30,10 @@ getOppositeEdge(tag: TagIdentifier): Uuid exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [10, 0]) - |> angledLine({ angle = 60, length = 10 }, %) - |> angledLine({ angle = 120, length = 10 }, %) + |> angledLine(angle = 60, length = 10) + |> angledLine(angle = 120, length = 10) |> line(end = [-10, 0]) - |> angledLine({ angle = 240, length = 10 }, %, $referenceEdge) + |> angledLine(angle = 240, length = 10, tag = $referenceEdge) |> close() example = extrude(exampleSketch, length = 5) diff --git a/docs/kcl/getPreviousAdjacentEdge.md b/docs/kcl/getPreviousAdjacentEdge.md index dbf4d70c0..a2ad65740 100644 --- a/docs/kcl/getPreviousAdjacentEdge.md +++ b/docs/kcl/getPreviousAdjacentEdge.md @@ -30,10 +30,10 @@ getPreviousAdjacentEdge(tag: TagIdentifier): Uuid exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [10, 0]) - |> angledLine({ angle = 60, length = 10 }, %) - |> angledLine({ angle = 120, length = 10 }, %) + |> angledLine(angle = 60, length = 10) + |> angledLine(angle = 120, length = 10) |> line(end = [-10, 0]) - |> angledLine({ angle = 240, length = 10 }, %, $referenceEdge) + |> angledLine(angle = 240, length = 10, tag = $referenceEdge) |> close() example = extrude(exampleSketch, length = 5) diff --git a/docs/kcl/hollow.md b/docs/kcl/hollow.md index 69b960e10..7adeedb98 100644 --- a/docs/kcl/hollow.md +++ b/docs/kcl/hollow.md @@ -65,15 +65,15 @@ case = startSketchOn(-XZ) |> startProfileAt([-size, -size], %) |> line(end = [2 * size, 0]) |> line(end = [0, 2 * size]) - |> tangentialArcTo([-size, size], %) + |> tangentialArc(endAbsolute = [-size, size]) |> close() |> extrude(length = 65) -thing1 = startSketchOn(case, 'end') +thing1 = startSketchOn(case, face = END) |> circle(center = [-size / 2, -size / 2], radius = 25) |> extrude(length = 50) -thing2 = startSketchOn(case, 'end') +thing2 = startSketchOn(case, face = END) |> circle(center = [size / 2, -size / 2], radius = 25) |> extrude(length = 50) diff --git a/docs/kcl/import.md b/docs/kcl/import.md deleted file mode 100644 index c46bf4ca0..000000000 --- a/docs/kcl/import.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: "import" -excerpt: "Import a CAD file." -layout: manual ---- - -**WARNING:** This function is deprecated. - -Import a CAD file. - -**DEPRECATED** Prefer to use import statements. - -For formats lacking unit data (such as STL, OBJ, or PLY files), the default unit of measurement is millimeters. Alternatively you may specify the unit by passing your desired measurement unit in the options parameter. When importing a GLTF file, the bin file will be imported as well. Import paths are relative to the current project directory. - -Note: The import command currently only works when using the native Design Studio. - -```js -import( - filePath: String, - options?: ImportFormat, -): ImportedGeometry -``` - - -### Arguments - -| Name | Type | Description | Required | -|----------|------|-------------|----------| -| `filePath` | `String` | | Yes | -| `options` | [`ImportFormat`](/docs/kcl/types/ImportFormat) | Import format specifier | No | - -### Returns - -[`ImportedGeometry`](/docs/kcl/types/ImportedGeometry) - Data for an imported geometry. - - -### Examples - -```js -model = import("tests/inputs/cube.obj") -``` - -![Rendered example of import 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAD730lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispV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uerfweZ/EfMvsfkPd/Fi99tcddVVV1111f98BFddddVVV131v8DFi/1v8y+wwQYbbLD5VzBgwIAB89/NBhtssMEGm6v+FWywwQYbbLDBBhtssMEGG2ywweaq/yFssMEGG2ywwQYbbLDBBhtssMHmqheRDTbYYIMNNv+DGTBgwIB5bjbYYIMNNlddddVVV131/xmVq6666qqrrvo/zOY5SPwrmOcl/rvZvEASV/0HsflPIfF/ks1V/8PZ/C9kXhQ2/y0uXux/h6uuuuqqq676n4/KVVddddVVV/0vcPFi9zt33TX/bv4TSPw7if/pJK666qr/B2z+FzMvCpv/MVaruJWrrrrqqquu+p8PPehBD+Kqq6666qqrrrrqqquuuuqqq6666qqrrvo/icpVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r+IfAeVyNz7rQF6/AAAAAElFTkSuQmCC) - -```js -model = import("tests/inputs/cube.obj", { format = "obj", units = "m" }) -``` - -![Rendered example of import 1](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAD74klEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispV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9f+YzVX/Djb/i5h/ic1/uIsXu9/mqquuuuqqq/7nI7jqqquuuuqq/wUuXux/m3+BDTbYYIPNv4IBAwYMmP9uNthggw022Fz1r2CDDTbYYIMNNthggw022GCDDTZX/Q9hgw022GCDDTbYYIMNNthggw02V72IbLDBBhtssPkfzIABAwbMc7PBBhtssLnqqquuuuqq/8+oXHXVVVddddX/YTbPQeJfwTwv8d/N5gWSuOo/iM1/Con/k2yu+h/O5n8h86Kw+W9x8WL/O1x11VVXXXXV/3xUrrrqqquuuup/gYsXu9+56675d/OfQOLfSfxPJ3HVVVf9P2Dzv5h5Udj8j7Faxa1cddVVV1111f986EEPehBXXXXVVVddddVVV1111VVXXXXVVVddddX/SVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxX/CDUBOj7hLefEAAAAAElFTkSuQmCC) - -```js -model = import("tests/inputs/cube.gltf") -``` - -![Rendered example of import 2](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAD730lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispV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c9W/g83/IuZfYvMf7uLF7re56qqrrrrqqv/5CK666qqrrrrqf4GLF/vf5l9ggw022GDzr2DAgAED5r+bDTbYYIMNNlf9K9hggw022GCDDTbYYIMNNthgg81V/0PYYIMNNthggw022GCDDTbYYIPNVS8iG2ywwQYbbP4HM2DAgAHz3GywwQYbbK666qqrrrrq/zMqV1111VVXXfV/mM1zkPhXMM9L/HezeYEkrvoPYvOfQuL/JJur/oez+V/IvChs/ltcvNj/DlddddVVV131Px+Vq6666qqrrvpf4OLF7nfuumv+3fwnkPh3Ev/TSVx11VX/D9j8L2ZeFDb/Y6xWcStXXXXVVVdd9T8fetCDHsRVV1111VVXXXXVVVddddVVV1111VVXXfV/EpWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X8U/Au1yNz6IMnYbAAAAAElFTkSuQmCC) - -```js -model = import("tests/inputs/cube.sldprt") -``` - -![Rendered example of import 3](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEoeElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispV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v4MkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpK46r+GJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCT+tVarFffccw/XXXcdN9100/FXfMVXfOs/+7M/+5nDw8Ndrrrqqquuuuq/FuX48eNcddVVV1111X+1D//wD/+u13md13lvgO/+7u/mGc94BpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJHHVVVdd9T+dJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK76jyEJSUhCEpKQhCQkIQlJSEISkliv19x6661cf/313Hjjjcdf8RVf8a3/7M/+7GcODw93ueqqq6666qr/OpTjx49z1VVXXXXVVf+V3vEd3/Gz3vzN3/yjAb77u7+bW2+9lauuuuqqq/5zSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkcdWLZrVaceutt3L99ddz4403Hn/FV3zFt/6zP/uznzk8PNzlqquuuuqqq/5roAc96EFcddVVV1111X+V13md13nvD//wD/8ugO/+7u/m1ltv5ar//SRx1f8Ptrnqqv8Mtvm/7Pjx47zN27wND37wg7nvvvtu/azP+qzXue+++27lqquuuuqqq/7zoQc96EFcddVVV1111X+F13md13nvD//wD/8ugO/+7u/m1ltv5aorJHHVVVf957HNVf8/2OZ/quPHj/M+7/M+HD9+nPvuu+/Wz/qsz3qd++6771auuuqqq6666j8XetCDHsRVV1111VVX/Wd7ndd5nff+8A//8O8C+O7v/m5uvfVW/ieRxFVXXXXVfxbbXPW/h23+sxw/fpz3eZ/34fjx49x33323fsiHfMhDuOqqq6666qr/XOhBD3oQV1111VVXXfWf6cVe7MVe+3M/93N/C+Cnf/qn+eu//mteFJK46qqrrrrqRWebq/772eaFOX78OO/zPu/D8ePHue+++279kA/5kIdw1VVXXXXVVf950IMe9CCuuuqqq6666j/Li73Yi732537u5/4WwM/8zM/w13/911x11VVXXfW/j22u+o9z/Phx3vu935vjx49z33333fohH/IhD+Gqq6666qqr/nOgBz3oQVx11VVXXXXVf4YXe7EXe+3P/dzP/S2An/mZn+Gv//qvueqq50cSV/33sc1VV/1Xs83/d8ePH+e93/u9OX78OPfdd9+tH/IhH/IQrrrqqquuuuo/HuX48eNcddVVV1111X+0F3uxF3vtz/3cz/0tgN/+7d/mT/7kT7jqP4YkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUjiqv9ekpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCRx1f8OkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQxP9mq9WKJzzhCTz60Y/m1KlTx6+55poH/+mf/unPcNVVV1111VX/sSjHjx/nqquuuuqqq/4jvdiLvdhrf+7nfu5vAfz1X/81v/Irv8L/BZKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpDEVVdd9cJJQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUjiqv86kpCEJCQhCUlIQhKSkIQkJCEJSUhCEpL477RarXjCE57Aox/9aB7zmMe89DXXXPPgP/3TP/0Zrrrqqquuuuo/DuX48eNcddVVV1111X+UF3uxF3vtz/3cz/0tgL/+67/mZ37mZ/jPJAlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSOKqq6666kUlCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlc9R9DEpKQhCQkIQlJSEISkpCEJCQhCUlI4t9rtVrxhCc8gUc/+tE85jGPeelrrrnmwX/6p3/6M1x11VVXXXXVfwzK8ePHueqqq6666qr/CC/2Yi/22p/7uZ/7WwB//dd/zc/8zM8AIAlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCSuuuqqq/4/k4QkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhJXvegkIQlJSEISkpCEJCQhCUlIQhKSkMT9VqsVT3jCE3jlV35lHvKQh7z0Nddc8+A//dM//Rmuuuqqq6666t+Pcvz4ca666qqrrrrq3+vFXuzFXvtzP/dzfwvg1ltv5Ud/9EeRhCSuuuo/myQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSVx11X8ESUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSuOr5k4QkJLFer/mbv/kbXvmVX5mHPOQhLw3wD//wD7/DVVddddVVV/37UI4fP85VV1111VVX/Xtcc801D/6Kr/iKvwK49dZb+d7v/V6u+u8nCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUjiquckCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUjiqv89JCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhif/rVqsVf/M3f8Mrv/Ir8+Iv/uKvDfAP//APv8NVV1111VVX/dtRjh8/zlVXXXXVVVf9W11zzTUP/qZv+qanA9x666187/d+L/+fSUISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSuOqq/w8kIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhiav+60hCEpKQhCQkIQlJSEISkpCEJCQhCUlI4n+61WrF3/zN3/DKr/zKvPiLv/hrA/zDP/zD73DVVVddddVV/zaU48ePc9VVV1111VX/Ftdcc82Dv+mbvunpALfeeivf+73fy/9EkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK666qr/nyQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhiav+Y0hCEpKQhCQkIQlJSEISkpCEJCQhCUn8V1itVly6dIlHP/rRvPiLv/hrA/zDP/zD73DVVVddddVV/3qU48ePc9VVV1111VX/Wtdcc82Dv+mbvunpALfeeivf+73fy7+VJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpDEVVddddX/FZKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUjiqhedJCQhCUlIQhKSkIQkJCEJSUhCEpL417jnnnu4dOkSj370o3nxF3/x1wb4h3/4h9/hqquuuuqqq/51KMePH+eqq6666qqr/jWuueaaB3/4h3/4d11zzTUPfsYznsH3fd/3IQlJSEISkpCEJCQhCUlIQhKSkIQkrrrqfxpJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhiauu+u8gCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISVz1/kpCEJCQhCUlIQhKSkIQkJHHvvfeyu7vLox/9aF78xV/8tQH+4R/+4Xe46qqrrrrqqhcd5fjx41x11VVXXXXVi+qaa6558Id/+Id/14u92Iu99jOe8Qy+93u/l6v+d5KEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEIS/90kIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQxFX/e0hCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKS+P/u3nvvZXd3l0c/+tG8+Iu/+GsD/MM//MPvcNVVV1111VUvGsrx48e56qqrrrrqqhfFNddc8+AP//AP/64Xe7EXe+3d3V2+7du+jatedJKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCRx1VX/G0lCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkrjqv44kJCEJSUhCEpKQhCQkIQlJSEISkpDE/wX33nsvAA9+8IN58Rd/8dcG+Id/+Iff4aqrrrrqqqv+ZZTjx49z1VVXXXXVVS+KT/qkT/qpF3uxF3vt3d1dvu7rvo7/CyQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlcddVV/7dIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSuOrfRxKSkIQkJCEJSUhCEpKQhCQkIQlJSOJ/imc84xkAPPjBD+aaa6558Obm5vF/+Id/+B2uuuqqq6666oWjHD9+nKuuuuqqq676l3zu537ub73Yi73Ya+/u7vJ1X/d1/FeShCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCElddddVV/xtIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCRx1YtGEpKQhCQkIQlJSEISkpCEJCQhCUn8R3vGM54BwIu92Isdv+aaax68ubl5/B/+4R9+h6uuuuqqq656wSjHjx/nqquuuuqqq16Yz/3cz/2tF3uxF3vt3d1dvu7rvo4XRhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCRx1VVXXXXVfw5JSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpK46nlJQhKSkIQkJCEJSUhCEpKQhCQk8cI84xnPAODFXuzFjl9zzTUP3tzcPP4P//APv8NVV1111VVXPX9UrrrqqquuuuqF+NzP/dzferEXe7HX3t3d5fu///uRxFVXvTCSuOqq52abq/7vk8R/FNv8fyaJF+Z3f/d3AXit13qtB7/O67zOewP86I/+6Odw1VVXXXXVVc+Lcvz4ca666qqrrrrq+fncz/3c33qxF3ux197d3eXnfu7nuPfee7nqv5ckJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK666vmRhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkMRV/7NIQhKSkIQkJCEJSUhCEpKQhCQkIQlJ/H/wjGc8A4AXe7EXO37NNdc8+NZbb/2bs2fP3spVV1111VVXPSfK8ePHueqqq6666qrn9rmf+7m/9WIv9mKvvbu7y8/93M/xjGc8g6ueTRKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCGJq6666j+PJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlc9Z9LEpKQhCQkIQlJSEISkpCEJCQhCUlI4n+LZzzjGQC82Iu92PEXe7EXe+1bb731b86ePXsrV1111VVXXfVslOPHj3PVVVddddVVD/S5n/u5v/ViL/Zir727u8vP/dzP8YxnPIP/bSQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK666qqr/r0kIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCSu+veRhCQkIQlJSEISkpCEJCQhCUlIQhL/1Z7xjGcA8GIv9mLHX+zFXuy1b7311r85e/bsrVx11VVXXXXVFZTjx49z1VVXXXXVVff73M/93N96sRd7sdcG+LEf+zGe8Yxn8J9NEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJHHVVVdd9f+dJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSOKqF40kJCEJSUhCEpKQhCQkIQlJSEIS/x6XLl1itVrxYi/2Ysdf7MVe7LVvvfXWvzl79uytXHXVVVdddRWgBz3oQVx11VVXXXUVwId/+Id/1+u8zuu8N8D3fd/38YxnPIMXRBJXXfWiksRV/z/Z5qqrnh/bXPXvZ5v7HT9+nJd8yZfktV7rtbjvvvtu/azP+qzXue+++27lqquuuuqq/+/Qgx70IK666qqrrrrqwz/8w7/rdV7ndd4b4Pu///t5xjOewVX/O0jiqquu+rezzVX/O9nmqud0/PhxXvIlX5LXfM3X5L777rv1sz7rs17nvvvuu5Wrrrrqqqv+P6McP36cq6666qqr/n/78A//8O96ndd5nfcG+P7v/36e8YxncNW/niQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISV1111b+PJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlI4qr/GJKQhCQkIQlJSEISkpCEJCQhCUlIQhL/F61WKy5dusRqteKxj33s8Vd8xVd86z/7sz/7mcPDw12uuuqqq676/4py/Phxrrrqqquu+v/rHd/xHT/rzd/8zT8a4Pu///t5xjOewf9VkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISV1111VUvKklIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhiateNJKQhCQkIQlJSEISkpCEJCQhCUlI4n+y1WrFpUuXuPbaa7nxxhuPv+IrvuJb/9mf/dnPHB4e7nLVVVddddX/R5Tjx49z1VVXXXXV/0+v8zqv897v+77v+9UA3//9388znvEM/qeQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSVx11VVX/X8hCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkrjqOUlCEpKQhCQkIQlJSEISkpCEJCTxX2W1WnHbbbdx7bXXcuONNx5/xVd8xbf+sz/7s585PDzc5aqrrrrqqv9v0IMe9CCuuuqqq676/+d1Xud13vvDP/zDvwvg+7//+3nGM57Bv5ckrrrqRSGJq/5/sM1VVz2Qba7617HNv9WxY8d4y7d8Sx70oAdx33333fpZn/VZr3PffffdylVXXXXVVf+foAc96EFcddVVV131/8vrvM7rvPeHf/iHfxfA93//9/OMZzwDSVz1f4Mkrrrqqhedba7638U2V71wtrnf8ePHeYu3eAse9KAHcd999936WZ/1Wa9z33333cpVV1111VX/X1COHz/OVVddddVV/3+82Iu92Gt/0id90k8B/PzP/zxPetKTkMRV//EkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkrjqqqv+dSQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhJX/ftIQhKSkIQkJCEJSUhCEpKQhCQkIQlJ/H8gCUlIYr1e84xnPINHPepRnDp16vgrvdIrvc2f/umf/vTh4eEuV1111VVX/X+AHvSgB3HVVVddddX/Dy/2Yi/22p/7uZ/7WwA///M/z9/+7d/y/50krrrqqqv+L7HNVf95bPO/1bFjx3iP93gPjh07xn333Xfrh3zIhzyEq6666qqr/j9AD3rQg7jqqquuuur/vhd7sRd77c/93M/9LYCf//mf52//9m/530YSV1111VVX/dezzVX/drb5n+LYsWO8x3u8B8eOHeO+++679UM+5EMewlVXXXXVVf/XoQc96EFcddVVV131f9uLvdiLvfbnfu7n/hbA7/3e7/F7v/d7/FeRxFVXPT+SuOr/D9tcdZVtrnrR2eY/w7Fjx3iP93gPjh07xn333Xfrh3zIhzyEq6666qqr/i9DD3rQg7jqqquuuur/rhd7sRd77c/93M/9LYC//du/5ed//ud5UUniqv+9JHHVVVe9aGxz1f8Otrnq+bPNi+rYsWO8x3u8B8eOHeO+++679UM+5EMewlVXXXXVVf9XUY4fP85VV1111VX/N73Yi73Ya3/u537ubwH83d/9Hb/wC7+AJCQhCUlIQhKSkIQkJCGJq/7jSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK666qoXnSQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSOKqfxtJSEISkpCEJCQhCUlIQhKSkIQkJPF/nSQkIQlJSEISkpCEJCQhifV6zZOe9CQe9ahHcerUqePXXHPNg//0T//0Z7jqqquuuur/Isrx48e56qqrrrrq/54Xe7EXe+3P/dzP/S2Av/u7v+Pnf/7nueqFk4QkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhJXXXXVVc9NEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSVz1/ElCEpKQhCQkIQlJSEISkpCEJCQhif+L1us1T3rSk3jUox7Fox/96Je+5pprHvynf/qnP8NVV1111VX/11COHz/OVVddddVV/7e82Iu92Gt/7ud+7m8B3HbbbfzET/wE/9dIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK666qqr/q+QhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCGJq0ASkpCEJCQhCUlIQhKSkIQkJCGJ/+nW6zVPetKTeNSjHsWjH/3ol77mmmse/Kd/+qc/w1VXXXXVVf+XoAc96EFcddVVV131f8c111zz4G/6pm96OsClS5f4gR/4Af4nkcRVVwFI4qr/v2xz1f8/trnqX2ab/2rHjh3j3d/93QH4rd/6re/++q//+vfhqquuuuqq/yvQgx70IK666qqrrvq/48M//MO/63Ve53Xem6uuuuqqq6666qp/o7d7u7cTV1111VVX/V9B5aqrrrrqqv9TXud1Xue9AY6OjvjfQhL/10ni/wtJXHXVVf8z2Oaq5882Vz2vxWIBwDu+4zt+1o/+6I9+DlddddVVV/1fQOWqq6666qr/U/7hH/7ht1/sxV7stf/iL/6Cc+fO8dwk8cJI4gWRxAsjiRdGEi+IJF4YSbwgknhBJPGCSOIFkcQLIokXRBIviCReEEm8IJJ4YSTxgkjiBZHECyOJf4kkXhhJvDCS+JdI4kUhiReVJP61JPFvJYn/KpL472Cb/0q2+fewzb+FbV5UtnlR2eZFYZsXhW3+JbZ5UdjmX2KbF8Y2/xLb/Ets8y+xzb/ENv8S2/xLbPMvsc2/xDYvCtu8KGzzorDNc3upl3opbrrpJs6ePfsMrrrqqquu+r+CylVXXXXVVf+v2EYSL4htJPH82AZAEs+PbSTxgthGEs+PbQAk8fzYRhLPj20k8fzYRhLPj20k8fzYBkASz802AJJ4brYBkMRzsw2AJJ6bbQAk8dxsAyCJ58c2AJJ4brYBkMRzsw2AJJ4f2wBI4gWxDYAknh/bAEji+bHN/STx/NjmfpJ4QWzzQJJ4QWzzQJL4l9jmgSTxorLNCyKJ/0i2+b/CNv9RbPNvYZt/Ddu8qGzzorLNv8Q2LwrbvChs8y+xzb/ENi+Mbf4ltvmX2OZfYpt/iW3+JbZ5UdjmX2KbF4VtXhS2eVHY5vlZLBYA3Hfffbdy1VVXXXXV/xUEV1111VVX/Z9y33333Qpw+vRpXhDbvDC2eWFs84LY5oWxzQtjmxfENi+IbV4Q29jm+bGNbV4Q27wgtnlBbPOC2OYFsY1tnh/b2OYFsc0LYhvbPD+2sY1tnh/b2OaFsY1tXhDb2MY2L4htbGObF8Q2trHNv8Q2trHNv8Q2trGNbV4UtrGNbWxjG9v8a9nGNraxjW1sYxvb2Ob/KtvYxja2sY1tbGObfyvb2MY2trHNi8o2trGNbV4UtrGNbf4ltrGNbf4ltrGNbV4Y29jmX2Ib2/xLbGObF8Y2tnlhbGObF8Y2/xLb/Ets8y+xzb/ENv8S27wobPMvsc2LwjYvCtu8KGzzgmxsbABw9uzZW7nqqquuuur/CipXXXXVVVf9n3LffffdyovANpJ4QWwjiRfENpJ4fmwDIInnxzYAknh+bCOJ58c2knh+bAMgiefHNpJ4fmwjiefHNpJ4fmwDIInnZhsASTw32wBI4vmxjSSeH9sASOK52QZAEs+PbQAk8fzYBkASz80295PE82MbAEm8ILYBkMQLYhsASbwgtrmfJF4Y2zyQJF4Y2zyQJF5Utnlukvj3sM2/hiT+q9nmv5pt/r1s869lm38N27yobPOiss2/xDYvKtv8S2zzL7HNv8Q2/xLb/Ets8y+xzYvCNv8S2/xLbPOisM2LwjYvCtu8KGzzwiwWCwDuu+++W7nqqquuuur/CipXXXXVVVf9n/IP//APvwNw+vRpbCOJF8Q2knhBbCOJF8Q2knhBbCOJF8Q2knh+bCOJ58c2AJJ4fmwjiefHNpJ4fmwDIInnZhsASTw/tpHE82MbSTw/tgGQxHOzDYAknh/bAEjiudkGQBLPj20AJPH82AZAEs+PbQAk8fzY5n6SeH5scz9JPD+2uZ8kXhDbPJAkXhjb3E8S/xLbPDdJvKhs84JI4j+abf6vsM1/FNv8W9nmX8M2LyrbvKhs86KwzYvCNi8K2/xLbPMvsc2Lwjb/Etv8S2zzL7HNi8I2/xLbvChs86KwzYvCNi8K27wwi8UCgPvuu+9Wrrrqqquu+r+EylVXXXXVVf+nnD179laAzc1NAGwjiRfENpJ4QWwjiRfENpJ4QWwjiRfENpJ4fmwDIInnxzaSeH5sI4nnxzYAknh+bCOJ58c2knh+bAMgiedmGwBJPD+2kcTzYxsASTw/tpHE82MbAEk8P7YBkMTzYxsASTw/tgGQxAtiGwBJvCC2uZ8knh/b3E8SL4xt7ieJF8Y2DySJF4Vtnpsk/rVs88JI4v8y2/xnsM2/h23+tWzzorLNi8o2LyrbvChs86Kwzb/ENi8K2/xLbPMvsc2Lwjb/Etv8S2zzorDNi8I2LwrbvChs86Kwzb/k1KlTAPzDP/zDb3PVVVddddX/JVSuuuqqq676P882knhBbAMgiefHNgCSeH5sI4kXxDaSeEFsI4kXxDaSeH5sI4nnxzYAknh+bCOJ58c2AJJ4brYBkMTzYxtJPD+2AZDEc7MNgCSeH9sASOK52QZAEs+PbQAk8fzYBkASz49tACTx/NjmfpJ4fmxzP0m8ILYBkMQLYpsHksQLYpsHksQLY5vnJokXhW2eH0n8W9nmX0sS/11s81/JNv9etvm3sM2/hm3+NWzzorDNi8o2Lwrb/Ets86Kwzb/ENi8K2/xLbPOisM2/xDYvCtu8KGzzorDNi8I2LwrbXHXVVVdd9f8alauuuuqqq/5Pue+++2697777br3mmmsevLGxwdHREQC2kcQLYxtJvCC2kcTzYxsASTw/tpHEC2IbAEk8P7aRxPNjGwBJPD+2kcTzYxsASTw/tpHE82MbSTw/tgGQxPNjG0k8P7YBkMTzYxtJPD+2AZDE82MbAEk8P7YBkMTzYxsASbwgtgGQxAtim/tJ4vmxzf0k8cLY5n6SeGFs80CS+JfY5oEk8a9hmxdEEv/RbPN/jW3+o9jm38o2/xq2+dewzYvKNi8q27wobPMvsc2LwjYvCtv8S2zzorDNv8Q2LwrbvChs86KwzYvCNi8K2/xHO3nyJAD/8A//8DtcddVVV131fwnBVVddddVV/+ecPXv2VoCNjQ0eyDa2eWFs88LY5oWxzQtiG9u8MLZ5QWzzwtjmBbGNbV4Q27wgtrHN82Mb27wgtrHN82Mb27wgtrHN82Mb27wgtrHNC2Ib27wgtrHNC2Ib29jmBbGNbf4ltrHNC2Mb29jmX2Ib29jmRWEb29jGNi8K29jGNraxjW3+LWxjG9vYxja2sY1t/j+wjW1sYxvb2MY2trHNv5VtbGMb29jmX8M2trGNbV4UtrGNbV4UtrGNbf4ltrGNbf4ltrGNbf4ltrHNC2Mb2/xLbGObf4ltbPPC2MY2/xLb2OZfYpt/iW1s8y+xjW3+JbaxzYvCNi8K27yobHPVVVddddX/e1Suuuqqq676P2tzc5Nz587x3GwjiRfENpJ4QWwjiRfENpJ4QWwjiRfENpJ4fmwDIInnxzaSeEFsI4nnxzYAknh+bCOJ58c2AJJ4fmwjiefHNgCSeH5sI4nnxzYAknh+bAMgiefHNgCSeH5sAyCJF8Q2AJJ4fmxzP0m8ILa5nyReENvcTxIvjG0eSBL/Ets8kCReVLZ5bpL497DNv4Yk/iewzX8l2/x72ebfyjb/GrZ5UdnmX8M2LwrbvChs86KwzYvCNi8K27wobPMvsc2LwjYvCtu8KGzzorLNi8I2LyrbvKhsc+rUKQD+4R/+4be56qqrrrrq/xKCq6666qqr/s/5+7//+98G2NjY4AWxzQtjmxfGNi+MbV4Y27wwtnlhbPOC2MY2L4htXhjbvCC2sc0LYpsXxDa2eUFs84LYxjYviG1s84LYxjYviG1s84LYxja2eUFsY5sXxja2sc0LYxvb2OaFsY1tbGObf4ltbGMb27wobGMb29jGNv8atrGNbWxjG9vY5j+DbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbPOfxTa2sY1tbGObfwvb2MY2tvnXsI1tbGObF4VtbGObF4VtbPOisI1tbPMvsY1t/iW2sc2/xDa2+ZfYxjb/EtvY5l9iG9v8S2zzorDNi8I2LwrbvChsY5sXhW1eVLZ5UdkGYGNjg6uuuuqqq/5PonLVVVddddX/OWfPnn0GwMbGBi+MbSTxgthGEi+IbSTxgthGEi+IbSTxgtgGQBLPj20k8YLYRhLPj20AJPH82EYSL4htJPH82AZAEs+PbSTx/NgGQBLPj20AJPH82AZAEs+PbQAk8fzYBkASL4htACTx/NjmfpJ4QWwDIIkXxjb3k8QLY5v7SeJfYpsHksSLwjbPTRL/WrZ5YSTx/41t/jPY5t/DNv8WtvnXsM2/hm1eVLZ5UdjmRWGbF4VtXhS2eVHY5kVhmxeFbV5UtnlR2OZFYZsXlW1eVLZ5Udnmud133323ctVVV1111f8lVK666qqrrvo/57777rsVYGNjA9tI4gWxjSReENtI4gWxDYAknh/bAEji+bENgCReENtI4vmxDYAknh/bAEji+bGNJJ4f2wBI4vmxDYAknh/bSOL5sQ2AJJ4f2wBI4vmxDYAknh/bAEji+bENgCSeH9vcTxLPj20AJPGC2AZAEi+Ibe4niRfGNveTxAtjmweSxL/ENg8kiReVbZ6bJP49bPOiksT/VLb5r2Kb/wi2+bewzb+Wbf41bPOiss2LyjYvCtu8qGzzorDNi8I2LwrbvChs86KwzYvKNi8K27yobPOiss2Lyjb3O3XqFAD/8A//8NtcddVVV131fw2Vq6666qqr/s85e/bsrQCbm5sA2EYSL4htJPGC2AZAEi+IbSTxgthGEi+IbSTxgthGEi+IbSTxgthGEs+PbQAk8fzYRhIviG0k8fzYBkASz49tACTx/NgGQBLPj20AJPH82AZAEs+PbQAk8YLYBkASz49t7ieJ58c295PEC2Kb+0nihbHN/STxL7HN/STxorDNA0niX8M2L4gk/iPZ5v8T2/xHsc2/h23+tWzzr2WbF5VtXlS2eVHY5kVlmxeFbV4UtnlR2OZFZZsXhW1eFLZ5UdnmRWWbF5VtXlS2eaDFYgHAfffddytXXXXVVVf9X0Plqquuuuqq/3Puu+++WwE2Nja4n20k8YLYRhIvjG0k8YLYRhIviG0k8YLYRhIviG0AJPH82AZAEs+PbSTxgthGEs+PbQAk8fzYBkASz49tACTx/NgGQBLPj20k8YLYBkASz49tACTx/NgGQBIviG0AJPGC2AZAEi+Ibe4niRfENveTxAtjmweSxAtjmweSxIvCNs9NEv8WtnlBJHEV2OY/g23+PWzzb2Gbfy3bvKhs869hmxeFbV5UtnlR2OZFYZsXlW1eFLZ5UdnmRWGbF5VtXlS2eVHZ5kVlm+e2sbEBwH333XcrV1111VVX/V9DcNVVV1111f9J9913360AZ86c4X62eWFsY5sXxjYvjG1eGNu8MLb5l9jmhbHNC2Ib27wgtrHNC2Ib27wgtnlhbPPC2OYFsY1tXhjb2OYFsY1tXhDb2OaFsY1tXhjb2MY2L4xtbPMvsY1tbPOisI1tbPOisI1tbGObfw3b2MY2trGNbf49bGMb29jGNraxjW1sY5v/rWxjG9vYxja2sY1tbGObfy/b2MY2trGNbf61bGMb29jmRWUb29jGNi8q29jGNi8K29jmRWEb29jmX2Ib27wobGObf4ltbPOisM2Lwja2eVHY5kVhG9u8KGzzorLNi8o2Lyrb/HstFgsAzp49+wyuuuqqq676v4bKVVddddVV/yedPXv21muuuebBPBfbSOKFsY0kXhDbSOIFsY0kXhDbAEji+bENgCReENtI4gWxjSReENtI4gWxjSReENtI4vmxDYAknh/bAEji+bENgCSeH9sASOIFsY0kXhDbAEji+bHN/STx/NjmfpJ4QWwDIIkXxDb3k8QLY5v7SeJfYpsHksS/xDbPTRL/GrZ5fiTxH8U2V4Ft/qPY5t/DNv8WtvnXsM2/hm1eVLZ5UdnmRWGbF5VtXlS2eVHY5kVlmxeVbV5UtnlR2eZFZZt/Dds8PxsbGwDcd999t3LVVVddddX/NQRXXXXVVVf9n3TffffdCnD69Gmem23+JbZ5YWzzwtjGNi+MbV4Y27wwtrHNC2Ib27wgtrHNC2Ib27wgtrHNC2Ib27wgtrHNC2Ib27wgtrHNC2Ib27wwtrHNC2Mb27wwtrHNC2Mb29jmhbGNbWzzL7GNbWzzorKNbWxjmxeVbWxjG9vY5t/CNraxjW1sYxvbXPWC2cY2trGNbWxjm38P29jGNrb517KNbWxjm38N29jGNi8K29jGNi8K29jGNi8K29jmRWEb27wobPOisI1tXhS2sc2LwjYvKtu8KGxjmxeVbV5UtnlR2eZfwzYvyGKxAODs2bO3ctVVV1111f81VK666qqrrvo/6b777ruVF8I2knhhbCOJF8Q2AJJ4QWwjiRfENpJ4QWwjiRfGNpJ4QWwjiRfENpJ4QWwjiRfENpJ4QWwjiRfENpJ4QWwDIInnxzYAknh+bAMgiRfENgCSeEFsAyCJF8Q295PEC2IbAEm8MLa5nyReGNs8kCReFLZ5IEm8qGzz3CTxb2Wbf4kk/q+xzX822/xHsM2/lW3+LWzzr2GbF5Vt/jVs86KyzYvKNi8K27yobPOiss2LyjYvKtv8a9jmRWWbfw3bvDAbGxsA3Hfffbdy1VVXXXXV/zVUrrrqqquu+j/pH/7hH34H4MyZMzz+8Y/n+bENgCReENtI4oWxjSReENtI4gWxDYAknh/bAEjiBbGNJF4Q2wBI4vmxDYAknh/bAEji+bENgCSeH9sASOL5sQ2AJF4Q20jiBbENgCSeH9vcTxLPj20AJPGC2OZ+knhBbAMgiRfENveTxAtjm/tJ4l9im/tJ4kVlmweSxL+GbZ4fSfxHsM2/lST+s9jmfwrb/Eexzb+Hbf4tbPOvYZt/Ddv8a9jmRWWbF5VtXlS2eVHZ5kVlmxeVbV5UtvnXsM2Lyjb/GrZ5YRaLBQD33XffrVx11VVXXfV/EZWrrrrqqqv+T9vY2OBfYhtJvCC2kcQLYxtJvCC2kcQLYxtJvCC2kcQLYhsASbwgtpHEC2IbSbwgtpHEC2IbSbwgtgGQxPNjGwBJPD+2AZDEC2IbAEm8ILYBkMTzY5v7SeIFsQ2AJF4Q29xPEi+Ibe4niRfGNveTxL/ENg8kiReVbZ6bJP61bPOCSOK/gm3+r7DNfzTb/HvZ5t/KNv8atvnXss2Lyjb/GrZ5UdnmRWWbF5VtXlS2+dewzYvKNi8q2/xr2OZfwzb/klOnTgHwD//wD7/NVVddddVV/xdRueqqq6666v+ks2fP3soz2UYSL4xtJPGC2AZAEi+IbSTxgtgGQBIviG0k8YLYRhIvjG0k8YLYRhIviG0AJPH82AZAEs+PbQAk8YLYRhIviG0AJPH82AZAEi+IbQAk8YLYBkASL4htACTxgtgGQBIvjG0AJPHC2OZ+knhhbPNAkviX2OaBJPGvYZvnJol/K9u8MJL4/8Y2/5ls8x/FNv8Wtvm3sM2/hm3+NWzzr2GbF5VtXlS2+dewzYvKNi8q2/xr2OZFZZt/Ddv8a9jmqquuuuqqqwAqV1111VVX/Z9033333QqwubnJxsYGR0dHSOKFsY0kXhjbSOIFsY0kXhjbSOIFsY0kXhDbAEjiBbENgCSeH9sASOIFsY0kXhDbSOIFsQ2AJJ4f2wBI4gWxDYAknh/bAEjiBbENgCReENsASOIFsQ2AJF4Q29xPEi+Ibe4niRfGNveTxL/ENveTxIvCNg8kiX8t2zw/kvj3ss2/hiT+p7HNfxfb/Eeyzb+Vbf4tbPOvZZt/Ddv8a9jmRWWbfw3bvKhs86Kyzb+GbV5UtvnXsM2/hm3+NWzzojp16hQA9913361cddVVV131fxHBVVddddVV/2f9wz/8w28DbG5uAmCbf4lt/iW2eWFsY5sXxjYvjG1s88LY5l9imxfGNi+MbWzzgtjGNi+MbV4Y29jmhbHNC2Mb27wwtrHNC2Mb27wwtrGNbV4Y29jmX2Ib29jmX2Ib29jmRWEb29jGNi8q29jGNraxzb+VbWxjG9vYxjb/mWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNv/ZbGMb29jGNraxzb+HbWxjG9vY5l/DNraxjW3+NWxjG9u8qGxjG9u8KGxjG9u8KGxjG9u8KGxjmxeVbWzzorCNbV5UtnlR2cY2Lyrb/GvY5l/DNv8atvm3OHv27DO46qqrrrrq/yIqV1111VVX/b9iG0m8MLaRxAtjG0m8MLaRxAtiGwBJvCC2kcQLYhsASbwgtgGQxPNjGwBJvCC2kcQLYhsASTw/tgGQxAtiGwBJPD+2AZDEC2IbAEm8ILYBkMQLYhsASbwwtgGQxAtim/tJ4oWxzf0k8cLY5oEk8S+xzQNJ4kVlmweSxL+HbV4YSVz1nGzzn8k2/xFs829lm38t2/xr2eZfwzb/Grb517DNv4ZtXlS2+dewzb+Gbf41bPOvYZv/bKdOnQLgH/7hH36bq6666qqr/i8iuOqqq6666v+sv//7v/9tgDNnzvBAtrHNC2Mb27wwtrHNC2Obf4ltXhjb2OaFsc2/xDYvjG1eGNvY5oWxzQtjG9u8MLZ5YWxjmxfGNrZ5YWxjmxfGNraxzQtjG9v8S2xjG9v8S2xjG9u8KGxjG9u8qGxjG9vY5l/DNraxjW1sY5v/KLaxjW1sYxvb2MY2tvm/wja2sY1tbGMb29jGNrb5j2Qb29jGNrb5t7KNbWxjm38N29jGNrZ5UdnGNrZ5UdnGNrZ5UdnGNi8q29jmRWUb27yobGObF5Vt/jVs869hm38N2/xr2OZfyzb/GrbZ2Njgqquuuuqq/9OoXHXVVVdd9X/W2bNnnwGwsbHB82MbSbwwtpHEC2MbSbwgtgGQxAtiG0m8MLaRxAtiG0m8MLaRxAtiGwBJvCC2kcQLYhsASbwgtgGQxPNjGwBJvCC2AZDEC2IbAEm8ILYBkMQLYxsASbwgtrmfJF4Y29xPEi+Mbe4niX+JbR5IEi8K2zyQJP61bPPcJPGfwTb/USTxr2Gb/y1s8x/JNv8etvm3sM2/hW3+tWzzr2Gbfw3b/GvY5l/DNv8atvnXsM2/lm3+NWzzr2Wbf4/77rvvVq666qqrrvq/iMpVV1111VX/Z9133323AmxubvKC2EYSL4xtJPHC2EYSL4xtJPGC2AZAEi+IbSTxgtgGQBIviG0AJPGC2AZAEs+PbQAk8YLYBkASL4htJPGC2AZAEi+IbQAk8YLYBkASL4ht7ieJF8Q2AJJ4YWwDIIl/iW0AJPEvsc39JPGisM39JPGiss1zk8S/lm1eEEn8T2Cb/81s85/BNv9etvm3ss2/hW3+tWzzr2Wbfw3b/GvY5l/LNv8atvnXsM2/hm3+tWzzr2Wbfy3bnDp1CoB/+Id/+B2uuuqqq676v4rKVVddddVV/2edPXv2VoCNjQ1eGNtI4oWxjSReGNtI4oWxjSReGNtI4gWxDYAkXhDbSOKFsY0kXhjbSOIFsQ2AJF4Q20jiBbENgCReENsASOIFsQ2AJF4Q2wBI4oWxDYAkXhDb3E8SL4ht7ieJF8Y295PEv8Q295PEi8I2DySJfw3bPDdJ/FvZ5oWRxFVgm/9stvmPYpt/K9v8W9jm38I2/1q2+dewzb+Wbf41bPOvYZt/Ldv8a9jmX8s2/1q2+deyDcDGxgYA9913361cddVVV131fxWVq6666qqr/s/b3NzkX2IbSbwwtgGQxAtiGwBJvCC2kcQLYxtJvDC2kcQLYhsASbwgtgGQxAtiGwBJvCC2kcQLYhsASbwgtgGQxAtiGwBJvCC2AZDEC2IbAEm8MLYBkMQLYxsASbwwtrmfJF4Y29xPEv8S2zyQJF4UtnkgSfxr2ea5SeI/gm1eVJL438Q2/11s8x/JNv8etvm3ss2/lm3+tWzzr2Wbfy3b/GvY5l/LNv8atvnXss2/lm3+tWzzr2Wb+y0WCwDuu+++p3PVVVddddX/VVSuuuqqq676P+u+++679b777rv1mmuuefDGxgZHR0e8MLYBkMQLYxtJvDC2kcQLYhsASbwgtgGQxAtiG0m8MLaRxAtjG0m8MLaRxAtiGwBJvCC2AZDEC2IbAEm8ILYBkMQLYhsASbwgtrmfJF4Q2wBI4oWxzf0k8cLY5n6SeGFscz9JvChs80CSeFHY5rlJ4l/LNs+PJP6z2Oaq52Sb/2i2+feyzb+Hbf4tbPOvZZt/Ldv8a9nmX8s2/xq2+deyzb+Wbf61bPOvZZt/Lds80MbGBgBnz559BlddddVVV/1fRXDVVVddddX/aWfPnr0VYGNjA9u8KGzzL7HNv8Q2/xLb/Ets88LYxjYvjG1s88LYxjYvjG1s88LYxjYvjG1s88LYxjYvjG1s88LYxjb/EtvY5oWxjW1s8y+xjW1eFLaxjW3+JbaxjW1s86KyjW1s869lG9vYxja2+beyjW1sYxvb2MY2trnqX882trGNbWxjG9v8R7CNbWxjm38r29jGNv8WtrGNbf41bGMb2/xr2MY2/xq2sc2/hm1s869hG9v8a9jmX8s2/1q2+deyzb+Wbf61bPPcNjY2uOqqq6666v88gquuuuqqq/5Pu++++24F2NzcBMA2tvmX2OZfYpt/iW3+Jbb5l9jmX2Kbf4lt/iW2sc0LY5t/iW3+Jbb5l9jmX2Ib27wwtrHNv8Q2tvmX2MY2/xLb2MY2Lwrb2OZFZRvb2OZFZRvb2MY2/xa2sY1tbGOb/wi2sY1tbGMb29jGNv/f2MY2trGNbWxjG9vY5j+SbWxjG9vY5t/KNraxjW3+tWxjG9vY5l/DNraxzb+GbWxjm38N29jmX8M2tvnXsI1t/jVsY5t/DdvY5l/DNrb517LNv5Zt/qMsFgsA/uEf/uG3ueqqq6666v8qKlddddVVV/2fdt99990KsLGxwQPZRhIvjG0k8cLYBkASL4htACTxgtgGQBIviG0AJPGC2AZAEi+IbQAk8cLYRhIviG0AJPGC2AZAEi+IbQAk8YLYBkASL4xtACTxgtgGQBIvjG0AJPHC2OZ+knhhbHM/SbwwtnkgSfxLbPNAknhR2Oa5SeJfyzbPTRL/kWzzryWJ/wls8z+Fbf6j2ebfyzb/Vrb5t7LNv4Vt/rVs869lm38t2/xb2OZfyzb/Wrb5t7DNv4Vtnp+NjQ0A7rvvvlu56qqrrrrq/yoqV1111VVX/Z/2D//wD78DcM011/C4xz2OB7KNJF4Y20jiX2IbSbwwtpHEC2MbSbwwtpHEC2MbSbwwtpHEC2MbAEm8ILYBkMQLYhsASbwgtgGQxAtiGwBJvDC2AZDEC2Kb+0niBbHN/STxwtgGQBL/EtvcTxL/EtvcTxIvCtvcTxL/GrZ5IEn8W9jmBZHEfwXb/H9lm/8MtvmPYpt/K9v8W9nm38I2/xa2+deyzb+Fbf61bPNvYZt/Ldv8W9jm38I2z8/GxgYA9913361cddVVV131fxmVq6666qqr/l+zjSReGNsASOKFsY0kXhjbSOKFsQ2AJF4Q2wBI4gWxDYAkXhDbAEjihbGNJF4Y20jihbENgCReENsASOIFsQ2AJF4Y2wBI4oWxDYAkXhjbAEjihbHN/STxL7ENgCReFLa5nyReFLZ5IEn8a9jmuUni38M2L4gkrvqX2ea/gm3+o9jm38M2/x62+bewzb+Fbf4tbPOvZZt/C9v8a9nm38I2/xa2+bewzQty6tQpAP7hH/7ht7nqqquuuur/MipXXXXVVVf9n3b27NlbATY2NnhBbCOJf4ltJPHC2EYSL4xtACTxwthGEi+MbSTxwthGEi+MbSTxwtgGQBIviG0AJPHC2EYSL4xtACTxgtgGQBIvjG0AJPHC2AZAEi+Mbe4niRfGNveTxAtjm/tJ4kVhm/tJ4kVlmweSxL+WbZ6bJP4j2OZFIYn/q2zz38E2/5Fs8+9lm38P2/xb2ebfwjb/Frb517LNv4Vt/i1s829hm38L2/xb2Oaqq6666qqrACpXXXXVVVf9n3bffffdCrC5uckLYxsASbwwtpHEC2MbAEm8MLaRxAtjG0m8MLYBkMQLYhsASbwgtgGQxAtjGwBJvCC2AZDEC2IbAEm8MLYBkMQLYhsASbwwtgGQxAtjGwBJ/EtsAyCJf4ltACTxL7HN/STxorDNA0niRWWbB5LEv4Vtnh9J/Gewzb+HJP6z2OZ/Mtv8Z7DNfwTb/HvY5t/KNv9Wtvm3sM2/hW3+LWzzb2Gbfwvb/FvY5t/CNv+SU6dOAXDffffdylVXXXXVVf+XEVx11VVXXfV/3j/8wz/8NsCZM2f4l9jmX2KbF4Vt/iW2+ZfYxjb/Etv8S2zzL7HNi8I2/xLb2OaFsY1t/iW2sc0LYxvb/EtsY5t/iW1sY5t/iW1sY5t/iW1sY5sXhW1sYxvbvKhsYxvb2OZfwza2sY1tbPPvYRvb2MY2trGNbf472cY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sY5v/CWxjG9vYxja2sc1/BNvYxja2sc2/lW1sYxvb/FvYxja2+bewjW3+tWxjG9v8a9nGNv9atrHNv5ZtbPOvZRvb/GvZxjb/Frb5t7DNv8bZs2efwVVXXXXVVf+XUbnqqquuuur/Ddu8KGwjiRfGNgCSeGFsI4kXxjYAknhhbCOJF8Y2knhhbAMgiRfENgCSeGFsAyCJF8Y2knhhbAMgiRfGNpJ4YWwDIIkXxjb3k8QLYxsASfxLbAMgiX+Jbe4niReFbe4niReVbe4niX8t2zw3Sfx72eaFkcRVL5ht/qvY5j+Sbf69bPPvYZt/K9v8W9nm38I2/xa2+beyzb+Fbf6tbPNvYZsX1alTpwD4h3/4h9/mqquuuuqq/8sIrrrqqquu+j/v7//+738b4JprrsE2tvmX2OZFYZt/iW1s8y+xzb/ENrZ5YWxjm3+Jbf4ltrHNv8Q2tnlhbGObf4ltbPPC2MY2/xLb2OZFYRvb/EtsYxvb/EtsYxvbvChsYxvbvKhsYxvb/GvYxja2sY1t/i1sYxvb2MY2/9FsYxvb2MY2trGNbWxjm/9rbGMb29jGNraxjW1sY5v/DLaxjW1sYxvb/HvZxja2sc2/lW1sY5t/C9vYxjb/Fraxzb+FbWzzr2Ub2/xb2Obfwja2+bewzb+Vba666qqrrrrqPxCVq6666qqr/t/Y3NzkfraRxAtjGwBJvDC2kcS/xDaSeGFsI4l/iW0k8cLYRhIvjG0AJPHC2EYS/xLbSOKFsQ2AJF4Y2wBI4gWxDYAkXhjb3E8SL4xtACTxL7ENgCT+Jba5nyT+Jba5nyReFLZ5IEn8a9jmgSTxb2Gb50cS/5ls8x9FEv9atvnfyDb/WWzzH8E2/162+fewzb+Vbf6tbPNvZZt/K9v8W9nm38o2/1a2+dfY2NgA4L777ruVq6666qqr/i+jctVVV1111f95//AP//A7ABsbGzyQbSTxL7GNJF4Y2wBI4oWxjSReGNsASOKFsY0kXhjbAEjihbGNJF4Y2wBI4oWxDYAkXhjbAEjihbGNJF4Y2wBI4l9iGwBJvDC2AZDEv8Q295PEv8Q2AJJ4UdjmfpJ4UdnmgSTxr2GbB5LEv4dtXhBJ/E9im/9LbPOfzTb/kWzz72Wbfy/b/FvZ5t/KNv8etvm3sM2/lW3+PWzzb2Wbf41Tp04B8A//8A+/zVVXXXXVVf/XUbnqqquuuur/vLNnz94KsLm5yXOzjST+JbaRxL/ENpJ4YWwDIIkXxjaSeGFsAyCJF8Y2knhhbAMgiRfGNgCSeGFsAyCJF8Y2AJJ4QWwDIIkXxjb3k8QLYxsASbwwtrmfJP4ltgGQxL/ENveTxIvCNg8kiReVbe4niX8t2zw3SfxHsM0LI4mrXjDb/FeyzX802/xHsM2/l23+PWzz72Gbfyvb/FvZ5t/KNv9Wtvn3sM2/1sbGBgD33XffrVx11VVXXfV/HZWrrrrqqqv+37ONJP4ltpHEv8Q2kviX2EYSL4xtACTxwthGEi+MbQAk8cLYBkASL4xtJPEvsQ2AJF4Y20jihbENgCT+JbYBkMQLYxsASfxLbAMgiX+Jbe4niX+Jbe4niReVbe4niReVbZ6bJP61bPP8SOI/km1eFJL4v8Q2/91s85/BNv9RbPPvZZt/L9v8W9nm38M2/1a2+fewzb+Vbf49bPNvsVgsuOqqq6666v8NKlddddVVV/2fd999991633333XrNNdc8eHNzk8PDQ56bbQAk8cLYBkASL4xtACTxwthGEv8S20jihbENgCReGNtI4l9iG0m8MLYBkMS/xDaSeGFsAyCJF8Y2AJL4l9gGQBIvjG0AJPEvsc39JPEvsc39JPEvsc39JPGiss39JPGvZZsHksS/lW2eH0n8Z7LNfzRJvChs87+dbf6z2OY/km3+I9jm38M2/x62+fewzb+Hbf49bPNvZZt/D9v8W21sbADwD//wD7/DVVddddVV/9cRXHXVVVdd9f/C2bNnbwXY2NjghbHNi8I2Lwrb/EtsY5t/iW1s8y+xzb/ENrb5l9jGNv8S29jmX2Ib2/xLbGObf4ltbPOisI1t/iW2sY1tXhS2sc2Lyja2eVHZxja2+dewjW1sY5t/C9vYxja2+Y9gG9vYxja2sc3/ZLaxjW1sYxvb2MY2trHN/xa2sY1tbGMb29jmP5JtbGMb2/xHsI1tbPPvYRvb2Obfyja2+beyjW3+rWxjm38r29jm38o2tvm3ss2/h23+PTY2Nrjqqquuuur/DYKrrrrqqqv+X7jvvvtuBdjc3ORfYpsXhW1eFLZ5UdjmRWGbf4ltbPMvsY1t/iW2eVHY5kVhG9v8S2xjm3+JbWzzorCNbV4UtrHNi8I2trHNi8I2trHNi8o2trGNbf41bGMb29jm38I2trGNbWzzH8U2trGNbWxjG9vY5qoXnW1sYxvb2MY2trHNfwbb2MY2trHNfwTb2MY2tvn3sI1tbPNvZRvb2Obfyja2+beyjW3+PWzz72Gbfw/b/HvY5t9rsVgA8A//8A+/zVVXXXXVVf/XUbnqqquuuur/hfvuu+9WgI2NDV4UtpHEv8Q2AJJ4YWwDIIkXxjYAknhhbCOJf4ltJPEvsY0kXhjbAEjihbENgCT+JbYBkMQLYxsASbwwtrmfJF4Y2wBI4l9im/tJ4l9iGwBJvChscz9JvKhscz9J/GvY5oEk8W9hm+dHEv+RbPOiksT/Rbb5n8A2/1ls8x/JNv8RbPPvZZt/L9v8e9jm38M2/162+fewzX+EjY0NAO67775bueqqq6666v86KlddddVVV/2/8A//8A+/A3DNNdfwD//wD0jiX2IbAEn8S2wjiX+JbSTxL7GNJF4Y2wBI4oWxDYAkXhjbAEjihbENgCReGNsASOJfYhsASbwwtgGQxL/ENgCSeGFscz9J/EtsAyCJf4lt7ieJF4Vt7ieJF5VtHkgS/xq2eSBJ/HvY5vmRxH822/x7SeI/im3+N7LNfzbb/EezzX8E2/xHsM2/l23+PWzz72Wbfy/b/HvY5j/CYrHgqquuuuqq/1eoXHXVVVdd9f+SbQAk8S+xjST+JbaRxL/ENpL4l9hGEv8S20jiX2IbSfxLbCOJf4ltJPEvsQ2AJP4ltgGQxAtjGwBJ/EtsAyCJf4ltACTxL7HN/STxL7HN/STxorDN/STxr2Gb+0niX8s2z00S/162eX4k8T+Jbf6/sM1/Fdv8R7PNfxTb/EewzX8E2/x72ebfyzb/Hrb597LNfwTbnDp1CoB/+Id/+G2uuuqqq676/4DKVVddddVV/y+cPXv2VoDNzU0eyDaS+JfYRhL/EtsASOKFsQ2AJF4Y2wBI4oWxDYAkXhjbAEjihbENgCReGNsASOJfYhtJvChsI4l/iW0AJPEvsQ2AJP4ltgGQxIvCNgCSeFHY5n6SeFHY5oEk8aKyzQNJ4t/CNs9NEv8RbPPCSOKqfzvb/FezzX8W2/xHsc1/FNv8e9nmP4Jt/r1s8+9lm38v2/xHsM0D3Xfffbdy1VVXXXXV/wdUrrrqqquu+n/hvvvuuxVgc3OT52YbSfxLbAMgiX+JbSTxL7GNJP4ltpHEv8Q2kviX2AZAEi+MbQAk8cLYBkASL4xtACTxL7ENgCT+JbYBkMS/xDYAkviX2OZ+kviX2OZ+knhR2OZ+knhR2eZ+kvjXsM0DSeLfyjbPTRL/0WzzL5HE/ze2+Z/ANv+ZbPMfyTb/UWzzH8E2/xFs8x/BNv9etvn3ss1/tI2NDQDuu+++W7nqqquuuur/A4Krrrrqqqv+3/iHf/iH3wa45ppreG62eVHZ5kVhmxeFbWzzL7GNbf4ltrHNi8I2LwrbvChsY5t/iW1s86KwjW1eFLaxzYvCNrZ5UdnGNi8q29jmX8M2trHNv4ZtbGObfwvb2MY2tvn3so1tbGMb29jmP5ttbGMb29jGNraxjW1sYxvb2MY2tvnvZhvb2MY2trGNbWxjG9vYxja2sc1/B9vYxja2sc1/NNvYxja2+Y9gG9vY5j+CbWzz72Ub2/x72cY2/162sc2/l23+vWzzH8U299vY2ADg7Nmzz+Cqq6666qr/D6hcddVVV1111TPZBkAS/xLbSOJfYhsASfxLbCOJf4ltJPEvsQ2AJF4Y2wBI4oWxDYAk/iW2kcS/xDYAkviX2AZAEv8S2wBI4l9im/tJ4l9im/tJ4l9im/tJ4kVlm/tJ4kVlmweSxL+WbZ6bJP69bPP8SOK/m22uejbb/FeyzX8G2/xHss1/FNv8R7DNfwTb/EewzX8E2/xHsc0DnTp1CoB/+Id/+G2uuuqqq676/4Dgqquuuuqq/zf+/u///rcBzpw5wwtjmxeFbWzzorDNi8I2Lwrb2OZFYZsXhW1eFLaxzb/ENrZ5UdjGNi8K29jmRWEb27yobGObF5VtbPOiso1tbPOvYRvb2OZfyza2sY1t/q1sYxvb2OY/km1sYxvb2MY2trnqP49tbGMb29jGNrb5z2Qb29jGNrb5j2Ib29jGNv8RbGMb2/xHsI1t/r1sY5v/CLb5j2Cb/wi2+Y9im6uuuuqqq/7fo3LVVVddddVVz4dtJPGisI0k/iW2kcS/xDYAkviX2EYS/xLbAEjihbENgCT+JbaRxL/ENgCS+JfYBkAS/xLbAEjiX2Kb+0niX2IbAEm8KGxzP0m8KGxzP0m8qGxzP0n8a9nmgSTxb2Gb5yaJ/2i2+ZdI4qrnZZv/brb5z2ab/2i2+Y9km/8otvmPYpv/KLb5j2Cb/2wbGxsA3Hfffbdy1VVXXXXV/wcEV1111VVX/b/xD//wD78DcM011/CisI1tXhS2eVHYxjYvCtu8KGxjmxeFbV4UtrHNv8Q2tnlR2MY2Lwrb2OZFYRvbvKhsY5sXhW1sY5sXlW1s869hG9vY5l/DNraxjW3+LWxjG9vY5t/DNraxjW1sY5v/bLaxjW1sYxvb2MY2trGNbWzzv5VtbGMb29jGNraxjW1sYxvb/FezjW1sYxvb/GewjW1sY5v/KLaxjW3+o9jGNv8RbGOb/wi2sc1/BNvY5j+Cbf4j2ea5nTp1CoD77rvvVq666qqrrvr/gspVV1111VX/b5w9e/ZWgM3NTWwjiReFbSTxL7ENgCT+JbaRxL/ENgCS+JfYRhL/EtsASOJfYhtJ/EtsAyCJf4ltACTxL7ENgCT+Jba5nyT+JbYBkMSLwjYAknhR2OZ+knhR2eZ+kvjXsM39JPFvYZsHksS/l22eH0n8d7DNVf92tvmvZJv/LLb5j2ab/0i2+Y9km/8otvmPYpv/SLZ5fjY2NgD4h3/4h9/mqquuuuqq/y+oXHXVVVdd9f+WbSTxorCNJF4UtpHEv8Q2AJL4l9hGEv8S2wBI4l9iG0n8S2wDIIl/iW0AJPEvsQ2AJP4ltgGQxIvCNgCS+JfYBkASLwrb3E8SLwrb3E8SLyrb3E8S/xq2eSBJ/FvY5rlJ4j+CbV4QSVz138s2/x1s85/JNv/RbPMfzTb/kWzzH8k2/1Fs8x/JNlddddVVV131AARXXXXVVVf9v3Hffffdet999926ubnJ5uYmALaxzYvCNrZ5UdjmRWWbF4VtbPOisM2Lwja2eVHYxjYvCtu8qGzzorKNbV5UtrHNi8I2trHNi8o2tvnXsI1tbPOvYRvb2Obfwja2sY1t/j1sYxvb2OY/g21sYxvb2MY2trHNVf9+trGNbWxjG9vYxjb/FWxjG9vYxjb/0WxjG9vY5j+SbWzzH8k2tvmPYhvb/EexjW3+o9jmv9Lp06cB+Id/+Iff4aqrrrrqqv8vCK666qqrrvp/5ezZs7cCbG5u8kC2eVHZ5kVhG9u8KGzzorLNi8I2tnlR2MY2LwrbvChsY5sXhW1s86KyjW1eVLaxzYvKNrZ5UdnGNrb517CNbWzzr2Eb29jGNv8WtrGNbWzz72Eb29jGNraxzX8m29jGNraxjW1sYxvb2Ob/I9vYxja2sY1tbGMb29jmv5ptbGMb29jmP4ttbGOb/2i2sY1t/qPYxja2+Y9iG9v8R7LNfyTb/EezzVVXXXXVVVc9FypXXXXVVVf9v3Lffffd+mIv9mJsbm7y3GwjiReFbSTxorCNJP4ltgGQxL/ENgCS+JfYRhIvCttI4l9iGwBJ/EtsAyCJf4ltACTxorANgCReFLYBkMSLwjb3k8SLwjb3k8SLyjb3k8S/hm3uJ4l/C9s8kCT+vWzz3CTxX8k2/x6S+K9mm//tbPNfyTb/mWzzn8E2/9Fs8x/NNv/RbPMfzTb/klOnTgHwD//wD7/NVVddddVV/19Queqqq6666v+V++6771aAzc1Nnh/bAEjiX2IbAEn8S2wDIIl/iW0k8aKwjST+JbYBkMS/xDYAkviX2AZAEv8S2wBI4l9iGwBJvChsAyCJF4Vt7ieJF4VtACTxorINgCT+NWxzP0n8a9jmgSTxb2GbB5LEfwTbvCCS+J/GNlc9f7b572Kb/2y2+c9gm/8MtvnPYJv/aLb5j2abF8XGxgYA9913361cddVVV131/wWVq6666qqr/l85e/bsMwCuueYaXhjbSOJFYRtJvChsI4l/iW0AJPEvsQ2AJP4ltgGQxL/ENgCS+JfYBkAS/xLbAEjiX2IbAEm8KGwDIIkXlW0AJPGisM39JPGisM39JPGvYZv7SeJfyzb3k8S/lW2emyT+I9nmBZHEVf/1bPPfzTb/FWzzn8k2/xls85/BNv/RbPOfwTYvio2NDa666qqrrvp/icpVV1111VX/r9x333238iKyjSReFLaRxIvCNpJ4UdhGEi8K20jiRWEbSbwobCOJF4VtJPGisA2AJP4ltgGQxIvCNgCSeFHZBkASLyrbAEjiRWWb+0niX8M295PEv5ZtHkgS/x62eW6S+M9gm3+JJK7617HN/zS2+a9im/9MtvnPYpv/DLb5z2Cb/26nTp0C4B/+4R9+h6uuuuqqq/4/oXLVVVddddX/K2fPnr0VYHNzkxeFbSTxorANgCT+JbYBkMS/xDYAkviX2AZAEv8S2wBI4l9iGwBJ/EtsAyCJF4VtACTxL7ENgCReFLYBkMSLyjb3k8SLwjb3k8SLyjb3k8S/hm3uJ4l/C9s8kCT+vWzz3CTxX8E2LypJ/F9lm/8NbPNfzTb/2Wzzn8k2/1ls85/BNv9ZbPOvdd99993KVVddddVV/59Queqqq6666v+V++6771aAzc1NbCOJf4ltACTxorCNJF4UtpHEi8I2knhR2EYSLwrbAEjiX2IbAEn8S2wDIIkXhW0AJPEvsQ2AJF4UtgGQxL+GbQAk8aKyDYAk/jVscz9J/GvY5oEk8W9hmweSxH8E2zw/kvjvYpv/DJJ4Udnm/wvb/HewzX8F2/xns81/Ftv8Z7HNfxbb/GtsbGwAcN999z2dq6666qqr/j8huOqqq6666v+df/iHf/htgGuuuQbbvKhs86KyzYvKNrZ5UdjGNi8K29jmRWWbF5VtXlS2sc2Lyja2eVHYxjYvKtvYxjb/Graxzb+GbWxjm38t29jGNv8WtrGNbf49bGMb29jGNv+RbGMb29jGNraxzf9WtrGNbWxjG9vYxja2sY1t/i+yjW1sYxvb2Oa/im1sYxvb/GeyjW1s85/FNraxzX8G29jmP4NtbPOfxTb/WhsbGwCcPXv2GVx11VVXXfX/CZWrrrrqqqv+37ONJF4UtgGQxL/ENgCSeFHYRhIvCttI4kVhGwBJ/EtsAyCJf4ltACTxorANgCReFLaRxIvCNveTxIvCNgCSeFHZ5n6SeFHZ5n6S+Newzf0k8a9lmweSxL+HbZ6bJP6j2eYFkcRV/z1s8z+Jbf4r2ea/gm3+M9nmP5Nt/jPZ5t/i1KlTAJw9e/ZWrrrqqquu+v+E4Kqrrrrqqv93/v7v//63Aa655hruZ5t/Ddu8qGzzorKNbV4UtrHNi8o2Lyrb2OZFYRvbvKhsY5sXhW1s869hG9u8qGxjm38t29jmX8s2trHNv5ZtbGObfyvb2MY2tvmPYBvb2MY2tvnPZBvb2MY2trGNbWxjm6v+bWxjG9vYxja2sY1t/jvZxja2sY1t/ivYxja2+c9kG9vY5j+Tbf4z2eZ/uvvuu+9Wrrrqqquu+v+EylVXXXXVVVc9k20AJPGisI0kXhS2AZDEi8I2knhR2EYSLwrbAEjiRWEbSbwobAMgiReFbQAk8S+xzf0k8aKwDYAkXhS2uZ8kXlS2uZ8k/jVscz9J/GvY5oEk8W9hmweSxH8E2zw3SfxXsc2LShL/l9nmfxvb/HexzX8l2/xXsM1/Jtv8V7DNv9XGxgYA9913361cddVVV131/wmVq6666qqr/t/5h3/4h98BuPbaa/n7v/97npttJPGisA2AJF4UtpHEi8I2AJL4l9gGQBIvCttI4kVhGwBJvChsAyCJF4VtJPGisg2AJF4UtgGQxIvKNgCS+Newzf0k8a9hm/tJ4l/LNveTxL+VbR5IEv9RbPP8SOK/k22u+u9jm/9OtvmvZpv/Krb5z2ab/wq2+bc6deoUAPfdd9+tXHXVVVdd9f8Nlauuuuqqq/7fOXv27K0Am5ubvCC2kcSLyjaSeFHYBkASLwrbSOJFYRsASfxLbAMgiReFbQAk8aKwjSReFLYBkMSLyjYAknhR2AZAEi8q29xPEv8atgGQxL+Wbe4niX8t2zyQJP6tbPPcJPEfyTbPjySu+r/BNv9T2Oa/g23+q9jmv4pt/ivY5t9jY2MDgH/4h3/4ba666qqrrvr/hspVV1111VVXvQC2AZDEi8I2knhR2UYSLwrbAEjiRWEbSbwobAMgiReFbSTxorANgCReFLYBkMSLyjYAknhR2OZ+knhR2QZAEv8atrmfJP61bHM/Sfxb2OZ+kvj3ss0DSeI/g21eGElc9T+Hbf4nss1/F9v8V7LNfxXb/FexzVVXXXXVVVf9OxBcddVVV131/859991363333Xfr5uYmm5ub/Ets86KyjW1eVLb517DNi8o2tnlR2eZFZRvbvKhsY5sXlW1s869hG9v8a9jGNv8atrGNbf61bGMb2/xb2MY2tvm3so1tbGOb/wi2sY1tbGOb/wq2sY1tbGMb29jGNlf9x7KNbWxjG9vYxja2+Z/CNraxjW3+q9nGNrb5r2Ib2/xXsc1/Fdv8Rzh9+jQA//AP//A7XHXVVVdd9f8NwVVXXXXVVf8vnT179laAzc1NXhS2+dewzYvKNrZ5UdnGNi8q27yobGObF5VtbPOiso1tXlS2sc2/hm1s869hG9v8a9nGNv8WtrGNbf4tbGMb2/x72MY2trHNfxTb2MY2trGNbf4r2cY2trGNbWxjG9vYxja2sc3/R7axjW1sYxvb2MY2trGNbf4nso1tbGMb2/xXs41tbGOb/0q2sc1/FdvY5qqrrrrqqqv+l6Fy1VVXXXXV/2ubm5u8qGwDIIkXhW0AJPGisI0kXlS2kcSLwjYAknhR2AZAEi8K2wBI4kVhGwBJvChsAyCJF5VtACTxorLN/STxorLN/STxr2Wb+0niX8s2DySJfyvbPJAk/iPZ5vmRxH832/xHkMR/Jtv8f2Ob/0ls89/FNv/VbPPfwTb/UU6dOgXAP/zDP/w2V1111VVX/X9DcNVVV1111f9Lf//3f//bAJubm9jmX8M2/xq2eVHZxjYvKtvY5kVlG9u8qGzzr2Eb27yobGObF5VtbPOvYRvb/GvZxjb/Wraxzb+VbWxjm38r29jGNv9etrGNbWxjm/8MtrGNbWxjG9v8b2Qb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbPN/mW1sYxvb2MY2/91sYxvb2Oa/g21s81/NNv8dbPMfaWNjA4D77rvvVq666qqrrvr/hspVV1111VX/L509e/YZAJubmwDYBkASLwrbAEjiRWEbAEm8KGwjiReVbSTxorKNJF4UtgGQxIvKNpJ4UdkGQBIvCtvcTxIvCtvcTxIvKtsASOJfwzb3k8S/hW3uJ4l/C9s8kCT+vWzzQJL4z2KbF0QSV/3vY5v/6WzzP4Ft/rvY5r+Lba666qqrrrrqPxCVq6666qqr/l+67777bgXY3NzkgWwjiReVbSTxorKNJF4UtgGQxIvCNgCSeFHYBkASLwrbAEjiRWEbAEm8qGwDIIkXlW0AJPGisg2AJF5UtrmfJP41bHM/Sfxb2OZ+kvi3ss0DSeLfyzbPTRL/2Wzzwkjiqv8etvnfxDb/U9jmv5Nt/jvZ5j/aqVOnAPiHf/iH3+aqq6666qr/j6hcddVVV131/9LZs2dvBdja2uK52UYSLyrbSOJFZRtJvKhsI4kXlW0k8aKyDYAkXhS2AZDEi8I2AJJ4UdkGQBIvKtsASOJFZRsASfxr2AZAEv9atrmfJP4tbHM/Sfx72OaBJPEfwTbPTRL/lWzzopDEVS8a2/xvZ5v/aWzz3802/91s859hY2MDgPvuu+9Wrrrqqquu+v+IylVXXXXVVf8v3XfffbcCbG5u8vzYBkASLwrbAEjiRWEbAEm8KGwDIIkXhW0AJPGiso0kXlS2AZDEi8I2AJJ4UdkGQBIvKtsASOJFZZv7SeJFZZv7SeJfyzb3k8S/hW0eSBL/HrZ5IEn8R7HN8yOJ/062+beQxP9Wtvn/wDb/U9nmfwLb/E9gm/8sGxsbANx33323ctVVV1111f9HVK666qqrrvp/67777rv1mmuuefA111zDfffdx/NjG0m8qGwjiReVbSTxorINgCReFLYBkMSLwjYAknhR2UYSLyrbAEjiRWUbAEm8qGwDIIl/DdsASOJfwzb3k8S/lm3uJ4l/K9vcTxL/XrZ5IEn8R7PN8yOJ/8lsc9X/DLb5n842/5PY5n8K2/xn2tjYAODs2bPP4Kqrrrrqqv+PCK666qqrrvp/6+zZs7fyIrDNv4ZtbPOiso1t/jVs869hm38N29jmRWUb2/xr2MY2/xq2sc2/hm1s869lG9v8W9jGNv9WtrGNbf49bGMb29jmP4JtbGMb29jmP4ttbGMb29jGNra56v8n29jGNraxjW3+p7KNbWzzP4VtbPM/hW3+s506dQqA++6771auuuqqq676/4jgqquuuuqq/7fuu+++WwGuvfZa/iW2sc2/hm3+NWzzr2Eb27yobGObfw3b/GvYxjb/Graxzb+GbWzzr2Eb29jmX8M2trHNv5ZtbGObfyvb2MY2/162sY1tbPMfxTa2sY1t/ivYxja2sY1tbGObq/53s41tbGMb29jGNv/T2cY2trHN/yS2sc3/JLb5r3T27Nlbueqqq6666v8jKlddddVVV/2/dd99993Kv5JtJPGisg2AJF4UtgGQxIvKNpJ4UdkGQBIvCtsASOJFZRsASbyobAMgiReVbQAk8a9hGwBJ/GvYBkAS/1q2uZ8k/i1scz9J/HvZ5n6S+I9im+cmif8qtvmXSOKq/3q2+b/CNv/T2eZ/Ktv8V9nY2ADgvvvuu5Wrrrrqqqv+P6Jy1VVXXXXV/1v/8A//8DsA11xzDf8atgGQxIvKNpJ4UdlGEi8q2wBI4kVlG0m8qGwDIIkXlW0AJPGisg2AJF5UtgGQxL+GbQAk8a9hm/tJ4l/LNveTxL+Fbe4niX8v2zyQJP4j2eb5kcR/B9u8qCRx1Qtnm//rbPO/hW3+J7PNf5WNjQ0A7rvvvlu56qqrrrrq/ysqV1111VVX/b+3tbWFbSTxr2EbSbyobCOJF5VtACTxorKNJF5UtgGQxIvKNgCSeFHZBkASLyrbAEjiRWUbAEn8a9jmfpL417DN/STxr2Wb+0ni38I2DySJfy/bPDdJ/EezzXOTxP8ktvn3ksT/VLa56jnZ5n8b2/xvYJv/SqdOnQLgH/7hH36bq6666qqr/r+ictVVV1111f9bZ8+evZUHsA2AJF5UtpHEi8o2AJJ4UdlGEi8q2wBI4kVlGwBJvKhsI4l/DdtI4l/DNgCSeFHZ5n6S+NewDYAk/rVsAyCJfwvb3E8S/1a2uZ8k/qPY5oEk8Z/BNi+IJP43ss1V//PY5n8z2/xvYpurrrrqqquu+m9A5aqrrrrqqv+37rvvvlsBNjc32dzc5PDwEADbSOJFZRsASbyobCOJF5VtACTxorINgCReVLaRxIvKNgCSeFHZBkAS/xq2AZDEv4ZtACTxr2EbAEn8a9nmfpL4t7DN/STxb2WbB5LEfxTbPJAk/rPZ5vmRxFVXvSC2+b/CNv/b2Oa/y+nTpwH4h3/4h9/hqquuuuqq/68Irrrqqquu+n/tH/7hH34bYGtriweyjW3+NWzzr2Eb2/xr2MY2/xq2+dewjW3+NWxjm38N29jmX8s2tvnXso1t/rVsYxvb/FvYxja2+beyjW1s8+9lG9vY5j+abWxjG9vY5r+KbWxjG9vYxja2sc1V//fZxja2sY1tbGOb/+1sYxvb/G9jm6uuuuqqq676b0blqquuuuqqq14I20jiRWUbAEm8qGwjiX8N20jiRWUbAEm8qGwDIIkXlW0AJPGisg2AJP41bAMgiX8N2wBI4l/LNgCS+LewDYAk/q1scz9J/HvY5oEk8R/NNs9NEv/VbPMvkcRV/zPZ5v8T2/xfYJv/bqdOnQLgH/7hH36bq6666qqr/r8iuOqqq6666v+1v//7v/9tgGuuuYYXxDb/Wrb517CNbf41bGObfw3b2OZfwza2+dewjW3+NWxjm38t29jmX8s2trHNv5ZtbGObfwvb2MY2/x62sY1t/iPYxja2sc1/FtvYxja2sY1t/rvZxja2sY1tbGMb29jGNra56j+GbWxjG9vYxja2sY1tbPN/nW1sYxvb/F9gm/8JNjY2ALjvvvtu5aqrrrrqqv+vqFx11VVXXfX/2tmzZ58BsLW1xQtjGwBJvKhsAyCJF5VtJPGvYRtJ/GvYRhL/GraRxL+GbQAk8aKyDYAk/jVsAyCJfy3bAEjiX8s2AJL4t7DN/STxb2WbB5LEv5dtHkgS/5ls89wk8T+Rbf6tJPF/iW2u+texzf9Vtrnqqquuuuqq/2GoXHXVVVdd9f/afffddyvA5uYmLwrbSOJfwzaSeFHZBkASLyrbAEjiRWUbAEm8qGwDIIl/DdsASOJFZRsASfxr2OZ+kvjXsA2AJP61bHM/Sfxb2OZ+kvj3sM39JPEfwTYPJIn/bLZ5fiTxv5Vtrvr/wzb/X9jmf5JTp04B8A//8A+/zVVXXXXVVf+fUbnqqquuuur/tbNnz94KsLW1xYvKNgCSeFHZBkASLyrbSOJfwzYAknhR2QZAEi8q2wBI4l/DNpL417ANgCT+tWwDIIl/DdvcTxL/Wra5nyT+LWxzP0n8e9jmgSTxH8E2z00S/xVs84JI4qqr/qvZ5v8r2/xPtLGxAcB99913K1ddddVVV/1/RuWqq6666qqrgM3NTf61bCOJfw3bSOJFZRsASfxr2EYS/xq2kcS/hm0AJPGisg2AJP41bAMgiX8t2wBI4l/LNgCS+LewDYAk/q1scz9J/HvZ5n6S+I9kmweSxH8127wgkrjqqn8r21z1nGzzP9XGxgYA9913361cddVVV131/xnBVVddddVV/6/dd999t9533323AmxsbPCvZZt/Ldv8a9nGNv8atrHNv4ZtbPOvZRvb/GvYxjb/WraxjW3+tWxjm38L29jGNv8WtrGNbf49bGMb2/xHsI1tbGOb/2i2sY1tbGOb/062sY1tbGMb29jGNra56v8329jGNraxjW1sc9Wz2cY2/5NtbGwAcPbs2Wdw1VVXXXXV/2cEV1111VVX/b939uzZWwG2trawjW3+NWxjm38N29jmX8s2/1q2+deyjW3+tWzzr2Ub2/xb2MY2/1q2sY1t/i1sY5t/K9vYxjb/HraxjW1s8x/BNraxjW3+M9jGNraxjW3+J7GNbWxjG9vYxja2sY1trvrfxza2sY1tbGMb29jGNle9cLaxzf8Gi8UCgPvuu+9Wrrrqqquu+v+M4Kqrrrrqqv/37rvvvlsBNjc3uZ9t/rVs869lm38t29jmX8M2tvnXso1t/jVsY5t/LdvY5t/CNrb5t7CNbf4tbGMb2/xb2cY2tvn3so1tbPMfxTa2sY1t/rPYxja2sY1tbPM/mW1sYxvb2MY2trGNbWxjG9tc9R/PNraxjW1sYxvb2MY2trGNba76t7ONbf432djYAODs2bO3ctVVV1111f9nVK666qqrrvp/77777rsVYGtriweyjST+NWwDIIkXlW0AJPGvYRtJ/GvYBkAS/xq2kcS/hm0AJPGvYRsASfxr2QZAEv9atgGQxL+FbQAk8W9lm/tJ4t/DNveTxH8U2zyQJP4z2ea5SeJ/I9v8R5DE/3a2uep/Ptv8b7axsQHAfffddytXXXXVVVf9f0blqquuuuqq//f+4R/+4XcArr32Wp6bbQAk8a9hG0n8a9gGQBIvKtsASOJfwzaS+NewDYAk/jVsAyCJfw3bAEjiX8s2AJL417LN/STxr2Wb+0ni38o295PEv4dtHkgS/1Fs80CS+M9mm+dHEv8f2Oaqq/4z2eZ/u42NDQDOnj37DK666qqrrvr/jspVV1111VVXvQhsI4l/DdsASOJfwzaS+NewDYAkXlS2AZDEv4ZtACTxr2EbAEn8a9gGQBL/WrYBkMS/hW0AJPFvYZv7SeLfyjb3k8S/l23uJ4n/SLZ5bpL4r2CbF0QSV1111Qtmm/9LTp06BcDf//3f/zZXXXXVVVf9f0flqquuuuqq//fOnj17K8Dm5iYvjG0AJPGvYRtJ/GvYBkAS/xq2kcS/hm0AJPGvYRsASfxr2AZAEv8atrmfJP41bHM/Sfxr2eZ+kvi3sA2AJP49bHM/Sfx72eaBJPEfzTYPJIn/arZ5QSRx1VX/H9nmqquuuuqqq/4foHLVVVddddX/e/fdd9+tAFtbW7wobCOJfw3bAEjiX8M2kvjXsA2AJP41bAMgiX8N2wBI4l/DNgCS+NeyDYAk/rVsAyCJfwvbAEji38I295PEv4dt7ieJ/wi2eSBJ/EezzXOTxH8X27wwkrjqqv/tbPP/yenTpwH4h3/4h9/mqquuuuqq/+8Irrrqqquuugr4h3/4h98GuPbaa3lR2MY2/1q2+deyjW3+tWxjm38t2/xb2Obfwja2+bewjW3+LWxjm38r29jGNv9WtrGNbf69bGMb2/xHso1tbGOb/yy2sY1tbGOb/ylsYxvb2MY2trGNbWxz1VX/k9jGNraxjW2uuuqqq6666v8xKlddddVVV13172AbSfxr2AZAEv8atpHEv5ZtJPGvYRsASfxr2AZAEv9atgGQxL+WbQAk8a9lm/tJ4t/CNgCS+Leyzf0k8e9hmweSxH8U2zyQJP6z2Ob5kcT/NLZ5UUniqqv+I9jmqufv1KlTAPzDP/zDb3PVVVddddX/dwRXXXXVVVddBfz93//9bwNce+21/GvZ5t/CNv9atrHNv5ZtbPOvZRvb/GvZxjb/Fraxzb+FbWzzb2Ub2/xb2cY2tvn3sI1tbPMfwTa2sc1/NNvYxja2+a9gG9vYxja2sc3/FraxjW1sYxvb2MY2trGNbWxjm6v+/7GNbWxjG9vYxja2sc1VL9jGxgZXXXXVVVdd9UxUrrrqqquuuuoBNjc3+bewDYAk/jVsAyCJfw3bAEjiX8M2AJL417ANgCT+NWwDIIl/LdsASOJfyzYAkvi3sA2AJP6tbAMgiX8P29xPEv9etnkgSfxHss0DSeK/im2eH0n8b2ebfy9JXPVfyzZX/fe67777buWqq6666qr/76hcddVVV111FfAP//APvwOwtbWFbQAk8a9lG0n8a9lGEv9atpHEv5ZtJPGvZRtJ/GvZBkAS/1q2AZDEv5ZtACTxb2Gb+0ni38I295PEv4dt7ieJ/wi2uZ8k/qPZ5rlJ4r+SbZ4fSfx/Ypv/iSTxH8E2V10FcOrUKQD+4R/+4be56qqrrrrqKqBy1VVXXXXVVcDZs2dvBdjc3OR+tpHEv5ZtACTxr2EbAEn8a9gGQBL/GrYBkMS/hm0AJPGvZRsASfxr2QZAEv9atrmfJP4tbAMgiX8r29xPEv8etrmfJP4j2OaBJPGfwTYPJIn/DrZ5QSRx1X8N21x11X+kjY0NAO67775bueqqq6666iqgctVVV1111VUvhG0k8W9hG0n8a9lGEv9atpHEv5ZtACTxr2EbAEn8a9kGQBL/WrYBkMS/hW0AJPFvYZv7SeLfyjb3k8S/h23uJ4n/KLZ5IEn8Z7DNc5PEfyfbvCCSuOqqq/7n2tjYAOC+++67lauuuuqqq64Cgquuuuqqq64C7rvvvlvvu+++W7e2ttja2uKBbGObfwvb2OZfyza2+deyjW3+LWzzb2Eb2/xb2MY2/xa2sc2/lW1s8+9hG9v8e9nGNv8RbGMb2/xHs41tbGOb/0y2sY1tbGOb/ylsYxvb2MY2trGNbWxz1VVX/ffZ2NgA4OzZs8/gqquuuuqqq4Dgqquuuuqqq57p7NmztwJsbm7y/Njm38o2/xa2+bewjW3+tWxjm38L29jm38I2tvm3sI1t/q1sYxvb/FvZxja2+fewjW1s8x/BNraxjW3+o9nGNrb5r2Ab29jGNrb5n8o2trGNbWxjG9vY5qqrrvrPs1gsALjvvvtu5aqrrrrqqquA4Kqrrrrqqque6b777rsVYGtrixfENrb5t7CNbf61bGObfwvb/FvYxjb/Fraxzb+FbWzzb2Eb29jm38o2tvn3sI1t/r1sYxvb/EexjW1s8x/NNraxjW1s81/BNraxjW1sY5v/6WxjG9vYxja2sY1tbGObq6666l9vY2MDgLNnz97KVVddddVVVwGVq6666qqrrnqm++6771aAzc1N/iW2kcS/hW0k8a9lGwBJ/GvYBkAS/1q2AZDEv5ZtACTxr2UbAEn8W9gGQBL/FrYBkMS/lW3uJ4l/D9vcTxL/EWzzQJL4j2abB5LEfxXbPDdJ/G9jmxeVJK666irY2NgA4L777ruVq6666qqrrgKCq6666qqrrnqmf/iHf/gdgOuuu44XhW1s829hG9v8W9jm38I2tvm3sM2/lW3+rWxjm38r29jm38o2trHNv4dtbGObfy/b2MY2/5FsYxvb/GexjW1sY5v/araxjW1sYxvb/F9hG9vYxja2sY1tbGMb29jGNra56qr/azY2NgC47777buWqq6666qqrrqBy1VVXXXXVVf9OtpHEv4VtJPGvZRsASfxr2UYS/1q2AZDEv5ZtACTxb2EbAEn8W9gGQBL/VrYBkMS/h20AJPHvZZv7SeI/im0eSBL/GWzz3CTxX802L4gk/i+zzb+WJK666n+qU6dOAfAP//APv81VV1111VVXXUHlqquuuuqqq57p7NmztwJsbm7yr2UbAEn8a9kGQBL/WrYBkMS/hm0AJPGvZRsASfxr2QZAEv8WtgGQxL+FbQAk8W9lm/tJ4t/KNveTxL+Xbe4nif9ItrmfJP4z2eaBJPHfyTbPjyT+v7LNv4Ukrrrqqquuuuqqq/4bULnqqquuuuqqZ7rvvvtuBdja2sI2kvjXso0k/i1sAyCJfy3bSOJfyzYAkvjXsg2AJP61bAMgiX8L2wBI4t/CNveTxL+VbQAk8e9hm/tJ4t/LNveTxH8k2zyQJP4z2ea5SeK/m21eEElc9bxs828hiauuelGdPn0agPvuu+9WrrrqqquuuuoKgquuuuqqq656gH/4h3/4bYBrr70W2/xb2MY2/1a2+bewjW3+LWxjm38L29jm38I2tvm3so1t/j1sY5t/D9vYxjb/XraxjW3+I9jGNraxzX8029jGNrb5r2Ab29jGNrb5n8Q2trGNbWxjG9vY5qp/HdvYxja2sY1tbGMb29jGNraxzVVXnT179hlcddVVV1111RVUrrrqqquuuuqFsA2AJP61bCOJfwvbAEjiX8s2kvi3sI0k/i1sAyCJfy3bAEji38I2AJL4t7INgCT+PWwDIIl/L9sASOI/im3uJ4n/aLZ5IEn8V7DNc5PE/0S2eUEkcdW/n21eVJK46v+OU6dOAfAP//APv81VV1111VVXXUFw1VVXXXXVVQ/w93//978NcN111/FAtvm3sI1t/q1s829hG9v8W9jGNv9Wtvm3so1t/q1sYxvb/FvZxja2+fewjW1s8+9lG9vY5j+SbWxjm/8strGNbWzzX8k2trGNbWzzP51tbGMb29jGNraxzVX/8WxjG9vYxja2sY1tbHPV/x4bGxtcddVVV1111XOhctVVV1111VUvIttI4t/CNpL4t7ANgCT+tWwDIIl/LdsASOJfyzYAkvi3sA2AJP6tbAMgiX8r2wBI4t/DNgCS+Peyzf0k8R/FNg8kif8MtnkgSfxXss3zI4n/DWzzwkjiqv94tnlBJHHV/zz33XffrVx11VVXXXXVFVSuuuqqq6666gH+4R/+4XcArr32Wp4f2wBI4l/LNgCS+LewjST+LWwjiX8L2wBI4l/LNgCS+LewDYAk/q1sAyCJfyvbAEji38M295PEv5dt7ieJ/0i2uZ8k/rPY5oEk8d/BNs9NEv/b2OZfIomr/uPY5vmRxFX/tU6dOgXAP/zDP/w2V1111VVXXfVsVK666qqrrrrqAc6ePXsrwNbWFi+MbSTxb2EbSfxb2AZAEv9atgGQxL+FbQAk8a9lGwBJ/FvYBkAS/1a2AZDEv5Vt7ieJfw/b3E8S/162uZ8k/iPZ5oEk8Z/FNs9NEv8dbPP8SOJ/M9u8MJK46t/PNs9NElf959nY2ADgvvvuu5WrrrrqqquuejYqV1111VVXXfVvZBsASfxr2QZAEv8WtgGQxL+WbQAk8W9hG0n8W9gGQBL/FrYBkMS/lW0AJPHvYRsASfx72QZAEv8RbHM/SfxHs839JPGfzTYPJIn/TrZ5fiTxf4FtXhhJXPVvY5sHksRV/3E2Nja46qqrrrrqqueD4Kqrrrrqqqse4L777rv1vvvuu3Vra4utrS1eFLb5t7LNv4dt/q1sY5t/C9vY5t/KNrb5t7KNbWzzb2Ub29jm38M2trHNv5dtbGOb/yi2sY1tbPMfzTa2sY1t/ivYxja2sY1t/iewjW1sYxvb2Ob/GtvYxja2sY1tbGObq150trGNbWxz1b/PxsYGAP/wD//wO1x11VVXXXXVsxFcddVVV1111XM5e/bsrQCbm5u8qGxjm38L29jm38o2tvm3ss2/lW1s829lG9v8e9jGNv8etrHNv5dtbPMfwTa2sc1/JNvYxjb/GWxjG9vY5r+KbWxjG9v8T2Ib29jGNraxzf9VtrGNbWxjG9vY5qoXzja2sc1V/3qLxYKrrrrqqquuej4Irrrqqquuuuq53HfffbcCbG1t8a9lm38r2/x72MY2/xa2sc2/lW1s829lG9v8e9jGNv8etrHNv5dtbGOb/wi2sY1t/iPZxja2+c9iG9vYxjb/VWxjG9vYxjb/09jGNraxjW1s83+ZbWxjG9vYxja2ueo52cY2V73oNjY2APiHf/iH3+aqq6666qqrno3KVVddddVVVz2X++6771aAzc1N/i1sAyCJfy3bAEji38o2kvi3sA2AJP4tbAMgiX8L2wBI4t/KNgCS+Leyzf0k8e9hGwBJ/Eewzf0k8R/FNveTxH8W2zyQJP6r2Oa5SeJ/Gtu8IJL4v8o2z48k/j+zzf0kcdULtrGxAcB99913K1ddddVVV131bARXXXXVVVdd9VzOnj37DIDrrrsO2/xb2ebfyja2+beyjW3+rWxjm38r29jm38o2tvn3sI1t/r1sY5t/L9vYxjb/UWxjG9v8R7KNbWxjm/9MtrGNbf472MY2trGNbf4ns41tbGMb29jm/zLb2MY2trGNbf4/so1trnpeGxsbANx33323ctVVV1111VXPicpVV1111VVXPZf77rvvVh7ANgCS+NeyDYAk/i1sI4l/K9sASOLfwjaS+LeyjST+rWwDIIl/K9sASOLfwzYAkvj3ss39JPEfwTb3k8R/JNvcTxL/WWzz3CTxX802z00S/5PZ5vmRxP9Vtnlukvj/wDaSuOrZTp06BcA//MM//DZXXXXVVVdd9ZyoXHXVVVddddVzOXv27K0AW1tbPJBtJPFvYRtJ/FvYBkAS/1a2kcS/hW0AJPFvYRsASfxb2QZAEv9WtgGQxL+Hbe4niX8v2wBI4j+Kbe4nif9ItnkgSfxnss0DSeK/g22emyT+p7PN8yOJ/4ts80CS+L/KNgCSuOqqq6666qqrXigqV1111VVXXfVc7rvvvlsBtra2eG62AZDEv5ZtACTxb2EbSfxb2QZAEv8WtgGQxL+FbQAk8W9lGwBJ/FvZ5n6S+PewDYAk/r1scz9J/Eexzf0k8R/NNveTxH822zyQJP672Oa5SeJ/A9s8P5L4v8Q2DySJ/2tsI4n/706fPg3AfffddytXXXXVVVdd9ZwIrrrqqquuuur5+Id/+IffBrjuuut4fmzzb2Ub2/xb2MY2/x62sc2/lW1s829lG9v8e9jGNv9etrHNv5dtbGOb/wi2sY1t/iPZxja2+c9gG9vYxjb/FWxjG9vY5r+bbWxjG9vY5n8T29jGNraxzf8ltrGNbWzzf4Vtrrri7Nmzz+Cqq6666qqrnhOVq6666qqrrvo3sg2AJP4tbCOJfwvbAEji38o2AJL4t7ANgCT+LWwDIIl/K9sASOLfwzYAkvj3sg2AJP4j2AZAEv+RbHM/SfxnsM39JPFfwTYPJIn/brZ5bpL438I2z48k/rezzf0k8b+ZbSTx/9WpU6cA+Id/+Iff5qqrrrrqqqueE8FVV1111VVXPR9///d//9sA1157Lf8S2/xb2cY2/1a2+feyzb+Hbf49bGObfw/b2Obfyza2+Y9gG9vY5j+CbWxjm/9otrGNbf6z2MY2trHNfxXb2MY2trHN/wS2sY1tbGOb/21sYxvb2MY2/5vZxja2+d/KNv/fSEISV1111VVXXfVCULnqqquuuuqq/wC2AZDEv4VtJPFvYRsASfxb2QZAEv8WtgGQxL+VbQAk8W9lm/tJ4t/KNveTxL+XbQAk8R/BNveTxH8k29xPEv9ZbHM/SfxXss0DSeJ/Ats8N0n8b2KbB5LE/0a2uZ8k/jexjST+r5LE87OxsQHAfffddytXXXXVVVdd9ZwIrrrqqquuuur5+Id/+IffAbjuuuv417DNv5VtbPNvZRvb/HvYxjb/Vraxzb+HbWzz72Ub2/x72cY2/xFsYxvb/EexjW1s8x/NNraxzX8m29jGNrb5r2Yb29jGNv+T2MY2trGNbf43sY1tbGMb2/xvYxvb/G9im/9LJCEJSTw/p06dAuAf/uEffoerrrrqqquuel5Urrrqqquuuur5OHv27K0AW1tb/GvZBkAS/xa2kcS/lW0k8e9hGwBJ/FvYBkAS/1a2AZDEv4dtACTx72EbAEn8R7ANgCT+o9jmfpL4j2SbB5LEfxbbPJAk/ivZ5rlJ4n8K2zw3SfxvYZsHksT/BrYBkMRV/zUk8aLY2NgA4L777ruVq6666qqrrnpeVK666qqrrrrqP4ltJPFvYRsASfxb2AZAEv8etpHEv5VtACTxb2UbAEn8e9gGQBL/Hra5nyT+vWxzP0n8R7HN/STxH80295PEfybbPJAk/qvZ5oEk8T+JbZ6bJP43sM39JPE/nW0AJPE/mW0k8b+RJP41FosFV1111VVXXfVCEFx11VVXXXXV83Hffffdet999926tbXF5uYm/1a2sc2/lW1s829lG9v8e9jGNv8etrHNv4dtbPPvZRvb/EewjW3+o9jGNv/RbGMb2/xnsI1tbPNfwTa2sY1t/jvYxja2sY1t/qexjW1sY5v/DWxjG9vY5n8y29jmqv84kpDEv9bGxgYA//AP//DbXHXVVVddddXzIrjqqquuuuqqF+Ds2bO3AmxtbWGbfw/b/HvY5t/DNv9etrHNv4dtbPPvYRvb/HvZxjb/EWxjG9v8R7CNbWzzH802tvnPYhvb2MY2/xVsYxvb/HeyjW1sY5v/aWxjG9vYxjb/09nGNrb5n8o2trnq304Skvi32tjY4KqrrrrqqqteCCpXXXXVVVdd9S/Y2toCwDYAkvi3sA2AJP4tbAMgiX8L2wBI4t/DNgCS+LeyDYAk/q1sAyCJfw/b3E8S/162AZDEfwTb3E8S/1Fscz9J/Gexzf0k8Z/NNg8kif8utnkgSfxPY5sHksT/VLa5nyT+p7ENgCT+p7CNJP4nk8S/12KxAOAf/uEffpurrrrqqquuel4EV1111VVXXfUC/P3f//1vA2xtbfFAtvn3sM2/h23+PWxjm38v29jm38M2tvn3sI1t/iPYxjb/EWxjm/9ItrHNfzTb2MY2/5lsYxvb/FexjW1sY5v/TraxjW1sY5v/aWxjG9vY5n8q29jGNv/T2Oaqf5kkJPEfYWNjA4D77rvvVq666qqrrrrqeVG56qqrrrrqqhfg7NmzzwDY2triudkGQBL/FrYBkMS/hW0AJPFvZRtJ/HvZRhL/HrYBkMS/lW0AJPHvZRsASfx72eZ+kviPYJv7SeI/km0eSBL/GWzzQJL4r2CbB5LEfyfbPJAk/iexzQNJ4n8a2wBI4n8K20jiqudPEv9RNjY2uOqqq6666qp/AZWrrrrqqquuegHuu+++WwG2trZ4QWwjiX8r20ji38o2AJL4t7ANgCT+PWwDIIl/D9sASOLfyjb3k8S/h20AJPEfwTYAkviPYpv7SeI/mm3uJ4n/LLa5nyT+q9jmgSTx38k2DySJ/0lscz9J/E9im/tJ4r+bbQAkcdWzSeI/0qlTpwD4h3/4h9/mqquuuuqqq54/KlddddVVV131Apw9e/ZWgK2tLV4Y2wBI4t/CNgCS+LeyjST+rWwDIIl/D9sASOLfwzYAkvj3sA2AJP49bHM/Sfx72eZ+kviPYpv7SeI/mm3uJ4n/LLZ5IEn8V7HNA0niv5NtHkgS/1PY5oEk8T+FbQAk8d/NNpL472IbSfx3k8R/pvvuu+9Wrrrqqquuuur5o3LVVVddddVVL8B99913K8DW1hYvCttI4t/KNgCS+LewDYAk/q1sAyCJfw/bAEji38M2AJL497ANgCT+vWwDIIn/CLYBkMR/JNvcTxL/0WxzP0n8Z7LN/STxX8k2DySJ/062eSBJ/E9hm/tJ4n8C2wBI4r+TbSTx/5Uk/rMsFgsA7rvvvlu56qqrrrrqqueP4KqrrrrqqqteiPvuu+9WgOuuu44XhW1s8+9hm38P29jm38M2/xFsY5t/L9vY5t/LNrb5j2Ab2/xHsY1tbPMfzTa2+c9iG9vY5j+bbWxjG9v8V7ONbWxjm/9utrGNbWzzP4VtbGOb/wlsY5v/Trb5/0gS/5k2NjYAOHv27DO46qqrrrrqqueP4KqrrrrqqqteiLNnz97Kv4Ft/j1sY5t/D9v8e9jGNv8RbGObfy/b2Obfyza2+Y9gG9vY5j+KbWxjm/9ItrGNbf6z2MY2tvmvYBvb2Oa/g21sY5v/CWxjG9v8T2Eb29jmv5ttbPPfxTb/n0jiP9upU6cA+Id/+Iff5qqrrrrqqqueP4KrrrrqqquueiHuu+++WwGuu+46/rVsY5t/D9v8e9jGNv8etrHNfwTb2Obfyza2+feyjW3+o9jGNv+RbGOb/2i2sY1t/rPYxja2+a9gG9vYxjb/1WxjG9vY5r+bbWxjG9v8T2Ab29jmv5NtbHPVfx5JXHXVVVddddX/EFSuuuqqq6666oW47777buXfyTaS+LeyDYAk/q1sAyCJfyvbAEji38s2kvj3sg2AJP49bHM/Sfx72QZAEv9RbHM/SfxHss39JPGfwTYPJIn/bLa5nyT+q9nmgSTx38k295PEfzfbAEjiv4ttJPFfyTaS+L9MEv9VNjY2ALjvvvtu5aqrrrrqqquePypXXXXVVVdd9UL8wz/8w+8AXHfddfx72AZAEv9WtgGQxL+VbSTx72EbAEn8e9gGQBL/XrYBkMS/l20AJPHvZZv7SeI/im0AJPEfzTb3k8R/FtvcTxL/2WzzQJL4r2ab+0niv5Nt7ieJ/062AZDEfwfbAEjiv4ptJPF/kST+q5w6dQqA++6771auuuqqq6666gWjctVVV1111VUvgq2tLWwDIIl/K9tI4t/DNpL4t7INgCT+PWwjiX8v2wBI4t/LNgCS+PeyDYAk/iPYBkAS/1Fscz9J/Eezzf0k8Z/FNveTxH8F29xPEv/VbPNAkvjvYpv7SeK/i23uJ4n/araRxFX/e2xsbADwD//wD7/NVVddddVVV71gVK666qqrrrrqhTh79uytPBfbSOLfyjYAkvi3sg2AJP6tbAMgiX8r2wBI4t/LNgCS+PeyDYAk/r1sAyCJ/wi2uZ8k/qPY5n6S+I9mm/tJ4j+Lbe4nif8KtnkgSfxXs839JPHfxTb3k8R/F9sASOK/km0k8V/BNpL4v0QSV1111VVXXfU/EMFVV1111VVXvRD33XffrQBbW1tsbW1xP9vY5t/DNrb597DNv5dtbPPvYRvb/EewjW3+I9jGNv8RbGOb/0i2sc1/NNvY5j+LbWxjm/9MtrGNbf4r2cY2tvnvYBvb2MY2/11sYxvb/HexjW3+K9nmv4pt/rNJ4r+CJP6rnTp1CoB/+Id/+B2uuuqqq6666gUjuOqqq6666qp/wT/8wz/8NsDW1hbPzTb/Xrb597CNbf69bPPvZRvb/EewjW3+I9jGNv8RbGMb2/xHsY1tbPMfyTa2sc1/FtvYxjb/mWxjG9vY5r+KbWxjG9v8d7CNbWzz38U2trHNfwfb2Oa/im1sc9WLRhJXXXXVVVdd9T8Ylauuuuqqq676d7INgCT+rWwDIIl/K9sASOLfyjYAkvj3sA2AJP69bAMgiX8v2wBI4j+CbQAk8R/FNgCS+I9km/tJ4j+DbQAk8Z/NNveTxH8V29xPEv/VbHM/Sfx3sA2AJP6r2QZAEv8VbCOJ/0y2kcT/VpL47yCJU6dOAfAP//APv81VV1111VVXvWAEV1111VVXXfUv+Pu///vfBrjuuut4YWzz72Wbfy/b/HvZxjb/XraxzX8E29jmP4JtbPMfxTa2+Y9kG9vY5j+abWzzn8U2trHNfwXb2MY2/5VsYxvb/HewjW1s89/BNraxzX812/xXsc1V/3NIQhIAGxsbANx33323ctVVV1111VUvGJWrrrrqqquu+hecPXv2GQDb29v8S2wDIIl/K9sASOLfyjYAkvj3sA2AJP49bAMgiX8v2wBI4t/LNgCS+I9gm/tJ4j+KbQAk8R/JNveTxH8G29xPEv/ZbHM/SfxXsc39JPFfzTb3k8R/NdsASOK/im0AJPGfzTaSuOo5SeK/iiQeaLFYcNVVV1111VUvIipXXXXVVVdd9S+47777bgXY2triRWUbAEn8W9kGQBL/VrYBkMS/h20k8e9lG0n8R7ANgCT+vWxzP0n8R7ANgCT+o9jmfpL4j2Sb+0niP4Nt7ieJ/2y2uZ8k/qvY5oEk8V/JNveTxH8l2wBI4r+KbSTxn802kvjPYBtJ/G8iif8Kknh+NjY2APiHf/iH3+aqq6666qqrXjgqV1111VVXXfUvOHv27K0AW1tb/GvZRhL/HraRxL+HbSTx72EbAEn8e9gGQBL/EWwDIIn/CLYBkMR/BNsASOI/km0AJPEfzTb3k8R/BtvcTxL/2WxzP0n8V7LN/STxX8k295PEfxXbAEjiv4JtACRx1X8+SfxXkMQLslgsALjvvvtu5aqrrrrqqqteOCpXXXXVVVdd9SLa2tri38I2AJL4t7INgCT+rWwDIIl/D9sASOLfwzYAkviPYBsASfxHsA2AJP4j2OZ+kviPYpv7SeI/mm0AJPGfxTb3k8R/Nts8kCT+q9jmfpL4r2QbAEn8V7ENgCT+K9hGEv9ZbCOJq/5zSeJfsrGxAcB99913K1ddddVVV131whFcddVVV1111b/gvvvuu/W+++67FWBra4t/K9v8e9nm38s2tvn3so1t/r1sY5v/KLaxzX8U29jmP5JtbPMfzTa2+c9gG9vY5j+TbWxjm/8qtrGNbf4r2cY2tvmvZBvb2Oa/im1s81/BNv+ZbPOfwTb/0STxH00S/5kk8aJYLBYAnD179hlcddVVV1111QtHcNVVV1111VUvgrNnz94KsLm5yb+HbWzz72Eb2/x72cY2/162sc2/l21s8x/FNrb5j2Ib2/xHso1t/qPZxja2+c9gG9vY5j+TbWxjm/8qtrGNbf4r2cY2/9VsY5v/KraxzX8229jmP4tt/j+SxH8WSUjiRXXq1CkA7rvvvlu56qqrrrrqqheO4KqrrrrqqqteBPfdd9+tANvb29jm38s2/162sc2/l23+I9jmP4JtbPMfxTa2+Y9iG9v8R7KNbWzzH802tvnPYhvb2OY/k21sY5v/KraxjW3+q9jGNrb5r2Qb29jmv4JtbPOfzTZX/c8niX+rs2fP3spVV1111VVXvXBUrrrqqquuuupFcN99990KsLW1BYBtACTxb2UbAEn8e9hGEv8etgGQxL+HbQAk8e9lGwBJ/EewDYAk/iPY5n6S+I9iGwBJ/Eeyzf0k8Z/BNveTxH8W29xPEv8VbHM/SfxXsM39JPFfxTYAkvjPZhsASfxnsY0k/qPZRhL/X0jiP4Mk/i02NjYAuO+++27lqquuuuqqq144KlddddVVV131IviHf/iH3wG47rrreCDbSOLfwzaS+PewDYAk/j1sAyCJfw/bAEji38s2AJL4j2Cb+0niP4JtACTxH8U295PEfyTb3E8S/xlsAyCJ/0y2uZ8k/ivYBkAS/1Vscz9J/FewDYAk/rPZRhL/WWwjiav+Z5HEv8WpU6cAuO+++27lqquuuuqqq/5lVK666qqrrrrq38k2AJL4t7INgCT+PWwDIIl/D9sASOLfwzYAkvj3sg2AJP6j2AZAEv8RbAMgif9ItgGQxH802wBI4j+Dbe4nif9MtrmfJP6z2eZ+kvivYhsASfxXsA2AJP4z2QZAEv8ZbCOJ/0i2kcR/FNtI4j+CJP6jSOI/miT+rRaLBQD/8A//8NtcddVVV1111b+MylVXXXXVVVe9CM6ePXsrwPb2Ni+IbSTx72EbAEn8e9hGEv9etpHEv5dtACTx72UbAEn8R7ENgCT+I9gGQBL/kWwDIIn/aLa5nyT+M9jmfpL4z2Sb+0niP5tt7ieJ/wq2uZ8k/rPZBkAS/5lsI4n/DLaRxFUvOkn8R5PEVVddddVVV/0XonLVVVddddVVL4L77rvvVoCtrS1eGNsASOLfwzaS+PewDYAk/j1sAyCJfy/bAEji38s2AJL4j2IbAEn8R7DN/STxH8U295PEfzTbAEjiP4tt7ieJ/0y2AZDEfwXb3E8S/xVsAyCJ/2y2AZDEfxbbSOI/g20k8R/FNpK46l8mif8Ip06dAuAf/uEffoerrrrqqquu+pcRXHXVVVddddWL6B/+4R9+G+C6667jX2Kbfy/b2Obfyza2+feyjW3+I9jmP4ptbPMfyTa2+Y9kG9v8R7ONbf4z2MY2tvnPZBvb/GezjW1s81/FNrb5r2Ib2/xXsI1t/rPYxjZX/feRxH8USVx11VVXXXXVfxOCq6666qqrrvpPYhvb/HvZ5j+Cbf4j2MY2/162sc1/FNvY5j+SbWzzH8k2tvmPZhvb2OY/g21s85/JNraxzX8229jGNv8VbGMb2/xXsI1t/ivY5j+Tbf6j2eY/km3+J5HE/ySS+I90+vRpAP7hH/7ht7nqqquuuuqqfxnBVVddddVVV72I/v7v//63Aa6//nr+NWzz72Ub2/x72cY2/xFs8x/BNrb5j2Ib2/xHso1t/iPZxja2+Y9mG9v8Z7CNbWzzn8k2trHNfzbb2MY2/xVsY5v/CraxjW3+M9nGNv9ZbPMfzTZXvWCS+I8gif8okpDEYrEA4L777ruVq6666qqrrvqXUbnqqquuuuqqf6WtrS3+tWwDIIl/D9sASOLfwzYAkvj3sA2AJP69bAMgif8ItgGQxH8U2wBI4j+SbQAk8R/JNveTxH8029xPEv9ZbAMgif9stgGQxH8229xPEv/ZbAMgif8stgGQxH8020jiP5JtJPEfwTaSuOrZJPEfRRJXXXXVVVdd9W9EcNVVV1111VUvon/4h3/4HYCtrS3+rWzzH8E2/xFs8x/BNrb5j2Ab2/xHsY1t/iPZxja2+Y9kG9v8Z7CNbf6z2MY2/5lsYxvb/GezjW1s81/BNrb5r2Ab2/xnss1/Bttc9Z9PEv9TSEIS9zt16hQA//AP//A7XHXVVVddddWLhspVV1111VVXvYjOnj17K8D29jb/HrYBkMS/h20AJPHvYRsASfx72QZAEv9etgGQxH8E2wBI4j+SbQAk8R/FNgCS+I9mGwBJ/Gewzf0k8Z/FNveTxH8m2wBI4j+bbe4nif9MtpHEfxbbAEjiP5JtJPEfxTaSuOo/liT+vSTx3BaLBQD33XffrVx11VVXXXXVi4bgqquuuuqqq/4NbPPvZZv/CLb5j2Ab2/xHsI1t/iPYxjb/UWxjm/9otrHNfyTb2MY2/9FsYxvb/GexjW3+s9nGNv/ZbGMb2/xXsI1t/jPZxjb/mWzzH802/5Fs8x/BNv/dJPHvIYl/L0n8e0ni+VksFgDcd999T+eqq6666qqrXjQEV1111VVXXfUiuu+++2697777bt3a2mJrawvb/HvZxjb/XraxzX8E29jmP4Jt/qPYxjb/UWxjm/9otrHNfzTb2OY/g21s85/FNraxzX8m29jGNv/ZbGOb/wq2sc1/JtvY5j+Lbf6j2eaq/1iS+PeSxL+HJCTxgmxsbABw9uzZZ3DVVVddddVVLxqCq6666qqrrvpXOHv27K0A29vbANjGNv9etrHNv5dtbPMfwTb/EWxjm/8otrHNfxTb2OY/mm1s8x/NNrb5z2Ab29jmP4ttbPOfzTa2+c9mG9vY5j+bbWzzn8k2tvnPYBvb/EeyzX8U21z17yOJfw9J/EtOnToFwNmzZ2/lqquuuuqqq140BFddddVVV131r3DffffdCrC1tcUD2eY/gm3+I9jmP4JtbPMfwTa2+Y9iG9v8R7GNbf6j2cY2/9FsYxvb/GewjW3+s9jGNrb5z2Qb29jmP5ttbPOfzTa2+c9km/8stvmPZJur/v0k8e8hiX8PSfxr3Hfffbdy1VVXXXXVVS8agquuuuqqq676V7jvvvtuBdja2uK52cY2/162sc2/l21s8x/BNrb5j2Ab2/xHsY1t/qPYxjb/0WxjG9v8R7ONbf4z2MY2tvnPYhvb/GezjW3+s9nGNrb5z2Qb2/xnsY1t/jPY5j+Sbf4j2Obfyzb/XSTxv5EkXlSLxQKA++6771auuuqqq6666kVDcNVVV1111VX/Cv/wD//wOwDXX389L4ht/iPY5j+CbWzzH8E2/1FsY5v/KLb5j2Qb2/xnsI1t/qPZxjb/WWxjm/8strGNbf4z2cY2tvnPZhvb/GeyjW3+s9jGNv/RbPMfyTZX/dtI4t9DEv9WknhRLRYLAO67775bueqqq6666qoXHcFVV1111VVX/SewjW3+vWxjm/8ItvmPYBvb/EexjW3+I9jGNv+RbGOb/wy2sc1/NNvYxjb/GWxjm/9MtrHNfzbb2OY/m21s85/JNrb5z2Kb/2i2+Z/GNle96CTxbyWJf41Tp04B8A//8A+/zVVXXXXVVVe96Aiuuuqqq6666l/h7NmztwJsb2/zorDNfwTb2Obfyza2+Y9gG9v8R7HNfxTb2OY/km1s85/BNrb5z2Ab2/xnsI1tbPOfxTa2sc1/JtvY5j+bbWzzn8k2tvnPYJv/aLb5j2Kbq/7rSOLfShJXXXXVVVdd9V+E4Kqrrrrqqqv+Fe67775bAba2tnhR2cY2/xFs8x/BNrb5j2Ab2/xHsI1t/qPYxjb/kWxjm/8MtrHNfwbb2OY/i21s85/JNrb5z2Qb29jmP5NtbPOfyTb/GWxjm/9ItvmPYpt/L9v8byOJfwtJ/FeTxL/FqVOnAPiHf/iH3+Gqq6666qqrXnQEV1111VVXXfWv9A//8A+/DXD99dfzr2Gb/wi2sc1/BNv8R7GNbf4j2MY2/1FsY5v/SLaxzX8G29jGNv/RbGMb2/xnsI1tbPOfxTa2sc1/JtvY5j+TbWzzn8U2tvnPYJv/SLb5v8I2/9dJ4t9CEv8WkrjqqquuuuqqfyOCq6666qqrrvovZBvb/EewzX8E29jmP4pt/qPYxjb/UWxjm/9ItrHNfxbb2OY/g21s85/FNrb5z2Qb2/xnso1t/jPZxjb/WWxjm/9otvmPZJv/CLb597LN/3WS+LeQxL+FJP4tJAFw6tQpAP7hH/7ht7nqqquuuuqqFx3BVVddddVVV/0r/f3f//1vA1x33XX8W9nGNv9etrHNfwTb2OY/gm1s8x/FNrb5j2Ib2/xHso1t/rPYxjb/GWxjm/8strHNfybb2OY/k21s85/JNrb5z2Kb/2i2sc1/FNv8R7DNVf9zSOLfQhL3WywWANx33323ctVVV1111VUvOipXXXXVVVdd9d/INpL497INgCT+vWwDIIl/L9sASOI/gm0AJPEfwTYAkviPYhsASfxnsA2AJP6j2QZAEv8ZbHM/SfxnsM39JPGfwTb3k8R/BtsASOI/mm0AJPEfyTaS+I9gG0lc9aKRxL+WJP4tJPGvJYl/LUlcddVVV1111X8Qgquuuuqqq676V/qHf/iH3wG4/vrr+Y9gG9v8R7DNfxTb/EexjW3+o9jGNv9RbGOb/0i2sY1t/jPYxjb/GWxjG9v8Z7GNbf4z2cY2/5lsY5v/LLaxzX8G2/xHs81/FNv8e9nm38M2Vz2bJP61JPGvJYnndvLkSQD+4R/+4be56qqrrrrqqn8dgquuuuqqq676Vzp79uytAFtbW9jGNv8RbPMfwTa2+Y9gG9v8R7HNfyTb/EeyjW3+o9nGNv8ZbGMb2/xnsI1t/rPYxjb/mWxjm/9MtrHNfxbb2OY/mm1s8x/JNv9RbHPVfzxJ/FeQxL+WJJ6fjY0NAO67775bueqqq6666qp/HYKrrrrqqquu+g9gm/8ItrHNfwTb2OY/gm1s8x/BNrb5j2Ib2/xHso1t/qPZxjb/WWxjm/8MtrHNfxbb2OY/k21s85/JNrb5z2Kb/wy2+Y9km/8pbHPVv58k/jUk8a8liRdksVgAcN99993KVVddddVVV/3rEFx11VVXXXXVv9J9991363333Xfr9vY2W1tb3M82tvmPYJv/KLb5j2Kb/yi2sc1/FNvY5j+SbWzzH802tvnPYhvb/GewjW3+s9jGNrb5z2Ib2/xnso1t/jPYxjb/0WzzH8k2/xFs89/JNv8WtvmvIIn/bJL415DEv5YkXpjFYgHA2bNnn8FVV1111VVX/esQXHXVVVddddW/wdmzZ28F2N7e5rnZ5j+CbWzzH8E2tvmPYBvb/EexjW3+o9jGNv+RbGOb/2i2sc1/FtvY5j+DbWxjm/8strHNfxbb2OY/k21s85/BNrb5j2Qb2/xHsc1/BNv8e9jmqisk8T+NJP4li8UCgPvuu+9Wrrrqqquuuupfh+Cqq6666qqr/g3uu+++WwG2trZ4fmxjm/8ItrHNfwTb2OY/gm1s8x/FNrb5j2Ib2/xHso1t/qPZxjb/WWxjm/8strHNfxbb2OY/i21sY5v/LLb5z2Kb/2i2+Y9im/8Itrnqv54k/jUk8a8hiRfFxsYGAGfPnr2Vq6666qqrrvrXIbjqqquuuuqqf4P77rvvVoDt7W1eGNv8R7HNfxTb/EexjW3+o9jGNv9RbGOb/0i2sc1/NNvY5j+LbWzzn8U2tvnPYhvb/GeyjW3+M9jGNv8ZbGOb/0i2+Y9im/9utvmfThL/mSTxn0kS/xqSeFEtFgsA7rvvvlu56qqrrrrqqn8dgquuuuqqq676Nzh79uwzAK6//nr+JbaxzX8E29jmP4JtbPMfxTb/kWzzH8k2tvmPZBvb/EezjW3+s9jGNrb5z2Ab2/xnsY1t/jPZxjb/GWxjm/8MtvmPZJv/KLb597LNfwfb/E8kif9MknhRSeJfQxIvqsViAcB99913K1ddddVVV131r0dw1VVXXXXVVf8G99133638K9nGNv8RbPMfxTa2+Y9gG9v8R7GNbf4j2cY2/5FsY5v/aLaxzX8m29jmP4NtbPOfxTa2sc1/FtvY5j+DbWzzH802tvmPYhvb/EewzX8n21z1opHEfxZJ/GucOnUKgH/4h3/4ba666qqrrrrqX4/gqquuuuqqq/4Nzp49eyvA1tYW/1q2+Y9gG9v8R7HNfxTb2OY/im1s8x/JNrb5j2Qb2/xHs41t/jPZxjb/GWxjG9v8Z7GNbf6z2OY/i23+M9jmP5Jt/iPY5t/DNlf960niP4skXlSSeFFJQhJXXXXVVVdd9e9EcNVVV1111VX/Bvfdd9+tANvb2/xb2MY2/xFsY5v/CLaxzX8U29jmP4ptbPMfyTa2+Y9kG9v8R7ONbf4z2cY2/1lsY5v/LLaxzX8G29jmP4NtbPMfzTb/kWzzP4FtrvrPI4kXlSReVJJ4UUnifqdOnQLgH/7hH36Hq6666qqrrvrXI7jqqquuuuqqf6N/+Id/+G2A66+/nn8r2/xHsc1/FNvY5j+Kbf4j2cY2/5FsY5v/SLaxzX8029jGNv9ZbGOb/yy2sc1/FtvY5j+DbWzzn8E2tvmPZBvb/Eexzb+Xbf672Ob/Akm8qCTx300SLypJXHXVVVddddV/IIKrrrrqqquu+m9mG9v8R7CNbf6j2OY/im1s8x/JNrb5j2Sb/2i2sc1/BtvY5j+LbWzzn8U2tvnPYhvb/GewjW3+M9jmP5pt/qPY5t/LNv8etvmvZJv/DyTxopLEi0ISLypJPLeTJ08C8A//8A+/zVVXXXXVVVf96xFcddVVV1111b/R3//93/82wPXXX89/BNv8R7HNfxTb2OY/im1s8x/JNv+RbGOb/2i2sc1/BtvY5j+LbWzzn8U2tvnPYhvb/GewjW3+o9nGNv+RbPMfxTb/Xrb572Cbq/59JPEfTRLPz2Kx4Kqrrrrqqqv+HQiuuuqqq6666t/JNrb5j2Ab2/xHsI1t/qPYxjb/UWxjm/8otrHNfyTb2OY/mm1s85/BNrb5z2Ib2/xnsY1t/rPYxjb/GWzzn8E2/5Fs8x/FNv+dbHPVCyeJF5Uk/qNJ4kUhiX/JfffddytXXXXVVVdd9a9HcNVVV1111VX/Rv/wD//wOwA33HADALb5j2Kb/yi2sc1/FNv8R7LNfyTb2OY/km1s8x/NNrb5z2Ab2/xnsY1t/rPYxjb/WWzzn8E2tvmPZhvb/EexzX8U2/x72OYqkMSLShL/nSTxopDEi0ISL8jJkycB+Id/+Iff5qqrrrrqqqv+bQiuuuqqq6666t/o7NmztwJsbW1xP9vY5j+CbWzzH8U2/1FsY5v/KLaxzX8k29jmP5JtbPMfzTa2+c9gG9v8Z7GNbf6z2MY2/xlsY5v/DLaxzX802/xHsY1t/iPY5t/DNv9Wtrnq308SLwpJvCgk8aKQxAuzWCwAuO+++27lqquuuuqqq/5tCK666qqrrrrqP4Ft/qPYxjb/EWxjm/8otrHNfxTb2OY/km1s8x/JNrb5j2Yb2/xnsI1t/rPYxjb/WWxjm/8MtrHNfwbb/EezzX8k2/x/ZJv/6yTx30ESLwpJ/EsWiwUA9913361cddVVV1111b8NwVVXXXXVVVf9G91333233nfffbdub2+zvb3Nc7ONbf6j2OY/im1s8x/FNv+RbGOb/0i2sc1/JNvY5j+abWzzn8E2tvnPYhvb/GexjW3+M9jGNv/RbGOb/0i2sc1/FNv8e9nm38M2/1a2uerfThIvCkn8V9vY2ADg7Nmzz+Cqq6666qqr/m0Irrrqqquuuurf4ezZs7cCbG1t8YLY5j+KbWzzH8U2/1FsY5v/SLaxzX8k2/xHs41t/qPZxjb/GWxjm/8strHNfxbb2OY/g21s8x/NNv/RbPMfxTb/Xrb597DN/2S2+e8miReFJP4jSeJFIYkXhST+JZJYLBYA3Hfffbdy1VVXXXXVVf82BFddddVVV131H2B7e5sXxja2+Y9im/8otrHNfxTb2OY/km3+I9nGNv/RbGOb/2i2sc1/BtvY5j+LbWzzn8U2tvnPYJv/aLaxzX8k2/xHsc2/l23+t7DN/3eS+I8iiReFJP4lkgBYLBYAnD179lauuuqqq6666t+G4Kqrrrrqqqv+Hf7+7//+twG2trZ4UdjGNv8RbGOb/yi2sc1/FNvY5j+KbWzzH8k2tvmPZhvb/EezjW3+M9jGNv9ZbGOb/yy2+c9gG9v8R7PNfyTb/Eexzb+Xbf6tbPNvYZur/nNI4j+KJP4lkrjfYrEA4L777ruVq6666qqrrvq3Ibjqqquuuuqqf4ezZ88+A2B7e5t/Ddv8R7HNfyTb/EeyzX8k29jmP5JtbPMfzTa2+Y9mG9v8Z7CNbf6z2MY2/xlsY5v/DLaxzX8k29jmP4ptbPMfwTZX/e8liReFJP6jSOJfIol/iSTut1gsADh79uwzuOqqq6666qp/O4Krrrrqqquu+ne47777bgXY3t7mX8s2tvmPYBvb/EexjW3+o9jGNv+RbGOb/0i2sc1/NNvY5j+abWzzn8E2tvnPYhvb/GewjW3+M9jmP5pt/iPZ5j+Cbf49bPNvZZt/C9tc9R9LEv8SSfxLJPGvdfLkSQD+/u///re56qqrrrrqqn87gquuuuqqq676dzh79uytAFtbW/xb2eY/im1s8x/FNv+RbGOb/0i2+Y9mG9v8R7PNfwbb2OY/g21s85/FNrb5z2Ab2/xHs41t/iPZxjb/UWzzH8E2/x62uepfJokXhST+L5PEVVddddVVV/0nILjqqquuuuqqf4f77rvvVoDt7W3+PWxjm/8otvmPYhvb/EeyzX8k29jmP5ptbPMfyTa2+c9gG9v8Z7CNbf6z2MY2/xlsY5v/aLb5j2ab/yi2+Y9gm/8OtvmvYJv/SyTxopDEv0QS/xJJ/Esk8S+RxHM7efIkAPfdd9/Tueqqq6666qp/O4Krrrrqqquu+ne67777bgW4/vrr+feyzX8U29jmP4ptbPMfxTa2+Y9kG9v8R7PNfzTb2OY/g21s85/BNv+ZbGOb/wy2+Y9mG9v8R7LNfxTb/HezzX8l21z1X0MS/xJJ/Esk8cKcPXv2GVx11VVXXXXVvx3BVVddddVVV/07nT179lb+A9nGNv9RbPMfyTb/kWxjm/9ItrHNfyTb2OY/mm1s85/BNrb5j2Yb2/xnso1t/qPZxjb/0WzzH8k2tvmPYJt/L9v8e9jm38I2V/3Hk8S/RBL/XpL4l0jiBTl58iQA//AP//DbXHXVVVddddW/HcFVV1111VVX/Tvdd999twJcf/312OY/im3+o9jGNv9RbGOb/0i2sc1/JNvY5j+SbWzzH802tvnPYBvb/EezjW3+M9nmP4NtbPMfyTa2+Y9km/8Itvn3ss1V/30k8T+JJP69JPHCLBYLrrrqqquuuuo/AMFVV1111VVX/Tvdd999t/IAtvmPYhvb/EexjW3+o9jGNv+RbPMfzTb/0Wxjm/9otrHNfwbb/GewjW3+s9jGNv8ZbPMfzTb/kWzzH8E2/162+beyzb+Fbf61bPOfxTb/U0niP4Ik/r0k8cJI4kV133333cpVV1111VVX/dsRXHXVVVddddW/0z/8wz/8DsD111/P/Wxjm/8otvmPZJv/SLb5j2Qb2/xHso1t/qPZxjb/0Wxjm/9otrHNfwbb2OY/i21s8x/NNrb5j2Qb2/xHsc1/BNv8e9nm38o2/xPZ5v8LSfx7SeKFkcQLI4l/yalTpwD4h3/4h9/mqquuuuqqq/59CK666qqrrrrqP8j29jbPzTb/UWxjm/8otrHNfxTb2OY/km1s8x/JNrb5j2Yb2/xHs41t/qPZxjb/GWxjm/8strHNfzTb/EezzX8U2/xHsM3/Nrb5v0oS/5NI4oWRxH82SSwWCwDuu+++W7nqqquuuuqqfx+Cq6666qqrrvp3Onv27K28ELaxzX8U29jmP4pt/iPZxjb/kWxjm/9ItrHNfzTb/GewzX8G29jmP4NtbPOfxTb/0Wxjm/9ItvmPYpv/CLb597DNv5VtrvrXkcS/RBL/Ekn8Z5PECyOJF0YSAPP5nKuuuuqqq676D0Jw1VVXXXXVVf9O9913360A29vbbG9v84LY5j+Sbf6j2MY2/5Fs8x/NNv/RbPMfzTa2+Y9mG9v8Z7CNbf4z2OY/i21s8x/NNv+RbGOb/wi2sc2/l23+PWzzX8k2/xq2uepfRxIvjCReGEm8MJJ4YSRxv8ViAcA//MM//A5XXXXVVVdd9e9DcNVVV1111VX/Af7hH/7htwG2trZ4YWxjm/8otrHNfxTb2OY/im1s8x/JNrb5j2Qb2/xHs41t/qPZxjb/GWxjm/9otrHNfxbb2OY/km1s8x/JNv9RbPPvZZv/Dra56v8XSbwwknigxWLBVVddddVVV/0HIbjqqquuuuqq/wa2+Y9km/9ItvmPZBvb/EeyjW3+I9nGNv/RbGOb/2i2sc1/Btv8Z7CNbf6z2OY/mm3+I9nmP4pt/r1s829lm6v++0niXyKJF0YSL4wkXhhJ/EdaLBYA/MM//MNvc9VVV1111VX/PgRXXXXVVVdd9R/g7//+738b4IYbbuBFZRvb/EexjW3+o9jGNv+RbPMfzTb/0Wxjm/9otrHNfzTb2OY/mm1s85/BNrb5z2Ab2/xHso1t/qPY5j+Kbf472ebfwjb/Wrb517DNi8o2V/3bSOKFkcQLI4nntlgsALjvvvtu5aqrrrrqqqv+fQiuuuqqq6666j/A2bNnnwGwvb3Nv5Zt/iPZ5j+SbWzzH8U2tvmPZBvb/EezjW3+o9nmP4NtbPMfzTa2+c9gm/8stvmPZpv/KLaxzX8E2/x72Oaq/5kk8e8liRdGEi+MJP6tJPHCSOK5LRYLAO67775bueqqq6666qp/P4Krrrrqqquu+g9w33333QqwtbXFv4VtbPMfxTa2+Y9km/9ItrHNfyTb2OY/mm3+o9nGNv8ZbPOfwTa2+Y9mG9v8Z7CNbf4j2eY/km3+I9jm38M2/1a2+bewzVX/u0ni30oSz8/JkycB+Id/+Iff5qqrrrrqqqv+/Qiuuuqqq6666j/A2bNnbwXY3t7m38M2/5Fs8x/JNrb5j2Sb/2i2sc1/JNvY5j+abWzzH802tvnPYJv/DLaxzX8G2/xHso1t/qPY5j+Cbf49bPNvZZv/Crb530AS/xJJ/HtJ4t9DEi+MJP6tJPGCSOKqq6666qqr/osQXHXVVVddddV/oO3tbf69bGOb/yi2sc1/JNv8R7KNbf6j2eY/mm1s8x/NNrb5j2Yb2/xHs41t/jPY5j+DbWzzH8k2/1Fs8x/BNv8etvmvZJur/vNI4j+LJF4QSfxbnTx5EoD77rvvVq666qqrrrrq34/gqquuuuqqq/4D3Hfffbfed999twJsb2/zH8E2tvmPYhvb/EexjW3+I9nGNv+RbGOb/2i2sc1/NNvY5j+abWzzH802tvmPZhvb/GewzX8k2/xHsc3/Zrb5n8Y2V/3bSOIFkcS/lSReEEnc7+zZs8/gqquuuuqqq/79CK666qqrrrrqP8jZs2dvBdja2uI/km3+I9nmP5JtbPMfyTb/0Wxjm/9otvnPYJv/DLb5z2Ab2/xHs81/BtvY5j+KbWzzH8E2/162+fewzX8l2/xr2Ob/A0m8MJL495DEfwZJvCCSeEEkAXDixAkA/uEf/uG3ueqqq6666qp/P4Krrrrqqquu+g9y33333Qqwvb2NbWzzH8U2tvmPYhvb/EeyzX8k29jmP5pt/qPZxjb/0Wxjm/9otrHNfwbb/EezjW3+M9jmP5Jt/iPY5t/LNv8etvm3sM1V/zNI4t9KEi+IJF4QSbwgkrjqqquuuuqq/wYEV1111VVXXfUf5L777rsVYGtri/vZ5j+Sbf4j2eY/km1s8x/JNrb5j2Qb2/xHs41t/qPZxjb/0Wxjm/9otrHNfzTb/GewjW3+o9jmP4Jt/r1sc9VVz48k/ieRxP0WiwUA9913361cddVVV1111b8fwVVXXXXVVVf9B/mHf/iH3wG44YYbeCDb2OY/im1s8x/FNrb5j2Qb2/xHss1/NNvY5j+abWzzH802/xlsY5v/aLb5j2Yb2/xnsM1/FNv8R7DNv5dt/q1s829hm38t2/xr2OY/mm2uAkm8IJJ4QSTxgkjiBZHE/U6cOAHAP/zDP/w2V1111VVXXfUfg+Cqq6666qqr/ovY5j+Sbf4j2cY2/5Fs8x/JNrb5j2Yb2/xHs81/NNvY5j+Dbf6j2cY2/9Fs85/BNv9RbPMfwTb/Xrb5t7LNv4Vt/qewzf81knhhJPE/hSReEEk80GKxAOC+++67lauuuuqqq676j0Fw1VVXXXXVVf9Bzp49eyvA9vY2L4htbPMfxTa2+Y9km/9ItrHNfyTb2OY/mm3+o9nGNv/RbGOb/2i2sc1/NNvY5j+SbWzzH802tvmPYBvb/HvZ5t/LNv/T2eb/C0m8MJL4zyKJF0QSL4gkXhBJ/EdYLBZcddVVV1111X8wgquuuuqqq676D3LffffdCrC9vc2/xDb/kWzzH8k2tvmPZJv/aLb5j2Yb2/xHs41t/qPZxjb/0Wxjm/9otvmPZpv/DLb5j2Kbfy/b/HexzVVXvSCSeEEk8YJI4rktFgsA/uEf/uF3uOqqq6666qr/GARXXXXVVVdd9R/oH/7hH34b4IYbbuBfYhvb/EexjW3+I9nmP5JtbPMfyTa2+Y9mG9v8R7PNfwbb/GewzX8029jmP5JtbPMfzTb/UWzz72Wbfw/b/FvZ5l/LNv+ZbHPV85LEv4UkXhBJ/EeSxPMzn8+56qqrrrrqqv9gBFddddVVV13138w2/5Fs8x/JNrb5j2Qb2/xHso1t/qPZ5j+abWzzH802tvmPZhvb/EezzX802/xHs81/FNv8e9nm38M2/5PZ5qoXThL/VpL4jySJF0QSz48kXpDFYgHAP/zDP/w2V1111VVXXfUfg+Cqq6666qqr/gP9/d///W8DXH/99fxr2MY2/1FsY5v/SLb5j2ab/2i2+Y9mG9v8R7ONbf6j2cY2/9Fs8x/NNrb5j2Qb2/xHso1t/iPY5t/LNv8etvm3sM2/lm2u+t9NEv9akvjXksRisQDgvvvuu5Wrrrrqqquu+o9BcNVVV1111VX/Cba3t/m3sM1/JNv8R7KNbf4j2cY2/5FsY5v/aLaxzX802/xnsM1/NNvY5j+abf6j2eY/mm3+I9jm38s2V73obPP/nSReEEn8a0niX0sSz48kFosFV1111VVXXfWfgOCqq6666qqr/gP9wz/8w+8AbG9v829lG9v8R7GNbf4j2cY2/5Fs8x/NNrb5j2ab/2i2sc1/NNvY5j+abWzzH8k2tvmPZJv/aLb5j2Cbfy/b/FvZ5t/CNv9atvnXsM2Lyjb/10ji30oS/5Ek8a8liedHEi/MiRMnAPiHf/iH3+aqq6666qqr/uMQXHXVVVddddV/oLNnz94KsL29zb+Xbf4j2cY2/5Fs8x/JNrb5j2ab/2i2sc1/NNvY5j+abf4z2OY/mm3+I9nGNv+RbPMfwTb/nWxz1VWS+NeSxH8USTzQfffddytXXXXVVVdd9R+H4Kqrrrrqqqv+B7ONbf4j2eY/km1s8x/JNrb5j2Qb2/xHs41t/qPZ5j+abWzzH802tvmPZBvb/EeyzX8k2/xHsM2/h23+q9nmX8s2V10hiX8rSfxbSOJfSxL/WpJ4fiTx/EjifvP5HID77rvvVq666qqrrrrqPw7BVVddddVVV/0Huu+++2697777bt3e3mZ7e5v/KLb5j2Qb2/xHss1/NNv8R7ONbf6j2eY/mm1s8x/NNrb5j2ab/2i2+Y9km/9ItvmPYJt/D9v8W9nm38I2/5ls87+VJP47SOK/giSeH0n8eywWCwDOnj37DK666qqrrrrqPw7BVVddddVVV/0HO3v27K0AW1tb/EeyjW3+I9nmP5JtbPMfyTa2+Y9mm/9otrHNfzTb2OY/mm3+o9nGNv+RbGOb/yi2+Y9km/8Itvn3sM2/lW2uusI2/59I4j+bJJ4fSTzQiRMnAPiHf/iH3+aqq6666qqr/uMQXHXVVVddddV/sPvuu+9WgO3tbWxjm/9ItvmPZBvb/EeyzX8029jmP5JtbPMfzTb/GWzzH802tvmPZpv/aLb5j2Ib2/xHsc1/BNv8e9jmv5Jt/jVs85/BNle9YJL415LE8yOJ50cSz48knh9JXHXVVVddddV/EYKrrrrqqquu+g9233333Qqwvb3N/WzzH8k2tvmPZJv/SLaxzX802/xHs41t/iPZxjb/0Wxjm/9otvmPZhvb/EeyzX8k2/xHsc1/BNv8d7DN/3W2+Z9OEi+IJP4vWywWANx33323ctVVV1111VX/cQiuuuqqq6666j/YP/zDP/wOwA033MAD2cY2/5Fs8x/JNrb5j2Qb2/xHso1t/qPZ5j+abWzzH802/9FsY5v/aLb5j2Qb2/xHsc1/FNvY5r+Tbf4ns82LyjZXvWgk8a8liedHEs+PJJ4fSTw/knh+JPHcTpw4AcDZs2efwVVXXXXVVVf9xyK46qqrrrrqqv9itvmPZBvb/EeyzX802/xHs81/NNvY5j+abf6j2cY2/9Fs8x/NNrb5j2Sb/yi2+Y9km38P2/x72Obfwjb/Wra56qoXlSSen8ViAcDf//3f/zZXXXXVVVdd9R+L4Kqrrrrqqqv+g509e/ZWgO3tbV4Q29jmP5Jt/iPZxjb/kWxjm/9ItrHNfzTb/EezjW3+o9nmP5ptbPMfzTb/kWzzH8U2/5Fs8+9hm/8Otrnq/w5JPD+S+I8giedHElddddVVV131PwTBVVddddVVV/0Hu++++24F2N7e5l9im/9ItrHNfyTb/EezzX802/xHs41t/qPZ5j+abWzzH802/9Fs8x/JNv9RbGOb/yi2+fewzb+Vbf6r2OZfwzYvKtu8KGxz1b+fJJ4fSfx7SeL5kcSJEycA+Id/+Iff5qqrrrrqqqv+YxFcddVVV1111X+Cf/iHf/htgBtuuIF/iW1s8x/JNv+RbGOb/0i2sc1/JNvY5j+abf6j2cY2/9FsY5v/SLaxzX8k29jmP4ptbPMfxTb/U9jm38o2/xa2ueo/hyT+LSTxgkjiv4Mknh9JvKgkcdVVV1111VX/yQiuuuqqq6666n8I2/xHso1t/iPZ5j+abf6j2cY2/5FsY5v/aLaxzX802/xHs81/NNv8R7LNfxTb/Eewzb+Xbf6ns81V/z6S+I8kiedHEs+PJJ4fSfx7SeKFOXHiBAD/8A//8NtcddVVV1111X8sgquuuuqqq676T/D3f//3vw1www038K9hG9v8R7LNfyTb2OY/km1s8x/NNv/RbGOb/2i2+Y9mG9v8R7KNbf4j2eY/km3+o9jmP4Jt/rvY5t/CNv+ZbHPV/16SeH4k8aKSxP0WiwUA9913361cddVVV1111X8sgquuuuqqq676H8g2/5FsY5v/SLb5j2Yb2/xHso1t/qPZ5j+abWzzH802/9Fs8x/JNrb5j2Kb/yi2+Y9gm38P2/xb2ea/gm2u+r9FEv9eknhukrjffD7nqquuuuqqq/4TEVx11VVXXXXVf4J/+Id/+B2AG264gX8r29jmP5Jt/iPZxjb/0WzzH802/9FsY5v/aLb5j2Yb2/xHso1t/iPZ5j+KbWzzH8E2/xFs8+9hm/9KtvmfwDb/UWzzf4kk/jUk8fxI4t9LEs9NEv+SxWIBwD/8wz/8NlddddVVV131H4/gqquuuuqqq/4TnD179laA7e1t/r1s8x/JNrb5j2Qb2/xHso1t/iPZxjb/0WzzH802tvmPZpv/aLb5j2Sb/0i2+Y9gm/8Itvn3sM2/hW3+p7HNfyTb/F8kiX8tSfxnkcS/hyQeaD6fA3DffffdylVXXXXVVVf9xyO46qqrrrrqqv8FbGOb/0i2+Y9mm/9otvmPZpv/aLaxzX802/xHs41t/iPZ5j+SbWzzH8U2/xFs8x/BNv8dbPOvZZt/Ddtc9X+DJF5UknhuknhRLBYLAO67775bueqqq6666qr/eARXXXXVVVdd9Z/gvvvuu/W+++67dXt7m+3tbf6j2OY/km1s8x/JNrb5j2Qb2/xHso1t/qPZ5j+abWzzH802/5FsY5v/SLb5j2Kb/wi2+Y9gm38r21z1f4sk/rtI4kUliX8PSTy3xWIBwNmzZ5/BVVddddVVV/3HI7jqqquuuuqq/yRnz569FWBra4v/SLb5j2ab/2i2+Y9mm/9otrHNfyTb2OY/mm3+o9nmP5pt/iPZ5j+Kbf4j2Oa/m23+LWzzr2Wbfw3b/EezzVXPSRLPjySeH0m8qCTxopLEc5PEi+rEiRMA3Hfffbdy1VVXXXXVVf/xCK666qqrrrrqP8l99913K8D29ja2+Y9kG9v8R7KNbf4j2cY2/5FsY5v/aLb5j2ab/2i2sc1/JNvY5j+Sbf4j2eY/im3+I9jm38s2/9/Z5v8SSbwgkvjfTBL/HpJ4bpK439mzZ2/lqquuuuqqq/7jEVx11VVXXXXVf5L77rvvVoDt7W0AbGOb/0i2+Y9mm/9otvmPZpv/aLaxzX8k29jmP5pt/qPZ5j+SbWzzH8U2/1Fs8x/BNv9etvm3ss2/hW3+tWxz1X89SfxnksS/hySemyT+NebzOQD33XffrVx11VVXXXXVfzyCq6666qqrrvpPcvbs2WcA3HjjjTyQbf4j2cY2/5FsY5v/SLaxzX8k29jmP5pt/qPZ5j+abWzzH8k2tvmPZJv/KLaxzX8E2/xHsM2/l23+rWzzP5Ft/jvY5qrnJYkXlST+o0niuUnixIkTANx33323ctVVV1111VX/OQiuuuqqq6666j/JfffddysvgG1s8x/JNv/RbPMfzTb/0WzzH802tvmPZBvb/EezzX802/xHss1/JNv8R7DNfwTb/HvZ5r+Sbf6nsM1V/zEk8Z9BEs9NEs9NEi8KSQDM53MA/uEf/uG3ueqqq6666qr/HARXXXXVVVdd9Z/k7NmztwJsb2/zgtjmP5JtbPMfyTa2+Y9kG9v8R7KNbf6j2eY/mm3+o9nGNv+RbPMfyTa2+Y9im/8Itvnfzjb/FWzz38k2V10hiX8vSfxXkMRVV1111VVX/TciuOqqq6666qr/JPfdd9+tANvb27wwtrHNfyTb/EezzX802/xHs81/NNvY5j+SbWzzH802/5FsY5v/SLb5j2Kb/wi2+feyzb+Xbf6tbPOvZZv/TLa56n8XSfxnk8T9Tpw4AcA//MM//A5XXXXVVVdd9Z+D4Kqrrrrqqqv+E/3DP/zDbwPccMMN/Ets8x/JNrb5j2Qb2/xHso1t/iPZxjb/0WzzH802/9Fs8x/NNv+RbPMfxTb/EWzz72Wbfy/b/E9mm//tbPM/iST+M0ni30MSz00Sz00Sz00SV1111VVXXfXfjOCqq6666qqr/gexjW3+I9nmP5pt/qPZ5j+abf6j2cY2/5FsY5v/SLaxzX8k2/xHss1/FNv8R7DNv5dt/r1s829hm38t2/xPYJurnpMk/jUk8aKSxH8HSTzQiRMnAPiHf/iH3+aqq6666qqr/nMQXHXVVVddddV/or//+7//bYAbbriBfw3b/EeyjW3+I9nGNv+RbGOb/0i2sc1/NNv8R7PNfzTb/EeyjW3+o9jmP4pt/iPY5t/LNlddYZv/bWzz/5Eknpsknpsknpsknpsk/iXz+RyA++6771auuuqqq6666j8HwVVXXXXVVVf9D2Wb/2i2+Y9mm/9otvmPZpv/aLb5j2Yb2/xHss1/NNv8R7GNbf4j2OY/gm3+vWzz72Gbfwvb/GvZ5l/DNv9dbPP/nSReVJL4n0ISV1111VVXXfXfgOCqq6666qqr/hP9wz/8w+8A3Hjjjfxb2MY2/5FsY5v/SLb5j2Yb2/xHso1t/iPZxjb/0WzzH8k2tvmPZJv/SLb5j2Ab2/x72ebfyzb/Hrb5t7DN/2e2ueq/jiSemyT+JSdOnADgH/7hH36bq6666qqrrvrPQ3DVVVddddVV/4nOnj17K8D29jb/Hrb5j2ab/0i2sc1/NNv8R7PNfzTb/EezzX802/xHss1/JNv8R7HNv5dt/r+wzb+Gbf6j2eb/Kkn8TyGJ5yaJ5yaJ5yaJfwtJPLfFYgHAfffddytXXXXVVVdd9Z+H4Kqrrrrqqqv+l7CNbf4j2eY/mm3+o9nmP5ptbPMfyTa2+Y9kG9v8R7KNbf6j2MY2/1Fs8x/FNv9etvn3sM2/h23+LWzzP4VtrvrPJYn/KSTxopjP5wDcd999t3LVVVddddVV/3kIrrrqqquuuuo/0X333Xfrfffdd+v29jbb29v8R7DNfyTb2OY/km1s8x/JNrb5j2ab/2i2+Y9mm/9otvmPZJv/KLb5j2Kbfy/b/HvY5t/DNv8VbHPV/wyS+PeSxH82SfxLJPHcJDGfzwE4e/bsM7jqqquuuuqq/zwEV1111VVXXfWf7OzZs7cCbG9v8x/FNrb5j2Sb/2i2+Y9mm/9otrHNfyTb2OY/km1s8x/JNv+RbPMfxTb/UWzz72Wbfw/b/FezzX8m21z17yOJfw1J/HtI4rlJ4rlJ4rlJ4l8iiRfViRMnALjvvvtu5aqrrrrqqqv+8xBcddVVV1111X+R7e1t/qPZ5j+SbWzzH8k2tvmPZBvb/EezzX802/xHs81/JNv8R7LNfxTb/Eexzb+Xbf672Oa/gm3+M9jmP4ptrvrvJ4l/C0k80NmzZ2/lqquuuuqqq/7zEFx11VVXXXXVf7K///u//22A7e1tbGOb/0i2+Y9mm/9otvmPZpv/aLb5j2ab/2i2+Y9kG9v8R7GNbf4j2Ob/Ctv8V7PN/ya2uep/Hkn8W0jiBZnP5wDcd999t3LVVVddddVV/3kIrrrqqquuuuo/2dmzZ58BsL29zf1s8x/JNrb5j2Qb2/xHso1t/iPZxjb/kWxjm/9ItrHNfyTb2OY/km3+I9nmP4JtbPPvZZt/L9v8e9jm38o2/9PY5qr/XpL4jySJfwtJ/EskATCfzwG47777buWqq6666qqr/nMRXHXVVVddddV/svvuu+9WgO3tbR7INrb5j2Sb/2i2+Y9mm/9otvmPZpv/aLb5j2ab/0i2+Y9km/8otvn3ss2/l23+u9jmX8s2/xq2uepfTxL/U0jiuUniuUni30IS/xJJvCAnTpwA4B/+4R9+m6uuuuqqq676z0Vw1VVXXXXVVf/Jzp49eyvAzs4Oz49t/iPZxjb/kWxjm/9ItrHNfyTb2OY/km1s8x/JNrb5j2Sb/0i2+Y9km/8otvn3ss2/l23+rWzz/5Ft/qvY5qr/GJL4jyCJq6666qqrrvpvQHDVVVddddVV/8nuu+++WwG2t7d5QWzzH802/9Fs8x/NNv/RbPMfzTb/0WzzH8k2tvmPYhvb/EexzX8U2/x72ebfyzb/Vrb5t7LNv5Zt/jVs86KyzVX/cSTx/EjifypJPJAkXpjjx48D8A//8A+/w1VXXXXVVVf95yK46qqrrrrqqv8C9913360AN9xwAy+IbWzzH8k2tvmPZJv/aLb5j2ab/2i2+Y9mm/9otvmPZJv/KLb5j2Kbfy/bXPU/j22u+u8hiX+JJP61JHHVVVddddVV/00Irrrqqquuuuq/wH333XcrLyLb/EezzX8k29jmP5JtbPMfyTa2+Y9kG9v8R7KNbf4j2eY/km3+o9jmP4pt/r1s8+9hm38r2/xb2eZfyzb/V9jm38M2/xdI4rlJ4rlJ4rlJ4j+CJP61Tpw4AcA//MM//DZXXXXVVVdd9Z+L4Kqrrrrqqqv+C5w9e/ZWgBtvvJEXhW1s8x/JNv/RbPMfzTb/0WzzH802/9Fs8x/JNv+RbPMfxTb/UWzz72Wbfw/b/FvZ5n8q27yobPOisM3/N5J4fiTxP50k/rUk8S+Zz+cA3Hfffbdy1VVXXXXVVf+5CK666qqrrrrqv8B99913K/8GtvmPZBvb/EeyjW3+I9nGNv+RbGOb/0i2sc1/JNv8R7KNbf6j2OY/im3+o9jm38s2/x62+a9mm38t21x11fMjiX+JJP61JPFAkrjqqquuuuqq/0IEV1111VVXXfVf4B/+4R9+G+CGG27gX8s2/9Fs8x/NNv/RbPMfzTb/0WzzH8k2tvmPZJv/KLaxzX8E2/xHsc3/Vrb5n8o2V131gkjiX+v48eMA/MM//MPvcNVVV1111VX/+Qiuuuqqq6666r/Qzs4O/xa2sc1/JNvY5j+Sbf6j2eY/mm3+o9nmP5pt/iPZ5j+Sbf4j2MY2/xPY5t/DNv9Wtvm3sM3/FLb5j2Kbq55NEv+RJPEvkcS/liQeSBIPJIn5fA7AfffddytXXXXVVVdd9Z+P4Kqrrrrqqqv+C9x333238h/ANv/RbPMfyTa2+Y9kG9v8R7KNbf4j2cY2/5Fs8x/JNv+RbPMfxTb/Xrb597LNv4dt/qezzX8n21z17yeJ5yaJ5yaJ/wiS+I8wn88BuO+++57OVVddddVVV/3nI7jqqquuuuqq/wJnz559BsD29jbb29v8e9jGNv+RbPMfzTb/0WzzH802/9Fs8x/JNv+RbPMfyTb/UWzz72Wbfy/b/Hewzb+Fbf4z2eaq/xqS+O8giX8tSfxbLBYLAM6ePfsMrrrqqquuuuo/H8FVV1111VVX/Rf5h3/4h98G2N7e5j+Cbf4j2cY2/5FsY5v/SLaxzX8k2/xHs81/JNvY5j+KbWzzH8U2/1Fs8+9lm38v2/xb2eZ/Otv8b2ebq/5zSOJfSxIPJIkHkgTAfD4H4OzZs7dy1VVXXXXVVf/5CK666qqrrrrqfzHb/EezzX802/xHs81/JNvY5j+Sbf6j2eY/km3+o9jmP4pt/r1s89/JNv8Wtvm3sM3/BLb5n8I2Vz0vSfx3ms/nANx33323ctVVV1111VX/+Qiuuuqqq6666r/I3//93/82wA033MB/JNvY5j+SbWzzH8k2/9Fs8x/NNv+RbGOb/0i2+Y9km/8otvmPYpt/L9v8e9jmv4Nt/qexzVX/+0jiP4IkHkgSDySJF0YS95vP5wDcd999t3LVVVddddVV//kIrrrqqquuuuq/yNmzZ58BsLOzg23+o9nmP5pt/iPZxjb/kWxjm/9ItvmPZpv/SLb5j2Sb/yi2+Z/ENv8etvm3ss1/Jdv8a9jmv4tt/iW2ueo/nyT+o0ni+ZnP5wDcd999t3LVVVddddVV/zUIrrrqqquuuuq/yH333XcrwPb2NgC2sc1/JNv8R7PNfzTb/EezzX8k29jmP5Jt/iPZxjb/UWzzH8U2/xFs8x/BNv8etvm3ss2/hW2u+r9LEi8qSbwoJPEfQRL/WY4fPw7AP/zDP/w2V1111VVXXfVfg+Cqq6666qqr/oucPXv2VoCdnR0eyDb/kWxjm/9ItrHNfyTb2OY/km3+o9nmP5JtbPMfyTb/UWzzH8U2/xFsc9WLzjb/GrZ5UdnmRWGbq/5zSeLfQhL/WpJ4IEm8MJJ4IElcddVVV1111X8jgquuuuqqq676L7a9vc1zs81/NNv8R7PNfzTb/EeyjW3+I9nmP5pt/iPZ5j+KbWzzH8E2/xFs8+9lm38P2/xb2ebfwjZXXfU/nSReVCdOnADgH/7hH36Hq6666qqrrvqvQXDVVVddddVV/0Xuu+++W++7775bAba3t3lutrHNfyTb2OY/km3+o9nmP5pt/iPZxjb/kWzzH8k2/5Fs8x/BNv8RbPPvZZt/D9v8W9nmv4ptrrrqRSGJq6666qqrrvo/juCqq6666qqr/gudPXv2VoCdnR1eENv8R7PNfyTb2OY/km1s8x/JNv/RbPMfyTb/kWzzH8k2/xFs8x/BNv9etvn3sM1/Jdv8Z7PNfwfbXPVskviPJIl/LUn8R5LEAx0/fhyAf/iHf/htrrrqqquuuuq/BsFVV1111VVX/Re67777bgXY3t7mhbGNbf4j2eY/mm3+o9nmP5JtbPMfyTb/kWxjm/8otvmPZJv/CLb5j2Cbfy/b/Hewzf92tnlR2Oa/gm3+J5PE/2aSeCBJPJAkHkgSL8x8Pueqq6666qqr/osRXHXVVVddddV/ofvuu+9WgO3tbV4UtvmPZBvb/EeyzX802/xHs81/JNvY5j+Sbf6j2MY2/1Fs8x/BNv8RbPPfyTb/lWzzr2Wb/wtsc9W/TBL/Ekn8d5LE/e67775bueqqq6666qr/GgRXXXXVVVdd9V/oH/7hH34H4MYbb+RFZZv/aLb5j2Qb2/xHso1t/iPZ5j+abf4j2eY/km3+o9jmP4Jt/iPY5t/DNv8etvm3sM3/RLa56n8HSfxvIIkHOn78OAD/8A//8NtcddVVV1111X8dgquuuuqqq676X8A2tvmPZJv/aLb5j2ab/0i2sc1/JNv8R7LNfyTb/EexzX8E2/xHsM2/h23+t7DNv5Zt/jPY5v8rSfxXksR/Fkn8e0jigSTxwszncwDuu+++W7nqqquuuuqq/zoEV1111VVXXfVf6OzZs7cC7Ozs8G9hm/9ItrHNfyTb/EezzX802/xHss1/JNv8R7LNfxTb/Eewzf8Etvm3ss2/hW3+P7DNv8Q2/xdI4n8SSfxrSeKBJPFAkvi3ksR8Pgfgvvvuu5Wrrrrqqquu+q9DcNVVV1111VX/he67775bAba3t/m3ss1/NNv8R7KNbf4j2cY2/5Fs8x/JNrb5j2Ib2/xHsc1/FNv8R7DNv5dt/jvZ5t/CNv9atvnXss2Lyjb/19jmBbHNVf85JPHc5vM5AGfPnn0GV1111VVXXfVfh+Cqq6666qqr/ov9wz/8w28D3Hjjjfxb2cY2/5Fs8x/NNv/RbPMfyTb/0WzzH8k2/1Fs8x/FNv8RbPPvZZt/D9tcddX/ZZL4zySJf8l8Pgfgvvvuu5Wrrrrqqquu+q9DcNVVV1111VX/i9nmP5JtbPMfyTb/0WzzH8k2tvmPZJv/SLb5j2Kb/yi2+Y9gm38v2/x72Obfyjb/Frb517LN/wS2uep/Bkn8V5PEi0oSAPP5HICzZ8/eylVXXXXVVVf91yG46qqrrrrqqv9if//3f//bADfccAP/EWzzH802/5FsY5v/SLb5j2ab/0i2+Y9km/8otvmPYpv/CLb597LNv4dt/i+yzYvKNv/T2Ob/Ekn8d5PEA0nigSTxQJL495rP5wDcd999t3LVVVddddVV/3UIrrrqqquuuuq/yc7ODv9RbGOb/0i2+Y9mm/9ItrHNfyTb/EeyzX8k2/xHsc1/FNv8R7DN/1a2+bewzf9ltrnq/xdJPLf5fA7AfffddytXXXXVVVdd9V+L4Kqrrrrqqqv+i/3DP/zD7wBsb2/zH802/5FsY5v/SLb5j2ab/0i2+Y9kG9v8R7HNfxTb/Eexzf8Etvn3sM2/lW3+K9jm/xLb/HvY5n87SbwoJPEvkcR/JUn8S44fPw7AP/zDP/w2V1111VVXXfVfi+Cqq6666qqr/oudPXv2VoCdnR1sY5v/SLb5j2ab/0i2sc1/JNv8R7KNbf4j2eY/im3+o9jmP4pt/r1s8+9lm38P2/xXss1/Ntu8qGzzorDNVf//SOJFJYmrrrrqqquu+m9GcNVVV1111VX/A9jmP5JtbPMfyTb/0WzzH8k2/9Fs8x/JNv9RbPMfxTb/UWzz72Wbfy/b/HewzX8F21x11YtCEv8eknhRSeL5OX78OAD33XffrVx11VVXXXXVfy2Cq6666qqrrvovdt99991633333bq9vc329jb3s81/NNv8R7KNbf4j2eY/km1s8x/JNv+RbPMfxTa2+Y9gm/8otvn3ss1/J9v8V7LNVVc9kCT+M0jigSTxQJL4z3L27NlncNVVV1111VX/tQiuuuqqq6666r/B2bNnbwXY2dnhgWxjm/9ItvmPZpv/SLb5j2ab/0i2+Y9km/9ItvmPYJv/KLb597LNv4dt/jvY5r+Cbf41bPPfwTZX/d8kiRdEEvc7fvw4AP/wD//w21x11VVXXXXVfy2Cq6666qqrrvpvcN99990KsL29zfNjm/9ItrHNfyTb/EeyjW3+I9nmP5Jt/iPZ5j+Sbf4j2OZ/Etv8e9jm38o2/5Vs8z+FbV4Utrnqv48k/itJ4t9iPp9z1VVXXXXVVf9NCK666qqrrrrqv8F99913K8DOzg4viG3+o9nmP5Jt/qPZ5j+Sbf4j2cY2/1Fs8x/JNv8RbPMfwTb/E9jm38o2/xa2uepFZ5sXxjZX/c8miX/JfffddytXXXXVVVdd9V+L4Kqrrrrqqqv+G/zDP/zD7wDceOONvDC2+Y9mm/9ItrHNfyTb/EeyjW3+I9nmP4ptbPMfxTb/EWzzH8E2/162+f/CNv8atvnXsM1VV72oJPHvdfz4cQD+4R/+4be56qqrrrrqqv96BFddddVVV131P5xtbPMfyTb/0WzzH8k2tvmPZJv/SLb5j2Sb/yi2+Y9gm/8Itvn3ss2/h23+rWzzb2Gbq676rySJfw9JvKgk8YJI4n7z+RyA++6771auuuqqq6666r8ewVVXXXXVVVf9Nzh79uytANvb27yobPMfyTa2+Y9km/9otvmPZJv/SLb5j2Sb/yi2+Y9gm/8Itvn3ss2/h23+rWzz/41trvqfQxL/WpJ4IEk8kCT+s83nc6666qqrrrrqvxHBVVddddVVV/03uO+++24F2NnZ4V/DNv/RbPMfyTa2+Y9km/9ItvmPZJv/SLb5j2Kb/wi2+Y9gm/9vbPOvZZt/Ddv8a9jmP5Jt/iW2+f9GEv+XSOIFkcQLMp/PAfiHf/iH3+Gqq6666qqr/usRXHXVVVddddV/k7//+7//bYAbb7yRfw3b2OY/km3+o9nmP5Jt/iPZ5j+Sbf4j2eY/im3+I9jmP4Jt/j1s8+9hm38r21z1P5NtrvqfaT6fc9VVV1111VX/jQiuuuqqq6666n8p2/xHso1t/iPZ5j+Sbf4j2cY2/1Fs8x/JNv9RbPMfwTb/E9jm38M2/5Vs869lm38N21z1/Nnmqn89SfxbSOKB5vM5AP/wD//w21x11VVXXXXVfz2Cq6666qqrrvpv8g//8A+/DXDjjTfyb2Wb/2i2+Y9km/9ItrHNfyTb/EexjW3+o9jmP4pt/iPY5t/LNv9etvnvYJv/C2zzorDNVf+5JPFvIYn/LpJ4UUhiPp8DcN99993KVVddddVVV/3XI7jqqquuuuqq/+Vs8x/NNv+RbGOb/0i2+Y9km/9ItvmPYpv/KLb5j2Cbfy/b/HeyzX8l21z1wtnm/zpJvCgk8V9NEv/R5vM5AGfPnn0GV1111VVXXfXfg+Cqq6666qqr/pv8wz/8w28D3Hjjjfx72cY2/5Fs8x/NNv+RbPMfyTb/kWzzH8U2/1Fs8x/BNv9etvn3sM1/B9v8V7DNv4Zt/rvY5qr/XSTxopLECyKJF+T48eMA/P3f//1vc9VVV1111VX/PQiuuuqqq6666r/JfffddyvA9vY2/1Fs8x/JNrb5j2Sb/0i2+Y9km/9ItvmPYpv/KLb5j2Cbfy/b/HvY5t/KNv+VbPP/mW3+PWxz1QsmiQeSxANJ4j+bJK666qqrrrrqfxiCq6666qqrrvo/xjb/0WzzH8k2/5Fs8x/JNv+RbPMfxTb/UWxzFdjm38I2/xVs85/FNi8K21x11b+WJI4dOwbAfffd93Suuuqqq6666r8HwVVXXXXVVVf9Nzl79uwz7rvvvlt3dnbY3t7mP5JtbPMfyTb/kWzzH8k2tvmPYhvb/EexzX8U2/xHsc2/l23+vWzz72Gb/y1s85/JNldd9e8liRdEEv9aZ8+efQZXXXXVVVdd9d+D4Kqrrrrqqqv+G509e/ZWgO3tbf4z2OY/km3+I9nGNv+RbPMfyTb/UWzzH8U2/5PY5t/LNv8etvm3ss2/hW2uuuqqF+z48eMA/MM//MNvc9VVV1111VX/PQiuuuqqq6666r/RfffddyvAzs4OtvnPYJv/SLaxzX8k2/xHss1/JNv8R7HNfxTb/EewzX8E2/x72eb/A9v8a9jmfwPbXPWfQxL/mSTxbyGJq6666qqrrvofjuCqq6666qqr/hvdd999twJsb28DYBvb/EezzX802/xHss1/JNv8R7LNfxTb/EexzX8E2/xHsM1/J9v8W9nm38I2/5vZ5kVhm6v+f5LEi0ISz20+nwNw33333cpVV1111VVX/fcguOqqq6666qr/RmfPnn0GwE033cQD2eY/mm1s8x/JNv+RbPMfyTb/kWzzH8U2/1Fs8x/BNv8RbPPvYZt/D9v8W9nmfyrbvKhs8z+VbV4Y21z1n08S/5kkcfz4cQD+4R/+4be56qqrrrrqqv8+BFddddVVV1313+i+++67lRfANv8ZbPMfyTb/kWzzH8k2/5Fs8x/FNv9RbPMfwTb/E9jmfxPb/GvZ5qr/uWxz1fOSxItqPp8DcN99993KVVddddVVV/33Ibjqqquuuuqq/0Znz569FWB7e5vnxzb/GWzzH8k2/5FsY5v/KLaxzX8U2/xHsc1/FNv8R7DNv5dt/jvZ5t/KNldd9T+dJP41JPGiksR/hNlsxlVXXXXVVVf9D0Bw1VVXXXXVVf+N7rvvvlsBdnZ2eEFsY5v/aLb5j2Qb2/xHss1/JNv8R7HNfxTb/EexzX8E2/x72ebfwzb/Hrb5r2Sbfy3b/GvY5kVlmxeVbf6/ss3/BZJ4IEn8Z5PECzOfzwH4h3/4h9/hqquuuuqqq/77EFx11VVXXXXVf7N/+Id/+G2AG2+8kRfGNv/RbGOb/0i2+Y9km/9ItvmPYpv/KLb5j2Kb/wi2+feyzb+Hbf472Oaq52Wbf4lt/rvY5qr/HpJ4bvP5nKuuuuqqq676H4Dgqquuuuqqq/4Xsc1/Btv8R7LNfyTb/EeyzX8U2/xHsc1/FNv8X2Gbfyvb/FeyzVX/uWzzf50k/itJ4gWRxL+WJADm8zkA//AP//DbXHXVVVddddV/H4Krrrrqqquu+m/293//978NcOONN/KisM1/Btv8R7LNfyTb/EeyzX8U2/xHsc1/FNv8e9nm38s2/xvZ5r+Cbf41bPOiss1VV/13mc/nANx33323ctVVV1111VX/fQiuuuqqq6666n8h29jmP5pt/iPZ5j+Sbf4j2eY/im3+o9jmfxLb/HvZ5t/DNv9WtvmvZJv/jWxz1VUvjCReVPP5nKuuuuqqq676H4Lgqquuuuqqq/6b/cM//MPvANx00038a9nmP5pt/iPZxjb/UWzzH8k2/1Fs8x/FNv8RbPMfwTb/Xrb597DNv5Vt/i1s81/BNv+f2OaqKyTxX00S/9mOHz8OwD/8wz/8NlddddVVV13134vgqquuuuqqq/6bnT179laA7e1t/i1s8x/NNrb5j2Sb/yi2sc1/FNv8R7HNfxTb/EewzX8E21x1lW3+s9nmqv8eknhRSOJFcd99993KVVddddVVV/33Irjqqquuuuqq/wNs85/BNv+RbPMfyTb/UWzzH8U2/1Fs8x/BNv8T2Obfwzb/Vrb5t7DNv5Zt/jPZ5kVlm/9qtrnq/w9JPLfZbAbAfffddytXXXXVVVdd9d+L4Kqrrrrqqqv+m91333233nfffbfu7Oyws7PDv5Vt/jPY5j+Sbf4j2eY/im3+o9jmP4pt/iPY5t/LNv9etrnqednmqqueH0n8e0jiv4okAObzOQBnz559BlddddVVV13134vgqquuuuqqq/4HOHv27K0A29vb/HvYxjb/0WzzH8k2/5Fs8x/FNv9RbPMfxTb/EWzz72Wb/062+beyzb+Fbf61bPO/jW3+r7LNVf86kvi3On78OAD/8A//8NtcddVVV1111X8vgquuuuqqq676H2RnZ4f/CLb5j2ab/0i2+Y9km/8otvmPYpv/KLb5j2Cbfy/b/HvY5t/DNv/f2eaqq54fSVx11VVXXXXVVc9CcNVVV1111VX/A/z93//9bwNsb2/zH8U2/9Fs8x/JNv+RbPMfxTb/UWzzH8U2/1fY5r+Dbf4tbPOvZZt/Ddv8Z7DNVf93SOKBJPFvJYn/DPP5HID77rvvVq666qqrrrrqvxfBVVddddVVV/0PcPbs2WcA7Ozs8B/JNv/RbGOb/yi2sc1/FNv8R7HNfxTb/Eexzb+Xbf69bPPfyTZX/fewzVX/epL430oSL6rjx48DcN99993KVVddddVVV/33I7jqqquuuuqq/wHuu+++WwF2dnawzX8k2/xnsM1/JNv8R7HNfxTb/Eexzf8ktvn3ss2/h23+O9jm/wLbXPXfTxL/n0jihZnNZgD8wz/8w29z1VVXXXXVVf/9CK666qqrrrrqf4CzZ8/eCrC9vQ2Abf4j2cY2/9Fs8x/JNv9RbPMfxTb/UWzzH8E2/xFs8+9lm38P2/xb2ea/km3+tWzzr2Gb/062+a9gm6v+95PE/SRx1VVXXXXVVf8DEVx11VVXXXXV/wD33XffrQA7Ozvczza2+Y9km/9otvmPZJv/KLb5j2Kb/yi2+Y9gm/8ItvnfzDb/Fra56j+Pba76n0cSL4gk/iMcP34cgH/4h3/4Ha666qqrrrrqvx/BVVddddVVV/0Pcd99990KcOONN/JAtvmPZJv/aLb5j2Sb/yi2+Y9im/8otvmPYJv/CWzz72Gb/y1s87+Rbf6vsM3/dJK46qqrrrrqqqv+RyC46qqrrrrqqv8hzp49eysvgG3+I9nmP5pt/iPZ5j+Kbf6j2OY/im3+I9jm38s2/162+fewzb+Vbf4tbPNfwTb/GrZ5Udnmqqv+Jzl+/DgA//AP//DbXHXVVVddddV/P4Krrrrqqquu+h/ivvvuuxXgpptu4vmxzX8k2/xHs81/JNv8R7HNfxTb/EexzX8E2/x72eaqF41trvrPZZur/vtI4t9qPp8DcN99993KVVddddVVV/33I7jqqquuuuqq/yHuu+++W/kX2OY/km3+o9nGNv9RbPMfxTb/UWzzH8U2/xFs8+9lm38P2/x72Obfyjb/Fra56jnZ5l9im6v+55PEVVddddVVV/0/R3DVVVddddVV/0P8wz/8w+8A3HjjjbwwtvmPZBvb/EezzX8U2/xHsc1/FNv8R7HN/xW2uep52ea/m22uuup+knhRSOJFdfz4cQD+4R/+4be56qqrrrrqqv8ZCK666qqrrrrqf5idnR3+JbaxzX8k2/xHs81/FNv8R7HNfxTb/E9im38v2/x3ss2/lW3+LWzzr2Wb/0y2eVHZ5qorbPO/mST+J5PECzOfzwG47777buWqq6666qqr/mcguOqqq6666qr/Ic6ePXsr/0q2+Y9km/9otvmPYpv/KLb5j2Kb/wi2+Y9gm38v2/x72ObfwzZXXXXV/2ySuJ8kAGazGQD33XffrVx11VVXXXXV/wwEV1111VVXXfU/xH333XcrwM7ODjs7O7yobPMfyTb/0WzzH8U2/1Fs8x/FNv8RbPMfwTb/Xrb597DNfwfb/FvY5l/LNv8atvn/xDZX/deSxH+n+XwOwNmzZ5/BVVddddVVV/3PQHDVVVddddVV/4P8/d///W8DbG9v869hm/9ItvmPZpv/KLb5j2Kb/yi2+Y9gm/8ItvnfzDb/39nm/zLbXPV/y/HjxwG47777buWqq6666qqr/mcguOqqq6666qr/I2zzH8k2/9Fs8x/FNv9RbPMfxTb/EWzzP4Ft/j1s89/BNlc9f7Z5Udjmqv8/JPEf6ezZs7dy1VVXXXXVVf8zEFx11VVXXXXV/yD/8A//8NsAN910E/8WtvmPZJv/aLb5j2Kb/yi2+Y9im/8Itvn3ss2/l23+PWzzb2Wb/0q2+deyzb+Gbf4z2Oa/mm2u+s8liRdGEv+TzOdzAO67775bueqqq6666qr/GQiuuuqqq6666n+Qs2fP3gqws7PDv5VtbPMfxTb/0WzzH8U2/1Fs8x/FNv8RbPPvZZv/j2xz1VX/10ji30oS/5mOHz8OwNmzZ5/BVVddddVVV/3PQXDVVVddddVV/4Pcd999twJsb2/z72Wb/yi2sc1/JNv8R7HNfxTb/Eexzf8Utvn3sM2/h23+rWzzX8k2/5PY5qr/myTxP5Ek/i3m8zkAf//3f//bXHXVVVddddX/HARXXXXVVVdd9T/IfffddyvAzs4O/xFs8x/JNv+RbPMfxTb/UWzzP4lt/iewzf82tvmvYJt/DdtcddVVV1111VVXXfVfguCqq6666qqr/gfa2dnhP4pt/iPZ5j+Sbf6j2OY/im3+I9jmP4Jt/r1s89/JNv9WtrnqX2abq676jySJF9WxY8cA+Id/+Iff5qqrrrrqqqv+5yC46qqrrrrqqv9Bzp49+4z77rvvVoCdnR3+o9jmP5Jt/iPZ5j+Kbf6j2OY/gm3+I9jm38s2/x62+fewzf8Gtvm/zDZXXfWvJYn7SeJ+krjqqquuuuqq/8EIrrrqqquuuup/mLNnz94KsL29zX8k2/xHss1/JNv8R7HNfxTb/EewzX8E2/x3s81/B9v8W9jmv4Jt/rPY5r+Dba666kV1/PhxAP7hH/7ht7nqqquuuuqq/zkIrrrqqquuuup/mPvuu+9WgJ2dHWzzH8k2/5Fs8x/JNv9RbPMfxTb/EWzzP4Ft/jvZ5n8D2/xnss1VV/1nksQLIon/aPP5HID77rvvVq666qqrrrrqfw6Cq6666qqrrvof5r777rsVYHt7GwDb2OY/im3+I9nmP5Jt/qPY5j+Kbf4j2Obfyzb/Xrb597DNfwfb/FvY5qr/Hra56qqrrrrqqquu+m9EcNVVV1111VX/w/zDP/zD7wDcdNNNPJBt/qPYxjb/UWzzH8k2/1Fs8x/FNv8RbPPvZZt/L9v8e9jm38o2/xfZ5r+bbf4r2eY/i22u+t/h+PHjAPzDP/zDb3PVVVddddVV/7MQXHXVVVddddX/UDs7Ozw32/xHss1/FNv8R7LNfxTb/Eexzf8Utvn/yDb/Frb517LNfybbXHXV/wXz+RyA++6771auuuqqq6666n8Wgquuuuqqq676H+bs2bO38kLY5j+Sbf6j2OY/km3+o9jmfxLb/E9gm38P2/xb2eaqF51t/iPZ5qqr/qPMZjMA7rvvvlu56qqrrrrqqv9ZCK666qqrrrrqf5j77rvvVoCdnR1eENv8R7LNfxTb/EeyzX8U2/xHsM1/BNv8e9nm38s2/9vY5n8q21x11f8mkvj3ms/nAJw9e/YZXHXVVVddddX/LARXXXXVVVdd9T/QP/zDP/w2wE033cQLYpv/SLb5j2Kb/0i2+Y9im/8ItvmPYJt/L9v8d7LNv5Vt/ivZ5l/LNlf957HNv4VtrnpOkvjvcvz4cQDuu+++W7nqqquuuuqq/1kIrrrqqquuuup/Mdv8R7LNfxTb/EeyzX8U2/xHsM1/BNv8e9nm38M2/x62+a9mm6uuuup/lrNnz97KVVddddVVV/3PQnDVVVddddVV/wP9/d///W8D3HjjjfxLbPMfyTb/UWzzH8k2/1Fs8x/BNv9X2Oa/g23+K9nmfxLb/EezzX8U21z1/4ck/i3m8zkA9913361cddVVV1111f8sBFddddVVV131P9jOzg4vCtvY5j+Kbf6j2OY/km3+o9jmP4Jt/r1s8+9lm/9OtvmvZpv/Crb517DNfwbbXPW/kyT+O0niP4Mk5vM5APfdd9+tXHXVVVddddX/PARXXXXVVVdd9T/QP/zDP/wOwM7ODv8atvmPYpv/KLb5j2Sb/yi2+Y9gm38v2/x72ebfwzb/HWxz1VVX/c8iiftJ4n6SeKDjx48D8A//8A+/zVVXXXXVVVf9z0Nw1VVXXXXVVf8DnT179laAnZ0d/rVs8x/FNv9RbPMfyTb/UWzzP4Vt/jezzf8Gtrnqqv9pJPGvIYmrrrrqqquuuupfRHDVVVddddVV/4Pt7Ozwb2Gb/yi2+Y9im/9ItvmfxDb/E9jm38M2/x1s829hm/8KtvnPYpv/Dra56vmTxFUvmmPHjgHwD//wD7/DVVddddVVV/3PQ3DVVVddddVV/wPdd999t9533323Auzs7PBvYZv/KLb5j2Kb/0i2+Y9gm/8Itvn3ss2/l23+PWzzb2Wbq8A2V1111VVXXXXVVVf9tyO46qqrrrrqqv+hzp49eyvAzs4O/1a2+Y9im/8otvmPZJv/CLb5j2Cbfy/b/H9km38L2/xr2eZ/I9v8T2Obq/7zSeJ/ouPHjwPwD//wD7/NVVddddVVV/3PQ3DVVVddddVV/0Pdd999twLs7Ozw72Gb/yi2+Y9im/9ItvmPYJv/CLb597LNv4dt/j1s829lm6v+e9nmqv/dJPG/wXw+B+C+++67lauuuuqqq676n4fgqquuuuqqq/6Huu+++24F2N7e5t/LNv9RbPMfxTb/kWzzH8E2/1fY5n8b2/xPZZurrvrfThJXXXXVVVdd9f8IwVVXXXXVVVf9D/UP//APvwNw00038R/BNv9RbPMfxTb/kWzzH8E2/162+feyzX8n2/xb2ea/km3+tWzzn8k2Lyrb/F9lm6v+bzp+/DgA//AP//DbXHXVVVddddX/TARXXXXVVVdd9f+Ibf6j2OY/im3+I9nmfwrb/HvZ5t/DNv/b2Oaq/zlsc9X/LpL4rzCbzQC47777buWqq6666qqr/mciuOqqq6666qr/oc6ePXsrwM7ODrb5j2Kb/yi2+Y9im/9pbPMfwTb/3Wzzb2Wbfyvb/FeyzX8221x11Qsjif8v5vM5APfdd9+tXHXVVVddddX/TARXXXXVVVdd9T/UfffddyvAzs4OALb5j2Kb/yi2+Y9im/8otvmPYJv/CWzz38k2/9Vs81/BNlddddW/zXw+B+Ds2bPP4Kqrrrrqqqv+ZyK46qqrrrrqqv/B/uEf/uG3AW666SYAbPMfxTb/UWzzH8U2/1Fs8x/BNv9etvn3ss2/h23+O9jm/zPb/EezzX8U21z1/5ck/j3m8zkA9913361cddVVV1111f9MBFddddVVV131v4xt/qPY5j+Kbf6j2OY/im3+I9jm38s2/5vZ5n8D2/xvZZur/n+QxP8F8/kcgLNnz97KVVddddVVV/3PRHDVVVddddVV/4P9/d///W8D3HTTTTyQbf6j2OY/im3+o9jmP4pt/iPY5t/LNv8etvn3sM1/B9v8W9jmv4Jt/jVs87+Bba76jyOJq55NEvP5HID77rvvVq666qqrrrrqfyaCq6666qqrrvpfyjb/UWzzH8U2/1Fs8x/FNv9X2Obfwzb/Vra56qqrnk0S/1/N53MA7rvvvlu56qqrrrrqqv+5CK666qqrrrrqf7B/+Id/+B2Am266iefHNv9RbPMfxTb/UWzzH8U2/162+feyzf9Htvm3sM2/lm2uuuqqfx1J/GscP34cgH/4h3/4ba666qqrrrrqfy6Cq6666qqrrvof7OzZs7cC7Ozs8ILY5j+Kbf6j2Ob/Ktv8e9nm38M2/x62+beyzf9FtvnPYpurrvq/QBJXXXXVVVdd9b8MwVVXXXXVVVf9H2Cb/yi2+Y9im/8ItvmPYpv/CLb572ab/21s83+Fba666n8KSfxHksT9JPH8HDt2DIB/+Id/+B2uuuqqq6666n8ugquuuuqqq676H+y+++679b777rt1Z2eHnZ0dXhjb/EexzX8U2/xHsM1/FNv8T2Cb/062+beyzX8l2/xr2eZ/I9u8KGxz1VUvCklcddVVV1111f9jBFddddVVV131P9x99913K8DOzg7/Etv8R7HNfxTb/EewzX8U2/x72ebfyzb/Hra56qqrrvrvcPz4cQD+4R/+4be56qqrrrrqqv+5CK666qqrrrrqf7izZ8/eCrCzs8OLwjb/UWzzH8U2/xFs8x/FNv9etvnfzDb/Vrb5t7DN/1S2ueqqq1408/mcq6666qqrrvpfgOCqq6666qqr/oe77777bgXY2dnhRWWb/yi2+Y9im/8ItvmfxDb/Hrb597DN/we2+deyzf8Utrnqqv+L7rvvvlu56qqrrrrqqv+5CK666qqrrrrqf7izZ8/eCnDTTTfxr2Gb/yi2+Y9im/8ItvmPYJv/CWzz72Gbfyvb/FvZ5t/CNv8X2Oaq/90kcdW/3vHjxwH4h3/4h9/hqquuuuqqq/5nI7jqqquuuuqq/+Huu+++W/k3ss1/FNv8X2Wbfy/b/G9mm/8NbHPVVVeBJP47zedzAO67775bueqqq6666qr/2Qiuuuqqq6666n+4++6771aAm266iTd8wzfkX8s2/1Fs8x/BNv8RbPMfxTb/Xrb597DNv4dt/jvY5t/CNv8VbPOvYZv/S2xz1f98kvjfYj6f8+hHPxqA++677+lcddVVV1111f9sVK666qqrrrrqf7izZ88+g2e66aabePu3f3v+PSRhmweShG0eSBK2eSBJ2OaBJGGbB5KEbR5IErZ5IEn8TyYJ2zyQJGzzQJKwzQNJwjYPJAnbPJAkbPNAkvifQhK2eSBJ2OaBJGGbB5KEbR5IEra5nyT+K0jCNg8kCds8kCRs80CSsM0DScI2AJL4zyAJ2zyQJGzzQJKwzQNJwjb3k8R/NEnY5oEkYZsHkoRtJPEfQRK2eSBJ2OZ+knhRScI2DyQJ2zyQJP6tJGGbB5LEi0IStnkgSbwoJGGbB5LEi0IStgGQxAPN53Pud/bs2Wdw1VVXXXXVVf+zoQc96EFcddVVV1111f90L/ZiL/baH/7hH/5d11xzzYO56qqrrrrqqv8BfuRHfuSzf/RHf/RzuOqqq6666qr/2dCDHvQgrrrqqquuuup/gxd7sRd7bZ7NgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxTP/wD//w21x11VVXXXXV/3zoQQ96EFddddVVV1111VVXXXXVVVddddVVV1111f9JVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/in8EOrZP3FsTST0AAAAASUVORK5CYII=) - -```js -model = import("tests/inputs/cube.step") -``` - -![Rendered example of import 4](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEqe0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispV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hCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCElf960hCEpKQhCQkIQlJSEISkpCEJCQhif8Oq9WK2267jWuvvZYbb7zx+Cu+4iu+9Z/92Z/9zOHh4S5XXXXVVVdd9aKhHD9+nKuuuuqqq656Ub3jO77jZ735m7/5RwN8//d/P7fddhuSkIQkJCEJSUhCEpKQhCQkIQlJSEISkrjqqquuuurfRhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCRx1fMnCUlIQhKSkIQkJCEJSUhCEpKQhCT+PVarFbfddhvXXnstN9544/FXfMVXfOs/+7M/+5nDw8Ndrrrqqquuuupfhh70oAdx1VVXXXXVVS+K13md13nvD//wD/8ugO///u/ntttu46r/2yRx1VX/EttcddULYpur/u1sc7/jx4/zFm/xFjzoQQ/ivvvuu/WzPuuzXue+++67lauuuuqqq6564dCDHvQgrrrqqquuuupf8jqv8zrv/eEf/uHfBfD93//93HbbbVz1byeJq6666r+Oba763802V8GxY8d4j/d4D44dO8Z9991362d91me9zn333XcrV1111VVXXfWCoQc96EFcddVVV1111QvzYi/2Yq/9uZ/7ub8F8PM///P87d/+Lf9XSOKqq6666j+Lba76n8E2/1ccO3aM93iP9+DYsWPcd999t37Ih3zIQ7jqqquuuuqqFww96EEP4qqrrrrqqqtekBd7sRd77c/93M/9LYCf//mf52//9m/5ryKJq6666qqrXjDbXPWfzzb/0xw7doz3eI/34NixY9x33323fsiHfMhDuOqqq6666qrnDz3oQQ/iqquuuuqqq56fF3uxF3vtz/3cz/0tgJ//+Z/nb//2b3lBJHHVVVddddX/fra56j+Obf6zHDt2jPd4j/fg2LFj3Hfffbd+yId8yEO46qqrrrrqqueFHvSgB3HVVVddddVVz+3FXuzFXvtzP/dzfwvg937v9/j93/99rrpKEldd9dxsc9VVz49trvrXs82L6tixY7zHe7wHx44d47777rv1Qz7kQx7CVVddddVVVz0nyvHjx7nqqquuuuqqB3qxF3ux1/7cz/3c3wL4u7/7O37913+dq/7zSUISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJ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rvqfi+Cqq6666qqr/pfY2dnhX8s2/9ls85/JNv+ZbGOb/yy2+c9im/8MtvmPZpv/CLb538w2/1q2+dewzYvKNi8K2/x3s81V/3OcPHkSgLNnzz6Dq6666qqrrvqfjeCqq6666qqr/of7h3/4h98G2NnZ4d/CNrb5z2Sb/0y2sc1/Jtv8Z7HNfxbb/Gewzf9Utvn3ss2/h22u+tezzX8G2/x/JYl/C0n8eywWCwD+/u///re56qqrrrrqqv/ZCK666qqrrrrqf7j77rvvVoBjx47x72Gb/0y2sc1/Jtv8Z7LNfxbb/GexzX8G2/xHss1/FNv8e9nmv4Nt/rVs8/+Bbf6vk8R/FUlcddVVV1111VVQueqqq6666qr/JXZ2dniHd3gHHve4x/E/nST+M0nifzNJ/G8iif9IkvifQhL/HpL4ryKJ/wySeFFI4j+CJF4YSfxbSOJfQxLPjyReVJJ4IEn8SyTxL5HEA0niBZHEA0niBZHE8yOJ+0niBZEEwGKx4OEPfzgA//AP//DbXHXVVVddddX/bFSuuuqqq6666n+4s2fPPuNHfuRHPvud3umdPvvmm2/m5ptv5qqrrrrqqqv+u/3DP/zDb9933323ctVVV1111VX/s1G56qqrrrrqqv8FfvRHf/RzAK655poHc9VVV1111VX/A/zoj/7o59x33323ctVVV1111VX/s6EHPehBXHXVVVddddVVV1111VVXXXXVVVddddVV/ydRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8q/hFQenDrm8dOUAAAAABJRU5ErkJggg==) - -```js -import height, buildSketch from "common.kcl" - -plane = XZ -margin = 2 -s1 = buildSketch(plane, [0, 0]) -s2 = buildSketch(plane, [0, height() + margin]) -``` - -![Rendered example of import 5](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABjeElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVf4trrrnmwZ/zOZ/zW1x11VVX/T/w9V//9e/zD//wD7/NVVddddVVV131X43KVVddddVVV131X+6aa6558Bd/8Rf/1qu92qs9mKuuuuqq/x++6+u//uvf5x/+4R9+m6uuuuqqq6666r8Slauuuuqqq6666r/FmTNnHtz3PVddddVV/x9cc801Dz579uytXHXVVVddddVV/9WoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqr/svdd999tw7DwFVXXXXV/yf33XffrVx11VVXXXXVVf/VqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XEVx11VVXXXXVVf8t7rvvvluHYeCqq6666v+6YRi47777buWqq6666qqrrvrvQHDVVVddddVVV/23OHv27K3r9Zqrrrrqqv/r1us1Z8+evZWrrrrqqquuuuq/A5Wrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddV/i/vuu+/WYRi46qqrrvq/bhgG7rvvvlu56qqrrrrqqqv+O1C56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVf9t7jvvvtuHYaBq6666qr/64Zh4L777ruVq6666qqrrrrqvwOVq6666qqrrrrqqquuuuqq/0R33303Z8+efQZXXXXVVVddddV/BypXXXXVVVddddV/i7Nnzz5jGAauuuqqq6666qqrrrrqqqv+E1G56qqrrrrqqqv+W9x33323rtdrrrrqqquuuuqqq6666qqr/hNRueqqq6666qqrrrrqqquu+k9233333cpVV1111VVXXfXfgcpVV1111VVXXfXf4uzZs7cOw8BVV1111f8HZ8+evZWrrrrqqquuuuq/A5Wrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddV/i/vuu+/WYRi46qqrrvr/4L777ruVq6666qqrrrrqvwOVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yqCq6666qqrrrrqv81999136zAMXHXVVVf9XzUMA/fdd9+tXHXVVVddddVV/10Irrrqqquuuuqq/zZnz569db1ec9VVV131f9V6vebs2bO3ctVVV1111VVX/XehctVVV1111VVXXXXVVVdd9Z9kGAauuuqqq6666qr/VlSuuuqqq6666qr/Nvfdd9+twzBw1VVXXfV/2X333XcrV1111VVXXXXVfxcqV1111VVXXXXVf6thGLjqqquuuuqqq6666qqrrvpPQuWqq6666qqrrvpvc999993KVVddddX/YcMwcN99993KVVddddVVV13134XKVVddddVVV1111VVXXXXVf5K7776bs2fPPoOrrrrqqquuuuq/C5Wrrrrqqquuuuq/zdmzZ58xDANXXXXVVVddddVVV1111VX/SahcddVVV1111VX/be67775b1+s1V1111VX/l9133323ctVVV1111VVX/XehctVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquu+m9z9uzZW4dh4Kqrrrrq/7KzZ8/eylVXXXXVVVdd9d+FylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666r/Nfffdd+swDFx11VVX/V9233333cpVV1111VVXXfXfheCqq6666qqrrvpvdd999906DANXXXXVVVddddVVV1111VX/CahcddVVV1111VVXXXXVVVf9JxiGgfvuu+9Wrrrqqquuuuqq/04EV1111VVXXXXVf6uzZ8/eul6vueqqq676v2a9XnP27Nlbueqqq6666qqr/jtRueqqq6666qqrrrrqqquu+k8wDAP33XffrVx11VVXXXXVVf+dqFx11VVXXXXVVf+t7rvvvluHYeCqq6666qqrrrrqqquuuuo/AZWrrrrqqquuuuq/1X333XfrMAxcddVVV1111VVXXXXVVVf9J6By1VVXXXXVVVddddVVV131n+AZz3gG9913361cddVVV1111VX/nahcddVVV1111VX/rc6ePfuMYRi46qqrrvq/6OzZs8/gqquuuuqqq67670Tlqquuuuqqq676b7der7nqqquuuuqqq6666qqrrvpPQOWqq6666qqrrvpvdd99993KVVddddX/Uffdd9+tXHXVVVddddVV/52oXHXVVVddddVVV1111VVX/Sc5e/bsrVx11VVXXXXVVf+dqFx11VVXXXXVVf+tzp49e+swDFx11VVXXXXVVVddddVVV/0noHLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrvpvdd999906DANXXXXVVf8X3Xfffbdy1VVXXXXVVVf9dyK46qqrrrrqqqv+29133323DsPAVVddddVVV1111VVXXXXVfzAqV1111VVXXXXVVVddddVV/8GGYeC+++67lauuuuqqq6666r8bwVVXXXXVVVdd9d/u7Nmzt67Xa6666qqr/q9Yr9ecPXv2Vq666qqrrrrqqv9uVK666qqrrrrqqquuuuqqq/6DDcPAfffddytXXXXVVVddddV/NypXXXXVVVddddV/u/vuu+/WYRi46qqrrrrqqquuuuqqq676D0blqquuuuqqq676b3fffffdOgwDV1111VVXXXXVVVddddVV/8GoXHXVVVddddVVV1111VVX/Qd7xjOewX333XcrV1111VVXXXXVfzcqV1111VVXXXXVf7uzZ88+YxgGrrrqqqv+Lzl79uwzuOqqq6666qqr/rtRueqqq6666qqr/tvdd999t67Xa6666qqrrrrqqquuuuqqq/6DUbnqqquuuuqqq6666qqrrvpPcN99993KVVddddVVV131343KVVddddVVV1313+7s2bO3DsPAVVddddX/JWfPnr2Vq6666qqrrrrqvxuVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVV/wnuu+++W7nqqquuuuqqq/67Ubnqqquuuuqqq/7b3XfffbcOw8BVV1111VVXXXXVVVddddV/MIKrrrrqqquuuup/hPvuu+/WYRi46qqrrvrfbhgG7rvvvlu56qqrrrrqqqv+JyC46qqrrrrqqqv+Rzh79uyt6/Waq6666qqrrrrqqquuuuqq/0BUrrrqqquuuuqqq6666qqr/gOt12vOnj17K1ddddVVV1111f8EVK666qqrrrrqqquuuuqqq/4DDcPAfffddytXXXXVVVddddX/BFSuuuqqq6666qr/Ee67775bh2Hgqquuuuqqq6666qqrrrrqPxCVq6666qqrrrrqf4T77rvv1mEYuOqqq676324YBu67775bueqqq6666qqr/iegctVVV1111VVXXXXVVVdd9R/o7rvv5qqrrrrqqquu+h+DylVXXXXVVVdd9T/C2bNnnzEMA1ddddVV/xecPXv2GVx11VVXXXXVVf8TULnqqquuuuqqq/5HuO+++25dr9dcddVVV1111VVXXXXVVVf9B6Jy1VVXXXXVVVddddVVV131H+y+++67lauuuuqqq6666n8CKlddddVVV1111f8IZ8+evXUYBq666qqr/i84e/bsrVx11VVXXXXVVf8TULnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXfUf7L777ruVq6666qqrrrrqfwIqV1111VVXXXXV/wj33XffrcMwcNVVV1111VVXXXXVVVdd9R+I4Kqrrrrqqquu+h/jvvvuu3UYBq666qqr/rcahoH77rvvVq666qqrrrrqqv8pCK666qqrrrrqqv8xzp49e+t6veaqq6666n+r9XrNVVddddVVV131PwqVq6666qqrrrrqqquuuuqq/0Bnz569lauuuuqqq6666n8KKlddddVVV1111VVXXXXVVf9BhmHgvvvuu5Wrrrrqqquuuup/CipXXXXVVVddddX/GPfdd9+twzBw1VVXXXXVVVddddVVV131H4TKVVddddVVV131P8Z999136zAMXHXVVVf9bzUMA/fdd9+tXHXVVVddddVV/1NQueqqq6666qqrrrrqqquu+g9y9913c9VVV1111VVX/Y9C5aqrrrrqqquu+h/j7NmzzxiGgauuuuqq/83Onj37DK666qqrrrrqqv8pqFx11VVXXXXVVf9j3Hfffbeu12uuuuqqq6666qqrrrrqqqv+g1C56qqrrrrqqquuuuqqq676D3TffffdylVXXXXVVVdd9T8Flauuuuqqq6666n+Ms2fP3joMA1ddddVV/5udPXv2Vq666qqrrrrqqv8pqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq/7HuO+++24dhoGrrrrqqv/N7rvvvlu56qqrrrrqqqv+p6By1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Vw1VVXXXXVVVf9j3LffffdOgwDV1111VX/2wzDwH333XcrV1111VVXXXXV/yQEV1111VVXXXXV/yhnz569db1ec9VVV131v816vebs2bO3ctVVV1111VVX/U9C5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVdd9T/Kfffdd+swDFx11VVX/W8zDAP33XffrVx11VVXXXXVVf+TULnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV/2Pct999906DANXXXXVVf/bDMPAfffddytXXXXVVVddddX/JFSuuuqqq6666qqrrrrqqqv+A9x9992cPXv2GVx11VVXXXXVVf+TULnqqquuuuqqq/5HOXv27DOGYeCqq6666qqrrrrqqquuuuo/AJWrrrrqqquuuup/lPvuu+/W9XrNVVddddVVV1111VVXXXXVfwAqV1111VVXXXXVVVddddVV/0Huu+++W7nqqquuuuqqq/4noXLVVVddddVVV/2Pcvbs2VuHYeCqq6666n+js2fP3spVV1111VVXXfU/CZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddX/KPfdd9+twzBw1VVXXfW/0X333XcrV1111VVXXXXV/yRUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6sIrrrqqquuuuqq/3Huu+++W4dh4Kqrrrrqf4thGLjvvvtu5aqrrrrqqquu+p+G4Kqrrrrqqquu+h/n7Nmzt67Xa6666qqr/rdYr9ecPXv2Vq666qqrrrrqqv9pqFx11VVXXXXVVVddddVVV/07DcPAVVddddVVV131PxKVq6666qqrrrrqf5z77rvv1mEYuOqqq6763+S+++67lauuuuqqq6666n8aKlddddVVV1111f9IwzBw1VVXXXXVVVddddVVV13170Tlqquuuuqqq676H+e+++67lauuuuqq/0We8YxncN99993KVVddddVVV131Pw2Vq6666qqrrrrqqquuuuqq/wBnz559BlddddVVV1111f80VK666qqrrrrqqv9xzp49+4xhGLjqqquuuuqqq6666qqrrvp3onLVVVddddVVV/2Pc9999926Xq+56qqrrvrf5L777ruVq6666qqrrrrqfxoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqq/3HOnj176zAMXHXVVVf9b3L27Nlbueqqq6666qqr/qehctVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquu+h/nvvvuu3UYBq666qqr/je57777buWqq6666qqrrvqfhuCqq6666qqrrvof6b777rt1GAauuuqqq6666qqrrrrqqqv+HahcddVVV1111VVXXXXVVVf9OwzDwH333XcrV1111VVXXXXV/0QEV1111VVXXXXV/0hnz569db1ec9VVV131P916vebs2bO3ctVVV1111VVX/U9E5aqrrrrqqquuuuqqq6666t9hGAbuu+++W7nqqquuuuqqq/4nonLVVVddddVVV/2PdN999906DANXXXXVVVddddVVV1111VX/DlSuuuqqq6666qr/ke67775bh2Hgqquuuuqqq6666qqrrrrq34HKVVddddVVV1111VVXXXXVv8MznvEM7rvvvlu56qqrrrrqqqv+J6Jy1VVXXXXVVVf9j3T27NlnDMPAVVddddX/BmfPnn0GV1111VVXXXXV/0RUrrrqqquuuuqq/7HW6zVXXXXVVVddddVVV1111VX/DlSuuuqqq6666qr/ke67775bueqqq676X+K+++67lauuuuqqq6666n8iKlddddVVV1111VVXXXXVVf9OZ8+evZWrrrrqqquuuup/IipXXXXVVVddddX/SGfPnr11GAauuuqqq6666qqrrrrqqqv+HahcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqqv+R7rvvvtuHYaBq6666qr/De67775bueqqq6666qqr/iciuOqqq6666qqr/se67777bh2Ggauuuuqqq6666qqrrrrqqn8jKlddddVVV1111VVXXXXVVf9GwzBw33333cpVV1111VVXXfU/FcFVV1111VVXXfU/1tmzZ29dr9dcddVVV/1PtV6vOXv27K1cddVVV1111VX/U1G56qqrrrrqqquuuuqqq676NxqGgfvuu+9Wrrrqqquuuuqq/6moXHXVVVddddVV/2Pdd999tw7DwFVXXXXVVVddddVVV1111b8Rlauuuuqqq6666n+s++6779ZhGLjqqquu+p9qGAauuuqqq6666qr/0ahcddVVV1111VVXXXXVVVf9G919993cd999t3LVVVddddVVV/1PReWqq6666qqrrvof6+zZs88YhoGrrrrqqv/Jzp49+wyuuuqqq6666qr/qahcddVVV1111VX/Y9133323rtdrrrrqqquuuuqqq6666qqr/o2oXHXVVVddddVVV1111VVX/Tvcd999t3LVVVddddVVV/1PReWqq6666qqrrvof6+zZs7cOw8BVV1111f9kZ8+evZWrrrrqqquuuup/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqqv+He67775bueqqq6666qqr/qeictVVV1111VVX/Y9133333ToMA1ddddVVV1111VVXXXXVVf9GBFddddVVV1111f9o9913363DMHDVVVdd9T/NMAzcd999t3LVVVddddVVV/1PRnDVVVddddVVV/2Pdvbs2VvX6zVXXXXVVVddddVVV1111VX/BlSuuuqqq6666qqrrrrqqqv+DdbrNWfPnr2Vq6666qqrrrrqfzIqV1111VVXXXXVVVddddVV/wbDMHDffffdylVXXXXVVVdd9T8Zlauuuuqqq6666n+0++6779ZhGLjqqquuuuqqq6666qqrrvo3oHLVVVddddVVV/2Pdt999906DANXXXXVVf/TDMPAfffddytXXXXVVVddddX/ZFSuuuqqq6666qqrrrrqqqv+De6++26uuuqqq6666qr/8ahcddVVV1111VX/o509e/YZwzBw1VVXXfU/0dmzZ5/BVVddddVVV131PxmVq6666qqrrrrqf7T77rvv1vV6zVVXXXXVVVddddVVV1111b8Blauuuuqqq6666qqrrrrqqn+j++6771auuuqqq6666qr/yahcddVVV1111VX/o509e/bWYRi46qqrrvqf6OzZs7dy1VVXXXXVVVf9T0blqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV131P94wDFx11VVX/U9033333cpVV1111VVXXfU/GZWrrrrqqquuuup/tPvuu+9Wrrrqqquuuuqqq6666qqr/m0Irrrqqquuuuqq//Huu+++W4dh4Kqrrrrqf4phGLjvvvtu5aqrrrrqqquu+p+O4Kqrrrrqqquu+h/v7Nmzt67Xa6666qqr/qdYr9ecPXv2Vq666qqrrrrqqv/pqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrvpXGoaB++6771auuuqqq6666qr/6ahcddVVV1111VX/49133323DsPAVVddddVVV1111VVXXXXVvxKVq6666qqrrrrqf7z77rvv1mEYuOqqq676n2IYBu67775bueqqq6666qqr/qejctVVV1111VVXXXXVVVdd9a909913c9VVV1111VVX/a9A5aqrrrrqqquu+h/v7NmzzxiGgauuuuqq/0nOnj37DK666qqrrrrqqv/pqFx11VVXXXXVVf/j3Xfffbeu12uuuuqqq6666qqrrrrqqqv+lahcddVVV1111VVXXXXVVVf9G9x33323ctVVV1111VVX/U9H5aqrrrrqqquu+h/v7Nmztw7DwFVXXXXV/yRnz569lauuuuqqq6666n86KlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqv/x7rvvvluHYeCqq6666n+S++6771auuuqqq6666qr/6ahcddVVV1111VVXXXXVVVddddVVV1111VX/VxFcddVVV1111VX/K9x33323DsPAVVddddV/t2EYuO+++27lqquuuuqqq67634Dgqquuuuqqq676X+Hs2bO3rtdrrrrqqqv+u63Xa86ePXsrV1111VVXXXXV/wZUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVV/yvcd999tw7DwFVXXXXVf7dhGLjvvvtu5aqrrrrqqquu+t+AylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666n+F++6779ZhGLjqqquu+u82DAP33XffrVx11VVXXXXVVf8bULnqqquuuuqqq6666qqrrvpXuPvuuzl79uwzuOqqq6666qqr/jegctVVV1111VVX/a9w9uzZZwzDwFVXXXXVVVddddVVV1111b8Clauuuuqqq6666n+F++6779b1es1VV1111VVXXXXVVVddddW/ApWrrrrqqquuuuqqq6666qp/pfvuu+9Wrrrqqquuuuqq/w2oXHXVVVddddVV/yucPXv21mEYuOqqq676n+Ds2bO3ctVVV1111VVX/W9A5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVdd9b/Cfffdd+swDFx11VVX/U9w33333cpVV1111VVXXfW/AZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KoKrrrrqqquuuup/jfvuu+/WYRi46qqrrvrvMgwD9913361cddVVV1111VX/WxBcddVVV1111VX/a5w9e/bW9XrNVVddddV/l/V6zdmzZ2/lqquuuuqqq67634LKVVddddVVV1111VVXXXXVi2gYBq666qqrrrrqqv9VqFx11VVXXXXVVf9r3HfffbcOw8BVV1111X+n++6771auuuqqq6666qr/LahcddVVV1111VX/a9x33323DsPAVVddddVVV1111VVXXXXVi4jKVVddddVVV1111VVXXXXVi2gYBu67775bueqqq6666qqr/regctVVV1111VVXXXXVVVdd9SK6++67OXv27DO46qqrrrrqqqv+t6By1VVXXXXVVVf9r3H27NlnDMPAVVddddVVV1111VVXXXXVi4jKVVddddVVV131v8Z9991363q95qqrrrrqv9N99913K1ddddVVV1111f8WVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVf9rnD179tZhGLjqqquu+u909uzZW7nqqquuuuqqq/63oHLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrvpf47777rt1GAauuuqqq/473Xfffbdy1VVXXXXVVVf9b0Fw1VVXXXXVVVf9r3LffffdOgwDV1111VVXXXXVVVddddVVLwIqV1111VVXXXXVVVddddVVL4JhGLjvvvtu5aqrrrrqqquu+t+E4Kqrrrrqqquu+l/l7Nmzt67Xa6666qqr/qut12vOnj17K1ddddVVV1111f8mVK666qqrrrrqqquuuuqqq14EwzBw33333cpVV1111VVXXfW/CZWrrrrqqquuuup/lfvuu+/WYRi46qqrrrrqqquuuuqqq656EVC56qqrrrrqqqv+V7nvvvtuHYaBq6666qqrrrrqqquuuuqqFwGVq6666qqrrrrqqquuuuqqF8EznvEM7rvvvlu56qqrrrrqqqv+N6Fy1VVXXXXVVVf9r3L27NlnDMPAVVddddV/h7Nnzz6Dq6666qqrrrrqfxMqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqq/1Xuu+++W9frNVddddVV/x3uu+++W7nqqquuuuqqq/43oXLVVVddddVVV1111VVXXfUiOnv27K1cddVVV1111VX/m1C56qqrrrrqqqv+Vzl79uytwzBw1VVXXXXVVVddddVVV131IqBy1VVXXXXVVVddddVVV131Irrvvvtu5aqrrrrqqquu+t+EylVXXXXVVVdd9b/Kfffdd+swDFx11VVXXXXVVVddddVVV70ICK666qqrrrrqqv917rvvvluHYeCqq6666qqrrrrqqquuuupfQOWqq6666qqrrrrqqquuuupfMAwD9913361cddVVV1111VX/2xBcddVVV1111VX/65w9e/bW9XrNVVddddV/lfV6zdmzZ2/lqquuuuqqq67634bKVVddddVVV1111VVXXXXVv2AYBu67775bueqqq6666qqr/rehctVVV1111VVX/a9z33333ToMA1ddddVVV1111VVXXXXVVf8CKlddddVVV1111f869913363DMHDVVVdd9V9lGAauuuqqq6666qr/lahcddVVV1111VVXXXXVVVf9C+6++27uu+++W7nqqquuuuqqq/63oXLVVVddddVVV/2vc/bs2WcMw8BVV1111X+ls2fPPoOrrrrqqquuuup/GypXXXXVVVddddX/Ovfdd9+t6/Waq6666qqrrrrqqquuuuqqfwGVq6666qqrrrrqqquuuuqqF8F99913K1ddddVVV1111f82VK666qqrrrrqqv91zp49e+swDFx11VVX/Vc6e/bsrVx11VVXXXXVVf/bULnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXfUiuO+++27lqquuuuqqq67634bKVVddddVVV131v85999136zAMXHXVVVddddVVV1111VVX/QsIrrrqqquuuuqq/5Xuu+++W4dh4KqrrrrqP9swDNx33323ctVVV1111VVX/W9EcNVVV1111VVX/a909uzZW9frNVddddVVV1111VVXXXXVVS8Elauuuuqqq6666qqrrrrqqhdivV5z9uzZW7nqqquuuuqqq/43onLVVVddddVVV1111VVXXfVCDMPAfffddytXXXXVVVddddX/RlSuuuqqq6666qr/le67775bh2Hgqquuuuqqq6666qqrrrrqhaBy1VVXXXXVVVf9r3TffffdOgwDV1111VX/2YZh4L777ruVq6666qqrrrrqfyMqV1111VVXXXXVVVddddVVL8Tdd9/NVVddddVVV131vxaVq6666qqrrrrqf6WzZ88+YxgGrrrqqqv+K5w9e/YZXHXVVVddddVV/xtRueqqq6666qqr/le67777bl2v11x11VVXXXXVVVddddVVV70QVK666qqrrrrqqquuuuqqq/4F9913361cddVVV1111VX/G1G56qqrrrrqqqv+Vzp79uytwzBw1VVXXfVf4ezZs7dy1VVXXXXVVVf9b0Tlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV131v9YwDFx11VVX/Ve47777buWqq6666qqrrvrfiMpVV1111VVXXfW/0n333XcrV1111VVXXXXVVVddddVVLxzBVVddddVVV131v9Z999136zAMXHXVVVf9ZxmGgfvuu+9Wrrrqqquuuuqq/60Irrrqqquuuuqq/7XOnj1763q95qqrrrrqP8t6vebs2bO3ctVVV1111VVX/W9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111QswDAP33XffrVx11VVXXXXVVf9bUbnqqquuuuqqq/7Xuu+++24dhoGrrrrqqquuuuqqq6666qoXgMpVV1111VVXXfW/1n333XfrMAxcddVVV/1nGYaB++6771auuuqqq6666qr/rahcddVVV1111VVXXXXVVVe9AHfffTdXXXXVVVddddX/alSuuuqqq6666qr/tc6ePfuMYRi46qqrrvrPdPbs2Wdw1VVXXXXVVVf9b0Xlqquuuuqqq676X+u+++67db1ec9VVV1111VVXXXXVVVdd9QJQueqqq6666qqrrrrqqquueiHuu+++W7nqqquuuuqqq/63onLVVVddddVVV/2vdfbs2VuHYeCqq6666j/T2bNnb+Wqq6666qqrrvrfispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuup/rfvuu+/WYRi46qqrrvrPdN99993KVVddddVVV131vxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yqCq6666qqrrrrqf7X77rvv1mEYuOqqq676jzYMA/fdd9+tXHXVVVddddVV/5sRXHXVVVddddVV/6udPXv21vV6zVVXXXXVf7T1es3Zs2dv5aqrrrrqqquu+t+MylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666n+1++6779ZhGLjqqquu+o82DAP33XffrVx11VVXXXXVVf+bUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV/2vdt999906DANXXXXVVf/RhmHgvvvuu5Wrrrrqqquuuup/MypXXXXVVVddddVVV1111VXPx913383Zs2efwVVXXXXVVVdd9b8Zlauuuuqqq6666n+1s2fPPmMYBq666qqrrrrqqquuuuqqq54PKlddddVVV1111f9q9913363r9Zqrrrrqqquuuuqqq6666qrng8pVV1111VVXXXXVVVddddULcN99993KVVddddVVV131vxmVq6666qqrrrrqf7WzZ8/eOgwDV1111VX/Gc6ePXsrV1111VVXXXXV/2ZUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVV/6vdd999tw7DwFVXXXXVf4b77rvvVq666qqrrrrqqv/NqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XEVx11VVXXXXVVf/r3XfffbcOw8BVV1111X+UYRi47777buWqq6666qqrrvrfjuCqq6666qqrrvpf7+zZs7eu12uuuuqqq/6jrNdrzp49eytXXXXVVVddddX/dlSuuuqqq6666qqrrrrqqqueyzAM3Hfffbdy1VVXXXXVVVf9b0flqquuuuqqq676X+++++67dRgGrrrqqquuuuqqq6666qqrnguVq6666qqrrrrqf7377rvv1mEYuOqqq6666qqrrrrqqquuei5Urrrqqquuuuqqq6666qqrnssznvEM7rvvvlu56qqrrrrqqqv+t6Ny1VVXXXXVVVddddVVV131fJw9e/YZXHXVVVddddVV/9tRueqqq6666qqr/tc7e/bsM4Zh4Kqrrrrqqquuuuqqq6666rlQueqqq6666qqr/te77777bl2v11x11VVX/Ue67777buWqq6666qqrrvrfjspVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuup/vbNnz946DANXXXXVVf+Rzp49eytXXXXVVVddddX/dlSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VX/69133323DsPAVVddddV/pPvuu+9Wrrrqqquuuuqq/+0Irrrqqquuuuqq/xPuu+++W4dh4Kqrrrrqqquuuuqqq6666gGoXHXVVVddddVVV1111VVXPcAwDNx33323ctVVV1111VVX/V9AcNVVV1111VVX/Z9w9uzZW9frNVddddVV/17DMHD27Nlbueqqq6666qqr/i+gctVVV1111VVXXXXVVVdd9QDr9Zr77rvvVq666qqrrrrqqv8LqFx11VVXXXXVVf8n3HfffbcOw8BVV1111VVXXXXVVVddddUDULnqqquuuuqqq/5PuO+++24dhoGrrrrqqquuuuqqq6666qoHoHLVVVddddVVV1111VVXXfUAz3jGM7jvvvtu5aqrrrrqqquu+r+AylVXXXXVVVdd9X/C2bNnnzEMA1ddddVV/xHOnj37DK666qqrrrrqqv8LCK666qqrrrrqqv8zzp8/z1VXXXXVVVddddVVV1111QNQueqqq6666qqr/k+47777buWqq6666j/IfffddytXXXXVVVddddX/BehBD3oQV1111VVXXXXV/37XXHPNg8+cOfPgz/3cz/0trrrqqqv+Hb7+67/+fX7rt37ru7nqqquuuuqqq/4vQA960IO46qqrrrrqqqv+b7jmmmsezFVX/R9h25LEA9i2JPEAti1JPIBtSxIPYNuSxAPYtiTxALYtSTyAbUsSD2DbksQD2LYk8QC2LUk8gG1LEg9g25LEA9i2JPEAti1JPIBtSxIPYNuSxAPYtiTxALYtSTzAfffddytXXXXVVVddddX/FehBD3oQV1111VVXXXXVVVddddVVV1111VVXXXXV/0lUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV131f9Y7vuM7ftaLv/iLvzZX/XcRYJ6TAPOcBJjnJMA8JwHmOQkwz0mAeU4CzHMSYJ6TAPOcBJjnJMA8JwHmOQkwz0mAeU4CzHMSYJ6TAPOcBJjnJMA8JwHmOQkwz0mAeU4CzHMSYJ6TAPOcBJjnJMA8JwHmOQkwz0mAeU4CzHMSYJ6TAPOc9Pd///e/9aM/+qOfw1VXXXXVVVdd9X8Rlauuuuqqq6666v+kd3zHd/ysd33Xd33vhz70oQ/mqv90krDNA0nCNg8kCds8kCRs80CSsM0DScI2DyQJ2zyQJGzzQJKwzQNJwjYPJAnbPJAkbPNAkrDNA0nCNg8kCds8kCRs80CSsM0DScI2DyQJ2zyQJGzzQJKwzQNJwjYPJAnbPJAkbPNAkrDNA0nCNg8kCds8kCRs80CSsM0DScI2DyQJ2zyQJGzzQJKwzQNJwjYPJAnbPJAkXvIlX/JBZ8+efcZv/dZvfTdXXXXVVVddddX/NVSuuuqqq6666qr/k6655poH33TTTQ/e3t7mqquuuuqFuemmmx78Yi/2Yq/1W7/1W9/NVVddddVVV131fw2Vq6666qqrrrrq/6T77rvv1mEYuOqqq676lwzDwH333XcrV1111VVXXXXV/0VUrrrqqquuuuqqq6666qr/1+6++27Onj37DK666qqrrrrqqv+LqFx11VVXXXXVVf8nnT179hnDMHDVVVddddVVV1111VVX/b9G5aqrrrrqqquu+j/pvvvuu3W9XnPVVVddddVVV1111VVX/b9G5aqrrrrqqquuuuqqq676f+++++67lauuuuqqq6666v8iKlddddVVV1111f9JZ8+evXUYBq666qqrXhRnz569lauuuuqqq6666v8iKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqv+T7rvvvluHYeCqq6666kVx33333cpVV1111VVXXfV/EcFVV1111VVXXfV/2jAMXHXVVVddddVVV1111VX/bxFcddVVV1111VX/Z9133323ctVVV131QgzDwH333XcrV1111VVXXXXV/1UEV1111VVXXXXV/1lnz569db1ec9VVV131ggzDwNmzZ2/lqquuuuqqq676v4rKVVddddVVV1111VVXXfX/1nq95r777ruVq6666qqrrrrq/yoqV1111VVXXXXV/1n33XffrcMwcNVVV1111VVXXXXVVVf9v0Xlqquuuuqqq676P+u+++67dRgGrrrqqquuuuqqq6666qr/t6hcddVVV1111VVXXXXVVf9vPeMZz+C+++67lauuuuqqq6666v8qKlddddVVV1111VVXXXXV/2tnz559BlddddVVV1111f9VVK666qqrrrrqqv+zzp49+4xhGLjqqquuuuqqq6666qqr/t+ictVVV1111VVX/Z9133333bper7nqqquuemHuu+++W7nqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrvo/6+zZs7cOw8BVV1111Qtz9uzZW7nqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrvo/67777rt1GAauuuqqq16Y++6771auuuqqq6666qr/qwiuuuqqq6666qr/0+67775bh2Hgqquuuuqqq6666qqrrvp/icpVV1111VVXXXXVVVdd9f/SMAycPXv2GVx11VVXXXXVVf+XEVx11VVXXXXVVf+nnT179tb1es1VV1111XNbr9fcd999t3LVVVddddVVV/1fRuWqq6666qqrrrrqqquu+n9pGAbuu+++W7nqqquuuuqqq/4vo3LVVVddddVVV/2fdt999906DANXXXXVVVddddVVV1111f9LVK666qqrrrrqqv/T7rvvvluHYeCqq6666qqrrrrqqquu+n+JylVXXXXVVVddddVVV131/9IznvEM7rvvvqdz1VVXXXXVVVf9X0blqquuuuqqq676P+3s2bPPGIaBq6666qrn5+zZs8/gqquuuuqqq676v4zKVVddddVVV131f9p9991363q95qqrrrrqqquuuuqqq676f4nKVVddddVVV1111VVXXfX/1tmzZ2/lqquuuuqqq676v4zKVVddddVVV1111VVXXfX/1n333XcrV1111VVXXXXV/2VUrrrqqquuuuqq/9POnj176zAMXHXVVVddddVVV1111VX/L1G56qqrrrrqqquuuuqqq/7fuu+++27lqquuuuqqq676v4zKVVddddVVV131f9p999136zAMXHXVVVddddVVV1111VX/LxFcddVVV1111VX/59133323DsPAVVddddVVV1111VVXXfX/DpWrrrrqqquuuuqqq6666v+dYRi47777buWqq6666qqrrvq/juCqq6666qqrrvo/7+zZs7eu12uuuuqqq+63Xq85e/bsrVx11VVXXXXVVf/XUbnqqquuuuqqq6666qqr/t8ZhoH77rvvVq666qqrrrrqqv/rqFx11VVXXXXVVf/n3XfffbcOw8BVV1111VVXXXXVVVdd9f8Olauuuuqqq6666v+8++6779ZhGLjqqquuut8wDNx33323ctVVV1111VVX/V9H5aqrrrrqqquuuuqqq676f+fuu+/mqquuuuqqq676f4HKVVddddVVV131f97Zs2efMQwDV1111VUPdPbs2Wdw1VVXXXXVVVf9X0flqquuuuqqq676P+++++67db1ec9VVV1111VVXXXXVVVf9v0Plqquuuuqqq6666qqrrvp/6b777ruVq6666qqrrrrq/zoqV1111VVXXXXV/3lnz569dRgGrrrqqqse6OzZs7dy1VVXXXXVVVf9X0flqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXfX/0n333XcrV1111VVXXXXV/3VUrrrqqquuuuqq//Puu+++W4dh4Kqrrrrqqquuuuqqq676f4fgqquuuuqqq676f+G+++67dRgGrrrqqquGYeC+++67lauuuuqqq6666v8Dgquuuuqqq6666v+Fs2fP3rper7nqqquuuuqqq6666qqr/l+hctVVV1111VVXXXXVVVf9v7Jerzl79uytXHXVVVddddVV/x9Queqqq6666qqrrrrqqqv+XxmGgfvuu+9Wrrrqqquuuuqq/w+oXHXVVVddddVV/y/cd999tw7DwFVXXXXVVVddddVVV131/wqVq6666qqrrrrq/4X77rvv1mEYuOqqq64ahoH77rvvVq666qqrrrrqqv8PqFx11VVXXXXVVVddddVV/6/cfffdXHXVVVddddVV/29Queqqq6666qqr/l84e/bsM4Zh4KqrrroK4OzZs8/gqquuuuqqq676/4DKVVddddVVV131/8J9991363q95qqrrrrqqquuuuqqq676f4XKVVddddVVV1111VVXXfX/zn333XcrV1111VVXXXXV/wdUrrrqqquuuuqq/xfOnj176zAMXHXVVVcBnD179lauuuqqq6666qr/D6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqqv+X7jvvvtuHYaBq6666iqA++6771auuuqqq6666qr/D6hcddVVV1111VVXXXXVVVddddVVV1111VX/VxFcddVVV1111VX/b9x33323DsPAVVdd9f/XMAzcd999t3LVVVddddVVV/1/QXDVVVddddVVV/2/cfbs2VvX6zVXXXXV/1/r9ZqzZ8/eylVXXXXVVVdd9f8Flauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXV/xvDMHDffffdylVXXXXVVVdd9f8Flauuuuqqq6666v+N++6779ZhGLjqqquuuuqqq6666qqr/t+gctVVV1111VVX/b9x33333ToMA1ddddX/X8MwcN99993KVVddddVVV131/wWVq6666qqrrrrqqquuuur/jbvvvpurrrrqqquuuur/FSpXXXXVVVddddX/G2fPnn3GMAxcddVV/7+dPXv2GVx11VVXXXXVVf9fULnqqquuuuqqq/7fuO+++25dr9dcddVVV1111VVXXXXVVf9vULnqqquuuuqqq6666qqr/l+57777buWqq6666qqrrvr/gspVV1111VVXXfX/xtmzZ28dhoGrrrrq/7ezZ8/eylVXXXXVVVdd9f8Flauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111f8b9913363DMHDVVVf9/3bffffdylVXXXXVVVdd9f8Flauuuuqqq6666qqrrrrqqquuuuqqq6666v8qgquuuuqqq6666v+V++6779ZhGLjqqqv+/xmGgfvuu+9Wrrrqqquuuuqq/08Irrrqqquuuuqq/1fOnj1763q95qqrrvr/ZxgGzp49eytXXXXVVVddddX/J1Suuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VX/r9x33323DsPAVVdd9f/Per3mvvvuu5Wrrrrqqquuuur/EypXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qr/V+67775bh2Hgqquu+v9nGAbuu+++W7nqqquuuuqqq/4/oXLVVVddddVVV1111VVX/b9w9913c/bs2Wdw1VVXXXXVVVf9f0Llqquuuuqqq676f+Xs2bPPGIaBq6666qqrrrrqqquuuur/BSpXXXXVVVddddX/K/fdd9+t6/Waq6666qqrrrrqqquuuur/BSpXXXXVVVddddVVV1111f8b9913361cddVVV1111VX/n1C56qqrrrrqqqv+Xzl79uytwzBw1VVX/f909uzZW7nqqquuuuqqq/4/oXLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrvp/5b777rt1GAauuuqq/5/uu+++W7nqqquuuuqqq/4/Ibjqqquuuuqqq/5fGoaBq6666qqrrrrqqquuuur/PIKrrrrqqquuuur/nfvuu+9Wrrrqqv9XhmHg7Nmzz+Cqq6666qqrrvr/huCqq6666qqrrvp/57777rt1vV5z1VVX/f+xXq+57777buWqq6666qqrrvr/hspVV1111VVXXXXVVVdd9X/eMAzcd999t3LVVVddddVVV/1/Q+Wqq6666qqrrvp/5+zZs7cOw8BVV1111VVXXXXVVVdd9X8elauuuuqqq6666v+d++6779ZhGLjqqquuuuqqq6666qqr/s+jctVVV1111VVXXXXVVVf9n/eMZzyD++677+lcddVVV1111VX/31C56qqrrrrqqquuuuqqq/5fOHv27DO46qqrrrrqqqv+v6Fy1VVXXXXVVVf9v3P27Nlbh2Hgqquuuuqqq6666qqrrvo/j8pVV1111VVXXfX/zn333Xfrer3mqquu+v/l7Nmzt3LVVVddddVVV/1/Q+Wqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXfX/zn333XfrMAxcddVV/7/cd999t3LVVVddddVVV/1/Q+Wqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXfX/ztmzZ58xDANXXXXV/y/33XffrVx11VVXXXXVVf/fEFx11VVXXXXVVf8v3XfffbcOw8BVV1111VVXXXXVVVdd9X8alauuuuqqq6666qqrrrrq/7RhGLjvvvtu5aqrrrrqqquu+v+I4Kqrrrrqqquu+n/p7Nmzt67Xa6666qr/+9brNWfPnr2Vq6666qqrrrrq/yMqV1111VVXXXXVVVddddX/acMwcN99993KVVddddVVV131/xGVq6666qqrrrrq/6X77rvv1mEYuOqqq6666qqrrrrqqqv+T6Ny1VVXXXXVVVf9v3TffffdOgwDV1111VVXXXXVVVddddX/aVSuuuqqq6666qqrrrrqqv/TnvGMZ3DffffdylVXXXXVVVdd9f8Rlauuuuqqq6666v+ls2fPPmMYBq666qr/H86ePfsMrrrqqquuuuqq/4+oXHXVVVddddVV/y/dd999t67Xa6666qqrrrrqqquuuuqq/9OoXHXVVVddddVVV1111VX/59133323ctVVV1111VVX/X9E5aqrrrrqqquuuuqqq676P+/s2bO3ctVVV1111VVX/X9E5aqrrrrqqquu+n/p7Nmztw7DwFVXXXXVVVddddVVV131fxqVq6666qqrrrrqqquuuur/vPvuu+9Wrrrqqquuuuqq/4+oXHXVVVddddVV/y/dd999tw7DwFVXXXXVVVddddVVV131fxrBVVddddVVV131/9Z999136zAMXHXVVVddddVVV1111VX/ZxFcddVVV1111VX/r63Xa6666qr/u4Zh4L777ruVq6666qqrrrrq/yuCq6666qqrrrrq/62zZ8/eylVXXfV/2nq95uzZs7dy1VVXXXXVVVf9f0Xlqquuuuqqq6666qqrrvo/axgG7rvvvlu56qqrrrrqqqv+v6Jy1VVXXXXVVVf9v3XffffdOgwDV1111VVXXXXVVVddddX/WVSuuuqqq6666qr/t+67775bh2Hgqquu+r9rGAbuu+++W7nqqquuuuqqq/6/onLVVVddddVVV1111VVX/Z919913c9VVV1111VVX/b9G5aqrrrrqqquu+n/r7NmzzxiGgauuuur/trNnzz6Dq6666qqrrrrq/ysqV1111VVXXXXV/1v33Xffrev1mquuuuqqq6666qqrrrrq/ywqV1111VVXXXXVVVddddX/affdd9+tXHXVVVddddVV/19Rueqqq6666qqr/t86e/bsrcMwcNVVV/3fdvbs2Vu56qqrrrrqqqv+v6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrvo/7b777ruVq6666qqrrrrq/ysqV1111VVXXXXV/1v33XffrcMwcNVVV1111VVXXXXVVVf9n0Vw1VVXXXXVVVf9v3bffffdOgwDV1111f89wzBw33333cpVV1111VVXXfX/GcFVV1111VVXXfX/2tmzZ29dr9dcddVVV1111VVXXXXVVf8nUbnqqquuuuqqq6666qqr/k9ar9ecPXv2Vq666qqrrrrqqv/PqFx11VVXXXXVVVddddVV/ycNw8B99913K1ddddVVV1111f9nVK666qqrrrrqqv/X7rvvvluHYeCqq6666qqrrrrqqquu+j+JylVXXXXVVVdd9f/afffdd+swDFx11VX/9wzDwH333XcrV1111VVXXXXV/2dUrrrqqquuuuqqq6666qr/k+6++26uuuqqq6666qr/96hcddVVV1111VX/r509e/YZwzBw1VVX/d909uzZZ3DVVVddddVVV/1/RuWqq6666qqrrvp/7b777rt1vV5z1VVXXXXVVVddddVVV/2fROWqq6666qqrrrrqqquu+j/rvvvuu5Wrrrrqqquuuur/MypXXXXVVVddddX/a2fPnr11GAauuuqq/5vOnj17K1ddddVVV1111f9nVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVf+v3XfffbcOw8BVV131f9N99913K1ddddVVV1111f9nVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rCK666qqrrrrqqv/37rvvvluHYeCqq676v2MYBu67775bueqqq6666qqr/r8juOqqq6666qqr/t87e/bsrev1mquuuur/jmEYOHv27K1cddVVV1111VX/31G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddBQzDwFVXXfV/x3q95r777ruVq6666qqrrrrq/zsqV1111VVXXXXV/3v33XffrVx11VVXXXXVVVddddVV/xdRueqqq6666qqr/t+77777bh2Ggauuuur/jmEYuO+++27lqquuuuqqq676/47KVVddddVVV1111VVXXfV/zt13381VV1111VVXXXUVQOWqq6666qqrrvp/7+zZs88YhoGrrrrq/5azZ88+g6uuuuqqq6666v87KlddddVVV1111f979913363r9Zqrrrrqqquuuuqqq6666v8cKlddddVVV1111VVXXXXV/0n33XffrVx11VVXXXXVVf/fUbnqqquuuuqqq/7fO3v27K3DMHDVVVf933L27Nlbueqqq6666qqr/r+jctVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquu+n/vvvvuu3UYBq666qr/W+67775bueqqq6666qqr/r+jctVVV1111VVXXXXVVVddddVVV1111VVX/V9FcNVVV1111VVXXQXcd999tw7DwFVXXfW/3zAMnD179hlcddVVV1111VVXAcFVV1111VVXXXUVcN999926Xq+56qqr/vdbr9fcd999t3LVVVddddVVV10FVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVcBZ8+evXUYBq666qr//YZh4L777ruVq6666qqrrrrqKqBy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq666CrjvvvtuHYaBq6666n+/YRi47777ns5VV1111VVXXXUVULnqqquuuuqqq6666qqr/k+5++67OXv27DO46qqrrrrqqquuAipXXXXVVVddddVVwNmzZ28dhoGrrrrqqquuuuqqq6666v8UKlddddVVV1111VXAfffdd+t6veaqq6666qqrrrrqqquu+j+FylVXXXXVVVddddVVV131f87Zs2dv5aqrrrrqqquuugqoXHXVVVddddVVVwH33XffrcMwcNVVV/3fcN99993KVVddddVVV111FVC56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddBZw9e/YZwzBw1VVX/d9w33333cpVV1111VVXXXUVEFx11VVXXXXVVVc9wDAMXHXVVVddddVVV1111VX/ZxBcddVVV1111VVXPdN99913K1ddddX/asMwcN99993KVVddddVVV1111RUEV1111VVXXXXVVc909uzZW9frNVddddX/Xuv1mrNnz97KVVddddVVV1111RVUrrrqqquuuuqqq6666qr/M4Zh4L777ruVq6666qqrrrrqqiuoXHXVVVddddVVVz3Tfffdd+swDFx11VVXXXXVVVddddVV/2dQueqqq6666qqrrnqm++6779ZhGLjqqquuuuqqq6666qqr/s+gctVVV1111VVXXXXVVVf9n/GMZzyD++6771auuuqqq6666qqrrqBy1VVXXXXVVVddddVVV/2fcvbs2Wdw1VVXXXXVVVdddQWVq6666qqrrrrqqmc6e/bsM4Zh4Kqrrrrqqquuuuqqq676P4PKVVddddVVV1111TPdd999t67Xa6666qr/3e67775bueqqq6666qqrrrqCylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qpnOnv27K3DMHDVVVf973b27Nlbueqqq6666qqrrrqCylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qpnuu+++24dhoGrrrrqf7f77rvvVq666qqrrrrqqquuILjqqquuuuqqq656gPvuu+/WYRi46qqrrrrqqquuuuqqq/5PoHLVVVddddVVV1111VVX/Z8wDAP33XffrVx11VVXXXXVVVc9G8FVV1111VVXXXXVA5w9e/bW9XrNVVdd9b/Per3m7Nmzt3LVVVddddVVV131bFSuuuqqq6666qqrrrrqqv8ThmHgvvvuu5WrrrrqqquuuuqqZ6Ny1VVXXXXVVVdd9QD33XffrcMwcNVVV1111VVXXXXVVVf9n0Dlqquuuuqqq6666gHuu+++W4dh4Kqrrrrqqquuuuqqq676P4HKVVddddVVV1111VVXXfV/wjOe8Qzuu+++W7nqqquuuuqqq656NipXXXXVVVddddVVD3D27NlnDMPAVVdd9b/T2bNnn8FVV1111VVXXXXVs1G56qqrrrrqqquueoD77rvv1vV6zVVXXXXVVVddddVVV131fwKVq6666qqrrrrqqquuuur/jPvuu+9Wrrrqqquuuuqqq56NylVXXXXVVVddddVVV131f8bZs2dv5aqrrrrqqquuuurZqFx11VVXXXXVVVc9wNmzZ28dhoGrrrrqqquuuuqqq6666v8EKlddddVVV1111VVXXXXV/xn33XffrVx11VVXXXXVVVc9G5WrrrrqqquuuuqqB7jvvvtuHYaBq6666qqrrrrqqquuuur/BIKrrrrqqquuuuqq53LffffdOgwDV1111VVXXXXVVVddddX/egRXXXXVVVddddVVz8d6veaqq67632MYBu67775bueqqq6666qqrrnpOBFddddVVV1111VXP5ezZs7dy1VVX/a+yXq85e/bsrVx11VVXXXXVVVc9JypXXXXVVVddddVVV1111f96wzBw33333cpVV1111VVXXXXVc6Jy1VVXXXXVVVdd9Vzuu+++W4dh4Kqrrrrqqquuuuqqq676X4/KVVddddVVV1111XO57777bh2Ggauuuup/j2EYuO+++27lqquuuuqqq6666jlRueqqq6666qqrrrrqqqv+17v77ru56qqrrrrqqquuej4Irrrqqquuuuqqq57L2bNnn3H33Xdz1VVX/e9y9uzZZ3DVVVddddVVV131nKhcddVVV1111VVXPZd/+Id/+O0f+ZEf+Wzgs7nqqqv+V/iRH/mRz/6Hf/iH3+aqq6666qqrrrrqOaEHPehBXHXVVVddddVVVz23a6655sG2LUk8gG1LEg9g25LEA9i2JPEAti1JPIBtSxIPYNuSxAPYtiTxALYtSTyAbUsSD2DbksQD2LYk8QC2LUk8gG1LEg9g25LEA9i2JPEAti1JPIBtSxIPYNuSxAPYtiTxALYtSTyAbUsSD2DbksQD2LYk8QC2LUk8gG1LEg9g25LEA9i2JPEAti1JPIBtSxIPYNuSxAPYtiTxALYtSTyAbUsSD2DbksQD2LYk8QC2LUk8gG1LEg9g25LEA9i2JPEAti1JPIBtSxIPYNuSxAPYtiTxALYtSTyAbUsSD2DbksQD2PbZs2efwVVXXXXVVVddddXzQg960IO46qqrrrrqqquuuuqqq6666qqrrrrqqqv+T6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X8U/ApI1TtC683z4AAAAAElFTkSuQmCC) - - diff --git a/docs/kcl/inch.md b/docs/kcl/inch.md deleted file mode 100644 index 818455635..000000000 --- a/docs/kcl/inch.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "inch" -excerpt: "Inches conversion factor for current projects units." -layout: manual ---- - -Inches conversion factor for current projects units. - -No matter what units the current project uses, this function will always return the conversion factor to inches. - -For example, if the current project uses inches, this function will return `1`. If the current project uses millimeters, this function will return `25.4`. - -**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function. - -We merely provide these functions for convenience and readability, as `10 * inch()` is more readable that your intent is "I want 10 inches" than `10 * 25.4`, if the project settings are in millimeters. - -```js -inch(): number -``` - -### Tags - -* `units` - - - -### Returns - -[`number`](/docs/kcl/types/number) - - -### Examples - -```js -totalWidth = 10 * inch() -``` - -![Rendered example of inch 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABMiklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V/FPwKn4gueWQqZ4gAAAABJRU5ErkJggg==) - - diff --git a/docs/kcl/index.md b/docs/kcl/index.md index 832acc4a2..ccdfb68a4 100644 --- a/docs/kcl/index.md +++ b/docs/kcl/index.md @@ -24,12 +24,14 @@ layout: manual * **std** * [`Axis2d`](kcl/types/Axis2d) * [`Axis3d`](kcl/types/Axis3d) + * [`END`](kcl/consts/std-END) * [`Edge`](kcl/types/Edge) * [`Face`](kcl/types/Face) * [`Helix`](kcl/types/Helix) * [`Plane`](kcl/types/Plane) * [`Point2d`](kcl/types/Point2d) * [`Point3d`](kcl/types/Point3d) + * [`START`](kcl/consts/std-START) * [`Sketch`](kcl/types/Sketch) * [`Solid`](kcl/types/Solid) * [`X`](kcl/consts/std-X) @@ -43,11 +45,7 @@ layout: manual * [`angleToMatchLengthX`](kcl/angleToMatchLengthX) * [`angleToMatchLengthY`](kcl/angleToMatchLengthY) * [`angledLine`](kcl/angledLine) - * [`angledLineOfXLength`](kcl/angledLineOfXLength) - * [`angledLineOfYLength`](kcl/angledLineOfYLength) * [`angledLineThatIntersects`](kcl/angledLineThatIntersects) - * [`angledLineToX`](kcl/angledLineToX) - * [`angledLineToY`](kcl/angledLineToY) * [`appearance`](kcl/appearance) * [`arc`](kcl/arc) * [`arcTo`](kcl/arcTo) @@ -65,11 +63,15 @@ layout: manual * [`chamfer`](kcl/chamfer) * [`circleThreePoint`](kcl/circleThreePoint) * [`close`](kcl/close) - * [`cm`](kcl/cm) * [`extrude`](kcl/extrude) * [`fillet`](kcl/fillet) * [`floor`](kcl/floor) - * [`ft`](kcl/ft) + * [`fromCm`](kcl/fromCm) + * [`fromFt`](kcl/fromFt) + * [`fromInches`](kcl/fromInches) + * [`fromM`](kcl/fromM) + * [`fromMm`](kcl/fromMm) + * [`fromYd`](kcl/fromYd) * [`getCommonEdge`](kcl/getCommonEdge) * [`getNextAdjacentEdge`](kcl/getNextAdjacentEdge) * [`getOppositeEdge`](kcl/getOppositeEdge) @@ -77,7 +79,8 @@ layout: manual * [`helix`](kcl/std-helix) * [`hole`](kcl/hole) * [`hollow`](kcl/hollow) - * [`inch`](kcl/inch) + * [`intersect`](kcl/intersect) + * [`involuteCircular`](kcl/involuteCircular) * [`lastSegX`](kcl/lastSegX) * [`lastSegY`](kcl/lastSegY) * [`legAngX`](kcl/legAngX) @@ -89,11 +92,9 @@ layout: manual * [`log`](kcl/log) * [`log10`](kcl/log10) * [`log2`](kcl/log2) - * [`m`](kcl/m) * [`map`](kcl/map) * [`max`](kcl/max) * [`min`](kcl/min) - * [`mm`](kcl/mm) * [`offsetPlane`](kcl/offsetPlane) * [`patternCircular2d`](kcl/patternCircular2d) * [`patternCircular3d`](kcl/patternCircular3d) @@ -101,7 +102,6 @@ layout: manual * [`patternLinear3d`](kcl/patternLinear3d) * [`patternTransform`](kcl/patternTransform) * [`patternTransform2d`](kcl/patternTransform2d) - * [`polar`](kcl/polar) * [`polygon`](kcl/polygon) * [`pop`](kcl/pop) * [`pow`](kcl/pow) @@ -127,22 +127,22 @@ layout: manual * [`sqrt`](kcl/sqrt) * [`startProfileAt`](kcl/startProfileAt) * [`startSketchOn`](kcl/startSketchOn) + * [`subtract`](kcl/subtract) * [`sweep`](kcl/sweep) * [`tangentToEnd`](kcl/tangentToEnd) * [`tangentialArc`](kcl/tangentialArc) - * [`tangentialArcTo`](kcl/tangentialArcTo) - * [`tangentialArcToRelative`](kcl/tangentialArcToRelative) * [`toDegrees`](kcl/toDegrees) * [`toRadians`](kcl/toRadians) * [`translate`](kcl/translate) + * [`union`](kcl/union) * [`xLine`](kcl/xLine) * [`yLine`](kcl/yLine) - * [`yd`](kcl/yd) * **std::math** * [`E`](kcl/consts/std-math-E) * [`PI`](kcl/consts/std-math-PI) * [`TAU`](kcl/consts/std-math-TAU) * [`cos`](kcl/std-math-cos) + * [`polar`](kcl/std-math-polar) * [`sin`](kcl/std-math-sin) * [`tan`](kcl/std-math-tan) * **std::sketch** diff --git a/docs/kcl/intersect.md b/docs/kcl/intersect.md index 9f8d35873..26c0e9c67 100644 --- a/docs/kcl/intersect.md +++ b/docs/kcl/intersect.md @@ -4,14 +4,15 @@ excerpt: "Intersect returns the shared volume between multiple solids, preservin layout: manual --- -**WARNING:** This function is deprecated. - Intersect returns the shared volume between multiple solids, preserving only overlapping regions. Intersect computes the geometric intersection of multiple solid bodies, returning a new solid representing the volume that is common to all input solids. This operation is useful for determining shared material regions, verifying fit, and analyzing overlapping geometries in assemblies. ```js -intersect(solids: [Solid]): [Solid] +intersect( + solids: [Solid], + tolerance?: number, +): [Solid] ``` @@ -20,6 +21,7 @@ intersect(solids: [Solid]): [Solid] | Name | Type | Description | Required | |----------|------|-------------|----------| | `solids` | [`[Solid]`](/docs/kcl/types/Solid) | The solids to intersect. | Yes | +| `tolerance` | [`number`](/docs/kcl/types/number) | The tolerance to use for the intersection operation. | No | ### Returns @@ -32,23 +34,24 @@ intersect(solids: [Solid]): [Solid] // Intersect two cubes using the stdlib functions. -fn cube(center) { +fn cube(center, size) { return startSketchOn(XY) - |> startProfileAt([center[0] - 10, center[1] - 10], %) - |> line(endAbsolute = [center[0] + 10, center[1] - 10]) - |> line(endAbsolute = [center[0] + 10, center[1] + 10]) - |> line(endAbsolute = [center[0] - 10, center[1] + 10]) + |> startProfileAt([center[0] - size, center[1] - size], %) + |> line(endAbsolute = [center[0] + size, center[1] - size]) + |> line(endAbsolute = [center[0] + size, center[1] + size]) + |> line(endAbsolute = [center[0] - size, center[1] + size]) |> close() |> extrude(length = 10) } -part001 = cube([0, 0]) -part002 = cube([8, 8]) +part001 = cube([0, 0], 10) +part002 = cube([7, 3], 5) + |> translate(z = 1) intersectedPart = intersect([part001, part002]) ``` -![Rendered example of intersect 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEMl0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VX/S1xzzTUPfrEXe7HXfsd3fMfP4qqrrrrqX3D27Nlbf+RHfuRz/uEf/uG3ueqqq6666qr/v9CDHvQgrrrqqquuuuqqq/43+PAP//Dvep3XeZ33vnDhAlddddVV/5KTJ09y33333fr1X//17/MP//APv81VV1111VVX/f9E5aqrrrrqqquuuup/iRd7sRd7bYBv/MZv5MKFC/xPZJur/veyzf9HtvnfzjbP7U3e5E14kzd5kwd/+Id/+Hd9yId8yEO46qqrrrrqqv+fCK666qqrrrrqqqv+F3ixF3ux177mmmseDHDhwgX+p5KEJCQhCUlIQhKSkIQkJCEJ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993KVVddddVVV131/x2Vq6666qqr/tucPXv2VoBjx47xX8E295PEfyXb3E8S/x1s80CS+J/CNs+PJP63ss0LI4mrrvrvZpv/i3Z2dgA4e/bsrVx11VVXXXXVVf/fUbnqqquuuuq/zX333XcrwM7ODtvb2+zt7QEgif9stnkgSfxXsc0DSeK/g20eSBL/09jmuUni/wLb/EskcdVV/1a2+f/ANlddddVVV1111VUvBMFVV1111VX/rf7hH/7htwGOHTvG/WxjG9v8V7GNbWzzX802trHNfyfb2MY2trHN/0S2sY1tbGOb/6tsYxvb2MY2trGNbWxjG9tc9f+HbWxjG9vYxja2sY1tbPN/kW1sYxvb2Ob52dnZAeC+++67lauuuuqqq6666v87gquuuuqqq/5b/f3f//1vA9x00008P7axjW3+q9jGNrb5r2Yb29jGNv/dbGMb29jmfyrb2MY2trGNbf4/sY1tbGMb29jGNraxjW1sY5ur/mewjW1sYxvb2MY2trGNbWxjG9v8f2Ab29jGNraxzVVXXXXVVVddddW/AZWrrrrqqqv+Rzh27Bj/EtvcTxL/FWxzP0n8V7PNA0niv5NtHkgS/5PZ5vmRxP93tvn3ksT/Z7a56t/HNv/RdnZ2ADh79uwzuOqqq6666qqrrgIqV1111VVX/bf6h3/4h98B2NnZ4V/DNveTxH8F2zyQJP6r2eZ+kvjvZpvnJon/6WzzgkjiqheNba666l9im/9KOzs7XHXVVVddddVVVz0Alauuuuqqq/5bnT179laAY8eO8W9lm/tJ4r+Kbe4nif9qtnkgSfxPYJvnJon/LWzzgkjiqquuev5s8z/JfffddytXXXXVVVddddVVQHDVVVddddV/q/vuu+/W++6779adnR2OHTvGv5dtbGOb/0q2sY1t/rvYxja2sc3/JLaxjW1sY5v/jWxjG9vYxja2sc1VV/1fZxvb2MY2trGNbWzzP8XOzg4A9913361cddVVV1111VVXAcFVV1111VX/7c6ePXsrwM7ODv+RbGMb2/xXso1tbGOb/y62sY1tbPM/jW1sYxvb2OZ/M9vYxja2sY1tbGObq676n842trGNbWxjG9vY5qqrrrrqqquuuup/KYKrrrrqqqv+2/393//9bwPcdNNN/GexjW1s81/NNraxzX8n29jGNrb5n8g2trGNbWzz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/xPb2MY2trGNbe537NgxAM6ePXsrV1111VVXXXXVVVdQueqqq6666n+Uf/iHf/gd/pPZ5n6S+O9gmweSxH832zw3SfxPZ5vnRxJXgW3+PSRx1b+Oba7697HNVVddddVVV1111X8QKlddddVVV/2Pcvbs2VsBdnZ2+K9gmweSxH8H2zyQJP4nsM1zk8T/BrZ5QSRx1YvGNldd9Z/FNv+RdnZ2ALjvvvtu5aqrrrrqqquuuuoKgquuuuqqq/5Hue+++2697777bj127Bg7Ozv8V7ONbWzz38k2trGNbf4nsY1tbGOb/41sYxvb2MY2trHNVVdd9R/LNraxjW1sYxvbXHXVVVddddVVV/0XILjqqquuuup/nLNnz94KsLOzg21sY5v/araxjW3+u9nGNraxzf8ktrGNbWxjm//NbGMb29jGNraxzVVXXfX82cY2trGNbWxjm/8qOzs7ANx33323ctVVV1111VVXXfVsBFddddVVV/2P8/d///e/DXDLLbfwQLaxjW3+q9nGNraxzX8329jGNrb5n8Y2trGNbWzzf4FtbGMb29jGNraxzVVX/V9lG9vYxja2sY1tbPM/wc7ODgBnz569lauuuuqqq6666qpno3LVVVddddX/OGfPnn0GwM0338wLYpv7SeK/mm0eSBL/nWzzQJL4n8Y2z48k/q+wzQsjiauu+p/GNlddddVVV1111VX/h1G56qqrrrrqf5z77rvvVv4VbHM/Sfx3sM39JPHfzTYPJIn/qWzz3CTxf5FtXhSSuOqq/wi2+f/i2LFjANx33323ctVVV1111VVXXfVsVK666qqrrvof5+zZs7cCHDt2jJtvvpl/D0n8d5PE/zSSuOr/Bklc9f+Lba56Xtvb21x11VVXXXXVVVc9H1Suuuqqq676H+e+++679R/+4R9++8Ve7MVe+13e5V246qqrrrrqqhfFfffdd+s//MM//A5XXXXVVVddddVVz4Ye9KAHcdVVV1111f9MH/7hH/5d11xzzYO56qqrrrrqqhfBb/3Wb33Pb/3Wb303V1111VVXXXXVVc+GHvSgB3HVVVddddVVV1111VVXXXXVVVddddVVV/2fROWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V/GPg3Jg1dcXJrQAAAAASUVORK5CYII=) +![Rendered example of intersect 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADp3klEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqr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8QC2LUk8gG1LEsB99913K1ddddVVV1111X839KAHPYirrrrqqquuuuqqq6666qqrrrrqqquuuur/JCpXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6v4h8BFD2pVy4m/KoAAAAASUVORK5CYII=) ```js // Intersect two cubes using operators. @@ -56,23 +59,24 @@ intersectedPart = intersect([part001, part002]) // Codemods will generate the stdlib function call instead. -fn cube(center) { +fn cube(center, size) { return startSketchOn(XY) - |> startProfileAt([center[0] - 10, center[1] - 10], %) - |> line(endAbsolute = [center[0] + 10, center[1] - 10]) - |> line(endAbsolute = [center[0] + 10, center[1] + 10]) - |> line(endAbsolute = [center[0] - 10, center[1] + 10]) + |> startProfileAt([center[0] - size, center[1] - size], %) + |> line(endAbsolute = [center[0] + size, center[1] - size]) + |> line(endAbsolute = [center[0] + size, center[1] + size]) + |> line(endAbsolute = [center[0] - size, center[1] + size]) |> close() |> extrude(length = 10) } -part001 = cube([0, 0]) -part002 = cube([8, 8]) +part001 = cube([0, 0], 10) +part002 = cube([7, 3], 5) + |> translate(z = 1) // This is the equivalent of: intersect([part001, part002]) intersectedPart = part001 & part002 ``` -![Rendered example of intersect 1](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEMl0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VX/S1xzzTUPfrEXe7HXfsd3fMfP4qqrrrrqX3D27Nlbf+RHfuRz/uEf/uG3ueqqq6666qr/v9CDHvQgrrrqqquuuuqqq/43+PAP//Dvep3XeZ33vnDhAlddddVV/5KTJ09y33333fr1X//17/MP//APv81VV1111VVX/f9E5aqrrrrqqquuuup/iRd7sRd7bYBv/MZv5MKFC/xPZJur/veyzf9HtvnfzjbP7U3e5E14kzd5kwd/+Id/+Hd9yId8yEO46qqrrrrqqv+fCK666qqrrrrqqqv+F3ixF3ux177mmmseDHDhwgX+p5KEJCQhCUlIQhKSkIQkJCEJ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993KVVddddVVV131/x2Vq6666qqr/tucPXv2VoBjx47xX8E295PEfyXb3E8S/x1s80CS+J/CNs+PJP63ss0LI4mrrvrvZpv/i3Z2dgA4e/bsrVx11VVXXXXVVf/fUbnqqquuuuq/zX333XcrwM7ODtvb2+zt7QEgif9stnkgSfxXsc0DSeK/g20eSBL/09jmuUni/wLb/EskcdVV/1a2+f/ANlddddVVV1111VUvBMFVV1111VX/rf7hH/7htwGOHTvG/WxjG9v8V7GNbWzzX802trHNfyfb2MY2trHN/0S2sY1tbGOb/6tsYxvb2MY2trGNbWxjG9tc9f+HbWxjG9vYxja2sY1tbPN/kW1sYxvb2Ob52dnZAeC+++67lauuuuqqq6666v87gquuuuqqq/5b/f3f//1vA9x00008P7axjW3+q9jGNrb5r2Yb29jGNv/dbGMb29jmfyrb2MY2trGNbf4/sY1tbGMb29jGNraxjW1sY5ur/mewjW1sYxvb2MY2trGNbWxjG9v8f2Ab29jGNraxzVVXXXXVVVddddW/AZWrrrrqqqv+Rzh27Bj/EtvcTxL/FWxzP0n8V7PNA0niv5NtHkgS/5PZ5vmRxP93tvn3ksT/Z7a56t/HNv/RdnZ2ADh79uwzuOqqq6666qqrrgIqV1111VVX/bf6h3/4h98B2NnZ4V/DNveTxH8F2zyQJP6r2eZ+kvjvZpvnJon/6WzzgkjiqheNba666l9im/9KOzs7XHXVVVddddVVVz0Alauuuuqqq/5bnT179laAY8eO8W9lm/tJ4r+Kbe4nif9qtnkgSfxPYJvnJon/LWzzgkjiqquuev5s8z/JfffddytXXXXVVVddddVVQHDVVVddddV/q/vuu+/W++6779adnR2OHTvGv5dtbGOb/0q2sY1t/rvYxja2sc3/JLaxjW1sY5v/jWxjG9vYxja2sc1VV/1fZxvb2MY2trGNbWzzP8XOzg4A9913361cddVVV1111VVXAcFVV1111VX/7c6ePXsrwM7ODv+RbGMb2/xXso1tbGOb/y62sY1tbPM/jW1sYxvb2OZ/M9vYxja2sY1tbGObq676n842trGNbWxjG9vY5qqrrrrqqquuuup/KYKrrrrqqqv+2/393//9bwPcdNNN/GexjW1s81/NNraxzX8n29jGNrb5n8g2trGNbWzz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/xPb2MY2trGNbe537NgxAM6ePXsrV1111VVXXXXVVVdQueqqq6666n+Uf/iHf/gd/pPZ5n6S+O9gmweSxH832zw3SfxPZ5vnRxJXgW3+PSRx1b+Oba7697HNVVddddVVV1111X8QKlddddVVV/2Pcvbs2VsBdnZ2+K9gmweSxH8H2zyQJP4nsM1zk8T/BrZ5QSRx1YvGNldd9Z/FNv+RdnZ2ALjvvvtu5aqrrrrqqquuuuoKgquuuuqqq/5Hue+++2697777bj127Bg7Ozv8V7ONbWzz38k2trGNbf4nsY1tbGOb/41sYxvb2MY2trHNVVdd9R/LNraxjW1sYxvbXHXVVVddddVVV/0XILjqqquuuup/nLNnz94KsLOzg21sY5v/araxjW3+u9nGNraxzf8ktrGNbWxjm//NbGMb29jGNraxzVVXXfX82cY2trGNbWxjm/8qOzs7ANx33323ctVVV1111VVXXfVsBFddddVVV/2P8/d///e/DXDLLbfwQLaxjW3+q9nGNraxzX8329jGNrb5n8Y2trGNbWzzf4FtbGMb29jGNraxzVVX/V9lG9vYxja2sY1tbPM/wc7ODgBnz569lauuuuqqq6666qpno3LVVVddddX/OGfPnn0GwM0338wLYpv7SeK/mm0eSBL/nWzzQJL4n8Y2z48k/q+wzQsjiauu+p/GNlddddVVV1111VX/h1G56qqrrrrqf5z77rvvVv4VbHM/Sfx3sM39JPHfzTYPJIn/qWzz3CTxf5FtXhSSuOqq/wi2+f/i2LFjANx33323ctVVV1111VVXXfVsVK666qqrrvof5+zZs7cCHDt2jJtvvpl/D0n8d5PE/zSSuOr/Bklc9f+Lba56Xtvb21x11VVXXXXVVVc9H1Suuuqqq676H+e+++679R/+4R9++8Ve7MVe+13e5V246qqrrrrqqhfFfffdd+s//MM//A5XXXXVVVddddVVz4Ye9KAHcdVVV1111f9MH/7hH/5d11xzzYO56qqrrrrqqhfBb/3Wb33Pb/3Wb303V1111VVXXXXVVc+GHvSgB3HVVVddddVVV1111VVXXXXVVVddddVVV/2fROWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V/GPg3Jg1dcXJrQAAAAASUVORK5CYII=) +![Rendered example of intersect 1](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADp3klEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqr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8QC2LUk8gG1LEsB99913K1ddddVVV1111X839KAHPYirrrrqqquuuuqqq6666qqrrrrqqquuuur/JCpXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6v4h8BFD2pVy4m/KoAAAAASUVORK5CYII=) diff --git a/docs/kcl/involuteCircular.md b/docs/kcl/involuteCircular.md new file mode 100644 index 000000000..72ec5516d --- /dev/null +++ b/docs/kcl/involuteCircular.md @@ -0,0 +1,57 @@ +--- +title: "involuteCircular" +excerpt: "Extend the current sketch with a new involute circular curve." +layout: manual +--- + +Extend the current sketch with a new involute circular curve. + + + +```js +involuteCircular( + sketch: Sketch, + startRadius: number, + endRadius: number, + angle: number, + reverse?: bool, + tag?: TagDeclarator, +): Sketch +``` + + +### Arguments + +| Name | Type | Description | Required | +|----------|------|-------------|----------| +| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes | +| `startRadius` | [`number`](/docs/kcl/types/number) | The involute is described between two circles, start_radius is the radius of the inner circle. | Yes | +| `endRadius` | [`number`](/docs/kcl/types/number) | The involute is described between two circles, end_radius is the radius of the outer circle. | Yes | +| `angle` | [`number`](/docs/kcl/types/number) | The angle to rotate the involute by. A value of zero will produce a curve with a tangent along the x-axis at the start point of the curve. | Yes | +| `reverse` | [`bool`](/docs/kcl/types/bool) | If reverse is true, the segment will start from the end of the involute, otherwise it will start from that start. Defaults to false. | No | +| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this line | No | + +### Returns + +[`Sketch`](/docs/kcl/types/Sketch) + + +### Examples + +```js +a = 10 +b = 14 +startSketchOn(XZ) + |> startProfileAt([0, 0], %) + |> involuteCircular(startRadius = a, endRadius = b, angle = 60) + |> involuteCircular( + startRadius = a, + endRadius = b, + angle = 60, + reverse = true, + ) +``` + +![Rendered example of involuteCircular 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABu4klEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqv9g111zz4Bd7sRd7bZ7Lfffdd+s//MM//DZXXXXVVVddddVVV1111X8UKlddddVVV1111VX/xV77tV/7vd7pnd7ps3kuP/IjP/LZ//AP//DbXHXVVVddddVVV1111VX/UahcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111X+xs2fPPuO3fuu3vptnep3XeZ33Bjh79uwzuOqqq6666qqrrrrqqqv+I1G56qqrrrrqqquu+i/2W7/1W9/9W7/1W9/NA7zO67zOe7/Yi73Ya/3Wb/3Wd3PVVVddddVVV1111VVX/UchuOqqq6666qqrrvpv9qM/+qOfA/BiL/Zir/1iL/Zir81VV1111VVXXXXVVVdd9R+F4Kqrrrrqqquuuuq/2X333XfrP/zDP/z2Nddc8+DXeZ3XeS+uuuqqq6666qqrrrrqqv8oBFddddVVV1111VX/A/zIj/zI5wC82Iu92Gtz1VVXXXXVVVddddVVV/1HIbjqqquuuuqqq676H+Af/uEffvsf/uEffvuaa6558Iu92Iu9NlddddVVV1111VVXXXXVfwSCq6666qqrrrrqqv8hfuu3fut7AN7pnd7ps7jqqquuuuqqq6666qqr/iMQXHXVVVddddVVV/0P8Q//8A+/DfBiL/Zir/1iL/Zir81VV1111VVXXXXVVVdd9e9FcNVVV1111VVXXfU/xH333Xfrb/3Wb303wIu92Iu9FlddddVVV1111VVXXXXVvxfBVVddddVVV1111f8gv/Vbv/U9AK/zOq/z3lx11VVXXXXVVVddddVV/14EV1111VVXXXXVVf+DnD179laAa6655sEv9mIv9tpcddVVV1111VVXXXXVVf8eBFddddVVV1111VX/g9x33323/tZv/dZ3A7zYi73Ya3HVVVddddVVV1111VVX/XsQXHXVVVddddVVV/0P81u/9VvfA/A6r/M6781VV1111VVXXXXVVVdd9e9BcNVVV1111VVXXfU/zNmzZ28FuOaaax78Yi/2Yq/NVVddddVVV1111VVXXfVvRXDVVVddddVVV131P8x9991362/91m99N8CLvdiLvRZXXXXVVVddddVVV1111b8VwVVXXXXVVVddddX/QL/1W7/1PQCv8zqv895cddVVV1111VVXXXXVVf9WBFddddVVV1111VX/A509e/ZWgGuuuebBL/ZiL/baXHXVVVddddVVV1111VX/FgRXXXXVVVddddVV/wPdd999t/7DP/zDbwO82Iu92Gtx1VVXXXXVVVddddVVV/1bEFx11VVXXXXVVVf9D/UjP/IjnwPw4i/+4q/NVVddddVVV1111VVXXfVvQeWqq6666qqrrrrqf6izZ8/eCnDmzJkHc9VVV1111VVXXXXVVVf9WxBcddVVV1111VVX/Q9133333foP//APv33NNdc8+MVe7MVem6uuuuqqq6666qqrrrrqX4vgqquuuuqqq6666n+w3/qt3/oegHd6p3f6LK666qqrrrrqqquuuuqqfy0qV1111VVXXXXVVf+D/cM//MNvA5w5c+bBXHXVVVddddVVV1111VX/WgRXXXXVVVddddVV/4Pdd999t/7DP/zDb19zzTUPfrEXe7HX5qqrrrrqqquuuuqqq6761yC46qqrrrrqqquu+h/u7//+738b4HVe53Xei6uuuuqqq6666qqrrrrqX4PKVVddddVVV1111f9w//AP//A7AC/2Yi/22lx11VVXXXXVVVddddVV/xoEV1111VVXXXXVVf/D/cM//MNvA1xzzTUPfrEXe7HX5qqrrrrqqquuuuqqq656URFcddVVV1111VVX/S/wD//wD78N8GIv9mKvxVVXXXXVVVddddVVV131oiK46qqrrrrqqquu+l/gR37kRz4H4MVf/MVfm6uuuuqqq6666qqrrrrqRUXlqquuuuqqq6666n+Bs2fP3gpw5syZB3PVVVddddVVV1111VVXvagIrrrqqquuuuqqq/4XuO+++279h3/4h9++5pprHvxiL/Zir81VV1111VVXXXXVVVdd9aIguOqqq6666qqrrvpf4u///u9/G+Cd3umdPourrrrqqquuuuqqq6666kVBcNVVV1111VVXXfW/xG//9m9/D8CZM2cezFVXXXXVVVddddVVV131oiC46qqrrrrqqquu+l/ivvvuu/Uf/uEffvuaa6558Iu92Iu9NlddddVVV1111VVXXXXVv4Tgqquuuuqqq6666n+Rv//7v/9tgBd7sRd7La666qqrrrrqqquuuuqqfwnBVVddddVVV1111f8i//AP//A7AK/zOq/z3lx11VVXXXXVVVddddVV/xKCq6666qqrrrrqqv9Fzp49eyvANddc8+AXe7EXe22uuuqqq6666qqrrrrqqheG4Kqrrrrqqquuuup/kfvuu+/Wf/iHf/htrrrqqquuuuqqq6666qoXBcFVV1111VVXXXXV/zK/9Vu/9T0A7/RO7/RZXHXVVVddddVVV1111VUvDJWrrrrqqquuuuqq/2X+4R/+4bcBzpw582Cuuuqqq6666qqrrrrqqheG4Kqrrrrqqquuuup/mfvuu+/Wf/iHf/jta6655sEv9mIv9tpcddVVV1111VVXXXXVVS8IwVVXXXXVVVddddX/Yi/2Yi/2Wlx11VVXXXXVVVddddVVLwjBVVddddVVV1111f9CP/IjP/I5AC/+4i/+2lx11VVXXXXVVVddddVVLwiVq6666qqrrrrqqv+Fzp49eyvAmTNnHsxVV1111VVXXXXVVVdd9YIQXHXVVVddddVVV/0vdN999936D//wD799zTXXPPjFXuzFXpurrrrqqquuuuqqq6666vkhuOqqq6666qqrrvpf6u///u9/G+DFXuzFXourrrrqqquuuuqqq6666vkhuOqqq6666qqrrvpf6h/+4R9+B+DFX/zFX5urrrrqqquuuuqqq6666vmhctVVV1111VVXXfW/1NmzZ28FOHPmzIO56qqrrrrqqquuuuqqq54fgquuuuqqq6666qr/pe67775b/+Ef/uG3r7nmmge/2Iu92Gtz1VVXXXXVVVddddVVVz03gquuuuqqq6666qr/xf7+7//+twFe7MVe7LW46qqrrrrqqquuuuqqq54bwVVXXXXVVVddddX/Yv/wD//wOwCv8zqv895cddVVV1111VVXXXXVVc+N4Kqrrrrqqquuuup/sbNnz94KcM011zz4mmuueTBXXXXVVVddddVVV1111QMRXHXVVVddddVVV/0vdt999936D//wD78NcObMmQdz1VVXXXXVVVddddVVVz0QwVVXXXXVVVddddX/cn//93//2wDv9E7v9FlcddVVV1111VVXXXXVVQ9EcNVVV1111VVXXfW/3G//9m9/D8CZM2cezFVXXXXVVVddddVVV131QARXXXXVVVddddVV/8vdd999twJcc801D36xF3ux1+aqq6666qqrrrrqqquuuh/BVVddddVVV1111f8B//AP//DbXHXVVVddddVVV1111VXPjeCqq6666qqrrrrq/4C///u//22AF3uxF3strrrqqquuuuqqq6666qr7EVx11VVXXXXVVVf9H/AP//APvwPw4i/+4q/NVVddddVVV1111VVXXXU/KlddddVVV1111VX/B5w9e/ZWgDNnzjyYq6666qqrrrrqqquuuup+BFddddVVV1111VX/B9x33323/sM//MNvX3PNNQ9+sRd7sdfmqquuuuqqq6666qqrrgIguOqqq6666qqrrvo/4r777rsV4MVe7MVei6uuuuqqq6666qqrrroKgOCqq6666qqrrrrq/4jf+q3f+h6AF3/xF39trrrqqquuuuqqq6666ioAKlddddVVV1111VX/R5w9e/ZWgDNnzjyYq6666qqrrrrqqquuugqA4Kqrrrrqqquuuur/iPvuu+9WgGuuuebB11xzzYO56qqrrrrqqquuuuqqqwiuuuqqq6666qqr/g/5h3/4h98GOHPmzIO56qqrrrrqqquuuuqqqwiuuuqqq6666qqr/g/5+7//+98GeLEXe7HX4qqrrrrqqquuuuqqq64iuOqqq6666qqrrvo/5B/+4R9+B+DFX/zFX5urrrrqqquuuuqqq666ispVV1111VVXXXXV/yFnz569FeDMmTMP5qqrrrrqqquuuuqqq64iuOqqq6666qqrrvo/5L777rv1H/7hH377mmuuefCLvdiLvTZXXXXVVVddddVVV131/xvBVVddddVVV1111f9R11xzzYO56qqrrrrqqquuuuqq/98Irrrqqquuuuqqq/6P+fu///vfBnid13md9+Kqq6666qqrrrrqqqv+f6Ny1VVXXXXVVVdd9X/MP/zDP/wOwJkzZx7MVVddddVVV1111VVX/f9G5aqrrrrqqquuuur/mLNnz94KcM011zyYq6666qqrrrrqqquu+v+N4Kqrrrrqqquuuur/mPvuu+/Wf/iHf/htgBd7sRd7ba666qqrrrrqqquuuur/L4Krrrrqqquuuuqq/4P+/u///rcBXuzFXuy1uOqqq6666qqrrrrqqv+/CK666qqrrrrqqqv+D/qHf/iH3wF48Rd/8dfmqquuuuqqq6666qqr/v+ictVVV1111VVXXfV/0NmzZ28FOHPmzIO56qqrrrrqqquuuuqq/78Irrrqqquuuuqqq/4Puu+++2697777br3mmmse/GIv9mKvzVVXXXXVVVddddVVV/3/RHDVVVddddVVV131f9TZs2dv5aqrrrrqqquuuuqqq/5/I7jqqquuuuqqq676P+rv//7vfxvgxV7sxV6Lq6666qqrrrrqqquu+v+J4Kqrrrrqqquuuur/qH/4h3/4HYAXf/EXf22uuuqqq6666qqrrrrq/ycqV1111VVXXXXVVf/HnTlz5sFcddVVV1111VVXXXXV/09Urrrqqquuuuqqq/6POnv27K1cddVVV1111VVXXXXV/28EV1111VVXXXXVVf9H3Xfffbfed999t15zzTUPvuaaax7MVVddddVVV1111VVX/f9DcNVVV1111VVXXfV/2NmzZ28FOHPmzIO56qqrrrrqqquuuuqq/38Irrrqqquuuuqqq/4Pu++++24FeLEXe7HX4qqrrrrqqquuuuqqq/7/oXLVVVddddVVV131f9h99913K1ddddVVV1111VVXXfX/F8FVV1111VVXXXXV/2H/8A//8DsAL/7iL/7aXHXVVVddddVVV1111f8/VK666qqrrrrqqqv+Dzt79uytAGfOnHkwV1111VVXXXXVVVdd9f8Plauuuuqqq6666qr/B6655poHc9VVV1111VVXXXXVVf//EFx11VVXXXXVVVf9H3bffffd+g//8A+/DfBiL/Zir81VV1111VVXXXXVVVf9/0Llqquuuuqqq6666qqrrrrqqquuuuqqq676v4rgqquuuuqqq6666v+4v//7v/9tgBd7sRd7La666qqrrrrqqquuuur/FypXXXXVVVddddVV/8edPXv2GQDXXHPNg7nqqquuuuqqq6666qr/X6hcddVVV1111VVX/R9333333QpwzTXXPJirrrrqqquuuuqqq676/4XKVVddddVVV1111f9xZ8+evRXgzJkzD+aqq6666qqrrrrqqqv+f6Fy1VVXXXXVVVdd9X/cfffddyvANddc82Cuuuqqq6666qqrrrrq/xeCq6666qqrrrrqqv8H/uEf/uG3AV7sxV7stbnqqquuuuqqq6666qr/Pwiuuuqqq6666qqr/h+55pprHsxVV1111VVXXXXVVVf9/0Fw1VVXXXXVVVdd9f/A3//93/82wJkzZx7EVVddddVVV1111VVX/f9BcNVVV1111VVXXfX/wD/8wz/8DsCLv/iLvzZXXXXVVVddddVVV131/weVq6666qqrrrrqqv9Hzpw582Cuuuqqq6666qqrrrrq/w8qV1111VVXXXXVVf8PnD179lauuuqqq6666qqrrrrq/x+Cq6666qqrrrrqqv8H7rvvvlvvu+++W6+55poHX3PNNQ/mqquuuuqqq6666qqr/n8guOqqq6666qqrrvp/4uzZs7cCnDlz5sFcddVVV1111VVXXXXV/w8EV1111VVXXXXVVf9P3HfffbcCvNiLvdhrcdVVV1111VVXXXXVVf8/ULnqqquuuuqqq676f+K+++67lauuuuqqq6666qqrrvr/heCqq6666qqrrrrq/4l/+Id/+B2AF3/xF39trrrqqquuuuqqq6666v8HKlddddVVV1111VX/T5w9e/ZWgDNnzjyYq6666qqrrrrqqquu+v+BylVXXXXVVVddddX/M9dcc82Dueqqq6666qqrrrrqqv8fCK666qqrrrrqqqv+n7jvvvtu/Yd/+IffBrjmmmsezFVXXXXVVVddddVVV/3fR3DVVVddddVVV131/9CZM2cezFVXXXXVVVddddVVV/3fR+Wqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxXBVVddddVVV1111f8j9913360A11xzzYO56qqrrrrqqquuuuqq//uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXV/yP33XffrQBnzpx5EFddddVVV1111VVXXfV/H5Wrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXfX/yNmzZ58BcM011zyYq6666qqrrrrqqquu+r+PylVXXXXVVVddddX/Q/fdd9+tXHXVVVddddVVV1111f99VK666qqrrrrqqqv+H3mxF3ux1wI4e/bsM7jqqquuuuqqq6666qr/+6hcddVVV1111VVX/T/yYi/2Yq/NVVddddVVV1111VVX/f9B5aqrrrrqqquuuur/oX/4h3/4ba666qqrrrrqqquuuur/PipXXXXVVVddddVV/49cc801Dwa47777buWqq6666qqrrrrqqqv+76Ny1VVXXXXVVVdd9f/E67zO67w3wG/91m99N1ddddVVV1111VVXXfX/A5Wrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVV/0+82Iu92GsB/MM//MPvcNVVV1111VVXXXXVVf8/ULnqqquuuuqqq676f+LFXuzFXhvgH/7hH36bq6666qqrrrrqqquu+v+BylVXXXXVVVddddX/E9dcc82DAe67775bueqqq6666qqrrrrqqv8fqFx11VVXXXXVVVf9P3DNNdc8GOC+++67lauuuuqqq6666qqrrvr/g8pVV1111VVXXXXV/wMv9mIv9toA//AP//DbXHXVVVddddVVV1111f8fVK666qqrrrrqqqv+H3ixF3ux1wK47777buWqq6666qqrrrrqqqv+/6By1VVXXXXVVVdd9f/I2bNnn8FVV1111VVXXXXVVVf9/0Hlqquuuuqqq6666v+BF3uxF3ttgH/4h3/4ba666qqrrrrqqquuuur/DypXXXXVVVddddVV/w9cc801Dwa47777buWqq6666qqrrrrqqqv+/6By1VVXXXXVVVdd9X/c67zO67w3wD/8wz/8NlddddVVV1111VVXXfX/C5Wrrrrqqquuuuqq/yfuu+++W7nqqquuuuqqq6666qr/X6hcddVVV1111VVX/R/3Yi/2Yq8F8A//8A+/w1VXXXXVVVddddVVV/3/QuWqq6666qqrrrrq/7gXe7EXe22uuuqqq6666qqrrrrq/ycqV1111VVXXXXVVf9P/MM//MNvc9VVV1111VVXXXXVVf+/ULnqqquuuuqqq676P+6aa655MMB99913K1ddddVVV1111VVXXfX/C5Wrrrrqqquuuuqq/8Ne53Ve570Bfuu3fuu7ueqqq6666qqrrrrqqv9/qFx11VVXXXXVVVf9H3bmzJkHcdVVV1111VVXXXXVVf9/Ubnqqquuuuqqq676P+yaa655MMA//MM//A5XXXXVVVddddVVV131/w+Vq6666qqrrrrqqv/DXuzFXuy1Af7hH/7ht7nqqquuuuqqq6666qr/f6hcddVVV1111VVX/R92zTXXPBjgvvvuu5Wrrrrqqquuuuqqq676/4fKVVddddVVV1111f9RL/ZiL/baAPfdd9+tXHXVVVddddVVV1111f9PVK666qqrrrrqqqv+j7rmmmseDPAP//APv81VV1111VVXXXXVVVf9/0Tlqquuuuqqq6666v+oF3uxF3stgPvuu+9Wrrrqqquuuuqqq6666v8nKlddddVVV1111VX/x509e/YZXHXVVVddddVVV1111f9PVK666qqrrrrqqqv+j3qxF3ux1wb4h3/4h9/mqquuuuqqq6666qqr/n+ictVVV1111VVXXfV/1DXXXPNggPvuu+9Wrrrqqquuuuqqq6666v8nKlddddVVV1111VX/B73O67zOewP8wz/8w29z1VVXXXXVVVddddVV/39Rueqqq6666qqrrvo/7L777ruVq6666qqrrrrqqquu+v+LylVXXXXVVVddddX/QS/2Yi/2WgD/8A//8DtcddVVV1111VVXXXXV/19Urrrqqquuuuqqq/4PerEXe7HX5qqrrrrqqquuuuqqq66ictVVV1111VVXXfV/2D/8wz/8NlddddVVV1111VVXXfX/F5Wrrrrqqquuuuqq/4OuueaaBwPcd999t3LVVVddddVVV1111VX/f1G56qqrrrrqqquu+j/mdV7ndd4b4Ld+67e+m6uuuuqqq6666qqrrvr/jcpVV1111VVXXXXV/zFnzpx5EFddddVVV1111VVXXXUVAJWrrrrqqquuuuqq/2OuueaaBwP8wz/8w+9w1VVXXXXVVVddddVV/79Rueqqq6666qqrrvo/5sVe7MVeG+Af/uEffpurrrrqqquuuuqqq676/43KVVddddVVV1111f8x11xzzYMB7rvvvlu56qqrrrrqqquuuuqq/9+oXHXVVVddddVVV/0f8mIv9mKvDXDffffdylVXXXXVVVddddVVV11F5aqrrrrqqquuuur/kGuuuebBAP/wD//w21x11VVXXXXVVVddddVVVK666qqrrrrqqqv+D3mxF3ux1wK47777buWqq6666qqrrrrqqquuonLVVVddddVVV131f8g111zzYICzZ88+g6uuuuqqq6666qqrrrqKylVXXXXVVVddddX/IS/2Yi/22gD/8A//8NtcddVVV1111VVXXXXVVVSuuuqqq6666qqr/o94ndd5nfcG+K3f+q3vvu+++27lqquuuuqqq6666qqrrqJy1VVXXXXVVVdd9X/Ei73Yi70WwD/8wz/8DlddddVVV1111VVXXXUVAJWrrrrqqquuuuqq/yNe53Ve570B/uEf/uG3ueqqq6666qqrrrrqqqsAqFx11VVXXXXVVVf9H/A6r/M67w3wW7/1W99933333cpVV1111VVXXXXVVVddBUDlqquuuuqqq6666v+AF3uxF3stgH/4h3/4Ha666qqrrrrqqquuuuqq+1G56qqrrrrqqquu+j/gdV7ndd4b4B/+4R9+m6uuuuqqq6666qqrrrrqflSuuuqqq6666qqr/pd7ndd5nfcG+K3f+q3vvu+++27lqquuuuqqq6666qqrrroflauuuuqqq6666qr/5V7sxV7stQD+4R/+4Xe46qqrrrrqqquuuuqqqx6IylVXXXXVVVddddX/cq/zOq/z3gD/8A//8NtcddVVV1111VVXXXXVVQ9E5aqrrrrqqquuuup/sdd5ndd5b4Df+q3f+u777rvvVq666qqrrrrqqquuuuqqB6Jy1VVXXXXVVVdd9b/Yi73Yi70WwD/8wz/8DlddddVVV1111VVXXXXVc6Ny1VVXXXXVVVdd9b/Y67zO67w3wD/8wz/8NlddddVVV1111VVXXXXVc6Ny1VVXXXXVVVdd9b/U67zO67w3wG/91m9993333XcrV1111VVXXXXVVVddddVzo3LVVVddddVVV131v9SLvdiLvRbAP/zDP/wOV1111VVXXXXVVVddddXzQ+Wqq6666qqrrrrqf6nXeZ3XeW+Af/iHf/htrrrqqquuuuqqq6666qrnh8pVV1111VVXXXXV/0Kv8zqv894A//AP//Db9913361cddVVV1111VVXXXXVVc8Plauuuuqqq6666qr/hV7sxV7stQB+67d+63u46qqrrrrqqquuuuqqq14QKlddddVVV1111VX/C73Yi73YawP8wz/8w29z1VVXXXXVVVddddVVV70gVK666qqrrrrqqqv+l3md13md977mmmse/A//8A+/fd99993KVVddddVVV1111VVXXfWCULnqqquuuuqqq676X+bFXuzFXgvgt37rt76Hq6666qqrrrrqqquuuuqFoXLVVVddddVVV131v8yLvdiLvTbAP/zDP/w2V1111VVXXXXVVVddddULQ+Wqq6666qqrrrrqf5HXeZ3Xee9rrrnmwQD33XffrVx11VVXXXXVVVddddVVLwyVq6666qqrrrrqqv9FXuzFXuy1AH7rt37ru7nqqquuuuqqq6666qqr/iVUrrrqqquuuuqqq/4XebEXe7HXBvjRH/3Rz+Gqq6666qqrrrrqqquu+pdQueqqq6666qqrrvpf4nVe53Xe+5prrnkwwH333XcrV1111VVXXXXVVVddddW/hMpVV1111VVXXXXV/xIv9mIv9loAv/Vbv/XdXHXVVVddddVVV1111VUvCipXXXXVVVddddVV/0u82Iu92GsD/OiP/ujncNVVV1111VVXXXXVVVe9KKhcddVVV1111VVX/S/wOq/zOu99zTXXPBjgvvvuu5Wrrrrqqquuuuqqq6666kVB5aqrrrrqqquuuup/gRd7sRd7LYDf+q3f+m6uuuqqq6666qqrrrrqqhcVlauuuuqqq6666qr/BV7sxV7stQF+67d+63u46qqrrrrqqquuuuqqq15UVK666qqrrrrqqqv+h3ud13md977mmmseDPAP//APv81VV1111VVXXXXVVVdd9aKictVVV1111VVXXfU/3Iu92Iu9FsBv/dZvfTdXXXXVVVddddVVV1111b8Glauuuuqqq6666qr/4V7sxV7stQF+67d+63u46qqrrrrqqquuuuqqq/41qFx11VVXXXXVVVf9D/Y6r/M6733NNdc8GOAf/uEffpurrrrqqquuuuqqq6666l+DylVXXXXVVVddddX/YC/2Yi/2WgC/9Vu/9d1cddVVV1111VVXXXXVVf9aVK666qqrrrrqqqv+B3uxF3ux1wb4rd/6re/hqquuuuqqq6666qqrrvrXonLVVVddddVVV131P9SLvdiLvfY111zzYIB/+Id/+G2uuuqqq6666qqrrrrqqn8tKlddddVVV1111VX/Q73O67zOewH81m/91ndz1VVXXXXVVVddddVVV/1bULnqqquuuuqqq676H+rFXuzFXhvgt37rt76Hq6666qqrrrrqqquuuurfgspVV1111VVXXXXV/0Av9mIv9trXXHPNgwH+4R/+4be56qqrrrrqqquuuuqqq/4tqFx11VVXXXXVVVf9D/Q6r/M67wXwW7/1W9/NVVddddVVV1111VVXXfVvReWqq6666qqrrrrqf6AXe7EXe22A3/qt3/oerrrqqquuuuqqq6666qp/KypXXXXVVVddddVV/wNdc801Dwb4h3/4h9/mqquuuuqqq6666qqrrvq3onLVVVddddVVV131P8zrvM7rvDfAb/3Wb303V1111VVXXXXVVVddddW/B5Wrrrrqqquuuuqq/2He8R3f8bMAfuu3fut7uOqqq6666qqrrrrqqqv+PahcddVVV1111VVX/Q9zzTXXPBjgH/7hH36bq6666qqrrrrqqquuuurfg8pVV1111VVXXXXV/yCv8zqv894Av/Vbv/XdXHXVVVddddVVV1111VX/XlSuuuqqq6666qqr/gd5x3d8x88C+Id/+Iff4aqrrrrqqquuuuqqq67696Jy1VVXXXXVVVdd9T/Ei73Yi732Nddc82CA3/qt3/purrrqqquuuuqqq6666qp/LypXXXXVVVddddVV/0O8zuu8znsB/NZv/dZ3c9VVV1111VVXXXXVVVf9R6By1VVXXXXVVVdd9T/E67zO67w3wI/+6I9+DlddddVVV1111VVXXXXVfwQqV1111VVXXXXVVf8DvM7rvM57A/zWb/3Wd9933323ctVVV1111VVXXXXVVVf9R6By1VVXXXXVVVdd9T/A67zO67wXwD/8wz/8DlddddVVV1111VVXXXXVfxQqV1111VVXXXXVVf/NXuzFXuy1X+zFXuy1AX7rt37ru7nqqquuuuqqq6666qqr/qNQueqqq6666qqrrvpv9jqv8zrvBfBbv/Vb381VV1111VVXXXXVVVdd9R+JylVXXXXVVVddddV/s9d5ndd5b4Af/dEf/Ryuuuqqq6666qqrrrrqqv9IVK666qqrrrrqqqv+G73O67zOewP81m/91nffd999t3LVVVddddVVV1111VVX/UeictVVV1111VVXXfXf6B3f8R0/C+Af/uEffoerrrrqqquuuuqqq6666j8alauuuuqqq6666qr/Ji/2Yi/22tdcc82DAX7rt37ru7nqqquuuuqqq6666qqr/qNRueqqq6666qqrrvpv8jqv8zrvBfBbv/Vb381VV1111VVXXXXVVVdd9Z+BylVXXXXVVVddddV/k9d5ndd5b4Af/dEf/Ryuuuqqq6666qqrrrrqqv8MVK666qqrrrrqqqv+G7zO67zOewP81m/91nffd999t3LVVVddddVVV1111VVX/WegctVVV1111VVXXfXf4B3f8R0/C+C3fuu3voerrrrqqquuuuqqq6666j8Llauuuuqqq6666qr/Yq/zOq/z3tdcc82DAf7hH/7ht7nqqquuuuqqq6666qqr/rNQueqqq6666qqrrvov9mIv9mKvBfAjP/Ijn81VV1111VVXXXXVVVdd9Z+JylVXXXXVVVddddV/sdd5ndd5b4Df/u3f/h6uuuqqq6666qqrrrrqqv9MVK666qqrrrrqqqv+C73O67zOewP81m/91nffd999t3LVVVddddVVV1111VVX/WeictVVV1111VVXXfVf6B3f8R0/C+C3fuu3voerrrrqqquuuuqqq6666j8blauuuuqqq6666qr/Iq/zOq/z3tdcc82DAf7hH/7ht7nqqquuuuqqq6666qqr/rNRueqqq6666qqrrvov8mIv9mKvBfD1X//178NVV1111VVXXXXVVVdd9V+BylVXXXXVVVddddV/kdd5ndd5b4B/+Id/+G2uuuqqq6666qqrrrrqqv8KVK666qqrrrrqqqv+C7zjO77jZwH81m/91nffd999t3LVVVddddVVV1111VVX/VegctVVV1111VVXXfVf4HVe53XeG+C3fuu3voerrrrqqquuuuqqq6666r8Klauuuuqqq6666qr/ZK/zOq/z3tdcc82D77vvvlv/4R/+4be56qqrrrrqqquuuuqqq/6rULnqqquuuuqqq676T/Y6r/M67wXwoz/6o5/DVVddddVVV1111VVXXfVficpVV1111VVXXXXVf7IXe7EXe22Af/iHf/htrrrqqquuuuqqq6666qr/SlSuuuqqq6666qqr/hO94zu+42cB/NZv/dZ333fffbdy1VVXXXXVVVddddVVV/1XonLVVVddddVVV131n+h1Xud13hvgt37rt76Hq6666qqrrrrqqquuuuq/GpWrrrrqqquuuuqq/ySv8zqv897XXHPNg++7775b/+Ef/uG3ueqqq6666qqrrrrqqqv+q1G56qqrrrrqqquu+k/yOq/zOu8F8KM/+qOfw1VXXXXVVVddddVVV13134HKVVddddVVV1111X+SF3uxF3ttgN/6rd/6bq666qqrrrrqqquuuuqq/w5Urrrqqquuuuqqq/4TfPiHf/h3AfzWb/3Wd3PVVVddddVVV1111VVX/XehctVVV1111VVXXfWf4MVe7MVeG+C3fuu3voerrrrqqquuuuqqq6666r8Llauuuuqqq6666qr/YK/zOq/z3tdcc82D/+Ef/uG3/+Ef/uG3ueqqq6666qqrrrrqqqv+u1C56qqrrrrqqquu+g/2Oq/zOu8F8Fu/9Vvfw1VXXXXVVVddddVVV13134nKVVddddVVV1111X+ga6655sEv9mIv9toAv/Vbv/XdXHXVVVddddVVV1111VX/nahcddVVV1111VVX/Qd6x3d8x88C+K3f+q3v5qqrrrrqqquuuuqqq67670blqquuuuqqq6666j/Qi73Yi702wG/91m99D1ddddVVV1111VVXXXXVfzcqV1111VVXXXXVVf9BXud1Xue9r7nmmgf/wz/8w2//wz/8w29z1VVXXXXVVVddddVVV/13o3LVVVddddVVV131H+R1Xud13gvgt37rt76Hq6666qqrrrrqqquuuup/AipXXXXVVVddddVV/wFe7MVe7LVf7MVe7LUBfuu3fuu7ueqqq6666qqrrrrqqqv+J6By1VVXXXXVVVdd9R/gdV7ndd4L4Ld+67e+m6uuuuqqq6666qqrrrrqfwoqV1111VVXXXXVVf8BXud1Xue9AX70R3/0c7jqqquuuuqqq6666qqr/qegctVVV1111VVXXfXv9I7v+I6fBfBbv/Vb333ffffdylVXXXXVVVddddVVV131PwWVq6666qqrrrrqqn+n13md13lvgN/6rd/6Hq666qqrrrrqqquuuuqq/0moXHXVVVddddVVV/07vM7rvM57X3PNNQ/+h3/4h9/+h3/4h9/mqquuuuqqq6666qqrrvqfhMpVV1111VVXXXXVv8PrvM7rvBfAb/3Wb30PV1111VVXXXXVVVddddX/NFSuuuqqq6666qqr/o1e7MVe7LVf7MVe7LUBfuu3fuu7ueqqq6666qqrrrrqqqv+p6Fy1VVXXXXVVVdd9W/0Oq/zOu8F8CM/8iOfzVVXXXXVVVddddVVV131PxGVq6666qqrrrrqqn+j13md13lvgN/+7d/+Hq666qqrrrrqqquuuuqq/4moXHXVVVddddVVV/0bfPiHf/h3AfzWb/3Wd9933323ctVVV1111VVXXXXVVVf9T0Tlqquuuuqqq6666t/gxV7sxV4b4Ld+67e+h6uuuuqqq6666qqrrrrqfyoqV1111VVXXXXVVf9Kr/M6r/Pe11xzzYP/4R/+4bf/4R/+4be56qqrrrrqqquuuuqqq/6nonLVVVddddVVV131r/Q6r/M67wXwW7/1W9/DVVddddVVV1111VVXXfU/GZWrrrrqqquuuuqqf4XXeZ3Xee8Xe7EXe22A3/qt3/purrrqqquuuuqqq6666qr/yahcddVVV1111VVX/Su8zuu8znsB/MiP/Mhnc9VVV1111VVXXXXVVVf9T0flqquuuuqqq6666l/hxV7sxV4b4Ld/+7e/h6uuuuqqq6666qqrrrrqfzoqV1111VVXXXXVVS+iD//wD/8ugN/6rd/67vvuu+9Wrrrqqquuuuqqq6666qr/6ahcddVVV1111VVXvYhe53Ve570Bfuu3fut7uOqqq6666qqrrrrqqqv+N6By1VVXXXXVVVdd9SJ4ndd5nfcG+Id/+Iff/od/+Iff5qqrrrrqqquuuuqqq67634DKVVddddVVV1111YvgHd/xHT8L4Ld+67e+h6uuuuqqq6666qqrrrrqfwsqV1111VVXXXXVVf+C13md13nva6655sEAv/Vbv/XdXHXVVVddddVVV1111VX/W1C56qqrrrrqqquu+he8zuu8znsBfP3Xf/37cNVVV1111VVXXXXVVVf9b0Llqquuuuqqq6666oW45pprHvxiL/Zirw3wD//wD7/NVVddddVVV1111VVXXfW/CZWrrrrqqquuuuqqF+Id3/EdPwvgt37rt777vvvuu5Wrrrrqqquuuuqqq6666n8TKlddddVVV1111VUvxOu8zuu8N8Bv/dZvfQ9XXXXVVVddddVVV1111f82VK666qqrrrrqqqtegNd5ndd5b4B/+Id/+O1/+Id/+G2uuuqqq6666qqrrrrqqv9tqFx11VVXXXXVVVe9AO/4ju/4WQA/8iM/8jlcddVVV1111VVXXXXVVf8bUbnqqquuuuqqq656Pl7ndV7nva+55poHA/zDP/zDb3PVVVddddVVV1111VVX/W9E5aqrrrrqqquuuuqZXud1Xue9eabXeZ3XeS+A3/qt3/purrrqqquuuuqqq6666qr/rdCDHvQgrrrqqquuuuqqqwB+4id+wjwfb/d2byeuuuqqq6666qqrrrrqqv+NqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVM/3Wb/3Wd/NML/ZiL/ba11xzzYO56qqrrrrqqquuuuqqq/43o3LVVVddddVVV131TF//9V//PjzTi73Yi732537u5/7WfffddytXXXXVVVddddVVV1111f9WlOPHj3PVVVddddVVV1313M6ePXvri7/4i7/2Qx7ykJc+e/bsM2699da/5qqrrrrqqquuuuqqq67634bgqquuuuqqq6666gX4kR/5kc8BeMd3fMfP4qqrrrrqqquuuuqqq67634hy/Phxrrrqqquuuuqqq56fs2fP3vriL/7ir/2Qhzzkpc+ePfuMW2+99a+56qqrrrrqqquuuuqqq/43Ibjqqquuuuqqq656IX7kR37kcwDe8R3f8bO46qqrrrrqqquuuuqqq/63oRw/fpyrrrrqqquuuuqqF+Ts2bO3vviLv/hrP+QhD3nps2fPPuPWW2/9a6666qqrrrrqqquuuuqq/y0Irrrqqquuuuqqq/4Fv/Vbv/U9AO/4ju/4WVx11VVXXXXVVVddddVV/5tQjh8/zlVXXXXVVVddddULc3R0tPuQhzzkpR/ykIe89D/8wz/8ztmzZ2/lqquuuuqqq6666qqrrvrfgOCqq6666qqrrrrqX3Dffffd+lu/9VvfA/DhH/7h38VVV1111VVXXXXVVVdd9b8FwVVXXXXVVVddddWL4B/+4R9++7777rv1mmuuefCLvdiLvTZXXXXVVVddddVVV1111f8GBFddddVVV1111VUvgvvuu+/WH/3RH/0cgA//8A//Lq666qqrrrrqqquuuuqq/w0Irrrqqquuuuqqq15E//AP//Db9913363XXHPNg1/sxV7stbnqqquuuuqqq6666qqr/qejHD9+nKuuuuqqq6666qoXxeHh4e7R0dGlV3zFV3zra6655sG/9Vu/9T1cddVVV1111VVXXXXVVf+TEVx11VVXXXXVVVf9K/zDP/zDbwO82Iu92Gu/2Iu92Gtz1VVXXXXVVVddddVVV/1PRjl+/DhXXXXVVVddddVVL6rDw8Pds2fPPuMVX/EV3/qaa6558G/91m99D1ddddVVV1111VVXXXXV/1QEV1111VVXXXXVVf9K//AP//DbAC/2Yi/22i/2Yi/22lx11VVXXXXVVVddddVV/1NRjh8/zlVXXXXVVVddddW/xuHh4S7Ai7/4i7/2Nddc8+Df+q3f+h6uuuqqq6666qqrrrrqqv+JCK666qqrrrrqqqv+DX77t3/7ewBe7MVe7LVf7MVe7LW56qqrrrrqqquuuuqqq/4nohw/fpyrrrrqqquuuuqqf63Dw8Pda6655sEPechDXhrgT//0T3+Gq6666qqrrrrqqquuuup/GoKrrrrqqquuuuqqf6Mf/dEf/RyAF3uxF3vtF3uxF3ttrrrqqquuuuqqq6666qr/aSjHjx/nqquuuuqqq6666t/i8PBw95prrnnwi7/4i782wJ/+6Z/+DFddddVVV1111VVXXXXV/yQEV1111VVXXXXVVf8OP/qjP/o5AC/2Yi/22i/2Yi/22lx11VVXXXXVVVddddVV/5NQjh8/zlVXXXXVVVddddW/1eHh4e4111zz4Bd/8Rd/bYA//dM//Rmuuuqqq6666qqrrrrqqv8pCK666qqrrrrqqqv+nX70R3/0cwBe7MVe7LWvueaaB3PVVVddddVVV1111VVX/U9BOX78OFddddVVV1111VX/HoeHh7sv/uIv/toPechDXnpzc/P4n/7pn/4MV1111VVXXXXVVVddddX/BARXXXXVVVddddVV/wG+/uu//n0AXuzFXuy1ueqqq6666qqrrrrqqqv+p6AcP36cq6666qqrrrrqqn+vw8PD3Rd/8Rd/7Yc85CEvfc011zz4T//0T3+Gq6666qqrrrrqqquuuuq/G8FVV1111VVXXXXVf5Af+ZEf+RyAF3uxF3ttrrrqqquuuuqqq6666qr/CSjHjx/nqquuuuqqq6666j/C2bNnb33xF3/x137IQx7y0gD/8A//8DtcddVVV1111VVXXXXVVf+dCK666qqrrrrqqqv+A/3Ij/zI5wC8zuu8zntz1VVXXXXVVVddddVVV/13oxw/fpyrrrrqqquuuuqq/yhnz5699cVf/MVf+yEPechLnz179hm33nrrX3PVVVddddVVV1111VVX/XchuOqqq6666qqrrvoP9iM/8iOfA/CO7/iOn8VVV1111VVXXXXVVVdd9d+Jcvz4ca666qqrrrrqqqv+I509e/bWF3/xF3/thzzkIS999uzZZ9x6661/zVVXXXXVVVddddVVV13134Hgqquuuuqqq6666j/Bj/zIj3wOwDu+4zt+FlddddVVV1111VVXXXXVfxfK8ePHueqqq6666qqrrvqPJomHPOQhL/2Qhzzkpc+ePfuMW2+99a+56qqrrrrqqquuuuqqq/6rEVx11VVXXXXVVVf9J7jvvvtu/a3f+q3vAXjHd3zHz+Kqq6666qqrrrrqqquu+u9AOX78OFddddVVV1111VX/GY6OjnYf8pCHvPRDHvKQl/6Hf/iH3zl79uytXHXVVVddddVVV1111VX/lQiuuuqqq6666qqr/pPcd999t/7Wb/3W9wB8+Id/+Hdx1VVXXXXVVVddddVVV/1XI7jqqquuuuqqq676T/QP//APv33ffffdes011zz4xV7sxV6bq6666qqrrrrqqquuuuq/EuX48eNcddVVV1111VVX/Wc5PDzcPTo6uvSKr/iKb33NNdc8+Ld+67e+h6uuuuqqq6666qqrrrrqvwrBVVddddVVV1111X+yf/iHf/htgBd7sRd77Rd7sRd7ba666qqrrrrqqquuuuqq/yqU48ePc9VVV1111VVXXfWf6fDwcPfs2bPPeMVXfMW3vuaaax78W7/1W9/DVVddddVVV1111VVXXfVfgeCqq6666qqrrrrqv8A//MM//DbAi73Yi732i73Yi702V1111VVXXXXVVVddddV/Bcrx48e56qqrrrrqqquu+s92eHi4e/bs2We84iu+4ltfc801D/6t3/qt7+Gqq6666qqrrrrqqquu+s9GcNVVV1111VVXXfVf5B/+4R9+G+DFXuzFXvvFXuzFXpurrrrqqquuuuqqq6666j8b5fjx41x11VVXXXXVVVf9Vzg8PNy95pprHvyQhzzkpa+55poH/9Zv/db3cNVVV1111VVXXXXVVVf9ZyK46qqrrrrqqquu+i/0oz/6o58D8GIv9mKv/WIv9mKvzVVXXXXVVVddddVVV131n4ly/Phxrrrqqquuuuqqq/6rHB4e7l5zzTUPfshDHvLSAH/6p3/6M1x11VVXXXXVVVddddVV/1kIrrrqqquuuuqqq/6L/eiP/ujnALzYi73Ya7/4i7/4a3PVVVddddVVV1111VVX/WehHD9+nKuuuuqqq6666qr/SoeHh7vXXHPNg1/8xV/8tQH+9E//9Ge46qqrrrrqqquuuuqqq/4zEFx11VVXXXXVVVf9N/jRH/3RzwF48Rd/8de55pprHsxVV1111VVXXXXVVVdd9Z+Bcvz4ca666qqrrrrqqqv+qx0eHu6++Iu/+Gs/+MEPfunNzc3jf/qnf/ozXHXVVVddddVVV1111VX/0Qiuuuqqq6666qqr/pt8/dd//fsAvNiLvdhrX3PNNQ/mqquuuuqqq6666qqrrvqPRjl+/DhXXXXVVVddddVV/x0ODw93X+zFXuy1H/KQh7z05ubm8T/90z/9Ga666qqrrrrqqquuuuqq/0gEV1111VVXXXXVVf+Nvv7rv/69AV7sxV7stbnqqquuuuqqq6666qqr/qNRjh8/zlVXXXXVVVddddV/l6Ojo0sv/uIv/toPechDXvqaa6558J/+6Z/+DFddddVVV1111VVXXXXVfxSCq6666qqrrrrqqv9mP/IjP/I5AC/2Yi/22lx11VVXXXXVVVddddVV/5Eox48f56qrrrrqqquuuuq/09mzZ2998Rd/8dd+yEMe8tJnz559xq233vrXXHXVVVddddVVV1111VX/EQiuuuqqq6666qqr/gf4kR/5kc8BeMd3fMfP4qqrrrrqqquuuuqqq676j0I5fvw4V1111VVXXXXVVf/dzp49e+uLv/iLv/ZDHvKQlz579uwzbr311r/mqquuuuqqq6666qqrrvr3Irjqqquuuuqqq676H+JHfuRHPgfgnd7pnT6bq6666qqrrrrqqquuuuo/AuX48eNcddVVV1111VVX/U9w9uzZW1/8xV/8tR/84Ae/9NmzZ59x6623/jVXXXXVVVddddVVV1111b8HwVVXXXXVVVddddX/IL/1W7/1PQDv+I7v+FlcddVVV1111VVXXXXVVf9elOPHj3PVVVddddVVV131P8XR0dHugx/84Jd+yEMe8tL/8A//8Dtnz569lauuuuqqq6666qqrrrrq34rgqquuuuqqq6666n+Q++6779bf/u3f/h6AD//wD/8urrrqqquuuuqqq6666qp/D4Krrrrqqquuuuqq/2H+/u///rfuu+++W6+55poHv9iLvdhrc9VVV1111VVXXXXVVVf9WxFcddVVV1111VVX/Q9z9uzZZ/zoj/7o5wB8+Id/+Hdx1VVXXXXVVVddddVVV/1bEVx11VVXXXXVVVf9D/QP//APv33ffffdes011zz4xV7sxV6bq6666qqrrrrqqquuuurfgnL8+HGuuuqqq6666qqr/qc5PDzcPTo6uvSKr/iKb33NNdc8+Ld+67e+h6uuuuqqq6666qqrrrrqX4vgqquuuuqqq6666n+of/iHf/htgBd7sRd77Rd/8Rd/ba666qqrrrrqqquuuuqqfy3K8ePHueqqq6666qqrrvqf6PDwcPfs2bPPeMVXfMW3vuaaax7yW7/1W9/NVVddddVVV1111VVXXfWvQXDVVVddddVVV131P9g//MM//DbAi73Yi73Wi73Yi702V1111VVXXXXVVVddddW/BuX48eNcddVVV1111VVX/U91eHi4C/DiL/7ir33NNdc8+Ld+67e+h6uuuuqqq6666qqrrrrqRUVw1VVXXXXVVVdd9T/cb//2b38PwIu92Iu99ou92Iu9NlddddVVV1111VVXXXXVi4py/Phxrrrqqquuuuqqq/4nOzw83L3mmmse/JCHPOSlAf70T//0Z7jqqquuuuqqq6666qqrXhQEV1111VVXXXXVVf8L/MiP/MhnA7zYi73Ya7/Yi73Ya3PVVVddddVVV1111VVXvSgox48f56qrrrrqqquuuup/uqOjo0vXXHPNg1/8xV/8tQH+9E//9Ge46qqrrrrqqquuuuqqq/4lBFddddVVV1111VX/S/zoj/7o5wC82Iu92Gu/2Iu92Gtz1VVXXXXVVVddddVVV/1LKMePH+eqq6666qqrrrrqf4PDw8Pda6655sEv/uIv/toAf/qnf/ozXHXVVVddddVVV1111VUvDMFVV1111VVXXXXV/yI/+qM/+jkAL/ZiL/ba11xzzYO56qqrrrrqqquuuuqqq14YyvHjx7nqqquuuuqqq6763+Lw8HD3xV/8xV/7IQ95yEtvbm4e/9M//dOf4aqrrrrqqquuuuqqq656QQiuuuqqq6666qqr/pf5+q//+vcBePEXf/HX4aqrrrrqqquuuuqqq656YSjHjx/nqquuuuqqq6666n+Tw8PD3Rd/8Rd/7Qc/+MEvfc011zz4T//0T3+Gq6666qqrrrrqqquuuur5Ibjqqquuuuqqq676X+hHfuRHPgfgxV7sxV6bq6666qqrrrrqqquuuuoFoRw/fpyrrrrqqquuuuqq/23Onj1764u92Iu99kMe8pCXBviHf/iH3+Gqq6666qqrrrrqqquuem4EV1111VVXXXXVVf9L/eiP/uhnA7zO67zOe3PVVVddddVVV1111VVXPT+U48ePc9VVV1111VVXXfW/0dmzZ5/x4i/+4q/9kIc85KXPnj37jFtvvfWvueqqq6666qqrrrrqqqseiOCqq6666qqrrrrqf7Ef+ZEf+RyAd3zHd/wsrrrqqquuuuqqq6666qrnRjl+/DhXXXXVVVddddVV/1udPXv21hd/8Rd/7Yc85CEvffbs2Wfceuutf81VV1111VVXXXXVVVdddT+Cq6666qqrrrrqqv/lfuRHfuRzAN7xHd/xs7jqqquuuuqqq6666qqrHohy/Phxrrrqqquuuuqqq/43k8RDHvKQl37IQx7y0mfPnn3Grbfe+tdcddVVV1111VVXXXXVVQAEV1111VVXXXXVVf/L3Xfffbf+1m/91vcAvNM7vdNnc9VVV1111VVXXXXVVVfdj3L8+HGuuuqqq6666qqr/rc7OjrafchDHvLSD37wg1/6H/7hH37n7Nmzt3LVVVddddVVV1111VVXEVx11VVXXXXVVVf9H3Dffffd+lu/9VvfA/DhH/7h38VVV1111VVXXXXVVVddBUBw1VVXXXXVVVdd9X/EP/zDP/z2fffdd+s111zz4Bd7sRd7ba666qqrrrrqqquuuuoqyvHjx7nqqquuuuqqq676v+Dw8HD36Ojo0iu+4iu+9TXXXPPg3/qt3/oerrrqqquuuuqqq6666v83gquuuuqqq6666qr/Q/7+7//+twBe7MVe7LVf7MVe7LW56qqrrrrqqquuuuqq/98ox48f56qrrrrqqquuuur/iqOjo0tnz559xiu+4iu+9TXXXPPg3/qt3/oerrrqqquuuuqqq6666v8vgquuuuqqq6666qr/Y/7hH/7htwFe7MVe7LVf7MVe7LW56qqrrrrqqquuuuqq/78ox48f56qrrrrqqquuuur/ksPDw92zZ88+4xVf8RXf+pprrnnwb/3Wb30PV1111VVXXXXVVVdd9f8TwVVXXXXVVVddddX/Qf/wD//w2wAv9mIv9tov/uIv/tpcddVVV1111VVXXXXV/0+U48ePc9VVV1111VVXXfV/zeHh4e4111zz4Ic85CEvfc011zzkt37rt76bq6666qqrrrrqqquu+v+H4Kqrrrrqqquuuur/qB/90R/9HIBrrrnmwS/2Yi/22lx11VVXXXXVVVddddX/P5Tjx49z1VVXXXXVVVdd9X/R4eHh7jXXXPPgF3uxF3ttgD/90z/9Ga666qqrrrrqqquuuur/F4Krrrrqqquuuuqq/8N+9Ed/9HMAXuzFXuy1X+zFXuy1ueqqq6666qqrrrrqqv9fKMePH+eqq6666qqrrrrq/6rDw8Pda6655sEv/uIv/toAf/qnf/ozXHXVVVddddVVV1111f8fBFddddVVV1111VX/x/3Ij/zIZwO82Iu92Gtfc801D+aqq6666qqrrrrqqqv+/6AcP36cq6666qqrrrrqqv/Ljo6OLr34i7/4az/kIQ956c3NzeN/+qd/+jNcddVVV1111VVXXXXV/w8EV1111VVXXXXVVf8PfP3Xf/37ALzYi73Ya19zzTUP5qqrrrrqqquuuuqqq/5/ILjqqquuuuqqq676f+C+++679R/+4R9++5prrnnwa7/2a78XV1111VVXXXXVVVdd9f8DwVVXXXXVVVddddX/Ez/yIz/yOQAv/uIv/tpcddVVV1111VVXXXXV/w9Urrrqqquuuuqqq/6fOHv27K0AZ86ceTBXXXXVVVddddVVV131/wPBVVddddVVV1111f8T9913363/8A//8NvXXHPNg1/8xV/8tbnqqquuuuqqq6666qr/+wiuuuqqq6666qqr/h967GMf+1pcddVVV1111VVXXXXV/30EV1111VVXXXXVVf+P/P3f//1vA7z4i7/463DVVVddddVVV1111VX/9xFcddVVV1111VVX/T/y27/9298DcM011zyYq6666qqrrrrqqquu+r+P4Kqrrrrqqquuuur/oTNnzjzommuueTBXXXXVVVddddVVV131fxvBVVddddVVV1111f8j9913363/8A//8NsAZ86ceTBXXXXVVVddddVVV131fxvBVVddddVVV1111f8zf//3f//bAC/2Yi/2Wlx11VVXXXXVVVddddX/bQRXXXXVVVddddVV/8/8wz/8w+8AvPiLv/hrc9VVV1111VVXXXXVVf+3Ubnqqquuuuqqq676f+bs2bO3Apw5c+bBXHXVVVddddVVV1111f9tBFddddVVV1111VX/z9x33323/v3f//1vX3PNNQ9+sRd7sdfmqquuuuqqq6666qqr/u8iuOqqq6666qqrrvp/7MVe7MVei6uuuuqqq6666qqrrvq/i+Cqq6666qqrrrrq/6Hf/u3f/h6AF3/xF39trrrqqquuuuqqq6666v8uKlddddVVV1111VX/D/393//9bwGcOXPmwVx11VVXXXXVVVddddX/XQRXXXXVVVddddVV/w+dPXv2GQDXXHPNg6+55poHc9VVV1111VVXXXXVVf83EVx11VVXXXXVVVf9P/UP//APvw1w5syZB3PVVVddddVVV1111VX/NxFcddVVV1111VVX/T/193//978N8GIv9mKvxVVXXXXVVVddddVVV/3fRHDVVVddddVVV131/9Q//MM//A7Ai7/4i782V1111VVXXXXVVVdd9X8Tlauuuuqqq6666qr/p86ePXsrwJkzZx7MVVddddVVV1111VVX/d9EcNVVV1111VVXXfX/1H333XfrP/zDP/z2Nddc8+AXe7EXe22uuuqqq6666qqrrrrq/x6Cq6666qqrrrrqqv/H7rvvvlsBXuzFXuy1uOqqq6666qqrrrrqqv97CK666qqrrrrqqqv+H/ut3/qt7wF48Rd/8dfmqquuuuqqq6666qqr/u+hctVVV1111VVXXfX/2NmzZ28FOHPmzIO56qqrrrrqqquuuuqq/3sIrrrqqquuuuqqq/4fu++++24FuOaaax58zTXXPJirrrrqqquuuuqqq676v4Xgqquuuuqqq6666v+5f/iHf/htgGuuuebBXHXVVVddddVVV1111f8tBFddddVVV1111VX/z/393//9bwM89rGPfS2uuuqqq6666qqrrrrq/xaCq6666qqrrrrqqv/n/uEf/uF3AF78xV/8dbjqqquuuuqqq6666qr/W6hcddVVV1111VVX/T939uzZWwGuueaaB3PVVVddddVVV1111VX/txBcddVVV1111VVX/T9333333foP//APv33mzJkHvdiLvdhrc9VVV1111VVXXXXVVf93EFx11VVXXXXVVVddxd///d//NsCLvdiLvRZXXXXVVVddddVVV131fwfBVVddddVVV1111VX8wz/8w+8AvPiLv/hrc9VVV1111VVXXXXVVf93ULnqqquuuuqqq666irNnz94KcObMmQdz1VVXXXXVVVddddVV/3cQXHXVVVddddVVV13Ffffdd+t999136zXXXPPgF3uxF3ttrrrqqquuuuqqq6666v8Ggquuuuqqq6666qqrLrvvvvtu5aqrrrrqqquuuuqqq/5vIbjqqquuuuqqq6666rJ/+Id/+G2AF3uxF3strrrqqquuuuqqq6666v8Ggquuuuqqq6666qqrLvuHf/iH3wZ4ndd5nffmqquuuuqqq6666qqr/m+gctVVV1111VVXXXXVZffdd9+tXHXVVVddddVVV1111f8tBFddddVVV1111VVXXXb27Nln/MM//MNvX3PNNQ9+sRd7sdfmqquuuuqqq6666qqr/vcjuOqqq6666qqrrrrqWf7+7//+twFe7MVe7LW46qqrrrrqqquuuuqq//0Irrrqqquuuuqqq656ln/4h3/4HYAXf/EXf22uuuqqq6666qqrrrrqfz8qV1111VVXXXXVVVc9y9mzZ28FOHPmzIO56qqrrrrqqquuuuqq//0Irrrqqquuuuqqq656lvvuu+/W++6779ZrrrnmwS/2Yi/22lx11VVXXXXVVVddddX/bgRXXXXVVVddddVVVz2Hs2fP3spVV1111VVXXXXVVVf930Bw1VVXXXXVVVddddVz+Pu///vfBnid13md9+Kqq6666qqrrrrqqqv+d6Ny1VVXXXXVVVddddVz+Id/+IffAXixF3ux1+aqq6666qqrrrrqqqv+d6Ny1VVXXXXVVVddddVzOHv27K0A11xzzYO56qqrrrrqqquuuuqq/90Irrrqqquuuuqqq656Dvfdd9+t//AP//DbAC/+4i/+2lx11VVXXXXVVVddddX/XgRXXXXVVVddddVVVz2Pv//7v/9tgMc+9rGvxVVXXXXVVVddddVVV/3vRXDVVVddddVVV1111fP4h3/4h98BePEXf/HX4aqrrrrqqquuuuqqq/73onLVVVddddVVV1111fM4e/bsrQDXXHPNg7nqqquuuuqqq6666qr/vQiuuuqqq6666qqrrnoe991336333XffrWfOnHnQi73Yi702V1111VVXXXXVVVdd9b8TwVVXXXXVVVddddVVz9fZs2dvBbjmmmsezFVXXXXVVVddddVVV/3vRHDVVVddddVVV1111fP193//978N8Dqv8zrvxVVXXXXVVVddddVVV/3vROWqq6666qqrrrrqqufr7NmzzwD4+7//+9/mqquuuuqqq6666qqr/neictVVV1111VVXXXXVC3XNNdc8mKuuuuqqq6666qqrrvrficpVV1111VVXXXXVVc/XmTNnHgRw33333cpVV1111VVXXXXVVVf970Tlqquuuuqqq6666qrn65prrnkwwNmzZ5/BVVddddVVV1111VVX/e9E5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVz9eLvdiLvTbAfffddytXXXXVVVddddVVV131vxOVq6666qqrrrrqqqteqLNnz97KVVddddVVV1111VVX/e9E5aqrrrrqqquuuuqq5+uaa655MMB99913K1ddddVVV1111VVXXfW/E5Wrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVVz2PF3uxF3ttgH/4h3/4Ha666qqrrrrqqquuuup/LypXXXXVVVddddVVVz2Pa6655sEA9913361cddVVV1111VVXXXXV/15Urrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV131PM6cOfMggPvuu+/pXHXVVVddddVVV1111f9eVK666qqrrrrqqquueh7XXHPNgwHOnj37DK666qqrrrrqqquuuup/LypXXXXVVVddddVVVz2Pa6655sFcddVVV1111VVXXXXV/35Urrrqqquuuuqqq656HmfOnHkwwD/8wz/8NlddddVVV1111VVXXfW/F5Wrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVVz2Pa6655sEA9913361cddVVV1111VVXXXXV/15Urrrqqquuuuqqq656Dtdcc82DAe67775bueqqq6666qqrrrrqqv/dqFx11VVXXXXVVVdd9RzOnDnzYICzZ8/eylVXXXXVVVddddVVV/3vRuWqq6666qqrrrrqqudwzTXXPBjgvvvuu5Wrrrrqqquuuuqqq676343KVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquew4u92Iu9FsA//MM//A5XXXXVVVddddVVV131vxuVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVc9h2uuuebBAPfdd9+tXHXVVVddddVVV1111f9uVK666qqrrrrqqquueg5nzpx5MMDZs2dv5aqrrrrqqquuuuqqq/53o3LVVVddddVVV1111XO45pprHgxw33333cpVV1111VVXXXXVVVf970blqquuuuqqq6666qrn8Q//8A+/zVVXXXXVVVddddVVV/3vR+Wqq6666qqrrrrqqmd5ndd5nfcGuO+++27lqquuuuqqq6666qqr/vejctVVV1111VVXXXXVs5w5c+ZBXHXVVVddddVVV1111f8dVK666qqrrrrqqquuepZrrrnmwQD/8A//8DtcddVVV1111VVXXXXV/35Urrrqqquuuuqqq656lhd7sRd7bYB/+Id/+G2uuuqqq6666qqrrrrqfz8qV1111VVXXXXVVVc9yzXXXPNggPvuu+9Wrrrqqquuuuqqq6666n8/KlddddVVV1111VVXXfY6r/M67wXwW7/1W9/NVVddddVVV1111VVX/d9A5aqrrrrqqquuuuqqy86cOfNggPvuu+9Wrrrqqquuuuqqq6666v8GKlddddVVV1111VVXXXbNNdc8GODs2bPP4Kqrrrrqqquuuuqqq/5voHLVVVddddVVV1111WUv9mIv9toA//AP//DbXHXVVVddddVVV1111f8NVK666qqrrrrqqquuuuyaa655MMB99913K1ddddVVV1111VVXXfV/A5Wrrrrqqquuuuqqq3id13md9wb4rd/6re/mqquuuuqqq6666qqr/u+gctVVV1111VVXXXUVL/ZiL/ZaAPfdd9+tXHXVVVddddVVV1111f8dVK666qqrrrrqqquuepazZ88+g6uuuuqqq6666qqrrvq/g8pVV1111VVXXXXVVbzYi73YawP8wz/8w29z1VVXXXXVVVddddVV/3dQueqqq6666qqrrrqKa6655sEA9913361cddVVV1111VVXXXXV/x1Urrrqqquuuuqqq/6fe53XeZ33Bvit3/qt7+Gqq6666qqrrrrqqqv+b6Fy1VVXXXXVVVdd9f/ci73Yi70WwD/8wz/8NlddddVVV1111VVXXfV/C5Wrrrrqqquuuuqq/+de7MVe7LUB/uEf/uG3ueqqq6666qqrrrrqqv9bqFx11VVXXXXVVVf9P3fNNdc8GOC+++67lauuuuqqq6666qqrrvq/hcpVV1111VVXXXXV/2Ov8zqv894Av/Vbv/XdXHXVVVddddVVV1111f89VK666qqrrrrqqqv+H3uxF3ux1wL4h3/4h9/hqquuuuqqq6666qqr/u+hctVVV1111VVXXfX/2Iu92Iu9NsA//MM//DZXXXXVVVddddVVV131fw+Vq6666qqrrrrqqv+nXud1Xue9r7nmmgcD3Hfffbdy1VVXXXXVVVddddVV//dQueqqq6666qqrrvp/7rd+67e+m6uuuuqqq6666qqrrvq/icpVV1111VVXXXXV/1Ov8zqv814A//AP//A7XHXVVVddddVVV1111f9NVK666qqrrrrqqqv+n3qxF3ux1wb4h3/4h9/mqquuuuqqq6666qqr/m+ictVVV1111VVXXfX/0Ou8zuu8F8Bv/dZvffd99913K1ddddVVV1111VVXXfV/E5Wrrrrqqquuuuqq/4de7MVe7LUB/uEf/uF3uOqqq6666qqrrrrqqv+7qFx11VVXXXXVVVf9P/RiL/Zirw3wD//wD7/NVVddddVVV1111VVX/d9F5aqrrrrqqquuuur/mdd5ndd572uuuebBAPfdd9+tXHXVVVddddVVV1111f9dVK666qqrrrrqqqv+n3mxF3ux1wL4rd/6re/mqquuuuqqq6666qqr/m+jctVVV1111VVXXfX/zIu92Iu9NsBv/dZvfQ9XXXXVVVddddVVV131fxuVq6666qqrrrrqqv9nrrnmmgcD/MM//MNvc9VVV1111VVXXXXVVf+3Ubnqqquuuuqqq676f+R1Xud13hvgt37rt76Hq6666qqrrrrqqquu+r+PylVXXXXVVVddddX/I6/zOq/zXgD/8A//8NtcddVVV1111VVXXXXV/31Urrrqqquuuuqqq/4febEXe7HXBvit3/qt7+aqq6666qqrrrrqqqv+76Ny1VVXXXXVVVdd9f/E67zO67w3wG/91m99N1ddddVVV1111VVXXfX/A5Wrrrrqqquuuuqq/yde53Ve570A/uEf/uF3uOqqq6666qqrrrrqqv8fqFx11VVXXXXVVVf9P/FiL/Zirw3wD//wD7/NVVddddVVV1111VVX/f9A5aqrrrrqqquuuur/gdd5ndd5b4Df+q3f+u777rvvVq666qqrrrrqqquuuur/BypXXXXVVVddddVV/w+8zuu8znsB/MM//MPvcNVVV1111VVXXXXVVf9/ULnqqquuuuqqq676P+7FXuzFXvvFXuzFXhvgt37rt76bq6666qqrrrrqqquu+v+DylVXXXXVVVddddX/ce/0Tu/0WQA/8iM/8tlcddVVV1111VVXXXXV/y9Urrrqqquuuuqqq/6P+fAP//Dvep3XeZ335rmcPXv2GVx11VVXXXXVVVddddX/L1Suuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676vwo96EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yr+EfTYVZcZgWHoAAAAAElFTkSuQmCC) + + diff --git a/docs/kcl/line.md b/docs/kcl/line.md index 69d13f320..970066a5f 100644 --- a/docs/kcl/line.md +++ b/docs/kcl/line.md @@ -37,7 +37,7 @@ line( ```js triangle = startSketchOn(XZ) |> startProfileAt([0, 0], %) - // The 'end' argument means it ends at exactly [10, 0]. + // The END argument means it ends at exactly [10, 0]. // This is an absolute measurement, it is NOT relative to // the start of the sketch. |> line(endAbsolute = [10, 0]) diff --git a/docs/kcl/max.md b/docs/kcl/max.md index c9e55d2e4..2e4cb7629 100644 --- a/docs/kcl/max.md +++ b/docs/kcl/max.md @@ -33,10 +33,7 @@ max(args: [number]): number ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ - angle = 70, - length = max(15, 31, 4, 13, 22) - }, %) + |> angledLine(angle = 70, length = max(15, 31, 4, 13, 22)) |> line(end = [20, 0]) |> close() diff --git a/docs/kcl/min.md b/docs/kcl/min.md index 00c0595b4..efdb4daab 100644 --- a/docs/kcl/min.md +++ b/docs/kcl/min.md @@ -33,10 +33,7 @@ min(args: [number]): number ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ - angle = 70, - length = min(15, 31, 4, 13, 22) - }, %) + |> angledLine(angle = 70, length = min(15, 31, 4, 13, 22)) |> line(end = [20, 0]) |> close() diff --git a/docs/kcl/offsetPlane.md b/docs/kcl/offsetPlane.md index 1ddf56f52..28e974582 100644 --- a/docs/kcl/offsetPlane.md +++ b/docs/kcl/offsetPlane.md @@ -20,7 +20,7 @@ offsetPlane( | Name | Type | Description | Required | |----------|------|-------------|----------| -| `plane` | [`PlaneData`](/docs/kcl/types/PlaneData) | The plane (e.g. 'XY') which this new plane is created from. | Yes | +| `plane` | [`PlaneData`](/docs/kcl/types/PlaneData) | The plane (e.g. XY) which this new plane is created from. | Yes | | `offset` | [`number`](/docs/kcl/types/number) | Distance from the standard plane this new plane will be created at. | Yes | ### Returns diff --git a/docs/kcl/patternLinear3d.md b/docs/kcl/patternLinear3d.md index 20616cd9a..8d8cec6b9 100644 --- a/docs/kcl/patternLinear3d.md +++ b/docs/kcl/patternLinear3d.md @@ -57,15 +57,15 @@ case = startSketchOn(XY) |> startProfileAt([-size, -size], %) |> line(end = [2 * size, 0]) |> line(end = [0, 2 * size]) - |> tangentialArcTo([-size, size], %) + |> tangentialArc(endAbsolute = [-size, size]) |> close(%) |> extrude(length = 65) -thing1 = startSketchOn(case, 'end') +thing1 = startSketchOn(case, face = END) |> circle(center = [-size / 2, -size / 2], radius = 25) |> extrude(length = 50) -thing2 = startSketchOn(case, 'end') +thing2 = startSketchOn(case, face = END) |> circle(center = [size / 2, -size / 2], radius = 25) |> extrude(length = 50) @@ -88,11 +88,11 @@ case = startSketchOn(XY) |> startProfileAt([-size, -size], %) |> line(end = [2 * size, 0]) |> line(end = [0, 2 * size]) - |> tangentialArcTo([-size, size], %) + |> tangentialArc(endAbsolute = [-size, size]) |> close(%) |> extrude(length = 65) -thing1 = startSketchOn(case, 'end') +thing1 = startSketchOn(case, face = END) |> circle(center = [-size / 2, -size / 2], radius = 25) |> extrude(length = 50) diff --git a/docs/kcl/polar.md b/docs/kcl/polar.md deleted file mode 100644 index c3faa7e46..000000000 --- a/docs/kcl/polar.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: "polar" -excerpt: "Convert polar/sphere (azimuth, elevation, distance) coordinates to cartesian (x/y/z grid) coordinates." -layout: manual ---- - -Convert polar/sphere (azimuth, elevation, distance) coordinates to cartesian (x/y/z grid) coordinates. - - - -```js -polar(data: PolarCoordsData): [number] -``` - - -### Arguments - -| Name | Type | Description | Required | -|----------|------|-------------|----------| -| `data` | [`PolarCoordsData`](/docs/kcl/types/PolarCoordsData) | Data for polar coordinates. | Yes | - -### Returns - -[`[number]`](/docs/kcl/types/number) - - -### Examples - -```js -exampleSketch = startSketchOn(XZ) - |> startProfileAt([0, 0], %) - |> line(end = polar({ angle = 30, length = 5 }), tag = $thing) - |> line(end = [0, 5]) - |> line(end = [segEndX(thing), 0]) - |> line(end = [-20, 10]) - |> close() - -example = extrude(exampleSketch, length = 5) -``` - -![Rendered example of polar 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADrv0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq676X+Kaa655MM9033333cpVV1111VVXXXXVVVddddVV/xIqV1111VVXXfW/wDXXXPPgz/mcz/ktnum3fuu3vvu3f/u3v+e+++67lauuuuqqq6666qqrrrrqqqteEMrx48e56qqrrrrqqv/Jrrnmmgd/0zd909M3NzePnzt37vg0Tcdf7dVe7bVf8RVf8a0f8pCHvPStt976N4eHh7tcddVVV1111VVXXXXVVVdd9dwox48f56qrrrrqqqv+p7rmmmse/E3f9E1PB3jGM57B933f9/G3f/u3/M3f/A2nTp06/sqv/Mov/Yqv+Ipv/ZCHPOSlDw8PL509e/ZWrrrqqquuuuqqq6666qqrrrofetCDHsRVV1111VVX/U90zTXXPPibvumbng7wjGc8g+/7vu/juR07doyXfMmX5LVe67UA+Id/+Iff/pEf+ZHP+Yd/+Iff5qqrrrrqqquuuuqqq6666ir0oAc9iKuuuuqqq676n+aaa6558Dd90zc9HeAZz3gG3/d938cLc+zYMV7yJV+S13qt1wLgvvvuu/VHf/RHP+e3fuu3vpurrrrqqquuuuqqq6666qr/vyjHjx/nqquuuuqqq/4nueaaax784R/+4d91zTXXPPgZz3gG3//938+/ZL1ec9ttt/E3f/M3rFYrXuzFXuz4K77iK77167zO67z30dHRpVtvvfWvueqqq6666qqrrrrqqquu+v+Hcvz4ca666qqrrrrqf4prrrnmwR/+4R/+XS/2Yi/22s94xjP4/u//fgAkIYl/yXq95hnPeAZ/+7d/y2q14sYbbzz+mq/5mm/9Oq/zOu+9ubl5/B/+4R9+h6uuuuqqq6666qqrrrrqqv8/KMePH+eqq6666qqr/ie45pprHvzhH/7h3/ViL/Zir/2MZzyD7//+7+e5SUISL4wk1us1z3jGM3jSk57EarXixhtvPP7yL//yr/06r/M67725uXn8H/7hH36Hq6666qqrrrrqqquuuuqq//sox48f56qrrrrqqqv+u11zzTUP/vAP//DverEXe7HXvnTpEt/xHd/BCyMJSbwwkliv1zzjGc/gSU96Evfeey8PfehDj7/8y7/8a7/O67zOe29ubh7/h3/4h9/hqquuuuqqq6666qqrrrrq/y7K8ePHueqqq6666qr/bp/0SZ/0Uy/2Yi/22pcuXeIbvuEbAJDEv0QS/xJJrNdr7rnnHp70pCdx7733curUqeOv9mqv9tqv8zqv896bm5vHz549+4zDw8Ndrrrqqquuuuqqq6666qqr/m+hHD9+nKuuuuqqq6767/S5n/u5v/ViL/Zir33p0iW+4Ru+gQeShCReGElI4l8iifV6zT333MPf/M3fcOnSJU6dOnX81V7t1V77FV/xFd/6IQ95yEvfeuutf3N4eLjLVVddddVVV1111VVXXXXV/w2U48ePc9VVV1111VX/XT73cz/3t17sxV7stS9dusQ3fMM38IJIQhIvjCQk8S+RhCTuuece/uZv/oa//du/5dSpU8df+ZVf+aVf8RVf8a0f8pCHvPTh4eGls2fP3spVV1111VVXXXXVVVddddX/bpTjx49z1VVXXXXVVf8dPvdzP/e3XuzFXuy1L126xDd+4zciCUm8MJKQxAsjCUn8SyQBsFqteOITn8jf/u3fcurUqeOv/Mqv/NKv8zqv897XXHPNgw8PDy+dPXv2Vq666qqrrrrqqquuuuqqq/53Qg960IO46qqrrrrqqv9qn/u5n/tbL/ZiL/baly5d4gd+4Ae4dOkSz802/xLb/Ets8y+xzf2OHz/OS77kS/Jar/VaANx33323fv3Xf/37/MM//MNvc9VVV1111VVXXXXVVVdd9b8L5fjx41x11VVXXXXVf6XP/dzP/a0Xe7EXe+1Lly7x8z//89x33308P5L4l0hCEi+MJCTxwkhCEgCr1YpnPOMZ/O3f/i2r1YoXe7EXO/46r/M67/06r/M67310dHTp1ltv/Wuuuuqqq6666qqrrrrqqqv+d0APetCDuOqqq6666qr/Kp/7uZ/7Wy/2Yi/22pcuXeIXfuEXuO2227DNv8Q2/xLb/Ets86Kwzf2OHz/OS77kS/Jar/VaANx33323/tZv/dZ3/+iP/ujncNVVV1111VVXXXXVVVdd9T8b5fjx41x11VVXXXXVf4XP/dzP/a0Xe7EXe+1Lly7xC7/wC9x2220ASEISL4wkJPHCSEISL4wkJPEvkYQkAFarFc94xjP427/9W1arFTfeeOPxl3/5l3/t13md13nvzc3N4//wD//wO1x11VVXXXXVVVddddVVV/3PRDl+/DhXXXXVVVdd9Z/tcz/3c3/rxV7sxV770qVL/MIv/AK33XYbz00SknhhJCGJF0YSknhhJCGJf4kk7rdarXjGM57Bk570JO69914e+tCHHn/5l3/5136d13md997c3Dz+D//wD7/DVVddddVVV1111VVXXXXV/yyU48ePc9VVV1111VX/mT73cz/3t17sxV7stQF+6qd+ittuu40XRhL/EklI4oWRhCReGElI4oWRhCTut1qtuPfee3nSk57Evffey6lTp46/2qu92mu/zuu8zntvbm4eP3v27DMODw93ueqqq6666qqrrrrqqquu+u9HOX78OFddddVVV131n+VzP/dzf+vFXuzFXhvgh37oh7jtttuQhCReGElI4l8iiX+JJCTxwkhCEi+MJCRxv9Vqxb333svf/M3fcOnSJU6dOnX81V7t1V77FV/xFd96c3Pz+NmzZ59xeHi4y1VXXXXVVVddddVVV1111X8f9KAHPYirrrrqqquu+s/wuZ/7ub/1Yi/2Yq8N8EM/9EPcdtttPD+2+ZfY5l9im3+Jbf4ltnlR2Oa5HT9+nLd8y7fkQQ96EPfdd9+t//AP//DbP/qjP/o59913361cddVVV1111VVXXXXVVVf916McP36cq6666qqrrvqP9uEf/uHf9Yqv+IpvDfBDP/RD3HbbbbwgkviXSEISL4wkJPHCSEISL4wkJPEvkcRzW61W/M3f/A1/+7d/y6lTp46/8iu/8ku/4iu+4ls/5CEPeenDw8NLZ8+evZWrrrrqqquuuuqqq6666qr/OpTjx49z1VVXXXXVVf+RPvzDP/y7Xud1Xue9AX7oh36I22+/HUm8MJKQxL9EEpJ4YSQhiRdGEpJ4YSQhiRdGEpJ4bqvViic+8Yn87d/+LaWU46/92q/90q/zOq/z3tdcc82DDw8PL509e/ZWrrrqqquuuuqqq6666qqr/vOhBz3oQVx11VVXXXXVf5QP//AP/67X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knhBJCGJF0QSknhuq9WKe+65hyc+8Ynce++9nDp16virv/qrv/brvM7rvPfm5ubxs2fPPuPw8HCXq6666qqrrrrqqquu+v+Hcvz4ca666qqrrrrqf6PDw8Pds2fPPuMVX/EV33pzc5OLFy9ydHTEv0QSL4wk/iWSeGEk8S+RxHMbx5G77rqLZzzjGYzjyE033cS1117LS7zES/ASL/ES3HfffVy6dInnJol/iSReGElI4oWRhCReGEn8SyTxwkjihZGEJJ7barXinnvu4W/+5m+4dOkSp06dOv7qr/7qr/2Kr/iKb725uXn87Nmzzzg8PNzlqquuuuqqq6666qqr/v+gHD9+nKuuuuqqq6763+rWW2/9a4CXeZmXee1rrrmGO+64g2EYkMQLI4l/iSReGEn8SyTxwkji+RnHkXPnzvGMZzyDcRw5c+YM8/mcl3iJl+AlXuIlWK/X3HfffTyQJCTxwkhCEi+MJCTxwkjihZGEJF4YSUjiBZGEJF4YSbwg99xzD3/zN3/DX//1X/Owhz3s+Ku/+qu/9iu+4iu+9UMe8pCXPjw8vHT27Nlbueqqq6666qqrrrrqqv/7KMePH+eqq6666qqr/jc7e/bsMx7ykIe89I033vjgEydO8PSnPx0ASfxLJPHCSOJfIol/iSReGEk8P+M4cu7cOZ7xjGcwjiObm5tsb2/ziEc8gpd4iZdgNptx++2380CSkMQLIwlJvDCSeGEkIYkXRhKSeGEk8cJIQhIviCQk8YKs12v+5m/+hr/+67/m1KlTx1/lVV7lpV/ndV7nva+55poHHx4eXjp79uytXHXVVVddddVVV1111f9dlOPHj3PVVVddddVV/5sdHh7u/sM//MPvvOIrvuJbX3PNNccB7rvvPu4niRdGEv8SSfxLJPHCSOJfIonnZxxHzp07x1133cWlS5c4fvw429vb3HLLLbzES7wEs9mM22+/nQeSxL9EEi+MJCTxwkhCEi+MJF4YSUjihZHECyMJSbwg6/WaJz7xifz1X/81q9WK13md13np13md13nv13md13nvW2+99W/Onj17K1ddddVVV1111VVXXfV/D3rQgx7EVVddddVVV/1fcM011zz4m77pm54O8Cd/8ic8/elP536S+JdI4l8iiX+JJF4YSfxLJPHCbGxscObMGR70oAdx+vRpAC5dusTf/d3f8fd/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JPHCSEISL4gkJPGCSEISL4gkJPGCSEISL4gkXpDVasU999zDH/7hH7K7u8upU6eOv/qrv/prv87rvM57b25uHj979uwzDg8Pd7nqqquuuuqqq6666j8betCDHsRVV1111VVXXfUf55prrnnwN33TNz0d4A//8A952tOexr9EEv8akvjXksS/liT+rSTxbyWJfy9J/GfY3NzkwQ9+MI997GO53zOe8Qx+7/d+j9tuu43nxzb/Etu8MLZ5YWzzwtjmhbHNC2ObF8Y2L4xtHvKQh/A6r/M6POQhD+G+++679R/+4R9++0d/9Ec/57777ruVq6666qqrrrrqqqv+s1COHz/OVVddddVVV131H+fw8HD37Nmzz3jFV3zFtz5x4gS333474zjyopDEv5Yk/rUk8a8liX8rSfxbSeI/iiT+vcZx5OzZszzjGc9gGAauueYajh8/zku+5Evyki/5kqzXa+69914eSBKSeGEk8cJIQhIviCQk8YJIQhIviCQk8YJIQhIviCReGElcvHiRv/qrv+Kv/uqvOH369PFXeZVXeelXfMVXfOuHPOQhL314eHjp7Nmzt3LVVVddddVVV1111X80yvHjx7nqqquuuuqqq/5j3XrrrX99zTXXPPhRj3rUS99888084QlP4F9DEv9akvjXksS/hST+rSTx7yGJ/yiS+Lcax5GzZ8/yjGc8g2EY2NzcZHt7m0c+8pG85Eu+JPP5nNtuu40HkoQkXhBJSOKFkcQLI4kXRhIvjCReGEm8IJKQxAsiCUmsVise//jH81d/9VecPn36+Ku8yqu89Ou8zuu89zXXXPPgw8PDS2fPnr2Vq6666qqrrrrqqqv+o1COHz/OVVddddVVV131H+/WW2/9m1d8xVd86xMnThzf3Nzkjjvu4F9LEv9akvi3kMS/hST+rSTx7yWJ/0iS+NcYx5GzZ89y1113MQwDm5ubbG9v86AHPYiXfMmXZD6fc9ttt/FAknhhJPHCSEISL4gkJPGCSEISL4gkJPGCSEISL4gkXhhJAKxWKx7/+MfzV3/1V6xWK173dV/3pV/ndV7nvV/ndV7nvW+99da/OXv27K1cddVVV1111VVXXfXvhR70oAdx1VVXXXXVVVf957jmmmse/E3f9E1PB/ibv/kb/vZv/xZJ/FtI4l9LEv9akvi3ksS/lST+I0jiP5okXlSbm5uc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j2Sb/wi2+feyzVVXXXXVVVddddX/EgRXXXXVVVddddVV/0/dd999t37913/9+9x33323bm9v8wqv8Ar8e9nGNv9ZbGOb/wy2+Y9mm/9ItvmPYJv/zSTxQFtbWwDcd999t3LVVVddddVVV131nAiuuuqqq6666qqr/h+77777bv2sz/qs1wF4+Zd/eR71qEfxH8E2tvnPYpv/DLaxzX8k29jmP4ptrnpOW1tbAJw9e/YZXHXVVVddddVVVz0ngquuuuqqq6666qr/5+67775bv/7rv/59AF7hFV6B7e1t/qPYxjb/GWxjm/8MtvmPZpv/KLb597LNv4dtrrrqqquuuuqqq/4XILjqqquuuuqqq666it/6rd/67t/6rd/67u3tbd7qrd6K/2i2sc1/BtvY5j+abWzzH8k2V/37SOKqq6666qqrrrrqX4Hgqquuuuqqq6666qrLfuRHfuSz/+Ef/uG3t7e3eZ3XeR3+M9jGNv8ZbGOb/2i2+Y9km/8Itvn3ss3/BVtbWwDcd999t3LVVVddddVVV131nAiuuuqqq6666qqrrrrs7Nmzz/j6r//69wF49KMfzcu//Mtjm/8MtrHNfwbb2OY/km1s8x/FNv8RbHMVbG1tAXD27Nlbueqqq6666qqrrnpOBFddddVVV1111VVXPct9991369d//de/D8CjH/1obrzxRmxjm/8MtrHNfwbb/EezzX8U2/xHsM2/h23+rWzzX0kSV1111VVXXXXVVf9KBFddddVVV1111VVXPYff+q3f+u4f+ZEf+ezt7W1e93Vfl+3tbQBsY5v/DLaxzX8029jmP5Jt/qPY5qp/v62tLQDuu+++W7nqqquuuuqqq656TgRXXXXVVVddddVVVz2P3/7t3/6ef/iHf/jt7e1tXvd1X5cHso1t/jPYxjb/0WzzH8k2tvmPYJt/L9tcddVVV1111VVXXfV8EVx11VVXXXXVVVdd9Tzuu+++W7/+67/+fe67775bb7zxRl7hFV6B52Yb2/xnsM1/NNvY5j+Sbf4j2Obfyzb/Vrb5rySJfy1JXHXVVVddddVVV/0bEFx11VVXXXXVVVdd9Xzdd999t37913/9ewO8wiu8AjfccAPPj21s8x/NNrb5j2ab/0i2+Y9gm6v+9ba2tgC47777buWqq6666qqrrrrqeRFcddVVV1111VVXXfUC/cM//MPv/MiP/MhnA7ze670e29vbvCC2sc1/NNvY5j+SbWzzH8U2/xFs8+9hm38r2/xvtLW1BcDZs2dv5aqrrrrqqquuuup5EVx11VVXXXXVVVdd9UL96I/+6Of81m/91ndvb2/z1m/91vxLbPOfwTb/0WzzH8U2V/3nkMRVV1111VVXXXXVvxHBVVddddVVV1111VX/oh/90R/9nPvuu+/W7e1tXvd1X5d/iW1s8x/NNrb5j2Sb/yi2+feyzb+Hbf4/2draAuC+++67lauuuuqqq6666qrnRXDVVVddddVVV1111b/ovvvuu/WzPuuzXgfg0Y9+NK/wCq/Ai8I2tvmPZhvb/EexjW3+I9jm38s2V1111VVXXXXVVVf9hyC46qqrrrrqqquuuupFct9999369V//9e8D8OhHP5obbriBF5VtbPMfzTb/kWzzH8E2/162+beyzb+Fbf6nkcQLs7W1BcB99913K1ddddVVV1111VXPi+Cqq6666qqrrrrqqhfZb/3Wb333j/zIj3z29vY2r/d6r8e/lm1s8x/JNrb5j2Kb/wi2+f/ANv8akrjqqquuuuqqq676L0Rw1VVXXXXVVVddddW/ym/91m999z/8wz/89vb2Nq/7uq/Lv4Vt/qPZ5j+Kbf4j2Obfwzb/Vrb5/2BrawuAs2fPPoOrrrrqqquuuuqq50Vw1VVXXXXVVVddddW/ytmzZ5/x9V//9e8D8OhHP5pXeIVX4N/CNrb5j2Sb/yi2+Y9gm38P2/x/JYmrrrrqqquuuuqqfyeCq6666qqrrrrqqqv+1e67775bP/MzP/N1AB796Edz44038m9lm/9ItrHNfwTb2ObfyzZX/efY2toC4L777ruVq6666qqrrrrqqudFcNVVV1111VVXXXXVv8k//MM//PaP/MiPfPb29jav+7qvy/b2Nv9WtrHNfyTb/EexzX8n2/xb2OZfyzb/GpL477S1tQXA2bNnb+Wqq6666qqrrrrqeRFcddVVV1111VVXXfVv9tu//dvf8w//8A+/vb29zVu/9Vvz72Wb/0i2+Y9im38P21z1opPEVVddddVVV1111X8Agquuuuqqq6666qqr/s3uu+++W7/+67/+fe67775bt7e3ed3XfV3+vWxjm/8otrHNfwTb/HvY5t/KNv/bSeKqq6666qqrrrrqvxjBVVddddVVV1111VX/Lvfdd9+tn/mZn/naAI9+9KN59KMfzX8E2/xHss3/BLb5r2Sb/8u2trYAuO+++27lqquuuuqqq6666nkRXHXVVVddddVVV13173b27NlnfP3Xf/37ALzCK7wC29vb/EewjW3+o9jm38s2/11s8/+BJF4Ukrjqqquuuuqqq676FxBcddVVV1111VVXXfUf4rd+67e++0d+5Ec+e3t7m7d+67fmP5Jt/qPY5t/LNv8etrnq329rawuAs2fPPoOrrrrqqquuuuqq54/gqquuuuqqq6666qr/ML/927/9Pf/wD//w29vb27zu674u/5FsY5v/CLb597LNv4dt/i1s83+ZJF4Uktja2gLgvvvuu5Wrrrrqqquuuuqq54/gqquuuuqqq6666qr/MPfdd9+tX//1X/8+AI9+9KN5+Zd/eWzzH8k2/xFs8+9lm/8NbPPfTRL/USRx1VVXXXXVVVdd9SIiuOqqq6666qqrrrrqP9R9991369d//de/D8BjHvMYbrzxRmzzH8k2/xFs8+9lm38r21z1b7e1tQXAfffddytXXXXVVVddddVVzx/BVVddddVVV1111VX/4X7rt37ru3/kR37ks7e3t3m913s9tre3sY1t/qPY5j+Cbf63sc3/RZK46qqrrrrqqquu+g9GcNVVV1111VVXXXXVf4rf+q3f+u5/+Id/+O3t7W1e7/Vej/vZ5j+Kbf4j2Obfwzb/Vra56kUnifttbm4CcN999z2dq6666qqrrrrqqueP4Kqrrrrqqquuuuqq/xRnz559xtd//de/z3333XfrjTfeyCu8witwP9vY5j+CbWzz72Wbfw/bXPX8SeKqq6666qqrrrrqvwnBVVddddVVV1111VX/ae67775bP+uzPut1AF7xFV+RRz/60TyQbf6j2Obfyzb/Hrb5t7DNv5Zt/jVs8z+ZJP4lknigra0tAM6ePfsMrrrqqquuuuqqq54/gquuuuqqq6666qqr/lPdd999t/7Ij/zIZwO84iu+Itvb2zyQbf6j2ObfyzZXXXXVVVddddVVV/2fQXDVVVddddVVV1111X+6H/3RH/2c3/qt3/ru7e1t3uZt3obnZhvb/Eewzb+Xbf6tbPNvYZv/bSTxX0USz21rawuAs2fP3spVV1111VVXXXXV80dw1VVXXXXVVVddddV/iR/90R/9nPvuu+/W7e1tXu/1Xo/nxzb/EWzz72Wbfyvb/Fewzf90kviXSOKqq6666qqrrrrqPwnBVVddddVVV1111VX/Je67775bP/MzP/O1AR796EfzCq/wCjw/tvmPYJv/bWxz1fOSxPOztbUFwH333XcrV1111VVXXXXVVc8fwVVXXXXVVVddddVV/2XOnj37jK//+q9/H4DHPOYx3HjjjTw/tvmPYJt/D9v8W9nmqquuuuqqq6666qr/dgRXXXXVVVddddVVV/2X+q3f+q3v/pEf+ZHP3t7e5vVe7/V4QWzzH8E2/x62ueo/jyReGEm8IFtbWwDcd999t3LVVVddddVVV131/BFcddVVV1111VVXXfVf7rd/+7e/5x/+4R9+e3t7m9d7vdfjBbGNbf69bPPvYZt/C9v8a9nmX8M2/1NJ4qqrrrrqqquuuuq/GcFVV1111VVXXXXVVf/l7rvvvlu//uu//n3uu+++Wx/96EfzCq/wCrwwtvn3ss1V/7NI4oWRxAuytbUFwH333XcrV1111VVXXXXVVS8YwVVXXXXVVVddddVV/y3uu+++W7/+67/+fQAe85jHcOONN/LC2Obfyzb/Vrb5t7DN/xS2+Y8iif9OW1tbXHXVVVddddVVV70ICK666qqrrrrqqquu+m/zD//wD7/9Iz/yI5+9vb3N673e67G9vc0LY5v/Trb5r2Cb/+8k8aI4e/bsrVx11VVXXXXVVVe9YARXXXXVVVddddVVV/23+q3f+q3v/od/+Iff3t7e5m3e5m34l9jm38M2/9Vs8/+NJF4YSfxbSWJrawuA++6771auuuqqq6666qqrXjCCq6666qqrrrrqqqv+W509e/YZX//1X/8+9913363b29u83uu9Hv8S2/x72ObfyjZXXXXVVVddddVVV/2vQXDVVVddddVVV1111X+7++6779bP+qzPeh2ARz/60Tz60Y/mX2Kbfw/b/Feyzb+GbV5Utvm/RBIviCSuuuqqq6666qqr/hUIrrrqqquuuuqqq676H+G+++679eu//uvfB+AVX/EVufHGG/mX2Obfwzb/Fra56t9OEv9eW1tbANx33323ctVVV1111VVXXfWCEVx11VVXXXXVVVdd9T/Gb/3Wb333j/zIj3z29vY2r/d6r8eLwjZX/deSxAsjiX8rSbwgkrjf1tYWAGfPnn0GV1111VVXXXXVVS8YwVVXXXXVVVddddVV/6P89m//9vf8/d///W9vb2/zeq/3evxns82/hW3+tWxz1VVXXXXVVVddddV/KYKrrrrqqquuuuqqq/5Hue+++279+q//+vcGePSjH80rvMIr8C+xzb+Hbf4nss3/NZL4t5DEA21ubnLVVVddddVVV131IiC46qqrrrrqqquuuup/nLNnzz7j67/+698H4DGPeQw33ngj/xLb/FezzVX/cSTxr3XffffdylVXXXXVVVddddULRnDVVVddddVVV1111f9Iv/Vbv/XdP/IjP/LZ29vbvN7rvR7b29v8S2zzb2Wb/wq2+b9MEv/RJPHctra2ADh79uytXHXVVVddddVVV71gBFddddVVV1111VVX/Y/127/929/zD//wD7+9vb3N673e6/GisM2/lW3+tWzzf4kk/rNI4gWRxFVXXXXVVVddddV/AoKrrrrqqquuuuqqq/7Huu+++279+q//+ve57777br3xxht5hVd4BV4UtrnqP4ck/itJ4vnZ2toC4L777ruVq6666qqrrrrqqheM4Kqrrrrqqquuuuqq/9Huu+++Wz/rsz7rdQBe8RVfkUc/+tH8Z7LNv5Zt/jVs86KyzYvCNlddddVVV1111VVXPQ+Cq6666qqrrrrqqqv+x7vvvvtu/ZEf+ZHPBnjFV3xFtre3+ZfY5qr/WpJ4QSTxgkjiX2NrawuA++6771auuuqqq6666qqrXjiCq6666qqrrrrqqqv+V/jRH/3Rz/mt3/qt797e3uZt3uZteFHY5t/CNv9atrnqP5Yknh9JXHXVVVddddVVV72ICK666qqrrrrqqquu+l/jR3/0Rz/nvvvuu3V7e5vXe73X438z21wFkvjX2tzcBODs2bO3ctVVV1111VVXXfXCEVx11VVXXXXVVVdd9b/Gfffdd+tnfdZnvQ7Aox/9aF7xFV+Rf4lt/i1sc9VzksS/hST+tSTx/Ehia2sLgPvuu+9Wrrrqqquuuuqqq144gquuuuqqq6666qqr/le57777bv36r//69wF49KMfzY033si/xDb/FWzz/5Ukrrrqqquuuuqqq/4HIrjqqquuuuqqq6666n+d3/qt3/ruH/mRH/ns7e1tXu/1Xo//LLb5v0QS/5NI4vmRxPMjiauuuuqqq6666qp/JYKrrrrqqquuuuqqq/5X+u3f/u3v+fu///vf3t7e5q3f+q35l9jmfyvb/FeQxP8Gm5ubANx33323ctVVV1111VVXXfXCEVx11VVXXXXVVVdd9b/Sfffdd+vXf/3Xv/d9991364033sgrvMIr8C+xzb+Wbf41bPOiss3/dZJ4fiTx/Eji+ZHE/ba2tgA4e/bsM7jqqquuuuqqq6564Qiuuuqqq6666qqrrvpf6+zZs8/4+q//+vcBeMxjHsONN97IVf85JPGCSOKqq6666qqrrrrqfyiCq6666qqrrrrqqqv+V/uHf/iH3/6RH/mRz97e3ub1Xu/12N7e5oWxzb+Wba767yOJq6666qqrrrrqqn8jgquuuuqqq6666qqr/tf70R/90c/5h3/4h9/e3t7mbd7mbfjvZpurQBLPjySeH0m8KLa2tgC47777buWqq6666qqrrrrqhSO46qqrrrrqqquuuur/hK//+q9/n/vuu+/W7e1tXu/1Xo8XxjZX/e8giee2ubkJwNmzZ2/lqquuuuqqq6666oUjuOqqq6666qqrrrrq/4T77rvv1s/6rM96HYBHP/rRvMIrvAL/kWzzn8E2/5tJ4j+CJK666qqrrrrqqqv+ExBcddVVV1111VVXXfV/xn333Xfr13/9178PwGMe8xhuvPFGXhDbXPVsknhBJPGvJYnnRxIvKkk8t62tLba2tgC47777buWqq6666qqrrrrqhaMcP36cq6666qqrrrrqqqv+77j11lv/GuBlX/ZlX/vGG2/kb/7mb3hBJPGvIYl/DUm8KCTxL5HEv0QSL4wkXhBJvCCSeEEk8fxI4vmRxPMjiecmiftde+21vOEbviEv9VIvBcDXf/3Xv8+tt97611x11VVXXXXVVVe9cJTjx49z1VVXXXXVVVddddX/LWfPnn3GQx7ykJe+6aabHryzs8PTn/50XhBJ/GtI4kUliReFJP4lkviXSOKFkcQLIokXRBIviCSeH0k8P5J4bpJ4bpIAeMmXfEle9VVflcc85jH0fc99991368///M9/9S/8wi98DVddddVVV1111VX/MvSgBz2Iq6666qqrrrrqqqv+77nmmmse/E3f9E1PB/izP/sz/vRP/5TnRxL/GpJ4UUniRSGJf4kk/iWSeGEk8YJI4gWRxPMjiedHEs+PJJ4fSTy3l3qpl+JhD3sYW1tbANx33323/tZv/dZ3/+iP/ujncNVVV1111VVXXfWioxw/fpyrrrrqqquuuuqqq/7vOTw83D179uwzXvEVX/Gtd3Z2OHfuHPv7+zw/knhRSeJFJYkXhST+JZL4l0jihZHECyKJF0QSz48knh9JPD+SeG6SuN/W1haPecxjeKM3eiOuu+46+r7nvvvuu/Xnf/7nv/pLv/RL3+Yf/uEffoerrrrqqquuuuqqfx3K8ePHueqqq6666qqrrrrq/6Zbb731rwFe9mVf9rVvvPFGnva0pzEMA89NEv8aknhRSOJFIYl/iST+JZJ4QSTxwkji+ZHECyKJ50cSz48knpsktra2eMxjHsPrvM7rcN111wFw33333fpd3/VdH/31X//17/MP//APv8NVV1111VVXXXXVvw160IMexFVXXXXVVVddddVV/3ddc801D/6wD/uw73rxF3/x197f3+d7v/d7eW6S+NeQxItKEv8SSfxLJPEvkcQLIokXRhLPjyReEEk8P5J4bpJ4bltbWzz84Q/npV7qpbjffffdd+vXf/3Xv88//MM//DZXXXXVVVddddVV/37oQQ96EFddddVVV1111VVX/d925syZB33u537ub19zzTUP/tM//VP+7M/+jOcmiReVJF5UkviXSOJfIol/iSReEEm8IJJ4QSTx/Eji+ZHE8yOJ+21tbfGwhz2Ml37pl+Z+//AP//DbX//1X/8+9913361cddVVV1111VVX/cdBD3rQg7jqqquuuuqqq6666v++a6655sHf9E3f9HSA3/iN3+AJT3gCDySJfw1JvCgk8aKQxAsjiX+JJF4QSbwgknhBJPH8SOL5kcTzI4mtrS1e6qVeioc//OHc70d+5Ec++7d/+7e/57777ruVq6666qqrrrrqqv94lOPHj3PVVVddddVVV1111f99h4eHu2fPnn3GK77iK771mTNneNrTnsYwDNxPEv8aknhRSOJFIYkXRhL/Ekm8IJJ4QSTxgkji+ZHE8yOJ53b99dfzRm/0Rrz0S780J0+eBOBHfuRHPvuzPuuzXucf/uEffufw8HCXq6666qqrrrrqqv8c6EEPehBXXXXVVVddddVVV/3/8eEf/uHf9Tqv8zrvvb+/z/d+7/fyQJJ4UUniRSGJF4UkXhhJvDCSeGEk8YJI4vmRxAsiiecmiQd66Zd+aR7+8IeztbUFwH333Xfrb/3Wb333j/7oj34OV1111VVXXXXVVf81qFx11VVXXXXVVVdd9f/Kj/7oj37Oi73Yi732Nddc8+DXe73X4zd+4ze46l9HEi/MS7/0S/Pwhz+cra0tAO67775bf+u3fuu7f/RHf/RzuOqqq6666qqrrvqvhR70oAdx1VVXXXXVVVddddX/L9dcc82Dv+mbvunpAH/6p3/Kn/3Zn3E/SbyoJPGikMS/RBIvjCReGEm8MJJ4QSTx/Eji+ZHEc9va2uIRj3gEL/3SL8397rvvvlt/67d+67t/9Ed/9HO46qqrrrrqqquu+u9BOX78OFddddVVV1111VVX/f9yeHi4e/bs2We84iu+4lvv7Oxw7tw59vf3AZDEi0oSLwpJ/Esk8cJI4oWRxAsjiedHEi+IJJ4fSdxva2uLxz72sbze670e1113HQD33Xffrd/1Xd/1MV//9V//Pv/wD//wO1x11VVXXXXVVVf996EcP36cq6666qqrrrrqqqv+/7n11lv/GuBlX/ZlX/vGG2/kaU97GsMwIIkXlSReFJL4l0jihZHECyOJF0QSL4gkXhBJPD+S2Nra4rGPfSyv93qvx/XXXw/Afffdd+uXfMmXvM13fdd3fcytt97611x11VVXXXXVVVf996Ny1VVXXXXVVVddddX/W7/927/9PS/+4i/+2i/2Yi/22q/3eq/HT//0T3PVFZJ4fra3t3n4wx/Oy7zMy3C/f/iHf/jtr//6r3+f++6771auuuqqq6666qqr/mdBD3rQg7jqqquuuuqqq6666v+va6655sGf8zmf81vXXHPNg//sz/6MP/3TP0USLwpJvCgk8S+RxAsjiRdGEi+IJF4QSTw/knigra0tXuZlXoZHPOIR3O9HfuRHPvu3f/u3v+e+++67lauuuuqqq6666qr/mdCDHvQgrrrqqquuuuqqq676/+3FXuzFXvtzP/dzf2t/f5/f+I3f4K677uJFJYl/iST+JZJ4YSTxwkjiBZHECyKJ50cSANdddx0v8zIvw/XXX8/9fuRHfuSzf/RHf/RzuOqqq6666qqrrvqfj3L8+HGuuuqqq6666qqrrvr/7ezZs7cCvOzLvuxr33jjjTz96U9nGAZeFJL4l0jiXyKJF0YSL4wkXhBJvCCSeH5e9mVfltd8zdfkxV7sxdje3ua+++679ed//ue/+rM+67Ne5x/+4R9+h6uuuuqqq6666qr/HdCDHvQgrrrqqquuuuqqq666CuBzPudzfuvFX/zFX3t/f5/v+77v40UhiX+JJP4lknhhJPHCSOIFkcTzI4nn9jIv8zI88pGPZGtrC4D77rvv1t/6rd/67h/90R/9HK666qqrrrrqqqv+90EPetCDuOqqq6666qqrrrrqKoAzZ8486HM/93N/+5prrnnwE57wBH7zN3+Tf4kkXhSSeGEk8cJI4oWRxAsiiedHEgBbW1s84hGP4GVf9mW533333Xfrb/3Wb333j/7oj34OV1111VVXXXXVVf97oQc96EFcddVVV1111VVXXXXV/a655poHf9M3fdPTAf7sz/6MP/uzP+OFkcSLQhIvjCReGEm8MJJ4QSTx/Gxvb/OIRzyCl33Zl+V+9913360/+qM/+jm/9Vu/9d1cddVVV1111VVX/e9HOX78OFddddVVV1111VVXXXW/w8PD3bNnzz7jFV/xFd96Z2eH8+fPs7+/zwsiiReFJF4YSbwwknhhJPH8SOK5bW1t8eIv/uK8wRu8Addffz0A9913363f9V3f9TFf//Vf/z633nrrX3PVVVddddVVV131fwN60IMexFVXXXXVVVddddVVVz23d3zHd/ysd3qnd/rs/f19vu/7vo8XRhL/Ekm8MJJ4YSTxgkjiBZHE/ba2tnjkIx/Jy77sy3K/f/iHf/jtr//6r3+f++6771auuuqqq6666qqr/u+hctVVV1111VVXXXXVVc/Hb//2b3/Pi7/4i7/2i73Yi732677u6/Kbv/mb/G+1tbXFy73cy/GIRzyC+/3Ij/zIZ//Wb/3Wd589e/YZXHXVVVddddVVV/3fhR70oAdx1VVXXXXVVVddddVVz88111zz4G/6pm96OsCf/dmf8Wd/9mc8P5L4l0jihZHECyOJF0QSz8/29jav9VqvxfXXX8/9fuRHfuSzf/RHf/RzuOqqq6666qqrrvr/gXL8+HGuuuqqq6666qqrrrrq+Tk8PNw9e/bsM17xFV/xrXd2djh37hz7+/s8N0n8SyTxwkjihZHECyKJB3rZl31ZXuu1XouXe7mXY3t7m/vuu+/Wn//5n//qz/qsz3qdf/iHf/gdrrrqqquuuuqqq/7/oBw/fpyrrrrqqquuuuqqq656QW699da/BnjZl33Z177xxht5+tOfzjAMPJAk/iWSeGEk8cJI4gWRBMDLvuzL8lqv9Vo8+MEPZjabcd9999368z//81/9pV/6pW/zD//wD7/DVVddddVVV1111f8/6EEPehBXXXXVVVddddVVV131wlxzzTUP/vAP//DverEXe7HX3t/f5/u+7/t4IEn8SyTxwkjihZHE87O9vc0jH/lIXu7lXo773Xfffbf+1m/91nf/6I/+6Odw1VVXXXXVVVdd9f8betCDHsRVV1111VVXXXXVVVf9S6655poHf87nfM5vXXPNNQ/+sz/7M/7sz/6M+0niXyKJF0YSL4wkHmh7e5tHPvKRvNzLvRz3u++++2790R/90c/5rd/6re/mqquuuuqqq6666ioA9KAHPYirrrrqqquuuuqqq656UVxzzTUP/qZv+qanA/zmb/4mT3jCEwCQxL9EEi+MJF4YSQBsb2/zyEc+kpd7uZfjfvfdd9+tP/qjP/o5v/Vbv/XdXHXVVVddddVVV131QOhBD3oQV1111VVXXXXVVVdd9aJ6ndd5nff+8A//8O/a39/np3/6p9nf30cS/xJJvDCSeGF2dnZ45CMfycu93Mtxv3/4h3/47a/7uq9777Nnzz6Dq6666qqrrrrqqqueH/SgBz2Iq6666qqrrrrqqquu+tf48A//8O96ndd5nffe39/n+77v+5DEv0QSL4wknp/t7W1e7uVejkc96lHc70d+5Ec++7d/+7e/57777ruVq6666qqrrrrqqqteGCpXXXXVVVddddVVV131r/QjP/Ijn33NNdc8+MVe7MVe+3Vf93X5zd/8TSTxH2l7e5vXfu3X5oYbbuB+P/IjP/LZv/3bv/099913361cddVVV1111VVXXfWiQA960IO46qqrrrrqqquuuuqqf61rrrnmwd/0Td/0dIA/+7M/48///M95YSTxwkgC4FGPehQv93Ivx/b2NgD33Xffrb/1W7/13T/6oz/6OVx11VVXXXXVVVdd9a9FOX78OFddddVVV1111VVXXfWvdXh4uHv27NlnvOIrvuJb7+zscO7cOfb393lBJPHCvPzLvzyv8zqvw6Me9Shmsxn33XffrT//8z//1V/6pV/6Nv/wD//wO1x11VVXXXXVVVdd9W9BOX78OFddddVVV1111VVXXfVvceutt/41wMu+7Mu+9o033sjTn/50hmHg+ZHEc9ve3uYlX/Ilecu3fEtuuOEGZrMZ9913360///M//9Vf+qVf+jb/8A//8DtcddVVV1111VVXXfXvQTl+/DhXXXXVVVddddVVV131b3X27NlnPOQhD3npm2666cGnT5/miU98Is+PJO63vb3NS77kS/LGb/zG3HDDDQDcd999t37Xd33Xx3z913/9+/zDP/zD73DVVVddddVVV1111X8E9KAHPYirrrrqqquuuuqqq67697jmmmse/Dmf8zm/dc011zz4z/7sz/jzP/9znpsktre3edSjHsXLv/zLc7/77rvv1h/90R/97N/6rd/6Hq666qqrrrrqqquu+o+GHvSgB3HVVVddddVVV1111VX/Xi/2Yi/2Wp/7uZ/72wA/8zM/w1133cX9tre3efSjH83Lv/zLc79/+Id/+O2v//qvf5/77rvvVq666qqrrrrqqquu+s9COX78OFddddVVV1111VVXXfXvdfbs2WcAvPiLv/hr33jjjTz96U9nNpvx6q/+6rzu674uN9xwAwA/8iM/8tnf8A3f8D4///M//zWHh4e7XHXVVVddddVVV131nwk96EEP4qqrrrrqqquuuuqqq/6jfPiHf/h3vc7rvM5781x+5Ed+5LN/+7d/+3vuu+++W7nqqquuuuqqq6666r8Klauuuuqqq6666qqrrvoP9KM/+qOfc8011zz4zJkzDwb4rd/6re/+0R/90c/hqquuuuqqq6666qr/DuhBD3oQV1111VVXXXXVVVdd9R/tmmuuefB99913K1ddddVVV1111VVX/XdCD3rQg7jqqquuuuqqq6666qqrrrrqqquuuuqqq/5PonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1X8IzQiA59FzjwYAAAAAElFTkSuQmCC) - - diff --git a/docs/kcl/pow.md b/docs/kcl/pow.md index 434fd7bdc..410a206aa 100644 --- a/docs/kcl/pow.md +++ b/docs/kcl/pow.md @@ -37,7 +37,7 @@ pow( ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ angle = 50, length = pow(5, 2) }, %) + |> angledLine(angle = 50, length = pow(5, 2)) |> yLine(endAbsolute = 0) |> close() diff --git a/docs/kcl/profileStart.md b/docs/kcl/profileStart.md index 5850ba20c..64a985576 100644 --- a/docs/kcl/profileStart.md +++ b/docs/kcl/profileStart.md @@ -29,11 +29,8 @@ profileStart(sketch: Sketch): [number] ```js sketch001 = startSketchOn(XY) |> startProfileAt([5, 2], %) - |> angledLine({ angle = 120, length = 50 }, %, $seg01) - |> angledLine({ - angle = segAng(seg01) + 120, - length = 50 - }, %) + |> angledLine(angle = 120, length = 50, tag = $seg01) + |> angledLine(angle = segAng(seg01) + 120, length = 50) |> line(end = profileStart(%)) |> close() |> extrude(length = 20) diff --git a/docs/kcl/profileStartX.md b/docs/kcl/profileStartX.md index e41695236..230807973 100644 --- a/docs/kcl/profileStartX.md +++ b/docs/kcl/profileStartX.md @@ -29,9 +29,9 @@ profileStartX(sketch: Sketch): number ```js sketch001 = startSketchOn(XY) |> startProfileAt([5, 2], %) - |> angledLine([-26.6, 50], %) - |> angledLine([90, 50], %) - |> angledLineToX({ angle = 30, to = profileStartX(%) }, %) + |> angledLine(angle = -26.6, length = 50) + |> angledLine(angle = 90, length = 50) + |> angledLine(angle = 30, endAbsoluteX = profileStartX(%)) ``` ![Rendered example of profileStartX 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAACVBElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VX/Q/3wD//wpa7rdgC+8iu/8kF/8Ad/cBtXXXXVVVddddW/BsFVV1111VVXXXXVVVddddX/QD/xEz/hrut2eKaP/diPfcZDHvKQDa666qqrrrrqqn8Ngquuuuqqq6666qqrrrrqqv9hrrnmmgfzfHziJ37iP3DVVVddddVVV/1rULnqqquuuuqqq6666qqrrvpvdM011zz4tV/7td8L4MVf/MVf+8Ve7MVem6uuuuqqq6666j8Klauuuuqqq6666qqrrrrqqv8i11xzzYPPnDnz4Bd7sRd7rRd/8Rd/7Rd7sRd7bZ6P++6779ZrrrnmwTyXP/iDP/gUrrrqqquuuuqqfw0qV1111VVXXXXVVVddddVV/0muueaaB7/2a7/2ewG80zu902fzfNx33323/sM//MNv33fffbf+wz/8w+/8wz/8w2/zTD/xEz9hHuDVXu3Vvuiv/uqv7vmHf/iH3+aqq6666qqrrnpRoAc96EFcddVVV1111VVXXXXVVVf9e11zzTUPfrEXe7HXPnPmzINe/MVf/LVf7MVe7LV5Lvfdd9+tAL/1W7/13f/wD//wO//wD//w2/wLvumbvunp11xzzYN5prNnzz7jN3/zN7/rR3/0Rz+Hq6666qqrrrrqX0Llqquuuuqqq6666qqrrrrqX+maa6558JkzZx78Yi/2Yq/14i/+4q/9Yi/2Yq/N83Hffffd+lu/9VvfDfAP//APv/MP//APv82/0td//de/D8A7vdM7fdaLvdiLvfbf//3f/9Y//MM//A5XXXXVVVddddWLAj3oQQ/iqquuuuqqq6666qqrrrrqhbnmmmse/Nqv/drvBfDiL/7ir/1iL/Zir81zue+++249e/bsrX//93//2//wD//wO//wD//w2/wHerEXe7HX/tzP/dzfOnv27DM++IM/+MFcddVVV1111VUvCipXXXXVVVddddVVV1111VUPcM011zz4zJkzD36xF3ux13rxF3/x136xF3ux1+b5uO+++279rd/6re8G+NEf/dHP4T/ZP/zDP/z2P/zDP/z2i73Yi732h3/4h3/X13/9178PV1111VVXXXXVv4TKVVddddVVV1111VVXXfX/2jXXXPPg137t136va6655sGv8zqv8948H/fdd9+t//AP//Db9913363/8A//8Dv/8A//8Nv8N/iRH/mRz/ncz/3c136xF3ux177mmmsefN99993KVVddddVVV131wlC56qqrrrrqqquuuuqqq/7fuOaaax78Yi/2Yq995syZB734i7/4a7/Yi73Ya/Nc7rvvvlvPnj1769///d//9j/8wz/8zj/8wz/8Nv9D/MM//MNv//3f//1vv/iLv/hrv+M7vuNnff3Xf/37cNVVV1111VVXvTDoQQ96EFddddVVV1111VVXXXXV/z3XXHPNg8+cOfPgF3uxF3utF3/xF3/tF3uxF3ttno/77rvv1t/6rd/6boB/+Id/+J1/+Id/+G3+Bztz5syDvvmbv/nW++6779av//qvf59/+Id/+G2uuuqqq6666qoXBD3oQQ/iqquuuuqqq6666qqrrvrf75prrnnwa7/2a78XwDu90zt9Ns/Hfffdd+vZs2dv/fu///vf/od/+Iff+Yd/+Iff5n+hD//wD/+u13md13nvf/iHf/jtz/zMz3wdrrrqqquuuuqqFwQ96EEP4qqrrrrqqquuuuqqq6763+Waa6558Iu92Iu99pkzZx704i/+4q/9Yi/2Yq/Nc7nvvvtuBfit3/qt7/6Hf/iH3/mHf/iH3+b/iGuuuebB3/RN3/R0gM/8zM98nX/4h3/4ba666qqrrrrqqucHPehBD+Kqq6666qqrrrrqqquu+p/rmmuuefCZM2ce/GIv9mKv9eIv/uKv/WIv9mKvzfNx33333fpbv/Vb3w3wD//wD7/zD//wD7/N/2Hv+I7v+Fnv9E7v9Nn/8A//8Nuf+Zmf+TpcddVVV1111VXPD3rQgx7EVVddddVVV1111VVXXfU/xzXXXPPg137t134vgBd/8Rd/7Rd7sRd7bZ7Lfffdd+vZs2dv/fu///vf/od/+Iff+Yd/+Iff5v+Za6655sHf9E3f9HSAz/qsz3qdv//7v/9trrrqqquuuuqq54Ye9KAHcdVVV1111VVXXXXVVVf997jmmmsefObMmQe/2Iu92Gu9+Iu/+Gu/2Iu92GvzfNx33323/tZv/dZ3A/zoj/7o53DVZa/zOq/z3h/+4R/+XWfPnn3GB3/wBz+Yq6666qqrrrrquVG56qqrrrrqqquuuuqqq/7LXHPNNQ9+7dd+7fe65pprHvw6r/M6783zcd999936D//wD79933333foP//APv/MP//APv81Vz9c//MM//PY//MM//PaLvdiLvfbrvM7rvPdv/dZvfTdXXXXVVVddddUDoQc96EFcddVVV1111VVXXXXVVf/xrrnmmge/2Iu92GufOXPmQS/+4i/+2i/2Yi/22jyX++6779azZ8/e+vd///e//Q//8A+/8w//8A+/zVX/Kq/zOq/z3h/+4R/+Xffdd9+tH/IhH/IQrrrqqquuuuqqB0IPetCDuOqqq6666qqrrrrqqqv+fa655poHnzlz5sEv9mIv9lov/uIv/tov9mIv9to8H/fdd9+tv/Vbv/XdAP/wD//wO//wD//w21z17/Y5n/M5v/XiL/7ir/0jP/Ijn/2jP/qjn8NVV1111VVXXXU/9KAHPYirrrrqqquuuuqqq6666l/nmmuuefBrv/ZrvxfA67zO67z3Nddc82Cey3333Xfr2bNnb/37v//73/6Hf/iH3/mHf/iH3+aq/xQv9mIv9lqf+7mf+9v33XffrR/yIR/yEK666qqrrrrqqvtRueqqq6666qqrrrrqqqteqGuuuebBL/ZiL/baZ86cedCLv/iLv/aLvdiLvTbP5b777rsV4Ld+67e+++zZs8/4rd/6re/mqv8y//AP//A7//AP//DbL/ZiL/baH/7hH/5dX//1X/8+XHXVVVddddVVAFSuuuqqq6666qqrrrrqqme55pprHnzmzJkHv9iLvdhrvfiLv/hrv9iLvdhr83zcd999t/7Wb/3WdwP8wz/8w+/8wz/8w29z1X+rr//6r3+fb/qmb3r6i73Yi732Nddc8+D77rvvVq666qqrrrrqKipXXXXVVVddddVVV131/9g111zz4Nd+7dd+L4AXf/EXf+0Xe7EXe22ey3333Xfr2bNnb/37v//73/6Hf/iH3/mHf/iH3+aq/3Huu+++W3/rt37ru1/ndV7nvd/xHd/xs77+67/+fbjqqquuuuqqq9CDHvQgrrrqqquuuuqqq6666v+Da6655sFnzpx58Iu92Iu91ou/+Iu/9ou92Iu9Ns/Hfffdd+tv/dZvfTfAj/7oj34OV/2vcc011zz4m77pm55+33333foN3/AN7/P3f//3v81VV1111VVX/f9G5aqrrrrqqquuuuqqq/6Puuaaax782q/92u91zTXXPPh1Xud13pvn47777rv1H/7hH377vvvuu/Uf/uEffucf/uEffpur/te67777bv2t3/qt736d13md937Hd3zHz/77v//71+aqq6666qqr/n9DD3rQg7jqqquuuuqqq6666qr/7a655poHv9iLvdhrnzlz5kEv/uIv/tov9mIv9to8l/vuu+/Ws2fP3vr3f//3v/0P//APv/MP//APv81V/+dcc801D/6mb/qmpwN85md+5uv8wz/8w29z1VVXXXXVVf9/oQc96EFcddVVV1111VVXXXXV/ybXXHPNg8+cOfPgF3uxF3utF3/xF3/tF3uxF3ttno/77rvv1t/6rd/6boB/+Id/+J1/+Id/+G2u+n/hdV7ndd77wz/8w7/rvvvuu/VDPuRDHsJVV1111VVX/f9F5aqrrrrqqquuuuqqq/6Hu+aaax782q/92u8F8Dqv8zrvfc011zyY53Lffffdevbs2Vv//u///rf/4R/+4Xf+4R/+4be56v+tf/iHf/jt++6779ZrrrnmwS/2Yi/22v/wD//w21x11VVXXXXV/0/oQQ96EFddddVVV1111VVXXfU/xTXXXPPgF3uxF3vtM2fOPOjFX/zFX/vFXuzFXpvn47777rv1t37rt7777Nmzz/it3/qt7+aqq57L67zO67z3h3/4h3/Xfffdd+uHfMiHPISrrrrqqquu+v+JylVXXXXVVVddddVVV/03ueaaax4M8Nqv/drv9eIv/uKv/WIv9mKvzfNx33333fpbv/Vb3w3wD//wD7/zD//wD7/NVVf9C/7+7//+t/7hH/7ht1/sxV7stV/ndV7nvX/rt37ru7nqqquuuuqq/3/Qgx70IK666qqrrrrqqquuuuq/wjXXXPPg137t134vgBd/8Rd/7Rd7sRd7bZ7Lfffdd+vZs2dv/fu///vf/od/+Iff+Yd/+Iff5qqr/o1e7MVe7LU/93M/97fuu+++Wz/kQz7kIVx11VVXXXXV/z9Urrrqqquuuuqqq6666j/BNddc8+AzZ848+MVe7MVe68Vf/MVf+8Ve7MVem+fjvvvuu/W3fuu3vhvgR3/0Rz+Hq676D/QP//APv/0P//APv/1iL/Zir/3hH/7h3/X1X//178NVV1111VVX/f9C5aqrrrrqqquuuuqqq/4DXHPNNQ9+7dd+7fe65pprHvw6r/M6783zcd999936D//wD79933333foP//APv/MP//APv81VV/0n+5Ef+ZHP+dzP/dzXfrEXe7HXvuaaax5833333cpVV1111VVX/f9B5aqrrrrqqquuuuqqq/6Vrrnmmge/2Iu92GufOXPmQS/+4i/+2i/2Yi/22jyX++6779azZ8/e+vd///e//Q//8A+/8w//8A+/zVVX/Tf4h3/4h9/+h3/4h99+sRd7sdd+x3d8x8/6+q//+vfhqquuuuqqq/7/QA960IO46qqrrrrqqquuuuqqF+Saa6558JkzZx78Yi/2Yq/14i/+4q/9Yi/2Yq/N83Hffffd+lu/9VvfDfAP//APv/MP//APv81VV/0Pcc011zz4m77pm55+9uzZZ3zd133de//DP/zDb3PVVVddddVV/z9Queqqq6666qqrrrrqqge45pprHvzar/3a7wXwOq/zOu99zTXXPJjnct9999169uzZW//+7//+t//hH/7hd/7hH/7ht7nqqv/B7rvvvlt/67d+67tf53Ve571f53Ve573+4R/+4be56qqrrrrqqv8f0IMe9CCuuuqqq6666qqrrvr/6Zprrnnwi73Yi732mTNnHvTiL/7ir/1iL/Zir83zcd999936W7/1W9999uzZZ/zWb/3Wd3PVVf8LXXPNNQ/+pm/6pqcDfOZnfubr/MM//MNvc9VVV1111VX/96EHPehBXHXVVVddddVVV131f98111zzYIDXfu3Xfq8Xf/EXf+0Xe7EXe22ej/vuu+/Wf/iHf/jt++6779Z/+Id/+J1/+Id/+G2uuur/iHd8x3f8rHd6p3f67H/4h3/47c/8zM98Ha666qqrrrrq/z70oAc9iKuuuuqqq6666qqr/u+55pprHvzar/3a7wXw4i/+4q/9Yi/2Yq/Nc7nvvvtuPXv27K1///d//9v/8A//8Dv/8A//8NtcddX/YWfOnHnQN3/zN98K8Jmf+Zmv8w//8A+/zVVXXXXVVVf934Ye9KAHcdVVV1111VVXXXXV/27XXHPNg8+cOfPgF3uxF3utF3/xF3/tF3uxF3ttno/77rvv1t/6rd/6boAf/dEf/Ryuuur/odd5ndd57w//8A//rvvuu+/WD/mQD3kIV1111VVXXfV/G5Wrrrrqqquuuuqqq/7Xueaaax782q/92u8F8E7v9E6fzfNx33333foP//APv33ffffd+g//8A+/8w//8A+/zVVXXcU//MM//PZ999136zXXXPPg13md13nv3/qt3/purrrqqquuuur/LvSgBz2Iq6666qqrrrrqqqv+57rmmmse/GIv9mKvfebMmQe9+Iu/+Gu/2Iu92GvzXO67775bz549e+vf//3f//Y//MM//M4//MM//DZXXXXVC/Q6r/M67/3hH/7h33Xffffd+iEf8iEP4aqrrrrqqqv+76Jy1VVXXXXVVVddddX/GNdcc82Dz5w58+AXe7EXe60Xf/EXf+0Xe7EXe22ej/vuu+/W3/qt3/pugH/4h3/4nX/4h3/4ba666qoX2T/8wz/89j/8wz/89ou92Iu99uu8zuu892/91m99N1ddddVVV131fxN60IMexFVXXXXVVVddddVV/z2uueaaB7/2a7/2ewG8zuu8zntfc801D+a53HfffbeePXv21r//+7//7X/4h3/4nX/4h3/4ba666qp/txd7sRd77c/93M/9rbNnzz7jgz/4gx/MVVddddVVV/3fROWqq6666qqrrrrqqv8S11xzzYNf7MVe7LXPnDnzoBd/8Rd/7Rd7sRd7bZ6P++6779bf+q3f+u6zZ88+47d+67e+m6uuuuo/xT/8wz/89j/8wz/89ou92Iu99od/+Id/19d//de/D1ddddVVV131fw+Vq6666qqrrrrqqqv+w11zzTUPBnjt137t93rxF3/x136xF3ux1+b5uO+++279h3/4h9++7777bv2Hf/iH3/mHf/iH3+aqq676L/P1X//17/NN3/RNT3+xF3ux177mmmsefN99993KVVddddVVV/3fQuWqq6666qqrrrrqqn+3a6655sGv/dqv/V4AL/7iL/7aL/ZiL/baPJf77rvv1rNnz97693//97/9D//wD7/zD//wD7/NVVdd9d/qvvvuu/Xv//7vf/vFX/zFX/sd3/EdP+vrv/7r34errrrqqquu+r8FPehBD+Kqq6666qqrrrrqqhfdNddc8+AzZ848+MVe7MVe68Vf/MVf+8Ve7MVem+fjvvvuu/W3fuu3vhvgt3/7t7/nvvvuu5Wrrrrqf5wzZ8486Ju/+Ztvve+++279+q//+vf5h3/4h9/mqquuuuqqq/7vQA960IO46qqrrrrqqquuuuoFu+aaax782q/92u8F8E7v9E6fzfNx33333foP//APv33ffffd+g//8A+/8w//8A+/zVVXXfW/xod/+Id/1+u8zuu89z/8wz/89md+5me+DlddddVVV131fwd60IMexFVXXXXVVVddddVVV1xzzTUPfrEXe7HXPnPmzINe/MVf/LVf7MVe7LV5Lvfdd9+tZ8+evfXv//7vf/sf/uEffucf/uEffpurrrrqf7Vrrrnmwd/0Td/0dIDP/MzPfJ1/+Id/+G2uuuqqq6666v8G9KAHPYirrrrqqquuuuqq/4+uueaaB585c+bBL/ZiL/ZaL/7iL/7aL/ZiL/baPB/33Xffrb/1W7/13QD/8A//8Dv/8A//8NtcddVV/+e8zuu8znt/+Id/+Hf9wz/8w29/5md+5utw1VVXXXXVVf83ULnqqquuuuqqq676f+Kaa6558Gu/9mu/F8CLv/iLv/aLvdiLvTbP5b777rv17Nmzt/793//9b//DP/zD7/zDP/zDb3PVVVf9v/AP//APv33ffffd+mIv9mKv/eIv/uKv/fd///e/zVVXXXXVVVf974ce9KAHcdVVV1111VVXXfV/zTXXXPPgF3uxF3vtM2fOPOjFX/zFX/vFXuzFXpvn47777rv1t37rt7777Nmzz/it3/qt7+aqq676f+11Xud13vvDP/zDv+vs2bPP+OAP/uAHc9VVV1111VX/+1G56qqrrrrqqquu+l/ummuueTDAa7/2a7/Xi7/4i7/2i73Yi702z8d999136z/8wz/89n333XfrP/zDP/zOP/zDP/w2V1111VUP8A//8A+//Q//8A+//WIv9mKv/Tqv8zrv/Vu/9VvfzVVXXXXVVVf974Ye9KAHcdVVV1111VVXXfW/yTXXXPPg137t134vgBd/8Rd/7Rd7sRd7bZ7Lfffdd+vZs2dv/fu///vf/od/+Iff+Yd/+Iff5qqrrrrqRfA6r/M67/3hH/7h33Xffffd+iEf8iEP4aqrrrrqqqv+d0MPetCDuOqqq6666qqrrvqf6pprrnnwmTNnHvxiL/Zir/XiL/7ir/1iL/Zir83zcd999936W7/1W98N8Nu//dvfc999993KVVddddW/0ed8zuf81ou/+Iu/9o/8yI989o/+6I9+DlddddVVV131vxeVq6666qqrrrrqqv9Brrnmmge/9mu/9nsBvNM7vdNn83zcd999t/7DP/zDb9933323/sM//MPv/MM//MNvc9VVV131H+hHf/RHP/vFX/zFf/t1Xud13vu3f/u3v+e+++67lauuuuqqq67634nKVVddddVVV1111X+Ta6655sEv9mIv9tpnzpx50Iu/+Iu/9ou92Iu9Ns/lvvvuuxXgt37rt777H/7hH37nH/7hH36bq6666qr/ZP/wD//wO//wD//w2y/2Yi/22u/4ju/4WV//9V//Plx11VVXXXXV/07oQQ96EFddddVVV1111VX/2a655poHnzlz5sEv9mIv9lov/uIv/tov9mIv9to8H/fdd9+tv/Vbv/XdAP/wD//wO//wD//w21x11VVX/Te45pprHvxN3/RNT7/vvvtu/fqv//r3+Yd/+Iff5qqrrrrqqqv+96Fy1VVXXXXVVVdd9Z/gmmuuefBrv/ZrvxfAi7/4i7/2i73Yi702z+W+++679ezZs7f+/d///W//wz/8w+/8wz/8w29z1VVXXfU/xH333Xfrb/3Wb33367zO67z367zO67zXP/zDP/w2V1111VVXXfW/D3rQgx7EVVddddVVV1111b/HNddc8+AzZ848+MVe7MVe68Vf/MVf+8Ve7MVem+fjvvvuu/W3fuu3vvvs2bPP+K3f+q3v5qqrrrrqf7hrrrnmwd/0Td/0dIDP+qzPep2///u//22uuuqqq6666n8XKlddddVVV1111VX/Ctdcc82DAV77tV/7vV78xV/8tV/sxV7stXk+7rvvvlv/4R/+4bfvu+++W//hH/7hd/7hH/7ht7nqqquu+l/mvvvuu/VHfuRHPvud3umdPvsd3/EdP/vv//7vX5urrrrqqquu+t8FPehBD+Kqq6666qqrrrrqBbnmmmse/Nqv/drvBfDiL/7ir/1iL/Zir81zue+++249e/bsrX//93//2//wD//wO//wD//w21x11VVX/R9xzTXXPPibvumbng7wmZ/5ma/zD//wD7/NVVddddVVV/3vgR70oAdx1VVXXXXVVVddBXDNNdc8+MyZMw9+sRd7sdd68Rd/8dd+sRd7sdfm+bjvvvtu/a3f+q3vBvjt3/7t77nvvvtu5aqrrrrq/7DXeZ3Xee8P//AP/6777rvv1g/5kA95CFddddVVV131vweVq6666qqrrrrq/61rrrnmwa/92q/9XgDv9E7v9Nk8H/fdd9+t//AP//Db9913363/8A//8Dv/8A//8NtcddVVV/0/8w//8A+/fd999916zTXXPPh1Xud13vu3fuu3vpurrrrqqquu+t8BPehBD+Kqq6666qqrrvq/75prrnnwi73Yi732mTNnHvTiL/7ir/1iL/Zir81zue+++24F+K3f+q3v/od/+Iff+Yd/+Iff5qqrrrrqqste53Ve570//MM//Lvuu+++Wz/kQz7kIVx11VVXXXXV/w5Urrrqqquuuuqq/3OuueaaB585c+bBL/ZiL/ZaL/7iL/7aL/ZiL/baPB/33Xffrb/1W7/13QD/8A//8Dv/8A//8NtcddVVV131fP393//9b/3DP/zDb7/Yi73Ya7/O67zOe//Wb/3Wd3PVVVddddVV//OhBz3oQVx11VVXXXXVVf+7XXPNNQ9+7dd+7fcCePEXf/HXfrEXe7HX5rncd999t549e/bWv//7v//tf/iHf/idf/iHf/htrrrqqquu+ld5sRd7sdf+3M/93N+67777bv2QD/mQh3DVVVddddVV//NRueqqq6666qqr/le55pprHnzmzJkHv9iLvdhrvfiLv/hrv9iLvdhr83zcd999t/7Wb/3WdwP86I/+6Odw1VVXXXXVv9s//MM//PY//MM//PaLvdiLvfaHf/iHf9fXf/3Xvw9XXXXVVVdd9T8blauuuuqqq6666n+sa6655sEAr/3ar/1e11xzzYNf53Ve5715Pu67775b/+Ef/uG377vvvlv/4R/+4Xf+4R/+4be56qqrrrrqP8XXf/3Xv883fdM3Pf3FXuzFXvuaa6558H333XcrV1111VVXXfU/F5Wrrrrqqquuuup/jGuuuebBr/3ar/1eAC/+4i/+2i/2Yi/22jyX++6779azZ8/e+vd///e//Q//8A+/8w//8A+/zVVXXXXVVf9l7rvvvlv/4R/+4bdf7MVe7LXf8R3f8bO+/uu//n246qqrrrrqqv+50IMe9CCuuuqqq6666qr/etdcc82Dz5w58+AXe7EXe60Xf/EXf+0Xe7EXe22ej/vuu+/W3/qt3/pugN/+7d/+nvvuu+9Wrrrqqquu+m91zTXXPPibvumbnn727NlnfN3Xfd17/8M//MNvc9VVV1111VX/M6EHPehBXHXVVVddddVV//muueaaB7/2a7/2ewG80zu902fzfNx33323/sM//MNv33fffbf+wz/8w+/8wz/8w29z1VVXXXXV/0gf/uEf/l2v8zqv897/8A//8Nuf+Zmf+TpcddVVV1111f9M6EEPehBXXXXVVVddddV/rGuuuebBL/ZiL/baZ86cedCLv/iLv/aLvdiLvTbP5b777rsV4Ld+67e++x/+4R9+5x/+4R9+m6uuuuqqq/7XuOaaax78Td/0TU8H+MzP/MzX+Yd/+Iff5qqrrrrqqqv+50EPetCDuOqqq6666qqr/u2uueaaB585c+bBL/ZiL/ZaL/7iL/7aL/ZiL/baPB/33Xffrb/1W7/13QD/8A//8Dv/8A//8NtcddVVV131v9rrvM7rvPeHf/iHf9c//MM//PZnfuZnvg5XXXXVVVdd9T8Plauuuuqqq6666l/lmmuuefBrv/ZrvxfAi7/4i7/2i73Yi702z+W+++679ezZs7f+/d///W//wz/8w+/8wz/8w29z1VVXXXXV/zl///d//1v33XffrS/2Yi/22i/2Yi/22v/wD//w21x11VVXXXXV/yzoQQ96EFddddVVV1111fN3zTXXPPjMmTMPfrEXe7HXevEXf/HXfrEXe7HX5vm47777bv2t3/qt7wb40R/90c/hqquuuuqq/zde53Ve570//MM//Lvuu+++Wz/kQz7kIVx11VVXXXXV/yxUrrrqqquuuuqqZ7nmmmse/Nqv/drvdc011zz4dV7ndd6b5+O+++679R/+4R9++7777rv1H/7hH37nH/7hH36bq6666qqr/t/6h3/4h9/+h3/4h99+sRd7sdd+ndd5nff+rd/6re/mqquuuuqqq/7nQA960IO46qqrrrrqqv+Prrnmmge/9mu/9nsBvPiLv/hrv9iLvdhr81zuu+++W8+ePXvr3//93//2P/zDP/zOP/zDP/w2V1111VVXXfVcXud1Xue9P/zDP/y77rvvvls/5EM+5CFcddVVV1111f8c6EEPehBXXXXVVVdd9X/dNddc8+AzZ848+MVe7MVe68Vf/MVf+8Ve7MVem+fjvvvuu/W3fuu3vhvgH/7hH37nH/7hH36bq6666qqrrnoRfO7nfu5vvdiLvdhr/+iP/ujn/MiP/Mhnc9VVV1111VX/M6AHPehBXHXVVVddddX/Nddcc82DX/u1X/u9AN7pnd7ps3k+7rvvvlv/4R/+4bfvu+++W//hH/7hd/7hH/7ht7nqqquuuuqqf6MXe7EXe+3P/dzP/a2zZ88+44M/+IMfzFVXXXXVVVf9z0Dlqquuuuqqq/6Xu+aaax78Yi/2Yq995syZB734i7/4a7/Yi73Ya/Nc7rvvvlsBfuu3fuu7/+Ef/uF3/uEf/uG3ueqqq6666qr/QP/wD//w2//wD//w2y/2Yi/22h/+4R/+XV//9V//Plx11VVXXXXVfz8qV1111VVXXfW/yDXXXPPgM2fOPPjFXuzFXuvFX/zFX/vFXuzFXpvn47777rv1t37rt74b4B/+4R9+5x/+4R9+m6uuuuqqq676T/b1X//17/NN3/RNT3+xF3ux177mmmsefN99993KVVddddVVV/33onLVVVddddVV/00+93M/97d4Pj7zMz/zdXima6655sGv/dqv/V4AL/7iL/7aL/ZiL/baPJf77rvv1rNnz97693//97/9D//wD7/zD//wD7/NVVddddVVV/03uO+++279rd/6re9+ndd5nfd+x3d8x8/6+q//+vfhqquuuuqqq/57Ubnqqquuuuqq/yYv9mIv9to8H+/4ju/4WS/+4i/+2i/2Yi/22jwf9913362/9Vu/9d0AP/qjP/o5XHXVVVddddX/ID/yIz/y2a/zOq/z3i/2Yi/22i/2Yi/22v/wD//w21x11VVXXXXVfx/0oAc9iKuuuuqqq6767/ATP/ET5l9w33333foP//APv33ffffd+g//8A+/8w//8A+/zVVXXXXVVVf9D/fhH/7h3/U6r/M67/0P//APv/2Zn/mZr8NVV1111VVX/fehctVVV1111VX/w/zIj/zIZ//DP/zD7/zDP/zDb3PVVVddddVV/wv96I/+6Oe8zuu8znu/2Iu92Gu/2Iu92Gv/wz/8w29z1VVXXXXVVf89CK666qqrrrrqf5gf/dEf/Zx/+Id/+G2uuuqqq6666n+p++6779av//qvfx+AD//wD/8urrrqqquuuuq/D8FVV1111VVXXXXVVVddddVV/+H+4R/+4bfvu+++W6+55poHv/iLv/hrc9VVV1111VX/PdCDHvQgrrrqqquuuuq/w4u92Iu9Ns/HP/zDP/w2V1111VVXXfV/wOu8zuu894d/+Id/19mzZ5/xwR/8wQ/mqquuuuqqq/7rUY4fP85VV1111VVX/Ve45pprHry5uXl8c3Pz+Obm5vGjo6Pdo6Oj3VtvvfWvz549e+vZs2dvPXv27K1cddVVV1111f8RR0dHuw95yENe+sEPfvBLnz179hm33nrrX3PVVVddddVV/7XQgx70IK666qqrrrrqP9s111zz4G/6pm96Os/lvvvuu/VDPuRDHsJVV1111VVX/R/1Yi/2Yq/9uZ/7ub9133333fohH/IhD+Gqq6666qqr/msRXHXVVVddddVVV1111VVXXfWf5h/+4R9+++///u9/+5prrnnwh3/4h38XV1111VVXXfVfi+Cqq6666qqr/pu92Iu92Gtz1VVXXXXVVf+H/eiP/uhnA7zYi73Ya19zzTUP5qqrrrrqqqv+61COHz/OVVddddVVV/1n29zcPP7mb/7mH81z2dzcPP46r/M67/06r/M67/1Kr/RKb33mzJkHAzp79uytXHXVVVddddX/EWfPnn3Gi7/4i7/2Qx7ykJfe3Nw8/qd/+qc/w1VXXXXVVVf916By1VVXXXXVVf/N/uEf/uG3X+zFXuy1r7nmmge/2Iu92GsD3HfffbcC/MM//MNv/9Zv/db3/MM//MNvc9VVV1111VX/i33913/9+3zTN33T01/sxV7stV/sxV7stf/hH/7ht7nqqquuuuqq/3yU48ePc9VVV1111VX/2TY3N4+/4iu+4lsfHh7uHh4e7h4eHu4eHh7u3nrrrX/9mZ/5ma/z27/9299z6623/s3h4eHu0dHR7kMe8pCX3tzcPP6QhzzkpV/ndV7nvV/ndV7nvd/8zd/8ox/ykIe89Obm5olbb731r7nqqquuuuqq/0UODw93r7nmmge/+Iu/+Gtfc801D/6t3/qt7+Gqq6666qqr/vOhBz3oQVx11VVXXXXV/zTXXHPNg8+cOfPgF3uxF3utF3/xF3/tF3uxF3ttnst999136z/8wz/89j/8wz/8zm/91m99N1ddddVVV131P9w111zz4G/6pm96OsBnfdZnvc7f//3f/zZXXXXVVVdd9Z8LPehBD+Kqq6666qqr/qe75pprHnzmzJkHv9iLvdhrvfiLv/hrv9iLvdhr81zuu+++W//hH/7ht//hH/7hd37rt37ru7nqqquuuuqq/4He8R3f8bPe6Z3e6bP/4R/+4Xc+8zM/87W56qqrrrrqqv9c6EEPehBXXXXVVVdd9b/NNddc8+AzZ848+MVe7MVe68Vf/MVf+8Ve7MVem+dy33333foP//APv/0P//APv/MP//APv33ffffdylVXXXXVVVf9N7vmmmse/E3f9E1PB/jMz/zM1/mHf/iH3+aqq6666qqr/vOgBz3oQVx11VVXXXXV/3bXXHPNgwFe7MVe7LVf53Ve571e7MVe7LV5Lvfdd9+t//AP//Db//AP//A79913363/8A//8NtcddVVV1111X+D13md13nvD//wD/+u++6779YP+ZAPeQhXXXXVVVdd9Z8HPehBD+Kqq6666qqr/q+55pprHgzwYi/2Yq/9Oq/zOu/1Yi/2Yq/Nc7nvvvtu/Yd/+Iff/od/+Iffue+++279h3/4h9/mqquuuuqqq/4LXHPNNQ/+nM/5nN+65pprHvz1X//17/Nbv/Vb381VV1111VVX/edAD3rQg7jqqquuuuqq/w+uueaaB7/Yi73Ya7/Yi73Ya73O67zOe/Nc7rvvvlv/4R/+4bf/4R/+4Xfuu+++W//hH/7ht7nqqquuuuqq/ySv8zqv894f/uEf/l333XffrR/yIR/yEK666qqrrrrqPwd60IMexFVXXXXVVVf9f3TNNdc8+MVe7MVe+8Ve7MVe63Ve53Xem+dy33333foP//APv/0P//APv3Pffffd+g//8A+/zVVXXXXVVVf9B/rcz/3c33qxF3ux1/6RH/mRz/7RH/3Rz+Gqq6666qqr/uOhBz3oQVx11VVXXXXVVXDNNdc8+MVe7MVe+8Ve7MVe63Ve53Xem+dy33333foP//APv/0P//APv3Pffffd+g//8A+/zVVXXXXVVVf9O7zYi73Ya3/u537ub9133323fsiHfMhDuOqqq6666qr/eOhBD3oQV1111VVXXXXV87rmmmse/GIv9mKv/WIv9mKvdc011zz4xV7sxV6bB7jvvvtuPXv27K1///d//9v/8A//8Dv/8A//8NtcddVVV1111b/S537u5/7Wi73Yi732b/3Wb33313/9178PV1111VVXXfUfCz3oQQ/iqquuuuqqq676l11zzTUPfrEXe7HXfrEXe7HXuuaaax78Yi/2Yq/NA9x33323nj179ta///u//+1/+Id/+J1/+Id/+G2uuuqqq6666l9wzTXXPPibvumbnn7ffffd+lmf9Vmvc999993KVVddddVVV/3HQQ960IO46qqrrrrqqqv+9a655poHv9iLvdhrv9iLvdhrXXPNNQ9+sRd7sdfmAe67775bz549e+vf//3f//Y//MM//M4//MM//DZXXXXVVVdd9Xx8+Id/+He9zuu8znv/1m/91nd//dd//ftw1VVXXXXVVf9x0IMe9CCuuuqqq6666qp/v2uuuebBL/ZiL/baL/ZiL/Za11xzzYNf7MVe7LV5gPvuu+9WgH/4h3/47d/6rd/6nn/4h3/4ba666qqrrroKuOaaax78Td/0TU8/e/bsM77u677uvf/hH/7ht7nqqquuuuqq/xjoQQ96EFddddVVV1111X+8a6655sEv9mIv9tov9mIv9lrXXHPNg1/sxV7stXmA++6771aAf/iHf/jtf/iHf/id3/qt3/purrrqqquu+n/rwz/8w7/rdV7ndd77H/7hH377Mz/zM1+Hq6666qqrrvqPgR70oAdx1VVXXXXVVVf957vmmmsefObMmQe/2Iu92Gu9+Iu/+Gu/2Iu92GvzXO67775b/+Ef/uG3/+Ef/uF3fuu3fuu7ueqqq6666v+Na6655sHf9E3f9HSAz/zMz3ydf/iHf/htrrrqqquuuurfDz3oQQ/iqquuuuqqq676r3fNNdc8+MyZMw9+sRd7sdd68Rd/8dd+sRd7sdfmudx33323/sM//MNv/8M//MPv/NZv/dZ3c9VVV1111f9pr/M6r/PeH/7hH/5d9913360f8iEf8hCuuuqqq6666t8PPehBD+Kqq6666qqrrvrvd8011zz4zJkzD36xF3ux13rxF3/x136xF3ux1+a53Hfffbf+wz/8w2//wz/8w+/cd999t/7DP/zDb3PVVVddddX/GWfOnHnQ537u5/72Nddc8+DP/MzPfJ1/+Id/+G2uuuqqq6666t8HPehBD+Kqq6666qqrrvqf55prrnkwwIu92Iu99uu8zuu814u92Iu9Ns/lvvvuu/Uf/uEffvsf/uEffue+++679R/+4R9+m6uuuuqqq/5Xe53XeZ33/vAP//Dvuu+++279kA/5kIdw1VVXXXXVVf8+6EEPehBXXXXVVVddddX/fNdcc82DAV7sxV7stV/sxV7stV7ndV7nvXku9913363/8A//8Nv/8A//8Dv33Xffrf/wD//w21x11VVXXfW/yjXXXPPgD//wD/+uF3uxF3vtr//6r3+f3/qt3/purrrqqquuuurfDj3oQQ/iqquuuuqqq6763+maa6558Iu92Iu99ou92Iu91uu8zuu8N8/lvvvuu/Uf/uEffvsf/uEffue+++679R/+4R9+m6uuuuqqq/7He7EXe7HX/tzP/dzfuu+++279kA/5kIdw1VVXXXXVVf926EEPehBXXXXVVVddddX/Dddcc82DX+zFXuy1X+zFXuy1Xud1Xue9eS733Xffrf/wD//w2//wD//wO/fdd9+t//AP//DbXHXVVVdd9T/S537u5/7Wi73Yi732b/3Wb33313/9178PV1111VVXXfVvgx70oAdx1VVXXXXVVVf933TNNdc8+MVe7MVe+8Ve7MVe65prrnnwi73Yi702D3Dffffd+g//8A+/fd999936D//wD7/zD//wD7/NVVddddVV/yO82Iu92Gt/7ud+7m+dPXv2GZ/5mZ/52vfdd9+tXHXVVVddddW/HnrQgx7EVVddddVVV131/8M111zz4Bd7sRd77Rd7sRd7rWuuuebBL/ZiL/baPMB9991369mzZ2/9+7//+9/+h3/4h9/5h3/4h9/mqquuuuqq/zaf+7mf+1sv9mIv9tq/9Vu/9d1f//Vf/z5cddVVV1111b8eetCDHsRVV1111VVXXfX/0zXXXPPgF3uxF3vtF3uxF3uta6655sEv9mIv9to8wH333Xfr2bNnb/37v//73/6Hf/iH3/mHf/iH3+aqq6666qr/Mtdcc82Dv+mbvunp9913361f//Vf/z7/8A//8NtcddVVV1111b8OetCDHsRVV1111VVXXXUVwDXXXPPgF3uxF3vtF3uxF3uta6655sEv9mIv9to8wH333Xfr2bNnb73vvvtu/a3f+q3v+Yd/+Iff5qqrrrrqqv9UH/7hH/5dr/M6r/Pev/Vbv/XdX//1X/8+XHXVVVddddW/DnrQgx7EVVddddVVV1111fNzzTXXPPjFXuzFXvvFXuzFXuuaa6558Iu92Iu9Ng9w33333QrwD//wD7/9W7/1W9/zD//wD7/NVVddddVV/6HOnDnzoG/+5m++FeAzP/MzX+cf/uEffpurrrrqqquuetGhBz3oQVx11VVXXXXVVVe9KK655poHv9iLvdhrv9iLvdhrXXPNNQ9+sRd7sdfmAe67775bAf7hH/7ht//hH/7hd37rt37ru7nqqquuuurf7R3f8R0/653e6Z0++x/+4R9++zM/8zNfh6uuuuqqq6560aEHPehBXHXVVVddddVVV/1bXHPNNQ8+c+bMg1/sxV7stV78xV/8tV/sxV7stXku9913363/8A//8Nv/8A//8Du/9Vu/9d1cddVVV131r3bNNdc8+Ju+6ZueDvCZn/mZr/MP//APv81VV1111VVXvWjQgx70IK666qqrrrrqqqv+I1xzzTUPPnPmzINf7MVe7LVe/MVf/LVf7MVe7LV5Lvfdd9+t//AP//Db//AP//A7v/Vbv/XdXHXVVVdd9SJ5ndd5nff+8A//8O+67777bv2QD/mQh3DVVVddddVVLxr0oAc9iKuuuuqqq6666qr/DNdcc82Dz5w58+AXe7EXe60Xf/EXf+0Xe7EXe22ey3333XfrP/zDP/z2P/zDP/zOfffdd+s//MM//DZXXXXVVVc9j2uuuebBn/M5n/Nb11xzzYO//uu//n1+67d+67u56qqrrrrqqn8ZetCDHsRVV1111VVXXXXVf4VrrrnmwQAv9mIv9tqv8zqv814v9mIv9to8l/vuu+/Wf/iHf/jtf/iHf/id++6779Z/+Id/+G2uuuqqq6667HVe53Xe+8M//MO/6+zZs8/44A/+4Adz1VVXXXXVVf8y9KAHPYirrrrqqquuuuqq/w7XXHPNgwFe7MVe7LVf7MVe7LVe53Ve5715Lvfdd9+t//AP//Db//AP//A79913363/8A//8NtcddVVV/0/dc011zz4wz/8w7/rxV7sxV7767/+69/nt37rt76bq6666qqrrnrh0IMe9CCuuuqqq6666qqr/qe45pprHvxiL/Zir/1iL/Zir/U6r/M6781zue+++279h3/4h9/+h3/4h9+57777bv2Hf/iH3+aqq6666v+RF3uxF3vtz/3cz/2t++6779YP+ZAPeQhXXXXVVVdd9cKhBz3oQVx11VVXXXXVVVf9T3XNNdc8+MVe7MVe+8Ve7MVe63Ve53Xem+dy33333foP//APv/0P//APv3Pffffd+g//8A+/zVVXXXXV/3Gf8zmf81sv/uIv/tq/9Vu/9d1f//Vf/z5cddVVV1111QuGHvSgB3HVVVddddVVV131v8U111zz4Bd7sRd77Rd7sRd7rWuuuebBL/ZiL/baPMDZs2efcd999z397//+73/7H/7hH37nH/7hH36bq6666qr/Y86cOfOgb/7mb771vvvuu/WzPuuzXue+++67lauuuuqqq656/tCDHvQgrrrqqquuuuqqq/63uuaaax78Yi/2Yq/9Yi/2Yq91zTXXPPjFXuzFXpsHuO+++249e/bsM/7+7//+t/7hH/7hd/7hH/7ht7nqqquu+j/gcz/3c3/rxV7sxV77t37rt77767/+69+Hq6666qqrrnr+0IMe9CCuuuqqq6666qqr/q84c+bMg178xV/8dV7sxV7sta655poHv9iLvdhr8wD33XffrWfPnr31H/7hH37n7//+73/7H/7hH36bq6666qr/ha655poHf9M3fdPT77vvvlu//uu//n3+4R/+4be56qqrrrrqqueFHvSgB3HVVVddddVVV131f9U111zz4Bd7sRd7rRd7sRd77WuuuebBL/ZiL/baPMB9991369mzZ2+97777bv2t3/qt7/mHf/iH3+aqq6666n+JD//wD/+u13md13nvf/iHf/jtz/zMz3wdrrrqqquuuup5oQc96EFcddVVV1111VVX/X9xzTXXPPjFXuzFXvvFXuzFXuuaa6558Iu92Iu9Ng9w33333QrwD//wD7/9W7/1W9/zD//wD7/NVVddddX/UNdcc82Dv+mbvunpAJ/1WZ/1On//93//21x11VVXXXXVc0IPetCDuOqqq6666qqrrvr/6pprrnnwmTNnHvxiL/Zir/XiL/7ir/1iL/Zir81zue+++279h3/4h9/+h3/4h9/5rd/6re/mqquuuup/kNd5ndd57w//8A//rn/4h3/4nc/8zM98ba666qqrrrrqOaEHPehBXHXVVVddddVVV111xTXXXPPgM2fOPPjFXuzFXuvFX/zFX/vFXuzFXpvncvbs2Wf8/d///W/9wz/8w+/81m/91ndz1VVXXfXf6Jprrnnw53zO5/zWNddc8+DP/MzPfJ1/+Id/+G2uuuqqq6666tnQgx70IK666qqrrrrqqquuev7OnDnzoGuuueYhL/ZiL/ZaL/7iL/7aL/ZiL/baPJf77rvv1n/4h3/4nX/4h3/47d/6rd/6bq666qqr/ou9zuu8znt/+Id/+Hfdd999t37Ih3zIQ7jqqquuuuqqZ0MPetCDuOqqq6666qqrrrrqRXPNNdc8+MyZMw+65pprHvI6r/M67/ViL/Zir81zue+++279h3/4h9/+h3/4h9+57777bv2Hf/iH3+aqq6666j/RNddc8+AP+7AP+64Xf/EXf+2v//qvf5/f+q3f+m6uuuqqq6666gr0oAc9iKuuuuqqq6666qqr/m2uueaaBwO82Iu92Gu9zuu8znu/2Iu92GvzXO67775b/+Ef/uG3/+Ef/uF37rvvvlv/4R/+4be56qqrrvoP9jqv8zrv/eEf/uHfdd999936IR/yIQ/hqquuuuqqq65AD3rQg7jqqquuuuqqq6666j/ONddc8+AXe7EXe+0Xe7EXe63XeZ3XeW+ey3333XfrP/zDP/z2P/zDP/zOfffdd+s//MM//DZXXXXVVf8BPvdzP/e3XuzFXuy1f+RHfuSzf/RHf/RzuOqqq6666ipAD3rQg7jqqquuuuqqq6666j/PNddc8+AXe7EXe+0Xe7EXe63XeZ3XeW+ey9mzZ5/x93//97/1D//wD79z33333foP//APv81VV1111b/Bi73Yi732537u5/7Wfffdd+uHfMiHPISrrrrqqquuAvSgBz2Iq6666qqrrrrqqqv+61xzzTUPfrEXe7HXfrEXe7HXep3XeZ335rncd999t/7DP/zD7/zDP/zDb9933323/sM//MNvc9VVV131Ivrcz/3c33qxF3ux1/6t3/qt7/76r//69+Gqq6666qr/79CDHvQgrrrqqquuuuqqq67673PmzJkHvfiLv/jrvNiLvdhrXXPNNQ9+sRd7sdfmAe67775bz549e+s//MM//M7f//3f//Y//MM//DZXXXXVVS/ANddc8+Bv+qZvevp999136zd8wze8z9///d//NlddddVVV/1/hh70oAdx1VVXXXXVVVddddX/HNdcc82DX+zFXuy1XuzFXuy1r7nmmge/2Iu92GvzAPfdd9+tZ8+evfXv//7vf/sf/uEffucf/uEffpurrrrqqgf48A//8O96ndd5nff+rd/6re/++q//+vfhqquuuuqq/8/Qgx70IK666qqrrrrqqquu+p/rmmuuefCLvdiLvfaLvdiLvdY111zz4Bd7sRd7bR7gvvvuu/Xs2bO3/v3f//1v/8M//MPv/MM//MNvc9VVV/2/ds011zz4m77pm54O8Jmf+Zmv8w//8A+/zVVXXXXVVf9foQc96EFcddVVV1111VVXXfW/xzXXXPPgF3uxF3vtF3uxF3uta6655sEv9mIv9to8wNmzZ59h2//wD//w27/1W7/1Pf/wD//w21x11VX/73z4h3/4d73O67zOe//DP/zDb3/mZ37m63DVVVddddX/V+hBD3oQV1111VVXXXXVVVf973XNNdc8+MVe7MVe+8Ve7MVe65prrnnwi73Yi702D3DffffdKkl///d//1v/8A//8Du/9Vu/9d1cddVV/+ddc801D/6mb/qmpwN85md+5uv8wz/8w29z1VVXXXXV/0foQQ96EFddddVVV1111VVX/d9x5syZB11zzTUPebEXe7HXevEXf/HXfrEXe7HX5rncd999t/7DP/zD7/zDP/zDb//Wb/3Wd3PVVVf9n/Q6r/M67/3hH/7h33Xffffd+iEf8iEP4aqrrrrqqv+P0IMe9CCuuuqqq6666qqrrvq/65prrnnwmTNnHvRiL/Zir/3iL/7ir/1iL/Zir81zue+++279h3/4h9/+h3/4h9/5rd/6re/mqquu+j/hzJkzD/rcz/3c377mmmse/PVf//Xv81u/9VvfzVVXXXXVVf/foAc96EFcddVVV1111VVXXfX/xzXXXPPgM2fOPPjFXuzFXuvFX/zFX/vFXuzFXpvnct999936D//wD7/9D//wD79z33333foP//APv81VV131v9LrvM7rvPeHf/iHf9d9991364d8yIc8hKuuuuqqq/6/QQ960IO46qqrrrrqqquuuur/r2uuuebBAC/2Yi/22q/zOq/zXi/2Yi/22jyX++6779Z/+Id/+O1/+Id/+J377rvv1n/4h3/4ba666qr/Fa655poHf/iHf/h3vdiLvdhrf/3Xf/37/NZv/dZ3c9VVV1111f8n6EEPehBXXXXVVVddddVVV111v2uuuebBAC/2Yi/22i/2Yi/2Wq/zOq/z3jyXs2fPPuPv//7vf+sf/uEffue+++679R/+4R9+m6uuuup/rBd7sRd77c/93M/9rfvuu+/WD/mQD3kIV1111VVX/X+CHvSgB3HVVVddddVVV1111VUvzDXXXPPgF3uxF3vtF3uxF3ut13md13lvnst999136z/8wz/8zj/8wz/89n333XfrP/zDP/w2V1111f8on/u5n/tbL/ZiL/bav/Vbv/XdX//1X/8+XHXVVVdd9f8FetCDHsRVV1111VVXXXXVVVf9a5w5c+ZBL/7iL/46L/ZiL/Zar/M6r/PePJf77rvv1n/4h3/47X/4h3/4nfvuu+/Wf/iHf/htrrrqqv9WL/ZiL/ban/u5n/tbZ8+efcZnfuZnvvZ99913K1ddddVVV/1/gB70oAdx1VVXXXXVVVddddVV/x7XXHPNg1/sxV7stV7sxV7stV/sxV7sta+55poH8wD33Xffrf/wD//w2//wD//wO/fdd9+t//AP//DbXHXVVf/lPvdzP/e3XuzFXuy1f+u3fuu7v/7rv/59uOqqq6666v8D9KAHPYirrrrqqquuuuqqq676j3TNNdc8+MVe7MVe+8Ve7MVe65prrnnwi73Yi702D3Dffffdevbs2Vv//u///rf/4R/+4Xf+4R/+4be56qqr/tNdc801D/6mb/qmp9933323fv3Xf/37/MM//MNvc9VVV1111f916EEPehBXXXXVVVddddVVV131n+maa6558Iu92Iu99ou92Iu91jXXXPPgF3uxF3ttHuDs2bPPuO+++57+93//97/9D//wD7/zD//wD7/NVVdd9Z/iwz/8w7/rdV7ndd77H/7hH377Mz/zM1+Hq6666qqr/q9DD3rQg7jqqquuuuqqq6666qr/Stdcc82DX+zFXuy1X+zFXuy1rrnmmge/2Iu92GvzAPfdd9+tZ8+efcbf//3f/9Y//MM//M4//MM//DZXXXXVf4gzZ8486Ju/+ZtvBfjMz/zM1/mHf/iH3+aqq6666qr/y9CDHvQgrrrqqquuuuqqq6666r/TmTNnHvTiL/7ir/NiL/Zir3XNNdc8+MVe7MVemwe47777bgX4h3/4h9/5rd/6re/+h3/4h9/mqquu+jd7ndd5nff+8A//8O/6h3/4h9/+zM/8zNfhqquuuuqq/8vQgx70IK666qqrrrrqqquuuup/kmuuuebBL/ZiL/ZaL/ZiL/ba11xzzYNf7MVe7LV5gPvuu+9WgH/4h3/47X/4h3/4nd/6rd/6bq666qoX2TXXXPPgz/mcz/mta6655sGf+Zmf+Tr/8A//8NtcddVVV131fxV60IMexFVXXXXVVVddddVVV/1Pds011zz4zJkzD36xF3ux13rxF3/x136xF3ux1+a53Hfffbf+wz/8w2//wz/8w+/81m/91ndz1VVXvVCv8zqv894f/uEf/l333XffrR/yIR/yEK666qqrrvq/Cj3oQQ/iqquuuuqqq6666qqr/je55pprHnzmzJkHv9iLvdhrvfiLv/hrv9iLvdhr81zuu+++W//hH/7ht//hH/7hd37rt37ru7nqqquewzXXXPPgD//wD/+uF3uxF3vtr//6r3+f3/qt3/purrrqqquu+r8IPehBD+Kqq6666qqrrrrqqqv+N7vmmmsefObMmQe/2Iu92Gu9+Iu/+Gu/2Iu92GvzXM6ePfuMv//7v/+tf/iHf/id++6779Z/+Id/+G2uuur/udd5ndd57w//8A//rrNnzz7jgz/4gx/MVVddddVV/xehBz3oQVx11VVXXXXVVVddddX/JWfOnHmQJL3Yi73Ya7/O67zOe73Yi73Ya/Nc7rvvvlv/4R/+4Xf+4R/+4bfvu+++W//hH/7ht7nqqv+HPvdzP/e3XuzFXuy1f+RHfuSzf/RHf/RzuOqqq6666v8a9KAHPYirrrrqqquuuuqqq676v+yaa655sG2/+Iu/+Ou82Iu92Gu9zuu8znvzXO67775b/+Ef/uG3/+Ef/uF37rvvvlv/4R/+4be56qr/B17sxV7stT/3cz/3t+67775bP+RDPuQhXHXVVVdd9X8NetCDHsRVV1111VVXXXXVVVf9f3PNNdc8+MVe7MVe68Ve7MVe+3Ve53Xem+dy33333foP//APv/0P//APv3Pffffd+g//8A+/zVVX/R/1OZ/zOb/14i/+4q/9W7/1W9/99V//9e/DVVddddVV/5egBz3oQVx11VVXXXXVVVddddX/d9dcc82DX+zFXuy1X+zFXuy1Xud1Xue9eS733Xffrf/wD//w2//wD//wO/fdd9+t//AP//DbXHXV/xFnzpx50Dd/8zffet999936WZ/1Wa9z33333cpVV1111VX/V6AHPehBXHXVVVddddVVV1111VXP6Zprrnnwi73Yi732i73Yi73WNddc8+AXe7EXe20e4OzZs8+47777nv73f//3v/0P//APv/MP//APv81VV/0v9uEf/uHf9Tqv8zrv/Vu/9Vvf/fVf//Xvw1VXXXXVVf9XoAc96EFcddVVV1111VVXXXXVVS/cNddc8+AXe7EXe+0Xe7EXe61rrrnmwS/2Yi/22jzAfffdd+vZs2ef8fd///e/9Q//8A+/8w//8A+/zVVX/S9yzTXXPPibvumbnn7ffffd+vVf//Xv8w//8A+/zVVXXXXVVf8XoAc96EFcddVVV1111VVXXXXVVf86Z86cedCLv/iLv86LvdiLvdY111zz4Bd7sRd7bR7gvvvuu/Xs2bO3/sM//MPv/P3f//1v/8M//MNvc9VV/8N9+Id/+He9zuu8znv/wz/8w29/5md+5utw1VVXXXXV/wXoQQ96EFddddVVV1111VVXXXXVv88111zz4Bd7sRd7rRd7sRd77WuuuebBL/ZiL/baPMB9991369mzZ2+97777bv2t3/qt7/mHf/iH3+aqq/6Hueaaax78Td/0TU8H+KzP+qzX+fu///vf5qqrrrrqqv/t0IMe9CCuuuqqq6666qqrrrrqqv9Y11xzzYNf7MVe7LVf7MVe7LWuueaaB7/Yi73Ya/MA9913360A//AP//Dbv/Vbv/U9//AP//DbXHXV/wCv8zqv894f/uEf/l1nz559xgd/8Ac/mKuuuuqqq/63Qw960IO46qqrrrrqqquuuuqqq/5zXXPNNQ9+sRd7sdc+c+bMg178xV/8tV/sxV7stXmAs2fPPsO2/+Ef/uG3/+Ef/uF3fuu3fuu7ueqq/wbXXHPNgz/ncz7nt6655poHf+Znfubr/MM//MNvc9VVV1111f9m6EEPehBXXXXVVVddddVVV1111X+ta6655sFnzpx58Iu92Iu91ou/+Iu/9ou92Iu9Ns/l7Nmzz/j7v//73/qHf/iH3/mt3/qt7+aqq/6LvM7rvM57f/iHf/h33Xfffbd+yId8yEO46qqrrrrqfzP0oAc9iKuuuuqqq6666qqrrrrqv9eZM2cedM011zzkxV7sxV7rxV/8xV/7xV7sxV6b53Lffffd+g//8A+/8w//8A+//Vu/9VvfzVVX/Se55pprHvxhH/Zh3/XiL/7ir/31X//17/Nbv/Vb381VV1111VX/W6EHPehBXHXVVVddddVVV1111VX/s1xzzTUPPnPmzIOuueaah7zO67zOe73Yi73Ya/Nc7rvvvlv/4R/+4bf/4R/+4Xfuu+++W//hH/7ht7nqqv8gL/ZiL/Zan/u5n/vb9913360f8iEf8hCuuuqqq6763wo96EEP4qqrrrrqqquuuuqqq676n+2aa655MMCLvdiLvdbrvM7rvPeLvdiLvTbP5b777rv1H/7hH377H/7hH37nvvvuu/Uf/uEffpurrvp3+NzP/dzferEXe7HX/q3f+q3v/vqv//r34aqrrrrqqv+N0IMe9CCuuuqqq6666qqrrrrqqv9drrnmmgcDvNiLvdhrv9iLvdhrvc7rvM5781zuu+++W//hH/7ht//hH/7hd+67775b/+Ef/uG3ueqqf4UXe7EXe+3P/dzP/a377rvv1s/6rM96nfvuu+9Wrrrqqquu+t8GPehBD+Kqq6666qqrrrrqqquu+t/vmmuuefCLvdiLvfaLvdiLvdbrvM7rvDfP5ezZs8/4+7//+9/6h3/4h9+57777bv2Hf/iH3+aqq/4Fn/u5n/tbL/ZiL/bav/Vbv/XdX//1X/8+XHXVVVdd9b8NetCDHsRVV1111VVXXXXVVVdd9X/PNddc8+AXe7EXe+0Xe7EXe63XeZ3XeW+ey3333XfrP/zDP/zOP/zDP/z2fffdd+s//MM//DZXXfVcrrnmmgd/0zd909Pvu+++W7/hG77hff7+7//+t7nqqquuuup/E/SgBz2Iq6666qqrrrrqqquuuur/vjNnzjzoxV/8xV/nxV7sxV7rmmuuefCLvdiLvTYPcN9999169uzZW//hH/7hd/7+7//+t//hH/7ht7nqKuDDP/zDv+t1Xud13vu3fuu3vvvrv/7r34errrrqqqv+N0EPetCDuOqqq6666qqrrrrqqqv+/7nmmmse/GIv9mKv9WIv9mKvfc011zz4xV7sxV6bB7jvvvtuPXv27K1///d//9v/8A//8Dv/8A//8Ntc9f/SNddc8+Bv+qZvejrAZ37mZ77OP/zDP/w2V1111VVX/W+BHvSgB3HVVVddddVVV1111VVXXXXNNdc8+MVe7MVe+8Ve7MVe65prrnnwi73Yi702D3Dffffdevbs2Vv//u///rf/4R/+4Xf+4R/+4be56v+Nd3zHd/ysd3qnd/rsf/iHf/jtz/zMz3wdrrrqqquu+t8CPehBD+Kqq6666qqrrrrqqquuuuq5XXPNNQ9+sRd7sdd+sRd7sde65pprHvxiL/Zir80DnD179hn33Xff0++7775bf+u3fut7/uEf/uG3uer/rGuuuebB3/RN3/R0gM/8zM98nX/4h3/4ba666qqrrvrfAD3oQQ/iqquuuuqqq6666qqrrrrqX3LNNdc8+MVe7MVe+8Ve7MVe65prrnnwi73Yi702D3DffffdKkl///d//1u/9Vu/9T3/8A//8Ntc9X/K67zO67z3h3/4h3/Xfffdd+uHfMiHPISrrrrqqqv+N0APetCDuOqqq6666qqrrrrqqquu+tc6c+bMg6655pqHvNiLvdhrvfiLv/hrv9iLvdhr81zuu+++W//hH/7hd/7hH/7ht3/rt37ru7nqf7UzZ8486HM/93N/+5prrnnw13/917/Pb/3Wb303V1111VVX/U+HHvSgB3HVVVddddVVV1111VVXXfXvdc011zz4zJkzD3qxF3ux137xF3/x136xF3ux1+a53Hfffbf+wz/8w2//wz/8w+/81m/91ndz1f86r/M6r/PeH/7hH/5d9913360f8iEf8hCuuuqqq676nw496EEP4qqrrrrqqquuuuqqq6666j/aNddc8+AzZ848+MVe7MVe68Vf/MVf+8Ve7MVem+dy33333foP//APv/0P//APv/Nbv/Vb381V/yt87ud+7m+92Iu92Gt//dd//fv81m/91ndz1VVXXXXV/2ToQQ96EFddddVVV1111VVXXXXVVf/ZrrnmmgefOXPmwddcc82DX+d1Xue9XuzFXuy1eS733Xffrf/wD//w2//wD//wO/fdd9+t//AP//DbXPU/zou92Iu99ud+7uf+1n333Xfrh3zIhzyEq6666qqr/idDD3rQg7jqqquuuuqqq6666qqrrvqvds011zwY4MVe7MVe+3Ve53Xe68Ve7MVem+dy9uzZZ/z93//9b/3DP/zD79x33323/sM//MNvc9X/CJ/7uZ/7Wy/2Yi/22r/1W7/13V//9V//Plx11VVXXfU/FXrQgx7EVVddddVVV1111VVXXXXV/wTXXHPNg1/sxV7stV/sxV7stV7ndV7nvXku9913363/8A//8Dv/8A//8Nv33Xffrf/wD//w21z13+Kaa6558Dd90zc9/ezZs8/4zM/8zNe+7777buWqq6666qr/idCDHvQgrrrqqquuuuqqq6666qqr/ic6c+bMg178xV/8dV7sxV7stV7ndV7nvXku9913363/8A//8Nv/8A//8Dv33Xffrf/wD//w21z1X+bDP/zDv+t1Xud13vu3fuu3vvvrv/7r34errrrqqqv+J0IPetCDuOqqq6666qqrrrrqqquu+t/gmmuuefCLvdiLvdaLvdiLvfbrvM7rvDfP5b777rv1H/7hH377H/7hH37nvvvuu/Uf/uEffpur/tNcc801D/6mb/qmp9933323fv3Xf/37/MM//MNvc9VVV1111f806EEPehBXXXXVVVddddVVV1111VX/G11zzTUPfrEXe7HXfrEXe7HXuuaaax78Yi/2Yq/NA9x33323nj179ta///u//+1/+Id/+J1/+Id/+G2u+g/14R/+4d/1Oq/zOu/9D//wD7/9mZ/5ma/DVVddddVV/9OgBz3oQVx11VVXXXXVVVddddVVV/1fcM011zz4xV7sxV77xV7sxV7rmmuuefCLvdiLvTYPcPbs2Wfcd999T//7v//73/6Hf/iH3/mHf/iH3+aqf5czZ8486Ju/+ZtvBfjMz/zM1/mHf/iH3+aqq6666qr/SdCDHvQgrrrqqquuuuqqq6666qqr/i+65pprHvxiL/Zir/1iL/Zir3XNNdc8+MVe7MVemwe47777bj179uwz/v7v//63/uEf/uF3/uEf/uG3uepf7XVe53Xe+8M//MO/6x/+4R9++zM/8zNfh6uuuuqqq/4nQQ960IO46qqrrrrqqquuuuqqq676/+DMmTMPevEXf/HXebEXe7HXuuaaax78Yi/2Yq/NA9x33323AvzDP/zD7/zWb/3Wd//DP/zDb3PVv+iaa6558Od8zuf81jXXXPPgz/zMz3ydf/iHf/htrrrqqquu+p8CPehBD+Kqq6666qqrrrrqqquuuur/o2uuuebBL/ZiL/ZaL/ZiL/ba11xzzYNf7MVe7LV5gPvuu+9WgH/4h3/47X/4h3/4nd/6rd/6bq56vl7ndV7nvT/8wz/8u+67775bP+RDPuQhXHXVVVdd9T8FetCDHsRVV1111VVXXXXVVVddddVVcM011zz4zJkzD36xF3ux13rxF3/x136xF3ux1+a53Hfffbf+wz/8w2//wz/8w+/81m/91ndz1WXXXHPNgz/8wz/8u17sxV7stb/+67/+fX7rt37ru7nqqquuuup/AvSgBz2Iq6666qqrrrrqqquuuuqqq57XNddc8+AzZ848+MVe7MVe68Vf/MVf+8Ve7MVem+dy33333foP//APv/0P//APv/Nbv/Vb383/Yy/2Yi/22p/7uZ/7W2fPnn3GB3/wBz+Yq6666qqr/idAD3rQg7jqqquuuuqqq6666qqrrrrqX3bNNdc8+MyZMw9+sRd7sdd68Rd/8dd+sRd7sdfmuZw9e/YZf//3f/9b//AP//A79913363/8A//8Nv8P/K5n/u5v/ViL/Zir/1bv/Vb3/31X//178NVV1111VX/3dCDHvQgrrrqqquuuuqqq6666qqrrvrXO3PmzIMk6cVe7MVe+3Ve53Xe68Ve7MVem+dy33333foP//APv/MP//APv33ffffd+g//8A+/zf9hL/ZiL/ban/u5n/tb9913362f9Vmf9Tr33XffrVx11VVXXfXfCT3oQQ/iqquuuuqqq6666qqrrrrqqn+/a6655sG2/eIv/uKv82Iv9mKv9Tqv8zrvzXO57777bv2Hf/iH3/6Hf/iH37nvvvtu/Yd/+Iff5v+Yz/mcz/mtF3/xF3/t3/qt3/rur//6r38frrrqqquu+u+EHvSgB3HVVVddddVVV1111VVXXXXVf45rrrnmwS/2Yi/2Wi/2Yi/22q/zOq/z3jyX++6779Z/+Id/+O1/+Id/+J377rvv1n/4h3/4bf6XO3PmzIO++Zu/+db77rvv1q//+q9/n3/4h3/4ba666qqrrvrvgh70oAdx1VVXXXXVVVddddVVV1111X+Na6655sEv9mIv9tov9mIv9lqv8zqv8948l/vuu+/Wf/iHf/jtf/iHf/id++6779Z/+Id/+G3+F/rwD//w73qd13md9/6t3/qt7/76r//69+Gqq6666qr/LuhBD3oQV1111VVXXXXVVVddddVVV/33uOaaax78Yi/2Yq/9Yi/2Yq91zTXXPPjFXuzFXpsHOHv27DP+/u///rf+4R/+4Xfuu+++W//hH/7ht/lf4JprrnnwN33TNz0d4DM/8zNf5x/+4R9+m6uuuuqqq/47oAc96EFcddVVV1111VVXXXXVVVdd9T/DNddc8+AXe7EXe+0Xe7EXe61rrrnmwS/2Yi/22jzAfffdd+vZs2ef8fd///e/9Q//8A+/8w//8A+/zf9Q7/iO7/hZ7/RO7/TZ//AP//Dbn/mZn/k6XHXVVVdd9d8BPehBD+Kqq6666qqrrrrqqquuuuqq/5nOnDnzoBd/8Rd/nRd7sRd7rWuuuebBL/ZiL/baPMB9991369mzZ2/9h3/4h9/5+7//+9/+h3/4h9/mf4hrrrnmwd/0Td/0dIDP+qzPep2///u//22uuuqqq676r4Ye9KAHcdVVV1111VVXXXXVVVddddX/Dtdcc82DX+zFXuy1XuzFXuy1r7nmmge/2Iu92GvzAPfdd9+tZ8+evfXv//7vf/sf/uEffucf/uEffpv/Rq/zOq/z3h/+4R/+XWfPnn3GB3/wBz+Yq6666qqr/quhBz3oQVx11VVXXXXVVVddddVVV131v9M111zz4Bd7sRd77Rd7sRd7rWuuuebBL/ZiL/baPMB99913K8A//MM//PZv/dZvfc8//MM//Db/ha655poHf87nfM5vXXPNNQ/++q//+vf5rd/6re/mqquuuuqq/0roQQ96EFddddVVV1111VVXXXXVVVf933DNNdc8+MVe7MVe+8Ve7MVe65prrnnwi73Yi702D3D27Nln2PY//MM//PY//MM//M5v/dZvfTf/yV7ndV7nvT/8wz/8u+67775bP+RDPuQhXHXVVVdd9V8JPehBD+Kqq6666qqrrrrqqquuuuqq/5uuueaaB585c+bBL/ZiL/ZaL/7iL/7aL/ZiL/baPJezZ88+4+///u9/6x/+4R9+57d+67e+mxfgmmuuefB99913K/9K11xzzYM/7MM+7Lte/MVf/LW//uu//n1+67d+67u56qqrrrrqvwp60IMexFVXXXXVVVddddVVV1111VX/P5w5c+ZB11xzzUNe7MVe7LVe/MVf/LVf7MVe7LV5Lvfdd9+t//AP//A7//AP//Dbv/Vbv/XdPNM3fdM3PR3gt37rt777t3/7t7/nvvvuu5UX0Yu92Iu91ud+7uf+9n333Xfrh3zIhzyEq6666qqr/qugBz3oQVx11VVXXXXVVVddddVVV131/9M111zz4DNnzjzoxV7sxV77xV/8xV/7xV7sxV6b53Lffffdevbs2Vtf7MVe7LV5pvvuu+/Ws2fP3vpbv/Vb3/Nbv/Vb382L4HM/93N/68Ve7MVe+7d+67e+++u//uvfh6uuuuqqq/4roAc96EFcddVVV1111VVXXXXVVVdddRXANddc82CAF3uxF3ut13md13nvF3uxF3tt/gX33Xffrf/wD//w27/1W7/1Pf/wD//w27wA11xzzYO/6Zu+6en33XffrZ/1WZ/1Ovfdd9+tXHXVVVdd9Z8NPehBD+Kqq6666qqrrrrqqquuuuqqq56fa6655sEA3/RN3/R0XgT33Xffrb/927/9PT/yIz/y2Twfn/u5n/tbL/ZiL/bav/Vbv/XdX//1X/8+XHXVVVdd9Z+Ncvz4ca666qqrrrrqqquuuuqqq6666vk5PDzcfcVXfMW3fsVXfMW35kWwubl5/MVe7MVe+3Ve53Xe+yEPechLHx4eXjp79uytPNM//MM//M6bv/mbf/Tm5ubxZzzjGX9z33333cpVV1111VX/mdCDHvQgrrrqqquuuuqqq6666qqrrrrqX3LmzJkHXXPNNQ+55pprHgzwYi/2Yq91zTXXPBjgxV7sxV6bF+C+++679R/+4R9+5x/+4R9++7777rv1rd7qrd745V7u5T6JB3i7t3s7cdVVV1111X8G9KAHPYirrrrqqquuuuqqq6666qqrrvr3uuaaax4McObMmQddc801D3mxF3ux17rmmmse/GIv9mKvzb/gcz7nc27427/927u56qqrrrrqPxp60IMexFVXXXXVVVddddVVV1111VVX/We55pprHvxiL/Zir/ViL/Zir33NNdc8+MVe7MVem+fyD//wD7/9mZ/5ma/DVVddddVV/9GoXHXVVVddddVVV1111VVXXXXVf6L77rvv1vvuu+/W3/qt3/oegJ/4iZ8wz+Wee+75Pa666qqrrvrPQHDVVVddddVVV1111VVXXXXVVf+FbCfP5Ru/8Rs/k6uuuuqqq/4zoAc96EFcddVVV1111VVXXXXVVVddddV/tQ/7sA/7zr/6q7/66j/8wz/8W6666qqrrvrPgh70oAdx1VVXXXXVVVddddVVV1111VVXXXXVVVf9n0Tlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxX/CO5tbZ4Z83tJAAAAAElFTkSuQmCC) diff --git a/docs/kcl/profileStartY.md b/docs/kcl/profileStartY.md index fdc115e2c..725b74620 100644 --- a/docs/kcl/profileStartY.md +++ b/docs/kcl/profileStartY.md @@ -29,8 +29,8 @@ profileStartY(sketch: Sketch): number ```js sketch001 = startSketchOn(XY) |> startProfileAt([5, 2], %) - |> angledLine({ angle = -60, length = 14 }, %) - |> angledLineToY({ angle = 30, to = profileStartY(%) }, %) + |> angledLine(angle = -60, length = 14) + |> angledLine(angle = 30, endAbsoluteY = profileStartY(%)) ``` ![Rendered example of profileStartY 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAABwwUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquu+j/hmmuuefCLvdiLvTbP5b777rv1H/7hH36bq6666qqrrrrqqufjmmuuefCLvdiLvTbP5b777rv1H/7hH36bq6666qqr/rejctVVV1111f8Jr/3ar/1e7/RO7/TZPJcf+ZEf+ex/+Id/+G2uuuqqq6666qqrno/Xfu3Xfq93eqd3+myey4/8yI989j/8wz/8NlddddVVV/1vR+Wqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVV/+9cc801D36xF3ux137xF3/x1+aqq6666qr/y6hcddVVV1111VVXXXXVVVdd9X/eNddc8+AXe7EXe+0zZ8486HVe53Xe+5prrnkwV1111VVX/X9A5aqrrrrqqquuuuqqq6666qr/c6655poHnzlz5sEv9mIv9lov/uIv/tov9mIv9to8wH333Xfr2bNnbwV4sRd7sdfmqquuuuqq/6uoXHXVVVdd9X/C2bNnn/Fbv/Vb380DvM7rvM57v87rvM57/8M//MPv/MM//MNvc9VVV1111VVX/Z91zTXXPPjMmTMPfrEXe7HXevEXf/HXfrEXe7HX5rncd999t/7Wb/3Wd//DP/zD7/zDP/zDbwO8zuu8znvfd999t/Jc/uEf/uF3uOqqq6666v8C9KAHPYirrrrqqqv+b3rHd3zHz3qnd3qnz77vvvtu/azP+qzXue+++27lqquuuuqqq676P+Gaa6558JkzZx78Yi/2Yq/14i/+4q/9Yi/2Yq/Nc7nvvvtu/a3f+q3v/od/+Iff+Yd/+Iff5qqrrrrqqv+P0IMe9CCuuuqqq676v+maa6558Id/+Id/14u92Iu99j/8wz/89md+5me+DlddddVVV1111f9a11xzzYNf+7Vf+71e/MVf/HVe7MVe7LV4Lvfdd9+tv/Vbv/Xd//AP//A7//AP//DbXHXVVVdddRWgBz3oQVx11VVXXfV/1zXXXPPgz/mcz/mta6655sG/9Vu/9d1f//Vf/z5cddVVV1111VX/K1xzzTUPfu3Xfu33evEXf/HXfrEXe7HX5rncd999t/7Wb/3Wd//DP/zD7/zDP/zDb3PVVVddddVVzws96EEP4qqrrrrqqv/brrnmmgd/0zd909MBfuRHfuSzf/RHf/RzuOqqq6666qqr/se55pprHvzar/3a7/XiL/7ir/1iL/Zir81zue+++279rd/6re/+h3/4h9/+h3/4h9/hqquuuuqqq/5l6EEPehBXXXXVVVf93/c6r/M67/3hH/7h33Xffffd+vVf//Xv8w//8A+/zVVXXXXVVVdd9d/qmmuuefBrv/Zrv9eLv/iLv/aLvdiLvTbP5b777rv1t37rt777H/7hH37nH/7hH36bq6666qqrrvrXQw960IO46qqrrrrq/4d3fMd3/Kx3eqd3+uz77rvv1s/6rM96nfvuu+9Wrrrqqquuuuqq/zLXXHPNg1/7tV/7vV78xV/8tV/sxV7stXku9913362/9Vu/9d0AP/qjP/o5XHXVVVddddW/H3rQgx7EVVddddVV/z9cc801D/7wD//w73qxF3ux177vvvtu/ZAP+ZCHcNVVV1111VVX/ae55pprHvzar/3a7/XiL/7ir/NiL/Zir8Vzue+++279rd/6re8G+NEf/dHP4aqrrrrqqqv+46EHPehBXHXVVVdd9f/HNddc8+DP+ZzP+a1rrrnmwb/1W7/13V//9V//Plx11VVXXXXVVf8hrrnmmge/9mu/9nsBvNM7vdNn81zuu+++W3/rt37ruwF+9Ed/9HO46qqrrrrqqv986EEPehBXXXXVVVf9/3LNNdc8+Ju+6ZueDvAjP/Ijn/2jP/qjn8NVV1111VVXXfWvds011zz4tV/7td8L4J3e6Z0+m+dy33333fpbv/Vb3w3woz/6o5/DVVddddVVV/3XQw960IO46qqrrrrq/5/XeZ3Xee8P//AP/6777rvv1q//+q9/n3/4h3/4ba666qqrrrrqqhfqmmuuefBrv/ZrvxfAO73TO302z+W+++679R/+4R9++7777rv1t3/7t7/nvvvuu5Wrrrrqqquu+u+FHvSgB3HVVVddddX/T+/4ju/4We/0Tu/02ffdd9+tn/VZn/U69913361cddVVV1111VXPcs011zz4xV7sxV77zJkzD3qnd3qnz+a53HfffbeePXv21r//+7//7d/+7d/+nvvuu+9Wrrrqqquuuup/FvSgBz2Iq6666qqr/v/68A//8O96ndd5nfe+7777bv2QD/mQh3DVVVddddVV/49dc801D36xF3ux1z5z5syDXud1Xue9r7nmmgfzAPfdd9+tZ8+evfXv//7vf/sf/uEffucf/uEffpurrrrqqquu+p8NPehBD+Kqq6666qr/v6655poHf/iHf/h3vdiLvdhr/9Zv/dZ3f/3Xf/37cNVVV1111VX/T1xzzTUPPnPmzINf7MVe7LVe/MVf/LVf7MVe7LV5gPvuu+/Ws2fP3vr3f//3v/0P//APv/0P//APv8NVV1111VVX/e+CHvSgB3HVVVddddX/b9dcc82DP+dzPue3rrnmmgf/yI/8yGf/6I/+6Odw1VVXXXXVVf8HXXPNNQ8+c+bMg1/sxV7stV78xV/8tV/sxV7stXmA++6779azZ8/e+vd///e//Q//8A+/8w//8A+/zVVXXXXVVVf974Ye9KAHcdVVV1111VUv9mIv9tqf+7mf+1sAX//1X/8+v/Vbv/XdXHXVVVddddX/ctdcc82Dz5w58+AXe7EXe60Xf/EXf+0Xe7EXe22ey3333Xfrb/3Wb333P/zDP/zOP/zDP/w2V1111VVXXfV/C3rQgx7EVVddddVVVwG84zu+42e90zu902ffd999t37913/9+/zDP/zDb3PVVVddddVV/8tcc801D37t137t93rxF3/x13mxF3ux1+K53Hfffbf+1m/91nf/wz/8w+/8wz/8w29z1VVXXXXVVf+3oQc96EFcddVVV1111f3e8R3f8bPe6Z3e6bPvu+++Wz/rsz7rde67775bueqqq6666qr/wa655poHv/Zrv/Z7vfiLv/hrv9iLvdhr81zuu+++W3/rt37ru//hH/7hd/7hH/7ht7nqqquuuuqq/1/Qgx70IK666qqrrrrqftdcc82DP/zDP/y7XuzFXuy177vvvls/5EM+5CFcddVVV1111f8g11xzzYNf+7Vf+71e/MVf/LVf7MVe7LV5Lvfdd9+tv/Vbv/Xd//AP//Db//AP//A7XHXVVVddddX/b+hBD3oQV1111VVXXfVA11xzzYM/53M+57euueaaB//Wb/3Wd3/913/9+3DVVVddddVV/02uueaaB7/2a7/2e734i7/4a7/Yi73Ya/Nc7rvvvlt/67d+67v/4R/+4Xf+4R/+4be56qqrrrrqqqseCD3oQQ/iqquuuuqqq57bNddc8+Bv+qZvejrAj/zIj3z2j/7oj34OV1111VVXXfVf4Jprrnnwa7/2a7/Xi7/4i7/2i73Yi702z+W+++679bd+67e+++zZs8/4rd/6re/mqquuuuqqq656YdCDHvQgrrrqqquuuur5eZ3XeZ33/vAP//Dvuu+++279+q//+vf5h3/4h9/mqquuuuqqq/6DXXPNNQ9+7dd+7fd68Rd/8dd5sRd7sdfiudx33323/tZv/dZ3A/zoj/7o53DVVVddddVVV/1roAc96EFcddVVV1111Qvyju/4jp/1Tu/0Tp9933333fpZn/VZr3PffffdylVXXXXVVVf9O1xzzTUPfu3Xfu33Anind3qnz+a53Hfffbf+1m/91ncD/OiP/ujncNVVV1111VVX/XugBz3oQVx11VVXXXXVC3LNNdc8+MM//MO/68Ve7MVe+7777rv1Qz7kQx7CVVddddVVV/0rXHPNNQ9+7dd+7fcCeKd3eqfP5rncd999t/7Wb/3WdwP86I/+6Odw1VVXXXXVVVf9R0IPetCDuOqqq6666qoX5pprrnnw53zO5/zWNddc8+Df+q3f+u6v//qvfx+uuuqqq6666gW45pprHvzar/3a7wXwTu/0Tp/Nc7nvvvtu/Yd/+Iffvu+++2797d/+7e+57777buWqq6666qqrrvrPgh70oAdx1VVXXXXVVf+Sa6655sHf9E3f9HSAH/mRH/nsH/3RH/0crrrqqquuugq45pprHvzar/3a7wXwTu/0Tp/Nc7nvvvtu/Yd/+Iffvu+++2797d/+7e+57777buWqq6666qqrrvqvgh70oAdx1VVXXXXVVS+K13md13nvD//wD/+u++6779av//qvf59/+Id/+G2uuuqqq676f+eaa6558Iu92Iu99pkzZx70Oq/zOu99zTXXPJgHuO+++249e/bsrX//93//2//wD//wO//wD//w21x11VVXXXXVVf9d0IMe9CCuuuqqq6666kX1ju/4jp/1Tu/0Tp9933333fpZn/VZr3PffffdylVXXXXVVf+nXXPNNQ8+c+bMg1/sxV7stV7ndV7nva+55poH8wD33XffrWfPnr317//+73/7H/7hH377H/7hH36Hq6666qqrrrrqfwr0oAc9iKuuuuqqq6761/jwD//w73qd13md977vvvtu/ZAP+ZCHcNVVV1111f8p11xzzYPPnDnz4Bd7sRd7rRd/8Rd/7Rd7sRd7bR7gvvvuu/Xs2bO3/v3f//1v/8M//MPv/MM//MNvc9VVV1111VVX/U+FHvSgB3HVVVddddVV/xrXXHPNgz/8wz/8u17sxV7stf/hH/7htz/zMz/zdbjqqquuuup/rWuuuebBZ86cefCLvdiLvdaLv/iLv/aLvdiLvTbP5b777rv1t37rt777H/7hH37nH/7hH36bq6666qqrrrrqfwv0oAc9iKuuuuqqq67617rmmmse/Dmf8zm/dc011zz4R37kRz77R3/0Rz+Hq6666qqr/le45pprHnzmzJkHv9iLvdhrvfiLv/jrvNiLvdhr8Vzuu+++W3/rt37ru//hH/7hd/7hH/7ht7nqqquuuuqqq/63Qg960IO46qqrrrrqqn+La6655sHf9E3f9HSAH/mRH/nsH/3RH/0crrrqqquu+h/pmmuuefBrv/Zrv9eLv/iLv/aLvdiLvTbP5b777rv1t37rt777H/7hH37nH/7hH36bq6666qqrrrrq/wr0oAc9iKuuuuqqq676t3qd13md9/7wD//w77rvvvtu/fqv//r3+Yd/+Iff5qqrrrrqqv9211xzzYNf+7Vf+71e/MVf/LVf7MVe7LV5Lvfdd9+tv/Vbv/Xd//AP//Db//AP//A7XHXVVVddddVV/1ehBz3oQVx11VVXXXXVv8c7vuM7ftY7vdM7ffZ9991362d91me9zn333XcrV1111VVX/Ze65pprHvzar/3a7/XiL/7ir/1iL/Zir81zue+++279rd/6re/+h3/4h9/5h3/4h9/mqquuuuqqq676/wI96EEP4qqrrrrqqqv+Pa655poHf/iHf/h3vdiLvdhr33fffbd+yId8yEO46qqrrrrqP9U111zz4Nd+7dd+rxd/8Rd/7Rd7sRd7bZ7Lfffdd+tv/dZvffc//MM//M4//MM//DZXXXXVVVddddX/V+hBD3oQV1111VVXXfXvdc011zz4cz7nc37rmmuuefBv/dZvfffXf/3Xvw9XXXXVVVf9h7nmmmse/Nqv/drv9eIv/uKv82Iv9mKvxXO57777bv2t3/qt7wb40R/90c/hqquuuuqqq6666gr0oAc9iKuuuuqqq676j3DNNdc8+Ju+6ZueDvAjP/Ijn/2jP/qjn8NVV1111VX/Jtdcc82DX/u1X/u9rrnmmge/zuu8znvzXO67775bf+u3fuu7AX70R3/0c7jqqquuuuqqq656/tCDHvQgrrrqqquuuuo/yuu8zuu894d/+Id/13333Xfr13/917/PP/zDP/w2V1111VVX/YuuueaaB7/2a7/2ewG80zu902fzXO67775bf+u3fuu7AX70R3/0c7jqqquuuuqqq6560aAHPehBXHXVVVddddV/pHd8x3f8rHd6p3f67Pvuu+/Wz/qsz3qd++6771auuuqqq656Dtdcc82DX/u1X/u9AN7pnd7ps3ku9913363/8A//8Nv33XffrT/6oz/6OVx11VVXXXXVVVf926AHPehBXHXVVVddddV/pGuuuebBH/7hH/5dL/ZiL/ba9913360f8iEf8hCuuuqqq/6fu+aaax782q/92u8F8E7v9E6fzXO57777bv2Hf/iH377vvvtu/e3f/u3vue+++27lqquuuuqqq6666t8PPehBD+Kqq6666qqr/qNdc801D/6cz/mc37rmmmse/Fu/9Vvf/fVf//Xvw1VXXXXV/yPXXHPNg1/sxV7stc+cOfOg13md13nva6655sE8wH333Xfr2bNnb/37v//73/7t3/7t77nvvvtu5aqrrrrqqquuuuo/HnrQgx7EVVddddVVV/1nuOaaax78Td/0TU8H+JEf+ZHP/tEf/dHP4aqrrrrq/6hrrrnmwS/2Yi/22mfOnHnQ67zO67z3Nddc82Ae4L777rv17Nmzt/793//9b//DP/zDb//DP/zD73DVVVddddVVV131nw896EEP4qqrrrrqqqv+s7zO67zOe3/4h3/4d9133323/uiP/ujn/NZv/dZ3c9VVV131f8A111zz4DNnzjz4xV7sxV7rxV/8xV/7xV7sxV6bB7jvvvtuPXv27K1///d//9v/8A//8Dv/8A//8NtcddVVV1111VVX/dejctVVV1111VX/iX7rt37ru8+cOfOgd3qnd/rsd3zHd/ysf/iHf/jt++6771auuuqqq/6Xueaaax585syZB7/Yi73Ya734i7/4a7/Yi73Ya/Nc7rvvvlt/67d+67v/4R/+4Xf+4R/+4be56qqrrrrqqquu+u+HHvSgB3HVVVddddVV/9ne8R3f8bPe6Z3e6bPvu+++Wz/kQz7kIVx11VVX/Q93zTXXPPjMmTMPfrEXe7HXevEXf/HXebEXe7HX4rncd999t/7Wb/3Wd//DP/zD7/zDP/zDb3PVVVddddVVV131Pw960IMexFVXXXXVVVf9Z7vmmmse/OEf/uHf9WIv9mKv/Q//8A+//Zmf+Zmvw1VXXXXV/zDXXHPNg1/7tV/7vV78xV/8tV/sxV7stXku9913362/9Vu/9d3/8A//8Dv/8A//8NtcddVVV1111VVX/c+HHvSgB3HVVVddddVV/xWuueaaB3/O53zOb11zzTUP/pEf+ZHP/tEf/dHP4aqrrrrqv9E111zz4Nd+7dd+rxd/8Rd/7Rd7sRd7bZ7Lfffdd+tv/dZvffc//MM//PY//MM//A5XXXXVVVddddVV//ugBz3oQVx11VVXXXXVf5Vrrrnmwd/0Td/0dIAf+ZEf+ewf/dEf/Ryuuuqqq/6LXHPNNQ9+7dd+7fd68Rd/8dd+sRd7sdfmudx33323/tZv/dZ3/8M//MPv/MM//MNvc9VVV1111VVXXfW/H3rQgx7EVVddddVVV/1Xep3XeZ33/vAP//Dvuu+++279+q//+vf5h3/4h9/mqquuuuo/wTXXXPPg137t136vF3/xF3/tF3uxF3ttnst9991362/91m999z/8wz/8zj/8wz/8NlddddVVV1111VX/96AHPehBXHXVVVddddV/tXd8x3f8rHd6p3f67Pvuu+/Wz/qsz3qd++6771auuuqqq/6drrnmmge/9mu/9nu9+Iu/+Ou82Iu92GvxXO67775bf+u3fuu7AX70R3/0c7jqqquuuuqqq676vw896EEP4qqrrrrqqqv+q11zzTUP/vAP//DverEXe7HXvu+++279kA/5kIdw1VVXXfWvdM011zz4tV/7td/rxV/8xV/7xV7sxV6b53Lffffd+lu/9VvfDfCjP/qjn8NVV1111VVXXXXV/z/oQQ96EFddddVVV1313+Gaa6558Od8zuf81jXXXPPg3/qt3/rur//6r38frrrqqqteiGuuuebBr/3ar/1eAO/0Tu/02TyX++6779bf+q3f+m6AH/3RH/0crrrqqquuuuqqq65CD3rQg7jqqquuuuqq/y7XXHPNg7/pm77p6QA/8iM/8tk/+qM/+jlcddVVVz3TNddc8+DXfu3Xfi+Ad3qnd/psnst9991362/91m99N8CP/uiPfg5XXXXVVVddddVVVz039KAHPYirrrrqqquu+u/0Oq/zOu/94R/+4d9133333fr1X//17/MP//APv81VV131/9I111zz4Nd+7dd+L4B3eqd3+myey3333XfrP/zDP/z2fffdd+tv//Zvf8999913K1ddddVVV1111VVXvTDoQQ96EFddddVVV1313+0d3/EdP+ud3umdPvu+++679bM+67Ne57777ruVq6666v+8a6655sEv9mIv9tpnzpx50Du90zt9Ns/lvvvuu/Xs2bO3/v3f//1v//Zv//b33Hfffbdy1VVXXXXVVVddddW/BnrQgx7EVVddddVVV/13u+aaax78ju/4jp/1Oq/zOu9933333fohH/IhD+Gqq676P+eaa6558Iu92Iu99pkzZx70Oq/zOu99zTXXPJgHuO+++249e/bsrX//93//2//wD//w2//wD//wO1x11VVXXXXVVVdd9e+BHvSgB3HVVVddddVV/xNcc801D/6cz/mc37rmmmse/Fu/9Vvf/fVf//Xvw1VXXfW/2jXXXPPgM2fOPPjFXuzFXut1Xud13vuaa655MA9w33333Xr27Nlb//7v//63/+Ef/uF3/uEf/uG3ueqqq6666qqrrrrqPxJ60IMexFVXXXXVVVf9T3HNNdc8+Ju+6ZueDvAjP/Ijn/2jP/qjn8NVV131v8Y111zz4DNnzjz4xV7sxV7rxV/8xV/7xV7sxV6bB7jvvvtuPXv27K1///d//9v/8A//8Dv/8A//8NtcddVVV1111VVXXfWfCT3oQQ/iqquuuuqqq/4nebEXe7HX/tzP/dzfAvj6r//69/mt3/qt7+aqq676H+maa6558JkzZx78Yi/2Yq/14i/+4q/zYi/2Yq/Fc7nvvvtu/a3f+q3v/od/+Iff+Yd/+Iff5qqrrrrqqquuuuqq/0roQQ96EFddddVVV131P807vuM7ftY7vdM7ffZ9991369d//de/zz/8wz/8NlddddX/CNdcc82DX/u1X/u9XvzFX/y1X+zFXuy1eS733Xffrb/1W7/13f/wD//wO//wD//w21x11VVXXXXVVVdd9d8JPehBD+Kqq6666qqr/id6x3d8x896p3d6p8++7777bv2sz/qs17nvvvtu5aqrrvovd8011zz4tV/7td/rxV/8xV/7xV7sxV6b53Lffffd+lu/9Vvf/Q//8A+//Q//8A+/w1VXXXXVVVddddVV/5OgBz3oQVx11VVXXXXV/0TXXHPNgz/8wz/8u17sxV7stf/hH/7htz/zMz/zdbjqqqv+011zzTUPfu3Xfu33evEXf/HXfrEXe7HX5rncd999t/7Wb/3Wd//DP/zD7/zDP/zDb3PVVVddddVVV1111f9k6EEPehBXXXXVVVdd9T/VNddc8+DP+ZzP+a1rrrnmwT/yIz/y2T/6oz/6OVx11VX/oa655poHv/Zrv/Z7vfiLv/hrv9iLvdhr81zuu+++W3/rt37ru//hH/7hd/7hH/7ht7nqqquuuuqqq6666n8T9KAHPYirrrrqqquu+p/smmuuefA3fdM3PR3gR37kRz77R3/0Rz+Hq6666t/smmuuefBrv/Zrv9eLv/iLv86LvdiLvRbP5b777rv1t37rt777H/7hH37nH/7hH36bq6666qqrrrrqqqv+N0MPetCDuOqqq6666qr/6V7ndV7nvT/8wz/8u+67775bv/7rv/59/uEf/uG3ueqqq14k11xzzYNf+7Vf+71e/MVf/LVf7MVe7LV5Lvfdd9+tv/Vbv/XdAD/6oz/6OVx11VVXXXXVVVdd9X8JetCDHsRVV1111VVX/W/wju/4jp/1Tu/0Tp9933333fpZn/VZr3PffffdylVXXfU8rrnmmge/9mu/9nsBvNM7vdNn81zuu+++W3/rt37ruwF+9Ed/9HO46qqrrrrqqquuuur/MvSgBz2Iq6666qqrrvrf4Jprrnnwh3/4h3/Xi73Yi732fffdd+uHfMiHPISrrrqKa6655sGv/dqv/V4A7/RO7/TZPJf77rvv1t/6rd/6boAf/dEf/Ryuuuqqq6666qqrrvr/BD3oQQ/iqquuuuqqq/63uOaaax78OZ/zOb91zTXXPPi3fuu3vvvrv/7r34errvp/5pprrnnwa7/2a78XwDu90zt9Ns/lvvvuu/Uf/uEffvu+++679bd/+7e/57777ruVq6666qqrrrrqqqv+v0IPetCDuOqqq6666qr/Ta655poHf9M3fdPTAX7kR37ks3/0R3/0c7jqqv/Drrnmmge/9mu/9nsBvNM7vdNn81zuu+++W//hH/7ht++7775bf/u3f/t77rvvvlu56qqrrrrqqquuuuqqK9CDHvQgrrrqqquuuup/m9d5ndd57w//8A//rvvuu+/Wr//6r3+ff/iHf/htrrrq/4hrrrnmwS/2Yi/22mfOnHnQ67zO67z3Nddc82Ae4L777rv17Nmzt/793//9b//DP/zDb//DP/zD73DVVVddddVVV1111VXPH3rQgx7EVVddddVVV/1v9I7v+I6f9U7v9E6ffd999936WZ/1Wa9z33333cpVV/0vdM011zz4zJkzD36xF3ux13qd13md977mmmsezAPcd999t549e/bWv//7v//tf/iHf/idf/iHf/htrrrqqquuuuqqq6666kWDHvSgB3HVVVddddVV/1t9+Id/+He9zuu8znvfd999t37Ih3zIQ7jqqv8FrrnmmgefOXPmwS/2Yi/2Wi/+4i/+2i/2Yi/22jzAfffdd+vZs2dv/fu///vf/od/+Iff+Yd/+Iff5qqrrrrqqquuuuqqq/5t0IMe9CCuuuqqq6666n+ra6655sEf/uEf/l0v9mIv9tq/9Vu/9d1f//Vf/z5cddX/MNdcc82Dz5w58+AXe7EXe60Xf/EXf50Xe7EXey2ey3333Xfrb/3Wb333P/zDP/zOP/zDP/w2V1111VVXXXXVVVdd9R8DPehBD+Kqq6666qqr/je75pprHvxN3/RNTwf4kR/5kc/+0R/90c/hqqv+G11zzTUPPnPmzINf7MVe7LVe/MVf/LVf7MVe7LV5Lvfdd9+tv/Vbv/Xd//AP//A7//AP//DbXHXVVVddddVVV1111X8O9KAHPYirrrrqqquu+t/uxV7sxV77cz/3c38L4Ou//uvf57d+67e+m6uu+i90zTXXPPi1X/u13+vFX/zFX/vFXuzFXpvnct999936W7/1W9/9D//wD7/9D//wD7/DVVddddVVV1111VVX/ddAD3rQg7jqqquuuuqq/wve8R3f8bPe6Z3e6bPvu+++W7/+67/+ff7hH/7ht7nqqv8k11xzzYNf+7Vf+71e/MVf/LVf7MVe7LV5Lvfdd9+tv/Vbv/Xd//AP//A7//AP//DbXHXVVVddddVVV1111X8P9KAHPYirrrrqqquu+r/iHd/xHT/rnd7pnT77vvvuu/WzPuuzXue+++67lauu+g9wzTXXPPi1X/u13+vFX/zFX/vFXuzFXpvnct999936W7/1W9/9D//wD7/zD//wD7/NVVddddVVV1111VVX/c+AHvSgB3HVVVddddVV/1dcc801D/7wD//w73qxF3ux177vvvtu/ZAP+ZCHcNVV/wbXXHPNg1/7tV/7vV78xV/8dV7sxV7stXgu9913362/9Vu/9d3/8A//8Dv/8A//8NtcddVVV1111VVXXXXV/0zoQQ96EFddddVVV131f8k111zz4M/5nM/5rWuuuebBv/Vbv/XdX//1X/8+XHXVv+Caa6558Gu/9mu/14u/+Iu/9ou92Iu9Ns/lvvvuu/W3fuu3vhvgR3/0Rz+Hq6666qqrrrrqqquu+t8BPehBD+Kqq6666qqr/q+55pprHvxN3/RNTwf4kR/5kc/+0R/90c/hqqse4Jprrnnwa7/2a7/XNddc8+DXeZ3XeW+ey3333Xfrb/3Wb303wI/+6I9+DlddddVVV1111VVXXfW/E3rQgx7EVVddddVVV/1f9Dqv8zrv/eEf/uHfdd9999369V//9e/zD//wD7/NVf9vXXPNNQ9+7dd+7fcCeKd3eqfP5rncd999t/7Wb/3WdwP86I/+6Odw1VVXXXXVVVddddVV/zegBz3oQVx11VVXXXXV/1Xv+I7v+Fnv9E7v9Nn33XffrZ/1WZ/1Ovfdd9+tXPX/wjXXXPPg137t134vgHd6p3f6bJ7Lfffdd+s//MM//PZ9991364/+6I9+DlddddVVV1111VVXXfV/E3rQgx7EVVddddVVV/1fdc011zz4wz/8w7/rxV7sxV77vvvuu/VDPuRDHsJV/yddc801D37t137t9wJ4p3d6p8/mudx33323/sM//MNv33fffbf+9m//9vfcd999t3LVVVddddVVV1111VX/96EHPehBXHXVVVddddX/Zddcc82DP+dzPue3rrnmmgf/1m/91nd//dd//ftw1f9611xzzYNf7MVe7LXPnDnzoNd5ndd572uuuebBPMB9991369mzZ2/9+7//+9/+7d/+7e+57777buWqq6666qqrrrrqqqv+/0EPetCDuOqqq6666qr/66655poHf9M3fdPTAX7kR37ks3/0R3/0c7jqf5VrrrnmwS/2Yi/22mfOnHnQ67zO67z3Nddc82Ae4L777rv17Nmzt/793//9b//DP/zD7/zDP/zDb3PVVVddddVVV1111VVXoQc96EFcddVVV1111f8Hr/M6r/PeH/7hH/5d9913361f//Vf/z7/8A//8Ntc9T/WNddc8+AzZ848+MVe7MVe68Vf/MVf+8Ve7MVemwe47777bj179uytf//3f//b//AP//A7//AP//DbXHXVVVddddVVV1111VXPDT3oQQ/iqquuuuqqq/6/eMd3fMfPeqd3eqfPvu+++279rM/6rNe57777buWq/xGuueaaB585c+bBL/ZiL/ZaL/7iL/7aL/ZiL/baPJf77rvv1t/6rd/67n/4h3/4nX/4h3/4ba666qqrrrrqqquuuuqqfwl60IMexFVXXXXVVVf9f/LhH/7h3/U6r/M6733ffffd+iEf8iEP4ar/Ftdcc82Dz5w58+AXe7EXe60Xf/EXf+0Xe7EXe22ey3333Xfrb/3Wb333P/zDP/zOP/zDP/w2V1111VVXXXXVVVddddW/FnrQgx7EVVddddVVV/1/cs011zz4wz/8w7/rxV7sxV77t37rt77767/+69+Hq/5LXHPNNQ9+7dd+7fd68Rd/8dd+sRd7sdfmudx33323/tZv/dZ3/8M//MPv/MM//MNvc9VVV1111VVXXXXVVVf9e6EHPehBXHXVVVddddX/N9dcc82DP+dzPue3rrnmmgf/yI/8yGf/6I/+6Odw1X+4a6655sGv/dqv/V4v/uIv/tov9mIv9to8l/vuu+/W3/qt3/ruf/iHf/idf/iHf/htrrrqqquuuuqqq6666qr/aOhBD3oQV1111VVXXfX/0Yu92Iu99ud+7uf+FsCP/MiPfPaP/uiPfg5X/btcc801D37t137t93rxF3/x136xF3ux1+a53Hfffbf+1m/91nf/wz/8w+/8wz/8w29z1VVXXXXVVVddddVVV/1nQw960IO46qqrrrrqqv+vXud1Xue9P/zDP/y77rvvvlu//uu//n3+4R/+4be56kV2zTXXPPi1X/u13+vFX/zFX/vFXuzFXpvnct999936W7/1W9/9D//wD7/zD//wD7/NVVddddVVV1111VVXXfVfDT3oQQ/iqquuuuqqq/4/e8d3fMfPeqd3eqfPvu+++279rM/6rNe57777buWq5+uaa6558Gu/9mu/14u/+Iu/9ou92Iu9Ns/lvvvuu/W3fuu3vhvgR3/0Rz+Hq6666qqrrrrqqquuuuq/G3rQgx7EVVddddVVV/1/ds011zz4wz/8w7/rxV7sxV77vvvuu/VDPuRDHsJVl11zzTUPfu3Xfu33evEXf/HXfrEXe7HX5rncd999t/7Wb/3WdwP86I/+6Odw1VVXXXXVVVddddVVV/1Pgx70oAdx1VVXXXXVVf/fXXPNNQ/+nM/5nN+65pprHvxbv/Vb3/31X//178P/Q9dcc82DX/u1X/u9AN7pnd7ps3ku9913362/9Vu/9d0AP/qjP/o5XHXVVVddddVVV1111VX/06EHPehBXHXVVVddddVVcM011zz4m77pm54O8CM/8iOf/aM/+qOfw/9x11xzzYNf+7Vf+70A3umd3umzeS733Xffrb/1W7/13QA/+qM/+jlcddVVV1111VVXXXXVVf/boAc96EFcddVVV1111VVXvM7rvM57f/iHf/h33Xfffbd+/dd//fv8wz/8w2/zf8g111zz4Nd+7dd+L4B3eqd3+myey3333XfrP/zDP/z2fffdd+tv//Zvf8999913K1ddddVVV1111VVXXXXV/2boQQ96EFddddVVV1111bO94zu+42e90zu902ffd999t37WZ33W69x333238r/UNddc8+AXe7EXe+0zZ8486J3e6Z0+m+dy33333Xr27Nlb//7v//63f/u3f/t77rvvvlu56qqrrrrqqquuuuqqq/4vQQ960IO46qqrrrrqqque7Zprrnnwh3/4h3/Xi73Yi732fffdd+uHfMiHPIT/Ja655poHv9iLvdhrnzlz5kGv8zqv897XXHPNg3mA++6779azZ8/e+vd///e//Q//8A+/8w//8A+/zVVXXXXVVVddddVVV131fxl60IMexFVXXXXVVVdd9ZyuueaaB3/O53zOb11zzTUP/q3f+q3v/tEf/dHPOXPmzINf7MVe7LVe/MVf/LV/5Ed+5HP+4R/+4bf5b3bNNdc8+MyZMw9+sRd7sdd6ndd5nfe+5pprHswD3HfffbeePXv21r//+7//7X/4h3/4nX/4h3/4ba666qqrrrrqqquuuuqq/0/Qgx70IK666qqrrrrqqud0zTXXPPi1X/u13+ud3umdPpvn40d+5Ec++0d/9Ec/h/9i11xzzYPPnDnz4Bd7sRd7rRd/8Rd/7Rd7sRd7bR7gvvvuu/Xs2bO3/v3f//1v/8M//MPv/MM//MNvc9VVV1111VVXXXXVVVf9f0blqquuuuqqq656lmuuuebBn/M5n/Nb11xzzYN5IV78xV/8tX/0R3/0c/hPds011zz4zJkzD36xF3ux13rxF3/x136xF3ux1+a53Hfffbf+1m/91nf/wz/8w+/8wz/8w29z1VVXXXXVVVddddVVV131bFSuuuqqq6666qpnue+++2790R/90c95x3d8x8+65pprHswLcObMmQfzn+Saa6558Gu/9mu/14u/+Iu/9ou92Iu9Ns/lvvvuu/W3fuu3vvsf/uEffucf/uEffpurrrrqqquuuuqqq6666qoXDD3oQQ/iqquuuuqqq656Ttdcc82DX/u1X/u93umd3umzeQHe7u3eTvwHuOaaax782q/92u/14i/+4q/9Yi/2Yq/Nc7nvvvtu/a3f+q3v/od/+Iff+Yd/+Iff5qqrrrrqqquuuuqqq6666kWHHvSgB3HVVVddddVVVz1/11xzzYM//MM//Lte7MVe7LV5Lp/5mZ/5Ov/wD//w2/wrXXPNNQ9+7dd+7fd68Rd/8dd+sRd7sdfmudx33323/tZv/dZ3/8M//MPv/MM//MNvc9VVV1111VVXXXXVVVdd9W9H5aqrrrrqqquueoHuu+++W7/+67/+fV77tV/7vd7pnd7ps3mAF3uxF3utf/iHf/ht/gXXXHPNg1/7tV/7vV78xV/8tV/sxV7stXku9913362/9Vu/9d3/8A//8Dv/8A//8NtcddVVV1111VVXXXXVVVf9x0EPetCDuOqqq6666qqr/mXXXHPNg1/7tV/7vd7pnd7pswHuu+++WwGe/OQnf+dXfuVXfh7PdM011zz4tV/7td/rxV/8xV/7xV7sxV6b53Lffffd+lu/9Vvf/Q//8A+/8w//8A+/zVVXXXXVVVddddVVV1111X8e9KAHPYirrrrqqquuuupF9zqv8zrv/eEf/uHfxXP5h3/4h99+sRd7sdfmudx33323/tZv/dZ3A/zoj/7o53DVVVddddVVV1111VVXXfVfh8pVV1111VVXXfWv8jqv8zrvxfPxYi/2Yq8NcN999936W7/1W98N8KM/+qOfw1VXXXXVVVddddVVV1111X8fKlddddVVV1111X+IH/mRH/nsH/3RH/0crrrqqquuuuqqq6666qqr/ucguOqqq6666qqr/lW+8zu/8y14Pn70R3/0c7jqqquuuuqqq6666qqrrvqfheCqq6666qqrrvpXufXWWw+maTrgAd7u7d5OXHXVVVddddVVV1111VVX/c+DHvSgB3HVVVddddVVV1111VVXXXXVVVddddVVV/2fROWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q/hHEypp2vdiV4sAAAAASUVORK5CYII=) diff --git a/docs/kcl/reduce.md b/docs/kcl/reduce.md index 7a371710f..da46f47a0 100644 --- a/docs/kcl/reduce.md +++ b/docs/kcl/reduce.md @@ -78,7 +78,7 @@ assertEqual(sum, 6, 0.00001, "1 + 2 + 3 summed is 6") ```js // Declare a function that sketches a decagon. fn decagon(radius) { - // Each side of the decagon is turned this many degrees from the previous angle. + // Each side of the decagon is turned this many radians from the previous angle. stepAngle = 1 / 10 * TAU // Start the decagon sketch at this point. diff --git a/docs/kcl/rotate.md b/docs/kcl/rotate.md index f4356b7f4..5836f0f76 100644 --- a/docs/kcl/rotate.md +++ b/docs/kcl/rotate.md @@ -65,9 +65,9 @@ rotate( sweepPath = startSketchOn(XZ) |> startProfileAt([0.05, 0.05], %) |> line(end = [0, 7]) - |> tangentialArc({ offset = 90, radius = 5 }, %) + |> tangentialArc(angle = 90, radius = 5) |> line(end = [-3, 0]) - |> tangentialArc({ offset = -90, radius = 5 }, %) + |> tangentialArc(angle = -90, radius = 5) |> line(end = [0, 7]) // Create a hole for the pipe. @@ -81,7 +81,7 @@ sweepSketch = startSketchOn(XY) |> rotate(roll = 10, pitch = 10, yaw = 90) ``` -![Rendered example of rotate 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEOyklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuur5+vAP//DverEXe7HX/od/+Iffvuaaax5833333Xrffffdevbs2Wfcd999t549e/bW++6771auuuqqq6666qqr/ueictVVV1111VVXXXXVVVc9XxsbG6/d9/2DX+ZlXua9d3d3OXnyJK/zOq/DA9133323AvzDP/zDbwP8wz/8w+/cd999t549e/bW++6771auuuqqq6666qqr/nuhBz3oQVx11VVXXXXVVVddddVVz+maa6558CMe8Yinz2YzTp06xYkTJ4gIbrrpJiSxs7PDDTfcwO7uLgCXLl1id3eXl3qpl+J+9913360A//AP//Db//AP//A7APfdd9+t//AP//DbXHXVVVddddVVV/3XQA960IO46qqrrrrqqquuuuqqq55T13Wv/ehHP/q3ZrMZXddRSqGUQimFiCAiiAi2t7eJCK6//noiguuuu46trS2uvfZadnd3AXjGM57BS73US3G/++6771aAf/iHf/htgH/4h3/4nfvuu+/Wf/iHf/htrrrqqquuuuqq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ddVVV1111X+va6655sEv9mIv9tqv8zqv814v9mIv9to8wH333XfrP/zDP/z2P/zDP/zOfffdd+s//MM//Db/g1xzzTUPfu3Xfu33+od/+Iff+Yd/+Iff5qr/VyQ9+PTp00+vtVJKoZRCRCCJiEASkpCEJNbrNa01uq6jlEIphVIKEUFEIImIQBIRgSQkIQlJSEISkpCEJCQhCQBJSEISAJKQhCQAJCEJAElIAkASAJIAkASAJF4Q29zPNrYBsI1tbANgm+dmmxfENgC2AbCNbQBsY5vMxDa2yUxsk5nYxjaZiW0yk9Yaj3vc4x4yTdOtXHXVVVddddVV/x+hBz3oQVx11VVXXXXVVf9zXHPNNQ9+sRd7sdd+sRd7sdd6ndd5nffmudx33323nj179tb77rvv1t/6rd/6nrNnz95633333cq/0Xu913t92vb29sO//uu//n14EVxzzTUPfu3Xfu33evEXf/HXfrEXe7HX5pl+67d+67u//uu//n34H+DDP/zDv2uapv1v/uZv/kiu+k+1ubn5XZubm+9da6WUQkQQEUgiIpCEJCQhiaOjIyKCWiulFEopRAQRQUQQEUhCEhGBJCQhCUlIQhKSkIQkJCEJAElIAkASkpAEgCQkASAJAElIAkASAJIAkMS/xDYAtgGwjW1sA2CbF8Y2z49tAGxjGwDb2MY2mYltbJOZZCa2sY1tMpPMJDNprfF3f/d34qqrrrrqqquu+v8KPehBD+Kqq6666qqrrvqf65prrnnwi73Yi732i73Yi73W67zO67w3z8d99913K8A//MM//PZ9991369mzZ59x33333QrwD//wD7/NC/ATP/ET5gH+8i//8nO+4Au+4LN5pmuuuebBZ86cefCLvdiLvdaLv/iLv/aLvdiLvTYvwD/8wz/89md+5me+Dv+NHvGIR2x+8Rd/8QEP8HZv93biX3DNNdc8+MyZMw9+sRd7sdcCuOaaax58zTXXPBjgMz/zM1+Hq16gU6dOudZKKYVSChFBRCCJiEASkpCEJA4ODqi1UmullEIphYggIogIJBERSCIikIQkJCEJSUhCEpKQhCQAJCEJAElIQhIAkpAEgCQAJCEJAEkASOJ+kviX2AbANgC2sY1t/rVs80C2sQ2AbWxjG9tkJrbJTGyTmdjGNrbJTDKTzOTs2bPffeedd74PV1111VVXXXXV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c9VVV1111VVXXfWiI7jqqquuuuqqq6666v+F++6779bP+qzPeh2A13md13nvd3qnd/psXoBa64N5AElIQhKSkERE0HUdALZ5braxDYBtAGxzP9vYxja2sY1t7mcb29gGwDYAtrGNbWxjGwDb3M82LwpJSEISkrifJCQhCUlIIiKICGqt1FqptdJ1HX3f0/c9s9mM2WzGbDZjNpsxm83o+56u66i1UkohIogIJPHcbGMb29jGNraxjW1s86QnPel9uOqqq6666qqrrvrXIbjqqquuuuqqq6666v+N++6779av//qvfx+A13md13nvF3uxF3ttnktEvLckJCEJSUhCEgCSkIQkJGGbzCQzsY1tbHM/2wDYBsA2trGNbR7INraxzf1sYxsA2wDYBsA2ALa5n23+PSQhCUlIQhIRQURQSqGUQimFruvo+56+7+n7ntlsxmw2Yzab0fc9fd/T9z1d11FrpdZKKQVJSOJ+trGNbTIT29jGNraxjW0yk3Pnzn03V1111VVXXXXVVf86BFddddVVV1111VVX/b/yW7/1W9/9Iz/yI5995syZB334h3/4d/Fcuq57LUlIQhKSuJ8kJCEJSUQEALYBsI1tbGMb2wDYBsA2tnkg29jGNvezjW1sA2Ab2wDYBsA2trHN/Wzz7yEJSUhCEhFBRBARlFIopVBKoes6uq6j6zr6vmc2mzGbzZjNZsxmM2azGX3f03UdtVZqrUQEEYEk7mcb22QmtrFNZmIb29jGNrZ5xjOe8dlcddVVV1111VVX/esRXHXVVVddddVVV131/85v//Zvf8/f//3f//Y111zz4A//8A//Lh5gNpu9tiQkcT9JSEISkpCEJCSRmWQmmYltbGMbANvYxja2sQ2AbWxjG9vYxja2sc39bGMbANvYxja2sc2Lyjb/EkncTxKSkEREEBFEBKUUaq3UWum6jr7v6fue2WzGbDZjNpvR9z1d19F1HbVWaq2UUogIJHE/29gmM7FNZmIb29jGNraxjW3uu+++7+Gqq6666qqrrrrqX4/gqquuuuqqq6666qr/d+67775bv/7rv/69AV7ndV7nvV/sxV7stXmmWuuDJSEJSUhCEpKQBIAkJCGJxWJBZmIb29gGwDa2sQ2AbQBsYxvbPDfb2MY2tgGwjW1sYxsA2zw32/xbSQJAEpKQhCQigoggIiilUGul1krXdfR9T9/3zGYzZrMZfd/T9z1939P3PbVWaq2UUogIIoL72cY2mYltMpPMJDOxTWZim8wkM7n77ru/exiGW7nqqquuuuqqq6761yO46qqrrrrqqquuuur/pbNnzz7jR37kRz4b4MM//MO/CyAz30sSkgCQhCQAJAEgCUlIQhJd19FaIzPJTGxjG9sA2MY2trGNbWwDYBvb2MY297ONbWwDYBsA29jGNraxjW1s828lCQBJSEISkogIJBERlFIopVBKoes6uq6j6zr6vqfve/q+Zzab0fc9XddRa6XWSimFiEASD2SbzCQzaa2RmWQmmUlmYpvMxDa2ecYznvE5XHXVVVddddVVV/3bEFx11VVXXXXVVVdd9f/Wb//2b3/PP/zDP/z2Nddc8+AP//AP/66u65CEJCRxP0kASEISkpCEJPq+JyLITGxjG9vYxja2sQ2AbWwDYBvb2MY2trGNbQBsYxvb2MY2ALb5jyIJAEkASEISkpBERBARlFIopVBrpdZK13X0fU/f98xmM/q+p+97uq6j6zpqrZRSiAgiAklIAiAzyUxaa2QmmUlmYhvb2CYzsY1tnv70p3/2OI63ctVVV1111VVXXfVvQ3DVVVddddVVV1111f9b9913361f//Vf/z4AL/ZiL/baL/3SL/05kpCEJCQhCUlIQhKSkIQkJCGJrutorZGZ2CYzsY1tbGMb29gGwDa2sY1tbGMb29jGNraxjW0AbGOb/yiSAJAEgCQAJCGJiCAiKKVQSqHWStd1dF1H3/f0fc9sNqPve2azGV3X0XUdtVZKKZRSiAgkIQnbZCaZSWaSmbTWyEwyk8wkM8lMbGObzOT222//HK666qqrrrrqqqv+7Qiuuuqqq6666qqrrvp/7b777rv1t37rt777mmuuefDbvd3bPUgS95OEJAAkIQlJAEhCEhHBYrFgmiYyk8zENplJZmIb29jGNraxjW1sYxvb2MY2trENgG1sYxvb/FvY5oEkIYkHkoQkJCGJiCAiKKUQEZRSqLVSa6XrOvq+p+97+r6n73u6rqPrOmqtlFIopRARSALANrbJTDKT1hqtNTKT1hqtNVprZCaZiW0yk6c+9amfw1VXXXXVVVddddW/D8FVV1111VVXXXXVVf/v/eiP/ujnADzqUY/ikY98JJKQxP0k8UCSkIQkJNH3PbZprZGZZCa2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWzzbyWJ+0nigSQhCQBJSCIikEREEBGUUqi1Umul6zr6vqfrOvq+p+97+r6n6zq6rqPWSimFiEASkgCwTWaSmbTWaK3RWmOaJlprZCaZSWZim8zk6Ojo1jvuuOOzueqqq6666qqrrvr3Ibjqqquuuuqqq6666v+9++6779av//qv/2yA93zP90QSkpCEJCQhCUlIQhKSkIQkZrMZXdeRmbTWyEwyE9vYxja2sY1tbGMb2zyQbWxjG9v8R5GEJB5IEveThCQiAklEBBFBKYVSCqUUaq10XUfXdfR9T9/39H1P13V0XUcphVIKEYEkAGxjm8yktUZrjWmamKaJaZpordFao7VGZpKZZCaZyeMf//j34aqrrrrqqquuuurfj+Cqq6666qqrrrrqqquAxz/+8c84f/48p06d4hGPeAQAkpAEgCQkIQlJSEISkgA4deoUtrFNZpKZZCaZSWaSmdgmM7GNbWyTmdgmM7GNbWxjG9s8kG3+I0lCEpKQhCQigoggIiilUGul1krXddRa6bqOruvouo6u6+i6jlIKpRQiAklI4n62yUxaa0zTxDRNTNNEa43WGplJZpKZZCaZyfnz53/70qVLv81VV1111VVXXXXVvx/BVVddddVVV1111VVXAbu7u6/1C7/wCwC827u9G5K4nyQAJCEJSQBIQhKSmM1mlFKwjW1sYxvb2MY2trGNbWxjG9tkJraxjW1scz/bPJBt/r0kIQlJSEISkogIIoKIoJRCRFBKodZKrZWu6+i6jq7r6LqOWiulFEopRASSkMT9MpPWGtM0MU0T4zgyTRPTNDFNE601Wmu01shMMpPM5ClPecrncNVVV1111VVXXfUfg+Cqq6666qqrrrrqqquAvu9f+0lPehJPfvKTOXnyJA9/+MORhCQAJPFAkpCEJCQxm804ceIEmYltbGMb29gmM8lMbJOZ2MY2trGNbWxjGwDb/EeThCQkASAJSUQEEYEkIoJSChFBKYVaK7VWaq10XUfXdXRdR9d11FqptVJKISKQBIBtMpPMpLVGa41xHJmmiXEcmaaJaZqYponWGplJZpKZPOUpT/nsg4OD3+aqq6666qqrrrrqPwbBVVddddVVV1111VVXAV3XPfjixYv86Z/+KQBv9EZvhCQAJCEJSUhCEpKQhCQkAbC1tUVrjczENraxjW0AbGMb29jGNraxjW1s86Kwzb+WJAAkASAJAElIQhIRQUQQEZRSqLVSSqHWStd1dF1H13V0XUetlVorEUFEIIn72SYzaa0xTRPjODJNE+M4Mk0T4zgyTROtNVprtNZorXF4eHjrrbfe+jlcddVVV1111VVX/cchuOqqq6666qqrrrrqKnhvSUjiKU95CgAPf/jDedjDHoYkJAEgCUlIQhKSkASAJGazGVtbW9jGNraxjW1sA2AbANvYxja2AZDEi0ISLypJSAJAEgCSkIQkJCGJiCAiiAgiglIKpRRqrdRaqbVSa6XWSq2VUgoRQUQgifvZJjNprTFNE+M4Mo4jwzAwDAPDMDCOI9M0MU0TrTVaa2Qmf/M3f/M+XHXVVVddddVVV/3HIrjqqquuuuqqq6666v+9UsqDIgJJXLx4kV/5lV8B4A3f8A2RBIAkACQhCUlIAkASkpDE9ddfzzRNZCaZiW1sYxvb2MY2trHNc5MEgCQAJHE/SUjihZGEJCQhiftJAkASkpCEJCQhCUlIIiIopVBKoZRCKYVaK7VWaq3UWimlUEohIpDE/WyTmWQmrTXGcWQcR4ZhYBgGxnFkHEemaaK1RmuN1hqZyZOe9KTP2d/f/22uuuqqq6666qqr/mMRXHXVVVddddVVV131/17f9w+WhCQk8ed//ufc72EPexiSkIQk7icJAElIAkAS8/mcG2+8kdYatrGNbWxjGwDb2OZ+kpCEJAAkASAJAElI4rlJQhKSkIQknpskJCEJSUhCEpKICCQREUQEEUFEEBFEBKUUSimUUiilUEqhlEIphYhAEpIAsE1m0lpjmibGcWQcR4ZhYL1eMwwDwzAwjiPTNDGOI601Wmus1+tbn/a0p302V1111VVXXXXVVf/xCK666qqrrrrqqquu+n+v7/vXloQkAC5cuMBTn/pUHvawh/HQhz4USQBIQhKSAJCEJCQhifvt7OxQSqG1RmZiG9vYxja2AZCEJCQhCQBJSEISAJJ4IElIQhIviCQkIQkASQBIQhKSkIQkIgJJSCIiiAgiglIKpRRqrZRSqLVSSqGUQkQgCUkA2CYzyUxaa4zjyDAMDMPAer1mGAaGYWAYBsZxZBxHWmtM00RrjT/5kz95H6666qqrrrrqqqv+cxBcddVVV1111VVXXfX/Xq31wZIAkIQkfu3Xfg2Al3/5lwdAEgCSkIQkJCEJSQBIQhKz2YwHPehBZCaZSWZiG9sASEISkpCEJAAkIYn7SeJ+kpDEc5OEJCQhCUncTxKSAJCEJCQhCUlIQhIRQUQQEUQEpRRKKZRSKKVQSqGUQimFiEASkgCwTWaSmUzTxDiOjOPIMAys12vW6zXr9Zr1es0wDIzjyDRNTNNEa40//MM/fJ39/f3f5qqrrrrqqquuuuo/B8FVV1111VVXXXXVVf/fvbckJCEJSQBcvHiRixcvcuLECR72sIcBIAkASUhCEpKQhCQeaHt7m1OnTvFAkpCEJCTxQJKQBIAkJAEgCUk8kCQkIYnnRxKSuJ8kJHE/SUhCEpKQREQQEUQEEUFEEBFEBKUUIoKIQBKSALBNZpKZTNPENE2M48gwDAzDwGq1Yr1es16vWa/XjOPIOI6M48g0Tdx6663fffHixd/mqquuuuqqq6666j8PwVVXXXXVVVddddVV/6/VWokIJCEJAEns7u7yF3/xFwC87Mu+LJKQhCTuJwlJSAJAEpKQhCRuuOEG5vM5EUFEIAlJSEISkpCEJCQBIAkASUjifpKQhCSeH0lIQhL3k4QkJAEgCUlIQhKSiAgiAklEBBFBRFBKoZRCKYWIICKQhCQAbJOZtNaYpolpmhjHkWEYWK1WrFYrVqsVq9WK9XrNOI4Mw8A4jkzTxD333PPbf/u3f/s+XHXVVVddddVVV/3nIrjqqquuuuqqq6666v+1ruteSxKSkIQkJAHwtKc9DYCHPvShSAJAEpKQxANJ4rl1XcfNN99MRCCJiEASkpCEJCQhCQBJAEjifpKQxANJQhKSkIQkHkgSkgCQBIAkJCEJAElIQhKSiAgigoggIogIIoKIICKQhCQAbJOZZCatNaZpYhxH1us1q9WK1WrFcrlktVqxWq1Yr9es12vGcWQcR/b392/9oz/6o9fhqquuuuqqq6666j8flauuuuqqq6666qqr/l/r+/61IwJJAEgCQBJPf/rTuXjxIidOnABAEgCSeEEkIQlJAGxubnLNNddw4cIFJCEJSUhCEpIAkASAJAAkIYn7SUISknh+JCEJSQBIQhIAkpCEJCQREUgiIpBERBARSCIiiAgigohAEpKQBIBtMpPMZJomADKTaZoYhoHVasVqtWK1WrFarViv16zXa4ZhYBxHLl26dOsf/dEfvQ9XXXXVVVddddVV/zWoXHXVVVddddVVV131/1qt9cE8kyQAJHG/pz3taTz0oQ9FEpK4nySemyQeSBKSOHPmDKUULl68iCQkIQlJSEISkpCEJCQBIAlJSOKBJCEJSUhCEg8kCQBJSEISkpCEJCQhCUlEBJKQREQQEUQEkpCEJCQBYJvMpLWGJCQB0FpjHEfW6zWr1YrVasVyuWS1WrFarViv1wzDwMWLF2/9wz/8w/fZ29v7ba666qqrrrrqqqv+axBcddVVV1111VVXXfX/lu3XjggkIQlJSAJAEpL4q7/6KwAkASAJSQBIQhKSkMQLIonjx4+zublJRBARSEISAJIAkASAJCRxP0lIQhKSeH4kIQlJAEgCQBKSuJ8kJBERSEISkogIIgJJRAQRgSQkAWCbzCQzaa0xTRPjODIMA+v1mtVqxXK5ZLlccnR0xHK5ZLVasV6vGYaBixcv3vr7v//777O3t/fbXHXVVVddddVVV/3XoXLVVVddddVVV1111f9btdYHS0ISkrifJAAksbu7y+7uLgCSAJDE/SRxP0lIQhKSkMT9uq7juuuu4+zZs6xWKyQhCUlIQhKSkASAJCQhiQeShCQkIQlJSOJ+kpAEgCQkASAJSUhCEpKQhCQiAklIQhKSAJAEgG1sk5lM0wRAZmKb1hrTNLFer1mtVhwdHbFcLlmv16xWK9brNRcuXLj1937v995nb2/vt7nqqquuuuqqq676r0Xlqquuuuqqq6666qr/t7que62IQBKSkIQkJCEJgN3dXf7qr/4KSQBIAkASDySJ50cS9+u6jmuvvZZz586xWq2QhCQkIQkASUjifpKQhCQk8fxIQhKSAJCEJCQBIAlJSEISAJKQhCQkIQlJSAJAEgC2sU1rjdYakshMJJGZtNYYx5H1es1yuWS1WrFcLlkul6zXa86fP3/rz/7szz6Eq6666qqrrrrqqv8eVK666qqrrrrqqquu+n9rNpu9tiQkASCJB5KEJP76r/8aAElI4n6SeFFIQhIAXddxzTXXcHh4yMWLF5GEJCQhCQBJSEISDyQJSUhCEpKQxP0kIQkASQBIQhKSkIQkJCEJSUhCEpKQhCQkAWAb22QmrTWmacI2kgDITKZpYhgGVqsVq9WK5XLJarViuVxy6623/vav//qvvw5XXXXVVVddddVV/32oXHXVVVddddVVV131/1bXdQ+WhCQkASAJSUjigSQhCQBJAEjiuUlCEpKQxANJQhJd13Hy5Ekigt3dXSQhCUlIAkASkpCEJCTx3CQhCUlIAkASkgCQhCQkIQlJSEISkpCEJCQhiQeyjW0yk9YakgBorSEJ20zTxDiODMPAarVitVqxWq1YLpf8/d///Xf/8R//8ftw1VVXXXXVVVdd9d+LylVXXXXVVVddddVV/y/ZfpAkJCEJSUhCEgCSkIQkJHE/SQBIAkASL4wkJPFAkpDEqVOn2Nra4q677kISkpCEJAAkIQlJSEISkpCEJO4nCUlIAkASkpCEJO4nCQBJAEhCEpIAkASAbWyTmWQm0zQBYBtJ2CYzmaaJcRxZr9es12uWyyXnzp279Zd+6Zfe59KlS7/NVVddddVVV1111X8/KlddddVVV1111VVX/b8k6bUlIQlJPJAknpskJAEgCUncTxL/Ekk8PxsbGzzkIQ/h3LlzHB0dIQlJSOKBJCEJSUhCEpKQxP0kIQkASUgCQBKSkIQkJCEJSUgCQBL3s41tMpNpmgCwzTRNANimtcY0TQzDwHq9ZhgGnvrUp/72L/3SL70OV1111VVXXXXVVf9zULnqqquuuuqqq6666v+l2Wz22pKQBIAkJCEJAElIQhKSkASAJCQBIIn7SeJ+kpCEJB5IEs9P3/dcd911HBwccO7cOSQhCUlIQhLPTRKSkIQkJAEgCUlIAkASkpAEgCQkIYnnZhvb2Ka1RkQAYJvWGpKwTWYyTRPjODKOI/fdd9+tv/Ebv/E+9957729z1VVXXXXVVVdd9T8Llauuuuqqq6666qqr/l8qpRARSEISAJIAkMTzIwlJAEgCQBIAknh+JCGJ+0lCEpKQxP26ruPMmTOcOnWKCxcucPHiRQAkIQlJSEISkrifJCQhCUlIQhIAkpCEJCQhCUncTxL3sw2AbTKTzGSaJmyTmUjCNplJZjJNE+M48gd/8Aef/Vd/9Vefw1VXXXXVVVddddX/TFSuuuqqq6666qqrrvp/qe/715YEgCQkASAJAElIQhKSkIQkACQBIAlJ3E8SL4gkXhR933PLLbdwyy23cNttt7G3tweAJCQhCUlIQhIAkpCEJAAkIQlJSEISkpAEgCQk8dwyk8wkM2mtYZvMRBIAtmmt0VrjD//wDz/7cY973PesVqtbueqqq6666qqrrvqfi8pVV1111VVXXXXVVf8v1VofLAlJAEhCEgCSuJ8kHkgSkgCQBIAkACRxP0lIQhL3k4QkHkgSz0/f97z4i784Fy9e5Ny5c1y4cAEASUhCEpKQBIAkJCEJSUhCEg8kCUk8N9vYxjaZSWsN20QEkrCNbS5dunTrP/zDP3z34x//+O9ZrVa3ctVVV1111VVXXfU/H5Wrrrrqqquuuuqqq/7fsf3eEYEkJCGJ+0kCQBKSAJCEJCRxP0kASEISAJJ4fiQhiftJQhKSeH5sYxvbXH/99TzsYQ9DEnfffTdPf/rTOTg4AEASkpCEJCQhCUlIQhKSkIQk7ieJ55aZSALANpKQBMDe3t6tf/VXf/XdT3ziEz+Hq6666qqrrrrqqv9dqFx11VVXXXXVVVdd9f9O13VI4oEkIQkASQBIQhKSkASAJCQhCQBJAEhCEveThCQkIQkASbwobGMb22QmrTU2Nzd5sRd7MR7zmMcwDAP33Xcfd955J3feeSeSkIQkJAEgCQBJSEISkpDEA9kmM7mfbS5dunTrfffd99t7e3u3/s3f/M3ncNVVV1111VVXXfW/F5Wrrrrqqquuuuqqq/7f6brutSQhCUlI4n6SAJDEc5OEJCQBIAlJAEhCEveTxANJAkASknh+bGMbANtkJplJZjJNE+M4slgs2NnZ4YYbbuDlX/7l2dvb48477yQzueuuu9jf3+fixYtIQhKSkMTzY5uDg4NbJXHu3LnfvnDhwq1nz5797YsXL/4OV1111VVXXXXVVf83ULnqqquuuuqqq6666v+dvu9fWxKSeH4kcT9JSEISkpAEgCQkIQkASUgCQBIAkpCEJCQhCUkASEISkpDEA9nGNplJa41pmpimiXEcqbUSEdhmmib6vueWW25hHEdOnz7NcrlkuVyyu7vLer1mf3+faZpYrVZkJpnJOI5kJgB/+7d/+zl33333d3PVVVddddVVV131fxOVq6666qqrrrrqqqv+36m1PlgSkpAEgCQk8UCSeH4kIQlJSAJAEpKQBIAkACQhCQBJSEISknh+bGMb29gmM2mtMU0T4zhSSgEgM4kIAFprjOPIMAwMw8A4jpRSiAgWiwXDMBARTNNEa437tda4cOHCb3PVVVddddVVV131fxeVq6666qqrrrrqqqv+X8nM144IJHE/SdxPEgCSeG6SkIQkJCEJSUgCQBKSkASAJCQhiYhAEpKQBIAknh/b2CYzyUwyk2mamKaJYRgAyEwiAttkJuM4MgwDwzAwjiPjONJao7VGZmIb29jGNraxzXq9vpWrrrrqqquuuuqq/7uoXHXVVVddddVVV131/0qt9cGSkIQkJPEvkYQknpskJCEJSUhCEpIAkIQkJCGJiEASkpCEJCQhifvZBsA2mUlmMk0TpRTGcUQSAK01IgLbZCbjODKOI+M4Mo4jrTVaa2QmmUlmYhvb3O/ixYu/w1VXXXXVVVddddX/bVSuuuqqq6666qqrrvp/peu614oIJHE/SUhCEgCSuJ8knpskJHE/SUhCEpKICAAkIQlJRASSkEREIAlJSAJAErYBsE1mkpm01ogIpmlCEgCZSSkFSQBkJtM0MY4j4zgyTRPTNNFaIzPJTGxjG9vYxjZHR0e3ctVVV1111VVXXfV/G5Wrrrrqqquuuuqqq/5fmc1mry0JSUhCEi+IJJ6bJB5IEgCSkEREIImIQBKSAIgIJBERAEhCEpKQxP1sYxvbZCatNSKCaZq4X2ZSSkEStslMWmtM08Q4jkzTRGuNzCQzsY1tbGMb29jm/Pnzv81VV1111VVXXXXV/21Urrrqqquuuuqqq676f6XrugdL4gWRBIAknpskHkgSAJIAkASAJCQhiYhAEhGBJCQhCQBJAEjigWyTmUgiM2mtIYn7ZSatNSRhm8wkM5mmiWmaaK2RmWQmmYltbGMb29xvd3f3t7nqqquuuuqqq676v43KVVddddVVV1111VX/b2TmgyUhCUlIQhKSkMQLI4kHksTzI4n7SUISkpBERCAJSUjiuUkCwDa2sU1m0lrjfrbJTCQhCYDMJDNprTFNE601WmtkJplJZmIb2wDYxjbr9fpWrrrqqquuuuqqq/5vo3LVVVddddVVV1111f8bEfHaEcELIgkASTyQJB5IEveTBIAkJAEgCUlIAkAS95OEJO4niefHNpmJJB7INpmJJCQBYJvMpLVGa43WGplJZmIbANsA2Abgrrvu+m6uuuqqq6666qqr/u+jctVVV1111VVXXXXV/xtd1z1IEpKQhCT+JZL415CEJO4nCQBJSOJ+knhR2MY2tslMJGGbiOB+trFNZmIb29jGNgC2eSDbXHXVVVddddVVV/0/QXDVVVddddVVV1111f8btdYHS0ISkgCQhCTuJ4n7SeK5SeJ+kgCQxHOThCQAJCEJAElI4t/KNgC2eSDbANjGNvezDYBtbHO/c+fO/Q5XXXXVVVddddVV//dRueqqq6666qqrrrrq/42+719bEpIAkMT9JPEvkcQLIol/iSReGEk8P5J4fmwDYBvb2OZ+trENgG3uZxuA3d3d3+aqq6666qqrrrrq/z4qV1111VVXXXXVVVf9v1FrfbAkXhBJ3E8SL4wkACRxP0k8N0n8W0jiRWEb2wDYxja2eWFss16vb+Wqq6666qqrrrrq/z6Cq6666qqrrrrqqqv+X7D93hGBJCQhCQBJSOKBJPHcJPGikIQk/j0kASAJSQBIQhKSeCBJPD+2AbDN/WwDcNddd303V1111VVXXXXVVf8/ULnqqquuuuqqq6666v+FWiuSkIQkACTxopDEA0nigSTx3CRxP0m8qCTxQJKQBIAkACQhCQDbANjmudnmfrYBsM1yubyVq6666qqrrrrqqv8fCK666qqrrrrqqquu+n+h67rXksT9JPFAkgCQxANJ4gWRxItKEvezzb9EEpIAkIQkACTxwtjmudnmgQ4PD5/BVVddddVVV1111f8PVK666qqrrrrqqquu+n9hNpu9dkQgCUkASEIS/xqSeH4k8R9FEveTBIAkJCEJSbwwtnl+bAOwu7v721x11VVXXXXVVVf9/0Dlqquuuuqqq6666qr/F2qtD5aEJAAkcT9JAEjigSTxL5HE/STxorKNJF4QSUhCEpKQhCQAJHE/20jiudkGwDbPbbVa3cpVV1111VVXXXXV/w8EV1111VVXXXXVVVf9n5eZryUJAElI4l8iiecmiftJ4vmRxP0k8cLY5n6SkIQkACQhCQBJAEhCEgCSAJDEi8I2AHfcccd3c9VVV1111VVXXfX/B5Wrrrrqqquuuuqqq/7PK6U8OCKQxANJ4n6SuJ8knpskXhBJ/EeSBIAkJCEJSUhCEpJ4fmzzQLZ5INscHR3dylVXXXXVVVddddX/HwRXXXXVVVddddVVV/2f13Xda0tCEpIAkASAJB5IEs9NEg8kiRdGEgC2eW62eWEkIQlJAEhCEpIAkIQkJCGJ52Yb2zyQbe53dHT0DK666qqrrrrqqqv+/6By1VVXXXXVVVddddX/eaUUJCEJAEk8kCT+LSRxP0n8R5KEJCQhCUlIQhIvCtsA2OaBLl68+NtcddVVV1111VVX/f9B5aqrrrrqqquuuuqq//Nms9lrSwJAEgCSeG6SeG6SeCBJvKgkIYkXlSQkIQkASUhCEpKQBIAkAGzzorINwHq9vpWrrrrqqquuuuqq/z8Irrrqqquuuuqqq676P6/W+mBJSAJAEgCSeGEk8YJIAkAS95PEC2Ob50cSknggSUhCEpKQhCQkIQkASUjiBbHNA91xxx3fzVVXXXXVVVddddX/LwRXXXXVVVddddVVV/2fZvu9JSEJSUjigSQBIIkHksRzk8R/BNs8P5KQhCQkIQlJSEISkpDEv5ZtbHPhwoXf4aqrrrrqqquuuur/FypXXXXVVVddddVVV/2f1nXdgyTx3CTxgkjiuUniBZHE/STx7yUJSUhCEpKQhCQkcT/bPJBtbGOb5+fChQu/zVVXXXXVVVddddX/L1Suuuqqq6666qqrrvo/rdb6YElIQhIAkgCQBIAk7ieJf4kkACTxH0USkpCEJCQhCUlIQhKSeEFs80C2AbDN/ZbL5a1cddVVV1111VVX/f9C5aqrrrrqqquuuuqq/9P6vn9tSUgCQBIviCSeH0n8SyTxgkjiRSUJAElIQhKSkASAJABs8y+xDYBtlsvlM7jqqquuuuqqq676/4fgqquuuuqqq6666qr/02qtD5aEJCTx3CTxwkjigSTxQJJ4fiQhiReFJCQhCQBJAEhCEpKQhCQkASCJ+9nmfrZ5fs6fP//bXHXVVVddddVVV/3/Q3DVVVddddVVV1111f9ZrbX3jggkcT9JSEISDySJ5yaJF0QS/16SkMQDSUISkpCEJCQhCUkASOJ+trmfbQBscz/bAJw/f/63ueqqq6666qqrrvr/h+Cqq6666qqrrrrqqv+zuq5DEpKQhCQeSBIviCSemyReGEm8ILZ5QSQhCUlIQhKSkIQkJCEJSUjiRWGb+9nm/Pnzv81VV1111VVXXXXV/z8EV1111VVXXXXVVVf9n9V13WtFBJJ4YSTxQJL415DEfwRJSEISkpCEJCQhCUm8ILZ5bra532q1upWrrrrqqquuuuqq/3+oXHXVVVddddVVV131f9ZsNnttSQBIAkASkrifJB5IEs+PJO4nCQBJ/Esk8cJIAkASAJKQhCQkIQlJ3E8Sz80297ONbe5nm/Pnz/82V1111VVXXXXVVf8/EVx11VVXXXXVVVdd9X9WrfXBkpAEgCTuJ4nnJonnRxL/mSQBIAkASUQEkpCEJCQhiRfGNvezzf2Ojo5u5aqrrrrqqquuuur/J4Krrrrqqquuuuqqq/5Psv3giEASkpDEc5PE/STxopDEA0kCQBL3k4QkXhBJAEjifpKQhCQkIQlJSEISkgCQxPNjmxfk7Nmzv8NVV1111VVXXXXV/09Urrrqqquuuuqqq676P0nSa0vigSQhCUm8qCTx/Eji30MSAJKQhCQkIQlJSEISkpCEJABsAyAJANs8kG3uZxvbXLx48be56qqrrrrqqquu+v+JylVXXXXVVVddddVV/yd1XfdakpCEJCTxgkji+ZHEA0niP4MkACQhCUlIIiKQhCQk8UC2uZ9tAGwDYJsHWq1Wt3LVVVddddVVV131/xPBVVddddVVV1111VX/J5VSkIQknh9JAEji+ZHEv5ckXhhJSAJAEpKQhCQkIYmIQBKSuJ8knpttHsg2ALfffvt3c9VVV1111VVXXfX/F8FVV1111VVXXXXVVf8n9X3/2pKQhCQAJCGJf4kknpsk7icJAEkASOLfQxKSkIQkJCEJSUjifpL417DNVVddddVVV1111f9zBFddddVVV1111VVX/Z/Udd2DJXE/SdxPEgCSeCBJSOLfQxKSeG6SeCBJSEISkpCEJCKCiCAikIQkJCGJ52Yb29gGwDa2sc39zp49+ztcddVVV1111VVX/f9F5aqrrrrqqquuuuqq/3Nsv7ckJCEJSfx7SOJ+kvj3ksT9JCEJSUhCEpKQhCQkIQlJAEji+bHNA9kG4MKFC7/NVVddddVVV1111f9fVK666qqrrrrqqquu+j+n1ookJHE/SUjifpJ4IEn8a0jiX0sSkgCQhCTuJwlJSEISkpCEJCTxb2Gb1Wp1K1ddddVVV1111VX/f1G56qqrrrrqqquuuur/nFrra0kCQBKSuJ8knpskXhBJvDCSeH4k8aKQhCQkIQlJSEISEYEkJPH82MY2tgGwjW3ud/vtt383V1111VVXXXXVVf+/Ubnqqquuuuqqq6666v+cvu9fWxKSeH4kcT9JvCCSeCBJ/EeShCQkIQlJRAQRQUQgCUlIAsA297PNA9nmfraxzVVXXXXVVVddddVVEFx11VVXXXXVVVdd9X9O13UPloQkJAEgCUk8kCReEEm8IJJ4QSTxL5GEJO4nCUlIQhKSkIQkJCGJB7LNi+K+++77Ha666qqrrrrqqqv+f6Ny1VVXXXXVVVddddX/KZn5WpKQxP0k8a8hiecmiecmiQeSxL+GJCQhCUlEBJKQhCQkIQkASTw329jGNgC2eaALFy78NlddddVVV1111VX/v1G56qqrrrrqqquuuur/lFrrgyMCSUhCEg8kCQBJPD+S+PeSxAsiCUlIQhKSkIQkJBERRAQRgSQkAWAbSbwgtgGwjW1ss1qtbuWqq6666qqrrrrq/zcqV1111VVXXXXVVVf9n1JrfW1JSEISAJKQxAsjCUk8P5K4nyT+rSRxP0lIQhKSiAgkIQlJSCIikASAbR7INgC2eX5uv/327+aqq6666qqrrrrqKipXXXXVVVddddVVV/2fMpvNXlsSkgCQxP0kASCJB5LECyKJ/0iSkMT9JCEJSUQEkogIJCEJSQBI4rnZBsA2z+3w8PBWrrrqqquuuuqqq64iuOqqq6666qqrrrrq/5SIQBIAkviXSOJFJYn7SeK5SeIFkcQDSUISkpCEJCQREUgiIpCEJJ6bbWzzQLaxjW1sc3Bw8Ayuuuqqq6666qqrrqJy1VVXXXXVVVddddX/KbXWB0tCEveTxP0kcT9JvDCSeFFJ4gWRxANJQhKSkEREEBFEBJKQhCQkIYkXxDa2sc1zu3Dhwm9z1VVXXXXVVVdddRWVq6666qqrrrrqqqv+L3lvSUhCEgCSAJDEA0nihZHEv4UkHkgS95OEJO4nCUlIQhKSiAgiAklI4n6SALDNv0QSq9XqVq666qqrrrrqqquuonLVVVddddVVV1111f8ZtdYHSeJ+knggSbwoJPHcJHE/SbwoJPH8SEISkpCEJCQhCUlIQhKSeH5sYxsA2wDYxja2ufXWW7+Hq6666qqrrrrqqqsAqFx11VVXXXXVVVdd9X9GrfXBkpCEJAAkIYkHksQLIon/CJJ4IElIQhKSkIQkIoKIICKICCKCiCAikASAbZ4f2wDY5oHOnz//21x11VVXXXXVVVddBUBw1VVXXXXVVVddddX/GV3XvbYkJAEgiReVJCTx/EjifpJ4fiTxryEJSUhCEpKICCQhCUlI4oFsYxvb2OYFaa1x1VVXXXXVVVddddVlVK666qqrrrrqqquu+j+j67oHSwJAEg8kCQBJPDdJ/HtIAkASAJJ4IEkASEISkpCEJCQhiYhAEhFBRCAJSQBI4vmxjW0AbGMb29x5553fzVVXXXXVVVddddVVAARXXXXVVVddddVVV/2fkJnvLQlJSOJ+knhBJCGJF0YS/xEkASAJSUhCEhFBRCCJiEASkpCEJJ4f29jmfra539HR0a1cddVVV1111VVXXXU/KlddddVVV1111VVX/Z9QayUikIQkACQBIAkASdxPEv8SSTyQJP61JHE/SQBIQhIRgSQigohAEhGBJCQBIIkHss39bGOb+9nm7Nmzv81VV1111VVXXXXVVfejctVVV1111VVXXXXV/wld172WJCQBIIl/D0n8W0jifpIAkIQkACQhCUlIQhKSiAgiAklEBJIAsM39bANgG9vczza2ATh37tzvcNVVV1111VVXXXXV/ahcddVVV1111VVXXfV/Qt/3ry0JAEk8N0ncTxL/WpJ4QSQhiX+JJCQhCUlIIiKICCQREUQEkpAEgCQAbANgm/vZ5rmdPXv2t7nqqquuuuqqq6666n4EV1111VVXXXXVVVf9n9B13YMlIQkASUhCEg8kiX+JJF5Uknh+JAEgCQBJAEhCEpKICCQhiYhAEpKQhCReENvYBsA2D7RcLm/lqquuuuqqq6666qr7Ubnqqquuuuqqq6666n+91tprA0hCEpJ4IEm8KCQhiecmiReFJJ4fSQBIQhKSiAgkERFEBBFBRBARSEISz802tnlutrHN2bNnf5urrrrqqquuuuqqqx6IylVXXXXVVVddddVV/+vVWh8cEfxLJPH8SEIS/1Ek8dwkIQlJSEISEUFEEBFEBBGBJCKC52ab+9nGNraxzf0ODw9v5aqrrrrqqquuuuqqB6Jy1VVXXXXVVVddddX/erXW15KEJCQhCUlIQhIAknhukpDECyOJfytJSEISAJKQhCQkIQlJSEISkogIJAFgmweyjW2eH9vce++9v8NVV1111VVXXXXVVQ9E5aqrrrrqqquuuuqq//VKKUhCEi8qSfxHkIQk/iWSkIQkJBERRAQRQUQQEUQEkpDE/SRxP9sA2MY2tgGwDcD58+d/m6uuuuqqq6666qqrHojgqquuuuqqq6666qr/9fq+f21JAEjiuUnigSTxopDECyOJ+0kCQBIAkrifJCQBIImIQBKSiAgigohAEhGBJAAkYRvb2AbANg9km/stl8tbueqqq6666qqrrrrqgahcddVVV1111VVXXfW/Xq31wZKQBIAkJCGJ5yaJF4Uknh9JvKgkIQkASUhCEpKICCKCiCAiiAgiAklI4vmxjW1sYxvbANjm1ltv/W6uuuqqq6666qqrrnpuBFddddVVV1111VVX/a9m+70lIQlJSOIFkcSLQhL/FpIAkMQDSQJAEpKQhCQiAklEBJKICCQhiQeyjW3uZ5v72eaqq6666qqrrrrqqheIylVXXXXVVVddddVV/6vVWh8kCUk8P5L415DECyKJB5KEJJ4fSUhCEpKQhCQkERFEBBFBRBARRASSkIQkJPFAtrGNbQBs80D33HPP73DVVVddddVVV1111XMjuOqqq6666qqrrrrqf7Va64MlASAJSUhCEg8kiX+JJF4QSTyQJO4niX+JJCQREUgiIpBERCCJiCAiiAheENsA2AbANgC2OX/+/G9z1VVXXXXVVVddddVzo3LVVVddddVVV1111f9qfd+/tiQk8dwkASCJF0YSkvj3kASAJB5IEpKQREQgiYhAEhFBRBARRASSkASAJABsYxvbANjmgWwDsFwub+Wqq6666qqrrrrqqudG5aqrrrrqqquuuuqq/9VqrQ+WhCQk8aKShCQk8S+RxL+GJCQhCUlIQhKSkEREEBFEBBFBRCCJiEASz802ALaxjW1sYxuAW2+99bu56qqrrrrqqquuuur5Ibjqqquuuuqqq6666n+tzHwtSUjifpKQxP0k8UCSkMSLShIviCQkcT9JPD+SkIQkIgJJRAQRQUQQEUQEkpDE82Mb2zw329jmqquuuuqqq6666qrni8pVV1111VVXXXXVVf9r1VofHBFIQhKSuJ8knpsk/qNI4n6SuJ8kACQhCUlIQhKSkEREEBFEBBFBRBARSEISkrifbWxjGwDb2MY2tgG49957f4errrrqqquuuuqqq54fKlddddVVV1111VVX/a9Va31tSUji+ZHE/STxryWJ50cSL4wkACQhCUlIIiKICCKCiCAiiAgiAklI4oFsA2Ab29jGNs/t3Llzv81VV1111VVXXXXVVc8Plauuuuqqq6666qqr/tfq+/61JSEJSUhCEpL495LEv4Yknh9JSEISkpCEJCKCiCAiiAgigojANpK4n23uZxsA29gGwDbL5fJWrrrqqquuuuqqq656fqhcddVVV1111VVXXfW/Vtd1D5bEv0QS/xqSeFFI4oEkASAJSUgCQBIRQUQQEUQEEUFEEBFEBJKQxHOzjW1sA2Cb+9nm1ltv/R6uuuqqq6666qqrrnpBqFx11VVXXXXVVVdd9b+S7QdLQhKSkMQDSQJAEi8qSUjihbFNRCAJAEk8kCQAJCEJSUhCEpKICCKCiCAiiAgkERFI4oFsA2Ab29gGwDa2ATg4OHg6V1111VVXXXXVVVe9IARXXXXVVVddddVVV/2vJOm1JSGJ+0lCEv9akpDEv5UkHkgS95OEJCQREUQEEUFEUEohIogIJCGJB7KNbWxjG9vY5n622d/ffwZXXXXVVVddddVVV70gVK666qqrrrrqqquu+l+p1vogSQBIQhL3kwSAJJ6bJCQhCUlI4l9DEs+PJCQhCQBJSEISkogIJBERRAQRQUQQEUQEkpCEJABsA2Cb52ab+507d+63ueqqq6666qqrrrrqBaFy1VVXXXXVVVddddX/SqWUB0tCEi8qSfxHkYQkXhhJSEISkogIIoKIICKICCICSUQEz802trGNbWxjGwDbSGK5XN7KVVddddVVV1111VUvCMFVV1111VVXXXXVVf8r9X3/2pKQhCQAJHE/STyQJP6jSOJ+knggSUhCEpKQREQQEUQEEUEphVIKEUFEEBFI4oFsYxsA29jGNraxDcBTn/rU7+aqq6666qqrrrrqqheGylVXXXXVVVddddVV/yvVWh8siftJAkASz00S/1Ek8dwkIQlJAEhCEpKQhCQkERFEBBFBRBARRAQRgSSeH9vYxjYPZJuzZ8/+DlddddVVV1111VVXvTAEV1111VVXXXXVVVf9r5OZ7y0JSUhCEg8kiftJ4r+DJCQREUgiIogIIoKIICKICCICSUgCQBK2sY1tbGMbANvYxjYA0zRx1VVXXXXVVVddddULReWqq6666qqrrrrqqv91uq4jIpDE/SQhiQeSxH8GSUhCEg8kCUlIQhKSkEREEBFIIiKICCKCiEASkpCEJO5nG9vYxja2sc0DnTt37re56qqrrrrqqquuuuqFoXLVVVddddVVV1111f86pZTXkoQkJCGJ+0niP5MkHkgSkpAEgCQkASAJSUgiIiilEBGUUogIIoKIICK4n23uZxvbANgGwDYABwcHty6Xy1u56qqrrrrqqquuuuqFoXLVVVddddVVV1111f86s9nstSUBIInnRxL/FpKQhCQk8UCSeFFJQhKSiAgkERFEBBFBKYWIICKQBIAkAGxjG9vYxjYAtgGwzb333vvbXHXVVVddddVVV131LyG46qqrrrrqqquuuup/nVrrgyUhiftJ4l8iCUlI4oEkIQlJ/FtJQhKSkIQkJBERRAQRQUQQEUQEEUFEEBFI4rnZxja2sY1tAGwDcN999/0OV1111VVXXXXVVVf9S6hcddVVV1111VVXXfW/SmvttQEkcT9JAEgCQBIPJAlJPJAkJCGJfw1JSEISkpCEJAAkASAJSUhCEpKICCKCUgqlFCKCiEASkngg29jGNraxjW1sA2Cbe++997e56qqrrrrqqquuuupfQnDVVVddddVVV1111f8qtdYHRwQAkpDECyOJ/yiS+JdIQhKSiAgigoggIogIIoKIICKICCQhifvZxja2sY1tbGObBzo6OrqVq6666qqrrrrqqqv+JVSuuuqqq6666qqrrvpfpdb6WpKQhCSemyTuJ4n/KpKQhCQkIQlJRAQRQUQQEZRSiAhKKUQEEQGAJO5nG9vYxjb3s41t7r333t/mqquuuuqqq6666qoXBZWrrrrqqquuuuqqq/5X6bruwZKQBIAkJCGJB5LEfyRJ3E8SkpCEJCRxP0lIIiKQhCQiglIKpRQiglIKEUFEIIkHso1tbGMb29jGNvc7ODi4lauuuuqqq6666qqrXhRUrrrqqquuuuqqq676X6WU8mBJAEjigSTxn0kSknh+JCEJAElIIiKICCKCiCAiiAgigohAEpK4n21sYxvb2AbANgC2sc299977O1x11VVXXXXVVVdd9aIguOqqq6666qqrrrrqf5Va64MlIYkXRBL/lSQhCUlIQhKSkEREEBFEBKUUSilEBBFBRBARPDfb2MY2trGNbWwDcO+99/42V1111VVXXXXVVVe9KKhcddVVV1111VVXXfW/hu33loQkJAEgCUlI4j+TJB5IEpKQxANJQhKSiAgigoggIogIIoKIICKICCQhifvZxja2sY1tAGwDYJujo6Nbueqqq6666qqrrrrqRUFw1VVXXXXVVVddddX/Ci/2Yi/22u/6ru/6XZKQBIAknpsk/qNJ4n6SkMQDSUISkpCEJCKCiEASEUEphVIKpRRKKUQEkpDE/WxjG9vYxja2sQ2Abe69997f5qqrrrrqqquuuuqqFxWVq6666qqrrrrqqqv+V3ixF3ux17p48SIRAYAknpsknpskJCEJSUji30ISknhukrifJCQhCUlIIiIopRARRAQRQUQgCUkASALANraxjW1sYxvb2Abg4ODgVq666qqrrrrqqquuelERXHXVVVddddVVV131v8LrvM7rvPeTnvQkACQBIAlJSOK5SUISz48kJCEJSfxbSEISAJKQhCQkIYmIICIopRARlFIopVBKISKICCICSTyQbWxjG9vYxjb3u/vuu3+Hq6666qqrrrrqqqteVARXXXXVVVddddVVV/2vcM011zz4zJkzSEISknhBJPGvIQlJvCCSuJ8kJHE/SUhCEpKQREQgiYggIogIIoKIICKICCICSUgCwDa2sY1tMhPb2AbANra57777fpurrrrqqquuuuqqq15UBFddddVVV1111VVX/a9w33333froRz8aSTw/kvj3ksQLIglJPJAkHkgSkpBERBARRASlFEoplFKICCICSUjigWxjG9vYxjYAtrnf0dHRrVx11VVXXXXVVVdd9aIiuOqqq6666qqrrrrqf4Xf/u3f/p5Xe7VXQxKSAJCEJB5IEv+RJPHcJCEJAElIQhIAEYEkIoKIICKICEopRASlFCKCiEASkgCwjW1sYxvb2MY2trHNU57ylO/hqquuuuqqq6666qp/DYKrrrrqqquuuuqqq/5XuO+++249deoUb/ZmbwaAJO4nCQBJ/HtJ4rlJ4n6SuJ8k7icJSUgiIpBERFBKoZRCRFBKISKICCQhiQeyTWaSmdjGNrYBsM1VV1111VVXXXXVVf9qBFddddVVV1111VVX/a/w93//979133333frKr/zKvNIrvRL/VSQBIAlJ3E8SAJKQhCQiAklEBBFBRBARRASlFCKCiCAiiAjuZxvb2MY2trGNbWxjG4C77rrrt7nqqquuuuqqq6666l+D4Kqrrrrqqquuuuqq/xXOnj37jB/90R/9nJMnT/LGb/zGnDp1CkncTxL/0WwDIIkHkgSAJCQhCUlIQhKSiAgigoiglEJEUEohIogIJCGJ+9nGNraxjW2e23333ffbXHXVVVddddVVV131r0Fw1VVXXXXVVVddddX/Gr/1W7/13T/yIz/y2SdPnuRDPuRDOHHiBJJ4fiQhCUlIQhL/WpJ4IElIAkAS95OEJCQREUQEEUEphVIKpRRKKUQEpRQkIQlJANjGNpmJbWxjG9vYxja2OTo6upWrrrrqqquuuuqqq/41CK666qqrrrrqqquu+l/lt3/7t7/nH/7hH3775MmTfMiHfAgnTpxAEg8kiedHEv9akgCQxHOThCQAJCEJSUQEEUFEEBFEBKUUSilEBBGBJB7INrbJTDIT29jGNrZ5ylOe8t1cddVVV1111VVXXfWvRXDVVVddddVVV1111f8q9913361f//Vf/z7/8A//8NsnTpzggz7og3i5l3s57ieJF0YS/1qSuJ8kJHE/SUhCEpKICCQREUQEpRRKKUQEEYEkJCGJ+9nGNraxjW1sY5v7HRwc3MpVV1111VVXXXXVVf9alOPHj3PVVVddddVVV1111f8uh4eHu//wD//wO4eHh7sv//Iv/9rXX389i8WCW2+9FUlIQhKSkIQkJCEJSUgCQBKSkIQkJCEJAElEBBGBJCQREUhCEhFBRBARlFIopVBrpdZK13X0fc9sNmM2mzGbzZjNZnRdR62ViEAStmmtMY4j4ziyXq8Zx5FxHJmmiWmaaK3RWuPChQu/feedd/4OV1111VVXXXXVVVf9a1COHz/OVVddddVVV1111VX/+xweHu7ed999tx4eHu6+/Mu//Gs/9KEP5WVe5mW455572N3dRRKSkIQkJCEJSUhCEgCSkIQkJCEJAElIIiKQREQgCUlEBBFBRBARlFIopVBrpes6uq5jNpvR9z2z2YzZbEbf9/R9T62VUgoAtpmmiXEcGYaBYRgYhoFxHJmmiWmaaK2RmbzYi70Yf/AHf/A9XHXVVVddddVVV131r0Fw1VVXXXXVVVddddX/WmfPnn3Gj/7oj37Oh3zIhzzkvvvuu/XEiRO87du+La/zOq/D8ePH+ZdI4oWRBIAk7ieJB5KEJCQhiYggIogISimUUiilUEohIogIJCGJ+9nGNraxjW1s80BHR0e3ctVVV1111VVXXXXVvxbl+PHjXHXVVVddddVVV131v9vh4eHun/3Zn/3M4eHh7su//Mu/9kMe8hAe85jHMJ/PecYznoEkJCEJSUhCEpKQBIAkJCEJAElEBBGBJCQREUgiIogIIoJSCqUUSil0XUetlb7v6fue+XzObDZjNpvR9z1d11FKISKwTWYyTRPjODIMA+v1mnEcGYaBaZpordFa48Ybb+S222776X/4h3/4Ha666qqrrrrqqquu+tegHD9+nKuuuuqqq6666qqr/vc7PDzc/Yd/+Iff+a3f+q3v3tzcPP6YxzzmpR/84Afz0i/90szncy5dusR6vUYSkpCEJCQBIAlJSAIgIpBERCCJiEASEYEkIoJSCqUUSinUWqm10nUds9mM2WzGbDZjPp8zm83o+56u6yilIAmA1hrTNDGOI+v1mmEYGIaBcRyZponWGq01brnlllv/6q/+6mduvfXWv+aqq6666qqrrrrqqn8N9KAHPYirrrrqqquuuuqqq/7vueaaax784R/+4d/1Yi/2Yq8NsLu7yzOe8Qz+7u/+jttuuw1JSEISAJKQhCQAIoJSChFBKYWIoJRCRFBKoZRCKYVaK13X0fc9s9mM+XzOxsYGGxsbbG1tsbW1xcbGBovFgtlsRikFSbTWGIaB5XLJ4eEhh4eHHBwccHR0xHK5ZL1eM44jL/uyL8upU6d4u7d7O3HVVVddddVVV1111b8W5fjx41x11VVXXXXVVVdd9X/P4eHh7m/91m99z2//9m9/z+Hh4e7Lv/zLv/Z1113HS77kS/KSL/mSzOdzAPb29pAEgCQkARARSCIikEREIImIQBKlFCKCUgqlFGqtdF1H13X0fc9sNmM+nzObzZjNZnRdR62ViADANtM0MY4jwzCwXq8ZhoFxHBnHkVorL/ESL0Fr7dYv+ZIveZuzZ8/eylVXXXXVVVddddVV/1roQQ96EFddddVVV1111VVX/d93zTXXPPjFXuzFXvsd3/EdP+uaa655MM906dIlbr/9dv7u7/6OO+64A0kAlFIopRARlFKICEopRASlFEop1FqptdL3PX3fM5vNWCwWbGxssLW1xdbWFpubm2xsbLBYLOi6jogAYJom1us1R0dHHB4ecnBwwMHBAdM0ccstt3Ds2DEAvv7rv/59fuu3fuu7ueqqq6666qqrrrrq3wI96EEP4qqrrrrqqquuuuqq/1+uueaaB7/jO77jZ73O67zOe/MAe3t73Hbbbdx+++0cHBxw9913U0ohIiilEBGUUiilUEqh1kqtlb7v6fue+XzOYrFgc3OTzc1Ntra22NraYmNjg/l8Ttd1SMI20zSxWq04Ojri4OCA1WrF5uYmx48fB+C+++679eu//uvf5x/+4R9+m6uuuuqqq6666qqr/q3Qgx70IK666qqrrrrqqquu+v/pmmuuefCZM2ce/GIv9mKv9eIv/uKvfebMmQdfc801D+aZ9vb2kMRdd93F3XffzdHREYeHhyyXS2qt1Frpuo6u65jNZsznczY2NtjY2GBra4utrS22trZYLBbM53NqrUgiMxmGgdVqxTiO1Fp5oB/5kR/57B/90R/9HK666qqrrrrqqquu+vdCD3rQg7jqqquuuuqqq6666iqAM2fOPOjFX/zFX+fFXuzFXuuaa6558Iu92Iu9Ns/HwcEBkjg6OmK5XBIRDMNArRXbzGYz5vM5i8WCruvouo6IwDaZSWby3O67775bf+u3fuu7f/RHf/RzuOqqq6666qqrrrrqPwp60IMexFVXXXXVVVddddVVVz0/11xzzYPPnDnzoGuuueYhL/ZiL/Za11xzzYNf7MVe7LX5D/AP//APv/33f//3vw3wW7/1W9999uzZZ3DVVVddddVVV1111X809KAHPYirrrrqqquuuuqqq6761zhz5syDzp49+4wXe7EXe+1rrrnmwQBnzpx5EMA111zzYJ7pH/7hH34H4MyZMw86e/bsM+67775bAf/DP/zD73DVVVddddVVV1111X8F9KAHPYirrrrqqquuuuqqq6666qqrrrrqqquuuur/JCpXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9X8Y+M+9ulGotl1gAAAABJRU5ErkJggg==) +![Rendered example of rotate 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADtOklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrq/6Vrrrnmwe/4ju/4Wddcc82DAe67775bAf7hH/7hdwDuu+++W8+ePXvrfffddytXXXXVVVddddVVV/1vReWqq6666qqrrrrqqv+3Tp48+d6bm5sAnDx5EoAP//APf28e4L777rsV4OzZs7fed999t/7DP/zD79x33323AvzDP/zDb3PVVVddddVVV1111f9k6EEPehBXXXXVVVddddVVV/3/U0p57Vd/9Vf/rTNnzlBK4cSJE0jipptuQhLb29vccMMNAOzu7nLp0iV2d3d5qZd6KR7ovvvuu/Xs2bO33nfffbf+wz/8w+/cd999t549e/bW++6771auuuqqq6666qqrrvrvhh70oAdx1VVXXXXVVVddddX/PxsbG+/9qEc96rv6vqfWSimFUgoRQUQQEUQEOzs7SOKGG24A4LrrrmNra4utrS02NzfZ3d3l0qVL7O7u8lIv9VLc77777rsV4B/+4R9++x/+4R9+B+C+++679R/+4R9+m6uuuuqqq6666qqr/qugBz3oQVx11VVXXXXVVVdd9f/PyZMnP+vBD37wZ/d9T62VUgoRQSmFiCAikEREIImIQBKSiAgksbW1RURwzTXXIIlrrrmGjY0Nzpw5w+7uLgCXLl3iQQ96EPe77777bgX4h3/4h9/+h3/4h98BuO+++279h3/4h9/mqquuuuqqq6666qr/aOhBD3oQV1111VVXXXXVVVf9/3P99dd/1w033PDeXddRa6WUQimFiCAiiAgkERFEBJKQREQgCUlIIiKQhCQiAklEBJubm2xubrK5ucmpU6fY2NhgsViwWCzY3d3l0qVLPOhBD+J+9913360A//AP//Db//AP//A7AP/wD//w2/fdd9+tXHXVVVddddVVV131b4Ue9KAHcdVVV1111VVXXXXV/z+PfOQjn76zs/PgruuotVJKISKICCKCiCAikEREIAlJRASSkEREIAlJRASSkEREIImIICKICCKCiGBjY4NSCidOnODEiRPM53Nmsxmz2QyA3d1djh8/zv3uu+++W8+ePXvrfffdd+s//MM//M5999136z/8wz/8NlddddVVV1111VVXvSjQgx70IK666qqrrrrqqquu+v/nJV/yJT2bzei6jlIKpRQiglIKEYEkIgJJRASSiAgkIQlJRASSkEREIImIQBIRgSQigoggIogIIoJSCqUUIoJSCrVWFosFtVa2t7fZ2tqi73u6rqOUwvNz33333Xr27Nlb77vvvlv/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JCEJSTw/trGNbWyTmWQmrTUkAWCbzEQSAJlJZtJaY5omxnFkGAb+5E/+5LP/+q//+nO46qqrrrrqqquuuuq/G5Wrrrrqqquuuuqqq14kXde9liQkIYn7SQJAEpKQhCQAJCEJAEkASOJ+knggScznc2azGdM0sV6vkYQkXhBJSEIS95PE/STx/EjiudnGNrbJTDKT1hqSsE1mIon7ZSaZyTRNTNPEhQsXbv3lX/7l99nd3f1trrrqqquuuuqqq676n4DKVVddddVVV1111VUvkvl8/tqSuJ8kJAEgiecmCUkASAJAEgCSuJ8kHkgSEUHXdSwWCw4PD8lMJCEJSUhCEpJ4IElI4n6SAJDEi8o2mYkkWmvcLyKQxP1sk5m01rh48eKtj3vc4777b/7mbz6Hq6666qqrrrrqqqv+J6Fy1VVXXXXVVVddddWLTBKSkMT9JAEgCUlIQhL3kwSAJAAkASCJF0QSABHBsWPHmKaJ9XrNNE08kCQkIQlJPJAkACQBIAlJPDfb2MY2tslMJCEJSQDYRhKSsA1AZrJer7n11lt/+7d+67deh6uuuuqqq6666qqr/ieictVVV1111VVXXXXVi6TrugfzAJKQBIAknpskJAEgCUkASAJAEveThCQkcT9J3K/ve2azGbZZrVYMw4AknpskJCEJAEk8N0lI4oFsY5vMRBKZiSQAMhNJSALANra55557GMeRe+6551auuuqqq6666qqrrvqfispVV1111VVXXXXVVS+K95aEJCQhiftJAkASkpCEJCQBIAlJAEgCQBIAkgCQxP0kcT9J3E8SEcH29ja2yUzW6zXjOCIJSdxPEpK4nySem21scz/b2CYzuV9mIglJAKxWK5bLJa01MhOA8+fP/w5XXXXVVVddddVVV/1PReWqq6666qqrrrrqqn9RrRVJSEISAJK4nySeH0lIAkASkgCQBIAknh9JSAJAEveThCRKKUQEGxsb2GYYBmyTmazXa+4nCUkASOL5sY1tbJOZANhGEhHBcrmk1so4jkzThG1sYxvbXLp06be56qqrrrrqqquuuup/KipXXXXVVVddddVVV/2Luq57LUlIAkASAJJ4IElIQhKSuJ8kJAEgCUkASAJAEgCSkMT9JAEgCUk8P7VW5vM5tVZqrQDYJjMppdBaY5omIoLVakUpBUlEBACbm5vM53O6ruPg4ID5fE7f96zXa9brNbPZjHEcsQ2AbWxjG9us1+tbueqqq6666qqrrrrqfyoqV1111VVXXXXVVVf9i2az2WtL4vmRBIAknpskJCEJAElIAkASkgCQxANJQhIAkrifJJ4f29jGNl3XMZvN6Pue+XzOfD5nPp8zm83o+56u64gIADKTcRwZhoHVasWxY8dYrVasVitaa2QmmYltbGObB7rrrru+m6uuuuqqq6666qqr/iejctVVV1111VVXXXXVv6jrugdLQhKSAJDE/STxgkgCQBKSkASAJCQBIAlJAEhCEpKQhCQkIQkASTw/trGNbTKTzKS1xjRNjONIRCCJzCQiAMhMxnFkHEeGYWAcR6ZporVGa43MxDa2sY1tbGMb21x11VVXXXXVVVdd9T8elauuuuqqq6666qqr/tUkASCJ5yYJSUhCEgCSkIQkJAEgCUlIAkASkpCEJAAkIQlJSEISAJKQhCQAbANgG9tkJplJa41pmiilEBEAlFKICGyTmUzTxDAMjOPIOI5M08Q0TWQmmUlmkpnYxja2sQ3A+fPnf4errrrqqquuuuqqq/4no3LVVVddddVVV1111Qsl6b0jAklIQhIviCReFJKQhCQkIQlJAEhCEhGBJCQhCUlIQhLPj21sk5lkJq01pmkiIogIADKTUgoRgW0yk2mamKaJcRyZpolpmmit0VojM7GNbWxjm/vZZnd397e56qqrrrrqqquuuup/MipXXXXVVVddddVVV71QpZQHSUISz48k/rUkIQlJSEISkpCEJCQhiYhAEhGBJCQhCUlI4oFsYxvbZCatNSKCaZqQBEBmUkpBEgCZSWuNcRwZx5FpmmitkZlkJpmJbWxjGwDb2AZgvV7fylVXXXXVVVddddVV/5NRueqqq6666qqrrrrqheq67sGSAJAEgCQk8UCSeEEkIQlJSOKBJCEJSUQEkpBERBARSEISEYEkACTxQLYBsE1mkpm01ogIJCEJ29Raaa0hCYDMpLXGNE1M08Q0TbTWaK2RmdgmM7ENgG1sA3DhwoXf5qqrrrrqqquuuuqq/+moXHXVVVddddVVV131QvV9/9qSkASAJO4nCQBJPD+SkMQLIon7SQJAEpKQhCQigohAEgCSkASAJO5nG9vYJjORRGsNSQDYxjaSkASAbVprtNaYponWGq01MhPbZCa2AbDNAy2Xy1u56qqrrrrqqquuuup/OipXXXXVVVddddVVV71Qfd8/GEASknhRSeIFkYQk7icJAEncTxKSkASAJCQBIAlJAEjifrbJTCQhidYaALaxTWYiCUkA2CYzaa3RWqO1RmaSmWQmtgGwDYBtAGxz8eLF3+Gqq6666qqrrrrqqv/pqFx11VVXXXXVVVdd9QJl5oMAJHE/SUjifpJ4IElI4kUlCQBJAEhCEg8kiftJ4rlJ4oFsk5lI4n62yUwiAkkA2CYzyUwyE9vY5oFsA2AbANsAXLhw4be56qqrrrrqqquuuup/OipXXXXVVVddddVVV71ApZTXjggkIYkHksRzk8S/RBL3kwSAJAAkASAJSUhCEgCSkASAJAAk8W9hGwDb3M82trGNbWxjGwDbPLf1en0rV1111VVXXXXVVVf9T0dw1VVXXXXVVVddddULVGt9MIAkACTx7yGJfwtJ/EexzQPZxja2sY1tbHM/29zPNgAXLlz4Ha666qqrrrrqqquu+t+AylVXXXXVVVddddVVL1Ct9cGSAJDEc5PE/STxwkjigSTxL5HEc5PEfwTb2MY2trHNA9nGNvezzf2Wy+WtXHXVVVddddVVV131vwGVq6666qqrrrrqqqteoL7vX1sSkgCQhCQk8UCSeGEk8YJIAkASAJIAkASAJF5UkrifJAAk8aKyjW1eGNtcuHDht7nqqquuuuqqq6666n8DKlddddVVV1111VVXvUBd1z1YEs+PJF4UkvjXksSLShIAkgCQhCQAJAEgCUlIQhL/Ets8kG0AbANw8eLF3+aqq6666qqrrrrqqv8NCK666qqrrrrqqquuer4y88GSkIQkJPH8SOIFkcTzI4n/SJJ4IElIQhKSkIQkHkgSL4xtAGzz3Far1a1cddVVV1111VVXXfW/AZWrrrrqqquuuuqqq56vUsprS0IS95OEJF4UkvivJglJAEgCQBL3k4QkAGzzr2Gbq6666qqrrrrqqqv+1yG46qqrrrrqqquuuur5qrU+SBIAkpDE/SQBIInnJglJvCCSuJ8kACTx3CTx/NjmXyIJAElIQhKSeEFsYxvb2OZ+tnlud95553dz1VVXXXXVVVddddX/FgRXXXXVVVddddVVVz1fXdc9OCKQxItKEv8ekgCQxL9EEg8kCUlIAkASkgCQhCQkIYl/iW0eyDb3Wy6Xt3LVVVddddVVV1111f8WVK666qqrrrrqqquuer76vn9tAElIAkAS95PEA0niXyKJfw1JvCgk8UCSkIQkJCEJSUgCQBIAkvjXsM3h4eEzuOqqq6666qqrrrrqfwsqV1111VVXXXXVVVc9X7XWB0vifpIAkMRzk8S/liSeH0n8a0gCQBKSkIQkJCEJSUgCQBIAtvmX2AbANgC2Abh48eJvc9VVV1111VVXXXXV/xYEV1111VVXXXXVVVc9j8x8bUlIQhKSeEEk8aKQxH80STw3SUhCEgCSkIQk7ieJf6v1en0rV1111VVXXXXVVVf9b0Hlqquuuuqqq6666qrnUWt9sCQk8fxI4l9DEi+IJP69JCEJSUjifpKQBIAkJAFgmxfENvezzQPdcccd381VV1111VVXXXXVVf+bULnqqquuuuqqq6666nl0XfdakgCQBIAkJPFAkviXSOK5SeI/gyQAJCEJSUhCEpKQxP0k8dxsA2CbB7INwHK5vJWrrrrqqquuuuqqq/43oXLVVVddddVVV1111fMopSAJSQBI4n6SeFFJ4l9LEpJ4UUlCEpIAkIQkJCEJSUhCEi+MbR7INs/t8PDwGVx11VVXXXXVVVdd9b8Jlauuuuqqq6666qqrnkff968tCQBJPD+SeEEkIYl/iST+I0lCEpKQhCQkIQlJ3M82LyrbANhmd3f3t7nqqquuuuqqq6666n8Tgquuuuqqq6666qqrnket9cGSkMT9JPHCSEISknhhJPH8SEIS95PEv0QSAJKQhCQkIQlJSEISkgCQBIAkHsg2L4xtAFar1a1cddVVV1111VVXXfW/CZWrrrrqqquuuuqqq56D7deWhCQkASAJAEkASOKBJPFfRRKSkASAJAAkIQlJSEISkpCEJCTxL7GNbWwDYJv73Xnnnd/NVVddddVVV1111VX/21C56qqrrrrqqquuuuo5lFIeLIn7SeKFkcSLShL/GSRxP0lIQhKSkIQkJHE/2/xr2eaqq6666qqrrrrqqv91CK666qqrrrrqqquueg5d172WJCQhiecmiftJ4kUliQeSxL+XJCQBIAlJAEhCEpKQhCQk8fzYBsA2D2QbANsAnD9//ne46qqrrrrqqquuuup/GypXXXXVVVddddVVVz2HUgqSkASAJCQhif8skgCQhCT+tSQhCUlIQhKSkIQkJAEgiX+rCxcu/DZXXXXVVVddddVVV/1vQ3DVVVddddVVV1111XPo+/61JfH8SOJ+knhRSeJfIon7SeJfIglJSAJAEpKQhCQkERFIAkASL4htAGxjG9sA2AbANqvV6lauuuqqq6666qqrrvrfhspVV1111VVXXXXVVc+h1vpgSUhCEs+PJF5Uknhukvj3kMQDSQJAEpKQREQAIAlJSALANpJ4brZ5QS5cuPDbXHXVVVddddVVV131vxGVq6666qqrrrrqqqse6LUlIYn7SUIS/xaS+PeSxAsiCUlIQhKSkIQkJBERSEISz49tXhDbANjm6OjoVq666qqrrrrqqquu+t+IylVXXXXVVVddddVVz1JKebAkACQhiftJAkASL4wkJCGJ50cSDySJF0QSAJK4nyQAJAEgCUlIQhKSkIQkJCEJSdxPEg9kG9u8MOfPn/8drrrqqquuuuqqq67634jgqquuuuqqq6666qpn6brutSQhiX8NSUhCEv8eknhBJCGJB5LE/SQhiYhAEpKQhCQk8aKwjW3uZxuA8+fP/zZXXXXVVVddddVVV/1vRHDVVVddddVVV1111bNEBJKQhCSemyQeSBKSeFFJ4oEkcT9JAEjiXyIJSQBIQhKSkIQkIgJJSOJ+knhhbHM/2zzQarW6lauuuuqqq6666qqr/jciuOqqq6666qqrrrrqWfq+f21J3E8SkpDEc5PEfxRJPDdJ/EskIQlJSEISkpCEJCQhCUkASOK52eb5sQ3A0dHRM7jqqquuuuqqq6666n8rKlddddVVV1111VVXPUut9cGSkIQk/iNJ4j+CJCQhiftJQhKSkIQkJCEJSUgCwDYAtrGNbQBsA2Cb53b+/Pnf5qqrrrrqqquuuuqq/62oXHXVVVddddVVV111me33ksQLIon7SeJ/AklIQhKSkIQkJCEJSUjiRWEbANs80Pnz53+bq6666qqrrrrqqqv+t6Jy1VVXXXXVVVddddVltVYkIQlJAEhCEg8kiX8tSTw3STyQJO4niedHEveThCQkIQlJSEISkpCEJCTxr2UbANtM08RVV1111VVXXXXVVf9rUbnqqquuuuqqq6666rKu615bEpIAkMT9JPFvJYl/iSQAJPEvkYQkACQhCUlIQhIRgSQiAklIAsA2kngg29jGNs/NNgC7u7u/zVVXXXXVVVddddVV/1sRXHXVVVddddVVV1112Ww2e21JAEji+ZHEv4Yknh9J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XXXV/zO11gdLAkASknh+JPEvkcS/lySemyQkASAJSUhCEpKICCKCiEASkpAEgG3uZxvb2MY2tgGwjW2uuuqqq6666qqrrvo/j8pVV1111VVXXXXV/zO11teShCSemyT+tSTxopDECyIJSUhCEgCSkIQkIgJJRAQRQUQQEUgiIogIJAEgCUk8kG3uZ5vndu+99/4OV1111VVXXXXVVVf9X0Tlqquuuuqqq6666v+ZiEASkpDE8yOJfw1JvKgkIQlJvCCSAJCEJCQREUQEEYEkIoKIICKQhCSem21sA2Ab2wDYBsA2tjl37txvc9VVV1111VVXXXXV/0UEV1111VVXXXXVVf/P9H3/2pK4nyQkcT9J/FtI4l8iiQeSxHOThCQkIQlJSEISkogIIoKIICKQREQgiQeyDYBtbGMb29gGwDb3Wy6Xt3LVVVddddVVV1111f9FVK666qqrrrrqqqv+n6m1PlgSkpDE/STx7yWJF0QSz48kJCEJSdxPEpKQhCQigoggIogIIoKIICKQhCQAJGEbANsA2OYFue+++36bq6666qqrrrrqqqv+r6Jy1VVXXXXVVVdd9f9IZr62JCTxn0US/x6SkIQkJCGJiEASEYEkIoKIICKICCQhiQeyDYBtAGxjG9vYBsA2h4eHt3LVVVddddVVV1111f9VVK666qqrrrrqqqv+H6m1PlgSAJIAkIQkACTxQJKQhCQk8W8liftJQhLPjyQAJAEgCUlIIiKQREQQEUgiIpBERABgmweyjW1sY5sHsg3A2bNnf4errrrqqquuuuqqq/6vonLVVVddddVVV131/0it9bUkIQkASbwgknhuknhRSOK5SUIS95OEJCQhCUkASAJAEpKQREQQEUQEEUFEEBFIIiKQxHOzjW0AbANgG9vY5n733nvvb3PVVVddddVVV1111f9VVK666qqrrrrqqqv+H4kIJAEgiQeSxP0k8YJI4j+LJCQhCUlIIiKQhCQigoggIogIIgJJSAJAEgC2uZ9tbGObB7KNbZbL5a1cddVVV1111VVXXfV/FcFVV1111VVXXXXV/yN937+2JCTxgkjiP5ok/iWSuJ8kJCEJSUQEEUFEEBFEBBFBRBARSOK52cY2tgGwjW1sc7/77rvvt7nqqquuuuqqq6666v8yKlddddVVV1111VX/j9RaHywJSQBIQhL/WpJ4UUni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bWxjmweyzdHR0a1cddVVV1111VVXXfX/BcFVV1111VVXXXXV/3FnzpxBEpIAkMT9JPGiksSLShIAknggSTw3SUhCEpKQREQQEZRSiAgigoggIogIIgJJSALANraxTWZiG9vYxja2sc29997721x11VVXXXXVVVdd9f8JwVVXXXXVVVddddX/Uffdd9+tZ8+evfW93uu9uJ8kACTxH0ESL4gk7icJSdxPEpKQBIAkJBERRAQRQUQQEUQEEUEphYhAEpKQxAPZxja2sY1tbPNABwcHt3LVVVddddVVV1111f8nBFddddVVV1111VX/h/3Wb/3W95w6dYo3fdM3RRL/FSTxQJJ4IEk8kCQkIQlJSCIiiAgiglIKpRQigoggIpCEJABsYxvb2MY2trENgG1sA3DPPff8DlddddVVV1111VVX/X9CcNVVV1111VVXXfV/2D/8wz/89n333XfrK7/yK/Pwhz+cB5LEA0lCEpL495IEgCTuJwlJAEhCEpKQhCQkIYmIQBIRQSmFiCAiiAgiAklI4oFsY5vMxDaZiW1sYxsA29xzzz2/zVVXXXXVVVddddVV/58QXHXVVVddddVVV/0fdt999936oz/6o59z8uRJ3vVd35VTp04hiecmiQeSxPMjiReVJO4niftJ4n6SkIQkJBERSCIiiAgiglIKEUFEEBFEBJKQxP1sYxvb2MY2ALYBsA3A0dHRrVx11VVXXXXVVVdd9f8JwVVXXXXVVVddddX/cX//93//W//wD//w2ydPnuRDPuRDAJDE/STx/Eji30ISDySJ+0kCQBKSkIQkJCEJSUQEEUEphYggIiilEBFIQhKSuJ9tAGxjG9vYxja2sQ3AwcHBrVx11VVXXXXVVVdd9f8NwVVXXXXVVVddddX/cWfPnn3G13/917/Pfffdd+vJkyf51E/9VE6cOAGAJP4zSAJAEveTBIAkACQBIAlJRAQRQURQSiEiKKUQEUQEEUFEIAlJ3M82trGNbTIT29jmgVprt3LVVVddddVVV1111f83BFddddVVV1111VX/D9x33323ftZnfdbr3HfffbeeOHGCD/qgD+LEiRP8SyTxryGJ+0nifpIAkASAJAAkIQlJSEISEUFEEBFEBKUUIoKIQBKSeG62sU1mYhvb2MY2trHNYx7zmAdz1VVXXXXVVVddddX/NwRXXXXVVVddddVV/0/cd999t37WZ33W69x33323njhxgg/8wA/k9V7v9fjXksQLIwlJ3E8SDyQJSUhCEpKQhCQigoggIiilUEohIiilEBFEBJKQBIBtbGObzMQ2trGNbWxzv5MnTz74mmuueTBXXXXVVVddddVVV/1/QnDVVVddddVVV131/8h9991362d91me9zo/8yI989okTJ3i913s93u7t3o7jx4/zn0ES95PEA0lCEpKQREQQEUQEEUFEEBGUUogIIgJJSAJAEgC2yUxsYxvb2MY2ALYBuOaaa7jvvvtu5aqrrrrqqquuuuqq/0+oXHXVVVddddVVV/0/c9999936oz/6o58D8Dqv8zrv/bIv+7IPfshDHsJf//Vf81u/9Vs8N0m8qCQhCQBJ3E8SAJKQhCQAJCEJSUgiIogIIoKIoJRCRBARRAQRgSQAbGMb29jGNraxjW0AbANw0003cXR0dCtXXXXVVVddddVVV/1/Qzl+/DhXXXXVVVddddVV/x/9wz/8w+/82Z/92c9sbm4ef8xjHvPSD3nIQ3iZl3kZVqsV9957L5KQhCQAJCEJSQBIQhIAkpCEJCKCiEASkogIJBERSCIiiAhKKZRSKKVQa6XrOrquo+97ZrMZs9mM2WxG3/f0fU+tlVIKkrBNZtJaYxxHhmFgvV4zDAPjODKOI601MpPWGo997GP5+7//+5/+0z/905/hqquuuuqqq6666qr/TyjHjx/nqquuuuqqq6666v+rw8PD3T/90z/9mbNnzz7jwQ9+8EufOnXq+GMe8xhe+qVfmvl8zjOe8QwkASAJSUgCQBKSAJCEJCICSUQEkogIJBERSCIiiAgiglIKEUGtlVorXdfRdR193zObzZjNZsznc2azGV3XUWslIpCEbTKTaZoYx5FhGBiGgWEYGIaB1hrTNNFa4xVe4RVord36Dd/wDe9zeHi4y1VXXXXVVVddddVV/59Qjh8/zlVXXXXVVVddddX/d7feeutf/+mf/ulPHx4e7l5zzTUPPnXq1PEHP/jBvNRLvRTz+Zy9vT1WqxWSkASAJCQBIAlJRAQRgSQiAklEBJKICCQREZRSKKVQSqHWSq2Vruvo+56+75nNZsznc2azGX3f03UdpRQiAgDbZCbjODKOI+v1mmEYGIaBcRyZpomu63jJl3xJTp06xS/8wi98zZ/+6Z/+NFddddVVV1111VVX/X9DOX78OFddddVVV1111VVXwdHR0aV/+Id/+J0/+7M/+5lbb731bzY3N4/fcsstD37wgx/MIx/5SB71qEcBcN999wEgCUkASCIikEREEBFIIiKQREQgiYggIiilUEqhlEKtla7r6LqOvu+ZzWbMZjNmsxmz2Yy+7+m6jlorEYEkMpPWGtM0MQwDwzCwXq8ZhoFxHLnhhht48Rd/cRaLBT/yIz/y2T/6oz/6OVx11VVXXXXVVVdd9f8RetCDHsRVV1111VVXXXXVVc/fmTNnHvRO7/ROn/06r/M6780zXbp0idtuu41nPOMZ/P3f/z0AkogISimUUogISilEBBFBKYVSChFBrZVSCl3X0XUdXdcxm81YLBYsFgs2NzfZ3Nxka2uLzc1NFosFs9mMruuICGwzTRPDMLBcLjk4OODw8JCDgwM2Nzc5fvw4s9kMgB/5kR/57B/90R/9HK666qqrrrrqqquu+v8KPehBD+Kqq6666qqrrrrqqhfummuuefCLvdiLvfbrvM7rvNeLvdiLvTYPcOnSJW6//XZuv/12Hv/4x1NKoZRCRBARlFKICEoplFIopVBrpdZK3/f0fc9sNmOxWLBYLNjc3GRra4vNzU02NzdZLBbMZjNqrUQEmck0TazXa5bLJYeHh9hma2uL+/3DP/zDb//Ij/zI5/zDP/zDb3PVVVddddVVV1111f9n6EEPehBXXXXVVVddddVVV73ozpw586AXf/EXf50Xe7EXe63XeZ3XeW+ey97eHnfeeScHBwccHh5ycHDAfffdRymFUgqlFGqt1Frp+56+75nP58znczY2Ntja2mJzc5OtrS02NzeZz+fMZjNKKUhimiZWqxXDMDBNEw/0D//wD7/993//97/9oz/6o5/DVVddddVVV1111VVXAXrQgx7EVVddddVVV1111VX/Ntdcc82Dz5w58+AXe7EXe60Xf/EXf+0Xe7EXe21egIODAw4PDzk6OkISq9WKYRgopdB1HX3fM5vNmM1mzGYz5vM5XddRa8U2AOM48tzuu+++W3/rt37ru//hH/7hd/7hH/7ht7nqqquuuuqqq6666qpnQw960IO46qqrrrrqqquuuuo/zjXXXPPgF3uxF3vtF3uxF3uta6655sFnzpx58DXXXPNg/hX29/fZ3t7m+bnvvvtuPXv27K1///d//9v/8A//8Nv/8A//8DtcddVVV1111VVXXXXV84ce9KAHcdVVV1111VVXXXXVf65rrrnmwQC2/eIv/uKvA3DmzJkHXXPNNQ++7777br3mmmsezHO57777buWZ/uEf/uF3AP/DP/zD73DVVVddddVVV1111VUvOvSgBz2Iq6666qqrrrrqqquuuuqqq6666qqrrrrq/yQqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+r+EfkMp05U4zonAAAAABJRU5ErkJggg==) ```js // Rotate a pipe with just roll. @@ -90,9 +90,9 @@ sweepSketch = startSketchOn(XY) sweepPath = startSketchOn(XZ) |> startProfileAt([0.05, 0.05], %) |> line(end = [0, 7]) - |> tangentialArc({ offset = 90, radius = 5 }, %) + |> tangentialArc(angle = 90, radius = 5) |> line(end = [-3, 0]) - |> tangentialArc({ offset = -90, radius = 5 }, %) + |> tangentialArc(angle = -90, radius = 5) |> line(end = [0, 7]) // Create a hole for the pipe. @@ -106,7 +106,7 @@ sweepSketch = startSketchOn(XY) |> rotate(roll = 10) ``` -![Rendered example of rotate 1](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEq+0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fRXDVVVddddVVV/2PJInP/dzP/a3P/dzP/S2uuuqqq6666qqrrrrqqqv+bdCDHvQgrrrqqquuuuqq/1ne933f923f7M3e7Cd4gLd7u7cTV1111VVXXXXVVVddddVV/zoEV1111VVXXXXV/zhv9mZv9hM8l2/6pm96OlddddVVV1111VVXXXXVVf86VK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XoQc96EFcddVVV1111VX/8/zET/yEeYC3e7u3E1ddddVVV1111VVXXXXVVf86BFddddVVV1111f9Ib/d2b6f77rvvVoAP+ZAPeQhXXXXVVVddddVVV1111VX/egRXXXXVVVddddX/eGfOnHkwV1111VVXXXXVVVddddVV/3oEV1111VVXXXXV/1jXXHPNgwFe7MVe7LW46qqrrrrqqquuuuqqq6761yO46qqrrrrqqqv+R3qxF3ux1+aZXvzFX/y1ueqqq6666qqrrrrqqquu+tcjuOqqq6666qqr/ke65pprHswzvdiLvdhrv9iLvdhrc9VVV1111VVXXXXVVVdd9a9D5aqrrrrqqquu+le75pprHgxw5syZB19zzTUPPnPmzIN4pmuuuebB11xzzYN5pjNnzjyYZ7rmmmsezPNx33333coDnD179tYzZ848mAd4ndd5nfe65pprHnzffffdCvAP//APv81VV1111VVXXXXVVVddddULhx70oAdx1VVXXXXVVVc9r2uuuebBZ86cefCLvdiLvRbAi7/4i782wIu92Iu9Nv+Cvb097re3t8f99vb2eEF2dnZ4oJ2dHQB2dnZ4Qe67775bAf7hH/7htwH+4R/+4Xfuu+++W//hH/7ht7nqqquuuuqqq6666qqrrgL0oAc9iKuuuuqqq676/+yaa6558JkzZx78Yi/2Yq8F8OIv/uKv/WIv9mKvzXPZ29sDYG9vj9tvvx2Avb099vb2ANjb22Nvb4//DDs7OwDs7Oyws7MDwM033wzAzs4ON910Ew9033333QrwD//wD7/9D//wD79z33333foP//APv81VV1111VVXXXXVVVdd9f8NetCDHsRVV1111VVX/X9yzTXXPPi1X/u13wvgxV/8xV/7xV7sxV6bB9jb2+OOO+7g0qVL7O3tsbe3xx133MF/J0n8S3Z2dtjZ2WFnZ4ebbrqJnZ0dbrrpJu5333333foP//APv/0P//APv/Nbv/Vb381VV1111VVXXXXVVVdd9f8BetCDHsRVV1111VVX/V92zTXXPPi1X/u13+uaa6558Ou8zuu8Nw+wt7fHP/zDPwBwxx13cMcdd/Ci2NnZAWBnZ4ednR12dnYAOHbsGDs7OwDs7OwAsLOzw/Ozt7fHzs4OAHt7e+zt7bGzs8Pe3h57e3sA7O3tsbe3x97eHnt7e+zt7fGvsbOzw0033cRNN93Ezs4ON910EwD33Xffrf/wD//w2//wD//wO7/1W7/13Vx11VVXXXXVVVddddVV/1ehBz3oQVx11VVXXXXV/zXXXHPNg1/7tV/7vV7ndV7nva+55poH80x7e3v8wz/8A3fccQd33HEH/5KdnR12dna46aabALj55pu56aab+O+yt7cHwB133MEdd9zB3t4ed9xxBy+qnZ0dbrrpJh772Mdy0003AXDffffd+qM/+qOf8w//8A+/fd99993KVVddddVVV1111VVXXfV/CXrQgx7EVVddddVVV/1fcM011zz4tV/7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trHN82Ob52abB7LNv4ZtnpttnpttbPPcbGObf4lt/r0kIYl/L0k8N0nc79KlS5w5c+bBXHXVVVddddVVV1111VX/U1G56qqrrrrqqv+FbGMb29jGNraxzXOzjSSeH9v8SyRxP9tI4oFsI4nnZpsHksT9bCOJ+9lGEs/NNpKwjST+tSRhG0lIQhKSeEEkYZsXhSR2d3e56qqrrrrqqquuuuqqq/5HI7jqqquuuuqq/4Wmafpt29jGNg9kGwDb2OaBbPOvZZsHso1tHsg2tvnXss3zY5sXxjbPjySemySemyQkASAJSUjigSTxQJJ4bpK45pprHsxVV1111VVXXXXVVVdd9T8VwVVXXXXVVVf97/Q7mYltbGMb29gGwDYPZJv72eZfyzbPzTbPzTb/Ets8P7b5jyAJAEn8SyTx/EjigSQBIAkASQBcunSJq6666qqrrrrqqquuuup/NIKrrrrqqquu+l8oM7GNbQBs84LYBsA297PNv5ZtnpttnpttbGObB7KNbe5nGwDb/GvY5vmRxP0kASAJAElIQhKS+PeQBIAk7nfNNdc8mKuuuuqqq6666qqrrrrqfyKCq6666qqrrvpfKCJutY1tbANgG9vYxjYAtnlBbGObfw3bPDfbvCC2sY1tXhS2uZ9tAGxzP9v8a0niuUniBZHEA0niBZEEwJkzZx7MVVddddVVV1111VVXXfU/EcFVV1111VVX/S8UEbdm5q22sY1tnptt7mcbANs8N9vYxja2sY1tbGOb52ab52Yb27yobPNAtvmvJglJ3E8SknggSbwwu7u7XHXVVVddddVVV1111VX/oxFcddVVV1111f9S0zTdmpnYxja2AbDNC2Obfw3b2OaBbGOb52abf4lt7meb52ab58c2LwpJAEhCEgCSkIQkJPFAkpDEv4Yk7re7u8s111zzYK666qqrrrrqqquuuuqq/4kIrrrqqquuuup/qcy81Ta2uZ9tAGwDYBvbANjmfrb517LNc7PNc7ONbZ6bbWzzgtjmudnmX0MSAJK4nySemyT+JZJ4IEk8kCQksbu7y5kzZx7EVVddddVVV1111VVXXfU/EcFVV1111VVX/S/VWrvVNraxjW0AbANgmxfGNv9atnlutnl+bGMb29jmudkGwDbPzTb/0STxQJJ4QSTx/Ejiqquuuuqqq6666qqrrvpfheCqq6666qqr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6/WaJz/5yVxzzTVce+21POpRj2KxWHDbbbchCUlIotZ6fGtr67V3dnbeGji+Wq1+h6uuuuqqq6666qqrrvr/iXL8+HGuuuqqq6666qpnk7Q7juODu6576VIKkpCEJCICSQBIQhKSkMT9JHE/SdxPEveThCReEElIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSOJFIYnnZhvbPD+2+ZdI4oEkcT9JPJAk/jXW6zW33347q9WKRz7ykTzoQQ/ipV7qpVgsFtx2221IIiKQRK31+NbW1mtvb2+/N3B8vV4/A9jlqquuuuqqq6666qqr/v+gHD9+nKuuuuqqq6666jnZ/ptSykdHBJKICAAkIQlJSEISkpAEgCQeSBIAkgCQhCTuJwlJSEISkpDEfxRJSEISkpCEJO4niX8L2zw3STw3STyQJO4niftJ4kUlifV6ze23387f//3fc80113DttdfyoAc9iJd6qZfiyU9+MsMwIImIICLouu741tbWa29vb791rfWlh2G4lJm3ctVVV1111VVXXXXVVf/3UY4fP85VV1111VVXXfWcJO1m5mt3XffgiEASkpCEJCQhCUlIQhIAkgCQhCQAJAEgiftJQhLPTRKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJF4QSTyQJO5nm38vSTyQJO4niftJ4n6SeFFIAkAS6/WaO+64g9VqxS233MJ8PudRj3oU8/mc22+/HUlIQhIRQa31+Obm5kufOHHivbe3t997GIZL4zj+NVddddVVV1111VVXXfV/F+X48eNcddVVV1111VXPKzN/p9b60ZKICCQBEBEASEISkpCEJO4niftJQhL3k8QDSUISkvj3kIQkJCEJSUhCEpKQxANJAkASz802/xaSeCBJ3E8S95PE/SRxP0k8P5KQhCQAJAEgifV6ze23384//MM/sFqteMQjHsGDHvQgXvIlX5L5fM7tt9+OJCQREUQEEUGt9fixY8feemdn5727rnvpcRwvtdZu5aqrrrrqqquuuuqqq/5voRw/fpyrrrrqqquuuup5SdrNzNeutT44IpCEJCQhCUlIQhKSkASAJO4nCQBJAEjifpKQxHOThCQkIQlJSEISkpCEJCQhCUlI4kUhCUlIAkASAJL4t5LEc5PE/SRxP0ncTxL3k8T9JPHcJPFAkgCQBIAk1us1d9xxB3//93/PmTNn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CCKCiCAiiAgigoggIiilUEqhlEIphVIKEUFEEBFEBBFBRBARRAQRQSmFiCAiiAgiAklIIiKICCQREUQEkogIJCEJSQBI4n6SeCDbPDfb3M82tvmX2OaBbHM/2wDY5t/CNs+PJF4QSTyQJB5IEi+MJCTxQKvVinvvvRfbvN/7vR9PeMITGMfx+Pb29muv12vGcfwdrrrqqquuuuqq/ysox48f56qrrrrqqquu+p9H0q6k31mv19RaX1sSkpCEJCQhiX+JJO4niX8t27wgtvmPYJv72eb5sQ2AbQBs868lCUlIQhIRgSQkIQlJRASSiAgigoggIogIIoKIICKICCKCiKCUQkQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEpRQigoggIiilEBFEBBFBRFBKISKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICEopRAQRQUQQEUQEpRQiglIKEUFEEBGUUpCEJCICSUQEEYEkJBERSCIikIQkIgJJSEISAJJ4fmwDYJv72eZ+trGNbWxjG9vczza2uZ9tnh/bANjmfrZ5brZ5UUniuUniuUnigSTxopIEwKVLl3j84x/P277t23Ly5Eme9rSnsb29/drr9VrjOP42V1111VVXXXXV/wWU48ePc9VVV1111VVX/c8l6XeOjo7ouu61JSEJAEkASOJ+tnkgSQBI4n6SeFHZ5gWxzfNjm38r2wDY5vmxDYBtAGzzopDEc5MEgCQAJCEJSUhCEpKQREQgCUlIQhIRQUQgiYhAEpKQREQQEUQEkogIJBERRAQRQUQQEUQEEUFEIIlSChFBRBARRASlFCKCiCAiiAgigoggIogIIoKIICKICCKCUgoRQUQQEUQEEUFEEBFEBBFBRBARRASSiAgigoggIogIIoKIICKICCKCiCAiiAgkERFEBBFBRBARSCIiiAgigoggIpCEJCQhiYhAEpKQREQgCQBJSAJAEpKQhCQAJAEgiefHNgC2uZ9tnh/b2OZ+trmfbQBsA2Cb52ab52abfwtJPDdJPJAkHkgSLypJAKzXa57+9Kfzpm/6przaq70aj3vc4+i67rVXqxXjOP4OV1111VVXXXXV/3aU48ePc9VVV1111VVX/c8WEb+zXC6f0ff9W0tCEgCSAJAE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WpIAkMT9JCEJSUgiIpBERBARRASSiAgkERFIQhKSkMRzs80LYhvbrNfrW7nqqquuuuqqq/6jUbnqqquuuuqqq6666qqr/kNEBJKQxH8GSTw3SfxHkYQkACQhCUlIIiKQREQgiYhAEpLITCTxL7ENgG3uZ5urrrrqqquuuuo/FZWrrrrqqquuuuqqq6666j+EJP47SeI/giQkIQlJSEISEYEkIgJJSOKBJPEvsc3zs7e399tcddVVV1111VX/GahcddVVV1111VVXXXXVVf8hIuLB/A8lCUkASAJAEgCSkIQkJCEJSUgiIogIIgJJRASSkIQkACQhCQBJ3M82trGNbR7INrYBsM3e3t6tXHXVVVddddVV/xmoXHXVVVddddVVV1111VX/ISQ9WBIAkvjvJIkXRhIAkgCQhCQkIQlJSEISkpBERCAJSUhCEgCSkIQk7mcbANvYBsA2ALZ5boeHh7dy1VVXXXXVVVf9Z6By1VVXXXXVVVddddVVV/2HkASAJP41bCOJ/y6SuJ8kJCGJiCAiiAgiAklEBBFBRCCJ52ab+9nmfraxjW0eyDYAR0dHz+Cqq6666qqrrvrPQOWqq6666qqrrrrqqquu+g9RSnmwJF4YSfxb2UYSz00S95PE/STx3CRxP0lIAkASkgCQREQgCUlEBJKICCQhCUlIAkASALYBsI1tbGMb29jmgWxjGwDb7O7u/jZXXXXVVVddddV/BoKrrrrqqquuuuqqq6666j+EbZ6bJP6nkYQk7icJAElIQhKSkEREIImIICKQhCQAJPH82MY2trGNbQBsYxvbPLf1en0rV1111VVXXXXVfwaCq6666qqrrrrqqquuuurfLTMfLIkHksS/h20AbPNAknhRSUISkpDEA0lCEpKQhCQkIQlJRASSiAgiAklEBJKQxPNjm/vZxja2sc0Lsrm5yVVXXXXVVVdd9Z+GylVXXXXVVVddddVVV13175aZDwaQxH8FSTyQJO4niX8tSUgiIpBERBARRASSkIQkJCEJSUjiudnGNraxjW0AbGMb29jGNgC2ecITnvDdXHXVVVddddVV/1moXHXVVVddddVVV1111VX/brYfLAkASfxXkMS/liQkIQkASUhCEpKQREQgCUlEBBFBRBARSEISkngg29gGwDa2uZ9trrrqqquuuuqq/zYEV1111VVXXXXVVVddddW/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Dg5u5aqrrrrqqquu+u9E5aqrrrrqqquuuuqqq656kV1zzTUPBpDECyKJ/yiSeCBJPJAk7ieJF0YSkpCEJCQhiYhAEpKQhCReENvYxjaZSWZiG9vYxja2ud/BwcEzuOqqq6666qqr/jtRueqqq6666qqrrrrqqqv+XSQBIIn/DJJ4fiRxP0kASAJAEpKQhCQkIQlJAEhCEpKQhCQkIQlJSEISD2Qb29jGNraxjW1sA2AbANvY5vz587dy1VVXXXXVVVf9dyK46qqrrrrqqquuuuqqq/7VrrnmGiTxX0kS95PE/STxQJJ4IElI4n6SkIQkIgJJRASSkMTzYxsA29jGNpmJbTIT29gGwDb3m6bpVq666qqrrrrqqv9OBFddddVVV1111VVXXXXVi+y+++67FeDMmTP8Z7DN8yOJ+0ni+ZHEA0lCEveThCQkIQlJSEISkpCEJCQhiedmGwDb2MY2mYltbGMb2wDYBmC5XN7KVVddddVVV13134ngqquuuuqqq6666qqrrvpXue+++2597GMfy38mSUjiuUnigSTxQJKQhCTuJwlJSEISkpCEJCQhCUlIQhIvjG1sk5nYxja2sY1tAGwDcOrUKa666qqrrrrqqv92BFddddVVV1111VVXXXXVv8rZs2dvPX369K0AkvjPJIkXRBL3k8Rzk4QkACQhCUlIQhKSkEREIAlJAEgCQBL3s41tbGMb22QmtrGNbWxjm/stFguuueaaB3PVVVddddVVV/13Irjqqquuuuqqq6666qqr/lX+/u///rdf7MVe7MGS+Newzf1s80C2eUEkASCJ+0nifpIAkMT9JHE/SdxPEpKQhCQkIQlJSEISkpDE/WwDYBvb2MY2tslMbGMbANvYxjYHBwe3njlz5sFcddVVV1111VX/nQiuuuqqq6666qqrrrrqqn+V3/7t3/6e06dP8+hHP5p/L9v8a0nifpJ4IElIAkASkgCQhCQAJCGJiCAikIQkJCGJF8Y2tslMbGMb29jGNg90yy23PPjs2bO3ctVVV1111VVX/XciuOqqq6666qqrrrrqqqv+Ve67775b//7v//633//935//TJK4nyQAJHE/SdxPEi+IJAAkIQlJSEISkpCEJCQhCUk8N9vYxja2sU1mYpvMxDa2sQ2Abc6cOcNVV1111VVXXfXfjuCqq6666qqrrrrqqquu+lf7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VVddddVVV131n+Po6OjSn/3Zn/3M4eHh7iu8wiu89sMf/nAe9rCH8bSnPY3lcokkACRxv4ggIogIIoKIQBIRQUQgiYhAEpKICCKCiCAiiAgiglIKpRRKKdRa6bqOruvo+56+75nNZsxmM/q+p+s6uq6jlEJEIAkA22QmrTXGcWQYBmwzn88B+JEf+ZHP/q7v+q6P4aqrrrrqqquu+p+Kcvz4ca666qqrrrrqqquuuuqq/zyHh4e7//AP//A7AC/+4i/+2idPnuTFX/zFWSwWPO1pT+N+kpBERBARlFKQREQQEUgiIpBERCCJiEASEUFEEBGUUiilEBGUUqi1Umul1krXdfR9T9/3zGYzZrMZfd/T9z21VkopRASSsA1Aa43WGkdHR6xWKyQB8Jmf+Zmv89u//dvfw1VXXXXVVVdd9T8Z5fjx41x11VVXXXXVVVddddVV//n+4R/+4Xd++7d/+3sODw93X+EVXuG1H/7wh/PyL//yLBYLLly4wGq1QhIRQSmFiCAikEREEBFIIiKQREQgiYggIogIIoKIICIopVBKodZKKYWu6+i6jr7v6fue2WzGbDaj73v6vqfrOkopRAT3s80wDFy8eJGjoyMA7rvvvls//uM//mVuvfXWv+aqq6666qqrrvqfjnL8+HGuuuqqq6666qqrrrrqqv8ah4eHu//wD//wO7/927/9PZubm8cf+9jHvvTDHvYwXuIlXoIbbriB5XLJ3t4eEUFEEBFEBJKICCQREUgiIogIJBERRAQRQSmFUgoRQSmFUgq1Vrquo+s6+r6n73tmsxmz2Yy+7+m6jlortVYiAkmM48ju7i733Xcf0zRx33333fpd3/VdH/P1X//173N4eLjLVVddddVVV131vwF60IMexFVXXXXVVVddddVVV1313+Oaa6558Du+4zt+1uu8zuu8N8908eJF/uqv/orbbruN22+/nVIKpRQiglIKEUEphYiglEIphYiglEKtlVIKtVa6rqPrOvq+ZzabMZ/PWSwWbGxssLm5ydbWFltbW2xubrJYLJjNZvR9z6VLl5imib29Pe73Iz/yI5/9oz/6o5/DVVddddVVV131vw160IMexFVXXXXVVVddddVVV1313+vMmTMPep3XeZ33fp3XeZ33vuaaax7MM+3u7nLbbbfxD//wD9x5551EBKUUIoJSChFBKYVSCqUUSinUWqm1Umul73v6vmc2mzGfz1ksFmxsbLC5ucnW1hZbW1ssFgsAaq3s7e3xQD/yIz/y2b/927/9Pffdd9+tXHXVVVddddVV/xuhBz3oQVx11VVXXXXVVVddddVV/zNcc801Dz5z5syDX+d1Xue9XuzFXuy1Aa655poH80x7e3vccccd3HXXXUQEh4eH3HPPPZRSKKVQa6WUQq2Vruvouo6+75nNZhw7doz5fM729jY7OzvMZjNqrTy3++6779bf+q3f+u4f/dEf/Ryuuuqqq6666qr/7dCDHvQgrrrqqquuuuqqq6666qr/ec6cOfMgSXrt137t93rxF3/x136xF3ux1+YFODg4AEASh4eHRAQAm5ubSGI+n/OC3HfffbeePXv21r//+7//7R/90R/9HK666qqrrrrqqv9L0IMe9CCuuuqqq6666qqrrrrqqv/5rrnmmgfb9ou/+Iu/zou92Iu91jXXXPNggBd7sRd7bYD77rvv1muuuebBvBD/8A//8NsAf//3f//bAP/wD//w2//wD//wO1x11VVXXXXVVf9XoQc96EFcddVVV1111VVXXXXVVf+7XXPNNQ/mmc6cOfNgwIDOnj17K8B99913K1ddddVVV1111f9H6EEPehBXXXXVVVddddVVV1111VVXXXXVVVddddX/SVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxX/CMi6gGcuJ0HqAAAAAElFTkSuQmCC) +![Rendered example of rotate 1](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEqZElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVv9o111zzYIAzZ848+JprrnnwmTNnHsQzXXPNNQ++5pprHswznTlz5sE80zXXXPNgno/77rvvVh7g7NmztwLcd999t/JM9913361nz559xn333XcrwD/8wz/8NlddddVVV1111VVXXXXVVS8cetCDHsRVV1111VVXXfW8rrnmmgefOXPmwS/2Yi/2WgAv/uIv/toAL/ZiL/ba/Av29va4397eHvfb29vjBdnZ2eGBdnZ2ANjZ2eEFue+++24F+Id/+IffBviHf/iH37nvvvtu/Yd/+Iff5qqrrrrqqquuuuqqq666CtCDHvQgrrrqqquuuur/s2uuuebBZ86cefCLvdiLvRbAi7/4i7/2i73Yi702z2Vvbw+Avb09br/9dgD29vbY29sDYG9vj729Pf4z7OzsALCzs8POzg4AN998MwA7OzvcdNNNPNB99913K8A//MM//PY//MM//M5999136z/8wz/8NlddddVVV1111VVXXXXV/zfoQQ96EFddddVVV131/8k111zz4Nd+7dd+L4AXf/EXf+0Xe7EXe20eYG9vjzvuuINLly6xt7fH3t4ed9xxB/+dJPEv2dnZYWdnh52dHW666SZ2dna46aabuN9999136z/8wz/89j/8wz/8zm/91m99N1ddddVVV1111VVXXXXV/wfoQQ96EFddddVVV131f9k111zz4Nd+7dd+r2uuuebBr/M6r/PePMDe3h7/8A//AMAdd9zBHXfcwYtiZ2cHgJ2dHXZ2dtjZ2QHg2LFj7OzsALCzswPAzs4Oz8/e3h47OzsA7O3tsbe3x87ODnt7e+zt7QGwt7fH3t4ee3t77O3tsbe3x7/Gzs4ON910EzfddBM7OzvcdNNNANx33323/sM//MNv/8M//MPv/NZv/dZ3c9VVV1111VVXXXXVVVf9X4Ue9KAHcdVVV1111VX/11xzzTUPfu3Xfu33ep3XeZ33vuaaax7MM+3t7fEP//AP3HHHHdxxxx38S3Z2dtjZ2eGmm24C4Oabb+amm27iv8ve3h4Ad9xxB3fccQd7e3vccccdvKh2dna46aabeOxjH8tNN90EwH333Xfrj/7oj37OP/zDP/z2fffddytXXXXVVVddddVVV1111f8l6EEPehBXXXXVVVdd9X/BNddc8+DXfu3Xfq93eqd3+myeaW9vj3/4h3/gjjvu4I477uCF2dnZYWdnh5tuuombb76Zm266iRdmuVxydHTEarViuVwCsFqtWC6XABwdHWGbo6MjMpPMJDPJTDKT1hqZSWaysbFBZpKZbG5usrm5iW2uv/56bLO9vc2NN97I87O3t8fe3h533HEHd9xxB3fccQfPjyQeaGdnh5tuuonH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/NjmXyKJB5LE/STxQJL411iv19x+++2sVise+chH8qAHPYiXeqmXYrFYcNtttyGJiEAStdbjW1tbr729vf3ewPH1ev0MYJerrrrqqquuuuqqq676/4Ny/Phxrrrqqquuuuqq52T7b0opHx0RSCIiAJCEJCQhCUlIQhIAknggSQBIAkASkrifJCQhCUlIQhL/USQhCUlIQhKSuJ8k/i1s89wk8dwk8UCSuJ8k7ieJF5Uk1us1t99+O3//93/PNddcw7XXXsuDHvQgXuqlXoonP/nJDMOAJCKCiKDruuNbW1uvvb29/da11pcehuFSZt7KVVddddVVV1111VVX/d9HOX78OFddddVVV1111XOStJuZr9113YMjAklIQhKSkIQkJCEJSQBIAkASkgCQBIAk7icJSTw3SUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSeEEk8UCSuJ9t/r0k8UCSuJ8k7ieJ+0niRSEJAEms12vuuOMOVqsVt9xyC/P5nEc96lHM53Nuv/12JCEJSUQEtdbjm5ubL33ixIn33t7efu9hGC6N4/jXXHXVVVddddVVV1111f9dlOPHj3PVVVddddVVVz2vzPydWutHSyIikARARAAgCUlIQhKSuJ8k7icJSdxPEg8kCUlI4t9DEpKQhCQkIQlJSEISDyQJAEk8N9v8W0jigSRxP0ncTxL3k8T9JPH8SEISkgCQBIAk1us1t99+O//wD//AarXiEY94BA960IN4yZd8SebzObfffjuSkEREEBFEBLXW48eOHXvrnZ2d9+667qXHcbzUWruVq6666qqrrrrqqquu+r+Fcvz4ca666qqrrrrqquclaTczX7vW+uCIQBKSkIQkJCEJSUhCEgCSuJ8kACQBIIn7SUISz00SkpCEJCQhCUlIQhKSkIQkJCGJF4UkJCEJAEkASOLfShLPTRL3k8T9JHE/SdxPEveTxHOTxANJAkASAJJYr9fccccd/P3f/z1nzpzh2muv5UEPehAPetCDuOOOOxiGAUlIIiKICCKCruuOb2xsvPSJEyfee3t7+737vn/pcRwvtdZu5aqrrrrqqquuuuqqq/73oxw/fpyrrrrqqquuuur5y8zfqbV+dEQQEUgCQBKSkIQkJCEJAEkASOJ+kpDE/STxQJKQhCReVJKQhCQkIQlJSEISkpCEJCQhiQeSBIAknh/bPJAk/iWSeCBJ3E8SAJK4nyTuJ4n7SeKBJPFAkgCQhCQAJAEwDAO33347q9WKW265hWPHjvHIRz6S+XzO7bffjiQkIQlJSCIiiAj6vj++sbHx0idPnnzv7e3t9+667qUlnbB9PDNv5aqrrrrqqquuuuqqq/73oRw/fpyrrrrqqquuuur5k7Q7TdODu6576YhAEpIAkIQkJCEJSQBIAkASAJIAkASAJO4nCUk8N0lIQhKSkIQkJCEJSfxbSEISkgCQBIAk/j0k8UCSuJ8k7icJAEncTxIAkrifJB5IEg8kCUkASAJAEgCSGIaBO+64g7//+79nvV7ziEc8gltuuYWXeImXYD6fc8cddyAJSUgiIogIIoKIICLouu745ubmS+/s7Lz1yZMn33tnZ+e9u657aUkngOOttVu56qqrrrrqqquuuuqq//nQgx70IK666qqrrrrqqhcsMx+8sbHx9L7vqbVSSqGUQimFUgoRQUQQEUQEEYEkIgJJRASSiAgiAklIIiKQhCQkERFIQhKSkIQkJCEJSUhCEpKQhCQiAklIQhKSkIQkJCEJSUgCQBKSkASAJAAk8UC2AbANgG1sYxvbANjGNraxDYBtbANgG9sA2MY2ALYBsA2AbWwDYBvbANjGNgC2sY1t7meb+9kGwDYAtgGwzc7ODm/8xm/MzTffDMDtt9/O3/3d3/F3f/d3ANjGNgC2sY1tbGMb29jGNraxjW3W6/Wth4eHv52ZHB0d/c44jrdO03RrZt7KVVddddVVV1111VVX/c+AHvSgB3HVVVddddVVV71wtr9ra2vrvbuuo9ZKKYWIoJRCKYWIICKICCKCiEASkogIIgJJRASSiAgkIYmIQBKSkIQkJCGJiEASkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQkASUjihbENgG1sA2Ab29jGNgC2sQ2AbWwDYBvbANgGwDa2AbANgG0AbGMbANvYBsA2tgGwzf1sA2Cb+9kGwDb3297e5sVe7MV4lVd5Fe536dIlbr/9dm677Tb+/u//HtvYBsA2tgGwjW0AbGMb29gGwDa2sY1tAIZhuNU2wzDcCtD3PYeHh7fa5vkZx/FWgMVi8eBpmvj/wDbTNN0KYJtpmp5hG4Bpmm61jW1aa7dm5q1cddVVV1111VVXXfVvgR70oAdx1VVXXXXVVVe9cJn54MVi8fTZbEatlVIKpRQiglIKpRQigoggIogIJBERSCIikEREIImIQBIRgSQkIQlJRASSkIQkJCEJSUhCEpKQhCQkERFIQhKSkIQkJCEJSUgCQBKSkIQkACTxgtgGwDYAtrENgG1sYxsA29jGNgC2AbCNbQBsA2AbANvYBsA2ALYBsI1tAGxjGwDb3M8297PN/WwDYJv72QbgsY99LI997GO5+eabud+lS5fY29vjtttu4+///u+5dOkStrENgG0AbANgG9sA2AbANgC2uZ9tHsg2V71gtrmfbQBsIwnbDMNwK8AwDLcOw3BrZrJcLn+ntcY0Tbe21m7NzFu56qqrrrrqqquuuup+6EEPehBXXXXVVVddddW/zPZnbW5ufnbf95RSKKUQEZRSKKVQSiEiiAgkERFEBJKICCICSUQEkogIJCEJSUQEkpCEJCQhCUlIIiKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJAEgCUkASOL5sc39bGMbANvYBsA2trENgG1sA2AbANsA2MY2ALYBsA2AbQBsYxsA29gGwDYAtrmfbR7INvezDYBt7mcbANvs7Oxw00038djHPpabb76ZB7p06RJ///d/z+23385tt90GgG0AbHM/2wDY5n62eSDbXPXC2eb5sc39bHM/2wDYxja2AbDNMAy32ubw8PC3W2scHh7+zjiOt07T9NtcddVVV1111VVX/f+DHvSgB3HVVVddddVVV/3LMvPBs9nst+bz+YNrrdRaiQgiglIKpRQigoggIogIIgJJRAQRgSQiAklEBJKQREQgCUlIQhIRgSQkIQlJSEISkpCEJCQhCUlIIiKQhCQkIQlJSAJAEpKQhCQAJAEgiefHNgC2AbCNbQBsYxsA29gGwDYAtrENgG0AbANgGwDbANjGNgC2AbANgG1sA2CbB7LN/WzzQLYBsM39bHM/2wBsb29z0003cfPNN/PYxz6WB9rb2+Pv//7vuf3227ntttu4n20AbPNAtnlutrnqRWebB7LNA9nmfrYBsI1tAGwDkJnYxjbr9fpW2xweHv720dHR7wzDcOswDL/NVVddddVVV1111f9t6EEPehBXXXXVVVddddWLZpqm997Z2fmuruuotVJKISKICEoplFKICCKCiCAikEREEBFIIiKQREQgiYhAEpKQREQgCUlIQhKSkIQkJBERSEISkpCEJCQhCUlI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rvpPQ3DVVVddddVVV1111VVX/btFxIMlIYn/TLZ5IEm8MJKQhCQAJCEJAElIQhKSkIQkJCGJiEASEYEkJCGJ58c2trGNbWxjG9vczzYAtrHN/S5evPjbXHXVVVddddVV/1moXHXVVVddddVVV1111VX/bpL4t7CNJP6jSOJFIYn7SUISkpBERBARSCIikIQkIgJJSEISL4htbGMb29jGNi/Ier2+lauuuuqqq6666j8Llauuuuqqq6666qqrrrrq3y0iuJ8knh9J/GeQxItCEg8kCUkASEISkpCEJCICSUQEEYEkJCGJ58c2trGNbWzzQLaxzf1sc3R0dCtXXXXVVVddddV/JoKrrrrqqquuuuqqq6666t8tIh4sif8stnlRSeIFkYQkACQBIAlJSEISkpCEJCICSUhCEpIAkASAJGxjG9vYBsA2trGNbWxzP9vc79y5c7/NVVddddVVV131n4ngqquuuuqqq6666qqrrvp3k/RgAEn8R7ANgG1eFJJ4IEk8kCQeSBIAkpAEgCQkERFEBBGBJCQhCUlIQhIviG1sYxvb2MY2z802V1111VVXXXXVfwkqV1111VVXXXXVVVddddV/CEk8kCT+o0lCEpL4l0hCEpIAkASAJAAkIQkASUgiIpCEJCQREUQEkpAEgCQk8UC2sY1tbGMbANsA2MY2trmfbc6fP/87XHXVVVddddVV/5moXHXVVVddddVVV1111VX/bqWUB/MAkvjPJokHksS/RBIAkrifJCQhCUlIIiKQhCQkERFIQhL/EtsA2AbANi/IarXiqquuuuqqq676T0Xlqquuuuqqq6666qqrrvo/QxLPjySemyQkIQlJSEISkpBERBARRASSkIQkJPHcbGMb29jGNraxjW1sYxsA29zv8PDwt7nqqquuuuqqq/4zEVx11VVXXXXVVVddddVV/y6Z+WBJSOK5SeI/kyT+tSQhCQBJSEISkpBERCCJiEASkpCEJCQBIAkA29gGwDa2sY1tbGObB7INgG1ss1qtbuWqq6666qqrrvrPRHDVVVddddVVV1111VVX/btk5oN5JklI4j+DbZ4fSTyQJCRxP0kASEIS95MEgCQkIQlJSCIikEREIAlJSAJAEs/NNraxjW1scz/b2Oa5LZfLW7nqqquuuuqqq/6zEVx11VVXXXXVVVddddVV/y62H8x/ANv8R5KE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SEISkpCEJCQhCUk8kG1sYxvb2MY2trENgG0AbGOb8+fP38pVV1111VVXXfXfieCqq6666qqrrrrqqquu+le75pprkMR/JUncTxL3k8QDSeKBJCGJ+0lCEpKICCQREUhCEs+PbQBsYxvbZCa2yUxsYxsA29xvmqZbueqqq6666qqr/jsRXHXVVVddddVVV1111VUvsvvuu+9WgDNnzvCfwTbPjyTuJ4nnRxIPJAlJ3E8SkpCEJCQhCUlIQhKSkIQknpttAGxjG9tkJraxjW1sA2AbgOVyeStXXXXVVVddddV/J4Krrrrqqquuuuqqq6666l/lvvvuu/Wxj30s/5kkIYnnJokHksQDSUISkrifJCQhCUlIQhKSkIQkJCEJSbwwtrFNZmIb29jGNrYBsA3AqVOnuOqqq6666qqr/tsRXHXVVVddddVVV1111VX/KmfPnr319OnTtwJI4j+TJF4QSdxPEs9NEpIAkIQkJCEJSUhCEhGBJCQBIAkASdzPNraxjW1sk5nYxja2sY1t7rdYLLjmmmsezFVXXXXVVVdd9d+J4Kqrrrrqqquuuuqqq676V/n7v//7336xF3uxB0viX8M297PNA9nmBZEEgCTuJ4n7SQJAEveTxP0kcT9JSEISkpCEJCQhCUlIQhL3sw2AbWxjG9vYJjOxjW0AbGMb2xwcHNx65syZB3PVVVddddVVV/13Irjqqquuuuqqq6666qqr/lV++7d/+3tOnz7Nox/9aP69bPOvJYn7SeKBJCEJAElIAkASkgCQhCQigohAEpKQhCReGNvYJjOxjW1sYxvbPNAtt9zy4LNnz97KVVddddVVV13134ngqquuuuqqq6666qqrrvpXue+++279+7//+99+//d/f/4zSeJ+kgCQxP0kcT9JvCCSAJCEJCQhCUlIQhKSkIQkJPHcbGMb29jGNpmJbTIT29jGNgC2OXPmDFddddVVV1111X87gquuuuqqq6666qqrrrrqX+23f/u3v+f06dM86lGP4j+abSQBIIl/iSQAJHE/SUhCEpKQhCQkIQlJSEISkpCEJO4niedmG9tkJpmJbTIT29jmfrYBODw85Kqrrrrqqquu+m9HcNVVV1111VVXXXXVVVf9q/393//9b9133323vu/7vi+SuJ8k/qNJAkAS95PE8yMJSTw3SQBIQhKSkIQkJCEJSUjiudnGNgC2sY1tMhPb2MY2trHN/c6dO/fb9913361cddVVV1111VX/nQiuuuqqq6666qqrrrrqqn+1s2fPPuMf/uEffvv06dO86qu+KpL4ryKJ+0kCQBIPJAkASUgCQBKSkIQkJCEJSUhCEpKQxPNjG9vYxja2sY1tbGMbANvcdNNN3Hfffbdy1VVXXXXVVVf9dyO46qqrrrrqqquuuuqqq/5NfvRHf/RzAN7iLd6CU6dO8Z9JEgCSuJ8kHkgSkpAEgCTuJwlJSEISkpCEJCICSUjiudkGwDa2sY1tMhPb2MY297MNwM0338x99913K1ddddVVV1111X83gquuuuqqq6666qqrrrrq3+S+++679eu//uvf59SpU3zsx34s/5EkIQlJPD+SuJ8knpskACQhCUlIAkASkpCEJCQhCQBJSOKBbANgG9tkJrbJTDIT29jGNgCLxYLMvPW3f/u3v4errrrqqquuuuq/G8FVV1111VVXXXXVVVdd9W/2D//wD7/9D//wD7996tQp3vM935N/D9sASOKBJAEgiecmCQBJ3E8SAJIAkMT9JCEJSUgiIpCEJCTxgtjGNraxjW1sYxvb2AbANg9/+MMBuO+++27lqquuuuqqq67670Zw1VVXXXXVVVddddVVV/2b3Xfffbd+/dd//fvcd999t77Kq7wKb/qmb8p/NkkASOKBJCGJB5IEgCQkIQkASUhCEpKQhCQkASCJB7KNbTKTzCQzsY1tbGMb2ywWC2666SZ+9Ed/9HO46qqrrrrqqqv+JyC46qqrrrrqqquuuuqqq/5d7rvvvlt/9Ed/9HMAXvmVX5lXfuVX5j+aJAAk8dwk8dwkIQlJSEISkpCEJCQREUhCEpKQBIAkHsg2ALaxjW1sk5nYxjYAtnmxF3sxAH7rt37ru7nqqquuuuqqq/4nILjqqquuuuqqq6666qqr/t1+67d+67t/5Ed+5LNPnTrFm7zJm/CIRzyCB7LN/WzzQLZ5bpKQhCSeH0kASAJAEpKQhCSemyQkIQlJSEISkpCEJAAk8UC2AbCNbWxjm8zENraxjW2uu+46Tpw4wdd//de/D1ddddVVV1111f8UBFddddVVV1111VVXXXXVf4gf/dEf/Zwf+ZEf+exTp07x7u/+7jz84Q/n30ISDyQJAEkASOJfIglJSEISAJKQhCQkIQlJSEISknh+bGMb29gmM7FNZmIb22xvb/PoRz+af/iHf/jt3/qt3/purrrqqquuuuqq/ykox48f56qrrrrqqquuuuqqq676j3H27NlnHB4e7r7CK7zCaz/iEY9gY2ODpzzlKQBIQhIAkgCQBIAk7hcRRAQRQUQQEUgiIpBERCCJiEASEYEkIoKIoJRCRFBKISKotVJrpdZK13V0XUff98xmM2azGbPZjL7v6bqOWisRQUQgCQDbtNaYpolxHFmv16xWK9brNev1mojgxV/8xQH4+q//+vc5e/bsrVx11VVXXXXVVf9TUI4fP85VV1111VVXXXXVVVdd9R/j8PBw9x/+4R9+B+AVXuEVXvvhD384AE95ylOQhCQAJAEgCQBJ3C8iiAgigoggIogIJBERSCIikIQkIoKIICKICCKCUgoRQSmFUgq1VmqtdF1H13X0fc9sNmM2mzGbzei6jq7rqLUSEUQEALbJTFprTNPEMAys12vW6zXr9RrbPOYxj+G+++679Uu+5Eve5h/+4R9+m6uuuuqqq6666n8SyvHjx7nqqquuuuqqq6666qqr/mP9wz/8w+8AvPiLv/hrP/zhD+fhD384T33qU1mtVgBIAkASAJK4X0RQSiEiiAgkERFIIiKQREQgiYhAEhFBRBARlFKICEopRAS1VkopdF1HrZW+7+n7ntlsxmw2Yzab0fc9XddRSiEiiAjul5lkJuM4MgwD6/Wa9XqNJG655RYAfv7nf/6rf/u3f/t7uOqqq6666qqr/qehHD9+nKuuuuqqq6666qqrrrrqP94//MM//M5v/dZvffcrvuIrvvXNN998/CVe4iVYLBY89alPRRIAkgCQxP1KKUQEEUFEEBFIIiKQREQgiYhAEhFBRCCJUgoRQSmFiKCUQq2VWitd19F1HX3f0/c9s9mM2WxG3/f0fU+tlVorpRQkAWAb27TWGMeR9XrNer0G4OTJkwD81m/91nd/13d918dw1VVXXXXVVVf9T0Q5fvw4V1111VVXXXXVVVddddV/jqOjo0t/9md/9jOHh4e7r/AKr/DaD3/4w3nYwx7G0572NJbLJZIAkMT9IoKIICKICCICSUQEEYEkIgJJSCIiiAgigoggIogISimUUiilUGul6zq6rqPve/q+ZzabMZvN6Pueruvouo5SChGBJABsk5m01hjHkWEYsM18PgfgR37kRz77u77ruz6Gq6666qqrrrrqfyrK8ePHueqqq6666qqrrrrqqqv+8xweHu7+wz/8w+8AvPiLv/hrnzx5khd/8RdnsVjwtKc9jftJQhIRQURQSkESEUFEIImIQBIRgSQiAklEBBFBRFBKoZRCRFBKodZKrZVaK13X0fc9fd8zm82YzWb0fU/f99RaKaUQEUjCNgCtNVprHB0dsVqtkATAZ37mZ77Ob//2b38PV1111VVXXXXV/2SU48ePc9VVV1111VVXXXXVVVf95/uHf/iH3/nt3/7t7zk8PNx9hVd4hdd++MMfzsu//MuzWCy4cOECq9UKSUQEpRQigohAEhFBRCCJiEASEYEkIoKIICKICCKCiKCUQimFWiulFLquo+s6+r6n73tmsxmz2Yy+7+n7nq7rKKUQEdzPNsMwcPHiRY6OjgC47777bv34j//4l7n11lv/mquuuuqqq6666n86yvHjx7nqqquuuuqqq6666qqr/mscHh7u/sM//MPv/PZv//b3bG5uHn/sYx/70g972MN4iZd4CW644QaWyyV7e3tEBBFBRBARSCIikEREIImIICKQREQQEUQEpRRKKUQEpRRKKdRa6bqOruvo+56+75nNZsxmM/q+p+s6aq3UWokIJDGOI7u7u9x3331M08R9991363d913d9zNd//de/z+Hh4S5XXXXVVVddddX/BuhBD3oQV1111VVXXXXVVVddddV/j2uuuebB7/iO7/hZr/M6r/PePNPFixf5q7/6K2677TZuv/12SimUUogISilEBKUUIoJSCqUUIoJSCrVWSinUWum6jq7r6Pue2WzGfD5nsViwsbHB5uYmW1tbbG1tsbm5yWKxYDab0fc9ly5dYpom9vb2uN+P/MiPfPaP/uiPfg5XXXXVVVddddX/NuhBD3oQV1111VVXXXXVVVddddV/rzNnzjzodV7ndd77dV7ndd77mmuueTDPtLu7y2233cY//MM/cOeddxIRlFKICEopRASlFEoplFIopVBrpdZKrZW+7+n7ntlsxnw+Z7FYsLGxwebmJltbW2xtbbFYLACotbK3t8cD/ciP/Mhn//Zv//b33Hfffbdy1VVXXXXVVVf9b4Qe9KAHcdVVV1111VVXXXXVVVf9z3DNNdc8+MyZMw9+ndd5nfd6sRd7sdcGuOaaax7MM+3t7XHHHXdw1113EREcHh5yzz33UEqhlEKtlVIKtVa6rqPrOvq+ZzabcezYMebzOdvb2+zs7DCbzai18tzuu+++W3/rt37ru3/0R3/0c7jqqquuuuqqq/63Qw960IO46qqrrrrqqquuuuqqq/7nOXPmzIMk6bVf+7Xf68Vf/MVf+8Ve7MVemxfg4OAAAEkcHh4SEQBsbm4iifl8zgty33333Xr27Nlb//7v//63f/RHf/RzuOqqq6666qqr/i9BD3rQg7jqqquuuuqqq6666qqr/ue75pprHmzbL/7iL/46L/ZiL/Za11xzzYMBXuzFXuy1Ae67775br7nmmgfzQvzDP/zDbwP8/d///W8D/MM//MNv/8M//MPvcNVVV1111VVX/V+FHvSgB3HVVVddddVVV1111VVX/e92zTXXPJhnOnPmzIMBAzp79uytAPfdd9+tXHXVVVddddVV/x+hBz3oQVx11VVXXXXVVVddddVVV1111VVXXXXVVf8nUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/Vfwj7KhtH/FPJgoAAAAASUVORK5CYII=) ```js // Rotate a pipe about an axis with an angle. @@ -115,9 +115,9 @@ sweepSketch = startSketchOn(XY) sweepPath = startSketchOn(XZ) |> startProfileAt([0.05, 0.05], %) |> line(end = [0, 7]) - |> tangentialArc({ offset = 90, radius = 5 }, %) + |> tangentialArc(angle = 90, radius = 5) |> line(end = [-3, 0]) - |> tangentialArc({ offset = -90, radius = 5 }, %) + |> tangentialArc(angle = -90, radius = 5) |> line(end = [0, 7]) // Create a hole for the pipe. @@ -131,7 +131,7 @@ sweepSketch = startSketchOn(XY) |> rotate(axis = [0, 0, 1.0], angle = 90) ``` -![Rendered example of rotate 2](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADatklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV131v9BP/MRPmAd4u7d7O3HVVVddddVVV1111VVXXXXVcyO46qqrrrrqqv9lfuInfsI8l2/6pm96OlddddVVV1111VVXXXXVVVc9NypXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/qwiuuuqqq6666n+Z7/iO73hpnsuHfMiHPISrrrrqqquuuuqqq6666qqrnht60IMexFVXXXXVVVf9b/RjP/Zj5yPi7Id8yIe88X333XcrV1111VVXXXXVVVddddVVVz03gquuuuqqq676X+rcuXN7wKPOnDnzYK666qqrrrrqqquuuuqqq656fgiuuuqqq6666n+5F3uxF3strrrqqquuuuqqq6666qqrrnp+CK666qqrrrrqf6lrrrnmwQAv/uIv/tpcddVVV1111VVXXXXVVVdd9fwQXHXVVVddddX/Qi/2Yi/22jzTi73Yi732i73Yi702V1111VVXXXXVVVddddVVVz03gquuuuqqq676X+iaa655MA/wYi/2Yq/FVVddddVVV1111VVXXXXVVc+N4Kqrrrrqqqv+Fzpz5syDeIAXf/EXf22uuuqqq6666qqrrrrqqquuem4EV1111VVXXfW/0DXXXPNgHuDFXuzFXvvFXuzFXpurrrrqqquuuuqqq6666qqrHojgqquuuuqqq/4XerEXe7HX5rm82Iu92Gtx1VVXXXXVVVddddVVV1111QMRXHXVVVddddX/ES/+4i/+2lx11VVXXXXVVVddddVVV131QARXXXXVVVdd9b/QNddc82Cey4u92Iu99ou92Iu9NlddddVVV1111VVXXXXVVVfdj+Cqq6666qqr/pd5sRd7sdfmBXixF3ux1+Kqq6666qqrrrrqqquuuuqq+xFcddVVV1111f8y11xzzYN5AV78xV/8tbnqqquuuuqqq6666qqrrrrqfgRXXXXVVVdd9b/MmTNnHsQL8GIv9mKv/WIv9mKvzVVXXXXVVVddddVVV1111VUABFddddVVV131v8w111zzYF6IF3uxF3strrrqqquuuuqqq6666qqrrgIguOqqq6666qr/ZV7sxV7stXkhXvzFX/y1ueqqq6666qqrrrrqqquuugqA4Kqrrrrqqqv+j3mxF3ux136xF3ux1+aqq6666qqrrrrqqquuuuoqgquuuuqqq676X+aaa655MP+CF3uxF3strrrqqquuuuqqq6666qqrrkIPetCDuOqqq6666qr/La655poH81y+6Zu+6ekAH/IhH/IQnum+++67lauuuuqqq6666qqrrrrqqquoXHXVVVddddX/Ivfdd9+tPMA111zzYID77rvv1vvuu+9Wrrrqqquuuuqqq6666qqrrnogKlddddVVV131v9h99913K8A111zzYK666qqrrrrqqquuuuqqq656bgRXXXXVVVdd9b/cfffddyvANddc82Cuuuqqq6666qqrrrrqqquueiCCq6666qqrrvpf7uzZs7cCnDlz5sFcddVVV1111VVXXXXVVVdd9UBUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6sIrrrqqquuuup/ufvuu+9WgGuuuebBXHXVVVddddVVV1111VVXXfVAVK666qqrrrrqf7n77rvvVoAzZ848iKuuuuqqq6666qqrrrrqqqseiMpVV1111VVX/S939uzZZwBcc801D+aqq6666qqrrrrqqquuuuqqB6Jy1VVXXXXVVf/L3XfffbcCXHPNNQ/mqquuuuqqq6666qqrrrrqqgeictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqqv+lzt79uytAGfOnHkwV1111VVXXXXVVVddddVVVz0Qlauuuuqqq676P+Kaa655MFddddVVV1111VVXXXXVVVc9EMFVV1111VVX/S9333333cozXXPNNQ/mqquuuuqqq6666qqrrrrqqvsRXHXVVVddddX/Af/wD//w2wBnzpx5MFddddVVV1111VVXXXXVVVfdj8pVV1111VVXXXXVVVddddVVV1111VVXXfV/FcFVV1111VVX/R9w33333QpwzTXXPJirrrrqqquuuuqqq6666qqr7kflqquuuuqqq/4PuO+++24FOHPmzIO46qqrrnoRXHPNNQ8GOHPmzIN5pmuuuebBPB9nzpx5EM/H2bNnn8ELcN99993KA5w9e/ZWgPvuu+9Wrrrqqquuuuqqq/7rULnqqquuuuqqq6666qr/xa655poHA5w5c+bB11xzzYPPnDnzIIBrrrnmwddcc82DAc6cOfPga6655sH8K+zv7wOwt7fHi2JnZ4ft7W1eVPfdd9+tPNPZs2dvBbjvvvtuBbjvvvtuPXv27DMA7rvvvlvPnj1763333XcrV1111VVXXXXVVf96VK666qqrrrrq/4CzZ88+A+DFX/zFX/tHf/RHP4errrrq/4xrrrnmwQAv9mIv9tpnzpx5EMCLv/iLv/aZM2cefM011zyY53LXXXexv7/P3t4eR0dHAPz93/89+/v7ANhmf38fgP39fV6Y7e1t/i329/d5btvb29xve3sb4ME7Ozs804O3t7e5/vrrAXjkIx/JjTfeyHO77777bgU4e/bsrffdd9+t9913361nz559xn333Xfr2bNnb73vvvtu5aqrrrrqqquuuuo5Ubnqqquuuuqq/wPuu+++W7nqqqv+17vmmmsefObMmQe/2Iu92Gu9+Iu/+Gu/2Iu92GvzAHfddRf7+/vs7e3x93//9+zv77O/v8/+/j4vyPb2Ntvb22xvb7O9vc39dnZ22N7eBmB7exuA7e1t/qPt7+9zv729PQD29/cB2N/fZ39/H4A777wTgLvuuovntr29DcD29vaDd3Z22N7efvD111/PIx/5SG688Ubud999990K8A//8A+/DfAP//APv3Pffffd+g//8A+/zVVXXXXVVVdd9f8Vlauuuuqqq676P+Ds2bO3Apw5c+bBXHXVVf9rXHPNNQ9+7dd+7fcCeKd3eqfP5pnuuusu7rrrLv78z/+cu+66i7vuuosXZnt7mxtuuIHt7W12dnbY3t7mhhtu4IH29/cB2N/fZ39/n0c96lH8S9brNQCSkARA13UAtNaQxPMTEdxve3ub+21vb3O/Jz7xidx4440AbG9vs729zf329/cB2N/fZ39/n729Pfb399nf3+eJT3wi97PN/ba3t9ne3n7wzs4ON9xww3tvb2/zOq/zOu8NcN99990K8A//8A+//Q//8A+/c9999936D//wD7/NVVddddVVV131/wGVq6666qqrrrrqqquu+i90zTXXPPi1X/u13+t1Xud13vuaa655MMCf//mf8+d//uc88YlPZH9/nxdme3ubG264ge3tbW644QZuuOEGAPb399nf3+euu+7iUY96FPc7ODjg4OCAg4MDDg8PkYQk/viP/5jlcokkVqsVpRTW6zWlFGqtdF1H13X0fU/f93RdR9/3nDhxglOnTjGOI8vlkohAErbJTFprTNPEOI6M44htpmliGAYigtYaXdfRWuPw8JD5fM7FixdZrVYAnDlzhu3tbQC2t7d54hOfyI033sj29jYA29vb7O/vs7+/z/7+PnfeeSf7+/vcddddHBwccPfdd/PEJz6R+21vb7O9vf3g7e1tbrzxxvd+ndd5nfcGuO+++249e/bsrX//93//2//wD//wO//wD//w21x11VVXXXXVVf8XoQc96EFcddVVV1111f8FP/ETP2GAt3u7txNXXXXV/zjXXHPNg1/7tV/7vd7pnd7ps/f393niE5/Ik570JPb397mfbZ6f7e1tHvWoR3HDDTdwww03sL+/z/7+PjfccAMA+/v77O/vc9dddyGJe+65h4ODAw4PD5GEJCQREUgiIpBERBARlFIopVBKoZRCrZWu6+i6jr7v6bqOvu/p+54TJ05w6tQpVqsVR0dHRASSAMhMWmtM08Q4jgzDwDiODMPAMAyM48g4jkzTxDRNTNNEa43WGplJa43MZGNjg8xkY2ODzc1Nrr32WmyztbXFddddx/2e+MQnsr29zQ033MD+/j77+/vceeed3HXXXdx11128INvb22xvb3PDDTdw4403csMNN3Dffffd+g//8A+//Q//8A+/81u/9VvfzVVXXXXVVVdd9X8FetCDHsRVV1111VVX/V/wTd/0TU+/5pprHvwhH/IhD7nvvvtu5aqrrvof4ZprrnnwO77jO37WNddc8+DlcvnaT3rSk9jf3+dFsb29zcu93MvxqEc9iv39fba3twHY29vj8Y9/PHfddRd33XUXEYEkJCGJiEASkpCEJCQREUgiIpBERBARlFIopVBKoZRCrZWu6+i6jr7v6bqOvu/p+54TJ05w6tQpVqsVR0dHRASSsE1m0lpjmibGcWQcR4ZhYBgGxnFkHEfGcWQcR6ZporVGa43WGq01MpPMJDOxTWZiG9tkJraxzebmJpubm2xtbXH99dezvb3NDTfcAMBdd93FDTfcwP7+PnfddRd33XUXT3ziE7mfbZ7b9vY2N9xwAzfeeCOPetSjuO+++279h3/4h9/+rd/6re/5h3/4h9/mqquuuuqqq67634zKVVddddVVV/0fcfbs2VuvueaaB585c+bB9913361cddVV/+2uueaaB3/4h3/4d504ceK1/+Iv/oK77rqLF9WjHvUoXvu1X5u77roLgL/5m79hf3+fxz/+8UQEEUFEIIn/SqUUAFpr3M82D2QbANvczza2sc39bGObf4ltHmh/f5+9vT1s88QnPpHMZGtri+uvv54bb7yRzOSmm27iUY96FI961KN41KMexZ//+Z9z1113IYnndnBwwJOe9CSe9KQn8ed//ufccMMND37Uox713q/zOq/z3j/yIz/y2b/927/9Pffdd9+tXHXVVVddddVV/xtRueqqq6666qqrrrrqqv8k7/iO7/hZt9xyy2v/0A/9EACSeFFcf/31vPZrvza//du/jSS++7u/m1orEUEpBUn8T2Ab20jCNraxDYBtAGxjmxfGNs/NNv8a+/v7XLp0icc//vFkJltbWzzmMY/hpptu4pZbbuF1Xud1APjZn/1Z9vf3eUH29/d54hOfyBOf+ES2t7d5+Zd/+c9+ndd5nff+0R/90c/5rd/6re/mqquuuuqqq67634bgqquuuuqqq/6PuO+++24FuOaaax7MVVdd9T/Ci73Yi702/wY33HADAOfPn+d3fud3+J/ONrYBsI1tbGOb+9nGNgC2sc2LwjYPZJsHss3zs7e3xx/+4R/ywz/8w3zjN34jFy5c4IlPfCKv8zqvw4033ogkJCEJSUhCEpKQBMD+/j6/9Vu/xW233fbgD//wD/+uF3uxF3ttrrrqqquuuuqq/20Irrrqqquuuur/iPvuu+9WgDNnzjyIq6666n+Ea6655sHb29vccMMNSEISkpCEJCQhCUlIQhKSePKTnwzA673e6/HfzTYPVGsFoLUGgG3uZ5vnZhvb3M82L4htbPPvYZvntru7y8/8zM+wt7fH9vY229vb/EskIQlJ/MVf/AW//du/zYd/+Id/1zXXXPNgrrrqqquuuuqq/00Irrrqqquuuur/iLNnzz4D4JprrnkwV1111f8In/mZn/k6d999N6/1Wq/Fy77sy/Ki2t/f54d/+IcppfCRH/mRvMZrvAb/E9jmgWwDYBvb2MY2trGNbWxzP9s8kG1sA2Cbf4ltXhDb3M82tgGwDcDu7i4XL15ke3ubra0t/rWuv/56pml68JkzZx7MVVddddVVV131vwmVq6666qqrrvo/4r777rsV4JprrnkwV1111f8IZ8+evfVv//ZvOX36NC/3ci/HIx/5SH7nd36Hu+++m3/J/v4+v/ALv8AjHvEIXuM1XoOXfMmX5Pbbb+fxj388d911F/9T2EYSD2QbANsA2MY2ALaxjW3uZ5sHsg2AbV4Y27wojh07xou/+IvzWq/1WjzpSU/iL//yL5HEi2p7e5tHPepRPOlJT+Kqq6666qqrrvpfh8pVV1111VVXXXXVVVf9J7nnnnv45V/+Zd78zd8cgLvvvps3f/M3Z39/nyc/+ck86UlP4uDggBfk4OCAv/qrv+LJT34y119/PY985CN5h3d4B/b29rjzzju58847OTg44O677+a/Sq0VgNYatpGEbWxjG9sA2AbANv8RbPOvsbOzw2Mf+1i2t7d5iZd4Cfb39/m5n/s57r77bv41Xu7lXo6Xe7mX46677uLuu+/+7X/4h3/4ba666qqrrrrqqv9NqFx11VVXXXXV/xFnz569FeDMmTMP5qqrrvof5Td+4zf4u7/7O172ZV+Wa6+9lmPHjnH99dfzsi/7suzv7/PkJz+Zu+++m7vvvpvn5+DggCc/+ck8+clPZmtri+uvv57rr7+eF3uxF+P6669nf3+f/f199vf3ufvuuzk8POSee+7hP5JtHsg2z49tbANgGwDb2MY2/1Fscz/bbG9vs729zQ033MCNN97ITTfdxP7+Pk960pP4+Z//ee6++24AJPHC2GZ7e5tHPvKRPPKRj2R7e5u/+Iu/IDP5xm/8xs/hqquuuuqqq67634bKVVddddVVV/0fcd99990KcM011zyYq6666n8MSQDs7u7yu7/7u/z93/89D37wg7nlllu4/vrr2d7e5vrrr+dlX/Zl2d/f5+677+buu+/m4OCAu+++m+d2cHDAk5/8ZJ785CcDsLW1xfb2NltbW1x//fW89mu/Nvc7ODjg4OCAg4MDDg4OODo64vDwkKOjI46OjviPYBsA29jmfrYBsM0D2cY2ALaxzf1scz/b3M82AFtbW9hmc3OT66+/HtvccMMN3HDDDdzv7rvv5q677uKv//qvufvuu3lRbW9v84hHPIIbbriB66+/nv39ff7yL/+Sl3zJl+TChQv84i/+Ipl5K1ddddVVV1111f82VK666qqrrrrq/5D77rvv1muuuebB11xzzYPvu+++W7nqqqv+W0niuV26dIm///u/53GPexx//Md/zC233MLNN99MZnLjjTdyzz338MhHPpLrr78egIODA+6++27uvvtuDg4O2N/f5+DggPsdHh5yeHgIwFOe8hR+7/d+j62tLQCuv/56AK6//nquvfZarr/+eh7o8PAQgKOjI5bLJZJYrVYMw0AphWmaKKXQdR2ZSdd11FoBaK1hG0k8kG1sYxvbANjGNra533w+JzNprTGfz8lMNjY2yEw2NzexzebmJpubm2xtbbG1tcUD7e/vc/fdd3PPPffwV3/1V9x99908N0nY5vnZ3t7mEY94BAAv93IvB8D+/j5PetKTuP7662mtcfHiRb7iK76CYRi46qqrrrrqqqv+16Jy1VVXXXXVVf+HnD179tZrrrnmwWfOnHnwfffddytXXXXV/2h7e3s87nGP4wlPeAIRwc7ODseOHePRj340trnhhhvY2toC4BGPeATXX389AAcHBwDcfffd7O/vc3BwwMHBAfv7+xwcHHBwcADAk5/8ZACe/OQn80BbW1tsb2+ztbUFwNbWFtvb2wBsbW1x/fXX8y85c+YM92ut8UC2sQ1A13X8a919993s7+9z6dIlLl26xP7+PgcHBwDcfffd/Gtsb2+zvb3N9ddfz9bWFtvb21x//fUA7O/v8+QnPxmAS5cucfvtt7NcLvnCL/xCWmtM04Rt7peZt3LVVVddddVVV/1vQ+Wqq6666qqrrrrqqqv+k0jiX2N/f5/Dw0PuvvtuJHHs2DEAbrjhBq6//nruuecerrvuOgC2trZ4xCMewd1338329jZbW1sAHBwcALC/v8/BwQEAd999NwAHBwcA7O/vc/fdd/OvsbW1xQNtb2/zb7W/v8/9Dg4OeFHZ5oG2trYA2N7e5vrrrwdga2uL7e1trr/+eu63v78PwPb2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ILZ5INv8S2zzwtjmudnm+bENgG2uuuqqq6666qr/Mwiuuuqqq6666v+J++6771aAF3uxF3ttrrrqqv/TbPPvZZsHso1tbHM/2wDYBsA297MNgG3+I9jmBbGNbR7INrZ5INs8N9s8kG0AMvNWrrrqqquuuuqq/wsIrrrqqquuuur/ibNnz97KVVdd9V9GEv9RbPMfwTYPZJvnZpvnZpsHso1tAGwDYJv72QbANgC2AbDN/WxjG9vY5n62AbDNv5ZtbGObf4ltbPP82Oaqq6666qqrrvo/g+Cqq6666qqr/p+47777bgW45pprHsxVV131P4pt/rPY5kVhm+dmG9s8kG1eENvY5vmxzf1s89xs84LY5r/SNE23ctVVV1111VVX/V9B5aqrrrrqqqv+n7jvvvtuBThz5syDuOqqq/7XsY0k/qPZ5rnZ5rnZBkASALYBsI1tnpttAGzzQLb572CbF8Q2trENQERw1VVXXXXVVVf9n0Fw1VVXXXXVVVddddVV/0vY5r+DbR7INs/NNraxjW0AbANgGwDbvDC2AbDN/WzzH8k2L4xt1uv1rVx11VVXXXXVVf9XEFx11VVXXXXV/xNnz559BsA111zzYK666qr/tWxjm38t2/xLbHM/29jGNg9km/vZxja2eW62AbANgG0eyDa2sc2/hm3+s03TdCtXXXXVVVddddX/FVSuuuqqq6666v+J++6771aAa6655sFcddVV/+lsP5j/RLYBkMTzYxtJvChs8y+xDYAkbPPcbGMb29jmBbGNbR7INs+PbR7INgC2+dewzQtim/vZBsA2V1111VVXXXXV/xkEV1111VVXXfX/xNmzZ28FOHPmzIO56qqr/seyzb+Gbf4j2eZFZRsA2zw/tgGwDYBt/iW2eVHY5t/KNs/NNlddddVVV1111f9JBFddddVVV1111VVXXXXVc7DNA9nmfrYBsA2AbQBscz/b2AbANi8K2zyQbR7INs/NNrZ5YWzz/NjGNgC2uZ9tpmm6lauuuuqqq6666v8Kgquuuuqqq676f+K+++67FeCaa655MFddddV/CUlI4j+bbf69bPNAtrGNbQBsYxsA2zyQbQBsY5v72eZ+trmfbWxjmxeFbV4Y27wobPPC2AZgmqZncNVVV1111VVX/V9BcNVVV1111VX/T/zET/yEeaaf+ImfsCSuuuqq/zyS+J/K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9Z/KNs+PbWxzP9vY5rnZ5l9im+dmm3+JbZ6bbe5nmweyzQPZ5rnZ5gWxzQtim+fHNvezzQPZ5l9im6uuuuqqq6666v8kgquuuuqqq6666gX6rd/6re/+h3/4h9++5pprHvzhH/7h38VVV13138Y2tnlhbPOisM2/xDa2sc1zsw2AbWxzP9vczzbPj20eyDYPZJt/K9vY5t9imqZbueqqq6666qqr/i8iuOqqq6666qqrXqiv//qvf5/77rvv1hd7sRd77Rd7sRd7ba666qoXSdd1D+ZFYJv/SLb5t7ANgG2eH9vYxjbPj20AbHM/29zPNv8S27wobPPvZRvb2MY20zQ9g6uuuuqqq6666v8igquuuuqqq6666oW67777bv2t3/qt777mmmse/OEf/uHfxVVXXfU/nm0eyDbPj21eFLZ5bra5n20eyDb3s839bANgGwDb/E9hm6uuuuqqq6666v8kgquuuuqqq6666l/027/9299z33333XrNNdc8+B3f8R0/i6uuuur/FNs8kG1eGNsA2MY297PN/WxzP9v8S2zz/NjGNs/NNi8K2wDY5qqrrrrqqquu+n+J4Kqrrrrqqquu+hfdd999t37913/9+wC8zuu8zntfc801D+aqq656oWzzv41t7mcb29gGwDYAtnl+bANgmxfGNi8q29zPNv+ZWmu3ctVVV1111VVX/V9EcNVVV1111VVXvUj+4R/+4bd/5Ed+5LOvueaaB3/4h3/4d3HVVVf9j2ab58c2ALb517LN/WxzP9s8P7a5n20eyDb3s81zs82/xDYvjG0eyDYAtrmfbWzTWruVq6666qqrrrrq/yKCq6666qqrrrrqRfbbv/3b33Pffffd+mIv9mKv/Y7v+I6fxVVXXfW/hm2eH9sA2AbANs/NNs+PbWxzP9sA2OZ+tnlhbPPcbPOfxTb3s81VV1111VVXXfV/HsFVV1111VVXXfUiu++++279+q//+vcBeJ3XeZ33frEXe7HX5qqrrvo/xzb3sw2Abe5nm+dmmweyzXOzDYBtXhDbvCC2eW62+bewzf1s01q7lauuuuqqq6666v8igquuuuqqq6666l/lH/7hH377R37kRz77mmuuefCHf/iHfxdXXXXVfxjb/Eeyzb+VbWzzQLaxDYBt7meb+9nmudnm+bHNA9nmP4pt7mebq6666qqrrrrq/y2C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EraRxH8USdxPEgCSkEREEBFEBBFBRFBKoZRCKYVaK13X0XUdXdfRdR21Vmqt1FqJCCSRmQBkJhGBJCQBIInnZhsA2wDYBsA2586d+26uuuqqq6666qqrnj8qV1111VVXXXXVVVdd9R+k73vm8zmtNWxjG9s8N9tIwjYAknhBbAMgCdsASMI2krCNJP6jSAJAEpKQhCQkIQlJSCIiKKUQEUQEpRRqrdRaqbVSa6XWSq2VWiu1VkopRAQAkrBNRCAJSUhCEg9kG9sA2AbANgC2ueeee76bq6666qqrrrrqqheM4Kqrrrrqqquuuuqqq/4DSAJgNpuRmdjGNraxjW1sYxsA29gGwDa2sY1tbGMb29zPNvezDYBtXhBJPD+SeH4kIQkASTyQJCQhCUlEBJKICEoplFIopVBKodZKrZVaK7VWaq3UWimlUGullEIphYggIpBERCAJSTyQbQBsYxsA29jGNra57bbbPoerrrrqqquuuuqqF4zgqquuuuqqq6666qqr/gMdP34c29jmfraxjW1sY5v72cY2z49tbGMbANvYBsA2/1aSkIQkJCGJ5yYJSUhCEpKQREQgiYggIogISimUUqi1Umul1kqtlVortVZKKZRSiAhKKUQEEUFEIAkASdzPNraxjW3uZ5v72ebuu+/+7mEYbuWqq6666qqrrrrqBaNy1VVXXXXVVVddddVV/06SAJBE3/fMZjOmaSIziQhs80C2sQ2AJABs89wkAWAbAEkA2EYS/xJJ/GtJ4oEkIQlJSEISEUFEEBGUUiilUGullEKtlVortVZqrZRSKKVQSqGUgiRsYxtJSEISALaxjW1sYxvb2MY2trGNbWxz1113fQ9XXXXVVVddddVVLxzBVVddddVVV1111VVX/StJ4oXZ2trCNraxjW1sYxvbANgGwDa2sc1zs41t7mcb2/xrSOJFJQkASUhCEveTREQgiYggIogIIoJSCqUUaq2UUiilUGullEIphVIKEYEkJCEJSQBIAsA2ALaxjW1sYxvb2MY2trHN3Xff/d0HBwe/zVVXXXXVVVddddULR3DVVVddddVVV1111VX/RpJ4fra2tmitYZvMxDa2sY1tbGMb29jmfraxjW1scz/b2AbANv8ZJAEgiftJQhKSkIQkIgJJRAQRQSmFiKCUQimFWiu1VkoplFIopRARRAQRgSQkIQkA29jGNpmJbWxjG9vYxja2sY1tbHPXXXd9D1ddddVVV1111VX/MoKrrrrqqquuuuqqq676D9b3PZubm2QmtrGNbWxjG9sA2AbANraxjW1sYxvb2AbANraRxL+WJF4YSTyQJCQBIAlJSEISkogIIoKIICIopVBKoZRCKYVSCqUUSilEBBGBJCQhiedmG9vYxjaZSWaSmWQmmUlmYhvbXLhw4bf39vZ+m6uuuuqqq6666qp/GcFVV1111VVXXXXVVVf9J7jmmmvITDIT29jGNraxjW1sYxvb2Oa52cY2tvn3ksRzk4Qk7icJSQBIQhKSkIQkJCGJiEASpRRKKZRSiAhKKUQEEUFEEBFIQhKSkMT9bGMb29gmM8lMMpPMJDOxjW1sYxvb2ObJT37y53DVVVddddVVV131oiG46qqrrrrqqquuuuqqfyXbANgGwDbPre97NjY2yEwyE9vYxja2sQ2AbWwDYBvb2MY2/9EkIQlJSOKBJHE/SQBIQhKSkIQkIgJJRASSiAgiglIKEUEphVIKEYEkIgJJSOK52SYzyUwyk8yktUZmkplkJplJZmKbzOSOO+74nv39/d/mqquuuuqqq6666kVDcNVVV1111VVXXXXVVf9KknhRXHPNNWQmmUlmYhvb2MY2trENgG1sYxvb2MY2tvnPJgkASdxPEveThCQiAklEBBFBRBARRAQRQSmFiCAiiAgiAklI4oFsk5nYJjNprdFao7VGa43WGq01MpPMJDPJTGzzD//wD+/NVVddddVVV1111YuO4Kqrrrrqqquuuuqqq/6Vuq57MC+Cvu85fvw4mUlmkpnYxja2sY1tbGMb29jGNrZ5bpL4jyaJB5KEJAAkIQlJSEISEYEkIoKIICKICCKCiCAikIQkJPFAtrGNbWyTmbTWaK3RWqO1RmuNzCQzaa2RmWQmmckf//Efvw5XXXXVVVddddVV/zoEV1111VVXXXXVVVdd9Z/o+PHjRASZiW1sYxvb2MY2trGNbf6tJPGvJYn7SeJ+kpCEJCQhCUlIQhIRgSQigoggIogIIgJJSEIS97ONbWyTmWQmrTVaa7TWaK3RWmOaJlprTNNEa43MpLVGZnL27Nnfvnjx4m9z1VVXXXXVVVdd9a9DcNVVV1111VVXXXXVVf9KrTWeH9s8t9lsxokTJ2itkZlkJraxjW1sYxvbANjGNveTxAsjCUkASEISkviXSOJ+kgCQhCQAJAEgCUlIQhKSkEREEBFIIiKICCQhCUk8N9vYJjNprdFaY5ompmlimiamaWKaJqZporVGa43WGpkJwF/91V+9D1ddddVVV1111VX/egRXXXXVVVddddVVV131n+zUqVP0fU9rjcwkM8lMMhPb2MY2mQmAJJ6bJJ6bJF4QSUhCEpK4nyQk8dwkcT9JAEhCEgCSkIQkJCEJSUQEkpCEJCRxP9vYJjPJTFprZCatNVprTNPENE1M08Q4jkzTxDRNtNZordFao7XG7/7u777Oer2+lauuuuqqq6666qp/PYKrrrrqqquuuuqqq676L3DjjTciidYamYltbGMb29hGEveTxAsjiX8NSUjiuUnifpKQBIAkJAEgCUlIQhKSkIQkJCGJ52Yb22QmtslMMpPWGq01pmlimibGcWQYBsZxZBxHpmlimiamaaK1xj333PPb58+f/22uuuqqq6666qqr/m0Irrrqqquuuuqqq6666j+Abe5nm+c2m824/vrryUxaa2QmmYltbCOJ/2qSAJDEA0nifpKQhCQkIQlJSEISkpCEJO5nG9vYJjNprdFao7XGNE1M08Q4jozjyDiOjOPIOI5M08Q4jozjyDRN3HXXXb/9B3/wB6/DVVddddVVV1111b8dwVVXXXXVVVddddVVV/0X2d7e5uTJk7TWyExs828hiX8vSTyQJCQhCQBJSEISkpCEJCQhCUlI4rnZxja2yUwyk9YarTWmaWKaJoZhYBxHhmFgGAbGcWQcR4ZhYJompmni0qVLt/7u7/7u63DVVVddddVVV13170Plqquuuuqqq6666qqr/gudOnWK9XrNMAxIAkASz48kACRxP0n8e0nifpJ4bpIAkMQDSUISkpAEgCTuZxvbZCaZSWsNAEnYprXGOI6M48h6vWYYBoZhYL1eMwwD4zgyjiPjOPI7v/M778NVV1111VVXXXXVvx/BVVddddVVV1111VVX/ReqtXLjjTeysbHBc5OEJP6zSEIS95MEgCQkIQlJAEgCQBKSkASAJCQBIIn72cY2mUlm0lqjtcY0TYzjyDiOjOPIOI4Mw8AwDKzXa9brNcMwMAwDwzAwDAM/+7M/+zp7e3u/zVVXXXXVVVddddW/H8FVV1111VVXXXXVVVf9F6u1ct1119F1HZIAkMT9JHE/SdxPEs+PJCQhCUlIQhKSkIQkJPFAknhBJCEJSUhCEpKQxHOzjW1sk5lkJq01pmlimiamaWIcR8ZxZBgG1us16/Wa1WrFarVivV6zXq9Zr9es12t+8Rd/8XX29vZ+m6uuuuqqq6666qr/GFSuuuqqq6666qqrrrrqX0kS/161Vq6//nruu+8+bPPcJPEvkYQk/rUkcT9JPJAkXlS2AbBNZpKZtNZorSEJ20QEtslMxnFkvV6zXq9Zr9es12tWqxWr1Qrb/NzP/dzr3Hfffb/NVVddddVVV1111X8cKlddddVVV1111VVXXfWvZJv/CLVWrr32Ws6dO4dtJCGJ+0nifpJ4IEn8W0jifpIAkIQkJAEgCUlIQhKSAJCEJB7INrbJTDKT1hrTNAGQmUgiM2mtMY4jwzCwWq1YLpcsl0tWqxWtNX70R3/0de67777f5qqrrrrqqquuuuo/FpWrrrrqqquuuuqqq676b1Rr5ZprrmF3d5dxHAGQxANJ4n6SkMS/liQkcT9JAEjigSTx/EjiudkmM8lMMpPWGtM0IQnbSAIgM5mmiXEcWa/XLJdLlsslq9WK++6779af+ZmfeZ9Lly79NlddddVVV1111VX/8ahcddVVV1111VVXXXXVfwLbSOIFsY0kAEopnDhxguVyydHREQCSAJDE/STxopCEJCQhCUm8MJKQhCQAJAEgiRfENraxTWbSWmOaJiQB0FpDErbJTKZpYr1es16vWa1WHB0dce+99976vd/7vQ/hqquuuuqqq6666j8Plauuuuqqq6666qqrrvpXyMwH8wC2+Y8QEWxtbQGwWq0AkMT9JPHcJCEJSUhCEpJ4YSQhCQBJvCCSAJCEJO5nG9vYJjPJTFprtNaYpgmAzCQiAMhMWmuM48gwDKxWK5bLJX/+53/+3b/1W7/1Plx11VVXXXXVVVf956Jy1VVXXXXVVVddddVV/4Nsb2+ztbXFpUuXyEwkIYkHkoQk/rUkcT9JAEjigSTxL7GNbWzTWqO1xjRNANimtYYkbJOZTNPEOI6sVivuu+++W3/kR37kffb29n6bq6666qqrrrrqqv98VK666qqrrrrqqquuuuq/mG0k8YJEBCdPnmS1WnF0dASAJCQhiX8NSUhCEveTBIAkACQhCUkASEISkngg29jGNplJZpKZtNaQBEBmIgkA27TWGIaBcRx50pOe9Ns/+ZM/+TpcddVVV1111VVX/dehctVVV1111VVXXXXVVf+BbCOJf6+IYGtri83NTfb39xnHkQeShCQkIQlJSEISkpCEJJ6bJB5IEg8kiRfGNraxTWuNiEAStslMIgIA27TWmKaJs2fP3vpjP/Zj77O3t/fbXHXVVVddddVVV/3XonLVVVddddVVV1111VX/SWwjiQeyjSQeyDaSALCNJO5XSuH48eMMw8DR0RGZiST+NSQhCUncTxL3k4QkJPGC2MY2tslMMpPMZJomAGzTWkMStslMLly4cOtf//Vff/ef//mffw5XXXXVVVddddVV/z2oXHXVVVddddVVV1111f9AtrmfJBaLBYvFgtVqxWq1IjORhCQkIQlJSEISkpCEJB5IEpIAkMTzI4kHsg2AbWxjm9YakgCwTWuN+128ePHWv//7v//uP//zP/8crrrqqquuuuqqq/57Ubnqqquuuuqqq6666qr/RLaRBIBtJPFvFRFsbW2xvb3NMAwsl0vGcUQSknhBJCEJSdxPEgCSkMT9JPH82MY2tslMJDFNE5lJRACwt7d365/+6Z9+zpOe9KTv5qqrrrrqqquuuup/BipXXXXVVVddddVVV131n8w2AJL417DN8yOJxWLB5uYmmcl6vWYYBtbrNZKQhCQkIYn7SUISkgCQxP0kIYnnxza2sU1mcr/MJDM5PDzkd37nd97nvvvu+26uuuqqq6666qqr/mehctVVV1111VVXXXXVVf9KkviPYhtJvCC2kcQLUmtlNpsREWQmq9WKYRhYLpdIQhKSkASAJCQhCUlIQhLPTRIAtgGwTWYCkJmsViv29/eRRGuN1Wp1K1ddddVVV1111VX/81C56qqrrrrqqquuuuqq/yFsI4l/q67rWCwW1FrJTDITSSyXS6ZpYn9/H0lIQhKSkIQkJCEJSUjifqUUIoJpmgCotdJaIzOptdJaA2C9Xt/KVVddddVVV1111f88VK666qqrrrrqqquuuur/AElI4n5939N1HX3f0/c9fd/T9z3TNNF1Hev1mojg8PAQgMxkPp/TWmMcRzY2NhiGgWEYGMeRaZqYpolpmnggSVx11VVXXXXVVVf9D0blqquuuuqqq6666qqr/pvYRhL/HpJ4fiQhCQBJSEISm5ubdF3HsWPHiAgkYZvWGtM0MQwDwzAwDAPPjyQkcdVVV1111VVXXfW/BJWrrrrqqquuuuqqq676P0wS95OEJCQhCUlIAkASAJKQxP0k8aJYr9e3ctVVV1111VVXXfU/D8FVV1111VVXXXXVVVf9K9h+MP+DSUISAJIAkIQkJAEgCUlIQhL3k8T9JCEJAEk8P5IAkMRVV1111VVXXXXV/1AEV1111VVXXXXVVVdd9R/MNv9atvmPJAkASQBIAkASkgCQBIAkJCEJSUjiX8M2V1111VVXXXXVVf9DUbnqqquuuuqqq6666qr/ILaRxIvCNpL495DEi0ISAJKQBIAkJHE/SQBIAkASDyQJSTw/y+XyVq666qqrrrrqqqv+Z6Jy1VVXXXXVVVddddVV/8tJAkASAJIAkIQkACQhCUlIQhKSuJ8kJAEgCQBJSOL5kcRVV1111VVXXXXV/wJUrrrqqquuuuqqq6666v8ASQBIAkAS95OEJAAkIQlJAEjifpKQBIAk7ieJF2a5XN7KVVddddVVV1111f9MBFddddVVV1111VVXXfVfzDYPZJv/DJKQxP0kIQlJSEISkgCQxP0k8YJIQhJXXXXVVVddddVV/0tQueqqq6666qqrrrrqqn8n2/xXk8SLShKSkASAJCQhCUlIQhKSkMT9JCGJF0YSEcFVV1111VVXXXXV/1AEV1111VVXXXXVVVdd9Z/ANv9dJCEJAElIQhKSkIQkJCEJSUhCEpIAkIQkHkgSL8jh4eGtXHXVVVddddVVV/3PRHDVVVddddVVV1111VX/AWzzorDNfxZJPJAknpskJCEJSQBI4n6SeG6SAJDEA0niqquuuuqqq6666n84KlddddVVV1111VVXXfXfyDaSALDNv0QSknhBJPFAkpCEJCQhCUlIQhL3k4QkJCEJSUjiqquuuuqqq6666n85KlddddVVV1111VVXXfW/mCSemyQkIYn7SUISkgCQhCTuJwlJPDdJ/EuWy+WtXHXVVVddddVVV/3PRHDVVVddddVVV1111VX/SWzzQLb595DECyKJ50cSkgCQhCQkASAJSQBIAkASknhBJAEgiauuuuqqq6666qr/BahcddVVV1111VVXXXXVfwHbSOI/gySemyQkASAJSUgCQBKSkASAJAAkcT9JSOJ+krifJB5otVo9g6uuuuqqq6666qr/mahcddVVV1111VVXXXXVv4LtB/OvYBsASfx7SOJfIglJPJAkACQBIAlJSEISAJKQhCQk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HvTghz3sYbzCK7wCq9WKu+++G0kASEISAJIAkIQkIoKIICKICCQREUQEEUFEEBFEBKUUSilEBKUUSil0XUetla7rmM1mzGYz+r6n73v6vqfWSq2ViEAStrHNNE2M40hrjY2NDebzOQBf//Vf/z7f9V3f9TFcddVVV1111VVX/e9EOX78OFddddVVV1111VVXXfUf5fDwcPcf/uEffufWW2/9mwc/+MEvffr06eMv9mIvxsu//MuzWCy4ePEiq9UKSQBIAkASkogIIoKIICKICCQREUQEEUFEEBFEBBFBKYVSCqUUaq10XUff9/R9T9/3zGYzZrMZfd/TdR21ViKC+43jyNHREev1mogA4L777rv14z/+41/mH/7hH36bq6666qqrrrrqqv+9KMePH+eqq6666qqrrrrqqqv+Ix0eHu7eeuutf/2nf/qnP33rrbf+zebm5vFbbrnlwQ996EN5sRd7MR772McCcPfddyMJAElIIiKICCKCiCAikEREEBFEBBFBRBARRASlFEop1FqptdJ1HV3XMZvNmM1mzGYzZrMZXdfRdR2lFDKTcRy5dOkSu7u7TNMEwH333Xfrd33Xd33M13/917/P4eHhLlddddVVV1111VX/u6EHPehBXHXVVVddddVVV1111X+2F3uxF3vt13md13mv13md13lvHuDixYs8/elP56/+6q94xjOeQa2VUgqlFEoplFKICEoplFIopVBKoZRCrZVaK13X0fc9fd8zn8+Zz+dsbm6yubnJ9vY2W1tbbG1tsVgssM00TazXax7oH/7hH377t37rt77nt37rt76bq6666qqrrrrqqv870IMe9CCuuuqqq6666qqrrrrqv8qZM2cedM011zzkdV7ndd7rdV7ndd6b57K7u8ttt92GJO644w729/c5PDzk4OCAUgqlFEop1FoppdB1HbVW+r6n73uOHz/OfD5nZ2eHEydO0Pc9i8WCiOB+9913363XXHPNg++7775bf/RHf/Rzfuu3fuu7ueqqq6666qqrrvq/CT3oQQ/iqquuuuqqq6666qqr/jtcc801Dz5z5syDX+zFXuy1XvzFX/y1X+zFXuy1+Rfs7+8DIAkASUhiY2ODf8l9991362/91m99N8CP/uiPfg5XXXXVVVddddVV//ehBz3oQVx11VVXXXXVVVddddX/FNdcc82DX+zFXuy1Ab/Yi73Ya19zzTUPPnPmzIOvueaaB/MiuO+++24FOHv27K1///d//9sA//AP//A7//AP//DbXHXVVVddddVVV/3/gx70oAdx1VVXXXXVVVddddVV/1tcc801D+YBbFuS7rvvvlu56qqrrrrqqquuuuq5oQc96EFcddVVV1111VVXXXXVVVddddVVV1111VX/J1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V/FPwJzwlNW2Xuf7QAAAABJRU5ErkJggg==) +![Rendered example of rotate 2](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAC6/UlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVdd9d/ummuueTDAmTNnHgxwzTXXPBjgzJkzD+KZrrnmmgcDXHPNNQ++7777br3mmmsefObMmQfzANdcc82D+Xe67777buW5nD179lae6b777ruVZ7rvvvtuBTh79uwzAO67775bAc6ePXvrfffddytXXXXVVVddddVVV/13Qw960IO46qqrrrrqqquuuuo/xzXXXPNggBd7sRd77TNnzjwI4JprrnnwNddc82CAF3uxF3tt/gVPeMITuN/+/j7329/f5357e3u8IPv7+7ww29vbPD87Ozs8t+3tbQC2t7e536Mf/WhemPvuu+9WgLNnz95633333QrwD//wD78D8A//8A+/DXDffffdylVXXXXVVVddddVV/xnQgx70IK666qqrrrrqqquu+re75pprHnzmzJkHv9iLvdhrAbz4i7/4a585c+bB11xzzYN5Lk984hPZ29sDYH9/n/39fQD29/fZ39/nuW1vb2MbgO3tbXZ2dgDY3t7mftvb29xve3ub52dnZ4fnZ29vj+dnf3+fB9rf32d/f5/77e3tAbC/v8/+/j7PbXt7G4Dt7W0AdnZ22N7eZnt7G4BHP/rRPNB99913K8DZs2dvve+++279h3/4h9+57777bj179uyt9913361cddVVV1111VVXXfVvhR70oAdx1VVXXXXVVVddddWL5pprrnnwa7/2a78XwIu/+Iu/9ou92Iu9Ns+0v7/PXXfdxd7eHvv7++zv77O/v8/+/j7Pz/b2Ntvb22xvbwOwvb3NjTfeCMD29jbb29s80P7+Pvfb398H4IYbbuC/wl133YVtAHZ2dtje3uZ++/v73G9vb4/9/X0A9vf32d/fZ29vj/39ffb393l+tre32d7eZmdnh+3tbba3t9ne3ubGG28E4L777rv17Nmzt9533323/sM//MPv3Hfffbf+wz/8w29z1VVXXXXVVVddddWLAj3oQQ/iqquuuuqqq6666qrn75prrnnwa7/2a7/Xi7/4i7/2i73Yi702wP7+PnfddRf7+/vcdddd3HXXXbww29vbbG9vc8MNNwBwww03cMMNN3C//f199vf3ueGGG3h+Dg8PATg6OmK5XCKJ1WpFRBARjONIrZVSCraptdJ1HbVWuq6jlIIkIoL5fA7AarUiM7FNa41pmhjHkWmaGMeRiKC1RmuN1hpd1zGbzbCNbRaLBbbZ2Nhgc3OT5+euu+5ie3ub7e1tAPb39wG46667ALjzzjvZ39/nrrvu4oFsc7/t7W22t7fZ2dnhhhtuYHt7mxtvvJH77rvv1rNnz95633333fpbv/Vb3/MP//APv81VV1111VVXXXXVVc8PetCDHsRVV1111VVXXXXVVVdcc801D37t137t97rmmmse/Dqv8zrvfd999906TdOD77rrLu666y7uuusu/iXb29s86lGP4oYbbmB7e5vt7W329/fZ39/nhhtu4H77+/tI4u677+bw8BCAe++9F0kcHR1xdHRERBARRAQRQSmFUgqlFGqt1Frpuo6u6+j7nr7v6fuevu/p+56u6+i6jlIKpRQWiwUAy+WS1hqtNaZpYhgGxnFkGAaGYWAYBsZxZBgGpmlimiamaaK1RmuN1hqZSWaSmSwWC2yzsbHBxsYGANdeey222dra4rrrruOB7rrrLm644QYA9vf32d/f58477+Suu+7irrvu4oXZ3t5me3ub7e1tHv3oR3PDDTdw33333foP//APv/0P//APv/Nbv/Vb381VV1111VVXXXXVVfdDD3rQg7jqqquuuuqqq676/+6aa6558Gu/9mu/1zu90zt99v7+Pk984hO5++67ueuuu3h+bPNA29vb3HDDDbz8y78829vb7O/vs729DcDe3h77+/vcddddHB4esr+/zz333IMkJCGJiEASkpBERCCJiCAiiAgiglIKpRRKKdRaqbXSdR1d19H3PX3f0/c9fd/T9z1d11FrpdZKRLCxsQHA0dERmUlrjXEcGceRYRgYhoFxHBmGgWEYGMeRaZqYpolpmmit0VqjtUZmkplkJpmJbTIT29jGNrbJTGyzubmJba6//nquv/56tra2uOGGG7jfXXfdxQ033MD+/j533XUXf/Znf8b+/j7/ku3tbba3t3n0ox/NDTfcwHK5vPUf/uEffvtHf/RHP+e+++67lauuuuqqq6666qr/39CDHvQgrrrqqquuuuqqq/4/e8d3fMfPeqd3eqfP3t/f5y/+4i944hOfyIvq5V7u5XjUox7F9vY2f/7nf87Lv/zLs7e3x+Me9zgA/uzP/gxJRASSkEREIAlJSEISkogIJCGJiEASEUFEEBFEBKUUIoJaK7VWaq10XUfXdXRdR9/39H3PbDaj6zq6rqPrOkoplFLY2NgA4OjoiMxkmiamaWIcR4ZhYBgGhmFgHEeGYWAcR6ZpYhxHWmtM00Rm0lojM8lMMpPMxDaZiW1sY5vMxDa2sY1tbJOZ2MY2m5ub3HDDDdx4441sb29z00038cQnPpFHPepR7O/v8+d//uc88YlP5EWxtbXFDTfcwKMf/WhuuOEGfuu3fuu7f/RHf/Rz7rvvvlu56qqrrrrqqquu+v+JylVXXXXVVVddddX/U9dcc82DP+dzPue3pml68M/93M9x11138a/xFm/xFtxwww38+Z//OY94xCNYrVZ867d+K/v7+0QEEUFE8G9hG0kA2OZ+trmfbQBs89xs8y+xDYBtbPNAtrmfbR7INv+R9vf3ecITnsDjHvc4MpOtrS0e85jHcN111/HkJz+Z13md1+FRj3oUP/uzP8u/5ODggCc96Uk86UlPYnt7m7d8y7d8b4Af/dEf/Zz77rvvVq666qqrrrrqqqv+/6EcP36cq6666qqrrrrqqv+PPumTPumn9vb2jv/Wb/3W8YODAyQhCUlIQhKSkIQkJCEJSbz8y788j3rUo7h48SK33347P/ETP8Edd9zBMAxIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQREUgiIogIIoJSChFBRFBKoZRCKYVSChFBKYWIICKQRN/3AAzDgG0yk8wkM2mtkZm01mitkZlkJplJZpKZ2MY2trGNbWxjGwDb3M82L4ht7mcbANvYZrVacdttt/HEJz6RiODaa6/lzJkzANx11128qIZh4NZbb+XlX/7lX/r1Xu/13voXfuEXvoarrrrqqquuuuqq/38Irrrqqquuuuqqq/6fWiwWD14sFg/m32B7e5v9/X1+4zd+g9/+7d/mv5ptAGzzQLaxjW0AbANgm+dmm+dmG9sA2MY2L4htbHM/27wobPOiuHTpEn/zN3/DT/3UTwFwcHCAJCQhCUlIQhKSkIQkJCEJSRwcHADwD//wD799zTXXPJirrrrqqquuuuqq/38Irrrqqquuuuqqq/4fuuaaax68WCwefP3113PDDTcgCUlIQhKSkIQkJCEJSUhCEn/5l3/JwcEBr/d6r8eDH/xg/iPY5rnZ5kVlm+fHNgC2uZ9t7mcb2/xPdPz4cd7mbd6G/f197rrrLv61tre3ueGGG3jUox713lx11VVXXXXVVVf9/0Q5fvw4V1111VVXXXXVVf/fHB4e7m5tbWH7tV/u5V6Ovu+5++67eVENw8Ddd99NRPCmb/qmvNRLvRTr9ZqzZ88iCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCKCiCAiiAgiglIKpRRKKZRSKKVQSiEiiAhKKUgiIuj7HoBhGMhMMpPMJDNprZGZtNZorZGZZCaZSWaSmdjGNpmJbWxjGwDb3M82L4ht7meb+9nGNtvb27zsy74sb/Zmb8ZrvuZr8g//8A/86q/+KsMwIAlJSEISkpCEJCQhifu93Mu9HG/0Rm/EXXfdxU/+5E++zz/8wz/8NlddddVVV1111VX//1C56qqrrrrqqquu+n/qt3/7t7/n5MmTn91a4+Ve7uV45CMfyZOe9CT+8i//khfF/v4+f/mXf8mTn/xkHvGIR/Bmb/ZmvPqrvzp7e3s87nGP4+DggLvuuovnZhtJ/EexjW0eyDb3sw2Abe5nm/vZxjYAtnlutrHNfwTbPD/b29s8+tGP5sYbb+Smm25if3+fJz3pSTzpSU9if3+fF9X29jaPfOQjeeQjHwnAxYsXufPOO/md3/md3+aqq6666qqrrrrq/ycqV1111VVXXXXVVf9P3XPPPfzqr/4q+/v7vOzLviwPfvCDeeQjH8kjH/lIDg4OeNKTnsTBwQF33303L8zBwQF/9Vd/xZOf/GS2t7e5/vrrecmXfEmuv/569vb22N/fZ39/n7vuuouDgwPuvvtu/rPYxjbPzTbPj22em23+s2xvb2ObRzziEQBcf/313HjjjQDs7+/zpCc9ib/+67/m7rvv5n6SsM0Lsr29zSMf+Uiuv/56brjhBvb399ne3ubixYv86I/+KE984hO56qqrrrrqqquu+n+MylVXXXXVVVddddX/UxFxq23+8i//kr//+7/nZV/2ZXnQgx7ES7zES/DkJz+ZRz7ykVx//fXs7+9z9913c/fdd3NwcMDdd9/N83NwcMDBwQF33303AFtbW2xvb7O1tcX111/P677u63K//f19Dg4OODg4AOCee+7h8PAQSRwdHXF4eMi/xDa2uZ9tHsg2trmfbe5nG9s8kG0eyDa2eSDbvDCbm5vYZmNjg2uvvRaAra0tNjc3uf7663mgJz3pSdxzzz381V/9FXfffTcvjCTut729zSMe8QgAHvnIR7K9vc3+/j5PetKTuOGGG2it8VM/9VP8+Z//OdM0AZCZt3LVVVddddVVV131/xN60IMexFVXXXXVVVddddX/Vw95yEM8n8/p+55SCrVWTpw4wYMe9CBuvvlmHvvYxwLw5Cc/ma2tLa6//noODg7Y39/n4OCAu+66i4ODA+6++25eFFtbWwBsb2+ztbXF9ddfD8D29jbXX389D3R4eAjA4eEhR0dHSGK5XCKJ9XpNRBARjONIrZVaK7bpuo5aK33fU2tFErVWIoKdnR0A9vb2yEymacI20zQxjiPjODJNE8MwUEphmiZaa/R9T2uN+XyObRaLBbbZ2NjANtdccw3PbX9/n4ODA+6++24A7r77bvb399nf3+dFsb29DcAjHvEIAG644Qauv/56APb393nSk57Ey73cy3Hp0iUuXbrEM57xDH7nd36H1hqtNVprTNPEMAzcdttt4qqrrrrqqquuuur/J/SgBz2Iq6666qqrrrrqqv+vHvKQh3g+n9N1HbVWaq1EBKUUIoKI4NixY9x0003ceOON3HjjjWxvbwPw5Cc/ma2tLa6//noADg4O2N/f5+DggP39fQ4ODjg4OGB/f5+DgwNeFFtbWwBsb2+ztbXF/a6//nrut7W1BcD111/Pf6W7774bgP39fQAODg4A2N/f5+DgAID9/X0ODg54UW1tbbG9vc3W1hbb29sAXH/99Vx//fXcb39/n7vvvptHPvKRAOzt7bG3t8ftt9/O7bffzjOe8Qwyk8yktUZrjWmayEymaWIYBm677TZx1VVXXXXVVVdd9f8TetCDHsRVV1111VVXXXXV/1cPf/jD3XUdXddRa6WUQimFiKCUQkQgiYhAEhHBzs4O29vb7OzssL29zfXXX8/111/PA919991sb2+ztbXF/Q4ODtjf3+fg4ACA/f19Dg4OADg4OABgf3+fg4MD/j22trb4tzo4OOBFYZsXZGtrC4Dt7W22trbY3t7mftdffz0A119/PQ+0v7/PwcEB119/Pffb398H4K677mJvb48777yT22+/HdtkJrbJTDKTzCQzaa3RWmOaJjKTaZrITJ72tKeJq6666qqrrrrqqv+fqFx11VVXXXXVVVf9P7ZcLm+ttT6YF8A2knig/f19Dg4OuOeee5CEJCKC7e1ttre32dra4rrrruPo6IjDw0O2trbY3Nxka2uLra0tAJ785Cdz/fXXA7C9vc3W1hbP7eDgAID9/X0ADg4OeKD9/X3ud3BwwPNzcHDAi2Jra4vnZ2triwfa3t4GYGtri/ttb28DsLW1xXM7ODgAYH9/n4ODA66//noe6ODgAIB7772X/f197r77bu666y7uuusubGMb29gmM/nXsA3AarW6lauuuuqqq6666qr/v6hcddVVV1111VVXXfV82UYSD2QbSTw32+zv73NwcIAknvrUpyIJSUhCEltbW2xtbbG1tYUkxnFkc3OTCxcusFqtANjY2GBjYwOAra0tALa2tnigg4MDAK6//nq2trb4r3JwcADA1tYWL8zR0REAh4eHHB4eYpvDw0Ns80d/9EccHBxwcHDA/v4+trGNbTIT29jmqquuuuqqq6666qr/MFSuuuqqq6666qqr/h+zzX+Vw8NDjo6OOHfuHJKQhCQiAklEBJKICDY3N4kIIoKNjQ1KKSwWCyKCiKCUwnw+Z7lcEhH0fU9EIImIQBKSKKVwP0k8N9sAtNawjW0yE9tkJuv1mswkM8lMVqsVd999N0dHR7TWyEyOjo5orXF4eEhmkplkJplJZmKbzMQ2trGNbR7INv9etnlutrnqqquuuuqqq676f47KVVddddVVV1111f9jtVZeFLaRxH8E20jifraRhG0kAbBcLokIIoJhGIgI9vb2qLVSSqHWSimFWiu1Vrquo9ZKrZVaK6UUaq1EBKUUIgJJPFBmYpvWGq01WmtM08Q0TUzTxDRNTNPEOI5M08Q0TUzTRGuNaZpordFaIzNprfFvYRvb/GeKCK666qqrrrrqqqv+HyO46qqrrrrqqquu+n9suVzeahvb/G9gGwDbPJBtbGMb2wDYBsA2trHN/WwDYJsXxjb/Etvczza2+Y9mm+dmmxfFer2+lauuuuqqq6666qr/vwiuuuqqq6666qqrrrrMNgC2eWFs8+9lmxeVbf6j2MY2D2QbANs8kG2eH9s8P7a5n23+Jba56qqrrrrqqquuuuo/HZWrrrrqqquuuuqqq/5HsY1tXhDb/EtsYxvb2MY2AJIAsI1tbANgGwDb2MY2/1Fs89xs829lmxfGNlddddVVV1111VVXPQvBVVddddVVV1111f9jtnkg2/xXsc39bPPcbPPC2MY2trGNbWxjm38L2zw329jGNrb530gSV1111VVXXXXVVf+PEVx11VVXXXXVVVf9PxYR2OaFsQ2Abe5nm/9OtnlhbANgGwDbANjGNraxjW1sYxsA29zPNs/NNvezzf1s89xs8/zY5j+KbQBsA2Cb5zaO461cddVVV1111VVX/f9FcNVVV1111VVXXfX/2DAMtwLY5oFs89/BNg9km/vZxjb/EtsA2AbANgC2eVHYxjYvjG0AbPOvYZt/Ldu8MLa56qqrrrrqqquuuuoFIrjqqquuuuqqq676f8w2L4xtXhDb/HvZ5kVhm+fHNraxjW1s80C2AbANgG1sA2AbANsA2OZFYZurrrrqqquuuuqqq/7XILjqqquuuuqqq6666vmyzf9EtgGwzQtiG9sA2AbANvezDYBtAGwDYJv72cY2trGNbf63sY1trrrqqquuuuqqq/4fo3LVVVddddVVV131/5xtAGzzr2UbSfxnss2/hm1eENvczzYAtgGwDYBtbPOiss0LYpv72eZfyzb/FraxDYAkrrrqqquuuuqqq/4fI7jqqquuuuqqq676f2yaplv5V7DNv5ZtXhS2eVHZ5rnZxjYAtgGwjW1sY5v72QbANgC2eVHY5r+Tbf61xnG8lauuuuqqq6666qr/v6hcddVVV1111VVX/T9mGwDb3M82/xq2AZDEC2Kb+0nigWwjiReFbR7INraxzXOzzXOzzQtjG9sA2MY2tnlR2cY2/xFs84LY5qqrrrrqqquuuuqqFwmVq6666qqrrrrqqv/HbPNAtnl+bCOJF8Y2z48k/rVsY5sHsg2AbQBs8/zY5n62AbANgCQAbGMb29jGNra5n20eyDYPZBvbPJBtXhDbXHXVVVddddVVV13134Lgqquuuuqqq6666v852/xXss0LY5v72QbANv8S29gGwDa2AbDNi8o2L4htAGxzP9sA2OaBbPPvYZv/KLa56qqrrrrqqquu+n+M4Kqrrrrqqquuuur/sdYa/1q2+feyzb+Hbe5nG9vczzbPzTYAtrENgG0AbANgGwDb/G9kGwDbPFBr7RlcddVVV1111VVX/f9FcNVVV1111VVXXfX/2zN4Jtvczzb/lWzzb2Gb58c2trGNbQBscz/bANgGwDYPZBvb2MY297PNfzbbXHXVVVddddVVV131H4bgqquuuuqqq6666v+xzORfYpv/DLZ5brZ5brZ5UdjGNi+MbWwDYBsA29zPNs+PbV4Q2zw/tgGwzb/ENraxzX8k29jmqquuuuqqq6666v8xgquuuuqqq6666qr/x1pr2MY2/xLb/HeyjW1sA2Cb+9nmfra5n21sYxvb3M82ALYBsI1tAGzz/NjmP5ptbPOisM2/xDZXXXXVVVddddVVVz0Hgquuuuqqq6666qr/xyLiVl4A29jm+bHN/xS2uZ9tAGxjm+dmG9v8S2xjG9s8N9vYxjb/Hrb597DNVVddddVVV1111VX/IoKrrrrqqquuuuqqq57FNrb5r2KbF4VtHsg2ALa5n22em20AbGOb+9nGNraxzf1s89xscz/b/EewzX+VzLyVq6666qqrrrrqqv+/CK666qqrrrrqqqv+H7ONbf4tbPMfyTb3s41tXlS2uZ9tbGMbANvczza2eW62sQ2AbWzzQLZ5fmxzP9vY5l9im/9otrnqqquuuuqqq6666vmictVVV1111VVXXfX/mG3uZ5v/aWzzgtgGwDb3s83zYxsASQDYxjYAtrmfbe5nmweyzQtim/vZ5n62+Y9gm/vZ5kVhGwDbXHXVVVddddVVV/0/RnDVVVddddVVV131/1hmYhvbvChs80C2+feyzQPZ5gWxjW2eH9sA2OZ+trHNA9nmfrYBsI1tnptt/iPZ5j+SbWxz1VVXXXXVVVddddULRHDVVVddddVVV131/1hE3MqLwDb/XWwDYJv72QbANgC2eSDb2OZ+tgGwDYBtbANgmweyjW3uZ5vnZpt/Ldv8d8jMW7nqqquuuuqqq676/4vgqquuuuqqq6666v8x2/x72eZfYhvb2OY/k20eyDa2AbDNc7MNgG0AbHM/29zPNgC2sQ2AbQBs89xs89/JNgC2ueqqq6666qqrrvp/juCqq6666qqrrrrqqudhm38N2zw329jGNg9kmxfENi8q2wDYBsA2ALaxjW2em21sA2CbB7INgG3uZ5v/brb517DNVVddddVVV1111VXPQuWqq6666qqrrrrqKmwDYJt/K9s8kCReENtI4n62kcQLYpt/C9vYxjYAkgCwDYBtbPPcbHM/2wDY5t/KNlddddVVV1111VVX/bcg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wDa2uZ9t7meb52abF5Vt/jVs8/zY5l9im+fHNlddddVVV1111VVXQXDVVVddddVVV111FZmJbWzz/Njmfrb597CNbQBs8+9lm/vZxja2eVHZ5gWxzYvCNv/RbHPVVVddddVVV1111b8bwVVXXXXVVVddddVVSLqVF8A2L4xtXhS2sc1zs82Lyja2eW62eX5scz/b3M82trENgG1sYxvbPDfb/GezjW0AbPMvsc0Lk5m3ctVVV1111VVXXXUVwVVXXXXVVVddddVV/+ls88LY5oFsA2Cb+9nmfrZ5brZ5INsA2MY2ALaxzYvCNs+PbWzzn8U2LyrbXHXVVVddddVVV131QhFcddVVV1111VVXXfU8bGObF5Vtnh/b2OZFYZt/DdvY5oFsYxvbPDfb3M8297PNc7PN/WxzP9vczzYPZBsA2/xPYJurrrrqqquuuuqqq6By1VVXXXXVVVdddRXTNGGbfw/bAEjCNgCS+I9gG0k8P7Z5QWxzP0nY5n62sQ2AbWxjG9vczzb3s81zs83/RLa56qqrrrrqqquuuuoygquuuuqqq6666qqriIhbbWMb27wgtgGwzQtim38r29zPNi8q2zw32/x72OZFYZsXxDa2sY1t/itl5q1cddVVV1111VVXXUVw1VVXXXXVVVddddVlkvifyDYvCtvYxja2AbDN/WxzP9vYxja2eW62eSDb/Eewzb+Vba666qqrrrrqqquu+lejctVVV1111VVXXXXVZbb5n842trGNbV4UtgGQhG2eH9vYxja2eSDbvKhscz/b/FexjW2uuuqqq6666qqrrnoeBFddddVVV1111VVXvUC2eUFs85/BNs+PbZ6bbWzz/NjmBbHN/WzzgtjmudnmudnmRWWbfw/bXHXVVVddddVVV131IiO46qqrrrrqqquuuorM5F9im/9qtnlR2MY2trGNbQBscz/b2MY2ALaxzQtimweyjW0AbGObF8Q2L4xt/rPY5qqrrrrqqquuuuqqZyG46qqrrrrqqquuuoqIuBXANgC2uZ9tbPPfyTb/VraxzQtjG9sA2MY2D2Sb/w1sc7/W2q1cddVVV1111VVXXUVw1VVXXXXVVVddddVltgGwDYBtnh/b3M82/x62sc1zs82/l20eyDb3s839bHM/2zw327wgtvm3ss2Lyjb/Gra56qqrrrrqqquuuuoyKlddddVV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2Ob5sc0D2ea52ebfyzb/USKCq6666qqrrrrqqqueA5Wrrrrqqquuuuqqq56Dbf6tbCMJ29xPEv8VbHM/STyQbSTxgtjmgWzzL7HNv8Q2/5XW6/WtXHXVVVddddVVV131QARXXXXVVVddddVVV/2Hss2Lwjb/EtvYxja2+deyzf1sA2Ab2wDY5n62sY1tnptt/r1scz/bXHXVVVddddVVV131X4Lgqquuuuqqq6666qrnYZsXhW3+M9jGNs/NNrZ5UdjmudnmX8s2z802/9VsA2Cbq6666qqrrrrqqqteZARXXXXVVVddddVVVz0HSfxLbPPvYZsXxDb/EtvY5gWxzf1s8/zYBsA2L4htnptt/iW2+e8giauuuuqqq6666qqrngOVq6666qqrrrrqqquewziOtwLY5j+DbSTx/NhGEi8q2zw/kgCwjSRsI4n72eaBbPPcbPPcbPPC2MY2D2Sbf4lt/i1s80DDMNzKVVddddVVV1111VUPROWqq6666qqrrrrqqudhGwDbANjmP5ttJPGfxTbPzTb3s41tbGOb52abF8Q2tvnvYpurrrrqqquuuuqqq54vgquuuuqqq6666qqrnoNt/jVs86KyzX8V2wDY5t/LNi+IbV5UtvnPYpurrrrqqquuuuqqq54HwVVXXXXVVVddddVVz0ESL4xt/qPZ5j+Sbf4ltgGwzb+VbV4Q27wwtrnqqquuuuqqq6666j8dwVVXXXXVVVddddVVz2Gaplttcz/bANjm38M2/xVs89xs80C2eSDbvCC2eX5s89/FNlddddVVV1111VVXvUgIrrrqqquuuuqqq656DrZ5QWzzH802L4xtbGMb29jmBbHNA9nmfrYBsM3zY5vnZpvnxzb/3Wzz3KZpupWrrrrqqquuuuqqqx6IylVXXXXVVVddddVVz8E2ALZ5YWwjCQDbSOIFsY0k/qPY5vmRxAtjmweyzQPZBsA2tvmPYpt/iW1eENu8ILa5n22uuuqqq6666qqrrnoOBFddddVVV1111VVX/bexzQtjm/9qtnlhbHPVVVddddVVV1111f8aBFddddVVV1111VVXPYfMxDYAtnlR2eb5sc2/hW3+PWwDYJv/KLb517DNc7PNfxbbXHXVVVddddVVV131HAiuuuqqq6666qqrrnoOtp/BfxDb/FvY5j+bbQBs89/FNv+Rpml6BlddddVVV1111VVXPRDBVVddddVVV1111VXPl20AbGObF4Vt7mebF8Y2/1ls8x/NNv/ZbHPVVVddddVVV1111X8ogquuuuqqq6666qqrnsM0TdjmhbHNC2Kbfw/b/EezzQPZ5oFs88LY5r+LbV5Utrnqqquuuuqqq6666jkQXHXVVVddddVVV131HCLiVp4P2zw32zw/tvnvYpv72eZ/Ctv8Z5PEVVddddVVV1111VXPgeCqq6666qqrrrrqqudhG9vY5oFsY5t/L9s8P7b5z2IbANv8a9jmRWUb29jm38o2L4htXphpmm7lqquuuuqqq6666qoHIrjqqquuuuqqq6666t/FNv9T2OaFsc0D2eZ+tvn3sM3zY5t/K9tcddVVV1111VVXXfXvQnDVVVddddVVV1111XOwzQPZxjbPzTb/k9jm38s2D2SbF4Vt/jVscz/bPDfb2Oaqq6666qqrrrrqqn83gquuuuqqq6666qqrnkNmYhvb2OZFYZsXlW2eH9v8W9nmP4ptbGObF4Vtnh/b/FebpulWrrrqqquuuuqqq656IIKrrrrqqquuuuqqq55DRNxqm+dmm/vZ5rnZ5oWxjW2eH9u8qGxjG9vYxjbPj20AbPOfxTb/3SRx1VVXXXXVVVddddULRHDVVVddddVVV1111YvMNra5n20eyDbPzTa2eUFs8y+xjW1s8z+Fbf61bPMfyTZXXXXVVVddddVVV71QVK666qqrrrrqqquueqFsY5sXlW0eSBIviG0k8fzY5n6S+NewjSReGNsA2OZFZRvb2Oaqq6666qqrrrrqqv8VqFx11VVXXXXVVVdd9RwyE9vYxjYviG0kYRtJ/GvZRhLPzTYAkvjXsg2AJABsIwnbPD+2AbCNbWzzQLaxjW1s829lm/8KrbVbueqqq6666qqrrrrqgahcddVVV1111VVXXfUcIuJWng/b3M82krifbSTxorANgCSem20k8YLY5oWRBIBtACRhGwBJ3M8297PNA9nGNrb5l9jGNraxjW1sYxsA2/xHs81VV1111VVXXXXVVS8yKlddddVVV1111VVXPQ/b2MY2trmfbWwjCQDbSALANpJ4YWwjiedmGwBJPDfb3E8SL4xtACRhm/tJwjbPzTYAtrGNbV4Q29jGNraxzX8l21x11VVXXXXVVVdd9a9G5aqrrrrqqquuuuqq59F1HQ9kmxeFbSTx3GwDIInnZhtJPDfbAEjihbHN/SQBYBtJ2EYStnlBbGOb+9nGNraxjW1s8x/NNv9ekrDNVVddddVVV1111VUvEMFVV1111VVXXXXVVc9juVzeapsXxjYAtnkg29jGNraxzQtim+fHNi+IbWxjG9s8kG1sA2AbANs8P7axjW0AbGOb/w1sY5sHGsfxVq666qqrrrrqqquuem5Urrrqqquuuuqqq656HrYBsI1tAGzzH8U2AJJ4INsASOK52QZAEs/NNgCSALCNJGwjCds8P7YBsM39bGMb29jGNraxjW1sYxvb2MY2trGNbf672Oaqq6666qqrrrrqqudBcNVVV1111VVXXXXV82it3coD2AbANraxzQPZ5kVhG9s8N9vY5rnZxja2eW62sY1tHsg2ALYBsM3zYxsA2wDYxjb/XrYBsM1/pVIKV1111VVXXXXVVVc9DypXXXXVVVddddVVVz0P29jmX2IbSQDYBkASz802AJJ4braRxAPZBkASD2Sb+0nifra5nyRsIwnbSMI2z49tAGxzP9vYxja2sY1t/q1s819hvV7fylVXXXXVVVddddVVz43KVVddddVVV1111VXPwzYAtrENgG0eyDaSsI0k7meb5yaJ52YbAEnczzYAkngg2wBI4n62uZ8kAGwDIAnb/EtsA2AbANvY5vmxjW1sYxvb2MY2trHNv5Vt/r1sc9VVV1111VVXXXXV8yC46qqrrrrqqquuuup52MY297MNgG1sY5sHss2/hm2em22em21s80C2sc0D2cY2ALaxjW0AbGObB7KNbQBsA2Cb+9nGNraxzYvKNi+Ibf4zjeN4K1ddddVVV1111VVXPTeCq6666qqrrrrqqqueR2beahvbvDC2uZ9t/iW2sc1zs80D2cY2D2Qb29zPNraxDYBtbANgGwDb2AbANraxDYBtbANgGwDb2MY2D2Qb29jGNraxzX8USfxrSeKqq6666qqrrrrqqn8RwVVXXXXVVVddddVVz8M297MNgG0eyDYAtrmfbWzz/NjmudnGNg9kmweyjW0eyDYPZBsA29gGwDa2AbCNbWxjG9sA2MY2ALaxzf1sYxvbvCC2sY1tHsg2V1111VVXXXXVVVf9j0Dlqquuuuqqq6666qrn0Vq71Ta2AbANgG0AbCOJF8Q2z00SD2QbSTyQbSRxP9tI4n62AZAEgG0A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/xJJvCgk8S+xDYBtbGMb22QmmYkkMpPWGpIAsE1mIon72aa1RmZy3333sbW1xXw+Z5omJAEgiQeSxFVXXXXVVVddddVV/+moXHXVVVddddVVV131n0oSALZ5YSQREQBI4vmRxH802wDYxja2sU1mIonWGvezTWYiCUkA2CYziQgighMnTjCOI5KQBIAknh9JXHXVVVddddVVV131n4rKVVddddVVV1111VX/ZWzzL5GEJP49JPGvYRsA29jGNpmJJCQBYJvMJCKQhG1qrXRdx87ODsMwMI4jkpDE8yMJAElcddVVV1111VVXXfVfgspVV1111VVXXXXVVf+ppmm6teu6B/OvJAlJANgmInhRSOLfwja2yUwkASAJANvYJjMB6LqOaZp40IMexDiOjOOIJP61lsvlrVx11VVXXXXVVVdd9Z+JylVXXXXVVVddddVV/61sI4kXRBIAtrGNJCICSTyQJCTx3CTx/NjGNraxjW1sY5vM5H62yUxmsxk7OzucPn2ajY0NMpNpmpCEJCQhCUkASAJAEgCSAJDEVVddddVVV1111VX/ZahcddVVV1111VVXXfXfwjaS+JfYRhIAkgCwTWYiiVorkvj3sI1tbGObzKTWyubmJuM48pjHPIZaK6UUJGEbAElI4rlJAkASAJK46qqrrrrqqquuuuq/BZWrrrrqqquuuuqqq/5TScI297PNfxRJ2EYSALaRREQgCUlIAkASz00SkiilMJ/PWa/X7OzscOLECWazGX3f0/c9kpCEJCQBIAkASUhCEpKQxItCElddddVVV1111VVX/aejctVVV1111VVXXXXVfyrbPDfbSOJfYhtJvCgkERFEBBFBRBARSCIiiAgiglIKEUEphVIKtVZqrdRaOXbsGH3fI4kHkoQkACQBIAlJAEjigSQhiecmCQBJAEjiqquuuuqqq6666qr/VARXXXXVVVddddVVV/23s82Lwjb/VSQhCUncTxIAkpCEJCQBIAlJSOJ+kpDEVVddddVVV1111VX/bQiuuuqqq6666qqrrvpPlZm3AtjmX8M2L4xt/iW2eVFJQhLPjyQkIQlJSEISkpCEJCTxgkhCEs9tuVzeylVXXXXVVVddddVV/5moXHXVVVddddVVV131n8o2LwrbSOK/myQkASAJSUhCEpKQxP0kIQlJAEhCEpKQxPMjiauuuuqqq6666qqr/ssQXHXVVVddddVVV131X8Y2L4xtbGOb52ab+9nmP5skACQBIAlJSAJAEg8kiauuuuqqq6666qqr/sehctVVV1111VVXXXXVfxvbSOLfyjb/GpJ4UUgCQBIAkrifJAAkIQlJSEISkpCEJAAkIYn7SeJ+krjqqquuuuqqq6666j8dlauuuuqqq6666qqr/k+yjSReGEk8kCQkASAJAElIQhKSkASAJCQhCUk8N0ncTxIPJAkASVx11VVXXXXVVVdd9Z+K4Kqrrrrqqquuuuqq/3S2+fewzQtim38tSTyQJJ4fSdxPEpIAkIQkJCEJAElIQhLPjySuuuqqq6666qqrrvovR3DVVVddddVVV1111X8q2/xHss1zs80D2eZfIgkASQBI4n6SkASAJCQhCUlIQhKSkASAJAAkASAJAElI4oEkcb/lcnkrV1111VVXXXXVVVf9ZyK46qqrrrrqqquuuuo/le1beT5sA2Cb/6kkIQlJAEhCEpIAkIQkJCGJB5LEVVddddVVV1111VX/7Qiuuuqqq6666qqrrvovZZt/Ddu8KGxjG9v8W0lCEveTxP0kASAJSUgCQBKSkIQkJCGJB5IEgCSuuuqqq6666qqrrvovRXDVVVddddVVV1111X8q2wDY5n62+Z9MEpIAkIQkJCEJSQBIQhKSeH4kIYn7SeJ+kpDEVVddddVVV1111VX/6ahcddVVV1111VVXXfW/hm0kAWCb/2ySkIQkJCEJSQBIQhKSkIQkJCEJSdxPElddddVVV1111VVX/bchuOqqq6666qqrrrrqP51tXhjbPD+2+a8gCUkASEISknhukpCEJCQhCQBJSOJFIYmrrrrqqquuuuqqq/7LEFx11VVXXXXVVVdd9Z/KNvezzYvKNv/VJPFAkpCEJCQhCQBJSEISkpAEgCQkIQlJSAJAElddddVVV1111VVX/begctVVV1111VVXXXXVf7ZbeRHYRhL/U0jifpKQhCQkASAJSUgCQBKSeG6SAJCEJB5ouVzeylVXXXXVVVddddVV/5moXHXVVVddddVVV131n8o2Lyrb3E8SD2QbSQDYRhK2+Y8mCUkASEISAJIAkASAJCQhCUlIAkAS/xJJXHXVVVddddVVV131X4LKVVddddVVV1111VX/bWwjif8ukpDE8yMJAElIAkASkgCQBIAkJAEgCUlIQhKSeEEkcdVVV1111VVXXXXVfzoqV1111VVXXXXVVVddBUjiuUkCQBKSkIQk7icJSUhCEi+IJO4niauuuuqqq6666qqr/stQueqqq6666qqrrrrqP5VtbGObfyvbSOL5sc1/FEkASEISAJKQhCQkIQkASUgCQBKSkIQkJCEJAEncTxIPZJurrrrqqquuuuqqq/5TEVx11VVXXXXVVVdd9Z/KNg9km38P2/xHk8T9JHE/SdxPEpK4nyQkIQkASUjigSRxP0lcddVVV1111VVXXfVfjspVV1111VVXXXXVVf+pJD2D58M2kvifThKSuJ8kACQhCUlI4n6SkMQLIwmA1Wr1DK666qqrrrrqqquu+s9EcNVVV1111VVXXXXVfyrbPDfb3M82L4xtnh/b/GeRhCQkIQlJSEISkpCEJCQhCUlIQhL3kwSAJCTx3CQhiauuuuqqq6666qqr/lNRueqqq6666qqrrrrqv4xt/jPY5j+CJCTx/EhCEpIAkIQkJCEJSUhCEpIAkMRzk8T9bHPVVVddddVVV1111X8qKlddddVVV1111VVX/afKTP6j2EYS/x6SAJDEA0nifpKQhCQkIQlJSEISAJKQhCSeH0k8kCQk8UC2ueqqq6666qqrrrrqPxXBVVddddVVV1111VX/7Wzz/NjmP5sk/iWSkIQkJCEJSUhCEpKQhCQkcdVVV1111VVXXXXV/xhUrrrqqquuuuqqq676T2eb/2y2eWEk8YJI4rlJQhKSeCBJAEjifpKQxP0kASAJSUjigSRx1VVXXXXVVVddddV/CYKrrrrqqquuuuqqq/5TRcStALZ5YWzzQLZ5QWwDYJt/C0k8P5KQhCQAJCEJSUhCEpKQBIAkJCEJSUhCEgCSeH4kASCJq6666qqrrrrqqqv+0xFcddVVV1111VVXXfXfxjbPj22em23+o0niRSEJSUjifpKQhCQkASAJSUjiuUlCEg+0Wq1u5aqrrrrqqquuuuqq/0xUrrrqqquuuuqqq676T2WbF5VtACTxX00SDyQJSUjifpKQBIAkJCEJAEk8kCQkIYmrrrrqqquuuuqqq/7bULnqqquuuuqqq6666j+dbe5nm/8stvn3koQkHkgSkpCEJAAkIQlJSEISkpCEJB5IElddddVVV1111VVX/bcguOqqq6666qqrrrrqP5Vt/r1scz/b/GeRxP0kIQlJSEISkpCEJCQhCUlIQhKSeFFIAiAzueqqq6666qqrrrrqPxWVq6666qqrrrrqqqv+W9hGEv9etvnPJAkASQBIAkASkpCEJO4nCUlIQhKSAJCEJCRxP0lcddVVV1111VVXXfWfispVV1111VVXXXXVVf9lbANgG0n8e9jmP4ok7icJSUhCEgCSAJCEJAAkIQkASUhCEs+PJJ6f1Wp1K1ddddVVV1111VVX/WciuOqqq6666qqrrrrqP1VE3MoLYZsXxjb/Grb515AEgCSeH0lIQhKSAJCEJAAkIQlJSEISkpDECyOJq6666qqrrrrqqqv+01G56qqrrrrqqquuuuo/nW1s8z+dJAAkIQlJ3E8SkpCEJCQhCUkASAJAEveThCSuuuqqq6666qqrrvpvQ3DVVVddddVVV1111f8atvmvJglJSAJAEveThCQkASAJAElI4oEkASAJSVx11VVXXXXVVVdd9V+CylVXXXXVVVddddVV/+kk8W9hG0n8S2zzryWJ50cS95OEJCQBIAlJAEhCEpKQhCQkIYn7SQJAEgCSeCDbXHXVVVddddVVV131n4rgqquuuuqqq6666qr/VLaxzQtjm38N2wDY5t9DEs+PJCTxQJKQhCQkIQlJSEISkrifJK666qqrrrrqqquu+h+B4Kqrrrrqqquuuuqq/5Fs899NEpKQhCQkASAJSUhCEpKQhCQkASAJAEk8P5K46qqrrrrqqquuuuo/HcFVV1111VVXXXXVVf+pIuJWXgDb3M8297PNc7PNi8o2/xqSkIQkJAEgiftJQhKSkIQkJCGJB5IEgCQAJAEgCUk8t/V6fStXXXXVVVddddVVV/1nonLVVVddddVVV1111X8629zPNi+IbQAk8d9JEgCSkMQDSUISkpCEJCQhCUlIAkASz00SkpDEVVddddVVV1111VX/JahcddVVV1111VVXXfVfxjb/00jihZGEJCQhCUkASEISkpCEJAAkIYn7SeKqq6666qqrrrrqqv82BFddddVVV1111VVX/Zewzb+Vbe5nm38rSQBI4l8iCUkASEISkpCEJO4nCUlIQhIPJIn7SeKBJHHVVVddddVVV1111X86gquuuuqqq6666qqr/tNJ4oFsY5v/SLb595KEJCRxP0ncTxIAkpCEJCQhCQBJSEISkrifJJ6bJK666qqrrrrqqquu+k9H5aqrrrrqqquuuuqq/5VsA2Cb/wiSeCBJSAJAEpIAkIQkJCEJSUhCEs9NEpK4nyQkIYmrrrrqqquuuuqqq/5LEFx11VVXXXXVVVdd9Z+utXYrL4BtXhjb/EeSxL+GJCQhCUlIQhKSkIQkACQhCUlIQhJXXXXVVVddddVVV/23I7jqqquuuuqqq6666j+dbf4j2ObfQhIvjCQeSBIAknggSUhCEpKQBIAkJCEJSTw3SUjigQ4PD2/lqquuuuqqq6666qr/bFSuuuqqq6666qqrrvpfyzb/HpJ4bpIAkASAJCQhCQBJAEhCEpKQhCTuJwlJSEISV1111VVXXXXVVVf9tyG46qqrrrrqqquuuup/LNv8V5LECyIJSQBI4n6SkASAJCQhiedHEpK46qqrrrrqqquuuuq/DMFVV1111VVXXXXVVf/pJGEb2zw/tvnXsM2/lyQAJPHcJCEJSUhCEgCSkIQkJCEJSUhCEpKQBIAkXhBJSOKqq6666qqrrrrqqv90BFddddVVV1111VVX/aezzf1s86KwzX8lSQBI4rlJQhKSkIQkJCEJSUhCEveTBIAkJCEJSVx11VVXXXXVVVdd9V+O4Kqrrrrqqquuuuqq/3SZeSvPh23uZ5sXxjb/1SQhCQBJPJAkJCEJAElIQhIAknhhDg8Pb+Wqq6666qqrrrrqqv9sVK666qqrrrrqqquu+h/DNveTxIvKNv+RJCGJ+0kCQBKSkASAJCQhCQBJAEgCQBIPJIn7SeKqq6666qqrrrrqqv90BFddddVVV1111VVX/Z9hm38LSQBI4oEkIQkASUhCEpIAkASAJCQhCUk8kCQkcT9JXHXVVVddddVVV131X4bgqquuuuqqq6666qr/craxzYvKNvezzX8mSQBI4n6SkASAJCQhCQBJSEISAJKQhCQeSBL3k8RVV1111VVXXXXVVf8lqFx11VVXXXXVVVdd9b+Sbf4jSeK5SUIS95PE/SQhCUlIQhKSeCBJXHXVVVddddVVV13134rKVVddddVVV1111VX/JWzzv4UkHkgSkpCEJCQBIAlJ3E8SkpCEJAAkIQkASVx11VVXXXXVVVdd9V+K4Kqrrrrqqquuuuqq/1a2+fewzb+WJAAk8YJIAkASkrifJCQBIAlJSEISAJK4nyTuJwkASQAcHR3dylVXXXXVVVddddVV/9kIrrrqqquuuuqqq676T5eZtwLY5l/LNvezzQPZ5t9LEveThCTuJ4n7SUIS95PE/SQhCUkASEISAJJ4bpK46qqrrrrqqquuuuq/BJWrrrrqqquuuuqqq/5L2eZ/OkncTxKSkASAJCQBIAlJSEISkpDEc5PEVVddddVVV1111VX/LQiuuuqqq6666qqrrvpPZ5t/C9s8P7b515LECyKJ5yYJSTyQJCQhCUlIQhKSkIQkACQhCUk8kCTud8011zyYq6666qqrrrrqqqv+sxFcddVVV1111VVXXfWf7sVf/MVfmxfCNv/VJPGikIQkJCGJB5KEJB5IEg8kCQBJAEgC4MyZMw/mqquuuuqqq6666qr/bARXXXXVVVddddVVV/2nerEXe7HXPnPmzINt89xs8z+FJJ6bJJ6bJCQhiftJQhKSkIQkJPGCSOKaa6558Iu92Iu9NlddddVVV1111VVX/WciuOqqq6666qqrrrrqP9U111zz4Pvuu+9W/pVs80C2+Y8giRdEEpKQhCQAJCEJSUgCQBKSkIQkJCEJSQBIAkASAJIAkMQDXXPNNQ/mqquuuuqqq6666qr/TARXXXXVVVddddVVV/2nOnPmzIMe+9jHPpgHsM1zs839bPOvZZt/iST+vSRxP0lIQhKSAJDEA0kCQBIPtLW1xVVXXXXVVVddddVV/+kIrrrqqquuuuqqq676b2Gb52Yb27wwtvmvIglJSEISkpCEJCQhCUncTxIAkpCEJJ6bJO535syZB3HVVVddddVVV1111X8mgquuuuqqq6666qqr/tO92Iu9GP8etvmvJAlJvCCSkMT9JCEJSUjiuUniuW1ubnLVVVddddVVV1111X86gquuuuqqq6666qqr/lP96I/+6Odcc801ANjmP4ptXhSSeEEkIYkHksQDSUISkpCEJO4nCUlIQhIAkpCEJAAkcT9JAEjimmuu4ezZs8/gqquuuuqqq6666qr/TARXXXXVVVddddVVV/2nO3PmDI9+9KN5fmzz300SkpDEA0nigSQBIAlJSEISkpCEJB5IEveTxP0e9KAHsbm5yT/8wz/8NlddddVVV1111VVX/WciuOqqq6666qqrrrrqP90//MM//PZbv/VbA2Cb/yi2+c8iiftJQhIAkgCQBIAk7icJSUhCEveTxP0k8aAHPYh/+Id/+O377rvvVq666qqrrrrqqquu+s9EcNVVV1111VVXXXXVf7rf+q3f+p6TJ0/e+qhHPYp/LdvczzbPzTa2+Y8kCQBJSOJ+kgCQBIAkACQhCQBJ3E8Sknig06dPc+bMGX7rt37re7jqqquuuuqqq6666j8bwVVXXXXVVVddddVV/+n+4R/+4bcB3vd935dTp07xv5EkACQhCUlIQhKSkIQkACQhiee2sbHBq73aq3Hffffd+lu/9VvfzVVXXXXVVVddddVV/9kIrrrqqquuuuqqq676T3fffffd+vVf//Xvc+rUKT7u4z6Ofy/bvCC2+ZdI4gWRxANJQhIAknhukpAEgCQk8dwksbGxwUu91Etx33333fr1X//178NVV1111VVXXXXVVf8VCK666qqrrrrqqquu+i/xD//wD7/9W7/1W9996tQpPu/zPo+TJ09yP9s8P7b5zyKJF0YSkrifJAAkIQlJSOJ+kpCEJCQhCUlIYj6f8+Iv/uKcOnWKs2fP3voP//APv81VV1111VVXXXXVVf8VCK666qqrrrrqqquu+i/zIz/yI5/9D//wD7996tQpPuqjPooTJ07wP4kkACTxQJIAkMRzk4QkJHE/SdxvNpvxmMc8hpMnT/IP//APv/2Zn/mZr8NVV1111VVXXXXVVf9VCK666qqrrrrqqquu+i9z9uzZZ3z913/9+9x333239n3PR33UR3Hy5EmeH9s8kG3+M0ni+ZEEgCQAJCEJSUhCEpKQhCQkASCJ2WzGIx/5SE6cOMF9991362d+5me+DlddddVVV1111VVX/VciuOqqq6666qqrrrrqv9R9991362d91me9znK5vPXkyZN8xEd8BG/8xm+Mbe5nm/8qkpDECyOJ5yYJSTyQJAAksbm5yUu+5Ety7Ngx/uEf/uG3P+RDPuQhXHXVVVddddVVV131X41y/Phxrrrqqquuuuqqq676r3V4eLj7Z3/2Zz9zeHi4+wqv8Aqv/fCHPxyAixcvslqtAJCEJCQhCQBJAEhCEpKICCKCiCAikEREEBFIIiKQREQQEUQEEUFEEBGUUiilUGul1krf93Rdx2w2Yzab0fc9fd/TdR21VkopRAQAtslMWmtM08QwDLTWWCwWXHfddQD8wz/8w29/5md+5utw1VVXXXXVVVddddV/B8rx48e56qqrrrrqqquuuuq/3uHh4e4//MM//A7Ai7/4i7/2wx/+cF78xV+c+XzO0572NCQhCUkASEISAJIAiAgigoggIogIJBERRASSiAgiAklEBKUUIoKIoJRCKYVSCrVWaq10XUfXdfR9T9/3zGYzuq6j6zpKKUQEkpCEbTKT1hrTNJGZbG5uMp/PAfj6r//69/6u7/quj+Gqq6666qqrrrrqqv8ulOPHj3PVVVddddVVV1111X+ff/iHf/id3/7t3/6ehzzkIS/9oAc96MEPf/jDeYVXeAXm8zlPe9rTkASAJCQBIAkASUQEEUFEEBFIIiKICCQREUQEkogIIoKIICIopVBKoZRCrZVaK13X0fc9fd/T9z1939P3PbVWaq2UUogIAGyTmRweHjKOIxEBwG/91m9995d+6Ze+zT/8wz/8DlddddVVV1111VVX/XeiHD9+nKuuuuqqq6666qqr/nsdHh7u/tZv/db3nD179hmbm5vHb7nllgc/7GEP4+Vf/uWZz+cA7O7uIgkASQBIIiKICCKCiEASEUFEIImIICKQREQQEUQEEUEphVIKpRRqrdRa6bqOvu+ZzWbMZjP6vqfve7quo5RCRCCJ1hp7e3tcuHCBaZoA+Id/+Iff/vqv//r3+YVf+IWvOTw83OWqq6666qqrrrrqqv9u6EEPehBXXXXVVVddddVVV/3P8jqv8zrv9Tqv8zrv/WIv9mKvzTNdvHiRv/iLv+DpT386T3/60wGICGqtlFIopVBKISIopVBKISIopVBKISIopVBrpZRCrZWu6+i6jr7vmc1mLBYLFosFm5ubbG1tsbW1xdbWFhsbGywWC2qtLJdLDg8PmaaJ+9133323/uiP/uhn/9Zv/db3cNVVV1111VVXXXXV/yToQQ96EFddddVVV1111VVX/c90zTXXPPi1X/u13+ud3umdPpsHuHjxIk9/+tN5+tOfzv7+PrfffjulFEopRASlFEopRASlFEoplFIopVBKoZRCrZWu6+i6jr7vmc/nzOdzFosFm5ubbG1tsb29zcbGBn3fMwwDD3Tffffd+lu/9Vvf/du//dvfc999993KVVddddVVV1111VX/E6EHPehBXHXVVVddddVVV131P9s111zz4Bd7sRd7rRd7sRd77Rd7sRd7bYBrrrnmwTzT7u4ukrjtttuQxJ133snBwQGSODw8pJRCRLBcLimlsLOzQ62VWis7Ozt0XceZM2eotbK5ucl8PmexWPDc/uEf/uG3//7v//63z549e+tv/dZvfQ9XXXXVVVddddVVV/1Phx70oAdx1VVXXXXVVVddddX/Ltdcc82DX+zFXuy1X+zFXuy1rrnmmge/2Iu92Gvzn+C+++679R/+4R9++7777rv1t3/7t7/nvvvuu5Wrrrrqqquuuuqqq/43QQ960IO46qqrrrrqqquuuup/t2uuuebBAC/2Yi/22oBf7MVe7LWvueaaBwOcOXPmwTzTNddc82CA++6771ae6ezZs7cC3Hfffbfed999t549e/YZ9913363/8A//8NtcddVVV1111VVXXfW/HXrQgx7EVVddddVVV1111VVXXXXVVVddddVVV131fxKVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q/iHwGxGlayilx0/gAAAABJRU5ErkJggg==) ```js // Rotate an imported model. @@ -151,15 +151,9 @@ cube sketch001 = startSketchOn(XY) rectangleSketch = startProfileAt([-200, 23.86], sketch001) - |> angledLine([0, 73.47], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 50.61 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -168,7 +162,7 @@ circleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63) sketch002 = startSketchOn(YZ) sweepPath = startProfileAt([0, 0], sketch002) |> yLine(length = 231.81) - |> tangentialArc({ radius = 80, offset = -90 }, %) + |> tangentialArc(radius = 80, angle = -90) |> xLine(length = 384.93) parts = sweep([rectangleSketch, circleSketch], path = sweepPath) @@ -177,7 +171,7 @@ parts = sweep([rectangleSketch, circleSketch], path = sweepPath) rotate(parts, axis = [0, 0, 1.0], angle = 90) ``` -![Rendered example of rotate 4](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEAC0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666v+tkydPlm/7tm+beKa3e7u3E1ddddVVV1111f8lBFddddVVV1111VVXXXXV/1vf9m3fNvEAP/ETP2Guuuqqq6666qr/S6hcddVVV1111VVXXXXVVf8vfe7nfu5vcdVVV1111VVX/V9H5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+K4Kqrrrrqqquuuuqqq676f+mzPuuzXoerrrrqqquuuur/OoKrrrrqqquuuuqqq6666v8l23zt137tw3iA++6771auuuqqq6666qr/SyjHjx/nqquuuuqqq6666qqrrvr/6RnPeMbFH/3RH/2c3/7t3/6ehzzkIS/9kIc85KUB/uEf/uF3uOqqq6666qqr/i8guOqqq6666qqrrrrqqqv+37vvvvtu/fu///vfBnid13md977mmmsezFVXXXXVVVdd9X8B5fjx41x11VVXXXXVVVddddVVV509e/YZm5ubx1/8xV/8tR/ykIe89G/91m99D1ddddVVV1111f92BFddddVVV1111VVXXXXVVcB9991364/+6I9+DsCLvdiLvfaLvdiLvTZXXXXVVVddddX/dgRXXXXVVVddddVVV1111VXPdN9999369V//9e8D8OEf/uHfxVVXXXXVVVdd9b8d5fjx41x11VVXXXXVVVddddVVV93v6Oho9yEPechLP+QhD3lpgH/4h3/4Ha666qqrrrrqqv+tKMePH+eqq6666qqrrrrqqquuuup+h4eHu/fdd98zXud1Xue9r7nmmgf/2Z/92c8cHh7uctVVV1111VVX/W9EOX78OFddddVVV1111VVXXXXVVQ909uzZW6+55poHv/iLv/hrb25uHv/TP/3Tn+Gqq6666qqrrvrfiOCqq6666qqrrrrqqquuuur5+NEf/dHPAXid13md936xF3ux1+aqq6666qqrrvrfiOCqq6666qqrrrrqqquuuur5uO+++279+q//+vcB+PAP//Dv4qqrrrrqqquu+t+Icvz4ca666qqrrrrqqquuuuqqq56fo6Oj3Yc85CEv/ZCHPOSlAf7hH/7hd7jqqquuuuqqq/43oRw/fpyrrrrqqquuuuqqq6666qrn5/DwcPe+++57xuu8zuu89zXXXPPgP/uzP/uZw8PDXa666qqrrrrqqv8tKMePH+eqq6666qqrrrrqqquuuuoFOXv27K3XXHPNg1/8xV/8tTc3N4//6Z/+6c9w1VVXXXXVVVf9b0Fw1VVXXXXVVVddddVVV131L/jRH/3RzwF4ndd5nfd+sRd7sdfmqquuuuqqq67634Lgqquuuuqqq6666qqrrrrqX3Dffffd+vVf//XvA/DhH/7h38VVV1111VVXXfW/BeX48eNcddVVV1111VVXXXXVVVf9S46OjnYf8pCHvPRDHvKQlwb4h3/4h9/hqquuuuqqq676n45y/Phxrrrqqquuuuqqq6666qqr/iWHh4e799133zNe53Ve572vueaaB//Zn/3ZzxweHu5y1VVXXXXVVVf9T0Y5fvw4V1111VVXXXXVVVddddVVL4qzZ8/ees011zz4xV/8xV97c3Pz+J/+6Z/+DFddddVVV1111f9kBFddddVVV1111VVXXXXVVf8KP/qjP/o5AK/zOq/z3i/2Yi/22lx11VVXXXXVVf+TEVx11VVXXXXVVVddddVVV/0r3Hfffbd+/dd//fsAfPiHf/h3cdVVV1111VVX/U9GOX78OFddddVVV1111VVXXXXVVf8aR0dHuw95yENe+iEPechLA/zDP/zD73DVVVddddVVV/1PRDl+/DhXXXXV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8+qv/uqcPXv2GR/8wR/84GuuuebB3/RN3/R0gM/6rM96nb//+7//ba666qqrrrrqqueGHvSgB3HVVVddddVVV1111VVX/e90zTXXPPjFXuzFXvvFXuzFXuvFXuzFXvuaa655MM90dHTE7bffzhOf+ET+I9jmP4pt/i1e/dVfndOnT/MjP/Ijn/2jP/qjn/PhH/7h3/U6r/M67/0jP/Ijn/2jP/qjn8NVV1111VVXXfXcKMePH+eqq6666qqrrrrqqquu+t/p8PBw99Zbb/3rP/3TP/2ZX/iFX/ia3/7t3/6ew8PD3WuuuebBx48fP3769Gluvvlmuq7j/Pnz/GvZ5j+Sbf6tbHN0dMSDHvQgrrnmmgf/wi/8wtccHh5eep3XeZ33lqTf+q3f+m6uuuqqq6666qrnRjl+/DhXXXXVVVddddVVV1111f8Nh4eHu//wD//wO3/2Z3/2M7feeuvfbG5uHr/xxhsffPr0aW6++Wa6ruP8+fM8P7b5z2Cbfw/b3O/o6IgzZ85w5syZ42fPnn3Grbfe+tdv/uZv/tGS9PM///NfzVVXXXXVVVdd9dwox48f56qrrrrqqquuuuqqq676v+Xw8HD31ltv/evf+q3f+p7f/u3f/p6HPOQhL33jjTc++PTp09x8883cfffdjOPIfybb/HvZ5vm54YYbePCDH/zSP/qjP/o5L/7iL/7aD37wg1/6H/7hH37n7Nmzt3LVVVddddVVVz0Q5fjx41x11VVXXXXVVVddddVV/3cdHh7u/tZv/db3nD179hkPfvCDX/r48ePHr7/+erqu4/z58/xHss1/BNu8IOM4csMNN3D8+PHj//AP//A7L/7iL/7a11xzzYP/4R/+4XduvfXWv+aqq6666qqrrnogyvHjx7nqqquuuuqqq6666qqr/u+79dZb//rP/uzPfubw8HD3ZV7mZV779OnT3HLLLdxzzz2M48i/h23+o9jmhRnHka7rOHPmDABPf/rT//rFX/zFX/vpT3/6X//DP/zD73DVVVddddVVVz0QwVVXXXXVVVddddVVV131/8Z9991364/+6I9+zod8yIc85L777rt1Y2ODV3u1V2NjY4N/DdvYxja2+Y9gG9u8KG677TYAXuzFXuy1/+Ef/uF3AF78xV/8tbnqqquuuuqqq54bwVVXXXXVVVddddVVV131/859991362d91me9zn333XfrxsYGL/MyL8Pp06d5YWxjG9v8R7KNbf41jo6OOHfuHNdcc82Dr7nmmgcDnDlz5sFcddVVV1111VXPjXL8+HGuuuqqq6666qqrrrrqqv9/Dg8Pd//sz/7sZw4PD3df8RVf8bVPnz5N13WcP38eANv8Z7PNv8cNN9zA5ubm8WuuuebBm5ubx3/0R3/0c7jqqquuuuqqqx6Icvz4ca666qqrrrrqqquuuuqq/58ODw93/+Ef/uF3AF7mZV7mtTc2Nrh06RJHR0f8Z7LNv9cwDDz84Q8H4OlPf/pfX3PNNQ/+h3/4h985e/bsrVx11VVXXXXVVfejHD9+nKuuuuqqq6666qqrrrrq/7d/+Id/+B2Al3mZl3nt06dPc+nSJY6OjviPZpv/CLYZx5HTp09zzTXXHL/mmmseDPAP//APv3Prrbf+NVddddVVV1111f0ox48f56qrrrrqqquuuuqqq6666h/+4R9+B+BlXuZlXntjY4Nz584xjiP/EWzzH8U299vc3OTMmTPc7+lPf/pf/8M//MPvcNVVV1111VVX3Y/gqquuuuqqq6666qqrrrrqmf7hH/7hdwBOnz7Ny77sy/LvYRvb2OY/im0e6BnPeAYP9OIv/uKvzVVXXXXVVVdd9UAEV1111VVXXXXVVVddddVVz3T27NlbAe677z5Onz7Nox/9aP61bGOb/2i2eW5HR0dcddVVV1111VUvFMFVV1111VVXXXXVVVddddVz+YZv+AYAbrnlFk6fPs2/xDa2sc1/Btu8IGfPnuV+Z86ceTBXXXXVVVddddUDEVx11VVXXXXVVVddddVVVz2Xxz3ucfzIj/wIGxsbPPrRj+a52cY2trHNfybbvDDnzp3jftdcc82Dueqqq6666qqrHojgqquuuuqqq6666qqrrrrquUjit3/7t7nvvvs4ffo0t9xyC7axjW3+q9jmX3L27Fke6JprrnkwV1111VVXXXXV/Qiuuuqqq6666qqrrrrqqque6cyZMw8GkMS5c+f40R/9UQAe/ehH81/NNi+Ko6MjHujMmTMP5qqrrrrqqquuuh/BVVddddVVV1111VVXXXXVA5w9e5aIQBL/8A//wN///d+zsbHBLbfcwn8V27yojo6OOHv2LPc7e/bsrVx11VVXXXXVVfcjuOqqq6666qqrrrrqqquueqZrrrnmwefOneN+586d47d+67cAeMxjHsP/Bq/92q/9Xlx11VVXXXXVVfcjuOqqq6666qqrrrrqqquuei6SKKUgicc97nH8/d//PRsbG5w+fZr/bLb51zp37hxXXXXVVVddddXzRXDVVVddddVVV1111VVXXfVMZ86cedDZs2cBkATAuXPn+Id/+AcAHvSgB/GfyTb/FkdHR9zvmmuueTBXXXXVVVddddX9CK666qqrrrrqqquuuuqqq57pmmuueTAPEBFI4rd+67cAOH36NP9ZbPNvdXh4yP2uueaaB3PVVVddddVVV92P4Kqrrrrqqquuuuqqq6666gHOnj0LgCQiAoDz58/z93//92xsbHD69Gn+o9nm3+Po6Iirrrrqqquuuur5Irjqqquuuuqqq6666qqrrnohIgJJ/MM//AMAj3nMY/if7MyZMw/mqquuuuqqq666H8FVV1111VVXXXXVVVddddUzXXPNNQ8+e/Ys95NERADwO7/zOwBsbGzwH8k2/15HR0dcddVVV1111VXPF8FVV1111VVXXXXVVVddddUznTlz5sE8H5I4d+4cABsbG2xsbPAfwTb/0a655poHc9VVV1111VVX3Y/gqquuuuqqq6666qqrrrrqAc6dO8cDSaKUgiT+4R/+AYCNjQ3+pzk6OuJ+11xzzYO56qqrrrrqqqsACK666qqrrrrqqquuuuqqq57pmmuuefDZs2d5QR73uMcBcPr0aa666qqrrrrqqv8VCK666qqrrrrqqquuuuqqq/4FkogI7re5ucn/ZGfOnHkwV1111VVXXXUVAJWrrrrqqquuuuqqq6666irgmmuueTDA2bNneW6SiAge97jHAbCxscFVV1111VVXXfW/AsFVV1111VVXXXXVVVdddRVw5syZB/MviAj+I0niqquuuuqqq676T0Vw1VVXXXXVVVddddVVV131TGfPnuUFkYQkADY2NviPIglJ/Ee65pprHsxVV1111VVXXQVAcNVVV1111VVXXXXVVVddBVxzzTUP5l9w7tw57meb/0iSkMS/1cbGBlddddVVV1111fMguOqqq6666qqrrrrqqquueqazZ8/yr2Gb/2iSkMRVV1111VVXXfUfgspVV1111VVXXXXVVVdddRVw5syZB507d44X5syZMwAcHh7yn00S97PNC7OxscEDnTlz5kFcddVVV1111VUAVK666qqrrrrqqquuuuqqq/6Hk8T9bPPcNjY2uOqqq6666qqrni8qV1111VVXXXXVVVddddVVwDXXXPPgs2fP8sKcPn0agKOjI/67SOJ+tgHY3Nzkqquuuuqqq656vqhcddVVV1111VVXXXXVVVf9G0niv5MkrrrqqquuuuqqF4rgqquuuuqqq6666qqrrroKuOaaax589uxZXpgzZ84AcHR0xP8kGxsbXHXVVVddddVVzxfBVVddddVVV1111VVXXXUVcObMmQfzLzh9+jQAR0dHSOJ/is3NTQD+4R/+4bcBrrnmmgdz1VVXXXXVVVcBULnqqquuuuqqq6666qqrrnqmc+fOcdVVV1111VVX/Z9CcNVVV1111VVXXXXVVVddBVxzzTUPPnv2LC/MmTNnADg6OuJ/ko2NDQDuu+++W7nqqquuuuqqqx6IylVXXXXVVVddddVVV1111Yvo9OnTABwdHfE/ycbGBgD33XffrVx11VVXXXXVVQ9E5aqrrrrqqquuuuqqq676f++aa655MMDZs2f532hjYwOAs2fPPoOrrrrqqquuuuqBqFx11VVXXXXVVVddddVVV72Izpw5A8DR0RFXXXXVVVddddX/ClSuuuqqq6666qqrrrrqqv/3zpw582D+l9rY2ADgvvvuu5Wrrrrqqquuuuq5Ubnqqquuuuqqq6666qqr/t+75pprHnz27FlemNOnT/OfQRL/HpubmwCcPXv2Vq666qqrrrrqqudG5aqrrrrqqquuuuqqq666Cjh79iwviqOjI/69JPEfZWNjA4D77rvvVq666qqrrrrqqudG5aqrrrrqqquuuuqqq676f+/MmTMPOnv2LC/MmTNnADg6OuLfQhJXXXXVVVddddV/OSpXXXXVVVddddVVV1111VUvgtOnTwNwdHTEi0oS/9k2NjYAuO+++27lqquuuuqqq656blSuuuqqq6666qqrrrrqqv/3rrnmmgfzH0gS/1U2NjYAOHv27DO46qqrrrrqqqueG8FVV1111VVXXXXVVVdddRVw9uxZXpgzZ84AcHh4yAsjif9KGxsbANx33323njlz5kEA9913361cddVVV1111VUABFddddVVV1111VVXXXXV/3vXXHPNg8+dO8cLc/r0aV4YSUjiP4okJCEJSUhCEpKQhCQksbGxAcDZs2dv5aqrrrrqqquuem5Urrrqqquuuuqqq6666qr/986cOfNgXkRHR0c8N0n8e0niqquuuuqqq676D0flqquuuuqqq6666qqrrroKOHv2LC/MuXPneG6S+LeSxH+EjY0NAO67775bueqqq6666qqrnhuVq6666qqrrrrqqquuuur/vWuuuebBZ8+e5YV5zGMeA8DR0REAkvjXksR/pI2NDR7ommuueTDA2bNnn8FVV1111VVXXQVA5aqrrrrqqquuuuqqq6666kVw+vRpAI6OjpDEv4Yk/jNsbGwA8A//8A+/w1VXXXXVVVdd9fxQueqqq6666qqrrrrqqquu+leQxItKEv9eknhBNjY2ALjvvvtu5aqrrrrqqquuen6oXHXVVVddddVVV1111VX/r11zzTUPBjh79iySeEHOnDkDwNHREf8SSfxbSOKqq6666qqrrvoPReWqq6666qqrrrrqqquu+n/tzJkzD+Y/iCT+tSTxb7WxsQHAfffd93SAa6655sEA9913361cddVVV1111VUAVK666qqrrrrqqquuuuqq/9euueaaB589e5YX5vTp0wAcHR3xgkjiRSWJ/wgbGxsAnD179hlcddVVV1111VXPD5Wrrrrqqquuuuqqq6666v+9s2fP8sKcOXMGgKOjI56bJF4Ukvi3ksSL4syZMw8GOHv27K1cddVVV1111VUAVK666qqrrrrqqquuuuqq//fOnj3LC3P69GkAjo6OeCBJ/Esk8a8liRfFxsYGAGfPnr2Vq6666qqrrrrq+aFy1VVXXXXVVVddddVVV/2/dubMmQfxrySJf4kkXlSS+LdYLBYA3Hfffbdy1VVXXXXVVVc9P1Suuuqqq6666qqrrrrqqv/XrrnmmgfzLzhz5gz3k8QLI4kXhST+vTY2NgC47777bgW45pprHgxw33333cpVV1111VVXXQVA5aqrrrrqqquuuuqqq676f+/s2bO8KI6OjnhhJPEvkcS/liSuuuqqq6666qp/E4Krrrrqqquuuuqqq6666v+1a6655sHnzp3jhTl9+jQAy+WS50cSknhhJCGJF4UkJCEJSTw/i8UCgPvuu+9WgGuuuebBAPfdd9+tXHXVVVddddVV96Ny1VVXXXXVVVddddVVV/2/dubMmQfz7yCJF0YSLwpJ/GtsbGwAcPbs2VsBzpw582CAs2fP3spVV1111VVXXXU/KlddddVVV111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s81zs839bGMb29jGNrZprd3KVVddddVVV/33oHLVVVddddVVV1111VVXXfWfoJTCA0niP5ttJAFgmxfm+uuvB+Duu+/mRWGb+9nmudnmBcnMW7nqqquuuuqq/x5Urrrqqquuuuqqq6666qqr/hNExIMlIQlJ/E9gGwDbbG1tAbC/v49tXhjb3M82ALaxDYBtAGwDYBvb2Gaaplu56qqrrrrqqv8+BFddddVVV1111VVXXXXVVf8Jaq0PloQk7icJSfxHss1/BNvYxja2sY1tbPPC2OYFsc1qtfptrrrqqquuuuq/D8FVV1111VVXXXXVVVddddV/gq7rHsx/A9s8P7YBsA3A1tYWAPv7+7yobANgm+dmG9vYBsA2trHNVVddddVVV/03Irjqqquuuuqqq6666qqrrvpPYBtJAEhCEv+ZbPOC2Oa5bW9vA7C/v8+LwjYPZBvb2MY2D2QbANtM03QrV1111VVXXfXfh+Cqq6666qqrrrrqqquuuuo/WGY+WBIAknh+JPHvZZvnxza2AbDN/WwDYJvt7W0A9vf3sc0LYhvb3M82z49tbHM/2wC01p7BVVddddVVV/33oXLVVVddddVVV1111VVXXfUfLDMfLAlJPD+SAJDE/STxH802L8jW1hYA+/v7ANjGNraxjW1s80C2AbDNA9nmfraxDYBtMvNWrrrqqquuuuq/D5Wrrrrqqquuuuqqq6666qr/YLYfLAkASUgCQBL/XWzzQNvb2wDs7+/zorDNA9nGNrYBsM0D2QagtXYrV1111VVXXfXfh+Cqq6666qqrrrrqqquuuuo/WEQAIIn7SeI/km3uZxsA2/xLbPOvZZv72eaFsc0DZeatXHXVVVddddV/HypXXXXVVVddddVVV1111VX/wSQ9SBIAkvjvZpsHuu666wC46667sI1tXhDb3M82ALZ5INvYxjYAtrHNOI63ctVVV1111VX/vQiuuuqqq6666qqrrrrqqqv+g9VaHywJSTw3STyQJP4j2eaBbHM/2wBsb28DsL+/z/1sYxvb2MY2tnlBbGMb2zw/tlmv17/NVVddddVVV/33onLVVVddddVVV1111VVXXfUfLCKQhCQAJPEfyTaSeEFs8x/NNgC2eW62uZ9tbANgm6uuuuqqq676b0Zw1VVXXXXVVVddddVVV131H6zW+mCeSRL/WrZ5UdkGwDYv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TLa5n22eH9vczzY7OzsA7O3tAWCbF4Vt7mcb2zyQJCQhidbarVx11VVXXXXV/2wEV1111VVXXXXVVVddddVV/0YR8WBJ/FezzQPZ5rnt7OwAsLe3x/1s88LYBsA2z00SknigYRhu5aqrrrrqqqv+Z6Ny1VVXXXXVVVddddVVV131bxQRAEhCEv+VbPP82OaBbPNAtnl+bPOC2EYSkpDE/aZpupWrrrrqqquu+p+N4Kqrrrrqqquuuuqqq6666t+olPJgSdxPEpL473bTTTcBsLe3x/NjG9sA2MY297MNgG1sYxsASUhCEgDjON7KVVddddVVV/3PR3DVVVddddVVV1111VVXXfVvFBEPBpDEfwTbvCC2+ZfYBmBnZweAO+64AwDbPD+2eVHYRhKSuN/h4eFvc9VVV1111VX/81G56qqrrrrqqquuuuqqq676N+q67sGSAJDEA0niuUniRWUbSfxb2AbANvezzb/ENgC2uZ9tACQhCUlcddVVV1111f8iBFddddVVV1111VVXXXXVVf9GtpHEc5MEgCT+vWzzorDN/XZ2dgDY29vjgWzzgtjmgWxjGwDbSEISkgAYhuFWrrrqqquuuup/PoKrrrrqqquuuuqqq6666qp/g8x8kCQAJPFfwTbPj20e6NixYwDs7e1hmweyzXOzzf1s8/xIQhKSkMR6vX4GV1111VVXXfU/H8FVV1111VVXXXXVVVddddW/ge0HS0IS95PEfzbbPJBtHsg2Ozs7AFy6dInnxza2sY1tnptt7mcbgIhAEvebpulWrrrqqquuuup/PipXXXXVVVddddVVV1111VX/Bpn5YEkASEISAJL4z2abF2ZnZweAvb09AGzzorDN/WxjG4CIQBKSAJDEMAy3ctVVV1111VX/8xFcddVVV1111VVXXXXVVVf9G0QE/5Fs84LY5kVhG4CdnR0ALl26xP1s88LY5gWRhCQkIQmAaZpu5aqrrrrqqqv+5yO46qqrrrrqqquuuuqqq676N5D0YElI4oWRxL+Wbf4z2Ob5sc39bPNAtokIIgJJSGIYhlu56qqrrrrqqv8dCK666qqrrrrqqquuuuqqq/4NIuLBkgCQxH8G27yobAOws7MDwB133AGAbR7INraxjW1scz/bANjGNrYBiAgkIQmAg4OD3+aqq6666qqr/negctVVV1111VVXXXXVVVdd9W8QEUhCEgCSkMR/FttI4l9y0003AXDp0iX+I9gmIogIJHHVVVddddVV/8sQXHXVVVddddVVV1111VVX/RuUUh7M/xC2eWFs8y+xDYBt7mcbgIggIogIJLFer2/lqquuuuqqq/53ILjqqquuuuqqq6666qqrrvo3qLU+WBKSeG6S+NewzYvCNs/NNg+0s7MDwKVLl7DN/WzzgtjmgWxjGwDbRASSkATAarV6BlddddVVV131vwPBVVddddVVV1111VVXXXXVv5MknpskHkgS/xFscz/bPJBtdnZ2ANjb2+O52cY297ONbe5nm+cnIogIJCGJcRxv5aqrrrrqqqv+d6By1VVXXXXVVVddddVVV131b1BKebAkJPFAkvj3sI0k7mcbSTyQbV6QnZ0dAPb29gCwzXOzjW2eH9vczzalFCKCiABAEuv1+lauuuqqq6666n8Hgquuuuqqq6666qqrrrrqqn8DSTyQJP4j2eZfwzYAx44dA+DSpUv8a9jmfraxDUAphVIKEUFEADBN061cddVVV1111f8OVK666qqrrrrqqquuuuqqq/6VMvPBAJIAkASAJP677ezs8Nxs88LY5gUppRARRAS2GYbhVq666qqrrrrqfw+Cq6666qqrrrrqqquuuuqqfyXbD5YEgCT+PWzzL7HNC2Ob53bp0iUeyDbPj23uZ5sHsk0phVIKEYEkLl269NtcddVVV1111f8eVK666qqrrrrqqquuuuqqq/6VbD9YEpJ4YSTxn80299ve3gbg0qVLANjmgWxjG9vYxjb3sw2AbWxjG4BSChGBJCRx1VVXXXXVVf/LEFx11VVXXXXVVVddddVVV/0rRQT/1Wzz3GzzQDfffDMAt99+O/ezzb+VbWqtlFKICCSxXq9v5aqrrrrqqqv+9yC46qqrrrrqqquuuuqqq676V4qIB0lCEpKQhCT+vWzzQLZ5INvczzb/UWwDYJv72QaglEIphYhAEoeHh8/gqquuuuqqq/73oHLVVVddddVVV1111VVXXfWvJOnBkvjvYJvnxzY7OzsA7O3tYZv72eYFsc0D2cY2ALaptVJKQRKSWK/Xt3LVVVddddVV/3tQueqqq6666qqrrrrqqquu+leKCAAk8dwk8aKyjSSem20k8a917NgxAC5dusRzs41t7mcb29zPNs+t6zpqrZRSAJDEer2+lauuuuqqq67634PKVVddddVVV1111VVXXXXVv1LXda8tCQBJ/HezDcDOzg4Ae3t7ANjmudnGNs+Pbe5nm67rqLVSSsE2kpim6Vauuuqqq6666n8Pgquuuuqqq6666qqrrrrqqn8DSTw3SQBI4j+KbV4Y29xvZ2cHgEuXLnE/2/xLbHM/29gGoOs6aq2UUogIVqvVrVx11VVXXXXV/y5Urrrqqquuuuqqq6666qqr/pVqrQ8GkASAJP4nOHbsGM+PbV4Q27wgXddRa6WUAsCFCxd+m6uuuuqqq67634XKVVddddVVV1111VVXXXXVv4Ek/qvYRhLPzTb3s839Ll26hG0eyDbPzTb3s80D2abrOmqtlFKwzVVXXXXVVVf9L0Rw1VVXXXXVVVddddVVV131r5CZD+aZJCEJAEm8IJL4l9jmgWzzwtjmgXZ2dgC4dOkSL4htbGMb2zw329jGNgB931NrpZSCJI6Ojm7lqquuuuqqq/53oXLVVVddddVVV1111VVXXfWvkJkPloQk/j1sI4kXlW1emJtvvhmA22+/nfvZ5kVhm+dmm67r6LqOUgoRwf7+/jO46qqrrrrqqv9dqFx11VVXXXXVVVddddVVV/0r2H6wJP4lkvi3sI0k/jVs80C2uZ9tXhjbANjmufV9T62ViEASq9XqVq666qqrrrrqfxcqV1111VVXXXXVVVddddVV/woRgSQkIYn/KY4dOwbApUuXeG62eX5s80C2sY1t+r6n73u6rgMgIlitVrdy1VVXXXXVVf+7ULnqqquuuuqqq6666qqrrvpXkPQgSdxPEpL4z2AbSbwwtgHY2dkBYG9vDwDbPJBtHsg297PNc5vP58xmM2qt2EYS4zjeylVXXXXVVVf970Llqquuuuqqq6666qqrrrrqX6GU8mD+h7DN/Y4dOwaAbV4Q29jGNi+MbRaLBX3f03UdrTWOjo6ewVVXXXXVVVf970Nw1VVXXXXVVVddddVVV131ryAJSUhCEg8kiReFbR7INv9eOzs7ANx+++3czzb/EtsA2MY2tgGYz+f0fU/XdUQE99xzz29z1VVXXXXVVf/7EFx11VVXXXXVVVddddVVV/0rlFIezPMhCQBJ/HvZ5n62eX5s80DHjh3j+bHNC2KbF2Q2m9H3PbVWSilcddVVV1111f9SBFddddVVV1111VVXXXXVVf8KEfFgSUgCQBL/2WzzQLZ5INvc79KlS9jmgWzz3GxzP9s8kG0WiwWz2Yyu64gI9vf3n85VV1111VVX/e9D5aqrrrrqqquuuuqqq6666l9BEpL4z2AbSTw/tnlBdnZ2ALh06RIviG1sYxvbPDfb2MY2APP5nL7vqbUSEVy4cOEZXHXVVVddddX/PlSuuuqqq6666qqrrrrqqqv+FUopD+aZJAEgif8utrnlllsAuP3227mfbV4UtnlutlksFsxmM0opRASHh4e3ctVVV1111VX/+1C56qqrrrrqqquuuuqqq676V5AEgCT+M9lGEv9atrmfbV4Y2wDY5oFmsxnz+Zy+75GEJJbL5a1cddVVV1111f8+VK666qqrrrrqqquuuuqqq15E0zS9NoAk/q1sI4n/CLYB2NnZAeDSpUs8N9u8KGxjG9tsbW2xWCzo+x7bSGIcx1u56qqrrrrqqv99qFx11VVXXXXVVVddddVVV72IbD84IgCQBIAknpsk7ieJF8Y2kvjXss39jh07BsClS5cAsM0D2eaBbGMbANs8t+3tbWazGX3f01pjb2/vVq666qqrrrrqfyeCq6666qqrrrrqqquuuuqqF5EkACQBIIn/aLa5n21eFDs7O/xLbGMb27wwttnc3GSxWND3PaUUnvGMZ/w2V1111VVXXfW/E5Wrrrrqqquuuuqqq6666qoXUSkFSfx3s80DHTt2DIDbbruN+9nmX2IbANvYxjYAGxsbzGYzuq6jtYZtrrrqqquuuup/KYKrrrrqqquuuuqqq6666qoXkaQHSUISz00S/x62eX5sY5v72eaBbHPs2DHuZ5v72ebfYnNzk/l8Ttd1RAQXLly4lauuuuqqq67634nKVVddddVVV1111VVXXXXVi0jSg3kmSdxPEgCSeGFsI4l/C9v8Sy5dusRzs83zYxsA2zyQbTY2NpjP53RdR0Rw7733PoOrrrrqqquu+t+JylVXXXXVVVddddVVV1111YsoIpCEJAAk8d/JNseOHQPg0qVL3M82D2Sb+9nGNg9kG9vYBmBjY4PZbEbXdUQEFy9evJWrrrrqqquu+t+J4Kqrrrrqqquuuuqqq6666kVUa31t/gvY5kV18803A3DbbbdhmxfENrZ5INs8t67r2NjYoO97aq1IYrlc3spVV1111VVX/e9EcNVVV1111VVXXXXVVVdd9a8gCQBJAEji38o2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vPRLvzSLxYJnPOMZSAJAEgCSAJDE/STxoniDN3gDAH7t136NB7LNC2MbANvY5sSJE7zP+7wPj3zkI/nMz/zM1/mHf/iH3+aqq6666qqr/m+hHD9+nKuuuuqqq6666qqrrrrqqv8o//AP//A7v/3bv/09h4eHuy//8i//2g9+8IN5qZd6Ka677jruvfde1us1AJIAkMT9JPGC2Abg2LFjvOIrviKXLl3iT//0TwGwzf1s8/zYBsA2AK//+q/P+7zP+zBN061f8iVf8jb/8A//8NtcddVVV1111f896EEPehBXXXXVVVddddVVV1111VX/Ga655poHv+M7vuNnvc7rvM5780zPeMYz+Ju/+Rv+7u/+DgBJPJAknptt7vcSL/ESvMVbvAXPeMYz+L7v+z4AbANgG9vYxja2sY1tbHP8+HFe5mVehtd//dcH4Ld+67e+++u//uvfh6uuuuqqq676vws96EEP4qqrrrrqqquuuuqqq6666j/TNddc8+DXfu3Xfq93eqd3+uz77rvv1muuuebBly5d4hnPeAa33XYbf/u3f8sDSeJ+tnmgl3iJl+At3uIt+Nu//Vt+9md/FgDb2AbANraxjW2OHTvGy7zMy3D8+HFe9mVfFoB/+Id/+O2///u//+0f/dEf/Ryuuuqqq6666v829KAHPYirrrrqqquuuuqqq6666qr/Ctdcc82Dz5w58+B3eqd3+qwXe7EXe20e4NKlSzzjGc/gtttuY3d3l9tuu43n59Vf/dV5zdd8TX73d3+X3/3d3wXANrYBOHbsGA960IM4duwYD37wg3nIQx7C/e67775bf+u3fuu7f/RHf/RzuOqqq6666qr/H9CDHvQgrrrqqquuuuqqq6666qqr/qtdc801D36xF3ux136d13md93qxF3ux1+b5uHTpEru7u1y6dIn7HTt2jAc96EE84xnP4BnPeAbHjh3j+PHjHDt2jOPHj/Pc7rvvvlt/67d+67v/4R/+4Xf+4R/+4be56qqrrrrqqv9f0IMe9CCuuuqqq6666qqrrrrqqqv+O11zzTUPPnPmzIOuueaah7zYi73YawG8zuu8znvzb3Dffffdevbs2Vv//u///rf/4R/+4Xf+4R/+4be56qqrrrrqqv+/0IMe9CCuuuqqq6666qqrrrrqqqv+Jzpz5syDrrnmmodcc801D+aZzpw58yAe4OzZs8+47777ng7oH/7hH36bq6666qqrrrrqgdCDHvQgrrrqqquuuuqqq6666qqrrrrqqquuuuqq/5OoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxX/CHTeFCiomymDAAAAAElFTkSuQmCC) +![Rendered example of rotate 4](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEWDklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqr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FeDs2bP8/d//PRsbG7zcy70c/xa2sc2/lm1s869hm/udPXsWgBd7sRd7La666qqrrrrq/zaCq6666qqrrrrqqquuuuqqf6V/+Id/+O377ruPr/3arwXg9OnTnD59mheFbWxjm38L2/xr2eaBzp49C8CLv/iLvzZXXXXVVVdd9X8bwVVXXXXVVVddddVVV1111b/Btddey9mzZ/nar/1aNjY2eLmXezleGNvY5t/KNrb517LNczs8PATgzJkzD+aqq6666qqr/m8juOqqq6666qqrrrrqqquu+jeSxD/8wz/wd3/3d2xsbPDoRz+a52Yb2/x72ObfwjbPz9HREYeHh1xzzTUPfrEXe7HX5qqrrrrqqqv+7yK46qqrrrrqqquuuuqqq676N7jmmmuQxNmzZ/mRH/kRAB70oAexsbGBbWxjm38P29jm38I2L8zR0RFXXXXVVVdd9f8AwVVXXXXVVVddddVVV1111b/SfffddyuAJCTxD//wD/z93/89GxsbPPrRj+Y/gm3+rWzzLzl79iwAL/ZiL/ZaXHXVVVddddX/XQRXXXXVVVddddVVV1111VX/Stdcc82DJXE/SXzt134tAGfOnOHfwza2+beyzYvi7NmzALz4i7/4a3PVVVddddVV/3cRXHXVVVddddVVV1111VVX/RucO3cOSUhCEmfPnuXv//7v2djY4EEPehD/Wraxzb+Hbf61zpw582Cuuuqqq6666v8ugquuuuqqq6666qqrrrrqqn+lM2fOPBhAEpKQhCR++Id/GIDHPOYx/GvY5t/LNv8ah4eHXHXVVVddddX/AwRXXXXVVVddddVVV1111VX/BufOnSMiuJ8kzp49y9///d8DcPr0af4ltrHNv5dt/rWOjo4AuOaaax7MVVddddVVV/3fRXDVVVddddVVV1111VVXXfWvdM011zz47NmzAEQEkpDE2bNn+fu//3s2NjZ40IMexAtiG9v8R7DNv9XZs2cBeLEXe7HX5qqrrrrqqqv+b6Jy1VVXXXXVVVddddVVV131bySJ+0lCEv/wD/8AwJkzZ3hutvmPZJurrrrqqquuuuqFIrjqqquuuuqqq6666qqrrvpXuOaaax4McPbsWQAkEREASOJxj3scABsbG5w+fRrb2MY2/5Fs8+9hm8PDQwCuueaaB3PVVVddddVV/zcRXHXVVVddddVVV1111VVX/SucOXPmwTwXSUhCEpL4+7//e46Ojjh9+jT/GWxz1VVXXXXVVVe9SAiuuuqqq6666qqrrrrqqqv+lc6ePcsDSUIS9/uHf/gHNjY2OHPmDP/RbPPvZRuAw8NDAM6cOfMgrrrqqquuuur/JipXXXXVVVddddVVV1111VX/Ctdcc82DeS6SkIQkAB73uMcBsLm5yX8k21x11VVXXXXVVf8qBFddddVVV1111VVXXXXVVf9KZ8+e5blJIiKQxNmzZwE4PDzkP4ptrrrqqquuuuqqfzWCq6666qqrrrrqqquuuuqqf4UzZ8486OzZszw3SUgC4OzZs9x3332cOXOGjY0N/r1s8x/FNlddddVVV131/wjBVVddddVVV1111VVXXXXVv8I111zzYF4ASUQEkjh79iwAm5ub/HvY5qqrrrrqqquu+jejctVVV1111VVXXXXVVVdd9a909uxZXhBJPNDGxgb/Vra56qqrrrrqqqv+XQiuuuqqq6666qqrrrrqqqv+Fa655poH80JIIiI4e/Ys/x62ueqqq6666qqr/t0Irrrqqquuuuqqq6666qqr/hXOnDnz4LNnz/LCSEIS/1a2ueqqq6666qqr/kNQueqqq6666qqrrrrqqquu+g8mibNnzwKwsbHBv4Zt/qtsbm4CcPbs2Wdw1VVXXXXVVf83EVx11VVXXXXVVVddddVVV/0rXHPNNQ8+e/YsL4wkJPGvZZv/bJK46qqrrrrqqv9HqFx11VVXXXXVVVddddVVV/0rnT17lhdEEgBnzpwB4OjoiBeFbf6rbW5uAnDffffdylVXXXXVVVf930Rw1VVXXXXVVVddddVVV131n+To6Ij/iSQBsLGxAcDZs2dv5aqrrrrqqqv+byK46qqrrrrqqquuuuqqq656EV1zzTUPBjh79iz/kjNnzrCxscHR0RH/EttcddVVV1111VX/KahcddVVV1111VVXXXXVVVe9iM6cOfNgXkSnT58G4PDwkBfENv9dJLG5uQnAfffddytXXXXVVVdd9X8Tlauuuuqqq6666qqrrrrqqhfRNddc8+CzZ8/yH8E2/502NjYAOHv27DO46qqrrrrqqv+7qFx11VVXXXXVVVddddVVV/0rnD17lhfFmTNnADg6OuK52ea/2+bmJgD33XffrVx11VVXXXXV/11Urrrqqquuuuqqq6666qqrXkRnzpx50NmzZ/m3sM3/JBsbGwDcd999t3LVVVddddVV/3dRueqqq6666qqrrrrqqquu+g925swZAA4PD7HNVVddddVVV13134bKVVddddVVV1111VVXXXXVi+iaa655MC+C06dPA3B0dMT/VJubmwDcd999T+eqq6666qqr/u+ictVVV1111VVXXXXVVVdd9a9w9uxZ/iVnzpwB4PDwkP+pNjY2ADh79uwzuOqqq6666qr/uwiuuuqqq6666qqrrrrqqqteRNdcc82Dz549ywtjmxdGEpKQhCQkIQlJSEISkpDEf6bNzU2uuuqqq6666v8BKlddddVVV1111VVXXXXVVS+iM2fOPJh/I0n8a0niudnmP8LGxgYA//AP//DbXHXVVVddddX/XVSuuuqqq6666qqrrrrqqqv+Fc6ePcu/5PTp0wAcHR0BIIn/KJJ4INtcddVVV1111VUvEJWrrrrqqquuuuqqq6666qoX0TXXXPPgs2fP8i85c+YMAIeHh0jiP5MkHsg2L4rNzU0A7rvvvlu56qqrrrrqqv+7qFx11VVXXXXVVVddddVVV/0nkcR/NUk8kG2e28bGBgD33XffrVx11VVXXXXV/21Urrrqqquuuuqqq6666qqrXgTXXHPNgwHOnj3Lv+TMmTMAHB0d8d9NEg9km83NTQDOnj17K1ddddVVV131fxuVq6666qqrrrrqqquuuuqqF8GZM2cezIvo9OnTABweHvI/jSQ2NzcBuO+++27lqquuuuqqq/5vo3LVVVddddVVV1111VVXXfUiOnv2LFddddVVV1111f8qVK666qqrrrrqqquuuuqqq14E11xzzYN5EZ05cwaAo6Mj/ifa2NgA4B/+4R9+h6uuuuqqq676v43KVVddddVVV1111VVXXXXVi+js2bP8X7C5uclVV1111VVX/T9B5aqrrrrqqquuuuqqq6666kVw5syZB509e5Z/yZkzZwA4Ojrif6qNjQ2uuuqqq6666v8JKlddddVVV1111VVXXXXVVS+Ca6655sG8CM6cOQPA4eEh/1Ntbm4C8A//8A+/zVVXXXXVVVf930blqquuuuqqq6666qqrrrrqRXT27Fn+JadPnwbg6OiIq6666qqrrrrqvx3BVVddddVVV1111VVXXXXVi+Caa6558NmzZ/nvIglJSEISkpCEJCQhCUlIQhKS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wVVXXXXVVVddddVVV1111f8QkrifJCTx/EjiP4ptXhjb3M82ALbZ3t4G4I477uCBbGMb2zyQbWxzP9sA2OaBbGObB7JNZt7KVVddddVVV/3rEVx11VVXXXXVVVddddVVV/03y8wHSwJAEs9NEpL497DNv8Q2D2SbF4Vtnh/b2MY2L4xtbGObB7INQGvtVq666qqrrrrq34bKVVddddVVV1111VVXXXXVf7PMfDCAJAAk8fxI4j+bbZ4f2wDYBuDGG28E4M477wTANi8q2wDY5rnZ5oFss16vf5urrrrqqquu+rehctVVV1111VVXXXXVVVdd9d/vwZIAkMQDSeJ/C9v8S2zzgtjm+bHNVVddddVVV/0bEVx11VVXXXXVVVddddVVV/03iwgkIYn7SeI/i20eyDYvjG2e287ODgB7e3s8kG1s89xsY5v72QbANraxDYBtAGxjG9uM43grV1111VVXXfVvQ3DVVVddddVVV1111VVXXfXfLCIeJInnJon/CLZ5fmzzr2EbgBtuuAGAvb09bPP82MY2trHNA9nmX2Oapmdw1VVXXXXVVf82BFddddVVV1111VVXXXXVVf/NIuLBkpCEJCTxX802z49tntvOzg4Ad955JwC2+bewzQPZBsA2DzSO429z1VVXXXXVVf82VK666qqrrrrqqquuuuqqq/6bRcSD+R/INvezDYBtnh/bvChs80C2sY1tnh/bSOKqq6666qqr/o2oXHXVVVddddVVV1111VVX/TcrpTxYEpKQxAsjiftJ4j+SbV4UN954IwCXLl3igWxjm+fHNra5n22em20eyDYArbVbueqqq6666qp/G4Krrrrqqquuuuqqq6666qr/ZpKQxP0kIYn7SeI/im0eyDb/Ets8P/v7+9jmudnGNraxjW0eyDYAtrmfbR7INgDr9fp3uOqqq6666qp/O4Krrrrqqquuuuqqq6666qr/ZrXWBwNI4rlJ4t/DNv9RbANw4403ArC3tweAbV5Utnkg29gGwDbPbZqmW7nqqquuuuqqfzuCq6666qqrrrrqqquuuuqq/wEkASCJ+0nifpL4j2SbF4VtXpC9vT3uZ5t/iW3uZ5t/iW2maXo6V1111VVXXfVvR3DVVVddddVVV1111VVXXfXfaJqm15bEfyfbPD+2uZ9tAGyzs7MDwN7eHg9kmxfENs/NNvezDYBtbHO/YRiewVVXXXXVVVf921G56qqrrrrqqquuuuqqq676b2T7wQCSkASAJP6n2tnZAWBvbw/bPDfb2MY2trGNbR7INvezjW1ekMy8lauuuuqqq676tyO46qqrrrrqqquuuuqqq676bxQRSOK5SeLfyzYPZJsXxDb3s41tnp8bb7wRgL29PQBs869hGwDbPJBtHsg2tmmt3cpVV1111VVX/dtRueqqq6666qqrrrrqqquu+m8k6UGSAJCEJP6r2EYS97PN82MbANvcb29vj/vZ5kVhmweyDYBtXpDMvJWrrrrqqquu+rcjuOqqq6666qqrrrrqqquu+m8UEQ+WhCT+q9jm32pnZweAvb09Hsg2L4xt7meb+9nmBWmt3cpVV1111VVX/ftQueqqq6666qqrrrrqqquu+m8UEUjiRSGJ+0niv4JtAGwDsL29DcDe3h62eSDb2MY297ONbf4ltrHN/WyzWq1+m6uuuuqqq6769yG46qqrrrrqqquuuuqqq676b1RKeTCAJCQhCUkASEIS/5ls84LY5rnt7OwAsLe3B4Btnh/b2Oa52QbANraxjW0eyDZXXXXVVVdd9R+E4Kqrrrrqqquuuuqqq6666r9RKeXBkvjPZpv/CDs7OwDs7e1xP9u8KGzzgtjmua1Wq9/hqquuuuqqq/59CK666qqrrrrqqquuuuqqq/4blVIeDCCJB5LE/STxr2WbF5Vtnptt7mcbANvs7OwAcOnSJR7INi+Mbe5nmweyzfNjm6uuuuqqq676dyK46qqrrrrqqquuuuqqq676byYJAEn8V7HNA9kGwDa2+bewzXOzjW3uZxsA29jGNi/IMAy/zVVXXXXVVVf9+xBcddVVV1111VVXXXXVVVf9N8nMB0sCQBIAkvjPZJsXxDbPzTYAtrnpppsAuOOOOwCwzXOzjW1sY5t/LdsA2Ka1ditXXXXVVVdd9e9D5aqrrrrqqquuuuqqq6666r9JZj5YEpJ4IEn8T7SzswPA3t4e97PNi8o2ALZ5INtcddVVV1111X8Sgquuuuqqq6666qqrrrrqqv8mth8sCQBJSOK/km1eGNs80Pb2Ns+Pbf4ltnkg29jGNs/Per3+ba666qqrrrrq34/gqquuuuqqq6666qqrrrrqv0kpBQBJ/EskcT9JvDC2eSDb/GvZ5n62AdjZ2QHg9ttvxzYPZJsXxDb3s81zs80D2Waaplu56qqrrrrqqn8/KlddddVVV1111VVXXXXVVf9NJD1IEi+IJP43sY1tbGMb29jmudnmfrZ5fqZpupWrrrrqqquu+vcjuOqqq6666qqrrrrqqquu+m8SEQ+WhCQkIQlJAEjiP4tt7meb52ab+9kGwDY33XQTAHfccQcAtvnXsM39bGObF2S9Xj+Dq6666qqrrvr3o3LVVVddddVVV1111VVXXfXfJCL4l0jiP4ptJPHcbPOvYZv72eZFYRsA27woxnH8ba666qqrrrrq34/KVVddddVVV1111VVXXXXVf5Na62tLQhIPJIn/CWzzQDs7OwDs7e3xQLaxzQtimxfENs+PJK666qqrrrrqPwDBVVddddVVV1111VVXXXXVfyNJAEjifyrb3HTTTQDs7e0BYJvnZhvbANjGNra5n20AbGMb29xPEg80TdOtXHXVVVddddW/H8FVV1111VVXXXXVVVddddV/k1rrgwEkASCJf4kkXhjbPJBtnh/bvDC2eaCdnR0A7rjjDu5nm+fHNi8q2zy3aZpu5aqrrrrqqqv+Y1C56qqrrrrqqquuuuqqq676bySJB5LEfzfb3M82ALYBsM0D2eZFYRsA29zPNs/ParX6ba666qqrrrrqPwbBVVddddVVV1111VVXXXXVf4PMfLAk7ieJF0QS/1Fscz/bvKhuvvlmAPb29rDNA9nmhbHNA9nGNi+Iba666qqrrrrqPwjBVVddddVVV1111VVXXXXVf4PMfLAkJCGJ/2y2eX5s80C2uZ9tntve3h7Pj22em21scz/bPDfbSOJ+tlmtVr/DVVddddVVV/3HoHLVVVddddVVV1111VVXXfXf48GSeCBJAEhCEv9VbPPC2Oamm24C4NKlSwDY5rnZxja2sc0D2QbANvezzfNjm6uuuuqqq676D0Llqquuuuqqq6666qqrrrrqv0EpBQBJSEISz00S/11s8/xcunSJ+9nm38I2tgGQxHNbr9e/zVVXXXXVVVf9xyC46qqrrrrqqquuuuqqq6767/Faknhukvi3ss0D2eb5sc2/1s7ODgB7e3s8kG3+JbYBsM0D2eb5aa3dylVXXXXVVVf9x6By1VVXXXXVVVddddVVV1313yAikMT/RLa5n212dnYA2NvbA8A2D2SbF8Q2D2QbANs8P9M03cpVV1111VVX/cehctVV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wVVXXXXVVVddddVVV1111X+w++6779ZrrrkGSUhCEveTxH8m27yoHvSgBwHwjGc8AwDb3M82D2Qb29jmgWzzQKUU5vM5tVYiAoA77rjjt7nqqquuuuqq/x4EV1111VVXXXXVVVddddVV/8HOnj1765kzZ3j0ox/NA0kCQBL/VrYBsM0LYpvnZpsHss2/l20AbHO/7e1t+r6n1ookAMZxvJWrrrrqqquu+u9BcNVVV1111VVXXXXVVVdd9R/svvvuu/W3fuu3vvvVX/3VkcSLQhL/kWxjG9vY5vl50IMeBMAznvEM7meb+9nmRWUb22xtbTGbzai1Iok77rjjVq666qqrrrrqvw/BVVddddVVV1111VVXXXXVf4Lf+q3f+p5HPepRAEjiP5Nt/jVs89xs8/zY5vmxDYBtHmixWNB1HaUUIoKtra0HX3PNNQ/mqquuuuqqq/57EFx11VVXXXXVVVddddVVV/0nOHv27K2ZeetbvMVbACCJ/2mOHz8OwO7uLg9kmweyjW1sYxvbvCCLxYK+7ymlANBa45prrnkwV1111VVXXfXfg+Cqq6666qqrrrrqqquuuuo/wX333Xfr13/917/Pq7zKq3Dq1CmemyReVLb5j2IbgOPHjwNw6dIl7mebfw3bANjGNrbp+56u64gIAO666y6uuuqqq6666r8RwVVXXXXVVVddddVVV1111X+Ss2fP3nr33Xf/9nu8x3vwn802/xq33HILALfeeiu2eW62+beYzWZ0XUdEIIn77ruPq6666qqrrvpvRHDVVVddddVVV1111VVXXfWf5L777rv1R3/0Rz/72LFjt77Jm7wJL4gk/ivY5l/DNi+IbQBscz/bzGYzaq1IAuDYsWPcd999t3LVVVddddVV/z0Irrrqqquuuuqqq6666qqr/hP9wz/8w+/81m/91ne/0iu9Em/8xm+MJP6j2OaBbPOC2OaBjh07BsDu7i4PZJsHss1zs80D2cY2fd/TdR0RQURgm+PHj3PffffdylVXXXXVVVf996By1VVXXXXVVVddddVVV131n+y3f/u3v+eaa6558Cu+4iu+tyR+7dd+jf9Ktnlux48fB2B3dxcA27wgtrGNbWxzP9s80GKxoO97aq0A7O7u8g//8A+/zVVXXXXVVVf99yG46qqrrrrqqquuuuqqq676T3bffffd+qM/+qOfc/fd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qquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9V/CPgxX99D4QjBQAAAABJRU5ErkJggg==) ```js // Translate and rotate a sketch to create a loft. diff --git a/docs/kcl/scale.md b/docs/kcl/scale.md index 17e8b471c..8a05c4c1d 100644 --- a/docs/kcl/scale.md +++ b/docs/kcl/scale.md @@ -49,9 +49,9 @@ scale( sweepPath = startSketchOn(XZ) |> startProfileAt([0.05, 0.05], %) |> line(end = [0, 7]) - |> tangentialArc({ offset = 90, radius = 5 }, %) + |> tangentialArc(angle = 90, radius = 5) |> line(end = [-3, 0]) - |> tangentialArc({ offset = -90, radius = 5 }, %) + |> tangentialArc(angle = -90, radius = 5) |> line(end = [0, 7]) // Create a hole for the pipe. @@ -65,7 +65,7 @@ sweepSketch = startSketchOn(XY) |> scale(z = 2.5) ``` -![Rendered example of scale 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADhgUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV/0nu+aaax585syZBwNcc801Dz5z5syDeKZrrrnmwTzTNddc82Cey5kzZx589uzZW8+cOfNg/hXOnj17Kw9w33333coz3XfffbeePXv2GQD33XffrQBnz5699b777ruVq6666qqrrrrqqquu+r8FPehBD+Kqq6666qqrrrrqP8qLvdiLvfbrvM7rvNc111zz4DNnzjz4mmuueTD/gvvuu4/73Xfffdzv7Nmz/FucOXOGB7rmmmu45ppreGHuu+++W3mmr//6r3+ff/iHf/htrrrqqquuuuqqq6666n8/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V1111VX/SWzzb2Eb2wDYxja2sQ2AbQBsY5vnRxL3k8QLIonnxzZXXXXVVVddddVVV131fwDBVVddddVVV1111X+CiLgVIDOxzQPZxjYAtvnXsA2Abf4zSQLgmmuueTBXXXXVVVddddVVV131vxeVq6666qqrrrrqqv8kmcn9bGObF8Q2tnkg29jGNraxjW1s80C2eUEk8aKQxFVXXXXVVVddddVVV/0fROWqq6666qqrrrrqP0nXddjmgWzzwtgGwDb3sw2Abe5nG9s8P5IAkMS/lSSuuuqqq6666qqrrrrq/wCCq6666qqrrrrqqv8kR0dHt9rGNs+PbZ4f2wDYxjYAtgGwjW3uZxsA2wBIAkASDySJB5LEc5MEgCQAzp49y1VXXXXVVVddddVVV/0vR+Wqq6666qqrrrrqP0mtFdsA2OYFsc0LYxvb2MY2trGNbV4UkgCQhCSemyTuJwkASUQEV1111VVXXXXVVVdd9b8cwVVXXXXVVVddddV/ktVqdSuAbQBsA2Ab27wobHM/2zw/tnl+JCGJf48zZ848mKuuuuqqq6666qqrrvrfi+Cqq6666qqrrrrqP5FtAGzzL7HN/WxjGwDb2AbANraxjW1sc9VVV1111VVXXXXVVVe9QFSuuuqqq6666qqr/pNEBLaxzf1s80C2AbANgG1scz/bANjGNraxjW1eEElI4gWRBIAkrrrqqquuuuqqq6666v84KlddddVVV1111VX/ScZxvNU2/162AbDNA9nmP4MkJHHhwgWuuuqqq6666qqrrrrqfzkqV1111VVXXXXVVf9JbGMb29jGNg9kmxfENrYBsI1tbGMb29gGwDYviCQkIQlJ/GtFBFddddVVV1111VVXXfW/HMFVV1111VVXXXXVf5LMvNU2tnkg29jmfrZ5QWwDYBsA29jmudnmgSTxH+Gaa655MFddddVVV1111VVXXfW/F8FVV1111VVXXXXVfxLb2OaBbPOC2AbANgC2AbANgG3uZxvb2ObfQxIAkgCQBIAkrrrqqquuuuqqq6666v8AKlddddVVV1111VX/STIT29jGNrb5l9jmgWwDYBvb2MY2L4wknh9JvDCSeCBJXHXVVVddddVVV1111f9yVK666qqrrrrqqqv+k9h+hm1eGNsA2OaBbHM/29gGwDa2sY1tAGzz/EhCEg8kiX+JJAAuXLjAVVddddVVV1111VVX/S9HcNVVV1111VVXXfWfxDa2sY1t7mebF4VtbHM/29gGwDa2sc2/RBLPTRL/kojgqquuuuqqq6666qqr/pejctVVV1111VVXXfWfJCJuzUweyDb3s83zY5sHso1tbANgm+dmmweSxANJ4gWRxHOTBMCZM2cexFVXXXXVVVddddVVV/3vReWqq6666qqrrrrqP0lmYhvbANjmfra5n22em20AbPNAtrGNbWxjG9tcddVVV1111VVXXXXVVc8Xlauuuuqqq6666qr/RJmJbWzzL7GNbe5nGwDb2MY2tgGwzXOzzQNJ4vmRxItCElddddVVV1111VVXXfW/HJWrrrrqqquuuuqq/yQRcSv/Atu8KGxjG9vYBsA2trHNCyKJfw1JAEhid3eXq6666qqrrrrqqquu+l+OylVXXXXVVVddddV/otYatrGNbWxjm+dmm/vZxjYAtrENgG0AbGObB7LNCyIJAEm8KCRx1VVXXXXVVVddddVV/0dQueqqq6666qqrrvpPlJn8W9nmfrYBsA2AbWxjm38rSbwwkrjmmmsezFVXXXXVVVddddVVV/3vReWqq6666qqrrrrqP0lE3CqJzMQ2D2Qb2wDY5n62eSDb2MY2trGNbR7INs9NEg8kiX+JJO4niauuuuqqq6666qqrrvo/gOCqq6666qqrrrrqP1Fmcj/b2OYFsc0LYxsA29jGNrYBsM1zk8Rzk8TzI4nnJomrrrrqqquuuuqqq676X47gqquuuuqqq6666j9R13XY5oFs88LYxja2sY1tbANgG9vYxjYAtgGwDYAk7ieJF0YSL8ju7i5XXXXVVVddddVVV131vxzBVVddddVVV1111X+io6OjW21jm+fHNgC2+ZfYxjYPZJv/aJIAkMRVV1111VVXXXXVVVf9L0flqquuuuqqq6666j9RrRXbANjmfrZ5UdnGNraxjW1sY5v72eYFkcS/liQArrnmmgdz1VVXXXXVVVddddVV/3sRXHXVVVddddVVV/0nWq1WtwLYBsA297PNc7PN/Wxjm+dmG9sA2MY2/1EkcT9JXHXVVVddddVVV1111f9yVK666qqrrrrqqqv+k9kGwDYAtnkg2wDYBsA2trmfbWxjG9vYBsA2D2SbF0YS95PEv+TSpUtcddVVV1111VVXXXXV/3JUrrrqqquuuuqqq/4TRQS2sc2/hW0AbGMb2wDYxja2sc3zIwlJAEjifpJ4IElcddVVV1111VVXXXXV/1FUrrrqqquuuuqqq/4TjeN4q21eENu8ILYBsM39bGMb2wDY5oFsc9VVV1111VVXXXXVVVc9C8FVV1111VVXXXXVf6LMBMA2trENgG0eyDYPZJsHso1tAGwDYBsA2zyQbf69JCGJM2fOPJirrrrqqquuuuqqq67634vKVVddddVVV1111X8i27dmJra5n20AbPPcbPNAtrENgG1sYxvb2MY2ALaxzf0kcT9J/GtIAkASV1111VVXXXXVVVdd9b8cwVVXXXXVVVddddV/ItvY5oWxzQPZBsA297MNgG0AbHM/27yoJPGCSOKqq6666qqrrrrqqqv+j6Fy1VVXXXXVVVdd9Z8oM7GNbWxjmxfENs/NNraxjW0AbGMb29gGwDb/0S5dusRVV1111VVXXXXVVVf9L0dw1VVXXXXVVVdd9Z/I9jNs869lm+dmG9vYBsA2ALYBsI1tXlSSuJ8kHkgSkrjqqquuuuqqq6666qr/5ahcddVVV1111VVX/SeyjW1sYxsA29gGwDYAtnlutgGwjW0AbGMb2wDYBsA2z48k/jUk8UDXXHPNg7nqqquuuuqqq6666qr/vQiuuuqqq6666qqr/hNFxK2Zyf1scz/bPDfb2OZ+trmfbWwDYBvb2MY2/xJJSOJfQxJXXXXVVVddddVVV131vxyVq6666qqrrrrqqv9EmYltbGObfwvb2MY2ALaxjW0eyDYPJImrrrrqqquuuuqqq676f47KVVddddVVV1111X+yzMQ2L4htAGxzP9s8P7axDYBtbGObfytJPDdJAOzv73PVVVddddVVV1111VX/yxFcddVVV1111VVX/SeKiFt5ANvYxjb/EtvYBsA2trGNbWwDYBvb3M82z00S/1qSsM1VV1111VVXXXXVVVf9L0dw1VVXXXXVVVdd9Z+stYZtbPPcbPPcbPNAtrmfbQBsY5v72cY2/5EkAXDNNdc8mKuuuuqqq6666qqrrvrfieCqq6666qqrrrrqP1lmYpvnZpv72QbANs+PbWwDYBvb2MY2tnkg27wwkpDEv0QSV1111VVXXXXVVVdd9b8clauuuuqqq6666qr/RBFxK89kG9u8KGxjG9vYBsA2trHN/WwDYBsA21x11VVXXXXVVVddddVVz0Jw1VVXXXXVVVdd9Z/MNra5n21scz/bANjmBbENgG1sYxvbANgGwDb/FpIAkMRzO3v2LFddddVVV1111VVXXfW/GJWrrrrqqquuuuqq/2Rd12Eb2/xb2AbANvezjW1sYxvbPJBtnh9JvCgkARARXHXVVVddddVVV1111f9iBFddddVVV1111VX/yY6Ojm61DYBt7mcb2zw32wDYxjYAtrGNbWxjG9vY5n62eW6SAJDEi0IS95MEwJkzZx7MVVddddVVV1111VVX/e9E5aqrrrrqqquuuuo/Wa0V29gGwDbPzTYAtgGwzf1scz/b2OaBbGMbANv8e0niqquuuuqqq6666qqr/o8guOqqq6666qqrrvpPtlqtbuW52OZFYRsA29gGwDa2sY1tAGxjGwDbPD+S+Nc6d+4cV1111VVXXXXVVVdd9b8YwVVXXXXVVVddddV/AdvYxjbPzTYAtvmX2AbANraxjW3+M0hCElddddVVV1111VVXXfW/GJWrrrrqqquuuuqq/2SSyEyem21eGNsA2MY2trGNbWxjG9vYxja2sc1zk8S/RBIPJAmAUgpXXXXVVVddddVVV131vxjBVVddddVVV1111X+yaZpuBbCNbWxzP9s8N9vYBsA297MNgG1s81/lmmuueTBXXXXVVVddddVVV131vxOVq6666qqrrrrqqv9kmYltHsg2D2QbANs8N9vYBsA2tgGwjW1sYxvb2MY2LwpJXHXVVVddddVVV1111f9xVK666qqrrrrqqqv+k9m+1Ta2+dewzQPZxjYAtrGNbWzzn0ESkrjqqquuuuqqq6666qr/xahcddVVV1111VVX/SezjW0AbGOb58c2z802ALa5n21sY5v72cY2/9EuXLjAVVddddVVV1111VVX/S9G5aqrrrrqqquuuuo/WWZiG9s8kG0AbPNAtrHN/WwDYBvb2MY2ALaxjW0AbANgm38rSdwvIrjqqquuuuqqq6666qr/xahcddVVV1111VVX/Sez/YzMxDa2AbANgG1eFLYBsI1tAGxjG9sA2AbANv+Rzpw58yCuuuqqq6666qqrrrrqfycqV1111VVXXXXVVf/JbPNAtnlutgGwzf1sYxvbANjmfraxjW0AbANgm3+JJP4lkpDEVVddddVVV1111VVX/S9H5aqrrrrqqquuuuo/WUTcmpnY5t/KNraxjW1sYxsA2wDY5gWRxPMjiQeSxAPt7u5y1VVXXXXVVVddddVV/4tRueqqq6666qqrrvpPlpnYBsA2ALaxDYBtAGxzP9s8P7axjW1sYxvb2OZ+tnlBJPGCSOK5SeKqq6666qqrrrrqqqv+F6Ny1VVXXXXVVVdd9V8gM7ENgG3uZ5vnZpv72cY2trHNc7MNgG0AbHM/27wgkviXSOKqq6666qqrrrrqqqv+l6Ny1VVXXXXVVVdd9Z8sIm61jW1s86KyzXOzjW1sYxvb2Oa52ea5SeJfSxLXXHPNg7nqqquuuuqqq6666qr/nahcddVVV1111VVX/RfITF4Y2wDY5vmxjW1sYxvb2AbANrYBsM1VV1111VVXXXXVVVdd9SwEV1111VVXXXXVVf8FMhPb2MY2trHNC2Kb+9nmgWxjG9vYxja2uZ9t/jUk8dwkASCJq6666qqrrrrqqquu+l+M4Kqrrrrqqquuuuo/WUTcCmCb58c2ALYBsA2AbWwDYBvb2OaBbHM/29jmP4okdnd3ueqqq6666qqrrrrqqv/FqFx11VVXXXXVVVf9F7CNbWzzQLb5l9jmfraxjW1sYxvb2OZ+trHNv5UkHuiaa655MFddddVVV1111VVXXfW/E8FVV1111VVXXXXVf4FSCvezjW3+tWwDYBvb2AbANrYBsM1/JElcddVVV1111VVXXXXV/2IEV1111VVXXXXVVf8F1uv1rbaxzf1scz/bANjmgWwDYBsA2wDYxja2uZ9trrrqqquuuuqqq6666qrnQHDVVVddddVVV131X6CUgm0AbPMvsY1tAGwDYBsA29zPNraxzf1s8x9lb2+Pq6666qqrrrrqqquu+l+M4Kqrrrrqqquuuuq/wGq1utU2z802tgGwDYBtnpttAGxjG9vYxja2sY1tbANgG9u8qCTx3CRx1VVXXXXVVVddddVV/8tRueqqq6666qqrrvovZBsA27wobHM/29gGwDa2AbDNVVddddVVV1111VVXXfV8Ubnqqquuuuqqq676LxARZCa2sQ2AbV4UtrHN/WxjG9vYBsA2ALaxzb+XJAAkcebMmQdz1VVXXXXVVVddddVV/ztRueqqq6666qqrrvovMI7jrbwQtgGwDYBtbPNAtrGNbe5nG9vYBsA2D2Sbq6666qqrrrrqqquu+n+MylVXXXXVVVddddV/gczENrYBsA2AbWzzgtjm+bGNbWxjmweyjW3+LSTxQHt7e1x11VVXXXXVVVddddX/YlSuuuqqq6666qqr/gvYvjUzAbANgG0eyDYAtnkg29jGNraxjW1sA2Ab2wDY5j+KJK666qqrrrrqqquuuup/OYKrrrrqqquuuuqq/wK2AbDNv5dtbGMb2wDY5rnZ5qqrrrrqqquuuuqqq/6fo3LVVVddddVVV131XyAzsQ2AbWzz/NgGwDa2uZ9tbGOb+9nGNrYBsI1tbPPvIYn7SeKaa655MFddddVVV1111VVXXfW/E5Wrrrrqqquuuuqq/wK2n5GZ2OaBbANgm+fHNra5n21sYxsA29jGNg9km6uuuuqqq6666qqrrroKgquuuuqqq6666qr/AraxzQPZBsA2D2Sb58c2ALaxjW3uZxsA29jm30ISz00SV1111VVXXXXVVVdd9b8Ylauuuuqqq6666qr/ApJutY1tbGOb52abF8Q2ALa5n21sYxsA2/xHkYQk9vb2uOqqq6666qqrrrrqqv/FqFx11VVXXXXVVVf9F7CNbWzzorKNbWwDYBsA29jGNraxjW0AbGMb29jmhZHEVVddddVVV1111VVX/R9HcNVVV1111VVXXfVfJDMBsA2AbWwDYBsA2wDY5oFsA2Ab29gGwDa2sc1/pmuuuebBXHXVVVddddVVV1111f8+VK666qqrrrrqqqv+C0TErbaxDYBt7mebF4VtHsg2D2Qb2zyQbf49JHHVVVddddVVV1111VX/i1G56qqrrrrqqquu+i+SmdjGNi+MbR7INvezjW1sYxvb2MY297ONbf6jnD17lquuuuqqq6666qqrrvpfiuCqq6666qqrrrrqv0hmYpsXxDYPZBvbANjGNvezDYBtbGMbANvczzb/XpKICK666qqrrrrqqquuuup/KYKrrrrqqquuuuqq/wIRcaskAGxjG9vY5vmxzfNjG9vYxja2sY1tbGMb2/xHkIRtAM6cOfNgrrrqqquuuuqqq6666n8fKlddddVVV1111VX/RTIT2zw329gGwDbPzTYPZBsA27wgtnlBJPGiksRVV1111VVXXXXVVVf9L0blqquuuuqqq6666r9IKQXb2OaFsc1zs41tbANgG9vYxja2sY1tbPNAtrnqqquuuuqqq6666qr/pwiuuuqqq6666qqr/ousVqtbbQNgG9u8MLaxzXOzjW0AbGMb29jmfraxzX+Ec+fOcdVVV1111VVXXXXVVf9LUbnqqquuuuqqq676L1Jr5bnZ5n62uZ9t7mcb29jGNvezjW0eyDa2uZ9t/i0kASCJiOCqq6666qqrrrrqqqv+lyK46qqrrrrqqquu+i+yWq1utY1tbHM/29gGwDb/EtvYxjYAtrGNbf4zRARXXXXVVVddddVVV131vxTBVVddddVVV1111X8h29jmRWWb+9nGNgC2AbCNbWxjG9vYxjb/VpJ4btdcc82Dueqqq6666qqrrrrqqv99qFx11VVXXXXVVVf9F8lMbHM/29jmudkGwDYAtrHN/WwDYBvb2OZ+trmfbf49JHHVVVddddVVV1111VX/y1G56qqrrrrqqquu+i+Smbfaxja2eW62+ZfYxja2sY1tAGxjGwDb/FtJ4oEkIYmrrrrqqquuuuqqq676X4rKVVddddVVV1111X8R29jmudnmudnmudnmgWwDYBvb2OZ+tgGwzb/XxYsXueqqq6666qqrrrrqqv+lqFx11VVXXXXVVVf9F7F9q21sYxvb3M82ALZ5INsA2AbANraxDYBtbPNAtvmPdubMmQdx1VVXXXXVVVddddVV//tQueqqq6666qqrrvovYhvbPJBtnpttAGwDYBsA29zPNraxjW1sY5v72cY297PNv5Ukrrrqqquuuuqqq6666n8pKlddddVVV1111VX/RTIT29jm38o2tgGwzf1scz/bPJBt/q0kcdVVV1111VVXXXXVVf+LUbnqqquuuuqqq676L2L7GbaxjW1sA2AbANvczzYPZJsHsg2AbWxjG9v8Z9jd3eWqq6666qqrrrrqqqv+l6Jy1VVXXXXVVVdd9V/ENrZ5INsA2AbANg9kG9sA2MY2trGNbWxjGwDbANjGNraxzb+VJK666qqrrrrqqquuuup/OSpXXXXVVVddddVV/0Uk3Wob29jmX2KbF8Y297PNfxZJXHXVVVddddVVV1111f9SVK666qqrrrrqqqv+i9gmM7mfbZ4f2zw329jGNraxDYBtbGMb2wDYxjb/HpIAkATANddc82Cuuuqqq6666qqrrrrqfx+Cq6666qqrrrrqqv9CtrGNbe5nGwDb3M8297PNA9kGwDa2sQ2AbR7INv8RJHHVVVddddVVV1111VX/S1G56qqrrrrqqquu+i8SEbdmJrYBsI1tAGzz/NjmgWwDYBvb2MY2tgGwjW1eGNtcddVVV1111VVXXXXV/xMEV1111VVXXXXVVf+FbPPC2OZ+trmfbWwDYJvnZhvb2AbANgC2sc2/x6VLl7jqqquuuuqqq6666qr/pQiuuuqqq6666qqr/gtlJraxzQtim3+JbWxjG9sA2AbANv/Rrrnmmgdz1VVXXXXVVVddddVV//tQueqqq6666qqrrvovEhG3SsI2ALaxjW0AbPPcbGOb+9nGNraxjW1sYxsA2wDYxjb/XpKQxFVXXXXVVVddddVVV/0vRXDVVVddddVVV131XygzAbDNA9nmgWzzQLaxzQtiG9sA2Ob5sc1VV1111VVXXXXVVVf9P0Plqquuuuqqq6666r9QKQXbvCC2uZ9tnpttbGMb29jGNgC2uZ9tAGwDYJt/LUkAXLp0iauuuuqqq6666qqrrvpfiuCqq6666qqrrrrqv9BqtbrVNraxjW1s88LYBsA2z802trHN/WwDYJurrrrqqquuuuqqq676f47KVVddddVVV1111X+hWiu2eX5sA2Cb+9kGwDYAtrGNbWxzP9vY5j+DJM6cOfNgrrrqqquuuuqqq6666n8fgquuuuqqq6666qr/QqvV6lbb2MY297PNA9nmX2Ib29jmfraxjW3uZ5t/K0lcddVVV1111VVXXXXV/2IEV1111VVXXXXVVf+FbPNAtnlR2QbANrYBsI1tbGObB7KNbf61JHHVVVddddVVV1111VX/R1C56qqrrrrqqquu+i8UEdjGNvezzf1scz/bANjGNgC2AbCNbe5nG9sA2MY2/1H29va46qqrrrrqqquuuuqq/6WoXHXVVVddddVVV/0XGsfxVtsA2Ob5sc39bPPC2MY2V1111VVXXXXVVVddddXzReWqq6666qqrrrrqv5BtbGObB7KNbe5nm+dmG9vYxja2sY1tbGMbANvYxjZXXXXVVVddddVVV131/xzBVVddddVVV1111X8h27faxja2sY1t/iW2eW62uZ9tbPPcbPNvIQkASUjimmuueTBXXXXVVVddddVVV131vw+Vq6666qqrrrrqqv9CtslMXhDb3M82ALZ5INvYBsA2trmfbWwDYBsA29jmqquuuuqqq6666qqr/h+ictVVV1111VVXXfVfqLUGgG0AbANgm+fHNvezjW3uZxsA29jGNvezzb+XJAD29/e56qqrrrrqqquuuuqq/6UIrrrqqquuuuqqq/5rPSMzAbDNA9kGwDYvjG1sA2AbANvYBsA2/5Fsc9VVV1111VVXXXXVVf9LUbnqqquuuuqqq676L2QbANvczzbPzTb3s41tbGOb+9nGNra5n20AbGMb2/x7SeKqq6666qqrrrrqqqv+lyK46qqrrrrqqquu+i8k6dbMxDa2sc0D2eZ+tnl+bGMb2wDYxja2AbDN82Mb2/xbXXPNNQ/mqquuuuqqq6666qqr/nehctVVV1111VVXXfVfyDa2eW62sc1zs80LY5sHsg2Abe5nm6uuuuqqq6666qqrrvp/iuCqq6666qqrrrrqv1hmYhvbANjmgWzz3GxjG9vYxja2sY1tbGMbANsA2ObfSxKSOHv2LFddddVVV1111VVXXfW/EJWrrrrqqquuuuqq/0IRcSsPYJvnxzb3s82/xDa2sc0D2QbANs/NNi+qiOCqq6666qqrrrrqqqv+FyK46qqrrrrqqquu+i+WmdjGNs/NNvezzXOzDYBtbGMb29zPNraxzX+0M2fOPJirrrrqqquuuuqqq67634Xgqquuuuqqq6666r9YZmKb+9nGNrZ5brYBsI1tAGzzQLaxjW0eyDZXXXXVVVddddVVV131/xyVq6666qqrrrrqqv9CEXErgG0AbPPcbPMvsY1tbANgGwDbANgGwDa2+feQxFVXXXXVVVddddVVV/0vRXDVVVddddVVV131XywzAbDNC2Kb+9nmfraxzQPZBsA2/1nOnz/PVVddddVVV1111VVX/S9EcNVVV1111VVXXfVfrLV2q20eyDYAtrmfbV4Q29jGNraxjW1sYxvb2OY/SkRw1VVXXXXVVVddddVV/wtRueqqq6666qqrrvovlpnYxja2sQ2AbZ6bbQBsYxsA29zPNi8q2/xrSQJAElddddVVV1111VVXXfW/EMFVV1111VVXXXXVf7FaK7Z5QWzzQLa5n20AbGMbANvYxja2sY1tbGMb29jmX0sSAJIAuOaaax7MVVddddVVV1111VVX/e9CcNVVV1111VVXXfVfbL1e3wpgG9v8e9gGwDYAtvmX2Oaqq6666qqrrrrqqqv+nyC46qqrrrrqqquu+i9mG9vczza2eSDb2OZ+trENgG0AbANgGwDbANjmP9qFCxe46qqrrrrqqquuuuqq/4UIrrrqqquuuuqqq/6L2cY2tnkg29jmgWzzQLYBsA2AbQBsYxvbANjGNrZ5INv8W0QEV1111VVXXXXVVVdd9b8Qlauuuuqqq6666qr/Ypl5q20AbPMvsc0D2QbANgC2eSDb/Gc4c+bMg7jqqquuuuqqq6666qr/XQiuuuqqq6666qqr/ovZBsA2ALZ5INs8P7axDYBtAGxjG9vYxjYAtrmfbWzzQLZ5UUlCElddddVVV1111VVXXfW/EJWrrrrqqquuuuqq/2K2b81MAGwDYJsHss0D2ea52eZ+trmfbQBsY5urrrrqqquuuuqqq676f4zgqquuuuqqq6666r+YbWxjmweyjW3uZxvbPDfb2AbANrYBsI1tAGzz3Gzzb3Xx4kWuuuqqq6666qqrrrrqfyEqV1111VVXXXXVVf/FbPNAtnlhbHM/29zPNvezzf1sA2Cb/yiSuOqqq6666qqrrrrqqv+FCK666qqrrrrqqqv+i7XWyExsYxsA29zPNs+Pbe5nGwDb2AbANrYBsM39bPPvIQmAa6655sFcddVVV1111VVXXXXV/y5Urrrqqquuuuqqq/7rPcM2tnlBbPNAtrmfbQBscz/b2AbANvezzb+HJAAkcdVVV1111VVXXXXVVf8LEVx11VVXXXXVVVf9N7ANgG1sA2Ab29zPNs/NNg9kG9vczzb3s839bHPVVVddddVVV1111VX/D1G56qqrrrrqqquu+i8m6Vbb2OZ+tnl+bGMbANsA2MY2trENgG1sA2Ab2/x7SOKqq6666qqrrrrqqqv+DyC46qqrrrrqqquu+i9mG9sA2Oa52ea52eYFsY1tAGzzQLaxzb/XpUuXuOaaax7MVVddddVVV1111VVX/e9C5aqrrrrqqquuuuq/WETcmpnYBsA2ALaxDYBtnh/bANjGNraxDYBtbANgG9s8N9v8a0niqquuuuqqq6666qqr/peictVVV1111VVXXfXfIDOxzQtjmweyDYBtnptt/iW2AbDNv5Ykrrrqqquuuuqqq6666n8hKlddddVVV1111VX/DWxjG9vYxjbPj21s8/zYxja2AbCNbf6jSOJ+ly5d4qqrrrrqqquuuuqqq/4XonLVVVddddVVV131XywibrWNbWxzP9sA2Oa52QbANgC2eSDbPJBtbGMbANv8W0jifmfOnHkwV1111VVXXXXVVVdd9b8LwVVXXXXVVVddddV/g2EYbrUNgG1sA2AbANs8N9sA2AbANraxDYBtbGObB7LNv4ckJHHVVVddddVVV1111VX/C1G56qqrrrrqqquu+m8gCdvY5gWxjW1s89xs80C2eSDb/Efa29vjmmuueTBXXXXVVVddddVVV131vwvBVVddddVVV1111X+DaZputY1tbGMb2wDY5rnZBsA2tgGwjW1sA2Ab2/x7SOK5SUISV1111VVXXXXVVVdd9b8QwVVXXXXVVVddddV/A9vY5rnZBsA2z80297PNA9nmfrYBsM2/hSSe2/7+PgDXXHPNg7nqqquuuuqqq6666qr/PQiuuuqqq6666qqr/htEBLaxjW2eH9vY5rnZBsA2trGNbWxzP9sA2Oa5SeJFIQlJSOJ+Z86ceTBXXXXVVVddddVVV131vweVq6666qqrrrrqqv8GwzDcmpnYBsA2tgGwzQPZxjYAtgGwzf1sA2Ab2/xbSeJ+knggSVy4cIGrrrrqqquuuuqqq676X4bgqquuuuqqq6666r9BZt5qG9vY5n62eUFs80C2sQ2Abf6zSEISFy5c4JprrnkwV1111VVXXXXVVVdd9b8Hlauuuuqqq6666qr/Bq01bHM/29jmfraxzXOzjW1scz/bANjGNgCSsM2LShLPjyQAJBERXHXVVVddddVVV1111f8yVK666qqrrrrqqqv+G9h+RmZiG9vczza2uZ9tbGOb52Yb2wDY5oFs8/xI4kUlCQBJSGJ3d5czZ848iKuuuuqqq6666qqrrvrfg+Cqq6666qqrrrrqv4GkWzMT29jGNv8S2wDYxjYAtrGNbWxjmxdEEveTxP0k8UCSuJ8kACRx6dIlrrnmmgdz1VVXXXXVVVddddVV/3sQXHXVVVddddVVV/03sE1mYpv72eZ+trHNc7PN/WwDYJv72cY2LwpJSOKBJAEgiftJAuDSpUtcc801D+aqq6666qqrrrrqqqv+96By1VVXXXXVVVdd9d8gIm7NTGxjG9sA2MY297ONbWxjGwDb2AbANgC2sc39bPOvJYkHksT9IoK9vT3OnDnzYK666qqrrrrqqquuuup/D4Krrrrqqquuuuqq/yaZiW1sYxvb3M82z49t7mcbANsA2MY2tgGwjW2emyReVJKQBMD+/j5XXXXVVVddddVVV131vwzBVVddddVVV1111X+DiLjVNpmJ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V1111VVXXfU/2Ww2+61rr732tTc3N5nNZnRdR9d1lFKotVJKISIopRARRASlFCKCUgoRQSmFiKCUQkQQEZRSiAgiAklEBJIAkASAbQBsYxvb2MY2trGNbTIT29jGNraxjW1sYxvb2AbANraxjW1sYxvbZCa2sU1mYhvb2MY2/1PYxja22dzc5Prrr8c2N9xwA9vb28xms1v/4R/+4bd/67d+63v+4R/+4be56qqrrrrqqquuuuq/A3rQgx7EVVddddVVV1111f9ktdbfuuaaa157e3ub2WxG3/d0XUcphVorpRQiglIKEUEphYggIiilEBGUUogISilEBBFBKYWIICKICCQhCUkASALANgC2sY1tbGMb29jGNraxjW1sYxvb2MY2ALaxDYBtAGxjG9vYxja2AchMAGxjm/vZ5kUliX8v2wBIAsA2tgGwjW0yk8zENq01NjY2uO6663jMYx7DbDa79bd+67e++7d/+7e/57777ruVq6666qqrrrrqqqv+q6AHPehBXHXVVVddddVVV/1Plpmvfe211/7WsWPHWCwW9H1PrZVaK7VWSimUUogISilEBBFBKYWIICIopRARlFKICCKCUgoRQUQQEUgiIpAEgCQAbHM/29jGNraxjW1sYxvb2AbANraxjW3uZxsA29zPNgC2AbANgG0AbANgGwDbPDdJ/FexDYBtbJOZ2CYzsU1m0lqjtUZrjY2NDR7xiEfwqq/6qtx33323fv3Xf/37/MM//MNvc9VVV1111VVXXXXVfzb0oAc9iKuuuuqqq6666qr/yTLzwSdPnnz6iRMn2NjYoO97uq6j1kqtlVIKpRQiglIKEUFEUEohIogISilEBKUUIoKIoJRCRBARRAQRgSQkIQkASQDYBsA2ALaxjW1sA2Ab29jGNgC2sc39bPNvYRsA2/xPYBvb2MY2mYltMpPMJDNprZGZtNZorTFNE4vFgkc+8pE89rGPZRiGWz/rsz7rde67775bueqqq6666qqrrrrqPwt60IMexFVXXXXVVVddddX/dLPZ7Leuueaa197c3GQ2m9H3PbVWaq2UUiilEBGUUogISilEBBFBKYWIICIopRARRASlFCKCiCAiiAgkEREASAJAEgC2AbANgG1sA2Ab29gGwDa2uZ9tHkgS95MEgCQAJCEJSUhCEvfLTABs89wk8V/FNpmJbTKTzKS1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rrrqqv8lCK666qqrrrrqqqv+D/vFX/zFX+Cq/xGOjo6+Z3d397eHYWCaJlprZCa2sY1tbGMb29jGNraxjW1s80C2sY1tbPNvJYn7SUISz00SkpDEpUuXeOxjH/taXHXVVVddddVVV/3PR3DVVVddddVVV131f9zbvd3biQd4u7d7O3HVf4dbd3d332e5XDJNE9M00VojM8lMMpPMxDa2sQ2AbWxjGwDb2MY2tnlutrENgG1eGEk8kCTuJwkASUjifhHB7u4uV1111VVXXXXVVf9LEFx11VVXXXXVVVf9P/AjP/Ijnw3wIz/yI5/NVf9tbN963333vc96vWaaJjKT1hqZiW1sYxvb2MY2trmfbWxjm/vZxja2sc1zsw2Abf61JHE/SUhCEru7u7z4i7/463DVVVddddVVV131Px/BVVddddVVV1111f8D11xzzYMBXud1Xue9ueq/1TRN333hwoXfHseRaZrITDKTzMQ2trGNbWxjG9vYxjb3s41tbPPcbGOb+9nmBZEEgCReEEkASEISEcE111zzYK666qqrrrrqqqv+5yO46qqrrrrqqquu+n/gxV7sxV4b4Jprrnnwi73Yi702V/23Ojg4eJ/1es00TbTWyEwyk8wkM8lMbGMb29jGNgC2sY1t7mcb29jGNvezzb+FJCQBIAkASQBI4tKlS9x3331cddVVV1111VVX/S9AcNVVV1111VVXXfV/3Iu92Iu91jXXXPNgnunFXuzFXour/rvdeu7cue8ehoFpmshMMpPMxDa2sY1tAGwDYBvb3M82tnl+bPOiksT9JHE/STyQJAAkIelB11xzzYO56qqrrrrqqquu+p+N4Kqrrrrqqquuuur/uGuuuebBPMDrvM7rvDdX/bdbr9efs16vmaaJ1hqZiW0yE9vYxja2sY1tbANgG9vczza2sY1tbHM/27yoJPH8SOJ+kpCEJM6cOfNgrrrqqquuuuqqq/5nI7jqqquuuuqqq676P+7FXuzFXpsHuOaaax784i/+4q/NVf+tJN169uzZ9xmGgWmayEwyE9vYxja2sY1tbANgG9sA2MY2tvnPIgkASUhCEpJ48pOfzDXXXPNgrrrqqquuuuqqq/5nI7jqqquuuuqqq676P+7FXuzFXpvn8tjHPva1uOq/3TRNvz0MA9M00VojM8lMMhPb2MY2ALaxjW0AbGOb+9nGNraxjW1sA2Cb50cS95PEi0oSpRTOnDnzIK666qqrrrrqqqv+ZyO46qqrrrrqqquu+j/sxV7sxV77mmuueTDP5cVf/MVfh6v+20XErffdd99nD8NAa43WGpmJbTIT29jGNraxDYBtbANgG9v8S2wDYBsASQBI4rlJQhL3kwSAJCQhiac97Wlcc801D+aqq6666qqrrrrqfzaCq6666qqrrrrqqv/DrrnmmgfzfLzYi73Ya73Yi73Ya3PVf7vM/J5hGJimicwkM8lMbGMb29gGwDa2sQ2Abe5nG9s8N9vczzb/EkncTxL3kwSAJCQhiauuuuqqq6666qr/BQiuuuqqq6666qqr/g97sRd7sdfiBXixF3ux1+Kq/3YRcev+/v5vj+NIa43MJDOxTWZiG9vYBsA2ALYBsI1t7mcb29jGNi8KSQBI4rlJ4n6SAJDE7u4uL/ZiL/baXHXVVVddddVVV/3PRnDVVVddddVVV131f9iLvdiLvTYvwIu/+Iu/Nlf9j3B4ePjZ6/WaaZrITGyTmdjGNraxjW1sYxsA29gGwDa2eX5s8x9FEpKQxFVXXXXVVVddddX/AgRXXXXVVVddddVV/0e92Iu92Gtfc801D+YFOHPmzIO56n+EUsrvHBwc/PY0TbTWyExsYxvb2MY2tgGwjW1sA2Cb+9nGNvezzYtCEi+IJCRxP0lcunSJq6666qqrrrrqqv8FqFx11VVXXXXVVVf9H/Zbv/Vb380zvc7rvM57A/zWb/3Wd/NM11xzzYPvu+++W7nqv93BwcFvHzt27LW7rqO1RkQQEWQmkrCNbWwjCdtIwjaSsI0k7mcbAEkA2EYSLwpJSEISDyQJSdxP0oO56qqrrrrqqquu+p+NylVXXXXVVVddddX/Uf/wD//w2//wD//w2zzT67zO67w3wNd//de/D1f9jyPpe8Zx/OzWGplJZpKZSMI2trGNbWwjCdtIwjaSsA2AJP6tJGGb+0niuUlCEufOneOaa6558H333XcrV1111VVXXXXVVf8zEVx11VVXXXXVVVddddX/ABFx6+Hh4W+31shMMhPb2MY2trmfbWwDYBsA29zPNraxjW1s84JI4n6SeEEk8UCSkMRVV1111VVXXXXV/3AEV1111VVXXXXVVf9P3HfffbcCXHPNNQ/mqv+Rjo6Ovqe1RmaSmWQmtrGNbWxjGwDb2AbANgC2sc0LYpvnRxIvjCQAJCEJSUji/PnznDlz5sFcddVVV1111VVX/c9FcNVVV1111VVXXXXVVf9z/PY4jrTWsE1mkpnYxja2sY1t7mcbANvczzb/WpL415BERHDVVVddddVVV131PxzBVVddddVVV1111VVX/Q8REbceHh7+dmuNzMQ2trGNbWxjG9vYxjYAtgGwzf1sYxvb2MY2ALZ5YSQhCUlI4vmRhCTOnz/PVVddddVVV1111f9wBFddddVVV1111VX/T5w9e/ZWgDNnzjyYq/7HWi6Xv91aIzOxjW0yE9vYxjb3s41tAGwDYBvb/EeRxANJAkASEcE111zzYK666qqrrrrqqqv+5yK46qqrrrrqqquuuuqq/0Faa7/TWiMzsY1tbGMb2wDYxjb3sw2Abe5nm3+JJB5IEi+IJCQBIAmAixcvcubMmQdx1VVXXXXVVVdd9T8XwVVXXXXVVVddddVVV/0PIunWaZrITDIT29zPNraxjW1sYxsA2wDY5n62sQ2AbWwDYJt/DUk8N0lcvHiRq6666qqrrrrqqv/hCK666qqrrrrqqquuuup/kIi49ejo6LczE9vYxja2AbCNbe5nG9sA2AbANg9km38NSUji+ZHE/SRx1VVXXXXVVVdd9T8cwVVXXXXVVVddddX/E/fdd9+tANdcc82Duep/tNVq9duZSWZiG9vYxja2AbCNbe5nGwDbANjmhbHN/SQhCQBJ3E8Sz48kJCGJa6655sFcddVVV1111VVX/c9FcNVVV1111VVXXXXVVf/DtNZ+p7WGbWxjG9vYBsA2trGNbWwDYBsA2wDYxjYPZJt/DUkASEISD7S7u8s111zzYK666qqrrrrqqqv+5yK46qqrrrrqqquuuuqq/2Ek3TpNE5lJZmKb+9nGNs/NNi+IbWxjmxdGEi8qSVx11VVXXXXVVVf9L0Bw1VVXXXXVVVdd9f/EfffddyvAmTNnHsRV/6NFxK2r1eq3MxPb2MY2trmfbWxjG9vczzYAtrHNfwRJ3E8SkgCICK666qqrrrrqqqv+hyO46qqrrrrqqquuuuqq/4HGcSQzsY1tbGMb29jGNg9kG9sA2OZ+tnlhJPFAkpCEJF4YSezu7nLmzJkHc9VVV1111VVXXfU/F8FVV1111VVXXXXVVVf9D7RarX47M7GNbWwDYJv72cY2trmfbQBscz/bPJBtAGxzP0k8N0lcddVVV1111VVX/S9HcNVVV1111VVXXXXVVf8z/XZmkpnYBsA2ALZ5fmzzQLa5n21sY5sXRBIvjCSe2zXXXPNgrrrqqquuuuqqq/7nIrjqqquuuuqqq676f+Ls2bPPALjmmmsezFX/G9yamdgGwDYPZBvb2MY2trmfbf6jSAJAEgCSkIQkJPG4xz3uVq666qqrrrrqqqv+5yK46qqrrrrqqquuuuqq/4Ei4hm2sY1tbGMb27wgtrENgG0AbPMvkcT9JCEJSbworrnmmgdz1VVXXXXVVVdd9T8XwVVXXXXVVVddddVVV/0PtVwuf9s2tnkg29jGNraxjW3uZxsA2wDYxjb/VpK46qqrrrrqqquu+l+K4Kqrrrrqqquuuur/ifvuu+9WgGuuuebBXPW/QmuNzMQ2trGNbV4Y27wgtvnXkMQLI4mrrrrqqquuuuqq/+EIrrrqqquuuuqqq6666n+oYRh+2za2sY1tAGzzQLaxjW3uZxsA2zyQbWxjmweShCReVJIAkMRVV1111VVXXXXV/2AEV1111VVXXXXVVVdd9T/UOI7Yxjb3sw2AbWxjm+dmmweyzYtKEpKQBIAkACQhCQBJXHXVVVddddVVV/0vQXDVVVddddVVV131/8yZM2cezFX/W/xOZgJgG9u8ILaxjW3uZ5v72eY/giTuJ4mrrrrqqquuuuqq/+EIrrrqqquuuuqqq/6fOHv27K1c9b+KbWxjm/vZxjYPZJvnZhsA29zPNv8akgCQxFVXXXXVVVddddX/UgRXXXXVVVddddVVV131P1RE3Gob29jmgWzzgtjm30ISAJJ4UZ07d46rrrrqqquuuuqq/8EIrrrqqquuuuqqq6666n8w29gGwDYPZBvb3M82trmfbQBscz/bvDCSAJDECyOJq6666qqrrrrqqv8FCK666qqrrrrqqqv+n7jvvvtuBbjmmmsezFX/K0TErZIAsA2AbWzz3GzzorLNA0lCEs+PJK666qqrrrrqqqv+FyO46qqrrrrqqquuuuqq/8GGYbjVNgC2eVHZBsA2ALb515LEVVddddVVV1111f9yBFddddVVV1111VVXXfU/WEQAYJsHss39bANgG9vY5vmxzf1s89wkASCJ5yYJSTy306dPc9VVV1111VVXXfU/GMFVV1111VVXXXXVVVf9DzYMw622eX5sY5sXxDYAtnlRSQJAEveTxANJAkASV1111VVXXXXVVf/DEVx11VVXXXXVVVf9P3LffffdCnDNNdc8mKv+V7DNA9nGNv8S2zw/tvnXkMQLc999993KVVddddVVV1111f9cBFddddVVV1111VVXXfU/mG1sA2CbF8Q2ALaxzf1sA2CbF0YS95MEgCSemySuuuqqq6666qqr/hehctVVV1111VVXXXXVVf+DZeatALb5zyYJANtI4qqrrrrqqquuuur/AIKrrrrqqquuuuqq/0fOnj17K8A111zzYK76P882D2QbANv8R5mmiauuuuqqq6666qr/wQiuuuqqq6666qqrrrrqfzDbPD+2uZ9tXhjbvDCSeCBJvKiuvfZarrrqqquuuuqqq/4HI7jqqquuuuqqq6666qr/I2wDYBvb/GtIQhKSAJCEJCRx1VVXXXXVVVdd9b8YwVVXXXXVVVddddVVV/0vZRvbvDC2AbANgG3+tSQhiauuuuqqq6666qr/hQiuuuqqq6666qqr/h+57777bgU4c+bMg7nqfwVJ/GvY5t9DEpK46qqrrrrqqquu+j+C4Kqrrrrqqquuuuqqq/6Pss2/hiTuJwlJvDClFM6ePXsrV1111VVXXXXVVf9zUbnqqquuuuqqq6666qr/wSTxn0kSAJK4nyReFFtbW1x11VVXXXXVVVf9D0dw1VVXXXXVVVdd9f/IfffddyvAmTNnHsRV/yt0XfdgSfxLbHM/29jmfrYBsM3zI4n7SeKBJHE/STyQJK666qqrrrrqqqv+hyO46qqrrrrqqquuuuqq/8EyEwBJ/EeyzXOTxP0k8S85duwY9913361cddVVV1111VVX/c9FcNVVV1111VVXXfX/xLd927f9+Tu90zt9NsA7vdM7ffZP/MRPmKv+x5PEfwVJAEhCEgCSuOqqq6666qqrrvpfjuCqq6666qqrrrrq/4mTJ0++HM9lY2NDXPV/mm2em20k8dwk8fxI4qqrrrrqqquuuup/KYKrrrrqqquuuuqq/wck8fy8z/u8z7dx1f94kgCQxL+VbV4QSdxPEpKQxL/k+PHj3Hfffbdy1VVXXXXVVVdd9T8XwVVXXXXVVVddddX/A7Z5fn7sx37sQ7nqf7RSyoP5N7LNv0QSAJKQxHOTxFVXXXXVVVddddX/YlSuuuqqq6666qqr/h+77777Bq76H00S/10k8YLYxjZnz559BlddddVVV1111VX/cxFcddVVV1111VVX/T/xdm/3dvqQD/mQhwB3AtNnfuZnvg5X/Y9nm38L2zw/tnlukpAEgCQkIYl/yYkTJ7jqqquuuuqqq676H47gqquuuuqqq6666v+fG4H64R/+4d/FVf/jSeLfyzYvCklcddVVV1111VVX/R9DcNVVV1111VVXXfX/yH333XfrP/zDP/w2wDXXXPPg13md13lvrvofTRIvKtv8e0niRXXixAmuuuqqq6666qqr/ocjuOqqq6666qqrrvp/7B3f8R0/i6v+R+v7/sH8J5GEJAAkIQkASbwobHPffffdylVXXXXVVVddddX/XARXXXXVVVddddVV/49dc801D37Hd3zHz+Kq/7EyE0m8MLa5n23+tSRxP0kASEISz49tAGxz1VVXXXXVVVdd9T8cwVVXXXXVVVddddX/c6/zOq/z3tdcc82Duer/DNs8P7Z5QSQhCQBJ/Etsc/LkSc6ePXsrV1111VVXXXXVVf9zEVx11VVXXXXVVVf9P3PmzJkH8wDXXHPNg9/xHd/xs7jqfyTb/HvY5rlJ4oEk8YJI4gWxzVVXXXXVVVddddX/cARXXXXVVVddddVVV/FiL/Zir/3iL/7ir81V/+NI4j+TJO4nCUm8qE6dOsVVV1111VVXXXXV/3AEV1111VVXXXXVVVdxzTXXPPgd3/EdP5ur/kfJzAfzn0gS95PE/SQhiRfFfffddytXXXXVVVddddVV/3MRXHXVVVddddVVV1112Yu92Iu91ou92Iu9Nlf9jySJ+9nmfrYBsM1zs82LQhL3k8TzI4kHso1trrrqqquuuuqqq/6HI7jqqquuuuqqq676f+aaa655MC/Ah3/4h38XV/2/IAkASQBIQhIPJIn72eaBJHHq1Cmuuuqqq6666qqr/oejctVVV1111VVXXXUV9913363/8A//8Nv33XffrVz1f4JtJHE/20ji+ZHEA0nigSTx3Gxz33333cpVV1111VVXXXXV/2xUrrrqqquuuuqqq/6f+ZEf+ZHPPnv27K333XffM97pnd7ps17sxV7stf/hH/7ht7/+67/+fbjqfxxJvCC2kcT9bCOJfwtJSOJ+knh+bAMgiauuuuqqq6666qr/BahcddVVV1111VVX/T/zoz/6o5/DM33913/9rd/0Td/09Bd7sRd77WuuuebB9913361c9T9GZj6YF8A2knhutgGQxL9EEpL4t9jZ2eHs2bO3ctVVV1111VVXXfU/G8FVV1111VVXXXXV/2P33Xffrb/1W7/13ddcc82D3/Ed3/GzuOp/NNv8Z5CEJCQhiauuuuqqq6666qr/Qwiuuuqqq6666qqr/p/70R/90c8BeJ3XeZ33frEXe7HX5qr/MSTxorDNi0oS/xJJvDC2OX78OPfdd9+tXHXVVVddddVVV/3PRnDVVVddddVVV131/9x9991369d//de/D8CHf/iHfxdX/b8gCUlIQhKSkMSLyjZXXXXVVVddddVV/wsQXHXVVVddddVVV13FP/zDP/z23//93//2Nddc8+AP//AP/y6u+h8hMx8MIIn72eZfyzYvKkkASOK52eaqq6666qqrrrrqfxmCq6666qqrrrrqqqu47777bv36r//69wZ4ndd5nfd+ndd5nffmqv92kpDEfzRJ3E8SkpCEJAAkASCJ+0nigY4fP8599913K1ddddVVV1111VX/sxFcddVVV1111VVXXXXZ2bNnn/H1X//173Pffffd+o7v+I6f9WIv9mKvzVX/rSTxorLNfwRJvChsc9VVV1111VVXXfW/AMFVV1111VVXXXXVVc/yW7/1W9/9W7/1W999zTXXPPjDP/zDv+uaa655MFf9t4kI/iW2eWFs84JIAkASkpDEc5PEVVddddVVV1111f9iBFddddVVV1111VVXPYff/u3f/p5/+Id/+O1rrrnmwZ/7uZ/721z1v4ZtXlSSAJAEgCQAJCEJSbwwJ06c4OzZs8/gqquuuuqqq6666n82gquuuuqqq6666qqrnsN9991369d//de/z3333XfrmTNnHvRN3/RNT+eq/xaS+Neyzb+WJAAk8aKyzVVXXXXVVVddddX/AgRXXXXVVVddddVVVz2P++6779bP+qzPep377rvv1muuuebB3/RN3/R0rvovl5kP4t/ANraxzQsjCUlIQhKSkMSL4sSJE1x11VVXXXXVVVf9L0Bw1VVXXXXVVVddddXzdd999936mZ/5ma/9D//wD799zTXXPPibvumbnn7NNdc8mKv+y5RSkMR/NUk8P5K4n23uu+++W7nqqquuuuqqq676n43gqquuuuqqq6666qoX6OzZs8/4+q//+ve57777br3mmmse/Dmf8zm/dc011zyYq/5HsM2/hSQkIQlJSEISkpAEgCQk8YLY5qqrrrrqqquuuup/AYKrrrrqqquuuuqqq16o++6779bP+qzPep1/+Id/+O1rrrnmwZ/7uZ/72+/4ju/4WVz1n04Sz49tHsg2/16SuJ8kXhjbnDhxgrNnz97KVVddddVVV1111f9sBFddddVVV1111VVX/Yvuu+++W7/+67/+fX7kR37ks237nd7pnT77Hd/xHT+Lq/5TSeI/kiSemyQkASAJSbwobHPVVVddddVVV131vwDBVVddddVVV1111VUvkvvuu+/WH/3RH/2c3/qt3/pugHd6p3f67G/6pm96+ou92Iu9Nlf9p5D0YF4A2/x7SEISkpCEJCTxojp58iRXXXXVVVddddVV/wsQXHXVVVddddVVV131r/KjP/qjn/MhH/IhD/mHf/iH377mmmse/OEf/uHf9U7v9E6fzVX/4STxorLNi0ISz48kACQhCUn8S+67775bueqqq6666qqrrvqfjeCqq6666qqrrrrqqn+1++6779av//qvf58f+ZEf+exrrrnmwe/4ju/4Wd/0Td/09Hd8x3f8LK76DyWJF5VtbPOikoQkJAEgiecmiauuuuqqq6666qr/xQiuuuqqq6666qqrrvo3ue+++2790R/90c/5kA/5kIf8wz/8w29fc801D36nd3qnz/6mb/qmp7/O67zOe3PVv5sk/jNIQhL3k4QkJCEJSQBI4gU5efIkV1111VVXXXXVVf8LUI4fP85VV1111VVXXXXVVf92h4eHu7/1W7/1PWfPnn3Ggx/84Je+5pprHvyKr/iKb/26r/u673N4eLh76623/jVX/ZvUWt96sVi8dCmFUgoRQUQgCUlIAkASkpCEJCQhCUlIQhKSiAgigoiglEKtlVorpRRKKdyvtUZrjdYarTUyk8wkM8lMWms85jGPecbP//zPfzVXXXXVVVddddVV/7NRjh8/zlVXXXXVVVddddVV/3633nrrX//Zn/3ZzxweHu5ec801D77mmmse/Iqv+Ipv/Tqv8zrvvbm5eRzQ2bNnb+WqF9lisfjo2Wz24FIKpRQigohAEpKQhCQkIQlJSEISkpCEJCQhiYggIogISimUUqi1UkqhlIIkbJOZtNZordFaIzPJTDKTzCQzebmXe7lLP//zP//VXHXVVVddddVVV/3PRuWqq6666qqrrrrqqv8w9913360/+qM/+jm//du//T1nzpx58Du90zt91ou92Iu99ju90zt9NsDZs2ef8Zu/+Zvf9du//dvfc999993KVS9Ua43/LJKQBIAkJAEgiX/Jzs4O9913361cddVVV1111VVX/c9HOX78OFddddVVV1111VVX/cc6PDzcPXv27K2/9Vu/9T2//du//T2bm5vHH/KQh7z05ubm8Rd/8Rd/7Td/8zf/6Nd5ndd5783NzeOAzp49eyv/Cm/7tm/7bq/8yq/89n/913/92/wXed/3fd/Pv+WWW0498YlPfBz/Rfq+f+/5fP7gUgqlFCKCiEASkpCEJCQhCUlIQhKSkIQkJCGJiCAiKKVQSqGUQq2VWisRgSQyk9YarTVaa7TWyEwyk8wkM+m6joc85CHP+K3f+q3v5qqrrrrqqquuuup/NvSgBz2Iq6666qqrrrrqqqv+811zzTUPfrEXe7HXerEXe7HXfp3XeZ335gHuu+++WwH+4R/+4bf/4R/+4Xfuu+++W8+ePXvrfffddyvP5Sd+4ifMA3zAB3xAvXDhQuMBrrnmmgefOXPmwS/2Yi/2Wi/+4i/+2vfdd98zvv7rv/69+Td4yEMesvjyL//yIx7g7d7u7cR/gY2Njd86duzYa/d9T9d1lFIopRARRAQRgSQkERFIQhKSKKUQEUQEEUFEUEqh1kqtla7rmM1mzGYzuq6j1gpAa41hGFiv16zXa9brNeM4Mo4j0zQxjiPXXXcdN9100/d8/dd//Xtz1VVXXXXVVVdd9T8betCDHsRVV1111VVXXXXVVf+1rrnmmgefOXPmwS/2Yi/2Wi/+4i/+2i/2Yi/22rwA9913361nz569FdCLvdiLvRbPx2/91m99N8A111zz4Bd7sRd7bZ7L2bNnn/H3f//3v8VzEmCekwDzAK/zOq/z3jyXs2fPPuM3f/M3v+vs2bPPALjvvvtuPXv27K333Xffrddcc82DAc6cOfNggGuuuebBAGfOnHkQwG//9m9/z3333XcrL4Ljx48/fbFYPLjve7quo5RCKYWIICKICCQhiYhAEpKQRCmFiCAiiAgiglIKtVZqrfR9T9/3zGYz+r6n1gpAa431es16vWa9XrNerxnHkXEcmaaJcRy57rrruOmmm77n67/+69+bq6666qqrrrrqqv/Z0IMe9CCuuuqqq6666qqrrvrvdc011zz4zJkzD77mmmsefObMmQe9+Iu/+GufOXPmwddcc82DAe67775br7nmmgfzf8CHfMiHPOS+++67lRfB9vb207e2th48m82otVJKoZRCRBARSCIikIQkIgJJSKKUQkQQEUQEEUEphVortVb6vmc2mzGbzej7nlorANM0MQwDq9WK9XrNMAwMw8A4jkzTxDiOXHfdddx0003f8/Vf//XvzVVXXXXVVVddddX/bFSuuuqqq6666qqrrvpvd999991633333foP//APAPzoj/7o5/BM11xzzYPPnDnzYMAf/uEf/t3XXHPNg3kuX//1X/8+AC/2Yi/2Wtdcc82DX+zFXuy1eYB/+Id/+O3f+q3f+h6ekwHxnAyIB/jwD//w7+L5+Id/+IfffrEXe7HX5l/hH/7hH377vvvuu5V/BUk8kG1eENsASMI2L4gk7icJSUgCQBIAknhBjh07xn333fd0rrrqqquuuuqqq/7nQw960IO46qqrrrrqqquuuup/j5/4iZ8wD/B2b/d24rlcc801DwZ4sRd7sdd+sRd7sdc6e/bsM37kR37ks/k3+omf+AnzAG/3dm8ngGuuuebBr/3ar/1er/M6r/Pe11xzzYN5EZw9e/YZv/mbv/ld//AP//A7//AP//DbvBDb29tP397efnDXdXRdRymFiKCUQkQgiYhAEpKQhCQigoiglEJEEBFEBKUUaq10XUff98xmM2azGbPZjFortpmmiWEYWK1WrFYrhmFgGAbGcWSaJsZx5JGPfCSr1eqzf/RHf/RzuOqqq6666qqrrvqfDT3oQQ/iqquuuuqqq6666qqr/j2uueaaB7/Yi73Ya73Yi73Ya7/O67zOe/Miuu+++2790R/90c/5rd/6re/m+djZ2Xn61tbWg/u+p9ZKKYWIoJRCRCCJiEASkpCEJCKCiKCUQkQQEZRSKKVQSqHrOvq+Zz6fM5vNmM1mlFIAmKaJ9XrNarVitVoxDAPDMDCOI9M0MY4jj3zkI1mtVp/9oz/6o5/DVVddddVVV1111f9slOPHj3PVVVddddVVV1111VX/HoeHh7u33nrr3/zpn/7pz/z2b//299x6661/s7m5efyaa655MA/wmZ/5ma/zW7/1W98N8JCHPOSlNzc3j7/iK77iW7/u677u+2xsbBz7h3/4h9/hAWaz2Uf3fX+8lEJEEBFIIiIAkIQkJCEJSUhCEpKICCQhiYggIiilUEqh1kqtla7rqLUSEUjCNq01pmmitUZrjdYatslMMpOHPexhPP3pT/+eW2+99a+56qqrrrrqqquu+p8NPehBD+Kqq6666qqrrrrqqqv+M5w5c+ZBr/M6r/Per/M6r/Pe11xzzYPf7u3eTjzTNddc8+AXe7EXe+3XeZ3Xea8Xe7EXe22A++6779bf+q3f+u4f/dEf/RyAEydOeLFY0Pc9tVZKKUQEEUFEEBFEBJKQhCQkERFEBKUUIoKIoJRCKYVaK13X0fc98/mc+XzObDajlALAOI6s12tWqxWr1Yr1es0wDEzTxDiOjOPIK7zCK/D3f//37/Nbv/Vb381VV1111VVXXXXV/2zoQQ96EFddddVVV1111VVXXfWf6ZprrnkwwH333Xcrz8eZM2ce9BEf8RHf/WIv9mKvDXDffffd+tu//dvf82u/9mufNZ/P6fueWiulFCKCiCAiiAgkERFIQhKSiAgigoiglEJEUEqhlEKtla7rmM1mzOdz5vM5fd9TawVgHEfW6zXL5ZLVasV6vWYcR8ZxZBxHxnHkDd7gDfj93//99/mt3/qt7+aqq6666qqrrrrqfzaCq6666qqrrrrqqquu+k9233333Xrffffdygtw9uzZZ3zmZ37m63zIh3zIQ/7hH/7ht6+55poHv+M7vuNn2eY/gyQeSBKSAJDEi+Ls2bO3ctVVV1111VVXXfU/H8FVV1111VVXXXXVVVf9D3Hffffd+pmf+Zmv8/Vf//Xvc999993KA9jmBbHNi0oSAJKQhCQkIQlJ3E8SkpDEc8tMrrrqqquuuuqqq/6XoHLVVVddddVVV1111VX/w/zWb/3Wd//93//9b0m6lX8l27yoJCEJSUgCQBKSeGFOnDjBfffddytXXXXVVVddddVV//MRXHXVVVddddVVV1111f9A9957L8/NNi+IbWzzwkgCQBKSAJCEJCQhCUn8S2xz1VVXXXXVVVdd9b8Elauuuuqqq6666qqrrvp/ShKSkIQk7icJSbwgJ06c4Kqrrrrqqquuuup/CSpXXXXVVVddddVVV131v5RtJPGvIQkASUhCEpKQBIAkXhT33XffrVx11VVXXXXVVVf9z0flqquuuuqqq6666qqr/geTxH80SUhCEpKQhCQAJCEJAEk8kCSuuuqqq6666qqr/pehctVVV1111VVXXXXVVf9DSeI/myQiAkk8kCRekBMnTnDVVVddddVVV131vwSVq6666qqrrrrqqquu+h/I9oP5DySJ+0lCEpKQhCQkASAJSdxPEpJ4oPvuu+9Wrrrqqquuuuqqq/53oHLVVVddddVVV1111VX/x0kCQBKSuJ8kJCEJSQBI4vmRBIAkrrrqqquuuuqqq/4XIbjqqquuuuqqq6666qr/hWwDYJvnZpsXRhKSkIQkJBERSEISkpDE87O9vc3Zs2dv5aqrrrrqqquuuup/BypXXXXVVVddddVVV131/5AkJCEJSUhCEg8kiecmiauuuuqqq6666qr/RahcddVVV1111VVXXXXV/0CZ+WBeRLa5nyReGElIAkASkpCEJAAkIYkXZGdnh/vuu+9Wrrrqqquuuuqqq/53ILjqqquuuuqqq6666qr/gSQhiedmG9v8e0lCEpKQhCQkIQlJSOKqq6666qqrrrrq/wAqV1111VVXXXXVVVdd9T+QJP6jSQJAEpKQhCQiAklIQhIPJImrrrrqqquuuuqq/8WoXHXVVVddddVVV1111f9AkvjPIAkASQBIQhKSkASAJAAk8dx2dna46qqrrrrqqquu+l+EylVXXXXVVVddddVVV/0PJIn/SJK4nyQAJBERSEISkpAEgCTuJ4kHuu+++27lqquuuuqqq6666n8Hgquuuuqqq6666qqrrvpfyjb/VpKQhCQkERFIQhKSuOqqq6666qqrrvo/guCqq6666qqrrrrqqqv+Z3ow/8EkIQlJSEISkogIJCEJSTw/kgDY2dnh7Nmzz+Cqq6666qqrrrrqfwcqV1111VVXXXXVVVdd9T+QJP4zSUISkpCEJCQhCUlI4vmxzVVXXXXVVVddddX/IlSuuuqqq6666qqrrrrqfyBJSOJfyzb3k8TzIwmAiEASkpBERPBAkpDE/SRx/Phxrrrqqquuuuqqq/4XIbjqqquuuuqqq6666qr/gSTxorDN/Wzz/EjifpIAkIQkIgJJSEISkpDEC2Kb++6771auuuqqq6666qqr/ncguOqqq6666qqrrrrqqv+BIuLBvIhs8y+RhCQAJCEJSUgiIogIJCEJAElcddVVV1111VVX/R9AcNVVV1111VVXXXXVVf8D2QZAEs+PbR7INs+PJB5IEpKQhCQkIQlJSEISknggSdxvZ2eHs2fP3spVV1111VVXXXXV/w5Urrrqqquuuuqqq6666n8gSfxnkoQkJBERSEISDySJq6666qqrrrrqqv/lqFx11VVXXXXVVVddddX/E5KQhCQkIYmIQBKSkIQkJCGJ5+f48eNcddVVV1111VVX/S9C5aqrrrrqqquuuuqqq/4HksR/FklIQhKSkEREIAlJPJAkACRxv/vuu+9Wrrrqqquuuuqqq/53oHLVVVddddVVV1111VX/Q0niP4oknpskJBERSEISkpCEJJ4f21x11VVXXXXVVVf9L0Jw1VVXXXXVVVddddVV/wNFxIN5LrYBsM2/lSQkIYmIICKQhCQkIYn7SeK5nThxgquuuuqqq6666qr/RQiuuuqqq6666qqrrrrqfyBJ/Ets86KQBIAkACQhCUlIQhIRgSQAJPFAkrjffffddytXXXXVVVddddVV/3tQueqqq6666qqrrrrqqv8jbPMvkQSAJCQREUQEkpCEJCQhiecmiauuuuqqq6666qr/ZQiuuuqqq6666qqrrrrqfxHb/FtIQhIAkpCEJCQhCUlIQhIvyPb2NmfPnr2Vq6666qqrrrrqqv89CK666qqrrrrqqquuuup/oL7vH8yLwDYAtnlRSEISkpBERBARRASSkIQkACQhCQBJXHXVVVddddVVV/0vRHDVVVddddVVV1111VX/A7XWeFHZ5gWRxANJAkASEYEkJCEJSUgCQBLPbWdnh/vuu+9Wrrrqqquuuuqqq/73oHLVVVddddVVV1111VX/T0gCQBKSkIQkIgJJSAJAEg8kiauuuuqqq6666qr/pahcddVVV1111VVXXXXV/3GSkASAJCQhCUlEBJKQhCQkcdVVV1111VVXXfV/CJWrrrrqqquuuuqqq676H0oSL4htJPFvIQlJRASSiAgkERFIQhKSeG7b29tcddVVV1111VVX/S9D5aqrrrrqqquuuuqqq/4HksS/lyQeSBKSkIQkJBERSEISkpDE/SQhiQe67777buWqq6666qqrrrrqfw8qV1111VVXXXXVVVdd9T9QKeXB/CeKCCQhiYgAQBKSkMRzk8RVV1111VVXXXXV/0IEV1111VVXXXXVVVdd9X+QJB5IEpKQhCQkERFEBJKICCRxP0k8t52dHc6ePfsMrrrqqquuuuqqq/73oHLVVVddddVVV1111VX/x0nifpKQhCQkIQlJSEISkpDEA0kCwDZXXXXVVVddddVV/8tQueqqq6666qqrrrrqqv+lbCOJF0YSz00SkogIIoKIAEASkrifJCRxv52dHa666qqrrrrqqqv+lyG46qqrrrrqqquuuuqq/wVs8/zYBsA295PEc5OEJCQhCUlIQhKSiAgkIQlJSOK52ea+++67lauuuuqqq6666qr/PQiuuuqqq6666qqrrrrqf5jMfDAvhG0eyDb/GpKQhCQigohAEpK46qqrrrrqqquu+j+GylVXXXXVVVddddVVV/0fJwkASUhCEhFBRCAJSQBIQhKSeH62t7c5e/bsrVx11VVXXXXVVVf970Hlqquuuuqqq6666qqr/h+QBIAkJCEJSUQEEYFtJCEJAElIAkASkrjqqquuuuqqq676X4jKVVddddVVV1111VVX/Q8kiX8vSTyQJAAkIYmIQBKSkIQkJCGJ+0nifseOHeOqq6666qqrrrrqfxkqV1111VVXXXXVVVdd9T9MZj6Y/yCSeCBJAEhCEhFBRGAbSfxL7rvvvlu56qqrrrrqqquu+t+DylVXXXXVVVddddVVV/0vYhtJ/GtIQhKSkIQkJBERSEISAJKQhCSeH9tcddVVV1111VVX/S9DcNVVV1111VVXXXXVVf/DSAJAEg9km/vZ5t9KEhGBJCICSUhCEpIAkIQkHuj48eNcddVVV1111VVX/S9D5aqrrrrqqquuuuqqq/4PkcQLIglJSEISkpBERGAbSQBI4n6SkIQk7rvvvlu56qqrrrrqqquu+t+FylVXXXXVVVddddVVV/0fYJsHksQDSQJAEpKQREQQEUgCQBKSeH4kcdVVV1111VVXXfW/EMFVV1111VVXXXXVVVf9D5OZD5bEv8Q2/xJJSAJAEpKQhCQkIYmIQBKSkIQkJPFAm5ubnD179lauuuqqq6666qqr/nehctVVV1111VVXXXXVVf/DSOKBbPOC2AZAEs9NEs+PJCKCiCAikIQkJCGJ+0niqquuuuqqq6666n85KlddddVVV1111VVXXfU/jCT+o0lCEpKQhCQkIQlJSEISz48ktre3ue+++27lqquuuuqqq6666n8XKlddddVVV1111VVXXfU/jCT+s0hCEpKICCKCiABAEpKQhCQAJHHVVVddddVVV131vxiVq6666qqrrrrqqquu+j9OEpKQhCQkERFIQhKSkIQkJHHVVVddddVVV131fwjBVVddddVVV1111VVX/Q8jiRfGNi+MJO4niecmCUlEBBGBJCQhCQBJAEjifltbW1x11VVXXXXVVVf9L0Tlqquuuuqqq6666qqr/oex/SD+E0hCEpKQhCQkIQlJSEISAJK4nyQA7rvvvlu56qqrrrrqqquu+t+FylVXXXXVVVddddVVV/0PIwlJ/HtIQhIAkpCEJCQREUQEEUFEEBHY5vmRxFVXXXXVVVddddX/YgRXXXXVVVddddVVV131P4wk/rVs86KQhCQkIQlJSEISkpCEJJ7b9vY2Z8+efQZXXXXVVVddddVV/7tQueqqq6666qqrrrrqqv9hJPEfRRIAkpCEJCQhiYhAEpKQhCQkcT9J3M82V1111VVXXXXVVf8LEVx11VVXXXXVVVddddX/MBHxYP4FtnlRSeKBJCEJSUQEkpCEJAAkIYkH2tnZ4aqrrrrqqquuuup/IYKrrrrqqquuuuqqq676H8Y2/xq2+ZdIQhKSkEREIAlJSEISkpDEA0lCEpnJfffddytXXXXVVVddddVV/7sQXHXVVVddddVVV1111f8wknhBbHM/29jmBZHEA0lCEpKQREQgCUlIQhJXXXXVVVddddVV/8cQXHXVVVddddVVV1111f8RkpDEA0lCEpIAkIQkIgJJRAQRgSQAJCEJAEncb2tri7Nnz97KVVddddVVV1111f8uVK666qqrrrrqqquuuup/GElI4t9KEpJ4bpKQhCQkERFIQhKSkMT9JPFAtrnqqquuuuqqq676X4jKVVddddVVV1111VVX/T8gCUlIQhKSkIQkJCEJSUjigSQBcOzYMa666qqrrrrqqqv+FyK46qqrrrrqqquuuuqq/2EkPZjnYhvb/GtJQhIPJImIQBKSkIQkACQhiQeShG3uu+++W7nqqquuuuqqq67634XKVVddddVVV1111VVX/Q8jif8IknggSUhCEpKICCQhCQBJvCC2ueqqq6666qqrrvpfiMpVV1111VVXXXXVVVf9HycJSQBIIiKQhCQkIQlJSEISAJKQxP2OHTvGVVddddVVV1111f9CBFddddVVV1111VVXXfW/jG3+JZJ4bpKQhCQkIYmIAEAS95PE/SQhifvuu+9Wrrrqqquuuuqqq/73oXLVVVddddVVV1111VX/w5RSHsx/EEkASEISkpBERCAJSUhCEpKQxHOTxFVXXXXVVVddddX/UgRXXXXVVVddddVVV131v5xtHkgSAJIAkMT9JCEJSUQEkpAEgCSen42NDc6ePXsrV1111VVXXXXVVf/7EFx11VVXXXXVVVddddX/UJJ4QWzzQJIAkMTzIwlJSEISkpCEJCQhiftJQhKSkMRVV1111VVXXXXV/2JUrrrqqquuuuqqq6666n8gSfxLbAMgiRdEEpIAkIQkJBERSEISkpCEJCTx3DY3N7nvvvtu5aqrrrrqqquuuup/HypXXXXVVVddddVVV131f5AkHkgS95OEJCQhCUlI4qqrrrrqqquuuur/ICpXXXXVVVddddVVV131P0zXdQ/mP4Ak7icJSUhCEpKQhCTuJ4kHkgSAJK666qqrrrrqqqv+lyK46qqrrrrqqquuuuqq/2Eyk38LSQBI4n6SkASAJCQREUgiIgCQhCQkIQlJ3E8SGxsbXHXVVVddddVVV/0vRXDVVVddddVVV1111VX/w0jiBbHNv4UkJCEJSUhCEpKQxHOTxP0kcd99993KVVddddVVV1111f8+BFddddVVV1111VVXXfU/yOu8zuu8t23+vSQhCQBJ3E8SkogIJCEJAElcddVVV1111VVX/R9EcNVVV1111VVXXXXVVf+DvOM7vuNn8e8giQeSBIAkJCEJSUhCEpKQBIAkJPHcNjc3OXv27DO46qqrrrrqqquu+t+HylVXXXXVVVddddVVV/0PI4n/DJKQhCQkIQlJSEISz00SkrDNVVddddVVV1111f9SVK666qqrrrrqqquuuup/kHvvvRfb/GvY5oEk8UCSkASAJCQhCUncTxKSAJDEA21tbXHVVVddddVVV131vxTBVVddddVVV1111VVX/Q9xzTXXPPglXuIlHiyJF8Y2/xJJSEIS95OEJCQhCUlIQhLPTRL3s8199913K1ddddVVV1111VX/+xBcddVVV1111VVXXXXV/xD33XffrQCPfvSjeVHZ5l8iCUlIQhKSkASAJB5IEveThCSuuuqqq6666qqr/hcjuOqqq6666qqrrrrqqv9B/uEf/uG3X/3VX53nxzYviCQk8dwkASCJ+0lCEpIAkIQkJPH8XHPNNZw9e/ZWrrrqqquuuuqqq/73Ibjqqquuuuqqq6666qr/QX7rt37rex796Edz6tQpXhjb2Oa5SeJ+kgCQBIAkJCEJSUhCEv+S5XL5jPvuu+9Wrrrqqquuuuqqq/73Ibjqqquuuuqqq6666qr/QX7rt37ruzPz1rd4i7fg30oSknggSUhCEpKQhCQkIQlJPD+PetSjuO+++57OVVddddVVV1111f9OBFddddVVV1111VVXXfU/zI/+6I9+zsMe9rBb3/RN3xQA2/xbSUISAJKQhCQkIYkXRBKLxYJHPepR/NZv/db3cNVVV1111VVXXfW/E5Wrrrrqqquuuuqqq676H+a3fuu3vvvMmTMPeqd3eqfPlsSv/uqv8m8hiftJAkASkpCEJCRxP0kASGI2m/HIRz6Sf/iHf/jt3/qt3/purrrqqquuuuqqq/53Irjqqquuuuqqq6666qr/gX7rt37ru//hH/7ht9/kTd6Ez/iMz+DEiRP8W0hCEgCSkIQkJHE/STxQrZWHPvShnDhxgh/5kR/5HK666qqrrrrqqqv+96IcP36cq6666qqrrrrqqquu+p/m6Ojo0j/8wz/8zq233vo3r/Var/XWL/7iL87GxgZPe9rTkIQkJCEJSZRSqLVSSqGUQimFUgq1Vmqt9H3PfD5nc3OT7e1ttre32djYoO97JJGZrFYrVqsVJ0+e5ClPecpvf/3Xf/37/MM//MNvc9VVV1111VVXXfW/F+X48eNcddVVV1111VVXXXXV/0SHh4e7R0dHu7feeuvfvNZrvdZbP+xhD+PlX/7lWSwWPP3pT0cSkgAopVBKoZRCKYVSCrVWSil0XUfXdcznczY2Ntje3mZ7e5uNjQ26rkMS586dY29vj4jgvvvuu/W7vuu7PuYf/uEffpurrrrqqquuuuqq/90ox48f56qrrrrqqquuuuqqq/6nOjw83L311lv/+rd/+7e/5yEPechL33LLLQ9+6EMfysu93Mtxww03sFqt2N3dpdZKKYVSCqUUSimUUqi1Umul73vm8zmbm5tsb2+zvb1N13UcHBxw++23s1qtuPfee2+99dZb//pLv/RL3+bWW2/9a6666qqrrrrqqqv+90MPetCDuOqqq6666qqrrrrqqv8tXuzFXuy13+md3umzXuzFXuy1eaaLFy9y2223cfvtt3N4eEitleVyyWq1YjabcerUKTY2Njh9+jTXX389W1tbzOdzbHO/++6779Yf/dEf/Zzf+q3f+m6uuuqqq6666qqr/u9AD3rQg7jqqquuuuqqq6666qr/ba655poHv/Zrv/Z7vfiLv/hrv9iLvdhr829w33333fpbv/Vb33327Nln/NZv/dZ3c9VVV1111VVXXfV/D3rQgx7EVVddddVVV1111VVX/W92zTXXPPjFXuzFXvvFXuzFXuuaa655MMCZM2cefM011zwY4L777rsV4OzZs7fed999t9533323/sM//MPv/MM//MNvc9VVV1111VVXXfV/G3rQgx7EVVddddVVV1111VVXXXXVVVddddVVV131fxKVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1X8I75L/M2Yj6jAAAAAAElFTkSuQmCC) +![Rendered example of scale 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADUTklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV/0nu+aaax585syZBwNcc801Dz5z5syDeKZrrrnmwTzTNddc82Cey5kzZx589uzZW8+cOfNg/hXOnj17Kw9w33333coz3XfffbeePXv2GQD33XffrQBnz5699b777ruVq6666qqrrrrqqquu+r8FPehBD+Kqq6666qqrrrrqP8qLvdiLvfbrvM7rvNc111zz4DNnzjz4mmuueTD/gvvuu4/73Xfffdzv7Nmz/FucOXOGB7rmmmu45ppreGHuu+++W3mmr//6r3+ff/iHf/htrrrqqquuuuqqq6666n8/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V1111VX/SWzzb2Eb2wDYxja2sQ2AbQBsY5vnRxL3k8QLIonnxzZXXXXVVVddddVVV131fwDBVVddddVVV1111X+CiLgVIDOxzQPZxjYAtvnXsA2Abf4zSQLgmmuueTBXXXXVVVddddVVV131vxeVq6666qqrrrrqqv8kmcn9bGObF8Q2tnkg29jGNraxjW1s80C2eUEk8aKQxFVXXXXVVVddddVVV/0fROWqq6666qqrrrrqP0nXddjmgWzzwtgGwDb3sw2Abe5nG9s8P5IAkMS/lSSuuuqqq6666qqrrrrq/wCCq6666qqrrrrqqv8kR0dHt9rGNs+PbZ4f2wDYxjYAtgGwjW3uZxsA2wBIAkASDySJB5LEc5MEgCQAzp49y1VXXXXVVVddddVVV/0vR+Wqq6666qqrrrrqP0mtFdsA2OYFsc0LYxvb2MY2trGNbV4UkgCQhCSemyTuJwkASUQEV1111VVXXXXVVVdd9b8cwVVXXXXVVVddddV/ktVqdSuAbQBsA2Ab27wobHM/2zw/tnl+JCGJf48zZ848mKuuuuqqq6666qqrrvrfi+Cqq6666qqrrrrqP5FtAGzzL7HN/WxjGwDb2AbANraxjW1sc9VVV1111VVXXXXVVVe9QFSuuuqqq6666qqr/pNEBLaxzf1s80C2AbANgG1scz/bANjGNraxjW1eEElI4gWRBIAkrrrqqquuuuqqq6666v84KlddddVVV1111VX/ScZxvNU2/162AbDNA9nmP4MkJHHhwgWuuuqqq6666qqrrrrqfzkqV1111VVXXXXVVf9JbGMb29jGNg9kmxfENrYBsI1tbGMb29gGwDYviCQkIQlJ/GtFBFddddVVV1111VVXXfW/HMFVV1111VVXXXXVf5LMvNU2tnkg29jmfrZ5QWwDYBsA29jmudnmgSTxH+Gaa655MFddddVVV1111VVXXfW/F8FVV1111VVXXXXVfxLb2OaBbPOC2AbANgC2AbANgG3uZxvb2ObfQxIAkgCQBIAkrrrqqquuuuqqq6666v8AKlddddVVV1111VX/STIT29jGNrb5l9jmgWwDYBvb2MY2L4wknh9JvDCSeCBJXHXVVVddddVVV1111f9yVK666qqrrrrqqqv+k9h+hm1eGNsA2OaBbHM/29gGwDa2sY1tAGzz/EhCEg8kiX+JJAAuXLjAVVddddVVV1111VVX/S9HcNVVV1111VVXXfWfxDa2sY1t7mebF4VtbHM/29gGwDa2sc2/RBLPTRL/kojgqquuuuqqq6666qqr/pejctVVV1111VVXXfWfJCJuzUweyDb3s83zY5sHso1tbANgm+dmmweSxANJ4gWRxHOTBMCZM2cexFVXXXXVVVddddVVV/3vReWqq6666qqrrrrqP0lmYhvbANjmfra5n22em20AbPNAtrGNbWxjG9tcddVVV1111VVXXXXVVc8Xlauuuuqqq6666qr/RJmJbWzzL7GNbe5nGwDb2MY2tgGwzXOzzQNJ4vmRxItCElddddVVV1111VVXXfW/HJWrrrrqqquuuuqq/yQRcSv/Atu8KGxjG9vYBsA2trHNCyKJfw1JAEhid3eXq6666qqrrrrqqquu+l+OylVXXXXVVVddddV/otYatrGNbWxjm+dmm/vZxjYAtrENgG0AbGObB7LNCyIJAEm8KCRx1VVXXXXVVVddddVV/0dQueqqq6666qqrrvpPlJn8W9nmfrYBsA2AbWxjm38rSbwwkrjmmmsezFVXXXXVVVddddVVV/3vReWqq6666qqrrrrqP0lE3CqJzMQ2D2Qb2wDY5n62eSDb2MY2trGNbR7INs9NEg8kiX+JJO4niauuuuqqq6666qqrrvo/gOCqq6666qqrrrrqP1Fmcj/b2OYFsc0LYxsA29jGNrYBsM1zk8Rzk8TzI4nnJomrrrrqqquuuuqqq676X47gqquuuuqqq6666j9R13XY5oFs88LYxja2sY1tbANgG9vYxjYAtgGwDYAk7ieJF0YSL8ju7i5XXXXVVVddddVVV131vxzBVVddddVVV1111X+io6OjW21jm+fHNgC2+ZfYxjYPZJv/aJIAkMRVV1111VVXXXXVVVf9L0flqquuuuqqq6666j9RrRXbANjmfrZ5UdnGNraxjW1sY5v72eYFkcS/liQArrnmmgdz1VVXXXXVVVddddVV/3sRXHXVVVddddVVV/0nWq1WtwLYBsA297PNc7PN/Wxjm+dmG9sA2MY2/1EkcT9JXHXVVVddddVVV1111f9yVK666qqrrrrqqqv+k9kGwDYAtnkg2wDYBsA2trmfbWxjG9vYBsA2D2SbF0YS95PEv+TSpUtcddVVV1111VVXXXXV/3JUrrrqqquuuuqqq/4TRQS2sc2/hW0AbGMb2wDYxja2sc3zIwlJAEjifpJ4IElcddVVV1111VVXXXXV/1FUrrrqqquuuuqqq/4TjeN4q21eENu8ILYBsM39bGMb2wDY5oFsc9VVV1111VVXXXXVVVc9C8FVV1111VVXXXXVf6LMBMA2trENgG0eyDYPZJsHso1tAGwDYBsA2zyQbf69JCGJM2fOPJirrrrqqquuuuqqq67634vKVVddddVVV1111X8i27dmJra5n20AbPPcbPNAtrENgG1sYxvb2MY2ALaxzf0kcT9J/GtIAkASV1111VVXXXXVVVdd9b8cwVVXXXXVVVddddV/ItvY5oWxzQPZBsA297MNgG0AbHM/27yoJPGCSOKqq6666qqrrrrqqqv+j6Fy1VVXXXXVVVdd9Z8oM7GNbWxjmxfENs/NNraxjW0AbGMb29gGwDb/0S5dusRVV1111VVXXXXVVVf9L0dw1VVXXXXVVVdd9Z/I9jNs869lm+dmG9vYBsA2ALYBsI1tXlSSuJ8kHkgSkrjqqquuuuqqq6666qr/5ahcddVVV1111VVX/SeyjW1sYxsA29gGwDYAtnlutgGwjW0AbGMb2wDYBsA2z48k/jUk8UDXXHPNg7nqqquuuuqqq6666qr/vQiuuuqqq6666qqr/hNFxK2Zyf1scz/bPDfb2OZ+trmfbWwDYBvb2MY2/xJJSOJfQxJXXXXVVVddddVVV131vxyVq6666qqrrrrqqv9EmYltbGObfwvb2MY2ALaxjW0eyDYPJImrrrrqqquuuuqqq676f47KVVddddVVV1111X+yzMQ2L4htAGxzP9s8P7axDYBtbGObfytJPDdJAOzv73PVVVddddVVV1111VX/yxFcddVVV1111VVX/SeKiFt5ANvYxjb/EtvYBsA2trGNbWwDYBvb3M82z00S/1qSsM1VV1111VVXXXXVVVf9L0dw1VVXXXXVVVdd9Z+stYZtbPPcbPPcbPNAtrmfbQBsY5v72cY2/5EkAXDNNdc8mKuuuuqqq6666qqrrvrfieCqq6666qqrrrrqP1lmYpvnZpv72QbANs+PbWwDYBvb2MY2tnkg27wwkpDEv0QSV1111VVXXXXVVVdd9b8clauuuuqqq6666qr/RBFxK89kG9u8KGxjG9vYBsA2trHN/WwDYBsA21x11VVXXXXVVVddddVVz0Jw1VVXXXXVVVdd9Z/MNra5n21scz/bANjmBbENgG1sYxvbANgGwDb/FpIAkMRzO3v2LFddddVVV1111VVXXfW/GJWrrrrqqquuuuqq/2Rd12Eb2/xb2AbANvezjW1sYxvbPJBtnh9JvCgkARARXHXVVVddddVVV1111f9iBFddddVVV1111VX/yY6Ojm61DYBt7mcb2zw32wDYxjYAtrGNbWxjG9vY5n62eW6SAJDEi0IS95MEwJkzZx7MVVddddVVV1111VVX/e9E5aqrrrrqqquuuuo/Wa0V29gGwDbPzTYAtgGwzf1scz/b2OaBbGMbANv8e0niqquuuuqqq6666qqr/o8guOqqq6666qqrrvpPtlqtbuW52OZFYRsA29gGwDa2sY1tAGxjGwDbPD+S+Nc6d+4cV1111VVXXXXVVVdd9b8YwVVXXXXVVVddddV/AdvYxjbPzTYAtvmX2AbANraxjW3+M0hCElddddVVV1111VVXXfW/GJWrrrrqqquuuuqq/2SSyEyem21eGNsA2MY2trGNbWxjG9vYxja2sc1zk8S/RBIPJAmAUgpXXXXVVVddddVVV131vxjBVVddddVVV1111X+yaZpuBbCNbWxzP9s8N9vYBsA297MNgG1s81/lmmuueTBXXXXVVVddddVVV131vxOVq6666qqrrrrqqv9kmYltHsg2D2QbANs8N9vYBsA2tgGwjW1sYxvb2MY2LwpJXHXVVVddddVVV1111f9xVK666qqrrrrqqqv+k9m+1Ta2+dewzQPZxjYAtrGNbWzzn0ESkrjqqquuuuqqq6666qr/xahcddVVV1111VVX/SezjW0AbGOb58c2z802ALa5n21sY5v72cY2/9EuXLjAVVddddVVV1111VVX/S9G5aqrrrrqqquuuuo/WWZiG9s8kG0AbPNAtrHN/WwDYBvb2MY2ALaxjW0AbANgm38rSdwvIrjqqquuuuqqq6666qr/xahcddVVV1111VVX/Sez/YzMxDa2AbANgG1eFLYBsI1tAGxjG9sA2AbANv+Rzpw58yCuuuqqq6666qqrrrrqfycqV1111VVXXXXVVf/JbPNAtnlutgGwzf1sYxvbANjmfraxjW0AbANgm3+JJP4lkpDEVVddddVVV1111VVX/S9H5aqrrrrqqquuuuo/WUTcmpnY5t/KNraxjW1sYxsA2wDY5gWRxPMjiQeSxAPt7u5y1VVXXXXVVVddddVV/4tRueqqq6666qqrrvpPlpnYBsA2ALaxDYBtAGxzP9s8P7axjW1sYxvb2OZ+tnlBJPGCSOK5SeKqq6666qqrrrrqqqv+F6Ny1VVXXXXVVVdd9V8gM7ENgG3uZ5vnZpv72cY2trHNc7MNgG0AbHM/27wgkviXSOKqq6666qqrrrrqqqv+l6Ny1VVXXXXVVVdd9Z8sIm61jW1s86KyzXOzjW1sYxvb2Oa52ea5SeJfSxLXXHPNg7nqqquuuuqqq6666qr/nahcddVVV1111VVX/RfITF4Y2wDY5vmxjW1sYxvb2AbANrYBsM1VV1111VVXXXXVVVdd9SwEV1111VVXXXXVVf8FMhPb2MY2trHNC2Kb+9nmgWxjG9vYxja2uZ9t/jUk8dwkASCJq6666qqrrrrqqquu+l+M4Kqrrrrqqquuuuo/WUTcCmCb58c2ALYBsA2AbWwDYBvb2OaBbHM/29jmP4okdnd3ueqqq6666qqrrrrqqv/FqFx11VVXXXXVVVf9F7CNbWzzQLb5l9jmfraxjW1sYxvb2OZ+trHNv5UkHuiaa655MFddddVVV1111VVXXfW/E8FVV1111VVXXXXVf4FSCvezjW3+tWwDYBvb2AbANrYBsM1/JElcddVVV1111VVXXXXV/2IEV1111VVXXXXVVf8F1uv1rbaxzf1scz/bANjmgWwDYBsA2wDYxja2uZ9trrrqqquuuuqqq6666qrnQHDVVVddddVVV131X6CUgm0AbPMvsY1tAGwDYBsA29zPNraxzf1s8x9lb2+Pq6666qqrrrrqqquu+l+M4Kqrrrrqqquuuuq/wGq1utU2z802tgGwDYBtnpttAGxjG9vYxja2sY1tbANgG9u8qCTx3CRx1VVXXXXVVVddddVV/8tRueqqq6666qqrrvovZBsA27wobHM/29gGwDa2AbDNVVddddVVV1111VVXXfV8Ubnqqquuuuqqq676LxARZCa2sQ2AbV4UtrHN/WxjG9vYBsA2ALaxzb+XJAAkcebMmQdz1VVXXXXVVVddddVV/ztRueqqq6666qqrrvovMI7jrbwQtgGwDYBtbPNAtrGNbe5nG9vYBsA2D2Sbq6666qqrrrrqqquu+n+MylVXXXXVVVddddV/gczENrYBsA2AbWzzgtjm+bGNbWxjmweyjW3+LSTxQHt7e1x11VVXXXXVVVddddX/YlSuuuqqq6666qqr/gvYvjUzAbANgG0eyDYAtnkg29jGNraxjW1sA2Ab2wDY5j+KJK666qqrrrrqqquuuup/OYKrrrrqqquuuuqq/wK2AbDNv5dtbGMb2wDY5rnZ5qqrrrrqqquuuuqqq/6fo3LVVVddddVVV131XyAzsQ2AbWzz/NgGwDa2uZ9tbGOb+9nGNrYBsI1tbPPvIYn7SeKaa655MFddddVVV1111VVXXfW/E5Wrrrrqqquuuuqq/wK2n5GZ2OaBbANgm+fHNra5n21sYxsA29jGNg9km6uuuuqqq6666qqrrroKgquuuuqqq6666qr/AraxzQPZBsA2D2Sb58c2ALaxjW3uZxsA29jm30ISz00SV1111VVXXXXVVVdd9b8Ylauuuuqqq6666qr/ApJutY1tbGOb52abF8Q2ALa5n21sYxsA2/xHkYQk9vb2uOqqq6666qqrrrrqqv/FqFx11VVXXXXVVVf9F7CNbWzzorKNbWwDYBsA29jGNraxjW0AbGMb29jmhZHEVVddddVVV1111VVX/R9HcNVVV1111VVXXfVfJDMBsA2AbWwDYBsA2wDY5oFsA2Ab29gGwDa2sc1/pmuuuebBXHXVVVddddVVV1111f8+VK666qqrrrrqqqv+C0TErbaxDYBt7mebF4VtHsg2D2Qb2zyQbf49JHHVVVddddVVV1111VX/i1G56qqrrrrqqquu+i+SmdjGNi+MbR7INvezjW1sYxvb2MY297ONbf6jnD17lquuuuqqq6666qqrrvpfiuCqq6666qqrrrrqv0hmYpsXxDYPZBvbANjGNvezDYBtbGMbANvczzb/XpKICK666qqrrrrqqquuuup/KYKrrrrqqquuuuqq/wIRcaskAGxjG9vY5vmxzfNjG9vYxja2sY1tbGMb2/xHkIRtAM6cOfNgrrrqqquuuuqqq6666n8fKlddddVVV1111VX/RTIT2zw329gGwDbPzTYPZBsA27wgtnlBJPGiksRVV1111VVXXXXVVVf9L0blqquuuuqqq6666r9IKQXb2OaFsc1zs41tbANgG9vYxja2sY1tbPNAtrnqqquuuuqqq6666qr/pwiuuuqqq6666qqr/ousVqtbbQNgG9u8MLaxzXOzjW0AbGMb29jmfraxzX+Ec+fOcdVVV1111VVXXXXVVf9LUbnqqquuuuqqq676L1Jr5bnZ5n62uZ9t7mcb29jGNvezjW0eyDa2uZ9t/i0kASCJiOCqq6666qqrrrrqqqv+lyK46qqrrrrqqquu+i+yWq1utY1tbHM/29gGwDb/EtvYxjYAtrGNbf4zRARXXXXVVVddddVVV131vxTBVVddddVVV1111X8h29jmRWWb+9nGNgC2AbCNbWxjG9vYxjb/VpJ4btdcc82Dueqqq6666qqrrrrqqv99qFx11VVXXXXVVVf9F8lMbHM/29jmudkGwDYAtrHN/WwDYBvb2OZ+trmfbf49JHHVVVddddVVV1111VX/y1G56qqrrrrqqquu+i+Smbfaxja2eW62+ZfYxja2sY1tAGxjGwDb/FtJ4oEkIYmrrrrqqquuuuqqq676X4rKVVddddVVV1111X8R29jmudnmudnmudnmgWwDYBvb2OZ+tgGwzb/XxYsXueqqq6666qqrrrrqqv+lqFx11VVXXXXVVVf9F7F9q21sYxvb3M82ALZ5INsA2AbANraxDYBtbPNAtvmPdubMmQdx1VVXXXXVVVddddVV//tQueqqq6666qqrrvovYhvbPJBtnpttAGwDYBsA29zPNraxjW1sY5v72cY297PNv5Ukrrrqqquuuuqqq6666n8pKlddddVVV1111VX/RTIT29jm38o2tgGwzf1scz/bPJBt/q0kcdVVV1111VVXXXXVVf+LUbnqqquuuuqqq676L2L7GbaxjW1sA2AbANvczzYPZJsHsg2AbWxjG9v8Z9jd3eWqq6666qqrrrrqqqv+l6Jy1VVXXXXVVVdd9V/ENrZ5INsA2AbANg9kG9sA2MY2trGNbWxjGwDbANjGNraxzb+VJK666qqrrrrqqquuuup/OSpXXXXVVVddddVV/0Uk3Wob29jmX2KbF8Y297PNfxZJXHXVVVddddVVV1111f9SVK666qqrrrrqqqv+i9gmM7mfbZ4f2zw329jGNraxDYBtbGMb2wDYxjb/HpIAkATANddc82Cuuuqqq6666qqrrrrqfx+Cq6666qqrrrrqqv9CtrGNbe5nGwDb3M8297PNA9kGwDa2sQ2AbR7INv8RJHHVVVddddVVV1111VX/S1G56qqrrrrqqquu+i8SEbdmJrYBsI1tAGzz/NjmgWwDYBvb2MY2tgGwjW1eGNtcddVVV1111VVXXXXV/xMEV1111VVXXXXVVf+FbPPC2OZ+trmfbWwDYJvnZhvb2AbANgC2sc2/x6VLl7jqqquuuuqqq6666qr/pQiuuuqqq6666qqr/gtlJraxzQtim3+JbWxjG9sA2AbANv/Rrrnmmgdz1VVXXXXVVVddddVV//tQueqqq6666qqrrvovEhG3SsI2ALaxjW0AbPPcbGOb+9nGNraxjW1sYxsA2wDYxjb/XpKQxFVXXXXVVVddddVVV/0vRXDVVVddddVVV131XygzAbDNA9nmgWzzQLaxzQtiG9sA2Ob5sc1VV1111VVXXXXVVVf9P0Plqquuuuqqq6666r9QKQXbvCC2uZ9tnpttbGMb29jGNgC2uZ9tAGwDYJt/LUkAXLp0iauuuuqqq6666qqrrvpfiuCqq6666qqrrrrqv9BqtbrVNraxjW1s88LYBsA2z802trHN/WwDYJurrrrqqquuuuqqq676f47KVVddddVVV1111X+hWiu2eX5sA2Cb+9kGwDYAtrGNbWxzP9vY5j+DJM6cOfNgrrrqqquuuuqqq6666n8fgquuuuqqq6666qr/QqvV6lbb2MY297PNA9nmX2Ib29jmfraxjW3uZ5t/K0lcddVVV1111VVXXXXV/2IEV1111VVXXXXVVf+FbPNAtnlR2QbANrYBsI1tbGObB7KNbf61JHHVVVddddVVV1111VX/R1C56qqrrrrqqquu+i8UEdjGNvezzf1scz/bANjGNgC2AbCNbe5nG9sA2MY2/1H29va46qqrrrrqqquuuuqq/6WoXHXVVVddddVVV/0XGsfxVtsA2Ob5sc39bPPC2MY2V1111VVXXXXVVVddddXzReWqq6666qqrrrrqv5BtbGObB7KNbe5nm+dmG9vYxja2sY1tbGMbANvYxjZXXXXVVVddddVVV131/xzBVVddddVVV1111X8h27faxja2sY1t/iW2eW62uZ9tbPPcbPNvIQkASUjimmuueTBXXXXVVVddddVVV131vw+Vq6666qqrrrrqqv9CtslMXhDb3M82ALZ5INvYBsA2trmfbWwDYBsA29jmqquuuuqqq6666qqr/h+ictVVV1111VVXXfVfqLUGgG0AbANgm+fHNvezjW3uZxsA29jGNvezzb+XJAD29/e56qqrrrrqqquuuuqq/6UIrrrqqquuuuqqq/5rPSMzAbDNA9kGwDYvjG1sA2AbANvYBsA2/5Fsc9VVV1111VVXXXXVVf9LUbnqqquuuuqqq676L2QbANvczzbPzTb3s41tbGOb+9nGNra5n20AbGMb2/x7SeKqq6666qqrrrrqqqv+lyK46qqrrrrqqquu+i8k6dbMxDa2sc0D2eZ+tnl+bGMb2wDYxja2AbDN82Mb2/xbXXPNNQ/mqquuuuqqq6666qqr/nehctVVV1111VVXXfVfyDa2eW62sc1zs80LY5sHsg2Abe5nm6uuuuqqq6666qqrrvp/iuCqq6666qqrrrrqv1hmYhvbANjmgWzz3GxjG9vYxja2sY1tbGMbANsA2ObfSxKSOHv2LFddddVVV1111VVXXfW/EJWrrrrqqquuuuqq/0IRcSsPYJvnxzb3s82/xDa2sc0D2QbANs/NNi+qiOCqq6666qqrrrrqqqv+FyK46qqrrrrqqquu+i+WmdjGNs/NNvezzXOzDYBtbGMb29zPNraxzX+0M2fOPJirrrrqqquuuuqqq67634Xgqquuuuqqq6666r9YZmKb+9nGNrZ5brYBsI1tAGzzQLaxjW0eyDZXXXXVVVddddVVV131/xyVq6666qqrrrrqqv9CEXErgG0AbPPcbPMvsY1tbANgGwDbANgGwDa2+feQxFVXXXXVVVddddVVV/0vRXDVVVddddVVV131XywzAbDNC2Kb+9nmfraxzQPZBsA2/1nOnz/PVVddddVVV1111VVX/S9EcNVVV1111VVXXfVfrLV2q20eyDYAtrmfbV4Q29jGNraxjW1sYxvb2OY/SkRw1VVXXXXVVVddddVV/wtRueqqq6666qqrrvovlpnYxja2sQ2AbZ6bbQBsYxsA29zPNi8q2/xrSQJAElddddVVV1111VVXXfW/EMFVV1111VVXXXXVf7FaK7Z5QWzzQLa5n20AbGMbANvYxja2sY1tbGMb29jmX0sSAJIAuOaaax7MVVddddVVV1111VVX/e9CcNVVV1111VVXXfVfbL1e3wpgG9v8e9gGwDYAtvmX2Oaqq6666qqrrrrqqqv+nyC46qqrrrrqqquu+i9mG9vczza2eSDb2OZ+trENgG0AbANgGwDbANjmP9qFCxe46qqrrrrqqquuuuqq/4UIrrrqqquuuuqqq/6L2cY2tnkg29jmgWzzQLYBsA2AbQBsYxvbANjGNrZ5INv8W0QEV1111VVXXXXVVVdd9b8Qlauuuuqqq6666qr/Ypl5q20AbPMvsc0D2QbANgC2eSDb/Gc4c+bMg7jqqquuuuqqq6666qr/XQiuuuqqq6666qqr/ovZBsA2ALZ5INs8P7axDYBtAGxjG9vYxjYAtrmfbWzzQLZ5UUlCElddddVVV1111VVXXfW/EJWrrrrqqquuuuqq/2K2b81MAGwDYJsHss0D2ea52eZ+trmfbQBsY5urrrrqqquuuuqqq676f4zgqquuuuqqq6666r+YbWxjmweyjW3uZxvbPDfb2AbANrYBsI1tAGzz3Gzzb3Xx4kWuuuqqq6666qqrrrrqfyEqV1111VVXXXXVVf/FbPNAtnlhbHM/29zPNvezzf1sA2Cb/yiSuOqqq6666qqrrrrqqv+FCK666qqrrrrqqqv+i7XWyExsYxsA29zPNs+Pbe5nGwDb2AbANrYBsM39bPPvIQmAa6655sFcddVVV1111VVXXXXV/y5Urrrqqquuuuqqq/7rPcM2tnlBbPNAtrmfbQBscz/b2AbANvezzb+HJAAkcdVVV1111VVXXXXVVf8LEVx11VVXXXXVVVf9N7ANgG1sA2Ab29zPNs/NNg9kG9vczzb3s839bHPVVVddddVVV1111VX/D1G56qqrrrrqqquu+i8m6Vbb2OZ+tnl+bGMbANsA2MY2trENgG1sA2Ab2/x7SOKqq6666qqrrrrqqqv+DyC46qqrrrrqqquu+i9mG9sA2Oa52ea52eYFsY1tAGzzQLaxzb/XpUuXuOaaax7MVVddddVVV1111VVX/e9C5aqrrrrqqquuuuq/WETcmpnYBsA2ALaxDYBtnh/bANjGNraxDYBtbANgG9s8N9v8a0niqquuuuqqq6666qqr/peictVVV1111VVXXfXfIDOxzQtjmweyDYBtnptt/iW2AbDNv5Ykrrrqqquuuuqqq6666n8hKlddddVVV1111VX/DWxjG9vYxjbPj21s8/zYxja2AbCNbf6jSOJ+ly5d4qqrrrrqqquuuuqqq/4XonLVVVddddVVV131XywibrWNbWxzP9sA2Oa52QbANgC2eSDbPJBtbGMbANv8W0jifmfOnHkwV1111VVXXXXVVVdd9b8LwVVXXXXVVVddddV/g2EYbrUNgG1sA2AbANs8N9sA2AbANraxDYBtbGObB7LNv4ckJHHVVVddddVVV1111VX/C1G56qqrrrrqqquu+m8gCdvY5gWxjW1s89xs80C2eSDb/Efa29vjmmuueTBXXXXVVVddddVVV131vwvBVVddddVVV1111X+DaZputY1tbGMb2wDY5rnZBsA2tgGwjW1sA2Ab2/x7SOK5SUISV1111VVXXXXVVVdd9b8QwVVXXXXVVVddddV/A9vY5rnZBsA2z80297PNA9nmfrYBsM2/hSSe2/7+PgDXXHPNg7nqqquuuuqqq6666qr/PQiuuuqqq6666qqr/htEBLaxjW2eH9vY5rnZBsA2trGNbWxzP9sA2Oa5SeJFIQlJSOJ+Z86ceTBXXXXVVVddddVVV131vweVq6666qqrrrrqqv8GwzDcmpnYBsA2tgGwzQPZxjYAtgGwzf1sA2Ab2/xbSeJ+knggSVy4cIGrrrrqqquuuuqqq676X4bgqquuuuqqq6666r9BZt5qG9vY5n62eUFs80C2sQ2Abf6zSEISFy5c4JprrnkwV1111VVXXXXVVVdd9b8Hlauuuuqqq6666qr/Bq01bHM/29jmfraxzXOzjW1scz/bANjGNgCSsM2LShLPjyQAJBERXHXVVVddddVVV1111f8yVK666qqrrrrqqqv+G9h+RmZiG9vczza2uZ9tbGOb52Yb2wDY5oFs8/xI4kUlCQBJSGJ3d5czZ848iKuuuuqqq6666qqrrvrfg+Cqq6666qqrrrrqv4GkWzMT29jGNv8S2wDYxjYAtrGNbWxjmxdEEveTxP0k8UCSuJ8kACRx6dIlrrnmmgdz1VVXXXXVVVddddVV/3sQXHXVVVddddVVV/03sE1mYpv72eZ+trHNc7PN/WwDYJv72cY2LwpJSOKBJAEgiftJAuDSpUtcc801D+aqq6666qqrrrrqqqv+96By1VVXXXXVVVdd9d8gIm7NTGxjG9sA2MY297ONbWxjGwDb2AbANgC2sc39bPOvJYkHksT9IoK9vT3OnDnzYK666qqrrrrqqquuuup/D4Krrrrqqquuuuqq/yaZiW1sYxvb3M82z49t7mcbANsA2MY2tgGwjW2emyReVJKQBMD+/j5XXXXVVVddddVVV131vwzBVVddddVVV1111X+DiLjVNpmJ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V1111VVXXfU/2Ww2+61rr732tTc3N5nNZnRdR9d1lFKotVJKISIopRARRASlFCKCUgoRQSmFiKCUQkQQEZRSiAgiAklEBJIAkASAbQBsYxvb2MY2trGNbTIT29jGNraxjW1sYxvb2AbANraxjW1sYxvbZCa2sU1mYhvb2MY2/1PYxja22dzc5Prrr8c2N9xwA9vb28xms1v/4R/+4bd/67d+63v+4R/+4be56qqrrrrqqquuuuq/A3rQgx7EVVddddVVV1111f9ktdbfuuaaa157e3ub2WxG3/d0XUcphVorpRQiglIKEUEphYggIiilEBGUUogISilEBBFBKYWIICKICCQhCUkASALANgC2sY1tbGMb29jGNraxjW1sYxvb2MY2ALaxDYBtAGxjG9vYxja2AchMAGxjm/vZ5kUliX8v2wBIAsA2tgGwjW0yk8zENq01NjY2uO6663jMYx7DbDa79bd+67e++7d/+7e/57777ruVq6666qqrrrrqqqv+q6AHPehBXHXVVVddddVVV/1Plpmvfe211/7WsWPHWCwW9H1PrZVaK7VWSimUUogISilEBBFBKYWIICIopRARlFKICCKCUgoRQUQQEUgiIpAEgCQAbHM/29jGNraxjW1sYxvb2AbANraxjW3uZxsA29zPNgC2AbANgG0AbANgGwDbPDdJ/FexDYBtbJOZ2CYzsU1m0lqjtUZrjY2NDR7xiEfwqq/6qtx33323fv3Xf/37/MM//MNvc9VVV1111VVXXXXVfzb0oAc9iKuuuuqqq6666qr/yTLzwSdPnnz6iRMn2NjYoO97uq6j1kqtlVIKpRQiglIKEUFEUEohIogISilEBKUUIoKIoJRCRBARRAQRgSQkIQkASQDYBsA2ALaxjW1sA2Ab29jGNgC2sc39bPNvYRsA2/xPYBvb2MY2mYltMpPMJDNprZGZtNZorTFNE4vFgkc+8pE89rGPZRiGWz/rsz7rde67775bueqqq6666qqrrrrqPwt60IMexFVXXXXVVVddddX/dLPZ7Leuueaa197c3GQ2m9H3PbVWaq2UUiilEBGUUogISilEBBFBKYWIICIopRARRASlFCKCiCAiiAgkEREASAJAEgC2AbANgG1sA2Ab29gGwDa2uZ9tHkgS95MEgCQAJCEJSUhCEvfLTABs89wk8V/FNpmJbTKTzKS1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Z7JNRHhzc/O1+75/8NbW1msDlFKQREQgiYhAEpKQhCQkIQlJvCCSuJ9tXhhJANhGEi8qSdjmhZGEJAAkERFEBOfOnePMmTMPvu+++27lqquuuuqqq6666n8+KlddddVVV1111VVX/Y83TdOtANM0PYP/IXZ3d78HoNb64O3t7fc6ceLEe89mswfXWimlEBFEBBGBJCQREfxrSOL5sc0DSQLANpJ4UUjCNpKwzf0k8UCSkIQkIoInPvGJXHPNNQ/+h3/4B6666qqrrrrqqqv+F6AcP36cq6666qqrrrrqqquu+rfKzN3VavU7e3t7P71er3cXi8VrZyb/Ekn8W0lCEpKQxP0kASCJF4VtAGxzP9sA2AYgM7FNZtJa48EPfjBd1/31P/zDP/wOV1111VVXXXXVVf/zUY4fP85VV1111VVXXXXVVVf9e9m+tF6vf2d3d/d7SikvXUp5MC+AJO4niX8vSUgCQBIAknhR2MY2ALaxjW0AbGObzMQ2mckwDLzyK78yv/Vbv/U9XHXVVVddddVVV/3PR3DVVVddddVVV1111VX/gVprt957773vc88993z2er1mHEemaaK1RmuNzCQzsY1tMhPb2MY2trGNbWzzorLNA9nmRSWJF0YSAJK4dOkSV1111VVXXXXVVf+LULnqqquuuuqqq6666qr/YJl5697e3ue01rj22ms/ezabYZtSCg8UEQDY5rlJAsA2LwpJANhGEgC2+deShCQAJCEJAElIYm9vjzNnzjyYq6666qqrrrrqqv8dCK666qqrrrrqqquuuuo/yeHh4efcddddn71arRjHkdYarTUyk8wkM7FNZmIb29gGwDa2sY1tbGMb2zw/trHNv5Yk7ieJ+0nifpKQhCQkce7cuQdz1VVXXXXVVVdd9b8D5fjx41x11VVXXXXVVVddddV/lmmafmcYBubz+WtLQhIAkrifJCRxP0k8N0lIQhLPjyQkIQkASbwgkrDN/WwDYBvb2MY2ALbJTDKTzGSaJm666SYODw9/57777ruVq6666qqrrrrqqv/ZqFx11VVXXXXVVVddddV/sqOjo8+59957ufbaaz9bEgCSeG4RAYBt7icJANs8N0k8kG0AJGEbSTw3SdhGErZ5UUhCEpKICHZ3d7nqqquuuuqqq676X4Lgqquuuuqqq6666qqr/gscHR19z+7u7m8Pw8A0TbTWyExsYxvb2MY2trGNbWxjG9vY5oFsYxvb2ObfShL3k4QknpskJCGJS5cu8djHPva1uOqqq6666qqrrvqfj+Cqq6666qqrrrrqqqv+a9y6u7v7PsvlkmmamKaJ1hqZSWaSmWQmtrGNbQBsYxvbANjGNraxzXOzjW0AbPPCSOKBJHE/SQBIQhL3iwh2d3e56qqrrrrqqquu+l+C4Kqrrrrqqquuuuqqq/6L2L71vvvue5/1es00TWQmrTUyE9vYxja2sY1tbHM/29jGNvezjW1sY5vnZhsA2/xrSeJ+kpCEJHZ3d3nxF3/x1+Gqq6666qqrrrrqfz6Cq6666qqrrrrqqquu+i80TdN3X7hw4bfHcWSaJjKTzCQzsY1tbGMb29jGNraxzf1sYxvbPDfb2OZ+tnlBJAEgiRdEEgCSkEREcM011zyYq6666qqrrrrqqv/5CK666qqrrrrqqquuuuq/2MHBwfus12umaaK1RmaSmWQmmUlmYhvb2MY2tgGwjW1scz/b2MY2trmfbf4tJCEJAEkASAJAEpcuXeK+++7jqquuuuqqq6666n8Bgquuuuqqq6666qqrrvqvd+u5c+e+exgGpmkiM8lMMhPb2MY2tgGwDYBtbHM/29jm+bHNi0oS95PE/STxQJIAkISkB11zzTUP5qqrrrrqqquuuup/NoKrrrrqqquuuuqqq676b7Berz9nvV4zTROtNTIT22QmtrGNbWxjG9vYBsA2trmfbWxjG9vY5n62eVFJ4vmRxP0kIQlJnDlz5sFcddVVV1111VVX/c9GcNVVV1111VVXXXXVVf8NJN169uzZ9xmGgWmayEwyE9vYxja2sY1tbANgG9sA2MY2tvnPIgkASUhCEpJ48pOfzDXXXPNgrrrqqquuuuqqq/5no3LVVVddddVVV1111VX/TaZp+u1hGOi6jlIKEYEkJCEJ29hGEraxDYAkbAMgCQDbPD+SsI0knpskbAMgCdu8KCRRSuHMmTMP4qqrrrrqqquuuup/NoKrrrrqqquuuuqqq676bxIRt953332fPQwDrTVaa2QmtslMbGMb29jGNgC2sQ2AbWzzL7ENgG0AJAEgiecmCUncTxIAkpCEJJ72tKdxzTXXPJirrrrqqquuuuqq/9kIrrrqqquuuuqqq6666r9RZn7PMAxM00RmkplkJraxjW1sA2Ab29gGwDb3s41tnptt7mebf4kk7ieJ+0kCQBKSkMRVV1111VVXXXXV/wIEV1111VVXXXXVVVdd9d8oIm7d39//7XEcaa2RmWQmtslMbGMb2wDYBsA2ALaxzf1sYxvb2OZFIQkASTw3SdxPEgCS2N3d5cVe7MVem6uuuuqqq6666qr/2Qiuuuqqq6666qqrrrrqv9nh4eFnr9drpmkiM7FNZmIb29jGNraxjW0AbGMbANvY5vmxzX8USUhCElddddVVV1111VX/CxBcddVVV1111VVXXXXVf7NSyu8cHBz89jRNtNbITGxjG9vYxja2AbCNbWwDYJv72cY297PNi0ISL4gkJHE/SVy6dImrrrrqqquuuuqq/wUIrrrqqquuuuqqq6666n+Ag4OD3x7HkdYarTUyE9tkJraxjW1sA2AbANsA2OaBbGOb+9nmRSUJSUjigSQhiftJejBXXXXVVVddddVV/7MRXHXVVVddddVVV1111f8Akr5nHEdaa2QmmUlmYhvb2MY2trENgG0AbANgG9v8e0jigSTx3CQhiXPnznHNNdc8mKuuuuqqq6666qr/uQiuuuqqq6666qqrrrrqf4CIuPXw8PC3W2tkJpmJbWxjG9vczza2AbANgG3uZxvb2MY2tnlBJHE/SbwgknggSUjiqquuuuqqq6666n84gquuuuqqq6666qqrrvof4ujo6Htaa2QmmUlmYhvb2MY2tgGwjW0AbANgG9u8ILZ5fiTxwkgCQBKSkIQkzp8/z5kzZx7MVVddddVVV1111f9cBFddddVVV1111VVXXfU/x2+P40hrDdtkJpmJbWxjG9vY5n62AbDN/WzzryWJfw1JRARXXXXVVVddddVV/8MRXHXVVVddddVVV1111f8QEXHr4eHhb7fWyExsYxvb2MY2trGNbWwDYBsA29zPNraxjW1sA2CbF0YSkpCEJJ4fSUji/PnzXHXVVVddddVVV/0PR3DVVVddddVVV1111VX/gyyXy99urZGZ2MY2mYltbGOb+9nGNgC2AbCNbf6jSOKBJAEgiYjgmmuueTBXXXXVVVddddVV/3MRXHXVVVddddVVV1111f8grbXfaa2RmdjGNraxjW0AbGOb+9kGwDb3s82/RBIPJIkXRBKSAJAEwMWLFzlz5syDuOqqq6666qqrrvqfi+Cqq6666qqrrrrqqqv+B5F06zRNZCaZiW3uZxvb2MY2trENgG0AbHM/29gGwDa2AbDNv4YknpskLl68yFVXXXXVVVddddX/cARXXXXVVVddddVVV131P0hE3Hp0dPTbmYltbGMb2wDYxjb3s41tAGwDYJsHss2/hiQk8fxI4n6SuOqqq6666qqrrvofjuCqq6666qqrrrrqqqv+h1mtVr+dmWQmtrGNbWxjGwDb2OZ+tgGwDYBtXhjb3E8SkgCQxP0k8fxIQhKSuOaaax7MVVddddVVV1111f9cBFddddVVV1111VVXXfU/TGvtd1pr2MY2trGNbQBsYxvb2MY2ALYBsA2AbWzzQLb515AEgCQk8UC7u7tcc801D+aqq6666qqrrrrqfy6Cq6666qqrrrrqqquu+h9G0q3TNJGZZCa2uZ9tbPPcbPOC2MY2tnlhJPGiksRVV1111VVXXXXV/wIEV1111VVXXXXVVVdd9T9MRNy6Wq1+OzOxjW1sY5v72cY2trHN/WwDYBvb/EeQxP0kIQmAiOCqq6666qqrrrrqfziCq6666qqrrrrqqquu+h9oHEcyE9vYxja2sY1tbPNAtrENgG3uZ5sXRhIPJAlJSOKFkcTu7i5nzpx5MFddddVVV1111VX/cxFcddVVV1111VVXXXXV/0Cr1eq3MxPb2MY2ALa5n21sY5v72QbANvezzQPZBsA295PEc5PEVVddddVVV1111f9yBFddddVVV1111VVXXfU/029nJpmJbQBsA2Cb58c2D2Sb+9nGNrZ5QSTxwkjiuV1zzTUP5qqrrrrqqquuuup/LoKrrrrqqquuuuqqq676n+nWzMQ2ALZ5INvYxja2sc39bPMfRRIAkgCQhCQkIYnHPe5xt3LVVVddddVVV131PxfBVVddddVVV1111VVX/Q8UEc+wjW1sYxvb2OYFsY1tAGwDYJt/iSTuJwlJSOJFcc011zyYq6666qqrrrrqqv+5CK666qqrrrrqqquuuup/qOVy+du2sc0D2cY2trGNbWxzP9sA2AbANrb5t5LEVVddddVVV1111f9SBFddddVVV1111VVXXfU/VGuNzMQ2trGNbV4Y27wgtvnXkMQLI4mrrrrqqquuuuqq/+EIrrrqqquuuuqqq6666n+oYRh+2za2sY1tAGzzQLaxjW3uZxsA2zyQbWxjmweShCReVJIAkMRVV1111VVXXXXV/2AEV1111VVXXXXVVVdd9T/UOI7Yxjb3sw2AbWxjm+dmmweyzYtKEpKQBIAkACQhCQBJXHXVVVddddVVV/0vQXDVVVddddVVV1111VX/c/1OZgJgG9u8ILaxjW3uZ5v72eY/giTuJ4mrrrrqqquuuuqq/+EIrrrqqquuuuqqq6666n8o29jGNvezjW0eyDbPzTYAtrmfbf41JAEgiauuuuqqq6666qr/pQiuuuqqq6666qqrrrrqf6iIuNU2trHNA9nmBbHNv4UkACTxojp37hxXXXXVVVddddVV/4MRXHXVVVddddVVV1111f9gtrENgG0eyDa2uZ9tbHM/2wDY5n62eWEkASCJF0YSV1111VVXXXXVVf8LEFx11VVXXXXVVVddddX/UBFxqyQAbANgG9s8N9u8qGzzQJKQxPMjiauuuuqqq6666qr/xQiuuuqqq6666qqrrrrqf7BhGG61DYBtXlS2AbANgG3+tSRx1VVXXXXVVVdd9b8cwVVXXXXVVVddddVVV/0PFhEA2OaBbHM/2wDYxja2eX5scz/bPDdJAEjiuUlCEs/t9OnTXHXVVVddddVVV/0PRnDVVVddddVVV1111VX/gw3DcKttnh/b2OYFsQ2AbV5UkgCQxP0k8UCSAJDEVVddddVVV1111f9wBFddddVVV1111VVXXfU/mG0eyDa2+ZfY5vmxzb+GJF6Y++6771auuuqqq6666qqr/uciuOqqq6666qqrrrrqqv/BbGMbANu8ILYBsI1t7mcbANu8MJK4nyQAJPHcJHHVVVddddVVV131vwiVq6666qqrrrrqqquu+h8sM28FsM1/NkkA2EYSV1111VVXXXXVVf8HEFx11VVXXXXVVVddddX/UbZ5INsA2OY/yjRNXHXVVVddddVVV/0PRnDVVVddddVVV1111VX/g9nm+bHN/WzzwtjmhZHEA0niRXXttddy1VVXXXXVVVdd9T8YwVVXXXXVVVddddVVV/0fYRsA29jmX0MSkpAEgCQkIYmrrrrqqquuuuqq/8UIrrrqqquuuuqqq6666n8p29jmhbENgG0AbPOvJQlJXHXVVVddddVVV/0vRHDVVVddddVVV1111VX/g0niX8M2/x6SkMRVV1111VVXXXXV/xEEV1111VVXXXXVVVdd9X+Ubf41JHE/SUjihSmlcPbs2Vu56qqrrrrqqquu+p+LylVXXXXVVVddddVVV/0PJon/TJIAkMT9JPGi2Nra4qqrrrrqqquuuup/OIKrrrrqqquuuuqqq676H6zrugdL4l9im/vZxjb3sw2AbZ4fSdxPEg8kiftJ4oEkcdVVV1111VVXXfU/HMFVV1111VVXXXXVVVf9D5aZAEjiP5Jtnpsk7ieJf8mxY8e47777buWqq6666qqrrrrqfy4qV1111VVXXXXVVVdd9T+YJP4rSAJAEpIAkMRVV1111VVXXXXV/3IEV1111VVXXXXVVVdd9X+YbZ6bbSTx3CTx/Ejiqquuuuqqq6666n8pgquuuuqqq6666qqrrvofThIAkvi3ss0LIon7SUISkviXHD9+nPvuu+9Wrrrqqquuuuqqq/7nIrjqqquuuuqqq6666qr/wUopD+bfyDb/EkkASEISz00SV1111VVXXXXVVf+LUbnqqquuuuqqq6666qr/wSTx30USL4htbHP27NlncNVVV1111VVXXfU/F8FVV1111VVXXXXVVVf9D2abfwvbPD+2eW6SkASAJCQhiX/JiRMnuOqqq6666qqrrvofjuCqq6666qqrrrrqqqv+B5PEv5dtXhSSuOqqq6666qqrrvo/huCqq6666qqrrrrqqqv+B5PEi8o2/16SeFGdOHGCq6666qqrrrrqqv/hCK666qqrrrrqqquuuup/sL7vH8x/EklIAkASkgCQxIvCNvfdd9+tXHXVVVddddVVV/3PRXDVVVddddVVV1111VX/g2UmknhhbHM/2/xrSeJ+kgCQhCSeH9sA2Oaqq6666qqrrrrqfziCq6666qqrrrrqqquu+j/GNs+PbV4QSUgCQBL/EtucPHmSs2fP3spVV1111VVXXXXV/1wEV1111VVXXXXVVVdd9T+Ybf49bPPcJPFAknhBJPGC2Oaqq6666qqrrrrqfzgqV1111VVXXXXVVVdd9T+YJP4zSeJ+kvjXOHXqFFddddVVV1111VX/w1G56qqrrrrqqquuuuqq/6Ey88H8J5LE/SRxP0lI4kVx33333cpVV1111VVXXXXV/1wEV1111VVXXXXVVVdd9b+AJO5nm/vZBsA2z802LwpJ3E8Sz48kHsg2trnqqquuuuqqq676H47gqquuuuqqq6666qqr/h+SBIAkACQhiQeSxP1s80CSOHXqFFddddVVV1111VX/wxFcddVVV1111VVXXXXV/0G2eSDbvCCSeCBJPJAknptt7rvvvlu56qqrrrrqqquu+p+N4Kqrrrrqqquuuuqqq/4Hk8QLYpsHss2/lSQkIQkASTw/tgGQxFVXXXXVVVddddX/AgRXXXXVVVddddVVV131P1RmPpgXwDbPj21s86KQhCT+LXZ2djh79uytXHXVVVddddVVV/3PRuWqq6666qqrrrrqqqv+l7DNfwZJSEISV1111VVXXXXVVf/HEFx11VVXXXXVVVddddX/UJJ4UdjmRSWJf4kkXhjbHD9+nPvuu+9Wrrrqqquuuuqqq/5nI7jqqquuuuqqq6666qr/hyQhCUlIQhKSeFHZ5qqrrrrqqquuuup/AYKrrrrqqquuuuqqq676HyozHwwgifvZ5l/LNi8qSQBI4rnZ5qqrrrrqqquuuup/GYKrrrrqqquuuuqqq676H0oSkviPJon7SUISkpAEgCQAJHE/STzQ8ePHue+++27lqquuuuqqq6666n82gquuuuqqq6666qqrrvofShIvKtv8R5DEi8I2V1111VVXXXXVVf8LEFx11VVXXXXVVVddddX/UBHBv8Q2L4xtXhBJAEhCEpJ4bpK46qqrrrrqqquu+l+M4Kqrrrrqqquuuuqqq/6PsM2LShIAkgCQBIAkJCGJF+bEiROcPXv2GVx11VVXXXXVVVf9z0Zw1VVXXXXVVVddddVV/0NJ4l/LNv9akgCQxIvKNlddddVVV1111VX/CxBcddVVV1111VVXXXXV/1CZ+SD+DWxjG9u8MJKQhCQkIQlJvChOnDjBVVddddVVV1111f8CVK666qqrrrrqqquuuup/qFIKkvivJonnRxL3s8199913K1ddddVVV1111VX/sxFcddVVV1111VVXXXXV/1K2+beQhCQkIQlJSEISkgCQhCReENtcddVVV1111VVX/S9AcNVVV1111VVXXXXVVf9DSeL5sc0D2ebfSxL3k8QLY5sTJ05w9uzZW7nqqquuuuqqq676n43KVVddddVVV1111VVX/Q8lif9IknhukpAEgCQk8aKwzVVXXXXVVVddddX/AgRXXXXVVVddddVVV131P5SkB/MC2ObfQxKSkIQkJCGJF9XJkye56qqrrrrqqquu+l+A4Kqrrrrqqquuuuqqq/6HksSLyjYvCkk8P5IAkIQkJPEvue+++27lqquuuuqqq6666n82KlddddVVV1111VVXXfU/mCReVLYBkMSLQhKSkASAJJ6bJK666qqrrrrqqqv+F6Ny1VVXXXXVVVddddVV/0NJ4j+DJCRxP0lIQhKSkASAJF6QkydPctVVV1111VVXXfW/AMFVV1111VVXXXXVVVf9DyWJf4lt/q0kIQkASQBI4rlJ4rmdPXv2GVx11VVXXXXVVVf9z0flqquuuuqqq6666qqr/ofquu7B/CeThCQkcT9JSOIFkcRVV1111VVXXXXV/xJUrrrqqquuuuqqq6666n+o1hr/WSQhCQBJSAJAEv+SnZ0d7rvvvlu56qqrrrrqqquu+p+PylVXXXXVVVddddVVV/0PJYn/DJK4nyQkASCJq6666qqrrrrqqv9jCK666qqrrrrqqquuuup/Ods8kG1eEEncTxKSAJAEgCQkIQlJPD/Hjh3jvvvuu5Wrrrrqqquuuuqq//moXHXVVVddddVVV1111f9Qfd8/mP8kkrifJCQBIImrrrrqqquuuuqq/0MIrrrqqquuuuqqq6666n+o1hoAknh+bHM/2/xrSUISkpCEJAAkcT9JXHXVVVddddVVV/0vRuWqq6666qqrrrrqqqv+B5PEA9nmBbENgCRs84JI4n6SkIQkACQBIIkX5NixY9x3331P56qrrrrqqquuuup/PoKrrrrqqquuuuqqq676H842/9EkIQkASUjifpJ4YWxz1VVXXXXVVVdd9b8Elauuuuqqq6666qqrrvofShIAkvj3koQkHkgSkpAEgCQkcdVVV1111VVXXfV/CMFVV1111VVXXXXVVVf9L2SbfwtJSEISAJKQhCQkIQlJAEjifpK43/Hjxzl79uwzuOqqq6666qqrrvqfj8pVV1111VVXXXXVVVf9D1VKeTDPh20k8e8lCUlIQhIPJIkXxDZXXXXVVVddddVV/0tQueqqq6666qqrrrrqqv+hJPEvsY0knh/bvCCSkIQkACQBIAlJPJAkHuj48eNcddVVV1111VVX/S9BcNVVV1111VVXXXXVVf9D2eY/gyQeSBKSAJDEi+Ls2bO3ctVVV1111VVXXfU/H5Wrrrrqqquuuuqqq676X8A2L4htJPGikASAJCQhCUlI4oEkIQlJPLfM5Kqrrrrqqquuuup/CSpXXXXVVVddddVVV131P5Qk/rVs86KShCQkIQkASUjihTlx4gT33XffrVx11VVXXXXVVVf9z0flqquuuuqqq6666qqr/gfKzAfxXGzzgtgGQBIviCQAJCEJAElIQhIAkviX2Oaqq6666qqrrrrqfwkqV1111VVXXXXVVVdd9f+UJCQhCUncTxKSeEFOnDjBVVddddVVV1111f8SVK666qqrrrrqqquuuup/KdtI4l9DEgCSkIQkJCEJAEm8KO67775bueqqq6666qqrrvqfj8pVV1111VVXXXXVVVf9DyaJ/2iSkIQkJCEJSQBIQhIAknggSVx11VVXXXXVVVf9L0Plqquuuuqqq6666qqr/oeSxH82SUQEknggSbwgJ06c4Kqrrrrqqquuuup/CSpXXXXVVVddddVVV131P5DtB/MfSBL3k4QkJCEJSUgCQBKSuJ8kJPFA9913361cddVVV1111VVX/e9A5aqrrrrqqquuuuqqq/6PkwSAJCRxP0lIQhKSAJDE8yMJAElcddVVV1111VVX/S9CcNVVV1111VVXXXXVVf8L2QbANs/NNi+MJCQhCUlIIiKQhCQkIYnnZ3t7m7Nnz97KVVddddVVV1111f8OVK666qqrrrrqqquuuur/IUlIQhKSkIQkHkgSz00SV1111VVXXXXVVf+LULnqqquuuuqqq6666qr/gTLzwbyIbHM/SbwwkpAEgCQkIQlJAEhCEi/Izs4O9913361cddVVV1111VVX/e9AcNVVV1111VVXXXXVVf8DSUISz802tvn3koQkJCEJSUhCEpKQxFVXXXXVVVddddX/AVSuuuqqq6666qqrrrrqfyBJ/EeTBIAkJCEJSUQEkpCEJB5IElddddVVV1111VX/i1G56qqrrrrqqquuuuqq/4Ek8Z9BEgCSAJCEJCQhCQBJAEjiue3s7HDVVVddddVVV131vwiVq6666qqrrrrqqquu+h9IEv+RJHE/SQBIIiKQhCQkIQkASdxPEg9033333cpVV1111VVXXXXV/w4EV1111VVXXXXVVVdd9b+Ubf6tJCEJSUgiIpCEJCRx1VVXXXXVVVdd9X8EwVVXXXXVVVddddVVV/3P9GD+g0lCEpKQhCQkERFIQhKSeH4kAbCzs8PZs2efwVVXXXXVVVddddX/DlSuuuqqq6666qqrrrrqfyBJ/GeShCQkIQlJSEISkpDE82Obq6666qqrrrrqqv9FqFx11VVXXXXVVVddddX/QJKQxL+Wbe4niedHEgARgSQkIYmI4IEkIYn7SeL48eNcddVVV1111VVX/S9CcNVVV1111VVXXXXVVf8DSeJFYZv72eb5kcT9JAEgCUlEBJKQhCQkIYkXxDb33XffrVx11VVXXXXVVVf970Bw1VVXXXXVVVddddVV/wNFxIN5EdnmXyIJSQBIQhKSkEREEBFIQhIAkrjqqquuuuqqq676P4Dgqquuuuqqq6666qqr/geyDYAknh/bPJBtnh9JPJAkJCEJSUhCEpKQhCQk8UCSuN/Ozg5nz569lauuuuqqq6666qr/HahcddVVV1111VVXXXXV/0CS+M8kCUlIIiKQhCQeSBJXXXXVVVddddVV/8tRueqqq6666qqrrrrqqv8nJCEJSUhCEhGBJCQhCUlIQhLPz/Hjx7nqqquuuuqqq676X4TKVVddddVVV1111VVX/Q8kif8skpCEJCQhiYhAEpJ4IEkASOJ+9913361cddVVV1111VVX/e9A5aqrrrrqqquuuuqqq/6HksR/FEk8N0lIIiKQhCQkIQlJPD+2ueqqq6666qqrrvpfhOCqq6666qqrrrrqqqv+B4qIB/NcbANgm38rSUhCEhFBRCAJSUhCEveTxHM7ceIEV1111VVXXXXVVf+LEFx11VVXXXXVVVddddX/QJL4l9jmRSEJAEkASEISkpCEJCICSQBI4oEkcb/77rvvVq666qqrrrrqqqv+96By1VVXXXXVVVddddVV/0fY5l8iCQBJSCIiiAgkIQlJSEISz00SV1111VVXXXXVVf/LEFx11VVXXXXVVVddddX/Irb5t5CEJAAkIQlJSEISkpCEJF6Q7e1tzp49eytXXXXVVVddddVV/3sQXHXVVVddddVVV1111f9Afd8/mBeBbQBs86KQhCQkIYmIICKICCQhCUkASEISAJK46qqrrrrqqquu+l+I4Kqrrrrqqquuuuqqq/4Haq3xorLNCyKJB5IEgCQiAklIQhKSkASAJJ7bzs4O9913361cddVVV1111VVX/e9B5aqrrrrqqquuuuqqq/6fkASAJCQhCUlEBJKQBIAkHkgSV1111VVXXXXVVf9LUbnqqquuuuqqq6666qr/4yQhCQBJSEISkogIJCEJSUjiqquuuuqqq6666v8QKlddddVVV1111VVXXfU/lCReENtI4t9CEpKICCQREUgiIpCEJCTx3La3t7nqqquuuuqqq676X4bKVVddddVVV1111VVX/Q8kiX8vSTyQJCQhCUlIIiKQhCQkIYn7SUISD3TffffdylVXXXXVVVddddX/HlSuuuqqq6666qqrrrrqf6BSyoP5TxQRSEISEQGAJCQhiecmiauuuuqqq6666qr/hQiuuuqqq6666qqrrrrq/yBJPJAkJCEJSUgiIogIJBERSOJ+knhuOzs7nD179hlcddVVV1111VVX/e9B5aqrrrrqqquuuuqqq/6Pk8T9JCEJSUhCEpKQhCQkIYkHkgSAba666qqrrrrqqqv+l6Fy1VVXXXXVVVddddVV/0vZRhIvjCSemyQkERFEBBEBgCQkcT9JSOJ+Ozs7XHXVVVddddVVV/0vQ3DVVVddddVVV1111VX/C9jm+bENgG3uJ4nnJglJSEISkpCEJCQREUhCEpKQxHOzzX333XcrV1111VVXXXXVVf97EFx11VVXXXXVVVddddX/MJn5YF4I2zyQbf41JCEJSUQEEYEkJHHVVVddddVVV131fwyVq6666qqrrrrqqquu+j9OEgCSkIQkIoKIQBKSAJCEJCTx/Gxvb3P27Nlbueqqq6666qqrrvrfg8pVV1111VVXXXXVVVf9PyAJAElIQhKSiAgiAttIQhIAkpAEgCQkcdVVV1111VVXXfW/EJWrrrrqqquuuuqqq676H0gS/16SeCBJAEhCEhGBJCQhCUlIQhL3k8T9jh07xlVXXXXVVVddddX/MlSuuuqqq6666qqrrrrqf5jMfDD/QSTxQJIAkIQkIoKIwDaS+Jfcd999t3LVVVddddVVV131vweVq6666qqrrrrqqquu+l/ENpL415CEJCQhCUlIIiKQhCQAJCEJSTw/trnqqquuuuqqq676X4bgqquuuuqqq6666qqr/oeRBIAkHsg297PNv5UkIgJJRASSkIQkJAEgCUk80PHjx7nqqquuuuqqq676X4bKVVddddVVV1111VVX/R8iiRdEEpKQhCQkIYmIwDaSAJDE/SQhCUncd999t3LVVVddddVVV131vwuVq6666qqrrrrqqquu+j/ANg8kiQeSBIAkJCGJiCAikASAJCTx/Ejiqquuuuqqq6666n8hgquuuuqqq6666qqrrvofJjMfLIl/iW3+JZKQBIAkJCEJSUhCEhGBJCQhCUlI4oE2Nzc5e/bsrVx11VVXXXXVVVf970Llqquuuuqqq6666qqr/oeRxAPZ5gWxDYAknpsknh9JRAQRQUQgCUlIQhL3k8RVV1111VVXXXXV/3JUrrrqqquuuuqqq6666n8YSfxHk4QkJCEJSUhCEpKQhCSeH0lsb29z33333cpVV1111VVXXXXV/y5Urrrqqquuuuqqq6666n8YSfxnkYQkJBERRAQRAYAkJCEJSQBI4qqrrrrqqquuuup/MSpXXXXVVVddddVVV131f5wkJCEJSUgiIpCEJCQhCUlI4qqrrrrqqquuuur/EIKrrrrqqquuuuqqq676H0YSL4xtXhhJ3E8Sz00SkogIIgJJSEISAJIAkMT9tra2uOqqq6666qqrrvpfiMpVV1111VVXXXXVVVf9D2P7QfwnkIQkJCEJSUhCEpKQhCQAJHE/SQDcd999t3LVVVddddVVV131vwuVq6666qqrrrrqqquu+h9GEpL495CEJAAkIQlJSCIiiAgigoggIrDN8yOJq6666qqrrrrqqv/FCK666qqrrrrqqquuuup/GEn8a9nmRSEJSUhCEpKQhCQkIQlJPLft7W3Onj37DK666qqrrrrqqqv+d6Fy1VVXXXXVVVddddVV/8NI4j+KJAAkIQlJSEISEYEkJCEJSUjifpK4n22uuuqqq6666qqr/hciuOqqq6666qqrrrrqqv9hIuLB/Ats86KSxANJQhKSiAgkIQlJAEhCEg+0s7PDVVddddVVV1111f9CBFddddVVV1111VVXXfU/jG3+NWzzL5GEJCQhiYhAEpKQhCQkIYkHkoQkMpP77rvvVq666qqrrrrqqqv+dyG46qqrrrrqqquuuuqq/2Ek8YLY5n62sc0LIokHkoQkJCGJiEASkpCEJK666qqrrrrqqqv+jyG46qqrrrrqqquuuuqq/yMkIYkHkoQkJAEgCUlEBJKICCICSQBIQhIAkrjf1tYWZ8+evZWrrrrqqquuuuqq/12oXHXVVVddddVVV1111f8wkpDEv5UkJPHcJCEJSUgiIpCEJCQhiftJ4oFsc9VVV1111VVXXfW/EJWrrrrqqquuuuqqq676f0ASkpCEJCQhCUlIQhKSkMQDSQLg2LFjXHXVVVddddVVV/0vRHDVVVddddVVV1111VX/w0h6MM/FNrb515KEJB5IEhGBJCQhCUkASEISDyQJ29x33323ctVVV1111VVXXfW/C5Wrrrrqqquuuuqqq676H0YS/xEk8UCSkIQkJBERSEISAJJ4QWxz1VVXXXXVVVdd9b8Qlauuuuqqq6666qqrrvo/ThKSAJBERCAJSUhCEpKQhCQAJCGJ+x07doyrrrrqqquuuuqq/4UIrrrqqquuuuqqq6666n8Z2/xLJPHcJCEJSUhCEhEBgCTuJ4n7SUIS9913361cddVVV1111VVX/e9D5aqrrrrqqquuuuqqq/6HKaU8mP8gkgCQhCQkIYmIQBKSkIQkJCGJ5yaJq6666qqrrrrqqv+lCK666qqrrrrqqquuuup/Ods8kCQAJAEgiftJQhKSiAgkIQkASTw/GxsbnD179lauuuqqq6666qqr/vchuOqqq6666qqrrrrqqv+hJPGC2OaBJAEgiedHEpKQhCQkIQlJSEIS95OEJCQhiauuuuqqq6666qr/xahcddVVV1111VVXXXXV/0CS+JfYBkASL4gkJAEgCUlIIiKQhCQkIQlJSOK5bW5uct99993KVVddddVVV1111f8+VK666qqrrrrqqquuuur/IEk8kCTuJwlJSEISkpDEVVddddVVV1111f9BVK666qqrrrrqqquuuup/mK7rHsx/AEncTxKSkIQkJCEJSdxPEg8kCQBJXHXVVVddddVVV/0vRXDVVVddddVVV1111VX/w2Qm/xaSAJDE/SQhCQBJSCIikEREACAJSUhCEpK4nyQ2Nja46qqrrrrqqquu+l+K4Kqrrrrqqquuuuqqq/6HkcQLYpt/C0lIQhKSkIQkJCGJ5yaJ+0nivvvuu5Wrrrrqqquuuuqq/30Irrrqqquuuuqqq6666n+Q13md13lv2/x7SUISAJK4nyQkERFIQhIAkrjqqquuuuqqq676P4jgqquuuuqqq6666qqr/gd5x3d8x8/i30ESDyQJAElIQhKSkIQkJCEJAElI4rltbm5y9uzZZ3DVVVddddVVV131vw+Vq6666qqrrrrqqquu+h9GEv8ZJCEJSUhCEpKQhCSemyQkYZurrrrqqquuuuqq/6WoXHXVVVddddVVV1111f8g9957L7b517DNA0nigSQhCQBJSEISkrifJCQBIIkH2tra4qqrrrrqqquuuup/KYKrrrrqqquuuuqqq676H+Kaa6558Eu8xEs8WBIvjG3+JZKQhCTuJwlJSEISkpCEJJ6bJO5nm/vuu+9Wrrrqqquuuuqqq/73Ibjqqquuuuqqq6666qr/Ie67775bAR796EfzorLNv0QSkpCEJCQhCQBJPJAk7icJSVx11VVXXXXVVVf9L0Zw1VVXXXXVVVddddVV/4P8wz/8w2+/+qu/Os+PbV4QSUjiuUkCQBL3k4QkJAEgCUlI4vm55pprOHv27K1cddVVV1111VVX/e9DcNVVV1111VVXXXXVVf+D/NZv/db3PPrRj+bUqVO8MLaxzXOTxP0kASAJAElIQhKSkIQk/iXL5fIZ9913361cddVVV1111VVX/e9DcNVVV1111VVXXXXVVf+D/NZv/dZ3Z+atb/EWb8G/lSQk8UCSkIQkJCEJSUhCEpJ4fh71qEdx3333PZ2rrrrqqquuuuqq/50Irrrqqquuuuqqq6666n+YH/3RH/2chz3sYbe+6Zu+KQC2+beShCQAJCEJSUhCEi+IJBaLBY961KP4rd/6re/hqquuuuqqq6666n8nKlddddVVV1111VVXXfU/zG/91m9995kzZx70Tu/0Tp8tiV/91V/l30IS95MEgCQkIQlJSOJ+kgCQxGw245GPfCT/8A//8Nu/9Vu/9d1cddVVV1111VVX/e9EcNVVV1111VVXXXXVVf8D/dZv/dZ3/8M//MNvv8mbvAmf8RmfwYkTJ/i3kIQkACQhCUlI4n6SeKBaKw996EM5ceIEP/IjP/I5XHXVVVddddVVV/3vRTl+/DhXXXXVVVddddVVV131P83R0dGlf/iHf/idW2+99W9e67Ve661f/MVfnI2NDZ72tKchCUlIQhKSKKVQa6WUQimFUgqlFGqt1Frp+575fM7m5ibb29tsb2+zsbFB3/dIIjNZrVasVitOnjzJU57ylN/++q//+vf5h3/4h9/mqquuuuqqq6666n8vyvHjx7nqqquuuuqqq6666qr/iQ4PD3ePjo52b7311r95rdd6rbd+2MMexsu//MuzWCx4+tOfjiQkAVBKoZRCKYVSCqUUaq2UUui6jq7rmM/nbGxssL29zfb2NhsbG3RdhyTOnTvH3t4eEcF9991363d913d9zD/8wz/8NlddddVVV1111VX/u1GOHz/OVVddddVVV1111VVX/U91eHi4e+utt/71b//2b3/PQx7ykJe+5ZZbHvzQhz6Ul3u5l+OGG25gtVqxu7tLrZVSCqUUSimUUiilUGul1krf98znczY3N9ne3mZ7e5uu6zg4OOD2229ntVpx77333nrrrbf+9Zd+6Ze+za233vrXXHXVVVddddVVV/3vhx70oAdx1VVXXXXVVVddddVV/1u82Iu92Gu/0zu902e92Iu92GvzTBcvXuS2227j9ttv5/DwkFory+WS1WrFbDbj1KlTbGxscPr0aa6//nq2traYz+fY5n733XffrT/6oz/6Ob/1W7/13Vx11VVXXXXVVVf934Ee9KAHcdVVV1111VVXXXXVVf/bXHPNNQ9+7dd+7fd68Rd/8dd+sRd7sdfm3+C+++679bd+67e+++zZs8/4rd/6re/mqquuuuqqq6666v8e9KAHPYirrrrqqquuuuqqq6763+yaa6558Iu92Iu99ou92Iu91jXXXPNggDNnzjz4mmuueTDAfffddyvA2bNnb73vvvtuve+++279h3/4h9/5h3/4h9/mqquuuuqqq6666v829KAHPYirrrrqqquuuuqqq6666qqrrrrqqquuuur/JCpXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q/hH5kVz5z1T9SsAAAAASUVORK5CYII=) ```js // Scale an imported model. @@ -85,15 +85,9 @@ cube sketch001 = startSketchOn(XY) rectangleSketch = startProfileAt([-200, 23.86], sketch001) - |> angledLine([0, 73.47], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 50.61 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -102,7 +96,7 @@ circleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63) sketch002 = startSketchOn(YZ) sweepPath = startProfileAt([0, 0], sketch002) |> yLine(length = 231.81) - |> tangentialArc({ radius = 80, offset = -90 }, %) + |> tangentialArc(radius = 80, angle = -90) |> xLine(length = 384.93) parts = sweep([rectangleSketch, circleSketch], path = sweepPath) @@ -111,6 +105,6 @@ parts = sweep([rectangleSketch, circleSketch], path = sweepPath) scale(parts, z = 0.5) ``` -![Rendered example of scale 2](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEgoUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVS/AT/zET5hnWq/X973ru77rtVx11VVXXXXVVVdd9b8JwVVXXXXVVVddddVVVz0fP/ETP2EeYDabXfPiL/7i13DVVVddddVVV1111f8mBFddddVVV1111VVXXfUiesd3fMcf4aqrrrrqqquuuuqq/02oXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqhfRZ37mZ74OV1111VVXXXXVVVf9b0Jw1VVXXXXVVVddddVVz8fbvd3b6R/+4R9+kGd6u7d7O3HVVVddddVVV1111f82BFddddVVV1111VVXXfUCfOZnfua7cdVVV1111VVXXXXV/2YEV1111VVXXXXVVVdd9ULcd999twJcc801D+aqq6666qqrrrrqqv9tqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XEVx11VVXXXXVVVddddULcfbs2VsBzpw582Cuuuqqq6666qqrrvrfhspVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KoKrrrrqqquuuuqqq656Ie67775bAa655poHc9VVV1111VVXXXXV/zZUrrrqqquuuuqqq6666oW47777bgU4c+bMg7jqqquuuuqqq6666n8bKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddULcfbs2WcAXHPNNQ/mqquuuuqqq6666qr/bahcddVVV1111VVXXXXVC3HffffdCnDNNdc8mKuuuuqqq6666qqr/rehctVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV70QZ8+evRXgzJkzD+aqq6666qqrrrrqqv9tqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qoX4r777rsV4JprrnkwV1111VVXXXXVVVf9b0Plqquuuuqqq6666qqrrrrqqquuuuqqq676v4rgqquuuuqqq6666qqr/gX33XffrQDXXHPNg7nqqquuuuqqq6666n8TKlddddVVV1111VVXXXXVVVddddVVV1111f9VBFddddVVV1111VVXXfUvOHv27K0AZ86ceTBXXXXVVVddddVVV/1vQuWqq6666qqrrrrqqquuuuqqq6666qqrrvq/iuCqq6666qqrrrrqqqv+Bffdd9+tANdcc82Dueqqq6666qqrrrrqfxMqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666l9w33333Qpw5syZB3HVVVddddVVV1111f8mVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddW/4OzZs88AuOaaax7MVVddddVVV1111VX/m1C56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVV/4L77rvvVoBrrrnmwVx11VVXXXXVVVdd9b8Jlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXfUvOHv27K0AZ86ceTBXXXXVVVddddVVV/1vQuWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq676F9x33323AlxzzTUP5qqrrrrqqquuuuqq/02oXHXVVVddddVVV1111VVXXXXVVVddddVV/1cRXHXVVVddddVVV1111YvgvvvuuxXgmmuueTBXXXXVVVddddVVV/1vQXDVVVddddVVV1111VUvgrNnz94KcObMmQdz1VVXXXXVVVddddX/FlSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/VxFcddVVV1111VVXXXXVi+C+++67FeCaa655MFddddVVV1111VVX/W9B5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV70I7rvvvlsBzpw58yCuuuqqq6666qqrrvrfgspVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq656EZw9e/YZANdcc82Dueqqq6666qqrrrrqfwsqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666kVw33333QpwzTXXPJirrrrqqquuuuqqq/63oHLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqqteBGfPnr0V4MyZMw/mqquuuuqqq6666qr/LahcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVL4L77rvvVoBrrrnmwVx11VVXXXXVVVdd9b8FwVVXXXXVVVddddVVV72I7rvvvlsBrrnmmgdz1VVXXXXVVVddddX/BlSuuuqqq6666qqrrrrqqquuuuqqq6666qr/qwiuuuqqq6666qqrrrrqRXT27NlbAc6cOfNgrrrqqquuuuqqq67634DKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yqCq6666qqrrrrqqquuehHdd999twJcc801D+aqq6666qqrrrrqqv8NqFx11VVXXXXVVVddddWL6L777rsV4MyZMw/iqquuuuqqq6666qr/DahcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVL6KzZ88+A+Caa655MFddddVVV1111VVX/W9A5aqrrrrqqquuuuqqq15E9913360A11xzzYO56qqrrrrqqquuuup/AypXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVi+js2bO3Apw5c+bBXHXVVVddddVVV131vwGVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVdd9SK67777bgW45pprHsxVV1111VVXXXXVVf8bULnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vIrjqqquuuuqqq6666qp/hfvuu+9WgGuuuebBXHXVVVddddVVV131Px2Vq6666qqrrrrqqquuuuqqq6666qqrrrrq/yqCq6666qqrrrrqqquu+lc4e/bsrQBnzpx5MFddddVVV1111VVX/U9H5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+K4Kqrrrrqqquuuuqqq/4V7rvvvlsBrrnmmgdz1VVXXXXVVVddddX/dFSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVv8J99913K8CZM2cexFVXXXXVVVddddVV/9NRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVf8KZ8+efQbANddc82Cuuuqqq6666qqrrvqfjspVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq676V7jvvvtuBbjmmmsezFVXXXXVVVddddVV/9NRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVf8KZ8+evRXgzJkzD+aqq6666qqrrrrqqv/pqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VX/Cvfdd9+tANdcc82Dueqqq6666qqrrrrqfzoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1UEV1111VVXXXXVVVdd9a9033333QpwzTXXPJirrrrqqquuuuqqq/4nI7jqqquuuuqqq6666qp/pbNnz94KcObMmQdz1VVXXXXVVVddddX/ZFSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/VxFcddVVV1111VVXXXXVv9J99913K8A111zzYK666qqrrrrqqquu+p+MylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8V5fjx41x11VVXXXXVVVddddW/xid90if9NMArvuIrvvXGxsZf/fVf//UTueqqq6666qqrrrrqfyKCq6666qqrrrrqqquu+lf4iZ/4CfMAb/EWb/EzXHXVVVddddVVV131PxXBVVddddVVV1111VVX/Tt96Id+6Ldy1VVXXXXVVVddddX/RFSuuuqqq6666qqrrrrq3+mee+75Xa666qqrrrrqqquu+p+IylVXXXXVVVddddVVV/07/eRP/uT3c9VVV1111VVXXXXV/0QEV1111VVXXXXVVVdd9a/wdm/3drrnnnuezDO93du9nbjqqquuuuqqq6666n8qgquuuuqqq6666qqrrvpX+sZv/MYPBPiHf/iH3+aqq6666qqrrrrqqv/JqFx11VVXXXXVVVddddW/0tmzZ28FOHPmzIO56qqrrrrqqquuuup/MipXXXXVVVddddVVV131b3T27Nlbueqqq6666qqrrrrqfzIqV1111VVXXXXVVVdd9W905syZB3PVVVddddVVV1111f9kVK666qqrrrrqqquuuupf6b777rsV4JprrnkwV1111VVXXXXVVVf9T0blqquuuuqqq6666qqrrvof5XVe53Xe+x3f8R0/i/+FJMm2eQBJsu2zZ8/e+vVf//Xvc999993KVVddddVVV131X4XKVVddddVVV1111VVXXfU/xod/+Id/1+u8zuu8N8Af/dEf8W9lm/9pXvVVX/XBn/M5n/Nbn/VZn/U69913361cddVVV1111VX/FahcddVVV1111VVXXXXVVf/jnD9/nu/+7u/mv4Nt/jOcOnWKRz3qUQ9+x3d8x8/6+q//+vfhqquuuuqqq676r0Bw1VVXXXXVVVddddVV/wb33XffrQDXXHPNg7nqP9ypU6d45CMfyX8HSUhCEpKQhCQkIQlJSEISkpDEi+K7v/u7AXixF3ux177mmmsezFVXXXXVVVdd9V+B4Kqrrrrqqquuuuqqq676H+Oaa655MM/0Fm/xFvxvIQlJSEISkpCEJCQhiQsXLvCkJz2Ja6655sHv+I7v+FlcddVVV1111VX/FQiuuuqqq6666qqrrrrqqv9RfvzHfxyAU6dOIQlJSEISkvjf7Lu/+7sBePEXf/HXueaaax7MVVddddVVV131n43gqquuuuqqq6666qqrrvof48yZMw8+d+4cj3vc4zh16hSPfOQjeW6SkIQkJCEJSUhCEpKQhCQkIQlJSOK/2/nz53nSk57EmTNnHvSO7/iOn8VVV1111VVXXfWfjcpVV1111VVXXfW/2jXXXPPgM2fOPPiaa655MA9w33333XrNNdc8GOC+++67FeDs2bO33nfffbdy1VX/Ac6ePXvrNddc8+AzZ848+L777ruVq/5DPe5xj+Oxj30sb/7mb85XfuVX8h9FEv8WtvmP8t3f/d184Rd+IS/2Yi/22tdcc82D77vvvlu56qqrrrrqqqv+s1C56qqrrrrqqqv+V7jmmmsefObMmQe/2Iu92Gu9+Iu/+Gu/2Iu92GvzXO67775br7nmmgfzL7jvvvtuPXv27K333Xffrf/wD//wO7/1W7/13Vx11VX/I1xzzTUPPnv2LI973ON4+7d/e06dOsX/BJL417DNC3L+/Hme+MQn8qhHPerB7/iO7/hZX//1X/8+XHXVVVddddVV/1moXHXVVVddddVV/2Ndc801D36xF3ux136d13md93qxF3ux1+aZzp8/zxOf+ESe9KQnAXD+/HnOnTuHpAfzXCRx6tQpAB75yEcCcOrUqQe/2Iu92INf7MVejNd5ndd57w//8A//rvvuu+/W3/qt3/ruf/iHf/idf/iHf/htrrrqqv9WZ8+e5XGPexyPfexjeeQjH8mTnvQk/jeRxAvzvd/7vXzBF3wBL/ZiL/ba11xzzYPvu+++W7nqqquuuuqqq/4zULnqqquuuuqqq/7Hecd3fMfPep3XeZ33vuaaax4McO7cOX72Z3+WJz7xiTzpSU8CQBIPJIkHksRz+6M/+iPud+rUKQAe+chH8shHPpJXeZVXefA7vdM7fTbAfffdd+tv/dZvffeP/uiPfg5XXXXVf7mzZ88C8LjHPY7HPvaxvPmbvzlf9VVfxb/ENv9bnD9/nic96Uk88pGPfPA7vuM7ftbXf/3Xvw9XXXXVVVddddV/BipXXXXVVVddddX/GC/2Yi/22h/+4R/+Xddcc82Dz507x8/8zM/wsz/7s0gCQBIAkrifJJ6bJF4QSQBcuHABgD/+4z/mj//4j/mFX/gFAN7szd6MV3mVV3nwO73TO33267zO67z3b/3Wb333j/7oj34OV1111X+6a6655sE8wO/+7u/yWq/1Wpw6dYoXhST+rWzzX+17vud7+IIv+AJe7MVe7LWvueaaB9933323ctVVV1111VVX/UejctVVV1111VVX/be75pprHvzhH/7h3/ViL/Zir/2EJzyBL/uyL+P8+fNIQhIAkgCQxP0k8UCSeEEk8cKcP38egO/93u/lF37hF3jkIx/JK7/yKz/4nd7pnT77dV7ndd77R3/0Rz/nt37rt76bq6666j/d2bNnATh79ixnz57lsY99LI985CN50pOexH8WSfxr2ebf4/z58zzpSU/ikY985IPf8R3f8bO+/uu//n246qqrrrrqqqv+oxFc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uuqqq6666qqr/oPcd999t/JMkpCEJGwjCQDbANjGNgC2sY1tbHM/29jGNraxjW1sA2Ab29jGNraxjW0AbGMb29jGNraxDYBtbGMb29jGNrYBsI1tbGMbANvYxjb3s41tbANgG9sA2MY297MNgG0AbGMbANtcddVVV1111X8wKlddddVVV1111VVXXXXVVf9Bzp49+4x/+Id/+O0Xe7EXe21JlFK46l/vH/7hH36bq6666qqrrvqPgR70oAdx1VVXXXXVVVddddVVV131H+kd3/EdP+t1Xud13pur/tX+4R/+4be//uu//n246qqrrrrqqv8Y6EEPehBXXXXVVVddddVVV1111VVXXXXVVVddddX/SVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/Ff8Iv8z1O0aqcs4AAAAASUVORK5CYII=) +![Rendered example of scale 2](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAE/UUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVf9r3PNNdc8+HM+53N+i/8nPuuzPut17rvvvlu56qqrrrrqqqv+tdCDHvQgrrrqqquuuuqqq6666qr/Pa655poHf9M3fdPTAc6dO8f58+f5v+zEiRO3XnPNNQ/++q//+vf5rd/6re/mqquuuuqqq67616By1VVXXXXVVVddddVVV/2vcubMmQfzTE960pP4ru/6Lv4tbPO/wau+6qs++H3f9315x3d8x8/6h3/4h9++7777buWqq6666qqrrnpREVx11VVXXXXVVVddddVV/6tcc801D+aZHvWoR/FvJQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSfxn+8M//EOe+MQncs011zz4Hd/xHT+Lq6666qqrrrrqX4Pgqquuuuqqq6666qqrrvpf5+zZszzucY/j1KlTvOqrvir/nSQhCUlIQhKSkIQkJCEJSUhCEpKQhCReFN/5nd8JwOu8zuu89+u8zuu8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991369d//de/D1ddddVVV/27/cM//MNvnzp1ikc84hG8qE6ePAnA4eEhAJKQhCQkASAJSQBIAkASkpCEJAAkASAJAEkASEISkpAEgCQAJAEgCQBJAEhCEgCSAJAEgCQkASAJAEncTxIAkrifJAAkcT9J3E8S95PE/SRxP0ncTxIPJIn7SeKBJHG/jY0NAO67775bueqqq6666n8jgquuuuqqq656prNnz9567bXXkpnY5oFs80C2uZ9tnh/b2AbANgC2eW62sY1tnpttbGMb2zyQbe5nG9vYBsA2trGNbTIT22QmmYltbANgm/tJQhKSkIQkJPGqr/qqPOhBD+K+++679bM+67Neh6uuuuqqq/5D3Hfffbf+wz/8w28/8pGP5N9CEpIAkIQkJCEJAElIQhKSAJAEgCQAJCEJSUhCEpIAkASAJAAkASAJAEkASEISAJIAkASAJO4nCQBJAEjifpIAkMT9JAEgCUkASOJ+krifJO4niftJ4n6SeCBJ3E8SDyQJgFOnTgFw33333cpVV1111VX/GxFcddVVV1111TPdd999tz7ucY/77kc96lHYxja2sQ2AbWxjGwDb3M82trGNbWzzgtjmBbGNbWxjm+dmm3+JbWxjG9tkJrbJTDIT22QmtrHN/SQhCUlEBJKQxMu93Mtx6tQpAL7+67/+fe67775bueqqq6666j/M3//93//2Ix7xCF5Up06dAmAcRyQhCUlIAkASkpCEJAAkASAJSUhCEpKQBIAkACQBIAkASQBIAkASAJKQhCQkASAJAEkASAJAEveTBIAkACRxP0kASOJ+krifJAAkcT9J3E8S95PE/SRxP0k8kCTuJ4kHksT9zp49+wyuuuqqq67634jgqquuuuqqq57La73Wa2Eb2/xHsA2Abe5nm38r29zPNraxjW1sYxvb2MY2tslMMpPMJDOxjW1sY5v7SUISkpjNZrz4i784J06c4L777rv1Mz/zM1/nH/7hH36bq6666qqr/kP9wz/8w++cOnUKANv8S06ePAnANE1IAkASkpCEJAAkIQlJSEISkgCQBIAkACQBIAkASUhCEpKQhCQkIQlJSAJAEgCSAJAEgCQAJAEgCUkASAJAEgCSkASAJAAkcT9J3E8SAJK4nyTuJ4n7SeJ+krifJB5IEveTxAOdPn0agH/4h3/4ba666qqrrvrfiOCqq666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GwBJ2EYStpGEbSRhG0kA2EYStpGEbQAWiwUA9913361cddVVV131fwHBVVddddVVV1111VVXXXXV/1Bnz559xj/8wz/89iu/8isDYBtJSEISkpCEJCQhCUlEBJKQhCQkIQlJSEISkpCEJCQhCUlIAkASkpAEgCQkIQkASUhCEgCSkASAJCQhCQBJSAJAEpIAkASAJCQBIAlJAEgCQBIAkgCQhCQkIQkASdxPEgCSAJAEgCTuJwkASQBI4sSJEwDcd999t3LVVVddddX/FQRXXXXVVVddddVVV1111VX/g/3Wb/3W9/BMtpGEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkACQhCUkASEISAJKQhCQAJCEJAElIAkASAJKQBIAkJAEgCQBJAEgCQBIAkpAEgCTuJwkASQBIAkAS95MEgCQAFosFAP/wD//w21x11VVXXfV/BZWrrrrqqquuuuqqq6666qr/wf7hH/7ht3mmruuQxHOzzf1scz/b3M8297PN/WxzP9sA2OZ+tgGwzf1scz/bANjmfra5n20AbHM/29zPNg9km/vZ5n62eSDbPJBt7meb52abB7LNczt+/DgA9913361cddVVV131fwWVq6666qqrrrrqqquuuuqq/8Huu+++W3/rt37ru1/sxV7sta+55poHl1K46j/PP/zDP/z2P/zDP/wOV1111VVX/V+BHvSgB3HVVVddddVVV1111VVXXfU/3eu8zuu895kzZx7EVf+p/uEf/uF3/uEf/uG3ueqqq6666v8K9KAHPYirrrrqqquuuuqqq6666qqrrrrqqquuuur/JCpXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+r+EeOoWinVLAG3QAAAABJRU5ErkJggg==) diff --git a/docs/kcl/segAng.md b/docs/kcl/segAng.md index e247468c0..f3a9051f5 100644 --- a/docs/kcl/segAng.md +++ b/docs/kcl/segAng.md @@ -32,9 +32,9 @@ exampleSketch = startSketchOn(XZ) |> line(end = [10, 0]) |> line(end = [5, 10], tag = $seg01) |> line(end = [-10, 0]) - |> angledLine([segAng(seg01), 10], %) + |> angledLine(angle = segAng(seg01), length = 10) |> line(end = [-10, 0]) - |> angledLine([segAng(seg01), -15], %) + |> angledLine(angle = segAng(seg01), length = -15) |> close() example = extrude(exampleSketch, length = 4) diff --git a/docs/kcl/segLen.md b/docs/kcl/segLen.md index 9e5653f66..8387ad564 100644 --- a/docs/kcl/segLen.md +++ b/docs/kcl/segLen.md @@ -29,9 +29,9 @@ segLen(tag: TagIdentifier): number ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ angle = 60, length = 10 }, %, $thing) - |> tangentialArc({ offset = -120, radius = 5 }, %) - |> angledLine({ angle = -60, length = segLen(thing) }, %) + |> angledLine(angle = 60, length = 10, tag = $thing) + |> tangentialArc(angle = -120, radius = 5) + |> angledLine(angle = -60, length = segLen(thing)) |> close() example = extrude(exampleSketch, length = 5) diff --git a/docs/kcl/settings.md b/docs/kcl/settings.md index 5bec2f766..4aaaeb783 100644 --- a/docs/kcl/settings.md +++ b/docs/kcl/settings.md @@ -6,7 +6,7 @@ layout: manual # KCL Settings -There are three levels of settings available in the KittyCAD Design Studiolication: +There are three levels of settings available in Zoo Design Studio: 1. [User Settings](/docs/kcl/settings/user): Global settings that apply to all projects, stored in `user.toml` 2. [Project Settings](/docs/kcl/settings/project): Settings specific to a project, stored in `project.toml` @@ -14,7 +14,7 @@ There are three levels of settings available in the KittyCAD Design Studiolicati ## Configuration Files -The KittyCAD Design Studio uses TOML files for configuration: +Zoo Design Studio uses TOML files for configuration: * **User Settings**: `user.toml` - See [complete documentation](/docs/kcl/settings/user) * **Project Settings**: `project.toml` - See [complete documentation](/docs/kcl/settings/project) diff --git a/docs/kcl/settings/user.md b/docs/kcl/settings/user.md index cf48c8839..b90415209 100644 --- a/docs/kcl/settings/user.md +++ b/docs/kcl/settings/user.md @@ -96,7 +96,7 @@ Permanently dismiss the banner warning to download the desktop app. This setting ##### stream_idle_mode -When the user is idle, and this is true, the stream will be torn down. +When the user is idle, teardown the stream after some time. **Default:** None diff --git a/docs/kcl/shell.md b/docs/kcl/shell.md index bac00e26b..f0e999664 100644 --- a/docs/kcl/shell.md +++ b/docs/kcl/shell.md @@ -43,7 +43,7 @@ firstSketch = startSketchOn(XY) |> extrude(length = 6) // Remove the end face for the extrusion. -shell(firstSketch, faces = ['end'], thickness = 0.25) +shell(firstSketch, faces = [END], thickness = 0.25) ``` ![Rendered example of shell 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAErBElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquu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V1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1X8Iz/vYn0tJz/1AAAAAElFTkSuQmCC) @@ -59,7 +59,7 @@ firstSketch = startSketchOn(-XZ) |> extrude(length = 6) // Remove the start face for the extrusion. -shell(firstSketch, faces = ['start'], thickness = 0.25) +shell(firstSketch, faces = [START], thickness = 0.25) ``` ![Rendered example of shell 1](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAGhfklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXfVvcM011zyYq6666qqrrrrqv9R99913K1ddddVVV131r0Plqquuuuqqq/4VXuzFXuy13+md3umzXuzFXuy1ueqqq6666qqr/kv9wz/8w2///d///W//6I/+6Odw1VVXXXXVVS8aKlddddVVV131Irjmmmse/OEf/uHf9WIv9mKvffHiRX7913+d3d1drrrqqquu+o9hm6uusM1Vz98bvMEbvPaLvdiLvfY111zz4B/90R/9nPvuu+9WrrrqqquuuuqFQw960IO46qqrrrrqqhfmxV7sxV77cz/3c38L4Nd//df5jd/4Df6/kcRVV131n882V/3nsc3/R7b5v+L48eO8/Mu/PG/wBm/Afffdd+tv/dZvffeP/uiPfg5XXXXVVVdd9YKhBz3oQVx11VVXXXXV83PNNdc8+MM//MO/68Ve7MVe++LFi/z4j/84T3va0/jPJomrrrrqqv8JbHPVi8Y2/9fZ5n+KEydO8EEf9EGcOHGC3/qt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EgCSkASAJCQBIAlJAEhCEgCSkASAJCQhCQBJSAJAEpIAkIQkJAEgCUkASEISkgCQhCQkASAJSQBIQhKSAJCEJAAkIQkASUgCQBKSAJCEJAAkIQkASQBIAkASkgCQBIAkACQBIIn7SQJAEgCSuJ8k7ieJ+0nigSTxQMMwAHD27Nlbueqqq6666qr/GahcddVVV1111f8Q9913360AOzs7vMM7vAO33347z00S/16S+PeQxL+HJP4tJPGvJYl/DUn8a0jiRSWJF4Uk/iWSeFFI4l8iiRdGEi+MJF4QSbwgknhBJPGCSOIFkcTzI4nnRxLPTRLPjySemySeH0k8N0k8N0k8kCSemySemyQeSBIPJIkHksRzk8QDSeJ+knggSTyQJB5IEveTxANJ4n6SeCBJ3E8S95PE/STxQJK4nyTuJ4n7SeJ+krifJO4niftJ4n6SeCDbANgGQBL3k8T9JAEgiftJ4n6SuJ8k7ieJ+0nifpK4nyTuJ4n7SeJ+knggSTyQJB5IEs9NEs9NEs+PJJ6fcRwZxxGA++6771auuuqqq6666n8GKlddddVVV131P8iP/MiPfPY7vdM7ffZNN93ETTfdxFVXXXXVVf+9bHM/21z1L/vRH/3Rz+Gqq6666qqr/udAD3rQg7jqqquuuuqq/0le53Ve573PnDnzIK666qqrrrrqf5mzZ88+47d+67e+m6uuuuqqq676nwM96EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yr+EXQkt155+eTJAAAAAElFTkSuQmCC) @@ -91,7 +91,7 @@ firstSketch = startSketchOn(XY) |> extrude(length = 6) // Remove a tagged face and the end face for the extrusion. -shell(firstSketch, faces = [myTag, 'end'], thickness = 0.25) +shell(firstSketch, faces = [myTag, END], thickness = 0.25) ``` ![Rendered example of shell 3](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAFJFUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquu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/P3f/z3Pz9mzZ5/BVVddddVV/1WoXHXVVVdd9V/m7NmztwLs7OzwQHt7e/zDP/wD//AP/8B/Jkn8d5DE/wSS+J9MEv9XSOKqq64C2/xfYZv/qWzzP4Ft/jvY5r+Sbf6tbr75ZgD+4R/+4be56qqrrrrqvwqVq6666qqr/svcd999twIcO3YM29xPEv8VbHM/SfxXsc0DSeK/g20eSBL/k9jmuUnifyPbvDCSuOqq/yts83+Rbf6nss3/BLb572Kb/0q2+Y9w7NgxAO67775bueqqq6666r8Klauuuuqqq/5L/cM//MNvv9iLvdhrv/iLvzi33347/xNI4r+LJP6nkMT/BpL4v04SV131P4Vt/q+zzf9ktvmfwjb/XWzzv9nNN98MwD/8wz/8NlddddVVV/1XonLVVVddddV/izd5kzfhqquuuuqqq6666v+T++6779b77rvvVq666qqrrvqvhB70oAdx1VVXXXXVf63XeZ3Xee93fMd3/Cyuuuqqq6666qqr/h/5rd/6re/+0R/90c/hqquuuuqq/0roQQ96EFddddVVV1111VVXXXXVVVddddVVV1111f9JVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6v4h8BZbJxfAewqRYAAAAASUVORK5CYII=) @@ -103,20 +103,20 @@ case = startSketchOn(-XZ) |> startProfileAt([-size, -size], %) |> line(end = [2 * size, 0]) |> line(end = [0, 2 * size]) - |> tangentialArcTo([-size, size], %) + |> tangentialArc(endAbsolute = [-size, size]) |> close() |> extrude(length = 65) -thing1 = startSketchOn(case, 'end') +thing1 = startSketchOn(case, face = END) |> circle(center = [-size / 2, -size / 2], radius = 25) |> extrude(length = 50) -thing2 = startSketchOn(case, 'end') +thing2 = startSketchOn(case, face = END) |> circle(center = [size / 2, -size / 2], radius = 25) |> extrude(length = 50) // We put "case" in the shell function to shell the entire object. -shell(case, faces = ['start'], thickness = 5) +shell(case, faces = [START], thickness = 5) ``` ![Rendered example of shell 4](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAFcIUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuup/lWuuuebBAGfOnHnwNddc8+AzZ848iGe65pprHgxwzTXXPJgHOHPmzIN5gLNnz9565syZBwOcPXv2Vp7pvvvuu5Vnuu+++249e/bsMwDuu+++WwHOnj1763333XcrV1111VVXXXXVVVf9b4Ee9KAHcdVVV1111VVXXXXV/xzXXHPNg8+cOfPgF3uxF3stgGuuuebB11xzzYNf7MVe7LV5PnZ3d7nfxYsXud/u7i4AFy9e5IU5ceIE9zt+/Dj3O378OCdOnOD5ue+++249e/bsrffdd9+tAP/wD//wO/fdd9+tZ8+evfW+++67lauuuuqqq6666qqr/qdAD3rQg7jqqquuuuqqq6666r/eNddc8+AzZ848+MVe7MVe65prrnnwNddc8+AXe7EXe20eYHd3l4sXL/L0pz+d+916660AXLx4kd3dXf6zHT9+HIDjx49z/PhxAE6cOMHx48c5ceIEx48f58SJE9zvvvvuuxXgH/7hH377H/7hH37nvvvuu/Xs2bO33nfffbdy1VVXXXXVVVddddV/NfSgBz2Iq6666qqrrrrqqqv+c11zzTUPPnPmzINf7MVe7LVe/MVf/LVf7MVe7LV5pt3dXS5evMjTn/50AG699VYuXrzI7u4u95PEfwXbvKhsc7/jx48DcOLECY4fP85DHvIQTpw4wUMe8hDud99999169uzZW++7775bf+u3fut7/uEf/uG3ueqqq6666qqrrrrqPxt60IMexFVXXXXVVVddddVV/7GuueaaB7/2a7/2ewG80zu902fzTLu7u1y8eJGnP/3p3HrrrTz96U/nuUnifxrb/Ets8/wcP36chzzkIRw/fpyHPvShHD9+nBMnTgBw33333foP//APv/0P//APv3Pffffd+g//8A+/zVVXXXXVVVddddVV/5HQgx70IK666qqrrrrqqquu+ve55pprHvzar/3a7wXwTu/0Tp/NM128eJG/+qu/4tZbb+XpT386z00S/xqS+M9g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wLYliQewbUniAWxbkngA25YkHsC2JYkHsG1J4gFsW5J4ANuWJB7AtiWJB7BtSeIBbFuSeADbliQewLYliQewbUniAWxbkngA25YkHsC2JYkHsG1J4gFsW5J4ANuWJB7AtiWJB7BtSeIBbFuSeADbliQewLYliQewbUniAWxbkngA25YkHsC2JYkHsG1J4gFsW5J4ANuWJB7AtiWJB7BtSeIBbPvs2bPP4Kqrrrrqqquu+t8GPehBD+Kqq6666qqrrrrqqquuuuqqq6666qqrrvo/icpVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X8U/Aik9y6SYyZy+AAAAAElFTkSuQmCC) @@ -128,20 +128,20 @@ case = startSketchOn(XY) |> startProfileAt([-size, -size], %) |> line(end = [2 * size, 0]) |> line(end = [0, 2 * size]) - |> tangentialArcTo([-size, size], %) + |> tangentialArc(endAbsolute = [-size, size]) |> close() |> extrude(length = 65) -thing1 = startSketchOn(case, 'end') +thing1 = startSketchOn(case, face = END) |> circle(center = [-size / 2, -size / 2], radius = 25) |> extrude(length = 50) -thing2 = startSketchOn(case, 'end') +thing2 = startSketchOn(case, face = END) |> circle(center = [size / 2, -size / 2], radius = 25) |> extrude(length = 50) // We put "thing1" in the shell function to shell the end face of the object. -shell(thing1, faces = ['end'], thickness = 5) +shell(thing1, faces = [END], thickness = 5) ``` ![Rendered example of shell 5](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADX60lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV/2Pd8011zyYZzpz5syDeaZrrrnmwTzTmTNnHsS/4Jprrnkwz3Tffffdygtw9uzZZ/Bc7rvvvlt5prNnz94KcN99993KVVddddVVV1111VX/k1G56qqrrrrqqquuuuq/zDXXXPNggDNnzjz4mmuuefCZM2cexDNdc801D77mmmseDHDmzJkHX3PNNQ/mf4n77rvvVoCzZ8/eCnDffffdCnDffffdevbs2WcA3HfffbcC/MM//MNvc9VVV1111VVXXXXVfxX0oAc9iKuuuuqqq6666qqr/v2uueaaB585c+bB11xzzYPPnDnzIIBrrrnmwddcc82Dz5w58+BrrrnmwfwrXbhwAYALFy4AcOHCBe534cIFHujixYs8PxcuXOCFOXnyJM/PiRMnuN/Jkyd5oJMnTwJw8uRJAE6ePMm/xn333XcrwNmzZ2+97777bgX4h3/4h98BuO+++249e/bsrffdd9+tXHXVVVddddVVV13174Ue9KAHcdVVV1111VVXXXXVv+yaa655MMCLvdiLvfaZM2ceBPDiL/7ir33mzJkHX3PNNQ/mX3DhwgUALly4wMWLF7lw4QIAFy5c4MKFCwBcvHiRCxcu8L+RbU6ePAnAyZMnATh58iQAJ06c4OTJk5w8eRKAkydPcvLkSV6Y++6771aAs2fP3nrffffd+g//8A+/A3Dffffd+g//8A+/zVVXXXXVVVddddVVLwr0oAc9iKuuuuqqq6666qqrnu2aa6558JkzZx78Yi/2Yq8F8OIv/uKv/WIv9mKvzQtx4cIFAJ761Kdy4cIFAJ7ylKcA8NSnPpWrnr+TJ08C8LCHPQyAhz/84QCcOHGCkydPcvLkSV6Q++6779azZ8/eet999936D//wD79z33333foP//APv81VV1111VVXXXXVVQ+EHvSgB3HVVVddddVVV131/9U111zz4Nd+7dd+L4AXf/EXf+0Xe7EXe21egAsXLnDhwgWe+tSnAvCUpzyFixcvcuHCBa76z3Hy5EkATpw4wcmTJ3n4wx/OiRMnAHj4wx/O83Pffffdevbs2Vvvu+++W//hH/7hd+67775b/+Ef/uG3ueqqq6666qqrrvr/CT3oQQ/iqquuuuqqq6666v+Da6655sGv/dqv/V4AL/7iL/7aL/ZiL/baPB8XLlzgqU99KhcuXOApT3kKFy9e5MKFC1z1P8vJkycBeNjDHgbAwx/+cE6cOMHDH/5wntt99913K8A//MM//PY//MM//M5999136z/8wz/8NlddddVVV1111VX/96EHPehBXHXVVVddddVVV/1fc8011zz4xV7sxV77zJkzD3rxF3/x136xF3ux1+a5XLhwgYsXL/KUpzyFixcvcuHCBZ761Kfyv5Ftrnq2kydP8rCHPYyHP/zhnDhxgpMnT3Ly5Eke6L777rsV4B/+4R9++x/+4R9+57777rv1H/7hH36bq6666qqrrrrqqv9b0IMe9CCuuuqqq6666qqr/re75pprHvzar/3a7wXwTu/0Tp/Nc7lw4QIXL17kKU95Ck996lN56lOfylX/9Wzz3+XkyZOcOHGChz/84TzsYQ/j4Q9/OM/tvvvuu/Uf/uEffvsf/uEffue+++679R/+4R9+m6uuuuqqq6666qr/3dCDHvQgrrrqqquuuuqqq/63ueaaax782q/92u/14i/+4q/9Yi/2Yq/Nc7lw4QJ/9md/BsCv/uqvctX/D7b51zh58iQPe9jDePjDH86JEyd4+MMfzgPdd999t/7DP/zDb//DP/zD79x33323/sM//MNvc9VVV1111VVXXfW/C3rQgx7EVVddddVVV1111f9011xzzYNf7MVe7LXPnDnzoHd6p3f6bJ7LhQsX+LM/+zOe+tSn8tSnPpWrrvq3OHnyJCdOnOBhD3sYD3/4w3nYwx7GA9133323/sM//MNv/8M//MPv/NZv/dZ3c9VVV1111VVXXfU/H3rQgx7EVVddddVVV1111f9E11xzzYNf+7Vf+71e/MVf/LVf7MVe7LV5gAsXLvBnf/ZnPPWpT+WpT30qV131n+HkyZOcOHGChz3sYTz84Q/nYQ97GPe77777bgX4rd/6re/+h3/4h9/5h3/4h9/mqquuuuqqq6666n8e9KAHPYirrrrqqquuuuqq/ymuueaaB7/2a7/2e73O67zOe19zzTUP5pkuXLjAn//5nwPwq7/6q1z1H8s2V/3LTp48ycMe9jAe9rCH8Qqv8Ao80H333XfrP/zDP/z2b/3Wb33PP/zDP/w2V1111VVXXXXVVf8zoAc96EFcddVVV1111VVX/Xe65pprHvzar/3a7/VO7/ROn80DXLhwgT//8z/nqU99Kk996lO56v8u2/xvdPLkSV7+5V+ehz/84TzsYQ/jfvfdd9+t//AP//Dbv/Vbv/U9//AP//DbXHXVVVddddVVV/33QQ960IO46qqrrrrqqquu+q92zTXXPPi1X/u13+ud3umdPpsHuHDhAn/+53/Or/7qr3LVVf8RbPNf4eTJkzzsYQ/jFV7hFXjYwx7G/e67775b/+Ef/uG3f+u3fut7/uEf/uG3ueqqq6666qqrrvqvhR70oAdx1VVXXXXVVVdd9V/hmmuuefBrv/Zrv9frvM7rvPc111zzYJ7pwoUL/Pmf/zm/+qu/ylVX/U9lmxfVyZMnedjDHsYrvMIr8LCHPYz73Xfffbf+1m/91nf/9m//9vfcd999t3LVVVddddVVV131nw896EEP4qqrrrrqqquuuuo/0zXXXPPgd3zHd/ys13md13lvnunChQv8+Z//OX/2Z3/GxYsXueqq/6tOnDjBK7zCK/Cwhz2Mhz3sYQDcd999t/7DP/zDb//DP/zD7/zWb/3Wd3PVVVddddVVV131nwc96EEP4qqrrrrqqquuuuo/2jXXXPPg137t136vd3qnd/psnunChQv8+Z//OX/2Z3/GxYsX+beSxFX/fra56r/WiRMneIVXeAXe8A3fkPvdd999t/7Wb/3Wd//2b//299x33323ctVVV1111VVXXfUfCz3oQQ/iqquuuuqqq6666j/KNddc8+DXfu3Xfq93eqd3+mye6eLFi/zZn/0Zv/Zrv8ZVVz2Qbf4/OnHiBA972MN4hVd4BR72sIcBcN999936W7/1W9/9D//wD7/zD//wD7/NVVddddVVV1111X8M9KAHPYirrrrqqquuuuqqf68Xe7EXe+13eqd3+qwXe7EXe22e6Vd/9Vf58z//cy5evMhVV/1Xs83/BidOnOAVXuEVeMM3fEPud9999936oz/6o5/zW7/1W9/NVVddddVVV1111b8PetCDHsRVV1111VVXXXXVv9U7vuM7ftbrvM7rvPc111zzYICLFy/yZ3/2Z/zar/0aV131f4Ft/iucOHGCV3iFV+DlX/7lOXnyJAD33Xffrb/1W7/13T/6oz/6OVx11VVXXXXVVVf926AHPehBXHXVVVddddVVV/1rveM7vuNnvc7rvM57X3PNNQ8GuHjxIn/2Z3/Gr/3ar3HVVVc9m23+NU6cOMHDHvYw3vAN35CTJ08CcN999936W7/1W9/9oz/6o5/DVVddddVVV1111b8OetCDHsRVV1111VVXXXXVi+rFXuzFXvvDP/zDv+uaa655MMDFixf5sz/7M37t136Nfy9JXPU/i22u+u9x/PhxHvawh/EKr/AKPOxhDwPgvvvuu/VHf/RHP+e3fuu3vpurrrrqqquuuuqqFw160IMexFVXXXXVVVddddW/5Jprrnnwh3/4h3/Xi73Yi702wMWLF/nzP/9zfu3Xfo2rrvqPZJurntPLv/zL84Zv+IacOHECgPvuu+/Wr//6r3+ff/iHf/htrrrqqquuuuqqq1449KAHPYirrrrqqquuuuqqF+Saa6558Gu/9mu/1zu90zt9NsDFixf58z//c37t136Nq67638I2/9udOHGChz3sYbzhG74hJ06cAOC3fuu3vvtHf/RHP+e+++67lauuuuqqq6666qrnDz3oQQ/iqquuuuqqq6666vl5x3d8x896p3d6p8/mmX7t136NX/u1X+Oqq/4/ss3/BCdOnODlX/7lecM3fEMA7rvvvlt/+7d/+3t+5Ed+5LO56qqrrrrqqquuel7oQQ96EFddddVVV1111VUPdM011zz4wz/8w7/rxV7sxV4b4KlPfSo/+qM/ysWLF7nqqqv+9WzzH+3EiRO8/Mu/PG/4hm8IwH333XfrZ33WZ73OfffddytXXXXVVVddddVVz4Ye9KAHcdVVV1111VVXXXW/d3zHd/ysd3qn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Z2eHxz72sdx0003cdNNNPND+/j533nknd911F/v7+9x1111IAkASAJJ4UUhCEpKQhCQkIQlJSEISkpCEJCQhCYDNzU0e/OAHA/CQhzyEzc1NHuhxj3sct99+O4973ON4YWzzP51t/i1uvvlm3vEd35H77rvv1g/5kA95CFddddVVV1111fODHvSgB3HVVVddddVVVz2v13md13nvD//wD/8ugK/6qq/iX0sS/9fs7Oxw0003sbOzw0033cRNN93EA+3t7QFw5513sre3x/7+PgcHB+zt7XFwcACAJCQBIAkASUhCEpKQhCQkIQlJbG1tIYmtrS2uu+46AK677jrOnDnD87O3t8fjHvc4AP7kT/6E/w9sc9W/zs7ODjfddBM33XQTOzs73HTTTTy3/f199vf32d/f5+6772Z/fx+Ag4MD9vf3eUEkIQlJSEISkpCEJCSxtbXF9vY2W1tbbG5usrW1xebmJtdccw3329vbY2dnh729Pf7hH/6BO+64gzvuuIP/KLb5n8o2/5J3fMd35Oabb+azPuuzXufv//7vf5urrrrqqquuuuq5Ubnqqquuuuqqq56vF3uxF3stgD/6oz/igSTx/9Xe3h6Pe9zjuN/Ozg433XQTN910EwCPfexjAdjZ2eH52d/f5377+/sASMI2krifJAC2trbY2triBdnb2wNgb2+Pvb097rjjDu644w7uvPNO/j+SxH8F2/xfsbe3x+Me9zge97jHAbCzs8POzg47OzvcdNNN7OzssLOzww033ADAox71KJ7b/v4+APv7+0jCNgCSAJCEbSQBsLW1xdbWFi/M3t4ee3t73H777ezt7fG4xz2O/yySeEFs899JEs+Pbe53++23c/PNN/Par/3a7/X3f//3v81VV1111VVXXfXc0IMe9CCuuuqqq6666qrn9RM/8RMG+M7v/E729vb4/0YS/xY7OzsA3Hjjjdx0000A7OzssLOzw87ODv9ae3t7AOzt7QFwxx13ALC/v8+lS5e48847uep/H9v8b7GzswPATTfdBMBNN90EwM7ODjs7O+zs7PCi2tvbY2dnh729PQD29vbY29vj9ttvZ2dnhzvuuIM77riD/+ls8z/Fzs4O7//+78/Zs2ef8cEf/MEP5qqrrrrqqquuem5Urrrqqquuuuqq5/E6r/M67w3wuMc9jr29Pf43k8R/pb29PQD2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zTb/lba2tgC47777buWqq6666qqr/n8iuOqqq6666qr/p86ePXsr/0q2sY1tbPPfwTa2sY1tbPM/kW1sYxvb2MY2trnqqv+tbGMb29jGNraxzf9EtrGNbWzz38E2trGNbf4r2MY2trnxxhsBOHv27K1cddVVV1111f9PBFddddVVV131/9R99913K8DOzg7/VraxjW3+O9nGNraxzf90trGNbWxjG9vY5qqr/rvZxja2sY1tbGOb/8lsYxvb2MY2/x1sYxvb2Oa/gm1sYxvbPD/33XffrVx11VVXXXXV/09Urrrqqquuuur/qfvuu+9WgO3tbf4j2OaBJPHfxTbPjyT+p7PNCyOJq67697DN/3a2+Z/CNv8dbPOi2N7eBuC+++67lauuuuqqq676/4nKVVddddVVV/0/t729zX8G2zw3Sfx3ss1zk8T/Jrb5l0jiqv+fbPN/jW3+J7HNfxfb/Gvt7OwAcPbs2Wdw1VVXXXXVVf8/Ubnqqquuuuqq/6f+4R/+4XcAtre3+a9imweSxH832zw3SfxvZpsXlSSu+p/PNv/X2eZ/Itv8d7HNVVddddVVV13170blqquuuuqqq/6f29nZwTYAkvivZJsHksT/BLZ5fiTxf41t/rUkcdW/jW2uAtv8T2Wb/062+Y904403AvAP//APv81VV1111VVX/f9E5aqrrrrqqqv+nzp79uytPBfb3E8S/9Vs89wk8T+FbZ4fSfx/Ypv/aJL4n8g2V/3b2OZ/Otv8d7PNVVddddVVV131n4rKVVddddVVV/0/dd99990KsL29zfNjmweSxH8H2zyQJP6nsc0LIomr/mW2uep/J9v8b2Gb/262+a+0vb0NwH333XcrV1111VVXXfX/E8FVV1111VVX/T9233333Qqws7PDv8Q2trGNbf672MY2trGNbf4ns41tbGMb29jGNldd9b+FbWxjG9vYxja2+Z/KNraxjW1s89/FNraxzX8V22xtbQFw33333cpVV1111VVX/f9FcNVVV1111VX/j509e/ZWgO3tbf61bGMb29jmv5NtbGMb29jmfwPb2MY2trGNbWxz1VX/lWxjG9vYxja2sY1t/qezjW1sYxvb/HeyjW1sY5v/KraxjW0AdnZ2ADh79uytXHXVVVddddX/X1Suuuqqq6666iq2t7f597LNA0niv5Ntnpsk/rewzb9E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1VVXXXXVVc9C5aqrrrrqqquu4r777rsVYGdnhweyzQNJ4r+bbZ6bJP43s80LI4mrrvqPZpv/y2zzP41t/ivs7OwA8A//8A+/zVVXXXXVVVddReWqq6666qqrrnqR2eaBJPE/gW2emyT+r7DNi0ISV11lm/9PbPM/lW3+O+zs7HDVVVddddVVVz0Llauuuuqqq666irNnzz4DYGdnh38N2zyQJP6nsM3zI4n/q2zzopLEVf972OYqsM3/ZLb572ab+9133323ctVVV1111VVXEVx11VVXXXXVVZfdd999twLceOON/FvZxja2sY1t/qexjW1sYxvb2Ob/G9vYxja2sY1tbGMb29jGNraxjW2u+vexjW1sYxvb2MY2trGNbWxjG9vY5v8b29jGNraxjW3+p7GNbWxjm/8OtrGNbWyzs7MDwH333XcrV1111VVXXXUVAJWrrrrqqquuuuqys2fP3nrNNdc8mP9gtnkgSfxPZJvnRxJXPZtt/rNI4n8C21z1X8M2/1vY5n8K27wgN910EwBnz569lauuuuqqq666CoDgqquuuuqqq6667L777rsVYGdnh/9MtrGNbWxjm//JbGMb29jGNra56j+ebWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbHPVfzzb2MY2trGNbf4ns41tbGOb/062sY1tbPOiuO+++27lqquuuuqqq64CoHLVVVddddVVV11233333Qqws7PDfzXbPJAk/qezzQsiiauu+v/GNv9b2eZ/Etv8W21vbwNw33333cpVV1111VVXXQVA5aqrrrrqqquueg7b29v8d7PNc5PE/xa2eUEkcdVV/1vZ5n872/xPY5v/KDs7OwCcPXv2GVx11VVXXXXVVQBUrrrqqquuuuqqy/7hH/7hdwB2dnawzQNJ4r+bbZ6bJP63sc0LI4mrrvrvYpv/S2zzP5Ftrrrqqquuuuqq/zJUrrrqqquuuuqq57Czs8Nzs80DSeJ/Ats8P5L438o2/xJJXHXVv5Zt/i+zzf9UtvmvctNNNwHwD//wD7/NVVddddVVV10FQOWqq6666qqrrrrs7Nmzt/Iiss0DSeJ/Ets8N0n8X2GbF5Ukrvq/zTb/n9jmfzrbXHXVVVddddVV/2NQueqqq6666qqrLrvvvvtuBdjZ2eFfyzYPJIn/aWzz/Eji/zLb/GtI4qr/Pra56tls87+Bbf4nsM3Ozg4A9913361cddVVV1111VUAVK666qqrrrrqqme57777br3mmmsevLOzw97eHv9WtnlukvifyDbPjyT+P7LNv5ck/j+yzVX/Nrb538I2/1PY5oF2dnYAuO+++27lqquuuuqqq666H5WrrrrqqquuuupZzp49e+s111zz4J2dHfb29viPZJsHksT/ZLZ5fiRx1Qtnm6uuem62+d/INv+T2OYF2dnZAeDs2bO3ctVVV1111VVX3Y/KVVddddVVV131PHZ2dvjPZpvnJon/6Wzzgkjiqqv+v7PN/1a2+Z/GNi+qnZ0dAO67775bueqqq6666qqr7kdw1VVXXXXVVVc9y9///d//NsD29jb/HWxjG9vYxjb/m9jGNraxjW1sYxvbXHXV/wW2sY1tbGMb29jGNv9b2MY2trGNbf4nsI1tbGObf42dnR2uuuqqq6666qrnQeWqq6666qqrrvofzTbPTRL/G9nmhZHEVVf9d7PN/zW2+Z/KNv9RdnZ2APiHf/iH3+Gqq6666qqrrrofwVVXXXXVVVdd9Sz/8A//8DsAN910E7axjW1s8z+JbWxjG9vY5v8C29jGNraxjW1sYxvbXHXVv4dtbGMb29jGNraxjW3+t7ONbWxjG9v8T2Ib29jGNlddddVVV1111X86KlddddVVV1111YvENg8kif9JbPP8SOL/Etu8KCRx1f8ftvn/yDb/09nmv8pNN90EwH333XcrV1111VVXXXXV/ahcddVVV1111VXPcvbs2VsBdnZ2+JfY5rlJ4n8a2zw/kvi/zDb/GpK46n8O21z1bLb538A2/xOcPXv2Vq666qqrrrrqqvtRueqqq6666qqrnuW+++67FWBnZ4d/C9s8kCT+p7LN8yOJ/49s8+8liavANlf929jmfxPb/E9hm52dHQDuu+++W7nqqquuuuqqq+5H5aqrrrrqqquueg733Xffrddcc82Dd3Z22Nvb49/DNs9NEv+T2eb5kcRVL5xtrrrqX2Kb/41s8z+Nba666qqrrrrqqn8RwVVXXXXVVVdd9RzOnj17K8DOzg7/GWxjG9vY5n8L29jGNraxjW1sc9VVVz0v29jGNraxjW3+t7CNbWxjm/8JbGMb29jmgW666SYA/uEf/uG3ueqqq6666qqrHojKVVddddVVV13138o2z00S/5vY5gWRxFVX/V9km/8rbPM/kW1eVDs7OwDcd999t3LVVVddddVVVz0QwVVXXXXVVVdd9Rz+/u///rcBbrrpJv672MY2trGNbf63so1tbGMb29jGNra56qr/qWxjG9vYxja2sY1t/reyjW1sYxvb/E9hG9vYxjZXXXXVVVddddV/CCpXXXXVVVddddXzZZv/SWzz/EjifzPb/EskcdVV/9Fs83+dbf4ns81/lJ2dHQDuu+++W7nqqquuuuqqqx6I4Kqrrrrqqquueg5nz559BsDNN9+MbWxjG9v8T2Qb29jGNrb5v8Y2trGNbWxjG9vYxja2ueoqANvYxja2sY1tbGMb29jm/xLb2MY2trGNbf6nsY1tbGOb/0jHjh0D4OzZs8/gqquuuuqqq656ICpXXXXVVVddddVzuO+++27lBbDNA0nifyLbPD+S+L/MNv8akrjqfz7bXHWFbf63sM1/pe3tbQDuu+++W7nqqquuuuqqqx6IylVXXXXVVVdd9RzOnj17K8DOzg7/Ets8N0n8T2Wb50cS/x/Z5t9DElf9y2xz1b+Obf63sc1/p2PHjgFw9uzZW7nqqquuuuqqqx6IylVXXXXVVVdd9R/KNs9NEv+T2eb5kcRVL5htrrrq38M2/xvZ5n+anZ0dAO67775bueqqq6666qqrHojgqquuuuqqq656Dvfdd9+t99133607Ozvs7OzwH8E2trGNbf63sI1tbGMb29jGNlddddWLxja2sY1tbGMb2/xvYRvb2MY2/xPYxja2sc1VV1111VVXXfUCEVx11VVXXXXVVc/j7NmztwLs7Ozwn8E2trGNbWzzv41tbGMb29jGNraxzVVX/X9iG9vYxja2sY1t/rexjW1sYxvb/E9gG9vYxjYPdNNNNwFw33333cpVV1111VVXXfXcqFx11VVXXXXVVf8j2Oa5SeJ/K9u8IJK46qr/TWzzf5Ft/qeyzYvq2LFjAPzDP/zDb3PVVVddddVVVz03gquuuuqqq6666nncd999twLs7Ozw38k2trGNbWxjm//tbGMb29jGNraxjW1sc9VV/5VsYxvb2MY2trGNbf4vsI1tbGMb2/xPYhvb2MY2V1111VVXXXXVfxgqV1111VVXXXXV87jvvvtuBdjZ2eF/Its8N0n8X2KbF4UkrrrqBbHN/ze2+d/ANv9RdnZ2ALjvvvtu5aqrrrrqqquuem5Urrrqqquuuuqq53H27NlnAOzs7GCbB5LE/0S2eX4k8X+ZbV5Ukrjqfz/bXHWFbf63sM1/lp2dHQDOnj37DK666qqrrrrqqudG5aqrrrrqqquueh733XffrQA7Ozs8N9s8kCT+J7PN8yOJ/29s828liav+49jmqhedbf43sc1/pZ2dHa666qqrrrrqqheIylVXXXXVVVdd9TzOnj17K8CxY8f4l9jmuUnifzrbPD+SuOp52eY/iyT+J7LNVf91bPO/lW3+Ox07dgyAf/iHf/htrrrqqquuuuqq50blqquuuuqqq676D2eb5yaJ/w1s84JI4qr/eLa56v8P2/xvZpv/aXZ2drjqqquuuuqqq14gKlddddVVV1111fO47777bgXY2dnhP4ptnpsk/jexzQsiiauuuuoK2/xfYJv/qWzz3O67775bueqqq6666qqrnhvBVVddddVVV131fN133323Atx00038Z7GNbWxjG9v8b2Ub29jGNraxjW1sc9VV/5fYxja2sY1tbGMb2/xvZBvb2MY2tvmfxDa2sY1t7rezswPA2bNnn8FVV1111VVXXfX8EFx11VVXXXXVVc/Xfffddyv/DWxjG9vYxjb/F9jGNraxjW1sYxvbXHXV/yS2sY1tbGMb29jGNv/b2cY2trGNbf6nsY1tbGObF+Tmm28G4L777ruVq6666qqrrrrq+SG46qqrrrrqqquer7Nnz94KcOzYMf672cY2trGNbf6vsY1tbGMb29jGNraxjW2uuurfwza2sY1tbGMb29jGNrb5v8Q2trGNbWzzP5FtbGMb2/xr3Xfffbdy1VVXXXXVVVc9P1Suuuqqq6666qrn67777rsVYGdnh/+JbPP8SOL/Mtu8KCRx1f8PtrkKbPO/iW3+I+zs7ABw3333PZ2rrrrqqquuuur5oXLVVVddddVVVz1fZ8+evRVgZ2cH2zyQJP6nss3zI4n/T2zzbyGJq/772OaqF842/9vY5j/LsWPHADh79uwzuOqqq6666qqrnh8qV1111VVXXXXV83XffffdCrCzs8Nzs80DSeJ/Ots8P5K46tls8x9BEv9f2Oaq/3i2+d/KNlddddVVV1111f8YVK666qqrrrrqqhfq2LFj/Ets89wk8b+BbV4QSVz1b2Obq656UdjmfzPb/He6+eabAfiHf/iH3+aqq6666qqrrnp+qFx11VVXXXXVVc/Xfffddyv/DrZ5bpL438Q2L4gkrrrqqheNbf4vsM1VV1111VVXXfW/DpWrrrrqqquuuur5Onv27DMAdnZ2+I9im+cmif+NbPOCSOKqq/4/sc3/Nbb5n8w2ADs7OwDcd999t3LVVVddddVVVz0/BFddddVVV1111Qt033333Qqws7PDfxbb2MY2trHN/3a2sY1tbGMb29jGNra56qr/TWxjG9vYxja2sY1t/rezjW1sYxvb/E9jG9vYxjYAOzs7ANx33323ctVVV1111VVXvSAEV1111VVXXXXVC3T27NlbAY4dO8Z/JdvYxja2sc3/NbaxjW1sYxvb2MY2trnqqv8KtrGNbWxjG9vYxja2+b/ENraxjW1s8z+RbWxjG9s8P8eOHQPg7Nmzt3LVVVddddVVV70gVK666qqrrrrqqn/Rzs4O/91s8/xI4v8q27woJHHVVc/NNv+f2eZ/E9v8a+3s7ABw33333cpVV1111VVXXfWCEFx11VVXXXXVVS/Q3//93/82wM7ODv9T2cY2trGNbWzz/4ltbGMb29jGNraxjW1sYxvbXPW/k21sYxvb2MY2trGNbWxjG9v8f2Ib29jGNrb5n8w2trGNbWzzb3Hs2DGuuuqqq6666qp/EZWrrrrqqquuuupFYpv7SeJ/Ots8P5L4/842/x6SuOpfzzZX/fvY5n8j2/xn2NnZAeAf/uEffoerrrrqqquuuuoFoXLVVVddddVVV71A//AP//A7ADfffDMPZJvnJon/DWzz/EjiqheNbf47SeLfwjZX/c9nm//NbHPVVVddddVVV/2PQuWqq6666qqrrnqRvNiLvRj/GpL4v0ISV1111X8c2/xfYZv/LjfffDMA9913361cddVVV1111VUvCJWrrrrqqquuuuoFOnv27K3/8A//8Nsv9mIv9to333wzV1111VVX/c/yW7/1W9999uzZW7nqqquuuuqqq14Q9KAHPYirrrrqqquuuuoFu+aaax78ju/4jp/FVVddddVV/+P86I/+6Ofcd999t3LVVVddddVVV70g6EEPehBXXXXVVVddddVVV1111VVXXXXVVVddddX/SVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxX/CJ3sH1QJZh6iAAAAAElFTkSuQmCC) @@ -156,20 +156,20 @@ case = startSketchOn(XY) |> startProfileAt([-size, -size], %) |> line(end = [2 * size, 0]) |> line(end = [0, 2 * size]) - |> tangentialArcTo([-size, size], %) + |> tangentialArc(endAbsolute = [-size, size]) |> close() |> extrude(length = 65) -thing1 = startSketchOn(case, 'end') +thing1 = startSketchOn(case, face = END) |> circle(center = [-size / 2, -size / 2], radius = 25) |> extrude(length = 50) -thing2 = startSketchOn(case, 'end') +thing2 = startSketchOn(case, face = END) |> circle(center = [size / 2, -size / 2], radius = 25) |> extrude(length = 50) // We put "thing1" and "thing2" in the shell function to shell the end face of the object. -shell([thing1, thing2], faces = ['end'], thickness = 5) +shell([thing1, thing2], faces = [END], thickness = 5) ``` ![Rendered example of shell 6](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADgXElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV/2Pd8011zyYZzpz5syDeaZrrrnmwTzTmTNnHsS/4Jprrnkwz3Tffffdygtw9uzZZ/Bc7rvvvlt5prNnz94KcN99993KVVddddVVV1111VX/k1G56qqrrrrqqquuuuq/zDXXXPNggDNnzjz4mmuuefCZM2cexDNdc801D77mmmseDHDmzJkHX3PNNQ/mf4n77rvvVoCzZ8/eCnDffffdCnDffffdevbs2WcA3HfffbcC/MM//MNvc9VVV1111VVXXXXVfxX0oAc9iKuuuuqqq6666qqr/v2uueaaB585c+bB11xzzYPPnDnzIIBrrrnmwddcc82Dz5w58+BrrrnmwfwrXbhwAYALFy4AcOHCBe534cIFHujixYs8PxcuXOCFOXnyJM/PiRMnuN/Jkyd5oJMnTwJw8uRJAE6ePMm/xn333XcrwNmzZ2+97777bgX4h3/4h98BuO+++249e/bsrffdd9+tXHXVVVddddVVV13174Ue9KAHcdVVV1111VVXXXXVv+yaa655MMCLvdiLvfaZM2ceBPDiL/7ir33mzJkHX3PNNQ/mX3DhwgUALly4wMWLF7lw4QIAFy5c4MKFCwBcvHiRCxcu8L+RbU6ePAnAyZMnATh58iQAJ06c4OTJk5w8eRKAkydPcvLkSV6Y++6771aAs2fP3nrffffd+g//8A+/A3Dffffd+g//8A+/zVVXXXXVVVddddVVLwr0oAc9iKuuuuqqq6666qqrnu2aa6558JkzZx78Yi/2Yq8F8OIv/uKv/WIv9mKvzQtx4cIFAJ761Kdy4cIFAJ7ylKcA8NSnPpWrnr+TJ08C8LCHPQyAhz/84QCcOHGCkydPcvLkSV6Q++6779azZ8/eet999936D//wD79z33333foP//APv81VV1111VVXXXXVVQ+EHvSgB3HVVVddddVVV131/9U111zz4Nd+7dd+L4AXf/EXf+0Xe7EXe21egAsXLnDhwgWe+tSnAvCUpzyFixcvcuHCBa76z3Hy5EkATpw4wcmTJ3n4wx/OiRMnAHj4wx/O83Pffffdevbs2Vvvu+++W//hH/7hd+67775b/+Ef/uG3ueqqq6666qqrrvr/CT3oQQ/iqquuuuqqq6666v+Da6655sGv/dqv/V4AL/7iL/7aL/ZiL/baPB8XLlzgqU99KhcuXOApT3kKFy9e5MKFC1z1P8vJkycBeNjDHgbAwx/+cE6cOMHDH/5wntt99913K8A//MM//PY//MM//M5999136z/8wz/8NlddddVVV1111VX/96EHPehBXHXVVVddddVVV/1fc8011zz4xV7sxV77zJkzD3rxF3/x136xF3ux1+a5XLhwgYsXL/KUpzyFixcvcuHCBZ761Kfyv5Ftrnq2kydP8rCHPYyHP/zhnDhxgpMnT3Ly5Eke6L777rsV4B/+4R9++x/+4R9+57777rv1H/7hH36bq6666qqrrrrqqv9b0IMe9CCuuuqqq6666qqr/re75pprHvzar/3a7wXwTu/0Tp/Nc7lw4QIXL17kKU95Ck996lN56lOfylX/9Wzz3+XkyZOcOHGChz/84TzsYQ/j4Q9/OM/tvvvuu/Uf/uEffvsf/uEffue+++679R/+4R9+m6uuuuqqq6666qr/3dCDHvQgrrrqqquuuuqqq/63ueaaax782q/92u/14i/+4q/9Yi/2Yq/Nc7lw4QJ/9md/BsCv/uqvctX/D7b51zh58iQPe9jDePjDH86JEyd4+MMfzgPdd999t/7DP/zDb//DP/zD79x33323/sM//MNvc9VVV1111VVXXfW/C3rQgx7EVVddddVVV1111f9011xzzYNf7MVe7LXPnDnzoHd6p3f6bJ7LhQsX+LM/+zOe+tSn8tSnPpWrrvq3OHnyJCdOnOBhD3sYD3/4w3nYwx7GA9133323/sM//MNv/8M//MPv/NZv/dZ3c9VVV1111VVXXfU/H3rQgx7EVVddddVVV1111f9E11xzzYNf+7Vf+71e/MVf/LVf7MVe7LV5gAsXLvBnf/ZnPPWpT+WpT30qV131n+HkyZOcOHGChz3sYTz84Q/nYQ97GPe77777bgX4rd/6re/+h3/4h9/5h3/4h9/mqquuuuqqq6666n8e9KAHPYirrrrqqquuuuqq/ymuueaaB7/2a7/2e73O67zOe19zzTUP5pkuXLjAn//5nwPwq7/6q1z1H8s2V/3LTp48ycMe9jAe9rCH8Qqv8Ao80H333XfrP/zDP/z2b/3Wb33PP/zDP/w2V1111VVXXXXVVf8zoAc96EFcddVVV1111VVX/Xe65pprHvzar/3a7/VO7/ROn80DXLhwgT//8z/nqU99Kk996lO56v8u2/xvdPLkSV7+5V+ehz/84TzsYQ/jfvfdd9+t//AP//Dbv/Vbv/U9//AP//DbXHXVVVddddVVV/33QQ960IO46qqrrrrqqquu+q92zTXXPPi1X/u13+ud3umdPpsHuHDhAn/+53/Or/7qr3LVVf8RbPNf4eTJkzzsYQ/jFV7hFXjYwx7G/e67775b/+Ef/uG3f+u3fut7/uEf/uG3ueqqq6666qqrrvqvhR70oAdx1VVXXXXVVVdd9V/hmmuuefBrv/Zrv9frvM7rvPc111zzYJ7pwoUL/Pmf/zm/+qu/ylVX/U9lmxfVyZMnedjDHsYrvMIr8LCHPYz73Xfffbf+1m/91nf/9m//9vfcd999t3LVVVddddVVV131nw896EEP4qqrrrrqqquuuuo/0zXXXPPgd3zHd/ys13md13lvnunChQv8+Z//OX/2Z3/GxYsXueqq/6tOnDjBK7zCK/Cwhz2Mhz3sYQDcd999t/7DP/zDb//DP/zD7/zWb/3Wd3PVVVddddVVV131nwc96EEP4qqrrrrqqquuuuo/2jXXXPPg137t136vd3qnd/psnunChQv8+Z//OX/2Z3/GxYsX+beSxFX/fra56r/WiRMneIVXeAXe8A3fkPvdd999t/7Wb/3Wd//2b//299x33323ctVVV1111VVXXfUfCz3oQQ/iqquuuuqqq6666j/KNddc8+DXfu3Xfq93eqd3+mye6eLFi/zZn/0Zv/Zrv8ZVVz2Qbf4/OnHiBA972MN4hVd4BR72sIcBcN999936W7/1W9/9D//wD7/zD//wD7/NVVddddVVV1111X8M9KAHPYirrrrqqquuuuqqf68Xe7EXe+13eqd3+qwXe7EXe22e6Vd/9Vf58z//cy5evMhVV/1Xs83/BidOnOAVXuEVeMM3fEPud9999936oz/6o5/zW7/1W9/NVVddddVVV1111b8PetCDHsRVV1111VVXXXXVv9U7vuM7ftbrvM7rvPc111zzYICLFy/yZ3/2Z/zar/0aV131f4Ft/iucOHGCV3iFV+DlX/7lOXnyJAD33Xffrb/1W7/13T/6oz/6OVx11VVXXXXVVVf926AHPehBXHXVVVddddVVV/1rveM7vuNnvc7rvM57X3PNNQ8GuHjxIn/2Z3/Gr/3ar3HVVVc9m23+NU6cOMHDHvYw3vAN35CTJ08CcN999936W7/1W9/9oz/6o5/DVVddddVVV1111b8OetCDHsRVV1111VVXXXXVi+rFXuzFXvvDP/zDv+uaa655MMDFixf5sz/7M37t136Nfy9JXPU/i22u+u9x/PhxHvawh/EKr/AKPOxhDwPgvvvuu/VHf/RHP+e3fuu3vpurrrrqqquuuuqqFw160IMexFVXXXXVVVddddW/5Jprrnnwh3/4h3/Xi73Yi702wMWLF/nzP/9zfu3Xfo2rrvqPZJurntPLv/zL84Zv+IacOHECgPvuu+/Wr//6r3+ff/iHf/htrrrqqquuuuqqq1449KAHPYirrrrqqquuuuqqF+Saa6558Gu/9mu/1zu90zt9NsDFixf58z//c37t136Nq67638I2/9udOHGChz3sYbzhG74hJ06cAOC3fuu3vvtHf/RHP+e+++67lauuuuqqq6666qrnDz3oQQ/iqquuuuqqq6666vl5x3d8x896p3d6p8/mmX7t136NX/u1X+Oqq/4/ss3/BCdOnODlX/7lecM3fEMA7rvvvlt/+7d/+3t+5Ed+5LO56qqrrrrqqquuel7oQQ96EFddddVVV1111VUPdM011zz4wz/8w7/rxV7sxV4b4KlPfSo/+qM/ysWLF7nqqqv+9WzzH+3EiRO8/Mu/PG/4hm8IwH333XfrZ33WZ73OfffddytXXXXVVVddddVVz4Ye9KAHcdVVV1111VVXXXW/d3zHd/ysd3qn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JLZ5fiTxf4ltXhSSuOr/D9v8f2Sb/+ls81/lpptuAuC+++67lauuuuqqq6666n5UrrrqqquuuuqqZzl79uytADs7O/xLbPPcJPE/jW2eH0n8X2abfw1JXPU/h22uejbb/G9gm/8Jzp49eytXXXXVVVddddX9qFx11VVXXXXVVc9y33333Qqws7PDv4VtHkgS/1PZ5vmRxP9Htvn3ksRVYJur/m1s87+Jbf6nsM3Ozg4A9913361cddVVV1111VX3o3LVVVddddVVVz2H++6779ZrrrnmwTs7O+zt7fHvYZvnJon/yWzz/EjiqhfONldd9S+xzf9GtvmfxjZXXXXVVVddddW/iOCqq6666qqrrnoOZ8+evRVgZ2eH/wy2sY1tbPO/hW1sYxvb2MY2trnqqquel21sYxvb2MY2/1vYxja2sc3/BLaxjW1s80A33XQTAP/wD//w21x11VVXXXXVVQ9E5aqrrrrqqquu+m9lm+cmif9NbPOCSOKqq/4vss3/Fbb5n8g2L6qdnR0A7rvvvlu56qqrrrrqqqseiOCqq6666qqrrnoOf//3f//bADfddBP/XWxjG9vYxjb/W9nGNraxjW1sYxvbXHXV/1S2sY1tbGMb29jGNv9b2cY2trGNbf6nsI1tbGObq6666qqrrrrqPwSVq6666qqrrrrq+bLN/yS2eX4k8b+Zbf4lkrjqqv9otvm/zjb/k9nmP8rOzg4A9913361cddVVV1111VUPRHDVVVddddVVVz2Hs2fPPgPg5ptvxja2sY1t/ieyjW1sYxvb/F9jG9vYxja2sY1tbGMb21x1FYBtbGMb29jGNraxjW1s83+JbWxjG9vYxjb/09jGNraxzX+kY8eOAXD27NlncNVVV1111VVXPRCVq6666qqrrrrqOdx333238gLY5oEk8T+RbZ4fSfxfZpt/DUlc9T+fba66wjb/W9jmv9L29jYA9913361cddVVV1111VUPROWqq6666qqrrnoOZ8+evRVgZ2eHf4ltnpsk/qeyzfMjif+PbPPvIYmr/mW2uepfxzb/29jmv9OxY8cAOHv27K1cddVVV1111VUPROWqq6666qqrrvoPZZvnJon/yWzz/EjiqhfMNldd9e9hm/+NbPM/zc7ODgD33XffrVx11VVXXXXVVQ9EcNVVV1111VVXPYf77rvv1vvuu+/WnZ0ddnZ2+I9gG9vYxjb/W9jGNraxjW1sY5urrrrqRWMb29jGNraxjW3+t7CNbWxjm/8JbGMb29jmqquuuuqqq656gQiuuuqqq6666qrncfbs2VsBdnZ2+M9gG9vYxja2+d/GNraxjW1sYxvb2Oaqq/4/sY1tbGMb29jGNv/b2MY2trGNbf4nsI1tbGObB7rpppsAuO+++27lqquuuuqqq656blSuuuqqq6666qr/EWzz3CTxv5VtXhBJXHXV/ya2+b/INv9T2eZFdezYMQD+4R/+4be56qqrrrrqqqueG8FVV1111VVXXfU87rvvvlsBdnZ2+O9kG9vYxja2sc3/draxjW1sYxvb2MY2trnqqv9KtrGNbWxjG9vYxjb/F9jGNraxjW3+J7GNbWxjm6uuuuqqq6666j8Mlauuuuqqq6666nncd999twLs7OzwP5Ftnpsk/i+xzYtCEldd9YLY5v8b2/xvYJv/KDs7OwDcd999t3LVVVddddVVVz03KlddddVVV1111fM4e/bsMwB2dnawzQNJ4n8i2zw/kvi/zDYvKklc9b+fba66wjb/W9jmP8vOzg4AZ8+efQZXXXXVVVddddVzo3LVVVddddVVVz2P++6771aAnZ0dnpttHkgS/5PZ5vmRxP83tvm3ksRV/3Fsc9WLzjb/m9jmv9LOzg5XXXXVVVddddULROWqq6666qqrrnoeZ8+evRXg2LFj/Ets89wk8T+dbZ4fSVz1vGzzn0US/xPZ5qr/Orb538o2/52OHTsGwD/8wz/8NlddddVVV1111XOjctVVV1111VVX/YezzXOTxP8GtnlBJHHVfzzbXPX/h23+N7PN/zQ7OztcddVVV1111VUvEJWrrrrqqquuuup53HfffbcC7Ozs8B/FNs9NEv+b2OYFkcRVV111hW3+L7DN/1S2eW733XffrVx11VVXXXXVVc+N4Kqrrrrqqquuer7uu+++WwFuuukm/rPYxja2sY1t/reyjW1sYxvb2MY2trnqqv9LbGMb29jGNraxjW3+N7KNbWxjG9v8T2Ib29jGNvfb2dkB4OzZs8/gqquuuuqqq656fgiuuuqqq6666qrn67777ruV/wa2sY1tbGOb/wtsYxvb2MY2trGNba666n8S29jGNraxjW1sY5v/7WxjG9vYxjb/09jGNraxzQty8803A3DffffdylVXXXXVVVdd9fwQXHXVVVddddVVz9fZs2dvBTh27Bj/3WxjG9vYxjb/19jGNraxjW1sYxvb2MY2V13172Eb29jGNraxjW1sYxvb/F9iG9vYxja2+Z/INraxjW3+te67775bueqqq6666qqrnh8qV1111VVXXXXV83XffffdCrCzs8P/RLZ5fiTxf5ltXhSSuOr/B9tcBbb538Q2/xF2dnYAuO+++57OVVddddVVV131/FC56qqrrrrqqquer7Nnz94KsLOzg20eSBL/U9nm+ZHE/ye2+beQxFX/fWxz1Qtnm/9tbPOf5dixYwCcPXv2GVx11VVXXXXVVc8Plauuuuqqq6666vm67777bgXY2dnhudnmgSTxP51tnh9JXPVstvmPIIn/L2xz1X882/xvZZurrrrqqquuuup/DCpXXXXVVVddddULdezYMf4ltnlukvjfwDYviCSu+rexzVVXvShs87+Zbf473XzzzQD8wz/8w29z1VVXXXXVVVc9P1Suuuqqq6666qrn67777ruVfwfbPDdJ/G9imxdEElddddWLxjb/F9jmqquuuuqqq676X4fKVVddddVVV131fJ09e/YZADs7O/xHsc1zk8T/RrZ5QSRx1VX/n9jm/xrb/E9mG4CdnR0A7rvvvlu56qqrrrrqqqueH4KrrrrqqquuuuoFuu+++24F2NnZ4T+LbWxjG9vY5n8729jGNraxjW1sYxvbXHXV/ya2sY1tbGMb29jGNv/b2cY2trGNbf6nsY1tbGMbgJ2dHQDuu+++W7nqqquuuuqqq14Qgquuuuqqq6666gU6e/bsrQDHjh3jv5JtbGMb29jm/xrb2MY2trGNbWxjG9tcddV/BdvYxja2sY1tbGMb2/xfYhvb2MY2tvmfyDa2sY1tnp9jx44BcPbs2Vu56qqrrrrqqqteECpXXXXVVVddddW/aGdnh/9utnl+JPF/lW1eFJK46qrnZpv/z2zzv4lt/rV2dnYAuO+++27lqquuuuqqq656QQiuuuqqq6666qoX6O///u9/G2BnZ4f/qWxjG9vYxja2+f/ENraxjW1sYxvb2MY2trGNba7638k2trGNbWxjG9vYxja2sY1t/j+xjW1sYxvb/E9mG9vYxja2+bc4duwYV1111VVXXXXVv4jKVVddddVVV131IrHN/STxP51tnh9J/H9nm38PSVz1r2ebq/59bPO/kW3+M+zs7ADwD//wD7/DVVddddVVV131glC56qqrrrrqqqteoH/4h3/4HYCbb76ZB7LNc5PE/wa2eX4kcdWLxjb/nSTxb2Gbq/7ns83/Zra56qqrrrrqqqv+R6Fy1VVXXXXVVVe9SF7sxV6Mfw1J/F8hiauuuuo/jm3+r7DNf5ebb74ZgPvuu+9WrrrqqquuuuqqF4TKVVddddVVV131Ap09e/bWf/iHf/jtF3uxF3vtm2++mauuuuqqq/5n+a3f+q3vPnv27K1cddVVV1111VUvCHrQgx7EVVddddVVV131gl1zzTUPfsd3fMfP4qqrrrrqqv9xfvRHf/Rz7rvvvlu56qqrrrrqqqteEPSgBz2Iq6666qqrrrrqqquuuuqqq6666qqrrrrq/yQqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KfwQAyRHiSjzGpwAAAABJRU5ErkJggg==) diff --git a/docs/kcl/sqrt.md b/docs/kcl/sqrt.md index db5a43d4d..81d05b9e0 100644 --- a/docs/kcl/sqrt.md +++ b/docs/kcl/sqrt.md @@ -33,7 +33,7 @@ sqrt(num: number): number ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ angle = 50, length = sqrt(2500) }, %) + |> angledLine(angle = 50, length = sqrt(2500)) |> yLine(endAbsolute = 0) |> close() diff --git a/docs/kcl/startSketchOn.md b/docs/kcl/startSketchOn.md index f82b655e4..5de8dac39 100644 --- a/docs/kcl/startSketchOn.md +++ b/docs/kcl/startSketchOn.md @@ -18,8 +18,8 @@ The point is if you want to export the result of a sketch on a face, you only ne ```js startSketchOn( - data: SketchData, - tag?: FaceTag, + planeOrSolid: SketchData, + face?: FaceTag, ): SketchSurface ``` @@ -28,8 +28,8 @@ startSketchOn( | Name | Type | Description | Required | |----------|------|-------------|----------| -| `data` | [`SketchData`](/docs/kcl/types/SketchData) | Data for start sketch on. You can start a sketch on a plane or an solid. | Yes | -| [`tag`](/docs/kcl/types/tag) | [`FaceTag`](/docs/kcl/types/FaceTag) | A tag for a face. | No | +| `planeOrSolid` | [`SketchData`](/docs/kcl/types/SketchData) | The plane or solid to sketch on | Yes | +| `face` | [`FaceTag`](/docs/kcl/types/FaceTag) | Identify a face of a solid if a solid is specified as the input argument (`plane_or_solid`) | No | ### Returns @@ -48,7 +48,7 @@ exampleSketch = startSketchOn(XY) example = extrude(exampleSketch, length = 5) -exampleSketch002 = startSketchOn(example, 'end') +exampleSketch002 = startSketchOn(example, face = END) |> startProfileAt([1, 1], %) |> line(end = [8, 0]) |> line(end = [0, 8]) @@ -57,7 +57,7 @@ exampleSketch002 = startSketchOn(example, 'end') example002 = extrude(exampleSketch002, length = 5) -exampleSketch003 = startSketchOn(example002, 'end') +exampleSketch003 = startSketchOn(example002, face = END) |> startProfileAt([2, 2], %) |> line(end = [6, 0]) |> line(end = [0, 6]) @@ -82,7 +82,7 @@ exampleSketch = startSketchOn(XY) example = extrude(exampleSketch, length = 5, tagEnd = $end01) -exampleSketch002 = startSketchOn(example, end01) +exampleSketch002 = startSketchOn(example, face = end01) |> startProfileAt([1, 1], %) |> line(end = [8, 0]) |> line(end = [0, 8]) @@ -91,7 +91,7 @@ exampleSketch002 = startSketchOn(example, end01) example002 = extrude(exampleSketch002, length = 5, tagEnd = $end02) -exampleSketch003 = startSketchOn(example002, end02) +exampleSketch003 = startSketchOn(example002, face = end02) |> startProfileAt([2, 2], %) |> line(end = [6, 0]) |> line(end = [0, 6]) @@ -113,7 +113,7 @@ exampleSketch = startSketchOn(XY) example = extrude(exampleSketch, length = 10) -exampleSketch002 = startSketchOn(example, sketchingFace) +exampleSketch002 = startSketchOn(example, face = sketchingFace) |> startProfileAt([1, 1], %) |> line(end = [8, 0]) |> line(end = [0, 8]) @@ -122,7 +122,7 @@ exampleSketch002 = startSketchOn(example, sketchingFace) example002 = extrude(exampleSketch002, length = 10) -exampleSketch003 = startSketchOn(example002, sketchingFace002) +exampleSketch003 = startSketchOn(example002, face = sketchingFace002) |> startProfileAt([-8, 12], %) |> line(end = [0, 6]) |> line(end = [6, 0]) @@ -148,7 +148,7 @@ exampleSketch = startSketchOn(XY) example = revolve(exampleSketch, axis = Y, angle = 180) -exampleSketch002 = startSketchOn(example, 'end') +exampleSketch002 = startSketchOn(example, face = END) |> startProfileAt([4.5, -5], %) |> line(end = [0, 5]) |> line(end = [5, 0]) @@ -182,7 +182,7 @@ example = revolve( tagEnd = $end01, ) -exampleSketch002 = startSketchOn(example, end01) +exampleSketch002 = startSketchOn(example, face = end01) |> startProfileAt([4.5, -5], %) |> line(end = [0, 5]) |> line(end = [5, 0]) @@ -196,12 +196,10 @@ example002 = extrude(exampleSketch002, length = 5) ```js a1 = startSketchOn({ - plane = { - origin = { x = 0, y = 0, z = 0 }, - xAxis = { x = 1, y = 0, z = 0 }, - yAxis = { x = 0, y = 1, z = 0 }, - zAxis = { x = 0, y = 0, z = 1 } - } + origin = { x = 0, y = 0, z = 0 }, + xAxis = { x = 1, y = 0, z = 0 }, + yAxis = { x = 0, y = 1, z = 0 }, + zAxis = { x = 0, y = 0, z = 1 } }) |> startProfileAt([0, 0], %) |> line(end = [100.0, 0]) diff --git a/docs/kcl/std-helix.md b/docs/kcl/std-helix.md index 490ae9223..8873d3cdc 100644 --- a/docs/kcl/std-helix.md +++ b/docs/kcl/std-helix.md @@ -9,7 +9,15 @@ Create a helix. ```js -helix(revolutions: number(_), angleStart: number(deg), ccw?: bool, radius?: number(mm), axis?: Axis3d | Edge, length?: number(mm), cylinder?: Solid): Helix +helix( + revolutions: number(_), + angleStart: number(Angle), + ccw?: bool, + radius?: number(Length), + axis?: Axis3d | Edge, + length?: number(Length), + cylinder?: Solid, +): Helix ``` @@ -18,11 +26,11 @@ helix(revolutions: number(_), angleStart: number(deg), ccw?: bool, radius?: numb | Name | Type | Description | Required | |----------|------|-------------|----------| | `revolutions` | `number(_)` | Number of revolutions. | Yes | -| `angleStart` | `number(deg)` | Start angle (in degrees). | Yes | +| `angleStart` | `number(Angle)` | Start angle (in degrees). | Yes | | `ccw` | [`bool`](/docs/kcl/types/bool) | Is the helix rotation counter clockwise? The default is `false`. | No | -| `radius` | `number(mm)` | Radius of the helix. | No | +| `radius` | `number(Length)` | Radius of the helix. | No | | `axis` | `Axis3d | Edge` | Axis to use for the helix. | No | -| `length` | `number(mm)` | Length of the helix. This is not necessary if the helix is created around an edge. If not given the length of the edge is used. | No | +| `length` | `number(Length)` | Length of the helix. This is not necessary if the helix is created around an edge. If not given the length of the edge is used. | No | | `cylinder` | [`Solid`](/docs/kcl/types/Solid) | Cylinder to create the helix on. | No | ### Returns diff --git a/docs/kcl/std-math-cos.md b/docs/kcl/std-math-cos.md index 894d217c7..d017f91c2 100644 --- a/docs/kcl/std-math-cos.md +++ b/docs/kcl/std-math-cos.md @@ -9,7 +9,7 @@ Compute the cosine of a number (in radians). ```js -cos(@num: number(rad)): number(_) +cos(@num: number(Angle)): number(_) ``` @@ -17,7 +17,7 @@ cos(@num: number(rad)): number(_) | Name | Type | Description | Required | |----------|------|-------------|----------| -| `num` | `number(rad)` | | Yes | +| `num` | `number(Angle)` | | Yes | ### Returns @@ -29,10 +29,10 @@ cos(@num: number(rad)): number(_) ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ + |> angledLine( angle = 30, length = 3 / cos(toRadians(30)), - }, %) + ) |> yLine(endAbsolute = 0) |> close() diff --git a/docs/kcl/std-math-polar.md b/docs/kcl/std-math-polar.md new file mode 100644 index 000000000..d5754ae7c --- /dev/null +++ b/docs/kcl/std-math-polar.md @@ -0,0 +1,48 @@ +--- +title: "std::math::polar" +excerpt: "" +layout: manual +--- + + + +Convert polar/sphere (azimuth, elevation, distance) coordinates to +cartesian (x/y/z grid) coordinates. + +```js +polar( + angle: number(Angle), + length: number(Length), +): Point2d +``` + + +### Arguments + +| Name | Type | Description | Required | +|----------|------|-------------|----------| +| `angle` | `number(Angle)` | | Yes | +| `length` | `number(Length)` | | Yes | + +### Returns + +[`Point2d`](/docs/kcl/types/Point2d) + + +### Examples + +```js +exampleSketch = startSketchOn(XZ) + |> startProfileAt([0, 0], %) + |> line(end = polar(angle = 30, length = 5), tag = $thing) + |> line(end = [0, 5]) + |> line(end = [segEndX(thing), 0]) + |> line(end = [-20, 10]) + |> close() + +example = extrude(exampleSketch, length = 5) +``` + +![Rendered example of std::math::polar 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADrv0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq676X+Kaa655MM9033333cpVV1111VVXXXXVVVddddVV/xIqV1111VVXXfW/wDXXXPPgz/mcz/ktnum3fuu3vvu3f/u3v+e+++67lauuuuqqq6666qqrrrrqqqteEMrx48e56qqrrrrqqv/Jrrnmmgd/0zd909M3NzePnzt37vg0Tcdf7dVe7bVf8RVf8a0f8pCHvPStt976N4eHh7tcddVVV1111VVXXXXVVVdd9dwox48f56qrrrrqqqv+p7rmmmse/E3f9E1PB3jGM57B933f9/G3f/u3/M3f/A2nTp06/sqv/Mov/Yqv+Ipv/ZCHPOSlDw8PL509e/ZWrrrqqquuuuqqq6666qqrrrofetCDHsRVV1111VVX/U90zTXXPPibvumbng7wjGc8g+/7vu/juR07doyXfMmX5LVe67UA+Id/+Iff/pEf+ZHP+Yd/+Iff5qqrrrrqqquuuuqqq6666ir0oAc9iKuuuuqqq676n+aaa6558Dd90zc9HeAZz3gG3/d938cLc+zYMV7yJV+S13qt1wLgvvvuu/VHf/RHP+e3fuu3vpurrrrqqquuuuqqq6666qr/vyjHjx/nqquuuuqqq/4nueaaax784R/+4d91zTXXPPgZz3gG3//938+/ZL1ec9ttt/E3f/M3rFYrXuzFXuz4K77iK77167zO67z30dHRpVtvvfWvueqqq6666qqrrrrqqquu+v+Hcvz4ca666qqrrrrqf4prrrnmwR/+4R/+XS/2Yi/22s94xjP4/u//fgAkIYl/yXq95hnPeAZ/+7d/y2q14sYbbzz+mq/5mm/9Oq/zOu+9ubl5/B/+4R9+h6uuuuqqq6666qqrrrrqqv8/KMePH+eqq6666qqr/ie45pprHvzhH/7h3/ViL/Zir/2MZzyD7//+7+e5SUISL4wk1us1z3jGM3jSk57EarXixhtvPP7yL//yr/06r/M67725uXn8H/7hH36Hq6666qqrrrrqqquuuuqq//sox48f56qrrrrqqqv+u11zzTUP/vAP//DverEXe7HXvnTpEt/xHd/BCyMJSbwwkliv1zzjGc/gSU96Evfeey8PfehDj7/8y7/8a7/O67zOe29ubh7/h3/4h9/hqquuuuqqq6666qqrrrrq/y7K8ePHueqqq6666qr/bp/0SZ/0Uy/2Yi/22pcuXeIbvuEbAJDEv0QS/xJJrNdr7rnnHp70pCdx7733curUqeOv9mqv9tqv8zqv896bm5vHz549+4zDw8Ndrrrqqquuuuqqq6666qqr/m+hHD9+nKuuuuqqq6767/S5n/u5v/ViL/Zir33p0iW+4Ru+gQeShCReGElI4l8iifV6zT333MPf/M3fcOnSJU6dOnX81V7t1V77FV/xFd/6IQ95yEvfeuutf3N4eLjLVVddddVVV1111VVXXXXV/w2U48ePc9VVV1111VX/XT73cz/3t17sxV7stS9dusQ3fMM38IJIQhIvjCQk8S+RhCTuuece/uZv/oa//du/5dSpU8df+ZVf+aVf8RVf8a0f8pCHvPTh4eGls2fP3spVV1111VVXXXXVVVddddX/bpTjx49z1VVXXXXVVf8dPvdzP/e3XuzFXuy1L126xDd+4zciCUm8MJKQxAsjCUn8SyQBsFqteOITn8jf/u3fcurUqeOv/Mqv/NKv8zqv897XXHPNgw8PDy+dPXv2Vq666qqrrrrqqquuuuqqq/53Qg960IO46qqrrrrqqv9qn/u5n/tbL/ZiL/baly5d4gd+4Ae4dOkSz802/xLb/Ets8y+xzf2OHz/OS77kS/Jar/VaANx33323fv3Xf/37/MM//MNvc9VVV1111VVXXXXVVVdd9b8L5fjx41x11VVXXXXVf6XP/dzP/a0Xe7EXe+1Lly7x8z//89x33308P5L4l0hCEi+MJCTxwkhCEgCr1YpnPOMZ/O3f/i2r1YoXe7EXO/46r/M67/06r/M67310dHTp1ltv/Wuuuuqqq6666qqrrrrqqqv+d0APetCDuOqqq6666qr/Kp/7uZ/7Wy/2Yi/22pcuXeIXfuEXuO2227DNv8Q2/xLb/Ets86Kwzf2OHz/OS77kS/Jar/VaANx33323/tZv/dZ3/+iP/ujncNVVV1111VVXXXXVVVdd9T8b5fjx41x11VVXXXXVf4XP/dzP/a0Xe7EXe+1Lly7xC7/wC9x2220ASEISL4wkJPHCSEISL4wkJPEvkYQkAFarFc94xjP427/9W1arFTfeeOPxl3/5l3/t13md13nvzc3N4//wD//wO1x11VVXXXXVVVddddVVV/3PRDl+/DhXXXXVVVdd9Z/tcz/3c3/rxV7sxV770qVL/MIv/AK33XYbz00SknhhJCGJF0YSknhhJCGJf4kk7rdarXjGM57Bk570JO69914e+tCHHn/5l3/5136d13md997c3Dz+D//wD7/DVVddddVVV1111VVXXXXV/yyU48ePc9VVV1111VX/mT73cz/3t17sxV7stQF+6qd+ittuu40XRhL/EklI4oWRhCReGElI4oWRhCTut1qtuPfee3nSk57Evffey6lTp46/2qu92mu/zuu8zntvbm4eP3v27DMODw93ueqqq6666qqrrrrqqquu+u9HOX78OFddddVVV131n+VzP/dzf+vFXuzFXhvgh37oh7jtttuQhCReGElI4l8iiX+JJCTxwkhCEi+MJCRxv9Vqxb333svf/M3fcOnSJU6dOnX81V7t1V77FV/xFd96c3Pz+NmzZ59xeHi4y1VXXXXVVVddddVVV1111X8f9KAHPYirrrrqqquu+s/wuZ/7ub/1Yi/2Yq8N8EM/9EPcdtttPD+2+ZfY5l9im3+Jbf4ltnlR2Oa5HT9+nLd8y7fkQQ96EPfdd9+t//AP//DbP/qjP/o59913361cddVVV1111VVXXXXVVVf916McP36cq6666qqrrvqP9uEf/uHf9Yqv+IpvDfBDP/RD3HbbbbwgkviXSEISL4wkJPHCSEISL4wkJPEvkcRzW61W/M3f/A1/+7d/y6lTp46/8iu/8ku/4iu+4ls/5CEPeenDw8NLZ8+evZWrrrrqqquuuuqqq6666qr/OpTjx49z1VVXXXXVVf+RPvzDP/y7Xud1Xue9AX7oh36I22+/HUm8MJKQxL9EEpJ4YSQhiRdGEpJ4YSQhiRdGEpJ4bqvViic+8Yn87d/+LaWU46/92q/90q/zOq/z3tdcc82DDw8PL509e/ZWrrrqqquuuuqqq6666qqr/vOhBz3oQVx11VVXXXXVf5QP//AP/67X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knhBJCGJF0QSknhuq9WKe+65hyc+8Ynce++9nDp16virv/qrv/brvM7rvPfm5ubxs2fPPuPw8HCXq6666qqrrrrqqquu+v+Hcvz4ca666qqrrrrqf6PDw8Pds2fPPuMVX/EV33pzc5OLFy9ydHTEv0QSL4wk/iWSeGEk8S+RxHMbx5G77rqLZzzjGYzjyE033cS1117LS7zES/ASL/ES3HfffVy6dInnJol/iSReGElI4oWRhCReGEn8SyTxwkjihZGEJJ7barXinnvu4W/+5m+4dOkSp06dOv7qr/7qr/2Kr/iKb725uXn87Nmzzzg8PNzlqquuuuqqq6666qqr/v+gHD9+nKuuuuqqq6763+rWW2/9a4CXeZmXee1rrrmGO+64g2EYkMQLI4l/iSReGEn8SyTxwkji+RnHkXPnzvGMZzyDcRw5c+YM8/mcl3iJl+AlXuIlWK/X3HfffTyQJCTxwkhCEi+MJCTxwkjihZGEJF4YSUjiBZGEJF4YSbwg99xzD3/zN3/DX//1X/Owhz3s+Ku/+qu/9iu+4iu+9UMe8pCXPjw8vHT27Nlbueqqq6666qqrrrrqqv/7KMePH+eqq6666qqr/jc7e/bsMx7ykIe89I033vjgEydO8PSnPx0ASfxLJPHCSOJfIol/iSReGEk8P+M4cu7cOZ7xjGcwjiObm5tsb2/ziEc8gpd4iZdgNptx++2380CSkMQLIwlJvDCSeGEkIYkXRhKSeGEk8cJIQhIviCQk8YKs12v+5m/+hr/+67/m1KlTx1/lVV7lpV/ndV7nva+55poHHx4eXjp79uytXHXVVVddddVVV1111f9dlOPHj3PVVVddddVV/5sdHh7u/sM//MPvvOIrvuJbX3PNNccB7rvvPu4niRdGEv8SSfxLJPHCSOJfIonnZxxHzp07x1133cWlS5c4fvw429vb3HLLLbzES7wEs9mM22+/nQeSxL9EEi+MJCTxwkhCEi+MJF4YSUjihZHECyMJSbwg6/WaJz7xifz1X/81q9WK13md13np13md13nv13md13nvW2+99W/Onj17K1ddddVVV1111VVXXfV/D3rQgx7EVVddddVVV/1fcM011zz4m77pm54O8Cd/8ic8/elP536S+JdI4l8iiX+JJF4YSfxLJPHCbGxscObMGR70oAdx+vRpAC5dusTf/d3f8fd/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JPHCSEISL4gkJPGCSEISL4gkJPGCSEISL4gkXpDVasU999zDH/7hH7K7u8upU6eOv/qrv/prv87rvM57b25uHj979uwzDg8Pd7nqqquuuuqqq6666j8betCDHsRVV1111VVXXfUf55prrnnwN33TNz0d4A//8A952tOexr9EEv8akvjXksS/liT+rSTxbyWJfy9J/GfY3NzkwQ9+MI997GO53zOe8Qx+7/d+j9tuu43nxzb/Etu8MLZ5YWzzwtjmhbHNC2ObF8Y2L4xtHvKQh/A6r/M6POQhD+G+++679R/+4R9++0d/9Ec/57777ruVq6666qqrrrrqqqv+s1COHz/OVVddddVVV131H+fw8HD37Nmzz3jFV3zFtz5x4gS333474zjyopDEv5Yk/rUk8a8liX8rSfxbSeI/iiT+vcZx5OzZszzjGc9gGAauueYajh8/zku+5Evyki/5kqzXa+69914eSBKSeGEk8cJIQhIviCQk8YJIQhIviCQk8YJIQhIviCReGElcvHiRv/qrv+Kv/uqvOH369PFXeZVXeelXfMVXfOuHPOQhL314eHjp7Nmzt3LVVVddddVVV1111X80yvHjx7nqqquuuuqqq/5j3XrrrX99zTXXPPhRj3rUS99888084QlP4F9DEv9akvjXksS/hST+rSTx7yGJ/yiS+Lcax5GzZ8/yjGc8g2EY2NzcZHt7m0c+8pG85Eu+JPP5nNtuu40HkoQkXhBJSOKFkcQLI4kXRhIvjCReGEm8IJKQxAsiCUmsVise//jH81d/9VecPn36+Ku8yqu89Ou8zuu89zXXXPPgw8PDS2fPnr2Vq6666qqrrrrqqqv+o1COHz/OVVddddVVV131H+/WW2/9m1d8xVd86xMnThzf3Nzkjjvu4F9LEv9akvi3kMS/hST+rSTx7yWJ/0iS+NcYx5GzZ89y1113MQwDm5ubbG9v86AHPYiXfMmXZD6fc9ttt/FAknhhJPHCSEISL4gkJPGCSEISL4gkJPGCSEISL4gkXhhJAKxWKx7/+MfzV3/1V6xWK173dV/3pV/ndV7nvV/ndV7nvW+99da/OXv27K1cddVVV1111VVXXfXvhR70oAdx1VVXXXXVVVf957jmmmse/E3f9E1PB/ibv/kb/vZv/xZJ/FtI4l9LEv9akvi3ksS/lST+I0jiP5okXlSbm5uc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j2Sb/wi2+feyzVVXXXXVVVddddX/EgRXXXXVVVddddVV/0/dd999t37913/9+9x33323bm9v8wqv8Ar8e9nGNv9ZbGOb/wy2+Y9mm/9ItvmPYJv/zSTxQFtbWwDcd999t3LVVVddddVVV131nAiuuuqqq6666qqr/h+77777bv2sz/qs1wF4+Zd/eR71qEfxH8E2tvnPYpv/DLaxzX8k29jmP4ptrnpOW1tbAJw9e/YZXHXVVVddddVVVz0ngquuuuqqq6666qr/5+67775bv/7rv/59AF7hFV6B7e1t/qPYxjb/GWxjm/8MtvmPZpv/KLb597LNv4dtrrrqqquuuuqqq/4XILjqqquuuuqqq666it/6rd/67t/6rd/67u3tbd7qrd6K/2i2sc1/BtvY5j+abWzzH8k2V/37SOKqq6666qqrrrrqX4Hgqquuuuqqq6666qrLfuRHfuSz/+Ef/uG3t7e3eZ3XeR3+M9jGNv8ZbGOb/2i2+Y9km/8Itvn3ss3/BVtbWwDcd999t3LVVVddddVVV131nAiuuuqqq6666qqrrrrs7Nmzz/j6r//69wF49KMfzcu//Mtjm/8MtrHNfwbb2OY/km1s8x/FNv8RbHMVbG1tAXD27Nlbueqqq6666qqrrnpOBFddddVVV1111VVXPct9991369d//de/D8CjH/1obrzxRmxjm/8MtrHNfwbb/EezzX8U2/xHsM2/h23+rWzzX0kSV1111VVXXXXVVf9KBFddddVVV1111VVXPYff+q3f+u4f+ZEf+ezt7W1e93Vfl+3tbQBsY5v/DLaxzX8029jmP5Jt/qPY5qp/v62tLQDuu+++W7nqqquuuuqqq656TgRXXXXVVVddddVVVz2P3/7t3/6ef/iHf/jt7e1tXvd1X5cHso1t/jPYxjb/0WzzH8k2tvmPYJt/L9tcddVVV1111VVXXfV8EVx11VVXXXXVVVdd9Tzuu+++W7/+67/+fe67775bb7zxRl7hFV6B52Yb2/xnsM1/NNvY5j+Sbf4j2Obfyzb/Vrb5rySJfy1JXHXVVVddddVVV/0bEFx11VVXXXXVVVdd9Xzdd999t37913/9ewO8wiu8AjfccAPPj21s8x/NNrb5j2ab/0i2+Y9gm6v+9ba2tgC47777buWqq6666qqrrrrqeRFcddVVV1111VVXXfUC/cM//MPv/MiP/MhnA7ze670e29vbvCC2sc1/NNvY5j+SbWzzH8U2/xFs8+9hm38r2/xvtLW1BcDZs2dv5aqrrrrqqquuuup5EVx11VVXXXXVVVdd9UL96I/+6Of81m/91ndvb2/z1m/91vxLbPOfwTb/0WzzH8U2V/3nkMRVV1111VVXXXXVvxHBVVddddVVV1111VX/oh/90R/9nPvuu+/W7e1tXvd1X5d/iW1s8x/NNrb5j2Sb/yi2+feyzb+Hbf4/2draAuC+++67lauuuuqqq6666qrnRXDVVVddddVVV1111b/ovvvuu/WzPuuzXgfg0Y9+NK/wCq/Ai8I2tvmPZhvb/EexjW3+I9jm38s2V1111VVXXXXVVVf9hyC46qqrrrrqqquuuupFct9999369V//9e8D8OhHP5obbriBF5VtbPMfzTb/kWzzH8E2/162+beyzb+Fbf6nkcQLs7W1BcB99913K1ddddVVV1111VXPi+Cqq6666qqrrrrqqhfZb/3Wb333j/zIj3z29vY2r/d6r8e/lm1s8x/JNrb5j2Kb/wi2+f/ANv8akrjqqquuuuqqq676L0Rw1VVXXXXVVVddddW/ym/91m999z/8wz/89vb2Nq/7uq/Lv4Vt/qPZ5j+Kbf4j2Obfwzb/Vrb5/2BrawuAs2fPPoOrrrrqqquuuuqq50Vw1VVXXXXVVVddddW/ytmzZ5/x9V//9e8D8OhHP5pXeIVX4N/CNrb5j2Sb/yi2+Y9gm38P2/x/JYmrrrrqqquuuuqqfyeCq6666qqrrrrqqqv+1e67775bP/MzP/N1AB796Edz44038m9lm/9ItrHNfwTb2ObfyzZX/efY2toC4L777ruVq6666qqrrrrqqudFcNVVV1111VVXXXXVv8k//MM//PaP/MiPfPb29jav+7qvy/b2Nv9WtrHNfyTb/EexzX8n2/xb2OZfyzb/GpL477S1tQXA2bNnb+Wqq6666qqrrrrqeRFcddVVV1111VVXXfVv9tu//dvf8w//8A+/vb29zVu/9Vvz72Wb/0i2+Y9im38P21z1opPEVVddddVVV1111X8Agquuuuqqq6666qqr/s3uu+++W7/+67/+fe67775bt7e3ed3XfV3+vWxjm/8otrHNfwTb/HvY5t/KNv/bSeKqq6666qqrrrrqvxjBVVddddVVV1111VX/Lvfdd9+tn/mZn/naAI9+9KN59KMfzX8E2/xHss3/BLb5r2Sb/8u2trYAuO+++27lqquuuuqqq6666nkRXHXVVVddddVVV13173b27NlnfP3Xf/37ALzCK7wC29vb/EewjW3+o9jm38s2/11s8/+BJF4Ukrjqqquuuuqqq676FxBcddVVV1111VVXXfUf4rd+67e++0d+5Ec+e3t7m7d+67fmP5Jt/qPY5t/LNv8etrnq329rawuAs2fPPoOrrrrqqquuuuqq54/gqquuuuqqq6666qr/ML/927/9Pf/wD//w29vb27zu674u/5FsY5v/CLb597LNv4dt/i1s83+ZJF4Uktja2gLgvvvuu5Wrrrrqqquuuuqq54/gqquuuuqqq6666qr/MPfdd9+tX//1X/8+AI9+9KN5+Zd/eWzzH8k2/xFs8+9lm/8NbPPfTRL/USRx1VVXXXXVVVdd9SIiuOqqq6666qqrrrrqP9R9991369d//de/D8BjHvMYbrzxRmzzH8k2/xFs8+9lm38r21z1b7e1tQXAfffddytXXXXVVVddddVVzx/BVVddddVVV1111VX/4X7rt37ru3/kR37ks7e3t3m913s9tre3sY1t/qPY5j+Cbf63sc3/RZK46qqrrrrqqquu+g9GcNVVV1111VVXXXXVf4rf+q3f+u5/+Id/+O3t7W1e7/Vej/vZ5j+Kbf4j2Obfwzb/Vra56kUnifttbm4CcN999z2dq6666qqrrrrqqueP4Kqrrrrqqquuuuqq/xRnz559xtd//de/z3333XfrjTfeyCu8witwP9vY5j+CbWzz72Wbfw/bXPX8SeKqq6666qqrrrrqvwnBVVddddVVV1111VX/ae67775bP+uzPut1AF7xFV+RRz/60TyQbf6j2Obfyzb/Hrb5t7DNv5Zt/jVs8z+ZJP4lknigra0tAM6ePfsMrrrqqquuuuqqq54/gquuuuqqq6666qqr/lPdd999t/7Ij/zIZwO84iu+Itvb2zyQbf6j2ObfyzZXXXXVVVddddVVV/2fQXDVVVddddVVV1111X+6H/3RH/2c3/qt3/ru7e1t3uZt3obnZhvb/Eewzb+Xbf6tbPNvYZv/bSTxX0USz21rawuAs2fP3spVV1111VVXXXXV80dw1VVXXXXVVVddddV/iR/90R/9nPvuu+/W7e1tXu/1Xo/nxzb/EWzz72Wbfyvb/Fewzf90kviXSOKqq6666qqrrrrqPwnBVVddddVVV1111VX/Je67775bP/MzP/O1AR796EfzCq/wCjw/tvmPYJv/bWxz1fOSxPOztbUFwH333XcrV1111VVXXXXVVc8fwVVXXXXVVVddddVV/2XOnj37jK//+q9/H4DHPOYx3HjjjTw/tvmPYJt/D9v8W9nmqquuuuqqq6666qr/dgRXXXXVVVddddVVV/2X+q3f+q3v/pEf+ZHP3t7e5vVe7/V4QWzzH8E2/x62ueo/jyReGEm8IFtbWwDcd999t3LVVVddddVVV131/BFcddVVV1111VVXXfVf7rd/+7e/5x/+4R9+e3t7m9d7vdfjBbGNbf69bPPvYZt/C9v8a9nmX8M2/1NJ4qqrrrrqqquuuuq/GcFVV1111VVXXXXVVf/l7rvvvlu//uu//n3uu+++Wx/96EfzCq/wCrwwtvn3ss1V/7NI4oWRxAuytbUFwH333XcrV1111VVXXXXVVS8YwVVXXXXVVVddddVV/y3uu+++W7/+67/+fQAe85jHcOONN/LC2Obfyzb/Vrb5t7DN/xS2+Y8iif9OW1tbXHXVVVddddVVV70ICK666qqrrrrqqquu+m/zD//wD7/9Iz/yI5+9vb3N673e67G9vc0LY5v/Trb5r2Cb/+8k8aI4e/bsrVx11VVXXXXVVVe9YARXXXXVVVddddVVV/23+q3f+q3v/od/+Iff3t7e5m3e5m34l9jm38M2/9Vs8/+NJF4YSfxbSWJrawuA++6771auuuqqq6666qqrXjCCq6666qqrrrrqqqv+W509e/YZX//1X/8+9913363b29u83uu9Hv8S2/x72ObfyjZXXXXVVVddddVVV/2vQXDVVVddddVVV1111X+7++6779bP+qzPeh2ARz/60Tz60Y/mX2Kbfw/b/Feyzb+GbV5Utvm/RBIviCSuuuqqq6666qqr/hUIrrrqqquuuuqqq676H+G+++679eu//uvfB+AVX/EVufHGG/mX2Obfwzb/Fra56t9OEv9eW1tbANx33323ctVVV1111VVXXfWCEVx11VVXXXXVVVdd9T/Gb/3Wb333j/zIj3z29vY2r/d6r8eLwjZX/deSxAsjiX8rSbwgkrjf1tYWAGfPnn0GV1111VVXXXXVVS8YwVVXXXXVVVddddVV/6P89m//9vf8/d///W9vb2/zeq/3evxns82/hW3+tWxz1VVXXXXVVVddddV/KYKrrrrqqquuuuqqq/5Hue+++279+q//+vcGePSjH80rvMIr8C+xzb+Hbf4nss3/NZL4t5DEA21ubnLVVVddddVVV131IiC46qqrrrrqqquuuup/nLNnzz7j67/+698H4DGPeQw33ngj/xLb/FezzVX/cSTxr3XffffdylVXXXXVVVddddULRnDVVVddddVVV1111f9Iv/Vbv/XdP/IjP/LZ29vbvN7rvR7b29v8S2zzb2Wb/wq2+b9MEv/RJPHctra2ADh79uytXHXVVVddddVVV71gBFddddVVV1111VVX/Y/127/929/zD//wD7+9vb3N673e6/GisM2/lW3+tWzzf4kk/rNI4gWRxFVXXXXVVVddddV/AoKrrrrqqquuuuqqq/7Huu+++279+q//+ve57777br3xxht5hVd4BV4UtrnqP4ck/itJ4vnZ2toC4L777ruVq6666qqrrrrqqheM4Kqrrrrqqquuuuqq/9Huu+++Wz/rsz7rdQBe8RVfkUc/+tH8Z7LNv5Zt/jVs86KyzYvCNlddddVVV1111VVXPQ+Cq6666qqrrrrqqqv+x7vvvvtu/ZEf+ZHPBnjFV3xFtre3+ZfY5qr/WpJ4QSTxgkjiX2NrawuA++6771auuuqqq6666qqrXjiCq6666qqrrrrqqqv+V/jRH/3Rz/mt3/qt797e3uZt3uZteFHY5t/CNv9atrnqP5Yknh9JXHXVVVddddVVV72ICK666qqrrrrqqquu+l/jR3/0Rz/nvvvuu3V7e5vXe73X438z21wFkvjX2tzcBODs2bO3ctVVV1111VVXXfXCEVx11VVXXXXVVVdd9b/Gfffdd+tnfdZnvQ7Aox/9aF7xFV+Rf4lt/i1sc9VzksS/hST+tSTx/Ehia2sLgPvuu+9Wrrrqqquuuuqqq144gquuuuqqq6666qqr/le57777bv36r//69wF49KMfzY033si/xDb/FWzz/5Ukrrrqqquuuuqqq/4HIrjqqquuuuqqq6666n+d3/qt3/ruH/mRH/ns7e1tXu/1Xo//LLb5v0QS/5NI4vmRxPMjiauuuuqqq6666qp/JYKrrrrqqquuuuqqq/5X+u3f/u3v+fu///vf3t7e5q3f+q35l9jmfyvb/FeQxP8Gm5ubANx33323ctVVV1111VVXXfXCEVx11VVXXXXVVVdd9b/Sfffdd+vXf/3Xv/d9991364033sgrvMIr8C+xzb+Wbf41bPOiss3/dZJ4fiTx/Eji+ZHE/ba2tgA4e/bsM7jqqquuuuqqq6564Qiuuuqqq6666qqrrvpf6+zZs8/4+q//+vcBeMxjHsONN97IVf85JPGCSOKqq6666qqrrrrqfyiCq6666qqrrrrqqqv+V/uHf/iH3/6RH/mRz97e3ub1Xu/12N7e5oWxzb+Wba767yOJq6666qqrrrrqqn8jgquuuuqqq6666qqr/tf70R/90c/5h3/4h9/e3t7mbd7mbfjvZpurQBLPjySeH0m8KLa2tgC47777buWqq6666qqrrrrqhSO46qqrrrrqqquuuur/hK//+q9/n/vuu+/W7e1tXu/1Xo8XxjZX/e8giee2ubkJwNmzZ2/lqquuuuqqq6666oUjuOqqq6666qqrrrrq/4T77rvv1s/6rM96HYBHP/rRvMIrvAL/kWzzn8E2/5tJ4j+CJK666qqrrrrqqqv+ExBcddVVV1111VVXXfV/xn333Xfr13/9178PwGMe8xhuvPFGXhDbXPVsknhBJPGvJYnnRxIvKkk8t62tLba2tgC47777buWqq6666qqrrrrqhaMcP36cq6666qqrrrrqqqv+77j11lv/GuBlX/ZlX/vGG2/kb/7mb3hBJPGvIYl/DUm8KCTxL5HEv0QSL4wkXhBJvCCSeEEk8fxI4vmRxPMjiecmiftde+21vOEbviEv9VIvBcDXf/3Xv8+tt97611x11VVXXXXVVVe9cJTjx49z1VVXXXXVVVddddX/LWfPnn3GQx7ykJe+6aabHryzs8PTn/50XhBJ/GtI4kUliReFJP4lkviXSOKFkcQLIokXRBIviCSeH0k8P5J4bpJ4bpIAeMmXfEle9VVflcc85jH0fc99991368///M9/9S/8wi98DVddddVVV1111VX/MvSgBz2Iq6666qqrrrrqqqv+77nmmmse/E3f9E1PB/izP/sz/vRP/5TnRxL/GpJ4UUniRSGJf4kk/iWSeGEk8YJI4gWRxPMjiedHEs+PJJ4fSTy3l3qpl+JhD3sYW1tbANx33323/tZv/dZ3/+iP/ujncNVVV1111VVXXfWioxw/fpyrrrrqqquuuuqqq/7vOTw83D179uwzXvEVX/Gtd3Z2OHfuHPv7+zw/knhRSeJFJYkXhST+JZL4l0jihZHECyKJF0QSz48knh9JPD+SeG6SuN/W1haPecxjeKM3eiOuu+46+r7nvvvuu/Xnf/7nv/pLv/RL3+Yf/uEffoerrrrqqquuuuqqfx3K8ePHueqqq6666qqrrrrq/6Zbb731rwFe9mVf9rVvvPFGnva0pzEMA89NEv8aknhRSOJFIYl/iST+JZJ4QSTxwkji+ZHECyKJ50cSz48knpsktra2eMxjHsPrvM7rcN111wFw33333fpd3/VdH/31X//17/MP//APv8NVV1111VVXXXXVvw160IMexFVXXXXVVVddddVV/3ddc801D/6wD/uw73rxF3/x197f3+d7v/d7eW6S+NeQxItKEv8SSfxLJPEvkcQLIokXRhLPjyReEEk8P5J4bpJ4bltbWzz84Q/npV7qpbjffffdd+vXf/3Xv88//MM//DZXXXXVVVddddVV/37oQQ96EFddddVVV1111VVX/d925syZB33u537ub19zzTUP/tM//VP+7M/+jOcmiReVJF5UkviXSOJfIol/iSReEEm8IJJ4QSTx/Eji+ZHE8yOJ+21tbfGwhz2Ml37pl+Z+//AP//DbX//1X/8+9913361cddVVV1111VVX/cdBD3rQg7jqqquuuuqqq6666v++a6655sHf9E3f9HSA3/iN3+AJT3gCDySJfw1JvCgk8aKQxAsjiX+JJF4QSbwgknhBJPH8SOL5kcTzI4mtrS1e6qVeioc//OHc70d+5Ec++7d/+7e/57777ruVq6666qqrrrrqqv94lOPHj3PVVVddddVVV1111f99h4eHu2fPnn3GK77iK771mTNneNrTnsYwDNxPEv8aknhRSOJFIYkXRhL/Ekm8IJJ4QSTxgkji+ZHE8yOJ53b99dfzRm/0Rrz0S780J0+eBOBHfuRHPvuzPuuzXucf/uEffufw8HCXq6666qqrrrrqqv8c6EEPehBXXXXVVVddddVVV/3/8eEf/uHf9Tqv8zrvvb+/z/d+7/fyQJJ4UUniRSGJF4UkXhhJvDCSeGEk8YJI4vmRxAsiiecmiQd66Zd+aR7+8IeztbUFwH333Xfrb/3Wb333j/7oj34OV1111VVXXXXVVf81qFx11VVXXXXVVVdd9f/Kj/7oj37Oi73Yi732Nddc8+DXe73X4zd+4ze46l9HEi/MS7/0S/Pwhz+cra0tAO67775bf+u3fuu7f/RHf/RzuOqqq6666qqrrvqvhR70oAdx1VVXXXXVVVddddX/L9dcc82Dv+mbvunpAH/6p3/Kn/3Zn3E/SbyoJPGikMS/RBIvjCReGEm8MJJ4QSTx/Eji+ZHEc9va2uIRj3gEL/3SL8397rvvvlt/67d+67t/9Ed/9HO46qqrrrrqqquu+u9BOX78OFddddVVV1111VVX/f9yeHi4e/bs2We84iu+4lvv7Oxw7tw59vf3AZDEi0oSLwpJ/Esk8cJI4oWRxAsjiedHEi+IJJ4fSdxva2uLxz72sbze670e1113HQD33Xffrd/1Xd/1MV//9V//Pv/wD//wO1x11VVXXXXVVVf996EcP36cq6666qqrrrrqqqv+/7n11lv/GuBlX/ZlX/vGG2/kaU97GsMwIIkXlSReFJL4l0jihZHECyOJF0QSL4gkXhBJPD+S2Nra4rGPfSyv93qvx/XXXw/Afffdd+uXfMmXvM13fdd3fcytt97611x11VVXXXXVVVf996Ny1VVXXXXVVVddddX/W7/927/9PS/+4i/+2i/2Yi/22q/3eq/HT//0T3PVFZJ4fra3t3n4wx/Oy7zMy3C/f/iHf/jtr//6r3+f++6771auuuqqq6666qqr/mdBD3rQg7jqqquuuuqqq6666v+va6655sGf8zmf81vXXHPNg//sz/6MP/3TP0USLwpJvCgk8S+RxAsjiRdGEi+IJF4QSTw/knigra0tXuZlXoZHPOIR3O9HfuRHPvu3f/u3v+e+++67lauuuuqqq6666qr/mdCDHvQgrrrqqquuuuqqq676/+3FXuzFXvtzP/dzf2t/f5/f+I3f4K677uJFJYl/iST+JZJ4YSTxwkjiBZHECyKJ50cSANdddx0v8zIvw/XXX8/9fuRHfuSzf/RHf/RzuOqqq6666qqrrvqfj3L8+HGuuuqqq6666qqrrvr/7ezZs7cCvOzLvuxr33jjjTz96U9nGAZeFJL4l0jiXyKJF0YSL4wkXhBJvCCSeH5e9mVfltd8zdfkxV7sxdje3ua+++679ed//ue/+rM+67Ne5x/+4R9+h6uuuuqqq6666qr/HdCDHvQgrrrqqquuuuqqq666CuBzPudzfuvFX/zFX3t/f5/v+77v40UhiX+JJP4lknhhJPHCSOIFkcTzI4nn9jIv8zI88pGPZGtrC4D77rvv1t/6rd/67h/90R/9HK666qqrrrrqqqv+90EPetCDuOqqq6666qqrrrrqKoAzZ8486HM/93N/+5prrnnwE57wBH7zN3+Tf4kkXhSSeGEk8cJI4oWRxAsiiedHEgBbW1s84hGP4GVf9mW533333Xfrb/3Wb333j/7oj34OV1111VVXXXXVVf97oQc96EFcddVVV1111VVXXXXV/a655poHf9M3fdPTAf7sz/6MP/uzP+OFkcSLQhIvjCReGEm8MJJ4QSTx/Gxvb/OIRzyCl33Zl+V+9913360/+qM/+jm/9Vu/9d1cddVVV1111VVX/e9HOX78OFddddVVV1111VVXXXW/w8PD3bNnzz7jFV/xFd96Z2eH8+fPs7+/zwsiiReFJF4YSbwwknhhJPH8SOK5bW1t8eIv/uK8wRu8Addffz0A9913363f9V3f9TFf//Vf/z633nrrX3PVVVddddVVV131fwN60IMexFVXXXXVVVddddVVVz23d3zHd/ysd3qnd/rs/f19vu/7vo8XRhL/Ekm8MJJ4YSTxgkjiBZHE/ba2tnjkIx/Jy77sy3K/f/iHf/jtr//6r3+f++6771auuuqqq6666qqr/u+hctVVV1111VVXXXXVVc/Hb//2b3/Pi7/4i7/2i73Yi732677u6/Kbv/mb/G+1tbXFy73cy/GIRzyC+/3Ij/zIZ//Wb/3Wd589e/YZXHXVVVddddVVV/3fhR70oAdx1VVXXXXVVVddddVVz88111zz4G/6pm96OsCf/dmf8Wd/9mc8P5L4l0jihZHECyOJF0QSz8/29jav9VqvxfXXX8/9fuRHfuSzf/RHf/RzuOqqq6666qqrrvr/gXL8+HGuuuqqq6666qqrrrrq+Tk8PNw9e/bsM17xFV/xrXd2djh37hz7+/s8N0n8SyTxwkjihZHECyKJB3rZl31ZXuu1XouXe7mXY3t7m/vuu+/Wn//5n//qz/qsz3qdf/iHf/gdrrrqqquuuuqqq/7/oBw/fpyrrrrqqquuuuqqq656QW699da/BnjZl33Z177xxht5+tOfzjAMPJAk/iWSeGEk8cJI4gWRBMDLvuzL8lqv9Vo8+MEPZjabcd9999368z//81/9pV/6pW/zD//wD7/DVVddddVVV1111f8/6EEPehBXXXXVVVddddVVV131wlxzzTUP/vAP//DverEXe7HX3t/f5/u+7/t4IEn8SyTxwkjihZHE87O9vc0jH/lIXu7lXo773Xfffbf+1m/91nf/6I/+6Odw1VVXXXXVVVdd9f8betCDHsRVV1111VVXXXXVVVf9S6655poHf87nfM5vXXPNNQ/+sz/7M/7sz/6M+0niXyKJF0YSL4wkHmh7e5tHPvKRvNzLvRz3u++++2790R/90c/5rd/6re/mqquuuuqqq6666ioA9KAHPYirrrrqqquuuuqqq656UVxzzTUP/qZv+qanA/zmb/4mT3jCEwCQxL9EEi+MJF4YSQBsb2/zyEc+kpd7uZfjfvfdd9+tP/qjP/o5v/Vbv/XdXHXVVVddddVVV131QOhBD3oQV1111VVXXXXVVVdd9aJ6ndd5nff+8A//8O/a39/np3/6p9nf30cS/xJJvDCSeGF2dnZ45CMfycu93Mtxv3/4h3/47a/7uq9777Nnzz6Dq6666qqrrrrqqqueH/SgBz2Iq6666qqrrrrqqquu+tf48A//8O96ndd5nffe39/n+77v+5DEv0QSL4wknp/t7W1e7uVejkc96lHc70d+5Ec++7d/+7e/57777ruVq6666qqrrrrqqqteGCpXXXXVVVddddVVV131r/QjP/Ijn33NNdc8+MVe7MVe+3Vf93X5zd/8TSTxH2l7e5vXfu3X5oYbbuB+P/IjP/LZv/3bv/099913361cddVVV1111VVXXfWiQA960IO46qqrrrrqqquuuuqqf61rrrnmwd/0Td/0dIA/+7M/48///M95YSTxwkgC4FGPehQv93Ivx/b2NgD33Xffrb/1W7/13T/6oz/6OVx11VVXXXXVVVdd9a9FOX78OFddddVVV1111VVXXfWvdXh4uHv27NlnvOIrvuJb7+zscO7cOfb393lBJPHCvPzLvzyv8zqvw6Me9Shmsxn33XffrT//8z//1V/6pV/6Nv/wD//wO1x11VVXXXXVVVdd9W9BOX78OFddddVVV1111VVXXfVvceutt/41wMu+7Mu+9o033sjTn/50hmHg+ZHEc9ve3uYlX/Ilecu3fEtuuOEGZrMZ9913360///M//9Vf+qVf+jb/8A//8DtcddVVV1111VVXXfXvQTl+/DhXXXXVVVddddVVV131b3X27NlnPOQhD3npm2666cGnT5/miU98Is+PJO63vb3NS77kS/LGb/zG3HDDDQDcd999t37Xd33Xx3z913/9+/zDP/zD73DVVVddddVVV1111X8E9KAHPYirrrrqqquuuuqqq67697jmmmse/Dmf8zm/dc011zz4z/7sz/jzP/9znpsktre3edSjHsXLv/zLc7/77rvv1h/90R/97N/6rd/6Hq666qqrrrrqqquu+o+GHvSgB3HVVVddddVVV1111VX/Xi/2Yi/2Wp/7uZ/72wA/8zM/w1133cX9tre3efSjH83Lv/zLc79/+Id/+O2v//qvf5/77rvvVq666qqrrrrqqquu+s9COX78OFddddVVV1111VVXXfXvdfbs2WcAvPiLv/hr33jjjTz96U9nNpvx6q/+6rzu674uN9xwAwA/8iM/8tnf8A3f8D4///M//zWHh4e7XHXVVVddddVVV131nwk96EEP4qqrrrrqqquuuuqqq/6jfPiHf/h3vc7rvM5781x+5Ed+5LN/+7d/+3vuu+++W7nqqquuuuqqq6666r8Klauuuuqqq6666qqrrvoP9KM/+qOfc8011zz4zJkzDwb4rd/6re/+0R/90c/hqquuuuqqq6666qr/DuhBD3oQV1111VVXXXXVVVdd9R/tmmuuefB99913K1ddddVVV1111VVX/XdCD3rQg7jqqquuuuqqq6666qqrrrrqqquuuuqqq/5PonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1X8IzQiA59FzjwYAAAAAElFTkSuQmCC) + + diff --git a/docs/kcl/std-math-sin.md b/docs/kcl/std-math-sin.md index b17f4d4df..d0249c703 100644 --- a/docs/kcl/std-math-sin.md +++ b/docs/kcl/std-math-sin.md @@ -9,7 +9,7 @@ Compute the sine of a number (in radians). ```js -sin(@num: number(rad)): number(_) +sin(@num: number(Angle)): number(_) ``` @@ -17,7 +17,7 @@ sin(@num: number(rad)): number(_) | Name | Type | Description | Required | |----------|------|-------------|----------| -| `num` | `number(rad)` | | Yes | +| `num` | `number(Angle)` | | Yes | ### Returns @@ -29,16 +29,16 @@ sin(@num: number(rad)): number(_) ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ + |> angledLine( angle = 50, - length = 15 / sin(toDegrees(135)), - }, %) + length = 15 / sin(toRadians(135)), + ) |> yLine(endAbsolute = 0) |> close() example = extrude(exampleSketch, length = 5) ``` -![Rendered example of std::math::sin 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAD8HElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVdd9X/Mi73Yi732i73Yi73WNddc8+Af/dEf/Zz77rvvVq666qqrrrrq/yf0oAc9iKuuuuqqq6666qqrrrrqqv8rXuzFXuy1P/dzP/e3eKb77rvv1s/6rM96nfvuu+9Wrrrqqquuuur/H8rx48e56qqrrrrqqquuuuqqq676v+DFXuzFXvtzP/dzf+tv/uZv+PEf/3GuvfZabrzxxuOv+Iqv+NZ/9md/9jOHh4e7XHXVVVddddX/L5Tjx49z1VVXXXXVVVddddVVV131v90111zz4K/4iq/4q2c84xn82I/9GKvVittuu41rr72WG2+88fgrvuIrvvWf/dmf/czh4eEuV1111VVXXfX/B+X48eNcddVVV1111VVXXXXVVVf9b3bNNdc8+Ju+6Zue/oxnPIPv+77v436r1YrbbruNa6+9lhtvvPH4K77iK771n/3Zn/3M4eHhLlddddVVV131/wPl+PHjXHXVVVddddVVV1111VVX/W91zTXXPPjDP/zDv2u5XD74+77v+3hu6/WaZzzjGVx77bXceOONx1/xFV/xrf/sz/7sZw4PD3e56qqrrrrqqv/7KMePH+eqq6666qqrrrrqqquuuup/q0/6pE/6qRtvvPG1v/3bv53nJgmA9XrNM57xDK699lpuvPHG46/4iq/41n/2Z3/2M4eHh7tcddVVV1111f9tlOPHj3PVVVddddVVV1111VVXXfW/0ed+7uf+1o033vjaX//1X89zk8QDDcPAbbfdxrXXXsuNN954/BVf8RXf+s/+7M9+5vDwcJerrrrqqquu+r+Lcvz4ca666qqrrrrqqquuuuqqq/63+dzP/dzfuvHGG1/7537u57h06RIPJIkHkgTAer3mtttu47rrruOGG244/oqv+Ipv/Wd/9mc/c3h4uMtVV1111VVX/d9EOX78OFddddVVV1111VVXXXXVVf+bfO7nfu5vvdiLvdhr/9iP/RjPeMYzeCBJPJAkHmgYBm677TauvfZabrjhhuOv+Iqv+NZ/9md/9jOHh4e7XHXVVVddddX/PZTjx49z1VVXXXXVVVddddVVV131v8WHf/iHf9crvuIrvvX3fd/38YxnPIMHksQDSeKBJAGwXq+57bbbuPbaa7nhhhuOv+IrvuJb/9mf/dnPHB4e7nLVVVddddVV/7dQjh8/zlVXXXXVVVddddVVV1111f8Gr/M6r/Pe7/RO7/TZ3/d938cznvEMHkgSDySJB5LEAw3DwG233ca1117LDTfccPwVX/EV3/rP/uzPfubw8HCXq6666qqrrvq/g3L8+HGuuuqqq6666qqrrrrqqqv+p3uxF3ux1/6kT/qkn/q+7/s+nvGMZ/BAknggSTyQJB5IEgDr9ZrbbruNa6+9lhtuuOH4K77iK771n/3Zn/3M4eHhLlddddVVV131fwPl+PHjXHXVVVddddVVV1111VVX/U/2Yi/2Yq/9uZ/7ub/1sz/7szzpSU/igSTxQJJ4IEk8kCQeaL1ec/vtt3PNNddwww03HL/11lv/5tZbb/1rrrrqqquuuur/BoKrrrrqqquuuuqqq6666qr/wV7sxV7stT/3cz/3t/7mb/6Gv/3bv+WBJPFAknggSTyQJJ6bJB7owz/8w7+Lq6666qqrrvq/g8pVV1111VVXXXXVVVddddX/UC/2Yi/22p/7uZ/7W894xjP4uZ/7OR5IEg8kiQeSxANJ4rlJAuBN3/RNueWWWwC47777buWqq6666qqr/u8guOqqq6666qqrrrrqqquu+h/ommuuefDnfu7n/tYznvEMvu/7vo8HksQDSeKBJPFAknhukgB4l3d5F2655RaOjo4AOHv27K1cddVVV1111f8dBFddddVVV1111VVXXXXVVf/DXHPNNQ/+8A//8O96xjOewfd93/fxQJJ4IEk8kCQeSBIPJAlJALzLu7wLt9xyC0dHRzzpSU8C4L777ruVq6666qqrrvq/g+Cqq6666qqrrrrqqquuuup/mA//8A//rhtvvPG1v+/7vo8HksQDSeKBJPFAknggSdzvXd7lXbjllls4Ojrib/7mb7jqqquuuuqq/6MIrrrqqquuuuqqq6666qqr/gf53M/93N+68cYbX/vrv/7reSBJPJAkHkgSDySJB5LE/d70Td+UW265BYC/+Zu/4fz585w6dQqA++6771auuuqqq6666v8OKlddddVVV1111VVXXXXVVf9DfO7nfu5v3Xjjja/9cz/3czyQJB5IEg8kiQeSxANJ4n5v+qZvyku8xEsA8Ed/9EecP3+eBzp79uwzuOqqq6666qr/Owiuuuqqq6666qqrrrrqqqv+B/jcz/3c33qxF3ux1/65n/s5nvGMZ3A/STyQJB5IEg8kiQeSxP1e4iVegpd4iZcA4I/+6I84f/48ALbZ2NgA4L777ruVq6666qqrrvq/g8pVV1111VVXXXXVVVddddV/sw//8A//rhd7sRd77e/7vu/jGc94BveTxANJ4oEk8UCSeCBJ3O8lXuIleNM3fVMA/uiP/ojz588DYBuAxWIBwNmzZ2/lqquuuuqqq/7voHLVVVddddVVV1111VVXXfXf6B3f8R0/63Ve53Xe+/u+7/t4xjOewf0k8UCSeCBJPJAkHkgS97vlllt40zd9UwD++q//mvPnzwNgm6uuuuqqq676P47KVVddddVVV1111VVXXXXVf5PXeZ3Xee93eqd3+uzv+77v4xnPeAb3k8QDSeKBJPFAknggSdzvlltu4V3e5V0AeNKTnsQdd9wBgG0eaGNjA4D77rvvVq666qqrrrrq/w4qV1111VVXXXXVVVddddVV/w1e7MVe7LU//MM//Lt+9md/lmc84xncTxIPJIkHksQDSeKBJHG/W265hXd5l3cB4Pbbb+dJT3oSALZ5oI2NDQDuu+++W7nqqquuuuqq/1uoXHXVVVddddVVV1111VVX/Rd7sRd7sdf+3M/93N/63d/9Xf72b/+W+0nigSTxQJJ4IEk8kCTud+zYMd7lXd4FgPPnz/M3f/M3ANjmuc3ncwDOnj17K1ddddVVV131fwuVq6666qqrrrrq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s81VV1111VVX/T9DcNVVV1111VVXXXXVVVdd9SL63M/93N96sRd7sdf+uZ/7OZ7xjGcAIIkXRBIPJIl/ybu8y7twyy23cHR0xG/8xm/wQLZ5brZ5brZ5brZ5bovFAoD77rvvVq666qqrrrrq/yYqV1111VVXXXXVVVddddVVL4IP//AP/64Xe7EXe+3v+77v4xnPeAYAknggSbwgknhuknigd3mXd+GWW27h6OiIv/7rv+aBbPPcbPPcbPPcbPPcbLOxsQHA2bNnb+Wqq6666qqr/m+ictVVV1111VVXXXXVVVdd9S94x3d8x896ndd5nff+vu/7Pp7xjGcAIIkHksQDSeKFkcQDvdmbvRm33HILAH/913/N+fPnAbDN82Ob52ab52ab52YbgM3NTQDuu+++W7nqqquuuuqq/5uoXHXVVVddddVVV1111VVXvRAv9mIv9trv9E7v9Nnf933fxzOe8QwAJPFAknggSTyQJB5IEg/0Zm/2Zrz4i784AH/4h3/I+fPnAbDNc7PNc7PN82Ob52ab+21sbHDVVVddddVV/8dRueqqq6666qqrrrrqqquuegFe7MVe7LU/93M/97d+9md/lmc84xkASOKBJPFAknggSTyQJB7oJV7iJXjxF39xAP7wD/+Q8+fPA2Cb52ab52ab52ab58c2D7SxsQHAfffddytXXXXVVVdd9X8Tlauuuuqqq6666qqrrrrqqufjxV7sxV77cz/3c3/rb/7mb/jbv/1bACTxQJJ4IEk8kCQeSBIP9BIv8RK86Zu+KQB/+Id/yPnz5wGwzXOzzXOzzXOzzXOzzQtz9uzZZ3DVVVddddVV/zdRueqqq6666qqrrrrqqquuei4v9mIv9tqf+7mf+1vPeMYz+Lmf+zkAJPFAknggSTyQJB5IEg90yy238KZv+qYA/PVf/zXnz58HwDbPzTbPzTbPzTbPzTbPj202NjYAuO+++27lqquuuuqqq/5vonLVVVddddVVV1111VVXXfUA11xzzYM/93M/97ee8Yxn8H3f930ASOKBJPFAknggSTyQJB7olltu4V3e5V0A+Ou//mtuv/12bPPcbPP82Oa52ea52ea52eZ+m5ubAJw9e/ZWrrrqqquuuur/JipXXXXVVVddddVVV1111VXPdM011zz4cz7nc37rGc94Bt/3fd8HgCQeSBIPJIkHksQD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gx7EwcEBv//7v8+/l21sY5v/CLaxzb+HbWzzb2Eb2/xb2MY2/1q2+deyjW3+NWzzr2Eb2/xr2OZFsb29DcB99913K1ddddVVV1111XOjctVVV1111VVXXXXV/1kf/uEf/l0v9mIv9trf9V3fxTOe8QxeFJK4nyRekHd/93fnQQ96EAC///u/zz333MO/hW3+I9nmP4Jt/q1s829lm38L2/xr2eZfyzb/Wrb517DNv8bOzg4AZ8+evZWrrrrqqquuuuq5Ubnqqquuuuqqq6666v+k13md13nv13md13nv7/qu7+LWW29FEveTxP0kcT9J3E8SDySJ+73FW7wFD3rQgwD45V/+Ze655x7+NWzzH802/162+fewzb+Vbf4tbPNvYZt/Ldv8a9jmX8s2/xq22d7e5qqrrrrqqquueoGoXHXVVVddddVVV131f86LvdiLvfaHf/iHf9dP/dRPceuttyKJ+0nifpJ4UUjifq/xGq/BS77kSwLwy7/8y9xzzz38S2zzn8E2/xFs8+9hm38r2/xb2Obfwjb/Wrb517LNv5Zt/jVs80D33XffrVx11VVXXXXVVc+NylVXXXXVVVddddVV/6e82Iu92Gt/7ud+7m/91m/9Fn/913+NJO4niRdEEveTxPPzki/5krzma74mAL/8y7/MPffcwwtim/8MtvmPYpt/D9v8W9nm38o2/1q2+deyzb+Wbf61bPOvZRuA7e1tAM6ePfsMrrrqqquuuuqq54fKVVddddVVV1111VX/Z7zYi73Ya3/u537ub/31X/81v/3bv80LI4n7SeJ+knggSQA86EEP4i3e4i0A+P3f/33uueceHsg2/5ls8x/FNv8etvm3ss2/lW3+LWzzr2Wbfy3b/GvZ5l/DNg+0s7MDwH333XcrV1111VVXXXXV80Plqquuuuqqq6666qr/E6655poHf+7nfu5v3XrrrfzUT/0UAJK4nyTuJ4n7SeIFkQTAgx70IN793d8dgN///d/nKU95CgC2+c9km/8otvn3ss2/h23+LWzzb2Gbfy3b/GvZ5l/LNv9atnlu29vbANx33323ctVVV1111VVXPT9Urrrqqquuuuqqq676X++aa6558Dd90zc9/dZbb+W7vuu7AJDE/SRxP0m8IJK4nyQAHvSgB/Hu7/7uAPzVX/0VT37yk/nPZJv/SLb597LNv4dt/i1s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yzYAOzs7ANx33323ctVVV1111VVX/WtQueqqq6666qqrrvo/4h3f8R0/63Ve53Xe+9u+7dt4+tOfzv0kcT9J3E8S95PE/STxQC/90i/NS7/0SwPw8z//89x99938V5PEv5UkAGxz1f8+tvnXss2/hm3+s9nmX8s2ADs7O1x11VVXXXXVVf9mVK666qqrrrrqqqv+D3ixF3ux136nd3qnz/62b/s2nv70p3M/SdxPEveTxIviZV7mZXjrt35rAH7+53+eu+++m/9qkviPIAkA21z1v4Nt/rVs869hm38t2/xns839dnZ2APiHf/iH3+aqq6666qqrrvrXonLVVVddddVVV131v9yLvdiLvfbnfu7n/taP//iP8/SnP51/LUncTxL3e8hDHsJbv/VbA/A7v/M73H333fxXk8R/NEkA2Oaq52Sbfw3b/GvY5n872/xr2eZfwzYPtLOzA8B99913K1ddddVVV1111b8WwVVXXXXVVVddddX/Yi/2Yi/22p/7uZ/7W3/xF3/BX/zFX/BAkrifJO4niftJ4vl58IMfzHu/93sD8Du/8zs86UlP4r+aJP4zSeK/iiT+PSTx/41t/rVs869hm38N2/xr2eaqq6666qqrrvpvReWqq6666qqrrrrqf6kXe7EXe+3P/dzP/a2nPe1p/PiP/ziSuJ8k7ieJF4UkAB784AfzPu/zPgA86UlP4klPehL/1STxX0ESALa56j+Xbf6/sc2/lm2e287ODgD33XffrVx11VVXXXXVVf9aBFddddVVV1111VX/C11zzTUP/tzP/dzfetrTnsa3fdu38aKSxP0kcT9JABw/fpz3eZ/3AeBJT3oSv/3bv81/NUn8V5PEfzZJXPWfxzb/Grb517DNv4Zt/rVs8/wcO3YMgLNnzz6Dq6666qqrrrrqX4vKVVddddVVV1111f8y11xzzYM/53M+57ee9rSn8W3f9m0ASOJ+krifJO4niftJ4rkdP36cj/mYjwHgrrvu4rd/+7f5ryaJ/y6SALDNVf8y2/xnsc1/Jtv8a9jmP5ttrrrqqquuuuqq/xRUrrrqqquuuuqqq/6X+fAP//DvOjg4ePC3fdu3ASCJ+0nifpJ4UUji+PHjvM/7vA8Ad911Fz//8z/PfyVJ/E8hCQDb/EeThG3+v7HNfybb/E9im/9IN910EwD33XffrVx11VVXXXXV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hG0kAWAbSdhGEraRhG0kYRtJ2EYStpGEbSRhGwBJ2EYStpGEbQAkYZsHkoRtACRhm38LSdgGQBK2uZ8kbAMgCdvcTxK2uZ8kbHM/SdjmfpKwzb+WJGzzQJKwzb9kZ2cHgLNnzz6Dq6666qqrrrrqPxOVq6666qqrrrrqP92LvdiLvTbP9PjHP54777yTnZ0dJPGvIYnnJonnJokHksRzk8QDSeKBJPHCSOJ+knggSdxPEveTxP0kcT9JPD+SAJDE/SQBIIn7SQJAEgCSeG6SAJAEgCQkASAJAEkASOKBJCEJAEkASEISAJIAkMT9JAEgCUkASAJAEpIAkMQDSQJAEgCSAJAEgCTuJwkASfxns839bANgm/vZBsA2ALYBsM39bANgGwDb2AbANrYBsM39bANgGwDb2AbANrYBsM0D2cY2ALYBsA2AbQBsA2CbB7INgG0AbANgm/vZBsA2ALZ5fmwDYJv72eZ+trmfbe5nm/vZ5gWxzQPZ5oFscz/bPJBtnpttHsg2/xLbPDfbPDfbPNDOzg5XXXXVVVddddV/CSpXXXXVVVddddV/urNnz956zTXXPBjgMY95DI95zGO46qqrrvr/7r777rv1H/7hH36bq6666qqrrrrqPxN60IMexFVXXXXVVVdd9Z/rmmuuefDnfM7n/BZXXXXVVVc9y2d91me9zn333XcrV1111VVXXXXVfyb0oAc9iKuuuuqqq6666qqrrrrqqquuuuqqq6666v8kKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+r+EebQGRe5M7VWgAAAABJRU5ErkJggg==) +![Rendered example of std::math::sin 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADovElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yrK8ePHueqqq6666qqrrrrqqquu+t/idV7ndd57c3Pz+NmzZ2/lqquuuuqqq676l1C56qqrrrrqqquuuuqqq676X+JzP/dzf+vMmTMPvuaaax78W7/1W9/99V//9e/DVVddddVVV131wlCOHz/OVVddddVVV1111VVXXXXV/3Sf+7mf+1sv9mIv9tpPfvKTj8/ncx7zmMe89DXXXPPgP/3TP/0ZrrrqqquuuuqqF4Ry/Phxrrrqqquuuuqqq6666qqr/if78A//8O96xVd8xbe+9dZb+aEf+iGe8IQn8Cqv8io85CEPeelrrrnmwX/6p3/6M1x11VVXXXXVVc8P5fjx41x11VVXXXXVVVddddVVV/1P9Tqv8zrv/U7v9E6ffeutt/Jd3/VdAKxWK/7mb/6GV37lV+YhD3nIS19zzTUP/tM//dOf4aqrrrrqqquuem6U48ePc9VVV1111VVXXXXVVVdd9T/Ri73Yi732J33SJ/3Urbfeynd913fxQOv1mr/+67/mlV/5lXnIQx7y0gD/8A//8DtcddVVV1111VUPRDl+/DhXXXXVVVddddVVV1111VX/07zYi73Ya3/u537ub+3u7vJN3/RNPJAkAFarFX/913/NK7/yK/PiL/7irw3wD//wD7/DVVddddVVV111P8rx48e56qqrrrrqqquuuuqqq676n+TFXuzFXvtzP/dzf2t3d5ev+qqv4oEk8UCr1Yq//uu/5pVf+ZV58Rd/8dcG+Id/+Iff4aqrrrrqqquuAqAcP36cq6666qqrrrrqqquuuuqq/ymuueaaB3/FV3zFX+3u7vJTP/VT7O7ucj9JPD+r1YpL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P5J4fiTx/EjiBZHEv5Ykntstt9zCu7/7uwPwN3/zN5w/fx4A21x11VVXXXXV/wFUrrrqqquuuuqqq6666qqr/gXv+I7v+Fmv8zqv895Pf/rT+amf+ikAJPH8SOL5kcTzI4l/LUm8IJJ4fiTx3G655Rbe/d3fHYAnPelJ3HHHHQDYBuDUqVMA/MM//MNvc9VVV1111VX/O1G56qqrrrrqqquuuuqqq656IV7ndV7nvd/pnd7ps5/+9KfzXd/1XfxXkcTzI4kXRBIvqltuuYV3f/d3B+COO+7gyU9+MgC2ueqqq6666qr/Q6hcddVVV1111VVXXXXVVVe9AC/2Yi/22h/+4R/+XU9/+tP5ru/6Lu4niedHEs+PJJ4fSTw/knh+JPGCSOIFkcQD3XLLLbz7u787AHfccQd/8zd/A4BtHmhjYwOA++6771auuuqqq6666n8nKlddddVVV1111VVXXXXVVc/Hi73Yi732537u5/7W7u4u3/Vd38X9JPH8SOL5kcTzI4nnRxL/WpJ4QSTxQMeOHePd3/3dATh//jx/8zd/A4BtHmixWHDVVVddddVV/wdQueqqq6666qqrrrrqqquuei4v9mIv9tqf+7mf+1u7u7v85E/+JPeTxPMjiedHEs+PJP61JPGvJYkHOnbsGB/2YR8GwPnz5/njP/5jAGzz3DY2NgD4h3/4h9/mqquuuuqqq/73onLVVVddddVVV1111VVXXfUA11xzzYM/93M/97cAfvInf5Jbb70VAEk8P5L4jyKJ50cSL4gknh9JPNCxY8d48zd/cwDOnz/PH//xHwNgm+dmm8ViAcB99913K1ddddVVV131vxeVq6666qqrrrrqqquuuuqqZ7rmmmse/OEf/uHfBfCd3/md3HrrrfxbSeL5kcTzI4nnRxIviCReVG/+5m/Ogx70IM6fP88f//EfA2Cb52abq6666qqrrvo/hMpVV1111VVXXXXVVVddddUzffiHf/h3vdiLvdhrf+d3fie33nor95PE8yOJ50cSz48knh9J/GtJ4gWRxAO927u9Gw960INYLpf88R//MQC2eW62ud9isQDgvvvuu5Wrrrrqqquu+t+LylVXXXXVVVddddVVV111FfC5n/u5v/ViL/Zir/2d3/md3HrrrdxPEs+PJJ4fSTw/kvjXksS/liQe6N3e7d140IMexHK55Dd/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JYkXlSReVJJ4fiTx/Lz1W781D37wg7n33nv5jd/4Df6ns83/NLb5z2ab/yi2+feyzb9ka2sLgLNnz97KVVddddVVV/3/ReWqq6666qqrrrrqqv913vEd3/GzXud1Xue9n/a0p/FjP/ZjvDCSeG6SeH4k8aKSxItKEs/Pe7/3e/PgBz+Yw8NDfuM3foP/aWzzP51t/rPZ5j+Kbf69bPOi2NraAuC+++67lauuuuqqq676/4vKVVddddVVV1111VX/q7zO67zOe7/TO73TZz/taU/jW7/1W7mfJJ6bJF5Uknh+JPHcJPH8SOJF9d7v/d48+MEP5vDwkJ/5mZ/hv5Nt/rexzX8F21x11VVXXXXVVf+rUbnqqquuuuqqq6666n+NF3uxF3vtD//wD/+upz3taXzrt34r95PEi0oSLypJvKgk8fxI4rm993u/Nw9+8IM5PDzkj/7oj7DNA0niP4pt/i+xzX8V2/xHss2/l21eFFtbWwDcd999t3LVVVddddVV/79Rueqqq6666qqrrrrqf4UXe7EXe+3P/dzP/a2LFy/yrd/6rfxLJPHcJPH8SOJFJYkXlSSe23u/93vz4Ac/GIA/+qM/4t577+W52eaq52Wb/yq2+Y9km/9K1113HQBnz569lauuuuqqq676/43KVVddddVVV1111VX/473Yi73Ya3/u537ub128eJFv/dZv5YEk8dwk8aKSxPMjiecmiedHEi+Kt37rt+bBD34wAL/+67/Ovffey1X/Mtv8V7LNfyTb/Eewzb/WfffddytXXXXVVVdd9f8blauuuuqqq6666qqr/ke75pprHvy5n/u5vwXwYz/2Y1y8eJH7SeJFJYkXlSReVJJ4fiTxQK/92q/NS7/0SwPw67/+69x7771c9cLZ5r+abf4nss2/xubmJgD33XffrVx11VVXXXXV/29Urrrqqquuuuqqq676H+uaa6558Od8zuf8FsC3fuu38rSnPY1/iSSemySeH0m8qCTxopLEA730S780r/3arw3Ar//6r3Pvvfdy1Qtnm/9qtvmPZpv/DltbWwCcPXv2GVx11VVXXXXV/29Urrrqqquuuuqqq676H+vDP/zDv+uaa6558Ld+67fytKc9jQeSxHOTxItKEs+PJJ6bJJ4fSfxLXvqlX5q3fuu3BuDXf/3Xuffee7nqBbPNfwfb/EezzX8E21x1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P/VT/FexDYAkrrrqP9p99913K1ddddVVV1111f0Irrrqqquuuuqqq676V3ud13md936d13md937qU5/Kt3zLt/D8SOK5SeJFJYkXlSReVJIAeJ/3eR8e/OAHc3BwwB/+4R/y38E2V131H2VzcxOA++6771auuuqqq6666qr7Ubnqqquuuuqqq6666l/lxV7sxV77wz/8w7/rqU99Kt/yLd+CJJ6bJF5UknhRSeJFJYkX5H3e53148IMfDMAf/MEfcN999/HfxTYAkrjqqn+Pra0tAM6ePfsMrrrqqquuuuqq+xFcddVVV1111VVXXfUie7EXe7HX/tzP/dzfunjxIt/yLd+CJF5Uknhuknh+JPHcJPH8SOK5SeL5kcTbvM3b8OAHPxiAX/mVX+Hee+/FNv/dbHPVv58k/qtI4qqrrrrqqquu+h+P4KqrrrrqqquuuuqqF8mLvdiLvfbnfu7n/tbFixf5oi/6Il4QSTw3SbyoJPGiksSLShKv/dqvzUu/9EsD8Cu/8ivce++93M82tvnvZBvbXPX/kyT+Pba2tgC47777buWqq6666qqrrrofwVVXXXXVVVddddVV/6JrrrnmwZ/7uZ/7WxcvXuRHfuRHAJDEc5PEi0oSLypJvKgk8fy89Eu/NK/zOq8DwK/8yq9w77338vzY5r+bba666l9ra2sLgLNnz97KVVddddVVV111P4Krrrrqqquuuuqqq16oa6655sHf9E3f9HSAH/mRH+FpT3saknhRSeJFJYnnJonnRxIvqoc85CG8zdu8DQC/8iu/wr333ssLYxvb/HeyzVX/NpL4ryKJ/ym2trYAuO+++27lqquuuuqqq666H8FVV1111VVXXXXVVS/QNddc8+AP//AP/y6Ab/7mb+ZpT3saL4gknpsknh9JPDdJvKgk8fxI4rk95CEP4X3e530A+IM/+APuvfdeXlS2+e9km6uuuuqqq6666qqr/l0Irrrqqquuuuqqq656gT78wz/8u17sxV7stb/5m7+Zpz3taQBI4rlJ4kUliReVJF5UknhuD37wg3mf93kfAP7gD/6Apz71qfxr2ea/k22u+teTxP9Gkvi32NraAuC+++67lauuuuqqq6666oEIrrrqqquuuuqqq656vj73cz/3t17sxV7stX/0R3+Upz3taQBI4kUliReVJJ6bJJ4fSbwoHvzgB/O+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PSTxQFtbWwDcd999t3LVVVddddVVVz03gquuuuqqq6666qr/g17sxV7stT/3cz/3ty5evMgXfuEX8q8liecmiReVJF5Uknhux48f533f930BuOeee/j93/99rrrqv4skJPEfSRL/HpK46qqrrrrqqqteJARXXXXVVVddddVV/8dcc801D/7cz/3c37p48SI/8iM/wv0k8dwk8dwk8aKSxItKEi+K48eP83Ef93EA3HPPPfzyL/8yz802/1Fs8x/JNlf93ySJ/0iS+PeQxNbWFgBnz559BlddddVVV1111fND5aqrrrrqqquuuur/kGuuuebB3/RN3/R0gB/5kR/hqU99KgCSeG6SeFFJ4kUliecmiedHEg90/Phx3u/93g+Ae+65h1/+5V/mBbGNJP4/kcT/RpJ4UdjmfzpJ2OZ/iq2tLQDuu+++W7nqqquuuuqqq54fKlddddVVV1111VX/R1xzzTUP/vAP//DvAvjmb/5mnvrUp/KvJYkXlSSemyReVJJ4oOPHj/O2b/u2HD9+nHvuuYdf/uVf5qr/XSTx7yGJF8Q2/1NIwjb/ESRhm3+rra0tAO67775bueqqq6666qqrnh8qV1111VVXXXXVVf9HfPiHf/h3vdiLvdhrf/M3fzNPfepTuZ8knpskXlSSeG6SeFFJ4kXxtm/7tjzkIQ/h4OCAX/7lX+ZFYRtJ/HvZRhJX/etJ4r+CJB7INv+dJAFgm38vSdjm32Jra4urrrrqqquuuuqFonLVVVddddVVV131f8Dnfu7n/taLvdiLvfaP/MiP8NSnPpX7SeJFJYnnJokXlSReVJJ4oPd93/flIQ95CAcHB/z4j/84Vz0vSfxPIYn/bpJ4INv8d5CEbf69JGGbf62trS0A/uEf/uG3ueqqq6666qqrnh8qV1111VVXXXXVVf/Lfe7nfu5vvdiLvdhr/+qv/ip//ud/zr9EEs9NEi8qSTw3STw/knhuknig933f9+UhD3kIBwcH/PiP/zj/WraRxFX/uSTxP5kk7meb/0qSsM2/lyRsc9VVV1111VVX/YeictVVV1111VVXXfW/2Id/+Id/14u92Iu99p//+Z/za7/2azyQJJ6bJF5UknhuknhRSeJf8r7v+7485CEP4eDggN///d/nv5NtJPE/kST+u0jifxtJ3M82/xUkAWCbfw9J2OZFtbm5CcDZs2dv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zYtKEg9km+dHEvezzXOTxP1s80CSeKCzZ88+g6uuuuqqq6666t+DylVXXXXVVVdd9T/C67zO67w3wFOe8hQeSBIvKkn8W33QB30QD33oQwH4jd/4De6++26u+t9JEs+PJF5Uknhukvi3ksRzk8Rzk8S/RBLPTRLPTRLPTRLPTRLPTRLPjySeH0k8P5J4YSTxopLEfwZJvDC2eUEk8UC2eW6SuJ9tnpskAGzzQBsbGwCcPXv2Vq666qqrrrrqqn8PKlddddVVV1111f8IL/ZiL/ZaAE996lP5l0jiRSWJ5yaJB3rHd3xHHvrQhwLw0z/909x1111I4v8bSfx7SOI/miT+M0ni30MSz00S/xJJPDdJPDdJPJAknpsknpskHkgSz00Sz48knpsknh9JPD+SeEEk8aKQxP8Eknhutnl+JHE/2zw3SdzPNg8kCQDbAGxsbABw33333cpVV1111VVXXfXvQeWqq6666qqrrvof4cVe7MVeG+DChQvcTxLPTRLPjySemyT+Ja//+q/Py73cywHw0z/909x1110A2EYS/xtI4r+CJP6tJPGCSOJfSxLPjySeH0m8qCTx3CTx3CTx3CTx3CTxL5HEc5PEA0niuUniuUnigSTx3CTx3CTx3CTx/Eji+ZHECyKJF0YS/1qS+I9kmxeFJB7INs9NEvezzXOTBIBtHkgSAIvFgquuuuqqq6666j8Elauuuuqqq6666n+Ea6655sF/9md/xv0k8aKSxItKEvd7uZd7Od7gDd4AgJ/+6Z/mrrvu4v8qSVz1nCTxn00Sz00SDySJ5yaJf4kknpskHkgSz00Sz00Sz00Sz00Sz48knh9JvDCSeFFI4r+CJF4Q27wgkrifbZ6bJO5nmweSBIBtnp/77rvvVq666qqrrrrqqn8PKlddddVVV1111X+713md13lvgKc85Sm8MJJ4UUniuUnifg996EN5x3d8RwB++qd/mrvuuour/meRxPMjiedHEs+PJF5UknhuknhuknhukviXSOJfIonnJokHksRzk8QDSeK5SeK5SeK5SeK5SeK5SeL5kcQLIol/iST+vSTxgtjmX0sSD2Sb50cS97PNc5MEgG0eSBL3m8/nANx33323ctVVV1111VVX/XtRueqqq6666qqr/tu92Iu92GsB/Nmf/RkAknhuknh+JPHcJPHCPPShD+WDPuiDAPjN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uJ8k7ieJ+0nifpK4nyTuJ4kHksT9JPFAknggSTw3SbwgkvjPJInnxzb3k8T9bHM/SQDYBkAS97MNgCRmsxkA9913361cddVVV1111VX/0ahcddVVV1111VX/KV7sxV7stQFOnDjB3t4eP/mTP4kk/r+RxH8mSfxXkcR/FUn8SyTxQJL415DEA0niBZHE/STxopDE/SRxP0ncTxL3k8QLI4n7SeK5SeJ+krifJAAkcT9J3E8SAJK4nyTuJ4n7SeJ+krifJO4niftJ4n6SeCBJPJAknpsknpskXhhJ/GewzQNJ4oFsAyCJ+9kGQBL3sw2AJABsM5vNALjvvvtu5aqrrrrqqquu+o9G5aqrrrrqqquu+g93zTXXPPiaa655MM/0J3/yJzzmMY9BEv9ZJPGikMR/FEn8SyTx7yWJfwtJvCCS+NeSxPMjiReVJF4UknggSfxLJPFAknhhJPGCSOKBJPH8SOJ+knh+JPH8SOJ+knh+JHE/STw3STw3SdxPEs9NEveTxHOTxPMjiftJ4rlJ4oEk8fxI4oWRxHOTxL+XJF4Utvn3ss1zs80Lsr29zVVXXXXVVVdd9Z+GylVXXXXVVVdd9R/Otv/hH/7ht1/sxV7stQHe4A3egKuuuuqqq16w++6779Z/+Id/+G2uuuqqq6666qr/aFSuuuqqq6666qr/cGfPnn3Gb/3Wb33PfffddytXXXXVVVf9i37rt37re/7hH/7ht7nqqquuuuqqq/6joQc96EFcddVVV1111VVXXXXVVVddddVVV1111VX/J1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1fxj6RHS8i7bL9PAAAAAElFTkSuQmCC) diff --git a/docs/kcl/std-math-tan.md b/docs/kcl/std-math-tan.md index 477b86e0d..be9867c5c 100644 --- a/docs/kcl/std-math-tan.md +++ b/docs/kcl/std-math-tan.md @@ -9,7 +9,7 @@ Compute the tangent of a number (in radians). ```js -tan(@num: number(rad)): number(_) +tan(@num: number(Angle)): number(_) ``` @@ -17,7 +17,7 @@ tan(@num: number(rad)): number(_) | Name | Type | Description | Required | |----------|------|-------------|----------| -| `num` | `number(rad)` | | Yes | +| `num` | `number(Angle)` | | Yes | ### Returns @@ -29,10 +29,10 @@ tan(@num: number(rad)): number(_) ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ + |> angledLine( angle = 50, length = 50 * tan(1/2), - }, %) + ) |> yLine(endAbsolute = 0) |> close() diff --git a/docs/kcl/std-revolve.md b/docs/kcl/std-revolve.md index 03c7f5296..9e2d51dcb 100644 --- a/docs/kcl/std-revolve.md +++ b/docs/kcl/std-revolve.md @@ -18,7 +18,16 @@ You can provide more than one sketch to revolve, and they will all be revolved around the same axis. ```js -revolve(@sketches: [Sketch; 1+], axis: Axis2d | Edge, angle?: number(deg), tolerance?: number(mm), tagStart?: tag, tagEnd?: tag): Solid +revolve( + @sketches: [Sketch; 1+], + axis: Axis2d | Edge, + angle?: number(Angle), + tolerance?: number(Length), + symmetric?: bool, + bidirectionalAngle?: number(Angle), + tagStart?: tag, + tagEnd?: tag, +): Solid ``` @@ -28,8 +37,10 @@ revolve(@sketches: [Sketch; 1+], axis: Axis2d | Edge, angle?: number(deg), toler |----------|------|-------------|----------| | `sketches` | `[Sketch; 1+]` | The sketch or set of sketches that should be revolved | Yes | | `axis` | `Axis2d | Edge` | Axis of revolution. | Yes | -| `angle` | `number(deg)` | Angle to revolve (in degrees). Default is 360. | No | -| `tolerance` | `number(mm)` | Tolerance for the revolve operation. | No | +| `angle` | `number(Angle)` | Angle to revolve (in degrees). Default is 360. | No | +| `tolerance` | `number(Length)` | Tolerance for the revolve operation. | No | +| `symmetric` | [`bool`](/docs/kcl/types/bool) | If true, the extrusion will happen symmetrically around the sketch. Otherwise, the extrusion will happen on only one side of the sketch. | No | +| `bidirectionalAngle` | `number(Angle)` | If specified, will also revolve in the opposite direction to 'angle' to the specified angle. If 'symmetric' is true, this value is ignored. | No | | `tagStart` | [`tag`](/docs/kcl/types/tag) | A named tag for the face at the start of the revolve, i.e. the original sketch. | No | | `tagEnd` | [`tag`](/docs/kcl/types/tag) | A named tag for the face at the end of the revolve. | No | @@ -97,7 +108,7 @@ part001 = startSketchOn(XY) |> close() |> revolve(axis = Y, angle = 180) -part002 = startSketchOn(part001, 'end') +part002 = startSketchOn(part001, face = END) |> startProfileAt([4.5, -5], %) |> line(end = [0, 5]) |> line(end = [5, 0]) @@ -117,7 +128,7 @@ box = startSketchOn(XY) |> close() |> extrude(length = 20) -sketch001 = startSketchOn(box, "END") +sketch001 = startSketchOn(box, face = END) |> circle( center = [10,10], radius = 4 ) |> revolve( angle = -90, @@ -136,7 +147,7 @@ box = startSketchOn(XY) |> close() |> extrude(length = 20) -sketch001 = startSketchOn(box, "END") +sketch001 = startSketchOn(box, face = END) |> circle( center = [10,10], radius = 4 ) |> revolve( angle = 90, @@ -155,7 +166,7 @@ box = startSketchOn(XY) |> close() |> extrude(length = 20) -sketch001 = startSketchOn(box, "END") +sketch001 = startSketchOn(box, face = END) |> circle( center = [10,10], radius = 4 ) |> revolve( angle = 90, @@ -243,4 +254,34 @@ sketch001 = startSketchOn(XY) ![Rendered example of std::revolve 10](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADM6UlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/Ksrx48e56qqrrrrqqquuuupf9jqv8zrv/aAHPeintra2/ubs2bO3ctVVV1111VVXXXXVVf/zUbnqqquuuuqqq676P0rSgyUh6cGSHlxKodb6IEl0Xfdg29RaHywJgL7vH2ybvu8fDJCZPNCHf/iHA3Dfffd912d91me9zn333XcrV1111VVXXXXVVVdd9T8blauuuuqqq6666qr/hSQ9WBKSXns+nz9IEl3XPbjW+uCu6x5ca32wJAAkIYn7SeJ+knhuknhuL/dyLwfAhQsXuOaaax585syZB9933323ctVVV1111VVXXXXVVf+zUbnqqquuuuqqq676H0rSgyVRa33tvu8fVGt9cNd1D14sFq8tCUlIAkASAJIAkASAJO4niQeSxPMj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AEhCEgCSAJCEJAAkIQkASUhCEgCSkIQkJCEJSUhCEpKQhCQkIQlJRASSkEREIAlJRAQRgSQigohAEhFBRBARSCIiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKQREQQEUhCEhGBJCQREUhCEpKQBIAkJAEgCQBJPD+ZCYAkntvFixcBuOaaax5833333cpVV1111VVXXXXVVVf9z0Plqquuuuqqq656lo2Njc86efLkZ9daiQgigoggIpBERCAJSUhCEpKQBIAkJCEJAElIAkASAJKQBIAkACQhCQBJAEgCQBKSAJAEgCQAJCEJAElIAkASkgCQhCQkIQlJAEhCEpKQhCQkIYmIQBKSkEREIAlJRASSiAgkERFEBJKICCKCiEASEUFEEBFEBBFBRBARRAQRQUQQEZRSiAgigoggIogIIoKIICKQREQQEUQEkogIIgJJRASSkIQkJBERSAJAEpKQBIAkACTxgmQmDyQJ21x11VVXXXXVVVddddX/ElSuuuqqq6666ioy88GnTp36rq2trdcupVBKISKICCQREUhCEpKQhCQkIQlJAEhCEgCSkASAJCQBIAkASUgCQBIAkgCQhCQAJAEgCQBJSAJAEpIAkIQkACQhCUkASEISkpCEJCQhCUlIQhKSkEREIAlJSCIikEREIImIQBIRQUQQEUgiIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIoJRCRBARRAQRQUQgiYggIogIIgJJRASSiAgkERFIQhKSkIQkJCEJSQBIQhIAknggSTzQNE1cddVVV1111VVXXXXV/2JUrrrqqquuuur/OUkPfuxjH/tbR0dHDy6lEBFEBBFBRCAJSUhCEpKQhCQkIQkASUhCEgCSkASAJAAkIQkASQBIQhIAkgCQBIAkJAEgCQBJSAJAEpIAkIQkJAEgCUlIQhKSAJCEJCQhiYhAEpKQhCQiAklIIiKQREQgiYhAEhFBRBARSCIiiAgigoggIogIIoKIICKICCKCiCAiKKUQEUQEEUFEEBFEBBFBRBARSCIiiAgiAklEBJKICCQREUhCEpKQhCQkIQlJAEhCEgCSeCBJXHXVVVddddVVV1111f8xVK666qqrrrrq/7Fa62tfe+21v7VcLqm1EhFEBJKICCQhCUlEBACSkIQkJCEJAElIAkASkgCQhCQAJAEgCUkASAJAEgCSkASAJAAkIQkASUgCQBKSAJCEJCQBIAlJSEISkpCEJCQhCUlIQhIRgSQkERFIIiKQhCQigohAEhFBRBARSCIiiAgigoggIogIIoKIICKICCKCiCAiiAhKKUQEEUFEEBFEBJKICCKCiCAikEREEBFIIiKQhCQiAklIQhKSkIQkJCEJAElIAkAS95PEi0IStrnqqquuuuqqq6666qr/RahcddVVV1111f9Ts9nsvU+fPv1dtVZKKUQEEUFEIAlJRASSkIQkJAEgCUlIQhIAkpAEgCQkASAJAElIAkASAJIAkIQkACQBIAlJAEgCQBKSAJCEJCQBIAlJSEISkgCQhCQkIQlJSCIikIQkJBERSEISEYEkIgJJRASSiAgigohAEhFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEIImIICKICCQREUhCEpKQhCQk8S+xjSQAbCMJ20gCwDb3k8SLShJXXXXVVVddddVVV131PxyVq6666qqrrvp/aHt7+7uOHTv23rVWIoKIICKICCQREUhCEpKQhCQkASAJSUgCQBKSAJCEJAAkIQkASQBIAkASkgCQBIAkJAEgCQBJSAJAEpIAkIQkJAEgCUlIQhKSkIQkJCEJSUhCEpKICCQhCUlEBJKICCQREUgiIogIJBERRAQRQUQgiYggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIQBKSkEREIAlJAEgCQBL/GrYBkIRtnpttJPFAtnlRSMI2V1111VVXXXXVVVdd9T8clauuuuqqq676f+bEiRO/tbW19dqlFEopRAQRgSQkERFIQhKSkIQkJCEJAElIQhIAkpAEgCQAJCEJAEkASEISAJIAkIQkACQBIAlJAEhCEgCSkASAJCQhCUkASEISkpCEJCQhCUlIQhIRgSQkERFIQhIRgSQiAklEBJKICCKCiEASEUFEEBFEBBGBJCKCiCAiiAgigoggIogIIoKIQBKSkIQkJCEJSUgCQBIAknh+bPPC2EYSALaRhG0kYRsASdgGQBIvKknY5n5nzpx58H333XcrV1111VVXXXXVVVdd9T8Plauuuuqqq676f0LSg48fP/5dW1tbr11rJSKICCICSUQEkpCEJCQhCUlIQhIAkpCEJAAkIQkASUgCQBIAkpAEgCQAJAEgCUkASAJAEpIA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SeJfQxL/ESRxP0k8kCQkIQlJSAJAEpKQhCQkIQlJSEISEYEkIoKIoJRCKYVSChFBRFBKoZRCRBARRAQRgSQkIQlJ3M82trGNbWxjm8zENraxjW1sYxvb2MY2trGNbWxjG9tkJo95zGP4h3/4h9/hqv8U11xzzYMBzp49+wyuuuqqq6666qqrrrrqfxYqV1111VVX/b+UmfxvI4kHksT9JHE/SbwgknhhJAEgCUlIQhKSiAgkIYmIICKICCKCiCAiiAhKKZRSiAgiglIKkogIJGEbANs8P7axjW0yE9vYxja2yUxsYxsA29jGNraxjW0AbGObm2++mX/4h3/4ba666qqrrrrqqquuuuqq/2+oXHXVVVddddV/MNtI4t9LEv9WkrifJB5IEpJ4IElIAkASkrifJCQhiYggIpBERBARRAQRQUQQEUQEEUFEEBFEBJKICAAkkZlI4oFsYxvb2MY2trGNbWxjGwDb2MY2tgGwjW1sYxvbZCaPetSjALjvvvtu5ar/FC/2Yi/22gD/8A//8NtcddVVV1111VVXXXXV/yxUrrrqqquuuup/MEk8kCQeSBL3k8QLIonnJglJSOJ+krifJCQhCUlIQhIRQUQQEUQEEUFEEBGUUiilEBGUUogIIgJJSOJ+krDN/WwDYBvb2MY2trFNZmIb29jGNraxjW1s80C2sY1ttre3+a3f+q3v5qqrrrrqqquuuuqqq676/4jgqquuuuqqq/6NbPPC2OYFkYQkJCGJ/wySeCBJvCCSkASAJCQhCUlIQhKSiAgkERFEBBFBRFBKoZRCRBARlFKICEopRAQRQUQQEUhCEpJ4INvYxja2sY1tbGObzMQ2trmfbQBsYxvb2AbANrbZ2triH/7hH36Hq/7TXHPNNQ8GuO+++27lqquuuuqqq6666qqr/mehctVVV1111f87th8sif9ItpHEv0QSknhuknhBJPFAknhBJPHCSEIS95OEJAAkIQlJSEISkpBERBARSCIiiAgigoggIogIIoJSChFBRBARRAQRgSQeSBIAkgCwjW1sY5vMJDOxTWZiG9vYxja2sY1tbANgG9vYxja2sc1NN93EfffddytXXXXVVVddddVVV1111f9HVK666qqrrvp/yTb/1STxwkhCEv9aknhBJPH8SEIS95MEgCQkIQlJSEISkpBERCAJSUQEEUEphYiglEJEUEohIogIIgJJSOJ+trmfbWzz3GxjG9vYxja2sY1tbGMbANvY5n62sY1tbHP8+HHOnj17K1f9p7jmmmseDHD27NlncNVVV1111VVXXXXVVf/zULnqqquuuur/Hdv8e9lGEv9VJPFAknhBJPFAknhhJAEgiQeShCQkIQlJSCIiiAgigoggIogIIoKIICIopRARRASSkASAbSTx3GxjG9vYxja2sY1tbANgG9vYBsA2ALaxjW0AbGObRz/60QDcd999t3LVf4ozZ848GOC+++67lauuuuqqq6666qqrrvqfh8pVV1111VX/70jiX2IbSfxr2UYSz00SLypJ/GtJ4oEk8UCSkMQDSUISAJIAkIQkJCEJSUhCEhFBRBARRAQRQUQQEZRSiAgigoggIogIJBERPJAkJHE/2wDYxja2sY1tbGMb29jGNrYBsI1tbPNAtgGwjW3+4R/+4Xe46j/NNddc82CA++6771auuuqqq6666qqrrrrqfx6Cq6666qqr/t+xjW3uZ5v72eZfyzb/0STx3CTxQJL415KEJCRxP0kASEISkpAEgCQkERFIQhIRQUQQEZRSiAgiglIKpRRKKUQEEUFEIImIQBIviG1sYxvb2MY2trmfbe5nG9vczza2sQ2AbQBuuukm7rvvvlu56qqrrrrqqquuuuqqq/6/onLVVVddddX/S5IAsM2/lm0k8cLYRhIAkvivIIkHksS/RBIAknggSUhCEhGBJCKCiEASEUFEEBGUUogIIoKIICKICCKCiEAS95OEJJ6bbQBsY5v72cY2trGNbWxjGwDb2OZ+trGNbWwDcN999z2dq/7TnDlz5kEA991339O56qqrrrrqqquuuuqq/3kIrrrqqquu+n/JNrZ5YWzz30kSz00SDySJF0YSL4gkHkgSkpCEJCQhCUlIQhIRQUQQEUQEEUFEUEohIogIIoKIICKICCQhCUlIAkASALaxDYBtbGMb29jGNraxDYBtbANgmweyzQPZ5uabb+bs2bPP4Kr/NNdcc82DAc6ePfsMrrrqqquuuuqqq6666n8egquuuuqqq64CbGObf4ltXhDbPDdJ/FeSxHOThCQkASAJSdxPEpKQhCQkASAJSUgiIogIJBERRAQRQUQQEUQEEUEphYggIogIJBERSEISkpDEc7ONbQBsYxvb2MY2trHN/WxzP9vY5n62sQ2Aba66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ACQhiQc96EG82qu9GidPnuS+++679Ud+5Ec++zM/8zNfh6v+R7jmmmseDPAP//APv81VV1111VVXXXXVVVf9z0blqquuuuqq//fuu+++Wz/rsz7rdb7pm77p6W/+5m+OJH75l38Z20jCNpJ4YWwjiRfGNpL497CNJP4rSAJAEveTBIAk7icJSQBIAkAStpEEgCQAJCEJSUhCEpIAkMT29ja33HILs9mM++6779Z/+Id/+O2v//qvfx+u+h/lmmuueTDAfffddytXXXXVVVddddVVV131PxvBVVddddVVVwH33XffrV//9V//PgBv9mZvxpu8yZvwQLZ5QWxzP9s8kG0eyDb/00niuUlCEg8kCUncTxIAkgCQBIAkJCEJSQBIQhKSkETXdTz4wQ/mEY94BLPZjPvuu+/Wr//6r3+fr//6r38frrrqqquuuuqqq6666qqr/u2oXHXVVVddddUz/dZv/dZ3A3z4h3/4d73pm74pp06d4od+6IeQBIBtnh9JPDfbSOI/km0k8T+RJAAkASAJ20hCEgCSkIQkJCGJUgonTpxgY2MDgPvuu+/W3/qt3/ruH/3RH/0crvof68yZMw8GuO+++27lqquuuuqqq6666qqr/mejctVVV1111VUP8Fu/9Vvf/Q//8A+//U3f9E1Pf6VXeiUe8YhH8A3f8A3s7u7yL7GNJJ6bbSRxP9tI4l/DNpL4n0gSDyQJAEkASEISkpCEJCQxn8/Z2NgA4L777rv1t37rt777R3/0Rz+Hq/7Hu+aaax4McPbs2Wdw1VVXXXXVVVddddVV/7MRXHXVVVddddVzue+++279kA/5kIfcd999t548eZIP+7AP4w3f8A15YWxzP9sA2OYFsc2Lyjb/lWzzbyGJ+0nigSRhm2EYmKaJiCAiuO+++279kR/5kc/+kA/5kIf86I/+6Odw1VVXXXXVVVddddVVV131H4vKVVddddVVVz0f9913362f9Vmf9Tqv/dqv/V7v9E7v9Nlv9EZvxCu8wivw53/+5/zar/0akgCwDYAkAGwjiedmG0k8kG0AJPGC2EYS/x1scz/b2OZfIon7SQIgMzk8POTw8BCA++6771aA3/qt3/ruH/3RH/0crvpf58yZMw8GuO+++27lqquuuuqqq6666qqr/mejctVVV1111VUvwH333Xfrj/7oj37Ob//2b3/P53zO5/zWNddc8+A3fMM35BVe4RX4tV/7Nf7iL/4CSTw/tpGEbSQBYBtJPDfbAEjifrYBkMR/N9v8a0himiYODw85PDyktcb97rvvvlt/9Ed/9HN+67d+67u56n+ta6655sEAZ8+evZWrrrrqqquuuuqqq676n43KVVddddVVV/0L7rvvvls/67M+63Ve+7Vf+71e53Ve572vueaaB7/jO74jb/AGb8Bf/MVf8Bu/8RsA2EYS/1a2uZ8k/rPYxjb/FrZ5QVprHB4eslwumaaJ+9133323/tZv/dZ3/9Zv/dZ3nz179hlcddVVV1111VVXXXXVVVf910EPetCDuOqqq6666qoX1TXXXPPg137t136v13md13nva6655sEAFy9e5GlPexp/+Zd/ya233kpEEBFIIiKQREQgCUlEBJKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJgIhAEpKQhCQkERFIIiKQREQQEZRSiAhKKdRaqbVSa6XWSt/3dF3HbDaj73tmsxnz+ZzZbMZsNmM2m9H3PZnJOI5kJve77777bv2t3/qt7/6Hf/iH3/mHf/iH3+aq/1N+4id+wgBv93ZvJ6666qqrrrrqqquuuup/NvSgBz2Iq6666qqrrvrXuuaaax78Yi/2Yq/9Oq/zOu915syZB19zzTUPBrh48SK33norf/3Xf80znvEMIgJJRASSkIQkIgJJSEISkpCEJCQhCUlIQhKSkIQkJCEJSQBIQhKSkIQkIgJJSEISkogIIgJJRAQRQSmFiKCUQq2VUgq1Vrquo+s6+r6n73tmsxmz2YzFYsHm5iZd1yGJB7rvvvtu/a3f+q3vPnv27DN+67d+67u56v+sn/iJnzDA273d24mrrrrqqquuuuqqq676n43KVVddddVVV/0b3Hfffbfed9993/1bv/Vb333NNdc8+LVf+7Xf63Ve53Xe+5prrnnwiRMneJmXeRl2d3e59dZbue2227h06RK3334797ONJP49bCOJ58c2knhutpHE/WxzP9s8UN/3bG5ucuzYMTY3N1ksFjy3++6779bf+q3f+u5/+Id/+J1/+Id/+G2u+j/vmmuueTDAfffddytXXXXVVVddddVVV131Px+Vq6666qqrrvp3uu+++2790R/90c/50R/90c+55pprHvzar/3a7/XiL/7ir/1iL/Zir/3SL/3SvPRLvzQAly5d4tKlS1y6dInbb7+dS5cuceedd/KvZRsASbwwtpHEv2SxWLC1tcXp06eJCE6cOMHx48d5fu67775bf+u3fuu7AX70R3/0c7jq/50zZ848GODs2bO3ctVVV1111VVXXXXVVf/zUbnqqquuuuqq/0D33XffrT/6oz/6OT/6oz/6Oddcc82DX+zFXuy1X+zFXuy1XuzFXuy1r7nmmgcfO3YMgJd4iZcA4NKlSwDs7e2xv7/PHXfcgST29vaQxP7+PgcHB9jmfpJ4UW1ubiKJra0ttre32dzcRBLXXHMNkjh9+jQvyN///d//tiT+/u///rf/4R/+4Xf+4R/+4be56v+9a6655sEA9913361cddVVV1111VVXXXXV/3xUrrrqqquuuuo/yX333Xfrfffd992/9Vu/9d0A11xzzYNf7MVe7LXPnDnzoBd/8Rd/7TNnzjwY4JprrnnwsWPHAHjsYx/LC7K/v88LIon7bW1t8a9x33333QrwD//wD79933333foP//APv/MP//APv81VV1111VVXXXXVVVddddX/flSuuuqqq6666r/Ifffdd+t999333QA/+qM/+jkA11xzzYMBXuzFXuy1AV7sxV7stQCuueaaB585c+bBANdcc82DAba3t/nXuu+++24FOHv27K333Xffrffdd9+tAGfPnn3Gfffdd+s//MM//DZXXfWvcObMmQcB3Hfffbdy1VVXXXXVVVddddVV//NRueqqq6666qr/Rvfdd9+tAPfdd993A/zWb/3Wd/MCXHPNNQ/mmWxbkngA25ak++6771auuuo/yTXXXPNggLNnzz6Dq6666qqrrrrqqquu+p+PylVXXXXVVVf9L3HffffdylVX/Te75pprHsxVV1111VVXXXXVVVf970Hlqquuuuqqq6666qoX2ZkzZx4M8A//8A+/zVVXXXXVVVddddVVV/3PR+Wqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVS+ya6655sEA9913361cddVVV1111VVXXXXV/3xUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV131IrnmmmseDHD27NlncNVVV1111VVXXXXVVf87ULnqqquuuuqqq6666kVy5syZBwPcd999t3LVVVddddVVV1111VX/O1C56qqrrrrqqquuuupFcs011zwY4L777ruVq6666qqrrrrqqquu+t+BylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrXiRnzpx5EMB99933dK666qqrrrrqqquuuup/BypXXXXVVVddddVVV71IrrnmmgcDnD179hlcddVVV1111VVXXXXV/w5Urrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV131InmxF3ux1wb4h3/4h9/mqquuuuqqq6666qqr/negctVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqF8k111zzYID77rvvVq666qqrrrrqqquuuup/BypXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrvoXXXPNNQ8GuO+++27lqquuuuqqq6666qqr/vegctVVV1111VVXXXXVv+jMmTMPBjh79uytXHXVVVddddVVV1111f8eVK666qqrrrrqqquu+hddc801Dwa47777buWqq6666qqrrrrqqqv+96By1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qp/0ZkzZx4EcN99993KVVddddVVV1111VVX/e9B5aqrrrrqqquuuuqqf9E111zzYICzZ88+g6uuuuqqq6666qqrrvrfg8pVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq/5F11xzzYMB7rvvvlu56qqrrrrqqquuuuqq/z2oXHXVVVddddVVV131Lzpz5syDAc6ePXsrV1111VVXXXXVVVdd9b8Hlauuuuqqq6666qqr/kXXXHPNgwHuu+++W7nqqquuuuqqq6666qr/PahcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqFuuaaax4McN99993KVVddddVVV1111VVX/e9C5aqrrrrqqquuuuqqF+rMmTMPBjh79uytXHXVVVddddVVV1111f8uVK666qqrrrrqqquueqGuueaaBwPcd999t3LVVVddddVVV1111VX/u1C56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddULdebMmQcB3Hfffbdy1VVXXXXVVVddddVV/7tQueqqq6666qqrrrrqhbrmmmseDHD27NlncNVVV1111VVXXXXVVf+7ULnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111Qt1zTXXPBjgvvvuu5Wrrrrqqquuuuqqq67634XKVVddddVVV1111VUv1JkzZx4McPbs2Vu56qqrrrrqqquuuuqq/12oXHXVVVddddVVV131Ql1zzTUP5qqrrrrqqquuuuqqq/53onLVVVddddVVV1111Yvkvvvuu5Wrrrrqqquuuuqqq67634XKVVddddVVV1111VUv0JkzZx4EcN99993KVVddddVVV1111VVX/e9D5aqrrrrqqquuuuqqF+iaa655MMDZs2dv5aqrrrrqqquuuuqqq/73oXLVVVddddVVV1111Qt0zTXXPBjgvvvuu5Wrrrrqqquuuuqqq67634fKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqqteoDNnzjwY4L777ruVq6666qqrrrrqqquu+t+HylVXXXXVVVddddVVL9A111zzYICzZ88+g6uuuuqqq6666qqrrvrfh8pVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq16gM2fOPBjgvvvuu5Wrrrrqqquuuuqqq67634fKVVddddVVV1111VUv0DXXXPNggLNnz97KVVddddVVV1111VVX/e9D5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVL9A111zzYID77rvvVq666qqrrrrqqquuuup/HypXXXXVVVddddVVVz1f11xzzYO56qqrrrrqqquuuuqq/92oXHXVVVddddVVV131fJ05c+bBAP/wD//w21x11VVXXXXVVVddddX/TlSuuuqqq6666qqrrnq+rrnmmgcD3Hfffbdy1VVXXXXVVVddddVV/ztRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+iHD9+nKuuuuqqq6666qqrnu11Xud13vsVX/EV3+qVXumV3vqaa6558NHR0e6ZM2cefPbs2WccHh7uctVVV1111VVXXXXVVf97ULnqqquuuuqqq6666jm8zuu8znu92Iu92GvzTC/2Yi/22i/2Yi/22v/wD//wO/fdd9+tXHXVVVddddVVV1111f8eVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqufwW7/1W9/z93//97/Nczl79uytXHXVVVddddVVV1111f8u6EEPehBXXXXVVVddddVVV1111VVXXXXVVVddddX/SVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V/GPaLD3FKg1uFIAAAAASUVORK5CYII=) +```js +// Symmetrically revolve around a path. + +profile001 = startSketchOn(XY) + |> startProfileAt([0, 0], %) + |> line(end = [0, 20], tag = $revolveAxis) + |> line(end = [20, 0]) + +sketch001 = startSketchOn(XY) + |> circle(center = [-10, 10], radius = 4) + |> revolve(angle = 90, axis = revolveAxis, symmetric = true) +``` + +![Rendered example of std::revolve 11](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADDvklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuur/jGuuuebBAPfdd9+tXHXVVVddddVVV1111VVXAZWrrrrqqquuuup/rWuuuebBr/3ar/1eL/7iL/7aL/Zi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PMB999136zXXXPPg++6771auuuqq/1He7u3eTlx11VVXXXXVfyyCq6666qqrrrqKruteSxKSeGEk8S+RxL+HJCTxQJKQxH8USTw3SQBIAkASkpCEJCQhCUlEBJKICCKCiKCUQimFUgqlFGqt1FoppVBKodZKKYWIICKICCQhifvZxjaZSWbSWqO1RmuN1hrTNNFao7VGa43WGq01MpPMJDPJTGyTmezv77O3t8ddd93FnXfeya/92q+9zqVLl36b/2de53Ve573+4R/+4bd5prNnz9762q/92u/FVVddddVVV1111VX/H1C56qqrrrrqqqvouu61JSEJSUhCEpL4jyaJF0QSz00Sz48kJCEJSUjiP4okHkgSkpCEJCQREUQEEUEphVIKpRRKKdRaKaVQa6XWSq2VUgqlFCICSUgCwDYAtrFNZpKZtNZordFao7VGa43WGq01Wmu01shMWmtkJplJZpKZZCa2yUwyk9YaT3jCEz57d3f3t/l/6DM/8zNf58Ve7MVe+3M/93Nf+x/+4R9++zM/8zNfh6uuuuqqq6666qqr/r+gctVVV1111VVX0XXdgyXx/EgCQBL/mSTxQJKQxHOThCSeH0k8kCT+NSRxP0lIQhKSkIQkIoKIICKICEoplFIopVBKodZKKYVaK6UUSimUUiilUEpBEpK4n20AbJOZZCatNVprtNZordFao7VGa43WGplJZtJaIzNprZGZZCaZSWaSmWQmmcnZs2d/+9Zbb/0crrrqqquuuuqqq6666v8fgquuuuqqq676fy4z31sSkpCEJP69JPFAknhhJPFAknhukpDEv0QSLypJAEjifpIAkIQkJCGJiCAikEREEBGUUiilUEqhlEKtlVIKtVZKKdRaqbVSSqGUQkQQEUQEkrifbTKTzCQzyUxaa7TWaK3RWqO1RmuN1hqtNVprZCaZSWaSmdgmM8lMMpPM5JprruH2229/H6666qqrrrrqqquuuur/JypXXXXVVVdd9f9crRVJSOJ+kpCEJAAk8UCSkIQkJPHvIYn7SUISDyQJSfxXkgSAJCQhCUlIIiKICCKCiCAiKKVQSqGUQq2VWiu1VkoplFIopRARRASSuJ9tbGMb22QmrTVaa7TWaK3RWmOaJlprtNZordFaIzPJTDIT22QmmYltMpPMpLXGb/7mb77OfffddytXXXXVVVddddVV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JplJZmIb29jGNraxjW1sA2Cb53bTTTdx9uzZZ3DVVVddddVVV1111VVXvagIrrrqqquuuuoqbPPC2Ob5sc1/Fkm8qCTxQJKQxANJQhIAkpCEJCQREUgiIogIIoKIICKICCKCiCAikIQkACQhifvZxjaZiW0yk8zENpmJbWxjG9vYxjYAtrENgG0AbGMb29gG4L777ruVq6666qqrrrrqqquuuupFRXDVVVddddVVVz1ftvnfRBKSkMQDSeKBJCEJSUgiIpBERCCJiCAiiAgigoggIogIIgJJSEISz802trFNZmIb22QmtslMbGMb29jGNra5n20AbPNAtjl27Bhnz569lauuuuqqq6666qqrrrrqRUVw1VVXXXXVVf9P2cY2Lyrb2AbANrZ5brb5jyCJ/0iSkIQk7icJSUhCEpKICCQREUQEEUEphYhAEpKICCQhCUnczzYAtrGNbTKTzMQ2trGNbWxjm/vZxjYviG1sc9VVV1111VVXXXXVVVf9qxFcddVVV1111VX/Krb530ISz00SkpCEJCQREUQEEUFEEBFEBBGBJCKCiEASkpCEJJ6bbWxjG9vYxjaZSWZiG9vYxja2sc39bANgGwDb2AZgZ2eHq6666qqrrrrqqquuuupfjeCqq6666qqr/p+yDYBtAGxzP9sA2OZFZZt/LUn8Z5EEgCTuJwlJSEISkpCEJCQhiYggIogIIoKIICKQREQgiefHNraxTWZim8wkM7GNbWxjG9vYxjYAtrmfbZ4f2wDcd999t3LVVVddddVVV1111VVXvaioXHXVVVddddX/QxFxqyRsA2Cb+9lGEv9eknhukvjvIAlJ3E8SAJKQhCQigoggIogIIoKIICKQREQgCUlIQhLPzTa2sU1mYhvb2MY2trGNbe5nGwDbPJBt7mebnZ0drrrqqquuuuqqq6666qp/NYKrrrrqqquu+n/KNs/NNs/NNv+VJPHvJYnnRxKSAJCEJCQhCUlIQhKSkIQkJBERSEISAJJ4INvYBsA2trGNbWxjG9vYxjYAtrHNA9nmqquuuuqqq6666qqrrvoPRXDVVVddddVV/09l5q22sc2/l23+p5DE/SRxP0ncTxKSkIQkJCGJiCAiiAgigoggIpCEJCQhiRfENraxjW1sYxvb2MY2trHN/WxjmweyDYBtrrrqqquuuuqqq6666qp/F4Krrrrq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V1111VVXXXXV/0oR8Yz9/f2H9H3/dIBaK+M4cj9JPJAknltEkJlEBLa5n20eyDb/HrYBuOaaa3id13kdAP7hH/7htz/zMz/zdbjqqquuuuqqq6666qqr/jNRueqqq6666qqr/teKiFuHYXgI8HSAWivjOCIJSQBIQhKSeH4iAttkJhEBQGYSEdzPNv8emcnDHvYwXuVVXgWA3/qt3/rur//6r38frrrqqquuuuqqq6666qr/bFSuuuqqq6666qr/1SLi1mEYHgI8HaDWyjiOvDCSsI1tMhOAiCAziQgAbHO/zCQi+Ld6yZd8SV7qpV4KgB/5kR/57B/90R/9HK666qqrrrrqqquuuuqq/wpUrrrqqquuuuqq//Ui4tZhGB5i+7eAB9sGQBKSkMQLEhHYJjOJCDKTiCAziQjuZ5t/izd6ozfiuuuuA+Drv/7r3+e3fuu3vpurrrrqqquuuuqqq6666r8Klauuuuqqq6666v+EiLh1HMfXBn677/sHA0jiBZHEA0UEmUlEYBsA29wvM4kIXlRbW1u85mu+Jtdddx333XffrV//9V//Pv/wD//w21x11VVXXXXVVVddddVV/5WoXHXVVVddddVV/2dExDPGcXwd27/V9/2DeQEk8fxEBLbJTCKCzCQiuF9mEhH8S66//nre7M3eDID77rvv1q//+q9/n3/4h3/4ba666qqrrrrqqquuuuqq/2pUrrrqqquuuuqq/1Mi4tZpml4H+C3gwTyTJO4niRcmIshMIoLMJCK4n21emJd7uZfj5V7u5QD4h3/4h9/+zM/8zNfhqquuuuqqq6666qqrrvrvQuWqq6666qqrrvo/JyJunabpdYDvsv3atvnXiggyk4ggM4kIADKTiOC5bW9v87qv+7rccMMNAPzIj/zIZ//oj/7o53DVVVddddVVV1111VVX/XeiHD9+nKuuuuqqq6666v8eSbuttd/JzN2IeG3bAEjifpKQBIAknpskACQBIIn7SeJ+N954I2/yJm/C6dOnue+++279ki/5krf57d/+7e/hqquuuuqqq6666qqrrvrvRjl+/DhXXXXVVVddddX/TZJ2M/PWaZp2I+K1bSMJSdxPEpIAkMRzkwSAJAAkcT9JvOIrviKv//qvz2w247777rv1sz7rs17n1ltv/Wuuuuqqq6666qqrrrrqqv8JqFx11VVXXXXVVf+nRcQzgM9ZLpfM5/PP5vmwTa2VFyQiyEwigswkIrjpppt4ozd6I3Z2dgD4kR/5kc/+0R/90c/hqquuuuqqq6666qqrrvqfhMpVV1111VVXXfX/Qinlcw4PD9nY2Phs2wDY5oFKKbwgEUFmcuLECV78xV+cV33VVwXgvvvuu/Xrv/7r3+cf/uEffpurrrrqqquuuuqqq6666n8aKlddddVVV1111f8bfd9/zjiO32P7t2w/2DYvqmPHjvFSL/VSvPqrvzr3+5Ef+ZHP/tEf/dHP4aqrrrrqqquuuuqqq676n4rKVVddddVVV131/4qkW0+cOPHeXdf99oULF7ANgG1s80C2OX78OC/zMi/Da73Wa3G/f/iHf/jtr//6r3+f++6771auuuqqq6666qqrrrrqqv/JqFx11VVXXXXVVf/vnDt37nfe4R3e4bslvfdP//RPY5vZbMb9jh8/ziu90ivxsIc9jIc85CHc77777rv167/+69/nH/7hH36bq6666qqrrrrqqquuuup/A/SgBz2Iq6666qqrrrrq/59rrrnmwR/+4R/+XWfOnHnt3/3d36XWSq2VN3/zN+e5/ciP/Mhn//Zv//b33Hfffbdy1VVXXXXVVVddddVVV/1vgh70oAdx1VVXXXXVVVf9//WO7/iOn/XiL/7ir/1iL/Zir80z3XfffbeePXv21t/6rd/67t/6rd/6Hq666qqrrrrqqquuuuqq/63Qgx70IK666qqrrrrqqqvOnDnzIEm67777buWqq6666qqrrrrqqquu+r8CPehBD+Kqq6666qqrrrrqqquuuuqqq6666qqrrvo/icpVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8V/wiBQeSVqVOSDwAAAABJRU5ErkJggg==) + +```js +// Bidirectional revolve around a path. + +profile001 = startSketchOn(XY) + |> startProfileAt([0, 0], %) + |> line(end = [0, 20], tag = $revolveAxis) + |> line(end = [20, 0]) + +sketch001 = startSketchOn(XY) + |> circle(center = [-10, 10], radius = 4) + |> revolve(angle = 90, axis = revolveAxis, bidirectionalAngle = 50) +``` + +![Rendered example of std::revolve 12](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADvDElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVV/yEkPVgSEfFgSZRSHgxQa32QJCRRSnmwJO5Xa30wwMMf/nDe6q3e6rXX6/Vvf+ZnfubrcNVVV1111VVXXXXVVf8xqFx11VVXXXXVVVdd9S+KiAdHxINrrQ/uuu5BtdYH933/YICNjY3XBpDE/SQBIIkHksTz89qv/do8/OEPB3htrrrqqquuuuqqq6666j8Olauuuuqqq6666qqrLouIB5dSHjybzV4rIlgsFq+9sbHx2gCSkASAJCQBIAkASdxPEg8kiRdEEgAnT57kfi/2Yi/22v/wD//w21x11VVXXXXVVVddddW/H5Wrrrrqqquuuuqq/2ckPbiU8uD5fP5afd8/uOu6B29sbLy2JCQhCUlIAkASAJIAkASAJO4niQeSxAsiied24sQJrrrqqquuuuqqq6666j8Blauuuuqqq6666qr/wyQ9uJTy4MVi8VqLxeK1Nzc3XxsgIpCEJCQhCQBJSAJAEgCSAJDE/STxQJJ4bpL4t7jmmmse/A//8A9cddVVV1111VVXXXXVfwAqV1111VVXXXXVVf+HRMSD5/P5e9Va2dnZee+u6x4cEUhCEpKQhCQkASAJAElI4n6SAJDE/STxQJJ4bpL41zp+/DhXXXXVVVddddVVV131n4DKVVddddVVV1111f9iEfHgxWLxXqUUTp8+/dkAkogIJCEJSUgCQBKSAJAEgCQAJAEgiftJ4n6SeCBJPD+S+Lf60z/9U86cOfMgrrrqqquuuuqqq6666j8Glauuuuqqq6666qr/RSQ9uO/7157NZg86derUZwNEBBGBJCQhCUlIQhIAkpAEgCQAJHE/SQBI4n6SeCBJPDdJPD+S+Le4cOECV1111VVXXXXVVVdd9R+IylVXXXXVVVddddX/cBHx4I2Njffa2Nh47c3NzdeOCCQREUhCEpKQhCQAJCEJAElIAkAS95MEgCTuJ4kHksQDSeK5SeJfIokX5NixYwBcuHABgGuuuebBXHXVVVddddVVV1111X8MKlddddVVV1111VX/A0XEgzc3N99rZ2fnvWez2YMlERFIIiKQhCQkASAJSUgCQBIAkgCQBIAk7ieJ+0nifpJ4IEk8kCReEEn8a0nifk996lN57GMfy1VXXXXVVVddddVVV/0HoXLVVVddddVVV131P0Qp5cEbGxvvdfr06c+WREQgiYhAEpKQhCQkIQkASUgCQBIAkgCQBIAk7icJAEk8kCTuJ4nnJonnJokXhSReEEnc7+TJk1xzzTUP5qqrrrrqqquuuuqqq/5jULnqqquuuuqqq676bxQRD97c3HyvM2fOfDZARBARSEISkpCEJCQhCUkASEISAJIAkASAJAAkcT9JAEjigSRxP0k8kCSemyReGEn8axw7dgyAixcvctVVV1111VVXXXXVVf/BqFx11VVXXXXVVVf9F4uIB29sbLzXsWPH3ns2mz04IpBERCAJSUQEAJKQhCQkASAJSQBIAkASAJIAkMT9JHE/SdxPEveTxANJ4rlJ4vmRxL+GJB4oIrjfhQsXuOqqq6666qqrrrrqqv9AVK666qqrrrrqqqv+iywWi886duzYay8Wi9eOCCKCiEASkpCEJCQhCUlIQhIAkgCQBIAkACQBIAkASQBI4n6SuJ8kHkgSDySJB5LE8yOJF0QSLypJPNCZM2cezFVXXXXVVVddddVVV/3HoHLVVVddddVVV131nygiHry5ufleJ0+e/OxSChFBRBARSEISkpCEJCQhCUkASAJAEpIAkASAJAAkcT9JAEjifpK4nyTuJ4kHksQDSeK5SeIFkcS/xc7ODgAXLlzgqquuuuqqq6666qqr/oNRueqqq6666qqrrvpP0HXdZz3ykY9876OjowdHBBFBRCCJiEASkpCEJCQBIAlJAEhCEgCSAJAEgCQAJAEgiftJ4n6SuJ8k7ieJB5LEA0nigSTx/EjihZHEv0QS97t48SJXXXXVVVddddVVV131H4jKVVddddVVV1111X+QiHjw5ubme508efKzSyms12u6riMikIQkJCEJSUhCEpKQBIAkJAEgCQBJAEgCQBIAkgCQxP0kcT9J3E8S95PE/STxQJJ4IEk8N0m8IJL415LEVVddddVVV1111VVX/SehctVVV1111VVXXfXvFBEP3tzcfK9Tp059dimFiCAikEREIAlJSEISkpAEgCQkASAJSQBIAkASAJIAkASAJO4nCQBJ3E8S95PE/SRxP0k8kCTuJ4nnJonnRxIviCT+JZK46qqrrrrqqquuuuqq/yRUrrrqqquuuuqqq/6NIuLBx48f/6xjx469d0QQEUQEEYEkJCEJSUhCEpKQBIAkJAEgCUkASAJAEgCSAJAEgCTuJwkASdxPEveTxP0kcT9J3E8SDySJB5LEA0ni+ZHEi0oS94sIHuiaa655MFddddVVV1111VVXXfUfg8pVV1111VVXXXXVv1Kt9bWvueaa75rNZg+OCEopSCIikEREIAlJSAJAEpKQBIAkJAEgCUkASAJAEgCSAJDE/SQBIIn7SQJAEveTxP0kcT9J3E8S95PEA0nigSTxQJJ4fiRx1VVXXXXVVVddddVV/0NQueqqq6666qqrrnoRzefzzzp58uR7z2azB5dSiAgiAklEBJKQhCQkIQlJAEhCEgCSkASAJAAkASAJSdxPEgCSAJAEgCTuJwkASdxPEveTxP0kASCJ+0nigSRxP0k8kCQeSBLPTRL/Gjs7OwBcvHiRCxcucNVVV1111VVXXXXVVf+BqFx11VVXXXXVVVf9C+bz+WedPHnyvWez2YNLKUQEEYEkIgJJSEISkpCEJAAkIQlJAEhCEgCSAJAEgCQAJAEgCQBJAEjifpIAkMT9JAEgiftJAkAS95PE/SRxP0ncTxL3k8T9JPFAknhukviXSOJ+krifJACuueaaB9933323ctVVV1111VVXXXXVVf8+VK666qqrrrrqqqtegFrra19zzTXfNZvNHlxKISKICCQREUhCEpKQhCQkIQkASUgCQBKSAJAEgCQkASAJAEkASOJ+kgCQBIAkACRxP0kASOJ+kgCQxP0kASCJ+0kCQBL3k8T9JHE/SdxPEg8kiedHEi+MJH7t136Nq6666qqrrrrqqquu+k9A5aqrrrrqqquuuuq5RMSDT58+/V2bm5uvXUohIogIJBERSEISkpCEJCQhCQBJSEISAJIAkIQkACQBIAkASQBIAkASAJIAkASAJO4nCQBJAEjifpIAkASAJAAkcT9JAEgCQBL3kwSAJO4niftJ4n6SeCBJPD+SeH4ighMnTnDhwgUA7rvvvlu56qqrrrrqqquuuuqq/xhUrrrqqquuuuqqq54pIh586tSp79rc3HztUgoRQUQQEUgiIpCEJCQhCUlIAkASkpAEgCQkASAJAEkASAJAEpK4nyQkcT9JAEgCQBIAkgCQBIAkACRxP0kASAJAEgCSAJAEgCQAJAEgCQBJ3E8SAJK4nyTuJ4kHksRzk8TzI4kHuuaaax7MVVddddVVV1111VVX/cegctVVV1111VVX/b8XEQ/e3Nx8r5MnT352rZWIICKICCQREUhCEpKQhCQkASAJSUgCQBKSAJAEgCQkASAJAEkASAJAEgCSAJAEgCQAJAEgCQBJAEgCQBIAkgCQBIAkACQBIAkASQBIQhIAkgCQBIAkACRxP0kASAJAEveTxANJ4l8SEVx11VVXXXXVVVddddV/EipXXXXVVVddddX/a5ubm5916tSpz661EhGUUpBERCCJiEASkpCEJAAkIQlJSAJAEpIAkASAJCQBIAkASQBIAkASAJIAkASAJAAkASAJAElIAkASAJIAkASAJCQBIAkASQBIQhIAkgCQhCQAJAEgCUkASAJAEgCSAJAEgCTuJ4kHksQLs7W1xXK55OLFi9zvzJkzD77vvvtu5aqrrrrqqquuuuqqq/59qFx11VVXXXXVVf8v1Vpf+8yZM981n88fXEohIogIIgJJSEISEYEkJAEgCUlIQhIAkpAEgCQAJCEJAEkASAJAEgCSkASAJAAkASAJAEkASAJAEgCSkASAJAAkIQkASUgCQBIAkpCEJAAkIQkASUgCQBKSAJCEJAAkASAJSQBIAkASAJK4nyQeSBLPT0Rw1VVXXXXVVVddddVV/0moXHXVVVddddVV/69ExINPnTr1XZubm69dSiEiiAgigohAEpKQhCQkIQlJSEISAJKQhCQAJAEgCUkASAJAEgCSkASAJAAkASAJAEkASEISAJIAkASAJCQBIAlJAEhCEgCSkASAJCQhCQBJSEISAJKQhCQkASAJSUgCQBKSkASAJCQBIAkASQBIAkASDySJ5yciuOqqq6666qqrrrrqqv8kVK666qqrrrrqqv83Njc3P+v06dOfXUqhlEJEEBFIIiKQhCQkIQlJSEISAJKQhCQAJCEJAElIAkASAJIAkIQkACQBIAkASQBIQhIAkgCQhCQAJAEgCUkASEISkgCQhCQkASAJSUhCEgCSkIQkJCEJSUhCEgCSkIQkJCEJSQBIQhKSkASAJCQBIAkASdxPEg8kiQeKCCQBIImrrrrqqquuuuqqq676D0Tlqquuuuqqq676Py8iHnz99df/Vt/3Dy6lEBFEBBGBJCQREUhCEpKQBIAkJCEJSQBIQhIAkgCQhCQAJAEgCUkASAJAEgCSkASAJAAkIQkASQBIQhIAkpCEJAAkIQlJAEhCEpKQhCQkIQlJSEISkgCICCQhCUlIQhKSkIQkJCEJSUhCEgCSkIQkJAEgCUkASAJAEveTxPMTEVx11VVXXXXVVVddddV/EipXXXXVVVddddX/aVtbW5916tSpzy6lUEohIogIJBERSEISkpCEJCQhCUlIAkASkgCQhCQA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uup/CdvvLQlJSEISDySJ+0niP5oknh9JSEISz48kJPHcJHE/SfxLJHE/SUhCEpKQhCQkIQlJRAQRQSmFUgoRQSmFUgqlFEoplFIopVBrpZRCRFBKQRKSeKDMBMA2mUlmkplkJq01MpPWGq01Wmu01shMMpPMJDPJTDIT29gmM8lMMpO77rrrs//hH/7ht7nqqquuuuqqq6666qqr/iMRXHXVVVddddX/EqUUJPEfTRL/Ekk8N0lI4kUlCUk8kCT+JZJ4YSQhCUlIIiKICCKCiCAiiAhKKZRSKKVQSqGUQq2VUgqlFEoplFKICCICSUjigTIT22QmmUlrjdYamUlrjcwkM8lMMpPMJDPJTGyTmWQmmUlmkpm01njwgx/823/0R3/0OVz1LNdcc82DAe67775bueqqq6666qqrrrrqqn87gquuuuqqq676X6KU8lqSkIQkACQhiQeSxAsjiX8PSUji30oSL4wkACTx3CQhCUlIQhIAkpBERCCJiEASEUFEUEqhlEIphVIKpRRqrZRSKKVQSiEiiAgigohAEgCSsI1tbJOZZCatNTKTzKS1RmuN1hqtNVprZCaZSWaSmWQmtrFNZpKZZCbXXnstv//7v/85XPUczpw582Cuuuqqq6666qqrrrrq34/KVVddddVVV/0v0ff9a0tCEgCSuJ8k/itI4l8iCUn8a0niBZHE8yMJSUhCEpKICCQREUQEpRRKKZRSKKVQSqHWSimFUgq1VkopRAQRgSQeKDOxjW0yk8wkM8lMWmu01mitkZlkJplJZpKZZCaZiW0yk8wkM7FNZrK5uclqtfrsf/iHf/htrnq+zp49eytXXXXVVVddddVVV131b0dw1VVXXXXVVf9LSEISL4wk/jNIQhLPjyQkIQlJ3E8SkpDEc5PE/STxgkjifpKQhCQkIQlJSEISkogIJBERlFKICCKCiKCUQimFWiulFEoplFIopRARRAQRgSQkIYn72SYzsU1mkpm01mit0VojM2mt0VqjtUZmkplkJrbJTGxjm8wkM8lMHvWoR936oz/6o5/DVc/jmmuueTDAfffddytXXXXVVVddddVVV131b0flqquuuuqqq/6XqLU+GEASkvivIonnJglJSOJFIYkXhSQAJHE/STw/kgCQhCQiAklEBBFBRFBKoZRCKYVSCqUUSinUWqm1UkohIiilEBE8kG1sYxvbZCaZSWuN1hqZSWaSmbTWyEwyk8wkM8lMMpPMxDaZSWZim8zkYQ97GD/zMz/zPlx11VVXXXXVVVddddVV/5moXHXVVVddddX/Apn52pKQxANJ4j+TJJ6bJP4tJPFAknhhJHE/SUhCEpKQhCQkIYmIQBIRQURQSiEiiAhKKZRSKKVQa6XWSimFUgqlFEopRASSkIRtbHM/22QmmUlrjcwkM2mt0VqjtUZmkplkJplJZpKZ2CYzyUxsk5lkJpnJdddd99v/8A//8NtcddVVV1111VVXXXXVVf+ZCK666qqrrrrqf4FSyoMlIYn7SQJAEgCSeFFJ4l9LEpL495DE8yOJ+0nifpJ4bpKQhCQkIQlJRAQRQUQQEZRSKKVQSqHWSimFUgqlFEoplFIopVBKISKICCQhCQDb2CYzsU1mkpm01mitkZlkJplJZtJaIzPJTDIT22QmtrFNZmKbzOTN3/zN+fqv//r34aoX6MyZMw8CuO+++27lqquuuuqqq6666qqr/u2oXHXVVVddddX/AhHxIEkASEIS/5Uk8cJIQhKSkIQkXhSS+JdIQhKSkASAJCQhiYhAEpKICCKCiCAiKKVQSqGUQq2VWiulFEoplFIopRARSOJ+trmfbWyTmWQmmUlm0lqjtUZrjcyktUZmkpnYxjaZiW1sk5nYJjO59tpredKTnvTd9913361cddVVV1111VVXXXXVVf/ZCK666qqrrrrqf4FSyoMBJPGikoQk/r0k8fxIQhKSeH4kIYnnJonnRxL3k8TzIwlJSAIgIpBERBARRAQRQSmFUgqlFEoplFIopVBKoZRCKYVSChFBRBARRAT3s41tMpPMJDPJTFprtNbITDKTzKS1RmZim8wkM8lMbGObzMQ2mUlm8rIv+7L86I/+6Odw1Qt1zTXXPBjg7Nmzz+Cqq6666qqrrrrqqqv+7ahcddVVV1111f8CpZQHS+K/miSemyQk8aKSxHOTxP0kcT9J3E8SkpCEJCQBIAlJRASSiAgigoggIiilEBGUUiilUEqhlEIphVIKpRRKKUQEEUFEAGAbSdwvM7FNZtJao7VGZpKZtNZorZGZZCaZSWaSmdjGNplJZmKbzCQzufbaa3nKU57y3ffdd9+tXHXVVVddddVVV1111VX/FQiuuuqqq6666n+BiHiwJAAk8dwk8UCSuJ8k/i0k8dwk8W8hif8IkpAEgCQkIQlJRAQRQURQSqGUQimFUgq1VmqtlFKotVJKoZRCRCAJSUjifraxTWaSmWQmmUlrjdYamUlm0lojM8lMMhPbZCa2sY1tMhPbZCYv+7Ivy4/+6I9+DlddddVVV1111VVXXXXVfxUqV1111VVXXfW/QNd1DwaQxH8XSfx7SOIFkcT9JCGJB5KEJCQBEBFIIiKICCKCiCAiKKVQSqGUQimFWiulFEop1FqJCEopRASSkIRtbANgG9tkJplJZpKZZCaZSWaSmWQmmUlmYpvMJDOxTWZiG9vYJjO57rrreOpTn/rd9913361c9S+65pprHgxw33333cpVV1111VVXXXXVVVf92xFcddVVV1111f8CtpHE/SQhif8sknggSfxLJCGJF0YS95PECyMJSUgCQBIAkpCEJCQhiYggIogIIoJSCqUUSimUUiilUEqhlEIphYggIogIJCEJANvYJjOxTWaSmbTWaK3RWiMzyUwyE9vYJjOxjW1sYxvbZCa2yUxe7uVejt/6rd/6Hq666qqrrrrqqquuuuqq/0pUrrrqqquuuup/uNbaa0vi+ZHEc5PEv4ckHkgSz48kJCEJSdxPEpKQxL9EEveTxPMjCUkASEISkpBERBARRAQRQSmFUgoRQSmFWiulFEoplFKICEopRAQRwf1scz/b2CYzyUxaa2QmmUlmkpm01shMMpPMxDa2sU1mYhvb2CYzAbj55pv5h3/4h9/mqhfJmTNnHgxw9uzZW7nqqquuuuqqq6666qp/OypXXXXVVVdd9T/fgyXx30ESz48kXhSSeG6SeEEkIQlJSEISAJKQhCQkIYmIQBIRQURQSqGUQimFUgqlFEoplFKotVJKoZRCRBARSALANvezjW0yk8wkM8lMMpPMJDNprWGbzCQzsU1mkpnYxja2yUxsk5m89Eu/NF//9V//Plx11VVXXXXVVVddddVV/9UIrrrqqquuuup/uIgAQBL/lSTx3CQhiX8NSbwwknhhJAEgCUlIQhKSiAgigoggIogISimUUiilUEqh1kophVIKpRQigoggIpCEJO5nG9vYJjNprZGZtNZorZGZZCaZSWZim8zENrbJTGxjG9tkJpnJox71KP7hH/7ht7nqRXbNNdc8GOC+++67lauuuuqqq6666qqrrvq3o3LVVVddddVV/8NFBPeThCT+O0ji30oS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m5ub/MM//MNvf+ZnfubrcNVVV1111VVXXXXVVVf9T0I5fvw4V1111VVXXXXVfx9Ju5J+ZxxHJL22bSICAElI4n6SAJAEgCTuJwkASdxPEv+ZXud1XodrrrmG++6779aP//iPfxmuuuqqq6666qqrrrrqqv9pKMePH+eqq6666qqrrvrvJ+l31us1EfHamYkkJAEgiftJAkASAJK4nyQAJHE/SfxneL3Xez2uueYa7rvvvls/5EM+5CFcddVVV1111VVXXXXVVf8TUbnqqquuuuqqq/7H6Lruc1ar1TOA7+JfISLITAAigswkIgDITCKC/0iv//qvzzXXXMN9991369d//de/D1ddddVVV1111VVXXXXV/1RUrrrqqquuuuqq/1Fqrd89DMNvZ+Zv2X4wD2Cb52YbAEncLyLITCICgMwkIviP8IZv+IZce+21AHz913/9+/zDP/zDb3PVVVddddVVV1111VVX/U9F5aqrrrrqqquu+h8nIm6dpul1gN+y/WDb2OaFiQgeSBIAkogIMhNJRAT/Vm/0Rm/EtddeC8BnfuZnvs4//MM//DZXXXXVVVddddVVV1111f9klOPHj3PVVVddddVVV/3PI2m3tfYzrbVd4LUjAklI4n6SAJDEc5MEgCQAJHE/SfxrvcmbvAnXXXcdAJ/5mZ/5Ov/wD//w21x11VVXXXXVVVddddVV/9NRjh8/zlVXXXXVVVdd9T+TpF1JvzMMA7ZfWxKSeH4k8dwkASAJAEncTxIvqjd90zfl+uuvB+AzP/MzX+cf/uEffpurrrrqqquuuuqqq6666n8DyvHjx7nqqquuuuqqq/5ni4jfGcfxd4D3BpCEJO4niftJ4vmRBIAkHkgSL8ybv/mbc/311wPwmZ/5ma/zD//wD7/NVVddddVVV1111VVXXfW/BZWrrrrqqquuuup/hVLKb6/X64e01n4rMx9sG9vYBsA2pRQAbHM/SdxPEgCSiAgAMhNJRAQPtL29zeu8zutw/fXXc99999369V//9e/zD//wD7/NVVddddVVV1111VVXXfW/CeX48eNcddVVV1111VX/O0jaba39zDAMuxHx2hEBgCQAJAEgiedHEgCSAJDE87Ozs8Prvu7rcsMNN3Dffffd+vVf//Xv8w//8A+/zVVXXXXVVVddddVVV131vw3l+PHjXHXVVVddddVV/3tI2pX0O0dHR0TEa0sCQBLPTRIviCTuJ4n73XjjjbzzO78z29vb3Hfffbd+yId8yEPOnj17K1ddddVVV1111VVXXXXV/0boQQ96EFddddVVV1111f9Oth9ca/2tzc3NB8/nc7quo9ZKrZVSCqUUIoJSChFBRCCJiCAikEREIAlJvMqrvAqv/MqvDMBv/dZvfffXf/3Xvw9XXXXVVVddddVVV1111f9mlOPHj3PVVVddddVVV/3vJGm3tfYzq9VqNyJeOyIAkMS/xs7ODm/1Vm/Fi73YiwHwIz/yI5/9Xd/1XR/DVVddddVVV1111VVXXfW/HZWrrrrqqquuuup/tYi4Ffic3d3dZ9j+rvl8jm26rsM2trFNKYXnJolbbrmFd3mXdwHgvvvuu/Xrv/7r3+cf/uEffpurrrrqqquuuuqqq6666v8CyvHjx7nqqquuuuqqq/73i4i/Xq/X371er4+XUl6aZ5IEgG0e6Pjx47z92789r/7qrw7AP/zDP/z2x3/8x7/M2bNnb+Wqq6666qqrrrrqqquu+r+CylVXXXXVVVdd9X9GRDzD9vtI4ujo6L3n8zm2qbVSawXg+PHjvNzLvRyv8zqvA8B9991362/91m9994/+6I9+DlddddVVV1111VVXXXXV/zVUrrrqqquuuuqq/3MuXrz4Pq/1Wq9168HBwWc//elP54YbbuBVXuVVeKVXeiVOnDgBwH333Xfrb/3Wb333j/7oj34OV1111VVXXXXVVVddddX/VehBD3oQV1111VVXXXXV/z3XXHPNgz/ncz7ntwCuueaaB9933323XnPNNQ++7777bv3RH/3Rz/mHf/iH377vvvtu5aqrrrrqqquuuuqqq676vww96EEP4qqrrrrqqquu+r/pmmuuefCZM2ceBOiaa6558D/8wz/89n333XcrV1111VVXXXXVVVddddX/F+hBD3oQV1111VVXXXXVVVddddVVV1111VVXXXXV/0lUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/Ff8IvOTR3HGSJa4AAAAASUVORK5CYII=) + diff --git a/docs/kcl/std-sketch-circle.md b/docs/kcl/std-sketch-circle.md index a327a43be..6999cbaf9 100644 --- a/docs/kcl/std-sketch-circle.md +++ b/docs/kcl/std-sketch-circle.md @@ -6,10 +6,16 @@ layout: manual -Construct a 2-dimensional circle, of the specified radius, centered atthe provided (x, y) origin point. +Construct a 2-dimensional circle, of the specified radius, centered at +the provided (x, y) origin point. ```js -circle(@sketch_or_surface: Sketch | Plane | Face, center: Point2d, radius: number, tag?: tag): Sketch +circle( + @sketch_or_surface: Sketch | Plane | Face, + center: Point2d, + radius: number(Length), + tag?: tag, +): Sketch ``` @@ -19,7 +25,7 @@ circle(@sketch_or_surface: Sketch | Plane | Face, center: Point2d, radius: numbe |----------|------|-------------|----------| | `sketch_or_surface` | [`Sketch`](/docs/kcl/types/Sketch) OR [`Plane`](/docs/kcl/types/Plane) OR [`Face`](/docs/kcl/types/Face) | Sketch to extend, or plane or surface to sketch on. | Yes | | `center` | [`Point2d`](/docs/kcl/types/Point2d) | The center of the circle. | Yes | -| `radius` | [`number`](/docs/kcl/types/number) | The radius of the circle. | Yes | +| `radius` | `number(Length)` | The radius of the circle. | Yes | | [`tag`](/docs/kcl/types/tag) | [`tag`](/docs/kcl/types/tag) | Create a new tag which refers to this circle. | No | ### Returns diff --git a/docs/kcl/std-sketch-mirror2d.md b/docs/kcl/std-sketch-mirror2d.md index 41959fd8b..7055b6a67 100644 --- a/docs/kcl/std-sketch-mirror2d.md +++ b/docs/kcl/std-sketch-mirror2d.md @@ -11,7 +11,10 @@ Only works on unclosed sketches for now. Mirror occurs around a local sketch axis rather than a global axis. ```js -mirror2d(@sketches: [Sketch; 1+], axis: Axis2d | Edge): Sketch +mirror2d( + @sketches: [Sketch; 1+], + axis: Axis2d | Edge, +): Sketch ``` @@ -100,14 +103,14 @@ example = extrude(sketch001, length = 10) sketch0011 = startSketchOn(XY) |> startProfileAt([6.77, 0], %) |> yLine(length = 1.27) - |> tangentialArcTo([5.96, 2.37], %) - |> tangentialArcTo([-6.2, 2.44], %) - |> tangentialArcTo([-6.6, 1.82], %) + |> tangentialArc(endAbsolute = [5.96, 2.37]) + |> tangentialArc(endAbsolute = [-6.2, 2.44]) + |> tangentialArc(endAbsolute = [-6.6, 1.82]) |> yLine(length = -1.82) |> mirror2d( axis = X ) |> extrude(length = 10) -sketch002 = startSketchOn(sketch0011, 'END') +sketch002 = startSketchOn(sketch0011, face = END) |> circle( center = [-0.01, 1.58], radius = 1.2 ) |> extrude(length = 1.2) diff --git a/docs/kcl/std.json b/docs/kcl/std.json index e40713a76..26d91d147 100644 --- a/docs/kcl/std.json +++ b/docs/kcl/std.json @@ -38,7 +38,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "myAngle = -120\n\nsketch001 = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [8, 0])\n |> angledLine({ angle = abs(myAngle), length = 5 }, %)\n |> line(end = [-5, 0])\n |> angledLine({ angle = myAngle, length = 5 }, %)\n |> close()\n\nbaseExtrusion = extrude(sketch001, length = 5)" + "myAngle = -120\n\nsketch001 = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [8, 0])\n |> angledLine(angle = abs(myAngle), length = 5)\n |> line(end = [-5, 0])\n |> angledLine(angle = myAngle, length = 5)\n |> close()\n\nbaseExtrusion = extrude(sketch001, length = 5)" ] }, { @@ -80,7 +80,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "sketch001 = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle = toDegrees(acos(0.5)),\n length = 10\n }, %)\n |> line(end = [5, 0])\n |> line(endAbsolute = [12, 0])\n |> close()\n\nextrude001 = extrude(sketch001, length = 5)" + "sketch001 = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = toDegrees(acos(0.5)), length = 10)\n |> line(end = [5, 0])\n |> line(endAbsolute = [12, 0])\n |> close()\n\nextrude001 = extrude(sketch001, length = 5)" ] }, { @@ -1033,6 +1033,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -1289,6 +1303,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -1305,6 +1320,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -1713,8 +1731,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -1753,8 +1770,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -1772,6 +1788,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -1796,7 +1816,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "sketch001 = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [2, 5], tag = $seg01)\n |> angledLineToX([-angleToMatchLengthX(seg01, 7, %), 10], %)\n |> close()\n\nextrusion = extrude(sketch001, length = 5)" + "sketch001 = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [2, 5], tag = $seg01)\n |> angledLine(angle = -angleToMatchLengthX(seg01, 7, %), endAbsoluteX = 10)\n |> close()\n\nextrusion = extrude(sketch001, length = 5)" ] }, { @@ -2749,6 +2769,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -3005,6 +3039,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -3021,6 +3056,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -3429,8 +3467,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -3469,8 +3506,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -3488,6 +3524,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -3512,7 +3552,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "sketch001 = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [1, 2], tag = $seg01)\n |> angledLine({\n angle = angleToMatchLengthY(seg01, 15, %),\n length = 5\n }, %)\n |> yLine(endAbsolute = 0)\n |> close()\n\nextrusion = extrude(sketch001, length = 5)" + "sketch001 = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [1, 2], tag = $seg01)\n |> angledLine(angle = angleToMatchLengthY(seg01, 15, %), length = 5)\n |> yLine(endAbsolute = 0)\n |> close()\n\nextrusion = extrude(sketch001, length = 5)" ] }, { @@ -3520,52 +3560,8 @@ "summary": "Draw a line segment relative to the current origin using the polar measure of some angle and distance.", "description": "", "tags": [], - "keywordArguments": false, + "keywordArguments": true, "args": [ - { - "name": "data", - "type": "AngledLineData", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "AngledLineData", - "description": "Data to draw an angled line.", - "anyOf": [ - { - "description": "An angle and length with explicitly named parameters", - "type": "object", - "required": [ - "angle", - "length" - ], - "properties": { - "angle": { - "description": "The angle of the line (in degrees).", - "type": "number", - "format": "double" - }, - "length": { - "description": "The length of the line.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angle and length given as a pair", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - ] - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, { "name": "sketch", "type": "Sketch", @@ -4476,6 +4472,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -4732,6 +4742,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -4748,6 +4759,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -5156,8 +5170,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -5196,8 +5209,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -5215,11 +5227,9718 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, "required": true, "includeInSnippet": true, + "description": "Which sketch should this path be added to?", + "labelRequired": false + }, + { + "name": "angle", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "double", + "type": "number", + "format": "double", + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": true, + "includeInSnippet": true, + "description": "Which angle should the line be drawn at?", + "labelRequired": true + }, + { + "name": "length", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_double", + "type": "number", + "format": "double", + "nullable": true, + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": false, + "description": "Draw the line this distance along the given angle. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given.", + "labelRequired": true + }, + { + "name": "lengthX", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_double", + "type": "number", + "format": "double", + "nullable": true, + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": false, + "description": "Draw the line this distance along the X axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given.", + "labelRequired": true + }, + { + "name": "lengthY", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_double", + "type": "number", + "format": "double", + "nullable": true, + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": false, + "description": "Draw the line this distance along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given.", + "labelRequired": true + }, + { + "name": "endAbsoluteX", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_double", + "type": "number", + "format": "double", + "nullable": true, + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": false, + "description": "Draw the line along the given angle until it reaches this point along the X axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given.", + "labelRequired": true + }, + { + "name": "endAbsoluteY", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_double", + "type": "number", + "format": "double", + "nullable": true, + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": false, + "description": "Draw the line along the given angle until it reaches this point along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given.", "labelRequired": true }, { @@ -6076,6 +15795,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -6332,6 +16065,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -6348,6 +16082,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -6756,8 +16493,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -6796,8 +16532,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -6815,10 +16550,15 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, "required": false, + "description": "Create a new tag which refers to this line", "labelRequired": true } ], @@ -7732,6 +17472,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -7988,6 +17742,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -8004,6 +17759,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -8412,8 +18170,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -8452,8 +18209,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -8471,6 +18227,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -8481,9945 +18241,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> yLine(endAbsolute = 15)\n |> angledLine({ angle = 30, length = 15 }, %)\n |> line(end = [8, -10])\n |> yLine(endAbsolute = 0)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" - ] - }, - { - "name": "angledLineOfXLength", - "summary": "Create a line segment from the current 2-dimensional sketch origin along some angle (in degrees) for some relative length in the 'x' dimension.", - "description": "", - "tags": [], - "keywordArguments": false, - "args": [ - { - "name": "data", - "type": "AngledLineData", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "AngledLineData", - "description": "Data to draw an angled line.", - "anyOf": [ - { - "description": "An angle and length with explicitly named parameters", - "type": "object", - "required": [ - "angle", - "length" - ], - "properties": { - "angle": { - "description": "The angle of the line (in degrees).", - "type": "number", - "format": "double" - }, - "length": { - "description": "The length of the line.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angle and length given as a pair", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - ] - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Sketch", - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - }, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - { - "name": "tag", - "type": "TagNode", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Nullable_TagDeclarator", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": false, - "labelRequired": true - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Sketch", - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - }, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "sketch001 = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLineOfXLength({ angle = 45, length = 10 }, %, $edge1)\n |> angledLineOfXLength({ angle = -15, length = 20 }, %, $edge2)\n |> line(end = [0, -5])\n |> close(tag = $edge3)\n\nextrusion = extrude(sketch001, length = 10)" - ] - }, - { - "name": "angledLineOfYLength", - "summary": "Create a line segment from the current 2-dimensional sketch origin along some angle (in degrees) for some relative length in the 'y' dimension.", - "description": "", - "tags": [], - "keywordArguments": false, - "args": [ - { - "name": "data", - "type": "AngledLineData", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "AngledLineData", - "description": "Data to draw an angled line.", - "anyOf": [ - { - "description": "An angle and length with explicitly named parameters", - "type": "object", - "required": [ - "angle", - "length" - ], - "properties": { - "angle": { - "description": "The angle of the line (in degrees).", - "type": "number", - "format": "double" - }, - "length": { - "description": "The length of the line.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angle and length given as a pair", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - ] - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Sketch", - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - }, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - { - "name": "tag", - "type": "TagNode", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Nullable_TagDeclarator", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": false, - "labelRequired": true - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Sketch", - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - }, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> angledLineOfYLength({ angle = 45, length = 10 }, %)\n |> line(end = [0, 10])\n |> angledLineOfYLength({ angle = 135, length = 10 }, %)\n |> line(end = [-10, 0])\n |> line(end = [0, -30])\n\nexample = extrude(exampleSketch, length = 10)" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> yLine(endAbsolute = 15)\n |> angledLine(angle = 30, length = 15)\n |> line(end = [8, -10])\n |> yLine(endAbsolute = 0)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" ] }, { @@ -18444,8 +18266,11 @@ "properties": { "angle": { "description": "The angle of the line.", - "type": "number", - "format": "double" + "allOf": [ + { + "$ref": "#/components/schemas/TyF64" + } + ] }, "intersectTag": { "description": "The tag of the line to intersect with.", @@ -18457,12 +18282,19 @@ }, "offset": { "description": "The offset from the intersecting line.", - "type": "number", - "format": "double", + "allOf": [ + { + "$ref": "#/components/schemas/TyF64" + } + ], "nullable": true } }, "definitions": { + "TyF64": { + "type": "number", + "format": "double" + }, "TagIdentifier": { "type": "object", "required": [ @@ -18549,6 +18381,10 @@ } }, "definitions": { + "TyF64": { + "type": "number", + "format": "double" + }, "TagIdentifier": { "type": "object", "required": [ @@ -19401,6 +19237,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -19657,6 +19507,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -19673,6 +19524,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -20070,8 +19924,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -20110,8 +19963,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -20149,6 +20001,10 @@ ], "nullable": true, "definitions": { + "TyF64": { + "type": "number", + "format": "double" + }, "TagIdentifier": { "type": "object", "required": [ @@ -21001,6 +20857,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -21257,6 +21127,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -21273,6 +21144,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -21670,8 +21544,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -21710,8 +21583,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -22646,6 +22518,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -22902,6 +22788,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -22918,6 +22805,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -23326,8 +23216,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -23366,8 +23255,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -23385,6 +23273,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -23398,9914 +23290,6 @@ "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(endAbsolute = [5, 10])\n |> line(endAbsolute = [-10, 10], tag = $lineToIntersect)\n |> line(endAbsolute = [0, 20])\n |> angledLineThatIntersects({\n angle = 80,\n intersectTag = lineToIntersect,\n offset = 10\n }, %)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" ] }, - { - "name": "angledLineToX", - "summary": "Create a line segment from the current 2-dimensional sketch origin along some angle (in degrees) for some length, ending at the provided value in the 'x' dimension.", - "description": "", - "tags": [], - "keywordArguments": false, - "args": [ - { - "name": "data", - "type": "AngledLineToData", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "AngledLineToData", - "description": "Data to draw an angled line to a point.", - "type": "object", - "required": [ - "angle", - "to" - ], - "properties": { - "angle": { - "description": "The angle of the line.", - "type": "number", - "format": "double" - }, - "to": { - "description": "The point to draw to.", - "type": "number", - "format": "double" - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Sketch", - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - }, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - { - "name": "tag", - "type": "TagNode", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Nullable_TagDeclarator", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": false, - "labelRequired": true - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Sketch", - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - }, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLineToX({ angle = 30, to = 10 }, %)\n |> line(end = [0, 10])\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" - ] - }, - { - "name": "angledLineToY", - "summary": "Create a line segment from the current 2-dimensional sketch origin along some angle (in degrees) for some length, ending at the provided value in the 'y' dimension.", - "description": "", - "tags": [], - "keywordArguments": false, - "args": [ - { - "name": "data", - "type": "AngledLineToData", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "AngledLineToData", - "description": "Data to draw an angled line to a point.", - "type": "object", - "required": [ - "angle", - "to" - ], - "properties": { - "angle": { - "description": "The angle of the line.", - "type": "number", - "format": "double" - }, - "to": { - "description": "The point to draw to.", - "type": "number", - "format": "double" - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Sketch", - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - }, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - { - "name": "tag", - "type": "TagNode", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Nullable_TagDeclarator", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": false, - "labelRequired": true - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Sketch", - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - }, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLineToY({ angle = 60, to = 20 }, %)\n |> line(end = [-20, 0])\n |> angledLineToY({ angle = 70, to = 10 }, %)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" - ] - }, { "name": "appearance", "summary": "Set the appearance of a solid. This only works on solids, not sketches or individual paths.", @@ -34529,6 +24513,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -34738,6 +24736,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -34754,6 +24753,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -34845,8 +24847,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -34885,8 +24886,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -34904,6 +24904,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -36125,6 +26129,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -36334,6 +26352,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -36350,6 +26369,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -36441,8 +26463,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -36481,8 +26502,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -36500,6 +26520,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -37723,6 +27747,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -37932,6 +27970,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -37948,6 +27987,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -38039,8 +28081,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -38079,8 +28120,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -38098,6 +28138,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -39320,6 +29364,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -39529,6 +29587,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -39545,6 +29604,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -39636,8 +29698,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -39676,8 +29737,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -39695,6 +29755,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -40919,6 +30983,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -41128,6 +31206,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -41144,6 +31223,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -41235,8 +31317,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -41275,8 +31356,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -41294,6 +31374,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -41307,12 +31391,12 @@ "// Add color to an extruded solid.\nexampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(endAbsolute = [10, 0])\n |> line(endAbsolute = [0, 10])\n |> line(endAbsolute = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)\n // There are other options besides 'color', but they're optional.\n |> appearance(color = '#ff0000')", "// Add color to a revolved solid.\nsketch001 = startSketchOn(XY)\n |> circle(center = [15, 0], radius = 5)\n |> revolve(angle = 360, axis = Y)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)", "// Add color to different solids.\nfn cube(center) {\n return startSketchOn(XY)\n |> startProfileAt([center[0] - 10, center[1] - 10], %)\n |> line(endAbsolute = [center[0] + 10, center[1] - 10])\n |> line(endAbsolute = [center[0] + 10, center[1] + 10])\n |> line(endAbsolute = [center[0] - 10, center[1] + 10])\n |> close()\n |> extrude(length = 10)\n}\n\nexample0 = cube([0, 0])\nexample1 = cube([20, 0])\nexample2 = cube([40, 0])\n\nappearance(\n [example0, example1],\n color = '#ff0000',\n metalness = 50,\n roughness = 50,\n)\nappearance(\n example2,\n color = '#00ff00',\n metalness = 50,\n roughness = 50,\n)", - "// You can set the appearance before or after you shell it will yield the same result.\n// This example shows setting the appearance _after_ the shell.\nfirstSketch = startSketchOn(XY)\n |> startProfileAt([-12, 12], %)\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0])\n |> close()\n |> extrude(length = 6)\n\nshell(firstSketch, faces = ['end'], thickness = 0.25)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)", - "// You can set the appearance before or after you shell it will yield the same result.\n// This example shows setting the appearance _before_ the shell.\nfirstSketch = startSketchOn(XY)\n |> startProfileAt([-12, 12], %)\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0])\n |> close()\n |> extrude(length = 6)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)\n\nshell(firstSketch, faces = ['end'], thickness = 0.25)", + "// You can set the appearance before or after you shell it will yield the same result.\n// This example shows setting the appearance _after_ the shell.\nfirstSketch = startSketchOn(XY)\n |> startProfileAt([-12, 12], %)\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0])\n |> close()\n |> extrude(length = 6)\n\nshell(firstSketch, faces = [END], thickness = 0.25)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)", + "// You can set the appearance before or after you shell it will yield the same result.\n// This example shows setting the appearance _before_ the shell.\nfirstSketch = startSketchOn(XY)\n |> startProfileAt([-12, 12], %)\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0])\n |> close()\n |> extrude(length = 6)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)\n\nshell(firstSketch, faces = [END], thickness = 0.25)", "// Setting the appearance of a 3D pattern can be done _before_ or _after_ the pattern.\n// This example shows _before_ the pattern.\nexampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [0, 2])\n |> line(end = [3, 1])\n |> line(end = [0, -4])\n |> close()\n\nexample = extrude(exampleSketch, length = 1)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)\n |> patternLinear3d(axis = [1, 0, 1], instances = 7, distance = 6)", "// Setting the appearance of a 3D pattern can be done _before_ or _after_ the pattern.\n// This example shows _after_ the pattern.\nexampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [0, 2])\n |> line(end = [3, 1])\n |> line(end = [0, -4])\n |> close()\n\nexample = extrude(exampleSketch, length = 1)\n |> patternLinear3d(axis = [1, 0, 1], instances = 7, distance = 6)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)", "// Color the result of a 2D pattern that was extruded.\nexampleSketch = startSketchOn(XZ)\n |> startProfileAt([.5, 25], %)\n |> line(end = [0, 5])\n |> line(end = [-1, 0])\n |> line(end = [0, -5])\n |> close()\n |> patternCircular2d(\n center = [0, 0],\n instances = 13,\n arcDegrees = 360,\n rotateDuplicates = true,\n )\n\nexample = extrude(exampleSketch, length = 1)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)", - "// Color the result of a sweep.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc({ offset = 90, radius = 5 }, %)\n |> line(end = [-3, 0])\n |> tangentialArc({ offset = -90, radius = 5 }, %)\n |> line(end = [0, 7])\n\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> appearance(color = \"#ff0000\", metalness = 50, roughness = 50)" + "// Color the result of a sweep.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc(angle = 90, radius = 5)\n |> line(end = [-3, 0])\n |> tangentialArc(angle = -90, radius = 5)\n |> line(end = [0, 7])\n\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> appearance(color = \"#ff0000\", metalness = 50, roughness = 50)" ] }, { @@ -41341,22 +31425,31 @@ "properties": { "angleStart": { "description": "The start angle.", - "type": "number", - "format": "double", + "allOf": [ + { + "$ref": "#/components/schemas/TyF64" + } + ], "maximum": 360.0, "minimum": -360.0 }, "angleEnd": { "description": "The end angle.", - "type": "number", - "format": "double", + "allOf": [ + { + "$ref": "#/components/schemas/TyF64" + } + ], "maximum": 360.0, "minimum": -360.0 }, "radius": { "description": "The radius.", - "type": "number", - "format": "double" + "allOf": [ + { + "$ref": "#/components/schemas/TyF64" + } + ] } } }, @@ -41373,8 +31466,7 @@ "description": "The center.", "type": "array", "items": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2 @@ -41383,20 +31475,28 @@ "description": "The to point.", "type": "array", "items": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "The radius.", - "type": "number", - "format": "double" + "allOf": [ + { + "$ref": "#/components/schemas/TyF64" + } + ] } } } - ] + ], + "definitions": { + "TyF64": { + "type": "number", + "format": "double" + } + } }, "required": true, "includeInSnippet": true, @@ -41471,6 +31571,10 @@ } }, "definitions": { + "TyF64": { + "type": "number", + "format": "double" + }, "Path": { "description": "A path.", "oneOf": [ @@ -42312,6 +32416,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -42568,6 +32686,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -42584,6 +32703,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -42992,8 +33114,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -43032,8 +33153,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -43071,6 +33191,10 @@ ], "nullable": true, "definitions": { + "TyF64": { + "type": "number", + "format": "double" + }, "Path": { "description": "A path.", "oneOf": [ @@ -43912,6 +34036,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -44168,6 +34306,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -44184,6 +34323,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -44592,8 +34734,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -44632,8 +34773,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -45568,6 +35708,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -45824,6 +35978,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -45840,6 +35995,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -46248,8 +36406,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -46288,8 +36445,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -46307,6 +36463,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -46344,8 +36504,7 @@ "description": "End point of the arc. A point in 3D space", "type": "array", "items": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2 @@ -46354,12 +36513,17 @@ "description": "Interior point of the arc. A point in 3D space", "type": "array", "items": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2 } + }, + "definitions": { + "TyF64": { + "type": "number", + "format": "double" + } } }, "required": true, @@ -46435,6 +36599,10 @@ } }, "definitions": { + "TyF64": { + "type": "number", + "format": "double" + }, "Path": { "description": "A path.", "oneOf": [ @@ -47276,6 +37444,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -47532,6 +37714,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -47548,6 +37731,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -47956,8 +38142,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -47996,8 +38181,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -48035,6 +38219,10 @@ ], "nullable": true, "definitions": { + "TyF64": { + "type": "number", + "format": "double" + }, "Path": { "description": "A path.", "oneOf": [ @@ -48876,6 +39064,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -49132,6 +39334,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -49148,6 +39351,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -49556,8 +39762,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -49596,8 +39801,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -50532,6 +40736,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -50788,6 +41006,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -50804,6 +41023,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -51212,8 +41434,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -51252,8 +41473,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -51271,6 +41491,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -51323,7 +41547,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "sketch001 = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle = toDegrees(asin(0.5)),\n length = 20\n }, %)\n |> yLine(endAbsolute = 0)\n |> close()\n\nextrude001 = extrude(sketch001, length = 5)" + "sketch001 = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = toDegrees(asin(0.5)), length = 20)\n |> yLine(endAbsolute = 0)\n |> close()\n\nextrude001 = extrude(sketch001, length = 5)" ] }, { @@ -51748,7 +41972,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "sketch001 = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle = toDegrees(atan(1.25)),\n length = 20\n }, %)\n |> yLine(endAbsolute = 0)\n |> close()\n\nextrude001 = extrude(sketch001, length = 5)" + "sketch001 = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = toDegrees(atan(1.25)), length = 20)\n |> yLine(endAbsolute = 0)\n |> close()\n\nextrude001 = extrude(sketch001, length = 5)" ] }, { @@ -51758,7 +41982,7 @@ "tags": [ "math" ], - "keywordArguments": false, + "keywordArguments": true, "args": [ { "name": "y", @@ -51771,6 +41995,7 @@ }, "required": true, "includeInSnippet": true, + "description": "Y", "labelRequired": true }, { @@ -51784,6 +42009,7 @@ }, "required": true, "includeInSnippet": true, + "description": "X", "labelRequired": true } ], @@ -51803,7 +42029,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "sketch001 = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle = toDegrees(atan2(1.25, 2)),\n length = 20\n }, %)\n |> yLine(endAbsolute = 0)\n |> close()\n\nextrude001 = extrude(sketch001, length = 5)" + "sketch001 = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = toDegrees(atan2(y = 1.25, x = 2)), length = 20)\n |> yLine(endAbsolute = 0)\n |> close()\n\nextrude001 = extrude(sketch001, length = 5)" ] }, { @@ -51831,8 +42057,7 @@ "description": "The to point.", "type": "array", "items": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2 @@ -51841,8 +42066,7 @@ "description": "The first control point.", "type": "array", "items": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2 @@ -51851,12 +42075,17 @@ "description": "The second control point.", "type": "array", "items": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2 } + }, + "definitions": { + "TyF64": { + "type": "number", + "format": "double" + } } }, "required": true, @@ -51932,6 +42161,10 @@ } }, "definitions": { + "TyF64": { + "type": "number", + "format": "double" + }, "Path": { "description": "A path.", "oneOf": [ @@ -52773,6 +43006,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -53029,6 +43276,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -53045,6 +43293,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -53453,8 +43704,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -53493,8 +43743,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -53532,6 +43781,10 @@ ], "nullable": true, "definitions": { + "TyF64": { + "type": "number", + "format": "double" + }, "Path": { "description": "A path.", "oneOf": [ @@ -54373,6 +44626,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -54629,6 +44896,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -54645,6 +44913,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -55053,8 +45324,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -55093,8 +45363,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -56029,6 +46298,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -56285,6 +46568,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -56301,6 +46585,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -56709,8 +46996,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -56749,8 +47035,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -56768,6 +47053,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -58040,6 +48329,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -58249,6 +48552,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -58265,6 +48569,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -58361,8 +48668,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -58401,8 +48707,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -58421,6 +48726,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -58496,7 +48805,7 @@ "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "double", + "title": "TyF64", "type": "number", "format": "double", "definitions": { @@ -59637,6 +49946,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -59846,6 +50169,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -59862,6 +50186,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -59958,8 +50285,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -59998,8 +50324,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -60018,6 +50343,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -61236,6 +51565,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -61445,6 +51788,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -61461,6 +51805,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -61557,8 +51904,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -61597,8 +51943,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -61617,6 +51962,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -62855,6 +53204,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -63064,6 +53427,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -63080,6 +53444,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -63176,8 +53543,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -63216,8 +53582,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -63236,6 +53601,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -64534,6 +54903,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -64743,6 +55126,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -64759,6 +55143,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -64855,8 +55242,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -64895,8 +55281,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -64915,6 +55300,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -64988,7 +55377,7 @@ "deprecated": false, "examples": [ "// Chamfer a mounting plate.\nwidth = 20\nlength = 10\nthickness = 1\nchamferLength = 2\n\nmountingPlateSketch = startSketchOn(XY)\n |> startProfileAt([-width / 2, -length / 2], %)\n |> line(endAbsolute = [width / 2, -length / 2], tag = $edge1)\n |> line(endAbsolute = [width / 2, length / 2], tag = $edge2)\n |> line(endAbsolute = [-width / 2, length / 2], tag = $edge3)\n |> close(tag = $edge4)\n\nmountingPlate = extrude(mountingPlateSketch, length = thickness)\n |> chamfer(\n length = chamferLength,\n tags = [\n getNextAdjacentEdge(edge1),\n getNextAdjacentEdge(edge2),\n getNextAdjacentEdge(edge3),\n getNextAdjacentEdge(edge4)\n ],\n )", - "// Sketch on the face of a chamfer.\nfn cube(pos, scale) {\n sg = startSketchOn(XY)\n |> startProfileAt(pos, %)\n |> line(end = [0, scale])\n |> line(end = [scale, 0])\n |> line(end = [0, -scale])\n\n return sg\n}\n\npart001 = cube([0, 0], 20)\n |> close(tag = $line1)\n |> extrude(length = 20)\n // We tag the chamfer to reference it later.\n |> chamfer(length = 10, tags = [getOppositeEdge(line1)], tag = $chamfer1)\n\nsketch001 = startSketchOn(part001, chamfer1)\n |> startProfileAt([10, 10], %)\n |> line(end = [2, 0])\n |> line(end = [0, 2])\n |> line(end = [-2, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n |> extrude(length = 10)" + "// Sketch on the face of a chamfer.\nfn cube(pos, scale) {\n sg = startSketchOn(XY)\n |> startProfileAt(pos, %)\n |> line(end = [0, scale])\n |> line(end = [scale, 0])\n |> line(end = [0, -scale])\n\n return sg\n}\n\npart001 = cube([0, 0], 20)\n |> close(tag = $line1)\n |> extrude(length = 20)\n // We tag the chamfer to reference it later.\n |> chamfer(length = 10, tags = [getOppositeEdge(line1)], tag = $chamfer1)\n\nsketch001 = startSketchOn(part001, face = chamfer1)\n |> startProfileAt([10, 10], %)\n |> line(end = [2, 0])\n |> line(end = [0, 2])\n |> line(end = [-2, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n |> extrude(length = 10)" ] }, { @@ -65201,6 +55590,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -65217,6 +55607,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -65306,6 +55699,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -66535,8 +56942,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -66575,8 +56981,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -66594,6 +56999,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -66803,6 +57212,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -66819,6 +57229,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -66908,6 +57321,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -68137,8 +58564,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -68177,8 +58603,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -68196,6 +58621,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -68405,6 +58834,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -68421,6 +58851,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -68510,6 +58943,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -69739,8 +60186,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -69779,8 +60225,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -69798,6 +60243,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -70007,6 +60456,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -70023,6 +60473,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -70112,6 +60565,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -71341,8 +61808,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -71381,8 +61847,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -71400,6 +61865,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -71608,6 +62077,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -71624,6 +62094,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -71713,6 +62186,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -72942,8 +63429,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -72982,8 +63468,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -73001,6 +63486,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -73919,6 +64408,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -74175,6 +64678,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -74191,6 +64695,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -74599,8 +65106,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -74639,8 +65145,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -74658,6 +65163,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -75588,6 +66097,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -75844,6 +66367,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -75860,6 +66384,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -76268,8 +66795,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -76308,8 +66834,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -76327,6 +66852,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -77189,6 +67718,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -77445,6 +67988,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -77461,6 +68005,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -77869,8 +68416,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -77909,8 +68455,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -77928,6 +68473,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -78846,6 +69395,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -79102,6 +69665,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -79118,6 +69682,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -79526,8 +70093,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -79566,8 +70132,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -79585,6 +70150,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -79599,34 +70168,6 @@ "exampleSketch = startSketchOn(-XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" ] }, - { - "name": "cm", - "summary": "Centimeters conversion factor for current projects units.", - "description": "No matter what units the current project uses, this function will always return the conversion factor to centimeters.\n\nFor example, if the current project uses inches, this function will return `0.393701`. If the current project uses millimeters, this function will return `10`. If the current project uses centimeters, this function will return `1`.\n\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function.\n\nWe merely provide these functions for convenience and readability, as `10 * cm()` is more readable that your intent is \"I want 10 centimeters\" than `10 * 10`, if the project settings are in millimeters.", - "tags": [ - "units" - ], - "keywordArguments": false, - "args": [], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "double", - "type": "number", - "format": "double" - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "totalWidth = 10 * cm()" - ] - }, { "name": "e", "summary": "Return the value of Euler’s number `e`.", @@ -79652,7 +70193,7 @@ "unpublished": false, "deprecated": true, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle = 30, length = 2 * e() ^ 2 }, %)\n |> yLine(endAbsolute = 0)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = 30, length = 2 * e() ^ 2)\n |> yLine(endAbsolute = 0)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" ] }, { @@ -80578,6 +71119,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -80834,6 +71389,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -80850,6 +71406,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -81131,8 +71690,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -81171,8 +71729,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -81191,6 +71748,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -82175,6 +72736,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -82431,6 +73006,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -82447,6 +73023,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -82728,8 +73307,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -82768,8 +73346,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -82788,6 +73365,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -82858,6 +73439,3239 @@ "description": "How far to extrude the given sketches", "labelRequired": true }, + { + "name": "symmetric", + "type": "bool", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_Boolean", + "type": "boolean", + "nullable": true, + "definitions": { + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + } + } + }, + "required": false, + "description": "If true, the extrusion will happen symmetrically around the sketch. Otherwise, the\n extrusion will happen on only one side of the sketch.", + "labelRequired": true + }, + { + "name": "bidirectionalLength", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_double", + "type": "number", + "format": "double", + "nullable": true, + "definitions": { + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + } + } + }, + "required": false, + "description": "If specified, will also extrude in the opposite direction to 'distance' to the specified distance. If 'symmetric' is true, this value is ignored.", + "labelRequired": true + }, { "name": "tagStart", "type": "TagNode", @@ -83776,6 +77590,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -84032,6 +77860,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -84048,6 +77877,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -84329,8 +78161,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -84369,8 +78200,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -84389,6 +78219,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -85376,6 +79210,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -85632,6 +79480,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -85648,6 +79497,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -85929,8 +79781,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -85969,8 +79820,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -85989,6 +79839,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -87275,6 +81129,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -87484,6 +81352,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -87500,6 +81369,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -87591,8 +81463,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -87631,8 +81502,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -87650,6 +81520,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -87661,7 +81535,9 @@ "deprecated": false, "examples": [ "example = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> arc({\n angleStart = 120,\n angleEnd = 0,\n radius = 5\n }, %)\n |> line(end = [5, 0])\n |> line(end = [0, 10])\n |> bezierCurve({\n control1 = [-10, 0],\n control2 = [2, 10],\n to = [-5, 10]\n }, %)\n |> line(end = [-5, -2])\n |> close()\n |> extrude(length = 10)", - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([-10, 0], %)\n |> arc({\n angleStart = 120,\n angleEnd = -60,\n radius = 5\n }, %)\n |> line(end = [10, 0])\n |> line(end = [5, 0])\n |> bezierCurve({\n control1 = [-3, 0],\n control2 = [2, 10],\n to = [-5, 10]\n }, %)\n |> line(end = [-4, 10])\n |> line(end = [-5, -2])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([-10, 0], %)\n |> arc({\n angleStart = 120,\n angleEnd = -60,\n radius = 5\n }, %)\n |> line(end = [10, 0])\n |> line(end = [5, 0])\n |> bezierCurve({\n control1 = [-3, 0],\n control2 = [2, 10],\n to = [-5, 10]\n }, %)\n |> line(end = [-4, 10])\n |> line(end = [-5, -2])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)", + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([-10, 0], %)\n |> arc({\n angleStart = 120,\n angleEnd = -60,\n radius = 5\n }, %)\n |> line(end = [10, 0])\n |> line(end = [5, 0])\n |> bezierCurve({\n control1 = [-3, 0],\n control2 = [2, 10],\n to = [-5, 10]\n }, %)\n |> line(end = [-4, 10])\n |> line(end = [-5, -2])\n |> close()\n\nexample = extrude(exampleSketch, length = 20, symmetric = true)", + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([-10, 0], %)\n |> arc({\n angleStart = 120,\n angleEnd = -60,\n radius = 5\n }, %)\n |> line(end = [10, 0])\n |> line(end = [5, 0])\n |> bezierCurve({\n control1 = [-3, 0],\n control2 = [2, 10],\n to = [-5, 10]\n }, %)\n |> line(end = [-4, 10])\n |> line(end = [-5, -2])\n |> close()\n\nexample = extrude(exampleSketch, length = 10, bidirectionalLength = 50)" ] }, { @@ -88881,6 +82757,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -89090,6 +82980,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -89106,6 +82997,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -89202,8 +83096,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -89242,8 +83135,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -89262,6 +83154,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -89337,7 +83233,7 @@ "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "double", + "title": "TyF64", "type": "number", "format": "double", "definitions": { @@ -90478,6 +84374,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -90687,6 +84597,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -90703,6 +84614,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -90799,8 +84713,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -90839,8 +84752,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -90859,6 +84771,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -92077,6 +85993,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -92286,6 +86216,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -92302,6 +86233,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -92398,8 +86332,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -92438,8 +86371,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -92458,6 +86390,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -93693,6 +87629,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -93902,6 +87852,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -93918,6 +87869,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -94014,8 +87968,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -94054,8 +88007,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -94074,6 +88026,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -95311,6 +89267,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -95520,6 +89490,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -95536,6 +89507,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -95632,8 +89606,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -95672,8 +89645,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -95692,6 +89664,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -96990,6 +90966,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -97199,6 +91189,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -97215,6 +91206,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -97311,8 +91305,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -97351,8 +91344,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -97371,6 +91363,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -97490,14 +91486,28 @@ ] }, { - "name": "ft", - "summary": "Feet conversion factor for current projects units.", - "description": "No matter what units the current project uses, this function will always return the conversion factor to feet.\n\nFor example, if the current project uses inches, this function will return `12`. If the current project uses millimeters, this function will return `304.8`. If the current project uses feet, this function will return `1`.\n\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function.\n\nWe merely provide these functions for convenience and readability, as `10 * ft()` is more readable that your intent is \"I want 10 feet\" than `10 * 304.8`, if the project settings are in millimeters.", + "name": "fromCm", + "summary": "Converts a number from centimeters to the current default unit.", + "description": "No matter what units the current file uses, this function will always return a number equivalent to the input in centimeters.\n\nFor example, if the current file uses inches, `fromCm(1)` will return `0.393701`. If the current file uses millimeters, `fromCm(1)` will return `10`. If the current file uses centimeters, `fromCm(1)` will return `1`.\n\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function.\n\nWe merely provide these functions for convenience and readability, as `fromCm(10)` is more readable that your intent is \"I want 10 centimeters\" than `10 * 10`, if the file settings are in millimeters.", "tags": [ "units" ], "keywordArguments": false, - "args": [], + "args": [ + { + "name": "input", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "double", + "type": "number", + "format": "double" + }, + "required": true, + "includeInSnippet": true, + "labelRequired": true + } + ], "returnValue": { "name": "", "type": "number", @@ -97514,7 +91524,217 @@ "unpublished": false, "deprecated": false, "examples": [ - "totalWidth = 10 * ft()" + "totalWidth = fromCm(10)" + ] + }, + { + "name": "fromFt", + "summary": "Converts a number from feet to the current default unit.", + "description": "No matter what units the current file uses, this function will always return a number equivalent to the input in feet.\n\nFor example, if the current file uses inches, `fromFt(1)` will return `12`. If the current file uses millimeters, `fromFt(1)` will return `304.8`. If the current file uses feet, `fromFt(1)` will return `1`.\n\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function.\n\nWe merely provide these functions for convenience and readability, as `fromFt(10)` is more readable that your intent is \"I want 10 feet\" than `10 * 304.8`, if the file settings are in millimeters.", + "tags": [ + "units" + ], + "keywordArguments": false, + "args": [ + { + "name": "input", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "double", + "type": "number", + "format": "double" + }, + "required": true, + "includeInSnippet": true, + "labelRequired": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "double", + "type": "number", + "format": "double" + }, + "required": true, + "includeInSnippet": true, + "labelRequired": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "totalWidth = fromFt(10)" + ] + }, + { + "name": "fromInches", + "summary": "Converts a number from inches to the current default unit.", + "description": "No matter what units the current file uses, this function will always return a number equivalent to the input in inches.\n\nFor example, if the current file uses inches, `fromInches(1)` will return `1`. If the current file uses millimeters, `fromInches(1)` will return `25.4`.\n\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function.\n\nWe merely provide these functions for convenience and readability, as `fromInches(10)` is more readable that your intent is \"I want 10 inches\" than `10 * 25.4`, if the file settings are in millimeters.", + "tags": [ + "units" + ], + "keywordArguments": false, + "args": [ + { + "name": "input", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "double", + "type": "number", + "format": "double" + }, + "required": true, + "includeInSnippet": true, + "labelRequired": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "double", + "type": "number", + "format": "double" + }, + "required": true, + "includeInSnippet": true, + "labelRequired": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "totalWidth = fromInches(10)" + ] + }, + { + "name": "fromM", + "summary": "Converts a number from meters to the current default unit.", + "description": "No matter what units the current file uses, this function will always return a number equivalent to the input in meters.\n\nFor example, if the current file uses inches, `fromM(1)` will return `39.3701`. If the current file uses millimeters, `fromM(1)` will return `1000`. If the current file uses meters, `fromM(1)` will return `1`.\n\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function.\n\nWe merely provide these functions for convenience and readability, as `fromM(10)` is more readable that your intent is \"I want 10 meters\" than `10 * 1000`, if the file settings are in millimeters.", + "tags": [ + "units" + ], + "keywordArguments": false, + "args": [ + { + "name": "input", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "double", + "type": "number", + "format": "double" + }, + "required": true, + "includeInSnippet": true, + "labelRequired": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "double", + "type": "number", + "format": "double" + }, + "required": true, + "includeInSnippet": true, + "labelRequired": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "totalWidth = 10 * fromM(10)" + ] + }, + { + "name": "fromMm", + "summary": "Converts a number from mm to the current default unit.", + "description": "No matter what units the current file uses, this function will always return a number equivalent to the input in millimeters.\n\nFor example, if the current file uses inches, `fromMm(1)` will return `1/25.4`. If the current file uses millimeters, `fromMm(1)` will return `1`.\n\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function.\n\nWe merely provide these functions for convenience and readability, as `fromMm(10)` is more readable that your intent is \"I want 10 millimeters\" than `10 * (1/25.4)`, if the file settings are in inches.", + "tags": [ + "units" + ], + "keywordArguments": false, + "args": [ + { + "name": "input", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "double", + "type": "number", + "format": "double" + }, + "required": true, + "includeInSnippet": true, + "labelRequired": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "double", + "type": "number", + "format": "double" + }, + "required": true, + "includeInSnippet": true, + "labelRequired": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "totalWidth = fromMm(10)" + ] + }, + { + "name": "fromYd", + "summary": "Converts a number from yards to the current default unit.", + "description": "No matter what units the current file uses, this function will always return a number equivalent to the input in yards.\n\nFor example, if the current file uses inches, `fromYd(1)` will return `36`. If the current file uses millimeters, `fromYd(1)` will return `914.4`. If the current file uses yards, `fromYd(1)` will return `1`.\n\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the file settings. Otherwise, it is a bad pattern to use this function.\n\nWe merely provide these functions for convenience and readability, as `fromYd(10)` is more readable that your intent is \"I want 10 yards\" than `10 * 914.4`, if the file settings are in millimeters.", + "tags": [ + "units" + ], + "keywordArguments": false, + "args": [ + { + "name": "input", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "double", + "type": "number", + "format": "double" + }, + "required": true, + "includeInSnippet": true, + "labelRequired": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "double", + "type": "number", + "format": "double" + }, + "required": true, + "includeInSnippet": true, + "labelRequired": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "totalWidth = fromYd(10)" ] }, { @@ -97617,7 +91837,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> angledLine({ angle = 60, length = 10 }, %)\n |> angledLine({ angle = 120, length = 10 }, %)\n |> line(end = [-10, 0])\n |> angledLine({ angle = 240, length = 10 }, %, $referenceEdge)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)\n |> fillet(radius = 3, tags = [getNextAdjacentEdge(referenceEdge)])" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> angledLine(angle = 60, length = 10)\n |> angledLine(angle = 120, length = 10)\n |> line(end = [-10, 0])\n |> angledLine(angle = 240, length = 10, tag = $referenceEdge)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)\n |> fillet(radius = 3, tags = [getNextAdjacentEdge(referenceEdge)])" ] }, { @@ -97664,7 +91884,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> angledLine({ angle = 60, length = 10 }, %)\n |> angledLine({ angle = 120, length = 10 }, %)\n |> line(end = [-10, 0])\n |> angledLine({ angle = 240, length = 10 }, %, $referenceEdge)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)\n |> fillet(radius = 3, tags = [getOppositeEdge(referenceEdge)])" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> angledLine(angle = 60, length = 10)\n |> angledLine(angle = 120, length = 10)\n |> line(end = [-10, 0])\n |> angledLine(angle = 240, length = 10, tag = $referenceEdge)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)\n |> fillet(radius = 3, tags = [getOppositeEdge(referenceEdge)])" ] }, { @@ -97711,7 +91931,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> angledLine({ angle = 60, length = 10 }, %)\n |> angledLine({ angle = 120, length = 10 }, %)\n |> line(end = [-10, 0])\n |> angledLine({ angle = 240, length = 10 }, %, $referenceEdge)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)\n |> fillet(radius = 3, tags = [getPreviousAdjacentEdge(referenceEdge)])" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> angledLine(angle = 60, length = 10)\n |> angledLine(angle = 120, length = 10)\n |> line(end = [-10, 0])\n |> angledLine(angle = 240, length = 10, tag = $referenceEdge)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)\n |> fillet(radius = 3, tags = [getPreviousAdjacentEdge(referenceEdge)])" ] }, { @@ -98637,6 +92857,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -98893,6 +93127,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -98909,6 +93144,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -99190,8 +93428,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -99230,8 +93467,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -99250,6 +93486,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -100293,6 +94533,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -100549,6 +94803,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -100565,6 +94820,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -100846,8 +95104,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -100886,8 +95143,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -100906,6 +95162,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -101886,6 +96146,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -102142,6 +96416,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -102158,6 +96433,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -102566,8 +96844,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -102606,8 +96883,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -102625,6 +96901,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -103869,6 +98149,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -104078,6 +98372,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -104094,6 +98389,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -104190,8 +98488,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -104230,8 +98527,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -104250,6 +98546,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -105530,6 +99830,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -105739,6 +100053,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -105755,6 +100070,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -105851,8 +100169,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -105891,8 +100208,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -105911,6 +100227,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -105985,416 +100305,7 @@ "examples": [ "// Hollow a basic sketch.\nfirstSketch = startSketchOn(XY)\n |> startProfileAt([-12, 12], %)\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0])\n |> close()\n |> extrude(length = 6)\n |> hollow(0.25, %)", "// Hollow a basic sketch.\nfirstSketch = startSketchOn(-XZ)\n |> startProfileAt([-12, 12], %)\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0])\n |> close()\n |> extrude(length = 6)\n |> hollow(0.5, %)", - "// Hollow a sketch on face object.\nsize = 100\ncase = startSketchOn(-XZ)\n |> startProfileAt([-size, -size], %)\n |> line(end = [2 * size, 0])\n |> line(end = [0, 2 * size])\n |> tangentialArcTo([-size, size], %)\n |> close()\n |> extrude(length = 65)\n\nthing1 = startSketchOn(case, 'end')\n |> circle(center = [-size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\nthing2 = startSketchOn(case, 'end')\n |> circle(center = [size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\nhollow(0.5, case)" - ] - }, - { - "name": "import", - "summary": "Import a CAD file.", - "description": "**DEPRECATED** Prefer to use import statements.\n\nFor formats lacking unit data (such as STL, OBJ, or PLY files), the default unit of measurement is millimeters. Alternatively you may specify the unit by passing your desired measurement unit in the options parameter. When importing a GLTF file, the bin file will be imported as well. Import paths are relative to the current project directory.\n\nNote: The import command currently only works when using the native Design Studio.", - "tags": [], - "keywordArguments": false, - "args": [ - { - "name": "filePath", - "type": "String", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "String", - "type": "string" - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - { - "name": "options", - "type": "ImportFormat", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Nullable_ImportFormat", - "allOf": [ - { - "$ref": "#/components/schemas/ImportFormat" - } - ], - "nullable": true, - "definitions": { - "ImportFormat": { - "description": "Import format specifier", - "oneOf": [ - { - "description": "Autodesk Filmbox (FBX) format", - "type": "object", - "required": [ - "format" - ], - "properties": { - "format": { - "type": "string", - "enum": [ - "fbx" - ] - } - } - }, - { - "description": "Binary glTF 2.0. We refer to this as glTF since that is how our customers refer to it, but this can also import binary glTF (glb).", - "type": "object", - "required": [ - "format" - ], - "properties": { - "format": { - "type": "string", - "enum": [ - "gltf" - ] - } - } - }, - { - "description": "Wavefront OBJ format.", - "type": "object", - "required": [ - "format", - "units" - ], - "properties": { - "format": { - "type": "string", - "enum": [ - "obj" - ] - }, - "coords": { - "description": "Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system.", - "allOf": [ - { - "$ref": "#/components/schemas/System" - } - ], - "nullable": true - }, - "units": { - "description": "The units of the input data. This is very important for correct scaling and when calculating physics properties like mass, etc. Defaults to millimeters.", - "allOf": [ - { - "$ref": "#/components/schemas/UnitLength" - } - ] - } - } - }, - { - "description": "The PLY Polygon File Format.", - "type": "object", - "required": [ - "format", - "units" - ], - "properties": { - "format": { - "type": "string", - "enum": [ - "ply" - ] - }, - "coords": { - "description": "Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system.", - "allOf": [ - { - "$ref": "#/components/schemas/System" - } - ], - "nullable": true - }, - "units": { - "description": "The units of the input data. This is very important for correct scaling and when calculating physics properties like mass, etc. Defaults to millimeters.", - "allOf": [ - { - "$ref": "#/components/schemas/UnitLength" - } - ] - } - } - }, - { - "description": "SolidWorks part (SLDPRT) format.", - "type": "object", - "required": [ - "format" - ], - "properties": { - "format": { - "type": "string", - "enum": [ - "sldprt" - ] - } - } - }, - { - "description": "ISO 10303-21 (STEP) format.", - "type": "object", - "required": [ - "format" - ], - "properties": { - "format": { - "type": "string", - "enum": [ - "step" - ] - } - } - }, - { - "description": "ST**ereo**L**ithography format.", - "type": "object", - "required": [ - "format", - "units" - ], - "properties": { - "format": { - "type": "string", - "enum": [ - "stl" - ] - }, - "coords": { - "description": "Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system.", - "allOf": [ - { - "$ref": "#/components/schemas/System" - } - ], - "nullable": true - }, - "units": { - "description": "The units of the input data. This is very important for correct scaling and when calculating physics properties like mass, etc. Defaults to millimeters.", - "allOf": [ - { - "$ref": "#/components/schemas/UnitLength" - } - ] - } - } - } - ] - }, - "System": { - "description": "Co-ordinate system definition.\n\nThe `up` axis must be orthogonal to the `forward` axis.\n\nSee [cglearn.eu] for background reading.\n\n[cglearn.eu](https://cglearn.eu/pub/computer-graphics/introduction-to-geometry#material-coordinate-systems-1)", - "type": "object", - "required": [ - "forward", - "up" - ], - "properties": { - "forward": { - "description": "Axis the front face of a model looks along.", - "allOf": [ - { - "$ref": "#/components/schemas/AxisDirectionPair" - } - ] - }, - "up": { - "description": "Axis pointing up and away from a model.", - "allOf": [ - { - "$ref": "#/components/schemas/AxisDirectionPair" - } - ] - } - } - }, - "AxisDirectionPair": { - "description": "An [`Axis`] paired with a [`Direction`].", - "type": "object", - "required": [ - "axis", - "direction" - ], - "properties": { - "axis": { - "description": "Axis specifier.", - "allOf": [ - { - "$ref": "#/components/schemas/Axis" - } - ] - }, - "direction": { - "description": "Specifies which direction the axis is pointing.", - "allOf": [ - { - "$ref": "#/components/schemas/Direction" - } - ] - } - } - }, - "Axis": { - "description": "Co-ordinate axis specifier.\n\nSee [cglearn.eu] for background reading.\n\n[cglearn.eu]: https://cglearn.eu/pub/computer-graphics/introduction-to-geometry#material-coordinate-systems-1", - "oneOf": [ - { - "description": "'Y' axis.", - "type": "string", - "enum": [ - "y" - ] - }, - { - "description": "'Z' axis.", - "type": "string", - "enum": [ - "z" - ] - } - ] - }, - "Direction": { - "description": "Specifies the sign of a co-ordinate axis.", - "oneOf": [ - { - "description": "Increasing numbers.", - "type": "string", - "enum": [ - "positive" - ] - }, - { - "description": "Decreasing numbers.", - "type": "string", - "enum": [ - "negative" - ] - } - ] - }, - "UnitLength": { - "description": "The valid types of length units.", - "oneOf": [ - { - "description": "Centimeters ", - "type": "string", - "enum": [ - "cm" - ] - }, - { - "description": "Feet ", - "type": "string", - "enum": [ - "ft" - ] - }, - { - "description": "Inches ", - "type": "string", - "enum": [ - "in" - ] - }, - { - "description": "Meters ", - "type": "string", - "enum": [ - "m" - ] - }, - { - "description": "Millimeters ", - "type": "string", - "enum": [ - "mm" - ] - }, - { - "description": "Yards ", - "type": "string", - "enum": [ - "yd" - ] - } - ] - } - } - }, - "required": false, - "labelRequired": true - } - ], - "returnValue": { - "name": "", - "type": "ImportedGeometry", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "ImportedGeometry", - "description": "Data for an imported geometry.", - "type": "object", - "required": [ - "id", - "value" - ], - "properties": { - "id": { - "description": "The ID of the imported geometry.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The original file paths.", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - "unpublished": false, - "deprecated": true, - "examples": [ - "model = import(\"tests/inputs/cube.obj\")", - "model = import(\"tests/inputs/cube.obj\", { format = \"obj\", units = \"m\" })", - "model = import(\"tests/inputs/cube.gltf\")", - "model = import(\"tests/inputs/cube.sldprt\")", - "model = import(\"tests/inputs/cube.step\")", - "import height, buildSketch from \"common.kcl\"\n\nplane = XZ\nmargin = 2\ns1 = buildSketch(plane, [0, 0])\ns2 = buildSketch(plane, [0, height() + margin])" - ] - }, - { - "name": "inch", - "summary": "Inches conversion factor for current projects units.", - "description": "No matter what units the current project uses, this function will always return the conversion factor to inches.\n\nFor example, if the current project uses inches, this function will return `1`. If the current project uses millimeters, this function will return `25.4`.\n\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function.\n\nWe merely provide these functions for convenience and readability, as `10 * inch()` is more readable that your intent is \"I want 10 inches\" than `10 * 25.4`, if the project settings are in millimeters.", - "tags": [ - "units" - ], - "keywordArguments": false, - "args": [], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "double", - "type": "number", - "format": "double" - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "totalWidth = 10 * inch()" + "// Hollow a sketch on face object.\nsize = 100\ncase = startSketchOn(-XZ)\n |> startProfileAt([-size, -size], %)\n |> line(end = [2 * size, 0])\n |> line(end = [0, 2 * size])\n |> tangentialArc(endAbsolute = [-size, size])\n |> close()\n |> extrude(length = 65)\n\nthing1 = startSketchOn(case, face = END)\n |> circle(center = [-size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\nthing2 = startSketchOn(case, face = END)\n |> circle(center = [size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\nhollow(0.5, case)" ] }, { @@ -107662,6 +101573,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -107871,6 +101796,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -107887,6 +101813,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -107978,8 +101907,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -108018,8 +101946,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -108037,6 +101964,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -108044,6 +101975,1626 @@ "includeInSnippet": true, "description": "The solids to intersect.", "labelRequired": false + }, + { + "name": "tolerance", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_TyF64", + "allOf": [ + { + "$ref": "#/components/schemas/TyF64" + } + ], + "nullable": true, + "definitions": { + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": false, + "description": "The tolerance to use for the intersection operation.", + "labelRequired": true } ], "returnValue": { @@ -109262,6 +104813,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -109471,6 +105036,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -109487,6 +105053,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -109578,8 +105147,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -109618,8 +105186,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -109637,6 +105204,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -109645,10 +105216,11464 @@ "labelRequired": true }, "unpublished": false, - "deprecated": true, + "deprecated": false, "examples": [ - "// Intersect two cubes using the stdlib functions.\n\n\nfn cube(center) {\n return startSketchOn(XY)\n |> startProfileAt([center[0] - 10, center[1] - 10], %)\n |> line(endAbsolute = [center[0] + 10, center[1] - 10])\n |> line(endAbsolute = [center[0] + 10, center[1] + 10])\n |> line(endAbsolute = [center[0] - 10, center[1] + 10])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0])\npart002 = cube([8, 8])\n\nintersectedPart = intersect([part001, part002])", - "// Intersect two cubes using operators.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center) {\n return startSketchOn(XY)\n |> startProfileAt([center[0] - 10, center[1] - 10], %)\n |> line(endAbsolute = [center[0] + 10, center[1] - 10])\n |> line(endAbsolute = [center[0] + 10, center[1] + 10])\n |> line(endAbsolute = [center[0] - 10, center[1] + 10])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0])\npart002 = cube([8, 8])\n\n// This is the equivalent of: intersect([part001, part002])\nintersectedPart = part001 & part002" + "// Intersect two cubes using the stdlib functions.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfileAt([center[0] - size, center[1] - size], %)\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0], 10)\npart002 = cube([7, 3], 5)\n |> translate(z = 1)\n\nintersectedPart = intersect([part001, part002])", + "// Intersect two cubes using operators.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfileAt([center[0] - size, center[1] - size], %)\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0], 10)\npart002 = cube([7, 3], 5)\n |> translate(z = 1)\n\n// This is the equivalent of: intersect([part001, part002])\nintersectedPart = part001 & part002" + ] + }, + { + "name": "involuteCircular", + "summary": "Extend the current sketch with a new involute circular curve.", + "description": "", + "tags": [], + "keywordArguments": true, + "args": [ + { + "name": "sketch", + "type": "Sketch", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Sketch", + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + }, + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": true, + "includeInSnippet": true, + "description": "Which sketch should this path be added to?", + "labelRequired": false + }, + { + "name": "startRadius", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "double", + "type": "number", + "format": "double", + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": true, + "includeInSnippet": true, + "description": "The involute is described between two circles, start_radius is the radius of the inner circle.", + "labelRequired": true + }, + { + "name": "endRadius", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "double", + "type": "number", + "format": "double", + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": true, + "includeInSnippet": true, + "description": "The involute is described between two circles, end_radius is the radius of the outer circle.", + "labelRequired": true + }, + { + "name": "angle", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "double", + "type": "number", + "format": "double", + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": true, + "includeInSnippet": true, + "description": "The angle to rotate the involute by. A value of zero will produce a curve with a tangent along the x-axis at the start point of the curve.", + "labelRequired": true + }, + { + "name": "reverse", + "type": "bool", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_Boolean", + "type": "boolean", + "nullable": true, + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": false, + "description": "If reverse is true, the segment will start from the end of the involute, otherwise it will start from that start. Defaults to false.", + "labelRequired": true + }, + { + "name": "tag", + "type": "TagNode", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_TagDeclarator", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true, + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": false, + "description": "Create a new tag which refers to this line", + "labelRequired": true + } + ], + "returnValue": { + "name": "", + "type": "Sketch", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Sketch", + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + }, + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": true, + "includeInSnippet": true, + "labelRequired": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "a = 10\nb = 14\nstartSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> involuteCircular(startRadius = a, endRadius = b, angle = 60)\n |> involuteCircular(\n startRadius = a,\n endRadius = b,\n angle = 60,\n reverse = true,\n )" ] }, { @@ -110568,6 +117593,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -110824,6 +117863,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -110840,6 +117880,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -111248,8 +118291,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -111288,8 +118330,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -111307,6 +118348,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -111321,7 +118366,7 @@ "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "double", + "title": "TyF64", "type": "number", "format": "double" }, @@ -112252,6 +119297,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -112508,6 +119567,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -112524,6 +119584,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -112932,8 +119995,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -112972,8 +120034,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -112991,6 +120052,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -113005,7 +120070,7 @@ "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "double", + "title": "TyF64", "type": "number", "format": "double" }, @@ -114101,6 +121166,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -114357,6 +121436,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -114373,6 +121453,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -114781,8 +121864,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -114821,8 +121903,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -114840,6 +121921,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -115704,6 +122789,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -115960,6 +123059,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -115976,6 +123076,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -116384,8 +123487,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -116424,8 +123526,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -116443,6 +123544,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -117306,6 +124411,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -117562,6 +124681,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -117578,6 +124698,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -117986,8 +125109,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -118026,8 +125148,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -118045,6 +125166,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -118907,6 +126032,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -119163,6 +126302,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -119179,6 +126319,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -119587,8 +126730,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -119627,8 +126769,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -119646,6 +126787,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -120564,6 +127709,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -120820,6 +127979,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -120836,6 +127996,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -121244,8 +128407,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -121284,8 +128446,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -121303,6 +128464,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -121313,7 +128478,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "triangle = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n // The 'end' argument means it ends at exactly [10, 0].\n // This is an absolute measurement, it is NOT relative to\n // the start of the sketch.\n |> line(endAbsolute = [10, 0])\n |> line(endAbsolute = [0, 10])\n |> line(endAbsolute = [-10, 0], tag = $thirdLineOfTriangle)\n |> close()\n |> extrude(length = 5)\n\nbox = startSketchOn(XZ)\n |> startProfileAt([10, 10], %)\n // The 'to' argument means move the pen this much.\n // So, [10, 0] is a relative distance away from the current point.\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> line(end = [-10, 0], tag = $thirdLineOfBox)\n |> close()\n |> extrude(length = 5)" + "triangle = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n // The END argument means it ends at exactly [10, 0].\n // This is an absolute measurement, it is NOT relative to\n // the start of the sketch.\n |> line(endAbsolute = [10, 0])\n |> line(endAbsolute = [0, 10])\n |> line(endAbsolute = [-10, 0], tag = $thirdLineOfTriangle)\n |> close()\n |> extrude(length = 5)\n\nbox = startSketchOn(XZ)\n |> startProfileAt([10, 10], %)\n // The 'to' argument means move the pen this much.\n // So, [10, 0] is a relative distance away from the current point.\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> line(end = [-10, 0], tag = $thirdLineOfBox)\n |> close()\n |> extrude(length = 5)" ] }, { @@ -122281,6 +129446,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -122537,6 +129716,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -122553,6 +129733,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -122834,8 +130017,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -122874,8 +130056,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -122894,6 +130075,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -123879,6 +131064,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -124135,6 +131334,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -124151,6 +131351,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -124432,8 +131635,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -124472,8 +131674,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -124492,6 +131693,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -125475,6 +132680,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -125731,6 +132950,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -125747,6 +132967,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -126028,8 +133251,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -126068,8 +133290,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -126088,6 +133309,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -127074,6 +134299,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -127330,6 +134569,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -127346,6 +134586,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -127627,8 +134870,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -127667,8 +134909,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -127687,6 +134928,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -128671,6 +135916,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -128927,6 +136186,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -128943,6 +136203,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -129224,8 +136487,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -129264,8 +136526,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -129284,6 +136545,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -130271,6 +137536,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -130527,6 +137806,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -130543,6 +137823,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -130824,8 +138107,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -130864,8 +138146,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -130884,6 +138165,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -131871,6 +139156,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -132127,6 +139426,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -132143,6 +139443,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -132424,8 +139727,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -132464,8 +139766,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -132484,6 +139785,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -133764,6 +141069,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -133973,6 +141292,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -133989,6 +141309,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -134085,8 +141408,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -134125,8 +141447,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -134145,6 +141466,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -134361,34 +141686,6 @@ "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [log2(100), 0])\n |> line(end = [5, 8])\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" ] }, - { - "name": "m", - "summary": "Meters conversion factor for current projects units.", - "description": "No matter what units the current project uses, this function will always return the conversion factor to meters.\n\nFor example, if the current project uses inches, this function will return `39.3701`. If the current project uses millimeters, this function will return `1000`. If the current project uses meters, this function will return `1`.\n\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function.\n\nWe merely provide these functions for convenience and readability, as `10 * m()` is more readable that your intent is \"I want 10 meters\" than `10 * 1000`, if the project settings are in millimeters.", - "tags": [ - "units" - ], - "keywordArguments": false, - "args": [], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "double", - "type": "number", - "format": "double" - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "totalWidth = 10 * m()" - ] - }, { "name": "map", "summary": "Apply a function to every element of a list.", @@ -134899,6 +142196,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -134944,6 +142255,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -135109,6 +142434,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -135142,6 +142481,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -135245,6 +142598,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -135261,6 +142615,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -136711,8 +144068,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -136751,8 +144107,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -136771,6 +144126,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "Helix": { "description": "A helix.", "type": "object", @@ -137350,6 +144709,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -137395,6 +144768,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -137560,6 +144947,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -137593,6 +144994,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -137696,6 +145111,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -137712,6 +145128,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -139162,8 +146581,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -139202,8 +146620,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -139222,6 +146639,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "Helix": { "description": "A helix.", "type": "object", @@ -139805,6 +147226,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -139850,6 +147285,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -140015,6 +147464,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -140048,6 +147511,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -140151,6 +147628,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -140167,6 +147645,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -141617,8 +149098,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -141657,8 +149137,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -141677,6 +149156,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "Helix": { "description": "A helix.", "type": "object", @@ -141805,7 +149288,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle = 70,\n length = max(15, 31, 4, 13, 22)\n }, %)\n |> line(end = [20, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = 70, length = max(15, 31, 4, 13, 22))\n |> line(end = [20, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" ] }, { @@ -141850,35 +149333,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle = 70,\n length = min(15, 31, 4, 13, 22)\n }, %)\n |> line(end = [20, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" - ] - }, - { - "name": "mm", - "summary": "Millimeters conversion factor for current projects units.", - "description": "No matter what units the current project uses, this function will always return the conversion factor to millimeters.\n\nFor example, if the current project uses inches, this function will return `(1/25.4)`. If the current project uses millimeters, this function will return `1`.\n\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function.\n\nWe merely provide these functions for convenience and readability, as `10 * mm()` is more readable that your intent is \"I want 10 millimeters\" than `10 * (1/25.4)`, if the project settings are in inches.", - "tags": [ - "units" - ], - "keywordArguments": false, - "args": [], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "double", - "type": "number", - "format": "double" - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "totalWidth = 10 * mm()" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = 70, length = min(15, 31, 4, 13, 22))\n |> line(end = [20, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" ] }, { @@ -141996,6 +149451,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -142012,14 +149468,120 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] } } }, "required": true, "includeInSnippet": true, - "description": "The plane (e.g. 'XY') which this new plane is created from.", + "description": "The plane (e.g. XY) which this new plane is created from.", "labelRequired": false }, { @@ -142034,6 +149596,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -142050,8 +149613,114 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] } } }, @@ -142166,6 +149835,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -142182,6 +149852,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -142271,6 +149944,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] } @@ -143213,6 +150900,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -143469,6 +151170,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -143485,6 +151187,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -143766,8 +151471,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -143806,8 +151510,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -143826,6 +151529,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -144811,6 +152518,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -145067,6 +152788,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -145083,6 +152805,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -145364,8 +153089,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -145404,8 +153128,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -145424,6 +153147,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -146413,6 +154140,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -146669,6 +154410,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -146685,6 +154427,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -146966,8 +154711,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -147006,8 +154750,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -147026,6 +154769,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -148010,6 +155757,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -148266,6 +156027,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -148282,6 +156044,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -148563,8 +156328,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -148603,8 +156367,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -148623,6 +156386,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -149606,6 +157373,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -149862,6 +157643,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -149878,6 +157660,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -150159,8 +157944,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -150199,8 +157983,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -150219,6 +158002,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -151203,6 +158990,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -151459,6 +159260,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -151475,6 +159277,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -151756,8 +159561,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -151796,8 +159600,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -151816,6 +159619,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -152802,6 +160609,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -153058,6 +160879,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -153074,6 +160896,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -153355,8 +161180,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -153395,8 +161219,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -153415,6 +161238,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -154713,6 +162540,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -154922,6 +162763,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -154938,6 +162780,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -155029,8 +162874,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -155069,8 +162913,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -155088,6 +162931,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -156311,6 +164158,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -156520,6 +164381,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -156536,6 +164398,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -156627,8 +164492,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -156667,8 +164531,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -156686,6 +164549,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -157913,6 +165780,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -158122,6 +166003,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -158138,6 +166020,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -158229,8 +166114,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -158269,8 +166153,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -158288,6 +166171,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -159515,6 +167402,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -159724,6 +167625,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -159740,6 +167642,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -159831,8 +167736,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -159871,8 +167775,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -159890,6 +167793,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -161112,6 +169019,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -161321,6 +169242,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -161337,6 +169259,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -161428,8 +169353,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -161468,8 +169392,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -161487,6 +169410,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -162708,6 +170635,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -162917,6 +170858,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -162933,6 +170875,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -163024,8 +170969,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -163064,8 +171008,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -163083,6 +171026,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -164305,6 +172252,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -164514,6 +172475,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -164530,6 +172492,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -164621,8 +172586,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -164661,8 +172625,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -164680,6 +172643,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -165904,6 +173871,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -166113,6 +174094,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -166129,6 +174111,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -166220,8 +174205,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -166260,8 +174244,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -166279,6 +174262,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -167215,6 +175202,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -167471,6 +175472,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -167487,6 +175489,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -167768,8 +175773,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -167808,8 +175812,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -167828,6 +175831,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -168813,6 +176820,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -169069,6 +177090,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -169085,6 +177107,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -169366,8 +177391,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -169406,8 +177430,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -169426,6 +177449,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -170410,6 +178437,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -170666,6 +178707,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -170682,6 +178724,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -170963,8 +179008,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -171003,8 +179047,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -171023,6 +179066,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -172012,6 +180059,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -172268,6 +180329,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -172284,6 +180346,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -172565,8 +180630,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -172605,8 +180669,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -172625,6 +180688,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -173609,6 +181676,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -173865,6 +181946,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -173881,6 +181963,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -174162,8 +182247,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -174202,8 +182286,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -174222,6 +182305,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -175208,6 +183295,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -175464,6 +183565,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -175480,6 +183582,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -175761,8 +183866,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -175801,8 +183905,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -175821,6 +183924,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -177119,6 +185226,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -177328,6 +185449,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -177344,6 +185466,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -177435,8 +185560,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -177475,8 +185599,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -177494,6 +185617,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -178717,6 +186844,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -178926,6 +187067,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -178942,6 +187084,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -179033,8 +187178,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -179073,8 +187217,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -179092,6 +187235,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -180314,6 +188461,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -180523,6 +188684,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -180539,6 +188701,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -180630,8 +188795,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -180670,8 +188834,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -180689,6 +188852,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -181916,6 +190083,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -182125,6 +190306,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -182141,6 +190323,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -182232,8 +190417,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -182272,8 +190456,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -182291,6 +190474,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -183513,6 +191700,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -183722,6 +191923,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -183738,6 +191940,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -183829,8 +192034,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -183869,8 +192073,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -183888,6 +192091,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -185112,6 +193319,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -185321,6 +193542,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -185337,6 +193559,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -185428,8 +193653,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -185468,8 +193692,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -185487,6 +193710,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -185498,8 +193725,8 @@ "deprecated": false, "examples": [ "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [0, 2])\n |> line(end = [3, 1])\n |> line(end = [0, -4])\n |> close()\n\nexample = extrude(exampleSketch, length = 1)\n |> patternLinear3d(axis = [1, 0, 1], instances = 7, distance = 6)", - "// Pattern a whole sketch on face.\nsize = 100\ncase = startSketchOn(XY)\n |> startProfileAt([-size, -size], %)\n |> line(end = [2 * size, 0])\n |> line(end = [0, 2 * size])\n |> tangentialArcTo([-size, size], %)\n |> close(%)\n |> extrude(length = 65)\n\nthing1 = startSketchOn(case, 'end')\n |> circle(center = [-size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\nthing2 = startSketchOn(case, 'end')\n |> circle(center = [size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\n // We pass in the \"case\" here since we want to pattern the whole sketch.\n// And the case was the base of the sketch.\npatternLinear3d(\n case,\n axis = [1, 0, 0],\n distance = 250,\n instances = 2,\n)", - "// Pattern an object on a face.\nsize = 100\ncase = startSketchOn(XY)\n |> startProfileAt([-size, -size], %)\n |> line(end = [2 * size, 0])\n |> line(end = [0, 2 * size])\n |> tangentialArcTo([-size, size], %)\n |> close(%)\n |> extrude(length = 65)\n\nthing1 = startSketchOn(case, 'end')\n |> circle(center = [-size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\n// We pass in `thing1` here with `useOriginal` since we want to pattern just this object on the face.\npatternLinear3d(\n thing1,\n axis = [1, 0, 0],\n distance = size,\n instances = 2,\n useOriginal = true,\n)" + "// Pattern a whole sketch on face.\nsize = 100\ncase = startSketchOn(XY)\n |> startProfileAt([-size, -size], %)\n |> line(end = [2 * size, 0])\n |> line(end = [0, 2 * size])\n |> tangentialArc(endAbsolute = [-size, size])\n |> close(%)\n |> extrude(length = 65)\n\nthing1 = startSketchOn(case, face = END)\n |> circle(center = [-size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\nthing2 = startSketchOn(case, face = END)\n |> circle(center = [size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\n // We pass in the \"case\" here since we want to pattern the whole sketch.\n// And the case was the base of the sketch.\npatternLinear3d(\n case,\n axis = [1, 0, 0],\n distance = 250,\n instances = 2,\n)", + "// Pattern an object on a face.\nsize = 100\ncase = startSketchOn(XY)\n |> startProfileAt([-size, -size], %)\n |> line(end = [2 * size, 0])\n |> line(end = [0, 2 * size])\n |> tangentialArc(endAbsolute = [-size, size])\n |> close(%)\n |> extrude(length = 65)\n\nthing1 = startSketchOn(case, face = END)\n |> circle(center = [-size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\n// We pass in `thing1` here with `useOriginal` since we want to pattern just this object on the face.\npatternLinear3d(\n thing1,\n axis = [1, 0, 0],\n distance = size,\n instances = 2,\n useOriginal = true,\n)" ] }, { @@ -186725,6 +194952,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -186934,6 +195175,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -186950,6 +195192,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -187041,8 +195286,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -187081,8 +195325,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -187100,6 +195343,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -188323,6 +196570,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -188532,6 +196793,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -188548,6 +196810,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -188639,8 +196904,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -188679,8 +196943,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -188698,6 +196961,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -189919,6 +198186,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -190128,6 +198409,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -190144,6 +198426,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -190235,8 +198520,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -190275,8 +198559,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -190294,6 +198577,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -191516,6 +199803,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -191725,6 +200026,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -191741,6 +200043,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -191832,8 +200137,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -191872,8 +200176,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -191891,6 +200194,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -193115,6 +201422,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -193324,6 +201645,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -193340,6 +201662,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -193431,8 +201756,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -193471,8 +201795,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -193490,6 +201813,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -194431,6 +202758,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -194687,6 +203028,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -194703,6 +203045,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -194984,8 +203329,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -195024,8 +203368,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -195044,6 +203387,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -196029,6 +204376,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -196285,6 +204646,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -196301,6 +204663,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -196582,8 +204947,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -196622,8 +204986,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -196642,6 +205005,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -197625,6 +205992,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -197881,6 +206262,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -197897,6 +206279,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -198178,8 +206563,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -198218,8 +206602,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -198238,6 +206621,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -199222,6 +207609,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -199478,6 +207879,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -199494,6 +207896,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -199775,8 +208180,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -199815,8 +208219,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -199835,6 +208238,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -200821,6 +209228,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -201077,6 +209498,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -201093,6 +209515,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -201374,8 +209799,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -201414,8 +209838,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -201434,6 +209857,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -201537,76 +209964,6 @@ "circumference = 70\n\nexampleSketch = startSketchOn(XZ)\n |> circle(center = [0, 0], radius = circumference / (2 * pi()))\n\nexample = extrude(exampleSketch, length = 5)" ] }, - { - "name": "polar", - "summary": "Convert polar/sphere (azimuth, elevation, distance) coordinates to cartesian (x/y/z grid) coordinates.", - "description": "", - "tags": [], - "keywordArguments": false, - "args": [ - { - "name": "data", - "type": "PolarCoordsData", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "PolarCoordsData", - "description": "Data for polar coordinates.", - "type": "object", - "required": [ - "angle", - "length" - ], - "properties": { - "angle": { - "description": "The angle of the line (in degrees).", - "type": "number", - "format": "double" - }, - "length": { - "description": "The length of the line.", - "allOf": [ - { - "$ref": "#/components/schemas/TyF64" - } - ] - } - }, - "definitions": { - "TyF64": { - "type": "number", - "format": "double" - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - } - ], - "returnValue": { - "name": "", - "type": "[number]", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Array_size_2_of_double", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = polar({ angle = 30, length = 5 }), tag = $thing)\n |> line(end = [0, 5])\n |> line(end = [segEndX(thing), 0])\n |> line(end = [-20, 10])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" - ] - }, { "name": "polygon", "summary": "Create a regular polygon with the specified number of sides that is either inscribed or circumscribed around a circle of the specified radius.", @@ -201630,8 +209987,11 @@ "properties": { "radius": { "description": "The radius of the polygon", - "type": "number", - "format": "double" + "allOf": [ + { + "$ref": "#/components/schemas/TyF64" + } + ] }, "numSides": { "description": "The number of sides in the polygon", @@ -201643,8 +210003,7 @@ "description": "The center point of the polygon", "type": "array", "items": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2 @@ -201654,6 +210013,12 @@ "default": true, "type": "boolean" } + }, + "definitions": { + "TyF64": { + "type": "number", + "format": "double" + } } }, "required": true, @@ -201676,6 +210041,10 @@ } ], "definitions": { + "TyF64": { + "type": "number", + "format": "double" + }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ @@ -201863,6 +210232,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -201879,6 +210249,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -201968,6 +210341,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -203197,8 +211584,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -203237,8 +211623,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -203276,6 +211661,10 @@ ], "nullable": true, "definitions": { + "TyF64": { + "type": "number", + "format": "double" + }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ @@ -203463,6 +211852,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -203479,6 +211869,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -203568,6 +211961,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -204797,8 +213204,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -204837,8 +213243,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -205773,6 +214178,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -206029,6 +214448,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -206045,6 +214465,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -206453,8 +214876,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -206493,8 +214915,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -206512,6 +214933,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -207036,6 +215461,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -207081,6 +215520,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -207246,6 +215699,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -207279,6 +215746,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -207382,6 +215863,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -207398,6 +215880,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -208848,8 +217333,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -208888,8 +217372,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -208908,6 +217391,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "Helix": { "description": "A helix.", "type": "object", @@ -209486,6 +217973,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -209531,6 +218032,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -209696,6 +218211,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -209729,6 +218258,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -210218,6 +218761,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -210234,6 +218778,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -211684,8 +220231,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -211724,8 +220270,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -211744,6 +220289,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "Helix": { "description": "A helix.", "type": "object", @@ -211881,7 +220430,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle = 50, length = pow(5, 2) }, %)\n |> yLine(endAbsolute = 0)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = 50, length = pow(5, 2))\n |> yLine(endAbsolute = 0)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" ] }, { @@ -212801,6 +221350,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -213057,6 +221620,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -213073,6 +221637,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -213481,8 +222048,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -213521,8 +222087,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -213540,6 +222105,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -213569,7 +222138,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "sketch001 = startSketchOn(XY)\n |> startProfileAt([5, 2], %)\n |> angledLine({ angle = 120, length = 50 }, %, $seg01)\n |> angledLine({\n angle = segAng(seg01) + 120,\n length = 50\n }, %)\n |> line(end = profileStart(%))\n |> close()\n |> extrude(length = 20)" + "sketch001 = startSketchOn(XY)\n |> startProfileAt([5, 2], %)\n |> angledLine(angle = 120, length = 50, tag = $seg01)\n |> angledLine(angle = segAng(seg01) + 120, length = 50)\n |> line(end = profileStart(%))\n |> close()\n |> extrude(length = 20)" ] }, { @@ -214489,6 +223058,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -214745,6 +223328,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -214761,6 +223345,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -215169,8 +223756,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -215209,8 +223795,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -215228,6 +223813,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -215252,7 +223841,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "sketch001 = startSketchOn(XY)\n |> startProfileAt([5, 2], %)\n |> angledLine([-26.6, 50], %)\n |> angledLine([90, 50], %)\n |> angledLineToX({ angle = 30, to = profileStartX(%) }, %)" + "sketch001 = startSketchOn(XY)\n |> startProfileAt([5, 2], %)\n |> angledLine(angle = -26.6, length = 50)\n |> angledLine(angle = 90, length = 50)\n |> angledLine(angle = 30, endAbsoluteX = profileStartX(%))" ] }, { @@ -216172,6 +224761,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -216428,6 +225031,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -216444,6 +225048,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -216852,8 +225459,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -216892,8 +225498,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -216911,6 +225516,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -216935,7 +225544,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "sketch001 = startSketchOn(XY)\n |> startProfileAt([5, 2], %)\n |> angledLine({ angle = -60, length = 14 }, %)\n |> angledLineToY({ angle = 30, to = profileStartY(%) }, %)" + "sketch001 = startSketchOn(XY)\n |> startProfileAt([5, 2], %)\n |> angledLine(angle = -60, length = 14)\n |> angledLine(angle = 30, endAbsoluteY = profileStartY(%))" ] }, { @@ -217448,6 +226057,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -217493,6 +226116,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -217658,6 +226295,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -217691,6 +226342,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -217794,6 +226459,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -217810,6 +226476,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -219260,8 +227929,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -219300,8 +227968,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -219320,6 +227987,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "Helix": { "description": "A helix.", "type": "object", @@ -220282,6 +228953,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -220327,6 +229012,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -220492,6 +229191,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -220525,6 +229238,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -220628,6 +229355,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -220644,6 +229372,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -222094,8 +230825,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -222134,8 +230864,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -222154,6 +230883,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "Helix": { "description": "A helix.", "type": "object", @@ -222731,6 +231464,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -222776,6 +231523,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -222941,6 +231702,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -222974,6 +231749,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -223463,6 +232252,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -223479,6 +232269,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -224929,8 +233722,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -224969,8 +233761,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -224989,6 +233780,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "Helix": { "description": "A helix.", "type": "object", @@ -225584,6 +234379,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -225629,6 +234438,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -225794,6 +234617,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -225827,6 +234664,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -225930,6 +234781,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -225946,6 +234798,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -227396,8 +236251,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -227436,8 +236290,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -227456,6 +236309,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "Helix": { "description": "A helix.", "type": "object", @@ -228418,6 +237275,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -228463,6 +237334,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -228628,6 +237513,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -228661,6 +237560,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -228764,6 +237677,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -228780,6 +237694,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -230230,8 +239147,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -230270,8 +239186,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -230290,6 +239205,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "Helix": { "description": "A helix.", "type": "object", @@ -230869,6 +239788,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -230914,6 +239847,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -231079,6 +240026,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -231112,6 +240073,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -231215,6 +240190,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -231231,6 +240207,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -232681,8 +241660,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -232721,8 +241699,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -232741,6 +241718,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "Helix": { "description": "A helix.", "type": "object", @@ -233318,6 +242299,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -233363,6 +242358,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ], "required": [ @@ -233528,6 +242537,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -233561,6 +242584,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -234050,6 +243087,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -234066,6 +243104,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -235516,8 +244557,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -235556,8 +244596,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -235576,6 +244615,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "Helix": { "description": "A helix.", "type": "object", @@ -235660,7 +244703,7 @@ "examples": [ "// This function adds two numbers.\nfn add(a, b) {\n return a + b\n}\n\n// This function adds an array of numbers.\n// It uses the `reduce` function, to call the `add` function on every\n// element of the `arr` parameter. The starting value is 0.\nfn sum(arr) {\n return reduce(arr, 0, add)\n}\n\n/* The above is basically like this pseudo-code:\nfn sum(arr):\n sumSoFar = 0\n for i in arr:\n sumSoFar = add(sumSoFar, i)\n return sumSoFar */\n\n// We use `assertEqual` to check that our `sum` function gives the\n// expected result. It's good to check your work!\nassertEqual(sum([1, 2, 3]), 6, 0.00001, \"1 + 2 + 3 summed is 6\")", "// This example works just like the previous example above, but it uses\n// an anonymous `add` function as its parameter, instead of declaring a\n// named function outside.\narr = [1, 2, 3]\nsum = reduce(arr, 0, fn(i, result_so_far) {\n return i + result_so_far\n})\n\n// We use `assertEqual` to check that our `sum` function gives the\n// expected result. It's good to check your work!\nassertEqual(sum, 6, 0.00001, \"1 + 2 + 3 summed is 6\")", - "// Declare a function that sketches a decagon.\nfn decagon(radius) {\n // Each side of the decagon is turned this many degrees from the previous angle.\n stepAngle = 1 / 10 * TAU\n\n // Start the decagon sketch at this point.\n startOfDecagonSketch = startSketchOn(XY)\n |> startProfileAt([cos(0) * radius, sin(0) * radius], %)\n\n // Use a `reduce` to draw the remaining decagon sides.\n // For each number in the array 1..10, run the given function,\n // which takes a partially-sketched decagon and adds one more edge to it.\n fullDecagon = reduce([1..10], startOfDecagonSketch, fn(i, partialDecagon) {\n // Draw one edge of the decagon.\n x = cos(stepAngle * i) * radius\n y = sin(stepAngle * i) * radius\n return line(partialDecagon, end = [x, y])\n })\n\n return fullDecagon\n}\n\n/* The `decagon` above is basically like this pseudo-code:\nfn decagon(radius):\n stepAngle = (1/10) * TAU\n plane = startSketchOn('XY')\n startOfDecagonSketch = startProfileAt([(cos(0)*radius), (sin(0) * radius)], plane)\n\n // Here's the reduce part.\n partialDecagon = startOfDecagonSketch\n for i in [1..10]:\n x = cos(stepAngle * i) * radius\n y = sin(stepAngle * i) * radius\n partialDecagon = line(partialDecagon, end = [x, y])\n fullDecagon = partialDecagon // it's now full\n return fullDecagon */\n\n// Use the `decagon` function declared above, to sketch a decagon with radius 5.\ndecagon(5.0)\n |> close()" + "// Declare a function that sketches a decagon.\nfn decagon(radius) {\n // Each side of the decagon is turned this many radians from the previous angle.\n stepAngle = 1 / 10 * TAU\n\n // Start the decagon sketch at this point.\n startOfDecagonSketch = startSketchOn(XY)\n |> startProfileAt([cos(0) * radius, sin(0) * radius], %)\n\n // Use a `reduce` to draw the remaining decagon sides.\n // For each number in the array 1..10, run the given function,\n // which takes a partially-sketched decagon and adds one more edge to it.\n fullDecagon = reduce([1..10], startOfDecagonSketch, fn(i, partialDecagon) {\n // Draw one edge of the decagon.\n x = cos(stepAngle * i) * radius\n y = sin(stepAngle * i) * radius\n return line(partialDecagon, end = [x, y])\n })\n\n return fullDecagon\n}\n\n/* The `decagon` above is basically like this pseudo-code:\nfn decagon(radius):\n stepAngle = (1/10) * TAU\n plane = startSketchOn('XY')\n startOfDecagonSketch = startProfileAt([(cos(0)*radius), (sin(0) * radius)], plane)\n\n // Here's the reduce part.\n partialDecagon = startOfDecagonSketch\n for i in [1..10]:\n x = cos(stepAngle * i) * radius\n y = sin(stepAngle * i) * radius\n partialDecagon = line(partialDecagon, end = [x, y])\n fullDecagon = partialDecagon // it's now full\n return fullDecagon */\n\n// Use the `decagon` function declared above, to sketch a decagon with radius 5.\ndecagon(5.0)\n |> close()" ] }, { @@ -237011,6 +246054,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -237220,6 +246277,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -237236,6 +246294,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -237327,8 +246388,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -237367,8 +246427,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -237386,6 +246445,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -238609,6 +247672,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -238818,6 +247895,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -238834,6 +247912,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -238925,8 +248006,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -238965,8 +248045,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -238984,6 +248063,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -240207,6 +249290,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -240416,6 +249513,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -240432,6 +249530,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -240523,8 +249624,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -240563,8 +249663,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -240582,6 +249681,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -241805,6 +250908,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -242014,6 +251131,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -242030,6 +251148,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -242121,8 +251242,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -242161,8 +251281,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -242180,6 +251299,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -243408,6 +252531,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -243617,6 +252754,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -243633,6 +252771,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -243724,8 +252865,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -243764,8 +252904,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -243783,6 +252922,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -245005,6 +254148,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -245214,6 +254371,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -245230,6 +254388,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -245321,8 +254482,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -245361,8 +254521,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -245380,6 +254539,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -246601,6 +255764,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -246810,6 +255987,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -246826,6 +256004,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -246917,8 +256098,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -246957,8 +256137,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -246976,6 +256155,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -248268,6 +257451,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -248477,6 +257674,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -248493,6 +257691,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -248584,8 +257785,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -248624,8 +257824,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -248643,6 +257842,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -248653,11 +257856,11 @@ "unpublished": false, "deprecated": false, "examples": [ - "// Rotate a pipe with roll, pitch, and yaw.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc({ offset = 90, radius = 5 }, %)\n |> line(end = [-3, 0])\n |> tangentialArc({ offset = -90, radius = 5 }, %)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> rotate(roll = 10, pitch = 10, yaw = 90)", - "// Rotate a pipe with just roll.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc({ offset = 90, radius = 5 }, %)\n |> line(end = [-3, 0])\n |> tangentialArc({ offset = -90, radius = 5 }, %)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> rotate(roll = 10)", - "// Rotate a pipe about an axis with an angle.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc({ offset = 90, radius = 5 }, %)\n |> line(end = [-3, 0])\n |> tangentialArc({ offset = -90, radius = 5 }, %)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> rotate(axis = [0, 0, 1.0], angle = 90)", + "// Rotate a pipe with roll, pitch, and yaw.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc(angle = 90, radius = 5)\n |> line(end = [-3, 0])\n |> tangentialArc(angle = -90, radius = 5)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> rotate(roll = 10, pitch = 10, yaw = 90)", + "// Rotate a pipe with just roll.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc(angle = 90, radius = 5)\n |> line(end = [-3, 0])\n |> tangentialArc(angle = -90, radius = 5)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> rotate(roll = 10)", + "// Rotate a pipe about an axis with an angle.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc(angle = 90, radius = 5)\n |> line(end = [-3, 0])\n |> tangentialArc(angle = -90, radius = 5)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> rotate(axis = [0, 0, 1.0], angle = 90)", "// Rotate an imported model.\n\n\nimport \"tests/inputs/cube.sldprt\" as cube\n\ncube\n |> rotate(axis = [0, 0, 1.0], angle = 9)", - "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfileAt([-200, 23.86], sketch001)\n |> angledLine([0, 73.47], %, $rectangleSegmentA001)\n |> angledLine([\n segAng(rectangleSegmentA001) - 90,\n 50.61\n ], %)\n |> angledLine([\n segAng(rectangleSegmentA001),\n -segLen(rectangleSegmentA001)\n ], %)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfileAt([0, 0], sketch002)\n |> yLine(length = 231.81)\n |> tangentialArc({ radius = 80, offset = -90 }, %)\n |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Rotate the sweeps.\nrotate(parts, axis = [0, 0, 1.0], angle = 90)", + "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfileAt([-200, 23.86], sketch001)\n |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001)\n |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61)\n |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfileAt([0, 0], sketch002)\n |> yLine(length = 231.81)\n |> tangentialArc(radius = 80, angle = -90)\n |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Rotate the sweeps.\nrotate(parts, axis = [0, 0, 1.0], angle = 90)", "// Translate and rotate a sketch to create a loft.\nsketch001 = startSketchOn(XY)\n\nfn square() {\n return startProfileAt([-10, 10], sketch001)\n |> xLine(length = 20)\n |> yLine(length = -20)\n |> xLine(length = -20)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n}\n\nprofile001 = square()\n\nprofile002 = square()\n |> translate(x = 0, y = 0, z = 20)\n |> rotate(axis = [0, 0, 1.0], angle = 45)\n\nloft([profile001, profile002])" ] }, @@ -249994,6 +259197,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -250203,6 +259420,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -250219,6 +259437,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -250310,8 +259531,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -250350,8 +259570,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -250369,6 +259588,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -251592,6 +260815,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -251801,6 +261038,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -251817,6 +261055,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -251908,8 +261149,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -251948,8 +261188,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -251967,6 +261206,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -253190,6 +262433,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -253399,6 +262656,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -253415,6 +262673,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -253506,8 +262767,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -253546,8 +262806,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -253565,6 +262824,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -254788,6 +264051,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -254997,6 +264274,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -255013,6 +264291,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -255104,8 +264385,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -255144,8 +264424,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -255163,6 +264442,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -256385,6 +265668,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -256594,6 +265891,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -256610,6 +265908,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -256701,8 +266002,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -256741,8 +266041,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -256760,6 +266059,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -258052,6 +267355,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -258261,6 +267578,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -258277,6 +267595,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -258368,8 +267689,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -258408,8 +267728,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -258427,6 +267746,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -258437,9 +267760,9 @@ "unpublished": false, "deprecated": false, "examples": [ - "// Scale a pipe.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc({ offset = 90, radius = 5 }, %)\n |> line(end = [-3, 0])\n |> tangentialArc({ offset = -90, radius = 5 }, %)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> scale(z = 2.5)", + "// Scale a pipe.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc(angle = 90, radius = 5)\n |> line(end = [-3, 0])\n |> tangentialArc(angle = -90, radius = 5)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> scale(z = 2.5)", "// Scale an imported model.\n\n\nimport \"tests/inputs/cube.sldprt\" as cube\n\ncube\n |> scale(y = 2.5)", - "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfileAt([-200, 23.86], sketch001)\n |> angledLine([0, 73.47], %, $rectangleSegmentA001)\n |> angledLine([\n segAng(rectangleSegmentA001) - 90,\n 50.61\n ], %)\n |> angledLine([\n segAng(rectangleSegmentA001),\n -segLen(rectangleSegmentA001)\n ], %)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfileAt([0, 0], sketch002)\n |> yLine(length = 231.81)\n |> tangentialArc({ radius = 80, offset = -90 }, %)\n |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Scale the sweep.\nscale(parts, z = 0.5)" + "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfileAt([-200, 23.86], sketch001)\n |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001)\n |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61)\n |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfileAt([0, 0], sketch002)\n |> yLine(length = 231.81)\n |> tangentialArc(radius = 80, angle = -90)\n |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Scale the sweep.\nscale(parts, z = 0.5)" ] }, { @@ -258487,7 +267810,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> line(end = [5, 10], tag = $seg01)\n |> line(end = [-10, 0])\n |> angledLine([segAng(seg01), 10], %)\n |> line(end = [-10, 0])\n |> angledLine([segAng(seg01), -15], %)\n |> close()\n\nexample = extrude(exampleSketch, length = 4)" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> line(end = [5, 10], tag = $seg01)\n |> line(end = [-10, 0])\n |> angledLine(angle = segAng(seg01), length = 10)\n |> line(end = [-10, 0])\n |> angledLine(angle = segAng(seg01), length = -15)\n |> close()\n\nexample = extrude(exampleSketch, length = 4)" ] }, { @@ -258524,14 +267847,19 @@ "type": "[number]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Array_size_2_of_double", + "title": "Array_size_2_of_TyF64", "type": "array", "items": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, - "minItems": 2 + "minItems": 2, + "definitions": { + "TyF64": { + "type": "number", + "format": "double" + } + } }, "required": true, "includeInSnippet": true, @@ -258577,7 +267905,7 @@ "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "double", + "title": "TyF64", "type": "number", "format": "double" }, @@ -258625,7 +267953,7 @@ "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "double", + "title": "TyF64", "type": "number", "format": "double" }, @@ -258673,7 +268001,7 @@ "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "double", + "title": "TyF64", "type": "number", "format": "double" }, @@ -258684,7 +268012,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle = 60, length = 10 }, %, $thing)\n |> tangentialArc({ offset = -120, radius = 5 }, %)\n |> angledLine({ angle = -60, length = segLen(thing) }, %)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = 60, length = 10, tag = $thing)\n |> tangentialArc(angle = -120, radius = 5)\n |> angledLine(angle = -60, length = segLen(thing))\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" ] }, { @@ -258721,14 +268049,19 @@ "type": "[number]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Array_size_2_of_double", + "title": "Array_size_2_of_TyF64", "type": "array", "items": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, - "minItems": 2 + "minItems": 2, + "definitions": { + "TyF64": { + "type": "number", + "format": "double" + } + } }, "required": true, "includeInSnippet": true, @@ -258774,7 +268107,7 @@ "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "double", + "title": "TyF64", "type": "number", "format": "double" }, @@ -258822,7 +268155,7 @@ "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "double", + "title": "TyF64", "type": "number", "format": "double" }, @@ -260059,6 +269392,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -260268,6 +269615,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -260284,6 +269632,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -260375,8 +269726,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -260415,8 +269765,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -260434,6 +269783,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -261656,6 +271009,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -261865,6 +271232,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -261881,6 +271249,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -261972,8 +271343,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -262012,8 +271382,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -262031,6 +271400,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -263255,6 +272628,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -263464,6 +272851,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -263480,6 +272868,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -263571,8 +272962,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -263611,8 +273001,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -263631,6 +273020,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "FaceTag": { "description": "A tag for a face.", "anyOf": [ @@ -264889,6 +274282,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -265098,6 +274505,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -265114,6 +274522,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -265205,8 +274616,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -265245,8 +274655,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -265264,6 +274673,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -265274,13 +274687,13 @@ "unpublished": false, "deprecated": false, "examples": [ - "// Remove the end face for the extrusion.\nfirstSketch = startSketchOn(XY)\n |> startProfileAt([-12, 12], %)\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0])\n |> close()\n |> extrude(length = 6)\n\n// Remove the end face for the extrusion.\nshell(firstSketch, faces = ['end'], thickness = 0.25)", - "// Remove the start face for the extrusion.\nfirstSketch = startSketchOn(-XZ)\n |> startProfileAt([-12, 12], %)\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0])\n |> close()\n |> extrude(length = 6)\n\n// Remove the start face for the extrusion.\nshell(firstSketch, faces = ['start'], thickness = 0.25)", + "// Remove the end face for the extrusion.\nfirstSketch = startSketchOn(XY)\n |> startProfileAt([-12, 12], %)\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0])\n |> close()\n |> extrude(length = 6)\n\n// Remove the end face for the extrusion.\nshell(firstSketch, faces = [END], thickness = 0.25)", + "// Remove the start face for the extrusion.\nfirstSketch = startSketchOn(-XZ)\n |> startProfileAt([-12, 12], %)\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0])\n |> close()\n |> extrude(length = 6)\n\n// Remove the start face for the extrusion.\nshell(firstSketch, faces = [START], thickness = 0.25)", "// Remove a tagged face and the end face for the extrusion.\nfirstSketch = startSketchOn(XY)\n |> startProfileAt([-12, 12], %)\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0], tag = $myTag)\n |> close()\n |> extrude(length = 6)\n\n// Remove a tagged face for the extrusion.\nshell(firstSketch, faces = [myTag], thickness = 0.25)", - "// Remove multiple faces at once.\nfirstSketch = startSketchOn(XY)\n |> startProfileAt([-12, 12], %)\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0], tag = $myTag)\n |> close()\n |> extrude(length = 6)\n\n// Remove a tagged face and the end face for the extrusion.\nshell(firstSketch, faces = [myTag, 'end'], thickness = 0.25)", - "// Shell a sketch on face.\nsize = 100\ncase = startSketchOn(-XZ)\n |> startProfileAt([-size, -size], %)\n |> line(end = [2 * size, 0])\n |> line(end = [0, 2 * size])\n |> tangentialArcTo([-size, size], %)\n |> close()\n |> extrude(length = 65)\n\nthing1 = startSketchOn(case, 'end')\n |> circle(center = [-size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\nthing2 = startSketchOn(case, 'end')\n |> circle(center = [size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\n// We put \"case\" in the shell function to shell the entire object.\nshell(case, faces = ['start'], thickness = 5)", - "// Shell a sketch on face object on the end face.\nsize = 100\ncase = startSketchOn(XY)\n |> startProfileAt([-size, -size], %)\n |> line(end = [2 * size, 0])\n |> line(end = [0, 2 * size])\n |> tangentialArcTo([-size, size], %)\n |> close()\n |> extrude(length = 65)\n\nthing1 = startSketchOn(case, 'end')\n |> circle(center = [-size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\nthing2 = startSketchOn(case, 'end')\n |> circle(center = [size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\n// We put \"thing1\" in the shell function to shell the end face of the object.\nshell(thing1, faces = ['end'], thickness = 5)", - "// Shell sketched on face objects on the end face, include all sketches to shell\n// the entire object.\n\n\nsize = 100\ncase = startSketchOn(XY)\n |> startProfileAt([-size, -size], %)\n |> line(end = [2 * size, 0])\n |> line(end = [0, 2 * size])\n |> tangentialArcTo([-size, size], %)\n |> close()\n |> extrude(length = 65)\n\nthing1 = startSketchOn(case, 'end')\n |> circle(center = [-size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\nthing2 = startSketchOn(case, 'end')\n |> circle(center = [size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\n// We put \"thing1\" and \"thing2\" in the shell function to shell the end face of the object.\nshell([thing1, thing2], faces = ['end'], thickness = 5)" + "// Remove multiple faces at once.\nfirstSketch = startSketchOn(XY)\n |> startProfileAt([-12, 12], %)\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0], tag = $myTag)\n |> close()\n |> extrude(length = 6)\n\n// Remove a tagged face and the end face for the extrusion.\nshell(firstSketch, faces = [myTag, END], thickness = 0.25)", + "// Shell a sketch on face.\nsize = 100\ncase = startSketchOn(-XZ)\n |> startProfileAt([-size, -size], %)\n |> line(end = [2 * size, 0])\n |> line(end = [0, 2 * size])\n |> tangentialArc(endAbsolute = [-size, size])\n |> close()\n |> extrude(length = 65)\n\nthing1 = startSketchOn(case, face = END)\n |> circle(center = [-size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\nthing2 = startSketchOn(case, face = END)\n |> circle(center = [size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\n// We put \"case\" in the shell function to shell the entire object.\nshell(case, faces = [START], thickness = 5)", + "// Shell a sketch on face object on the end face.\nsize = 100\ncase = startSketchOn(XY)\n |> startProfileAt([-size, -size], %)\n |> line(end = [2 * size, 0])\n |> line(end = [0, 2 * size])\n |> tangentialArc(endAbsolute = [-size, size])\n |> close()\n |> extrude(length = 65)\n\nthing1 = startSketchOn(case, face = END)\n |> circle(center = [-size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\nthing2 = startSketchOn(case, face = END)\n |> circle(center = [size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\n// We put \"thing1\" in the shell function to shell the end face of the object.\nshell(thing1, faces = [END], thickness = 5)", + "// Shell sketched on face objects on the end face, include all sketches to shell\n// the entire object.\n\n\nsize = 100\ncase = startSketchOn(XY)\n |> startProfileAt([-size, -size], %)\n |> line(end = [2 * size, 0])\n |> line(end = [0, 2 * size])\n |> tangentialArc(endAbsolute = [-size, size])\n |> close()\n |> extrude(length = 65)\n\nthing1 = startSketchOn(case, face = END)\n |> circle(center = [-size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\nthing2 = startSketchOn(case, face = END)\n |> circle(center = [size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\n// We put \"thing1\" and \"thing2\" in the shell function to shell the end face of the object.\nshell([thing1, thing2], faces = [END], thickness = 5)" ] }, { @@ -265322,7 +274735,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle = 50, length = sqrt(2500) }, %)\n |> yLine(endAbsolute = 0)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = 50, length = sqrt(2500))\n |> yLine(endAbsolute = 0)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" ] }, { @@ -265542,6 +274955,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -265558,6 +274972,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -265647,6 +275064,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -267029,8 +276460,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -267069,8 +276499,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -267088,6 +276517,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -267142,6 +276575,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -267158,6 +276592,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -267247,6 +276684,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -268629,8 +278080,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -268669,8 +278119,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -268688,6 +278137,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -269605,6 +279058,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -269861,6 +279328,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -269877,6 +279345,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -270285,8 +279756,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -270325,8 +279795,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -270344,6 +279813,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -270364,10 +279837,10 @@ "summary": "Start a new 2-dimensional sketch on a specific plane or face.", "description": "### Sketch on Face Behavior\n\nThere are some important behaviors to understand when sketching on a face:\n\nThe resulting sketch will _include_ the face and thus Solid that was sketched on. So say you were to export the resulting Sketch / Solid from a sketch on a face, you would get both the artifact of the sketch on the face and the parent face / Solid itself.\n\nThis is important to understand because if you were to then sketch on the resulting Solid, it would again include the face and parent Solid that was sketched on. This could go on indefinitely.\n\nThe point is if you want to export the result of a sketch on a face, you only need to export the final Solid that was created from the sketch on the face, since it will include all the parent faces and Solids.", "tags": [], - "keywordArguments": false, + "keywordArguments": true, "args": [ { - "name": "data", + "name": "planeOrSolid", "type": "SketchData", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", @@ -270488,6 +279961,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -270504,9 +279978,115 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, "Plane": { "type": "object", "required": [ @@ -270604,95 +280184,6 @@ } ] }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, "Solid": { "type": "object", "required": [ @@ -272072,8 +281563,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -272112,8 +281602,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -272131,15 +281620,20 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, "required": true, "includeInSnippet": true, - "labelRequired": true + "description": "The plane or solid to sketch on", + "labelRequired": false }, { - "name": "tag", + "name": "face", "type": "FaceTag", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", @@ -272254,6 +281748,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -272270,9 +281765,115 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, "Plane": { "type": "object", "required": [ @@ -272370,95 +281971,6 @@ } ] }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, "Solid": { "type": "object", "required": [ @@ -273838,8 +283350,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -273878,8 +283389,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -273898,6 +283408,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "FaceTag": { "description": "A tag for a face.", "anyOf": [ @@ -273935,6 +283449,7 @@ } }, "required": false, + "description": "Identify a face of a solid if a solid is specified as the input argument (`plane_or_solid`)", "labelRequired": true } ], @@ -274130,6 +283645,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -274146,6 +283662,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -274235,6 +283754,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -275617,8 +285150,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -275657,8 +285189,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -275676,6 +285207,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -275686,12 +285221,12 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XY)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)\n\nexampleSketch002 = startSketchOn(example, 'end')\n |> startProfileAt([1, 1], %)\n |> line(end = [8, 0])\n |> line(end = [0, 8])\n |> line(end = [-8, 0])\n |> close()\n\nexample002 = extrude(exampleSketch002, length = 5)\n\nexampleSketch003 = startSketchOn(example002, 'end')\n |> startProfileAt([2, 2], %)\n |> line(end = [6, 0])\n |> line(end = [0, 6])\n |> line(end = [-6, 0])\n |> close()\n\nexample003 = extrude(exampleSketch003, length = 5)", - "// Sketch on the end of an extruded face by tagging the end face.\n\n\nexampleSketch = startSketchOn(XY)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5, tagEnd = $end01)\n\nexampleSketch002 = startSketchOn(example, end01)\n |> startProfileAt([1, 1], %)\n |> line(end = [8, 0])\n |> line(end = [0, 8])\n |> line(end = [-8, 0])\n |> close()\n\nexample002 = extrude(exampleSketch002, length = 5, tagEnd = $end02)\n\nexampleSketch003 = startSketchOn(example002, end02)\n |> startProfileAt([2, 2], %)\n |> line(end = [6, 0])\n |> line(end = [0, 6])\n |> line(end = [-6, 0])\n |> close()\n\nexample003 = extrude(exampleSketch003, length = 5)", - "exampleSketch = startSketchOn(XY)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> line(end = [0, 10], tag = $sketchingFace)\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)\n\nexampleSketch002 = startSketchOn(example, sketchingFace)\n |> startProfileAt([1, 1], %)\n |> line(end = [8, 0])\n |> line(end = [0, 8])\n |> line(end = [-8, 0])\n |> close(tag = $sketchingFace002)\n\nexample002 = extrude(exampleSketch002, length = 10)\n\nexampleSketch003 = startSketchOn(example002, sketchingFace002)\n |> startProfileAt([-8, 12], %)\n |> line(end = [0, 6])\n |> line(end = [6, 0])\n |> line(end = [0, -6])\n |> close()\n\nexample003 = extrude(exampleSketch003, length = 5)", - "exampleSketch = startSketchOn(XY)\n |> startProfileAt([4, 12], %)\n |> line(end = [2, 0])\n |> line(end = [0, -6])\n |> line(end = [4, -6])\n |> line(end = [0, -6])\n |> line(end = [-3.75, -4.5])\n |> line(end = [0, -5.5])\n |> line(end = [-2, 0])\n |> close()\n\nexample = revolve(exampleSketch, axis = Y, angle = 180)\n\nexampleSketch002 = startSketchOn(example, 'end')\n |> startProfileAt([4.5, -5], %)\n |> line(end = [0, 5])\n |> line(end = [5, 0])\n |> line(end = [0, -5])\n |> close()\n\nexample002 = extrude(exampleSketch002, length = 5)", - "// Sketch on the end of a revolved face by tagging the end face.\n\n\nexampleSketch = startSketchOn(XY)\n |> startProfileAt([4, 12], %)\n |> line(end = [2, 0])\n |> line(end = [0, -6])\n |> line(end = [4, -6])\n |> line(end = [0, -6])\n |> line(end = [-3.75, -4.5])\n |> line(end = [0, -5.5])\n |> line(end = [-2, 0])\n |> close()\n\nexample = revolve(\n exampleSketch,\n axis = Y,\n angle = 180,\n tagEnd = $end01,\n)\n\nexampleSketch002 = startSketchOn(example, end01)\n |> startProfileAt([4.5, -5], %)\n |> line(end = [0, 5])\n |> line(end = [5, 0])\n |> line(end = [0, -5])\n |> close()\n\nexample002 = extrude(exampleSketch002, length = 5)", - "a1 = startSketchOn({\n plane = {\n origin = { x = 0, y = 0, z = 0 },\n xAxis = { x = 1, y = 0, z = 0 },\n yAxis = { x = 0, y = 1, z = 0 },\n zAxis = { x = 0, y = 0, z = 1 }\n }\n })\n |> startProfileAt([0, 0], %)\n |> line(end = [100.0, 0])\n |> yLine(length = -100.0)\n |> xLine(length = -100.0)\n |> yLine(length = 100.0)\n |> close()\n |> extrude(length = 3.14)" + "exampleSketch = startSketchOn(XY)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)\n\nexampleSketch002 = startSketchOn(example, face = END)\n |> startProfileAt([1, 1], %)\n |> line(end = [8, 0])\n |> line(end = [0, 8])\n |> line(end = [-8, 0])\n |> close()\n\nexample002 = extrude(exampleSketch002, length = 5)\n\nexampleSketch003 = startSketchOn(example002, face = END)\n |> startProfileAt([2, 2], %)\n |> line(end = [6, 0])\n |> line(end = [0, 6])\n |> line(end = [-6, 0])\n |> close()\n\nexample003 = extrude(exampleSketch003, length = 5)", + "// Sketch on the end of an extruded face by tagging the end face.\n\n\nexampleSketch = startSketchOn(XY)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5, tagEnd = $end01)\n\nexampleSketch002 = startSketchOn(example, face = end01)\n |> startProfileAt([1, 1], %)\n |> line(end = [8, 0])\n |> line(end = [0, 8])\n |> line(end = [-8, 0])\n |> close()\n\nexample002 = extrude(exampleSketch002, length = 5, tagEnd = $end02)\n\nexampleSketch003 = startSketchOn(example002, face = end02)\n |> startProfileAt([2, 2], %)\n |> line(end = [6, 0])\n |> line(end = [0, 6])\n |> line(end = [-6, 0])\n |> close()\n\nexample003 = extrude(exampleSketch003, length = 5)", + "exampleSketch = startSketchOn(XY)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0])\n |> line(end = [0, 10], tag = $sketchingFace)\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)\n\nexampleSketch002 = startSketchOn(example, face = sketchingFace)\n |> startProfileAt([1, 1], %)\n |> line(end = [8, 0])\n |> line(end = [0, 8])\n |> line(end = [-8, 0])\n |> close(tag = $sketchingFace002)\n\nexample002 = extrude(exampleSketch002, length = 10)\n\nexampleSketch003 = startSketchOn(example002, face = sketchingFace002)\n |> startProfileAt([-8, 12], %)\n |> line(end = [0, 6])\n |> line(end = [6, 0])\n |> line(end = [0, -6])\n |> close()\n\nexample003 = extrude(exampleSketch003, length = 5)", + "exampleSketch = startSketchOn(XY)\n |> startProfileAt([4, 12], %)\n |> line(end = [2, 0])\n |> line(end = [0, -6])\n |> line(end = [4, -6])\n |> line(end = [0, -6])\n |> line(end = [-3.75, -4.5])\n |> line(end = [0, -5.5])\n |> line(end = [-2, 0])\n |> close()\n\nexample = revolve(exampleSketch, axis = Y, angle = 180)\n\nexampleSketch002 = startSketchOn(example, face = END)\n |> startProfileAt([4.5, -5], %)\n |> line(end = [0, 5])\n |> line(end = [5, 0])\n |> line(end = [0, -5])\n |> close()\n\nexample002 = extrude(exampleSketch002, length = 5)", + "// Sketch on the end of a revolved face by tagging the end face.\n\n\nexampleSketch = startSketchOn(XY)\n |> startProfileAt([4, 12], %)\n |> line(end = [2, 0])\n |> line(end = [0, -6])\n |> line(end = [4, -6])\n |> line(end = [0, -6])\n |> line(end = [-3.75, -4.5])\n |> line(end = [0, -5.5])\n |> line(end = [-2, 0])\n |> close()\n\nexample = revolve(\n exampleSketch,\n axis = Y,\n angle = 180,\n tagEnd = $end01,\n)\n\nexampleSketch002 = startSketchOn(example, face = end01)\n |> startProfileAt([4.5, -5], %)\n |> line(end = [0, 5])\n |> line(end = [5, 0])\n |> line(end = [0, -5])\n |> close()\n\nexample002 = extrude(exampleSketch002, length = 5)", + "a1 = startSketchOn({\n origin = { x = 0, y = 0, z = 0 },\n xAxis = { x = 1, y = 0, z = 0 },\n yAxis = { x = 0, y = 1, z = 0 },\n zAxis = { x = 0, y = 0, z = 1 }\n })\n |> startProfileAt([0, 0], %)\n |> line(end = [100.0, 0])\n |> yLine(length = -100.0)\n |> xLine(length = -100.0)\n |> yLine(length = 100.0)\n |> close()\n |> extrude(length = 3.14)" ] }, { @@ -276917,6 +286452,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -277126,6 +286675,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -277142,6 +286692,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -277233,8 +286786,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -277273,8 +286825,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -277292,6 +286843,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -278516,6 +288071,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -278725,6 +288294,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -278741,6 +288311,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -278832,8 +288405,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -278872,8 +288444,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -278891,6 +288462,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -278898,6 +288473,1626 @@ "includeInSnippet": true, "description": "The solids to subtract.", "labelRequired": true + }, + { + "name": "tolerance", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_TyF64", + "allOf": [ + { + "$ref": "#/components/schemas/TyF64" + } + ], + "nullable": true, + "definitions": { + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": false, + "description": "The tolerance to use for the subtraction operation.", + "labelRequired": true } ], "returnValue": { @@ -280116,6 +291311,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -280325,6 +291534,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -280341,6 +291551,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -280432,8 +291645,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -280472,8 +291684,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -280491,6 +291702,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -280499,10 +291714,10 @@ "labelRequired": true }, "unpublished": false, - "deprecated": true, + "deprecated": false, "examples": [ - "// Subtract a cylinder from a cube using the stdlib functions.\n\n\nfn cube(center) {\n return startSketchOn(XY)\n |> startProfileAt([center[0] - 10, center[1] - 10], %)\n |> line(endAbsolute = [center[0] + 10, center[1] - 10])\n |> line(endAbsolute = [center[0] + 10, center[1] + 10])\n |> line(endAbsolute = [center[0] - 10, center[1] + 10])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0])\npart002 = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> extrude(length = 10)\n\nsubtractedPart = subtract([part001], tools = [part002])", - "// Subtract a cylinder from a cube using operators.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center) {\n return startSketchOn(XY)\n |> startProfileAt([center[0] - 10, center[1] - 10], %)\n |> line(endAbsolute = [center[0] + 10, center[1] - 10])\n |> line(endAbsolute = [center[0] + 10, center[1] + 10])\n |> line(endAbsolute = [center[0] - 10, center[1] + 10])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0])\npart002 = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> extrude(length = 10)\n\n// This is the equivalent of: subtract([part001], tools=[part002])\nsubtractedPart = part001 - part002" + "// Subtract a cylinder from a cube using the stdlib functions.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfileAt([center[0] - size, center[1] - size], %)\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0], 10)\npart002 = cube([7, 3], 5)\n |> translate(z = 1)\n\nsubtractedPart = subtract([part001], tools = [part002])", + "// Subtract a cylinder from a cube using operators.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfileAt([center[0] - size, center[1] - size], %)\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0], 10)\npart002 = cube([7, 3], 5)\n |> translate(z = 1)\n\n// This is the equivalent of: subtract([part001], tools=[part002])\nsubtractedPart = part001 - part002" ] }, { @@ -281428,6 +292643,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -281684,6 +292913,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -281700,6 +292930,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -281981,8 +293214,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -282021,8 +293253,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -282041,6 +293272,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -283032,6 +294267,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -283288,6 +294537,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -283304,6 +294554,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -283585,8 +294838,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -283625,8 +294877,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -283645,6 +294896,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -284679,6 +295934,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -284935,6 +296204,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -284951,6 +296221,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -285232,8 +296505,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -285272,8 +296544,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -285292,6 +296563,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -286326,6 +297601,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -286582,6 +297871,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -286598,6 +297888,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -286879,8 +298172,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -286919,8 +298211,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -286939,6 +298230,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -287976,6 +299271,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -288232,6 +299541,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -288248,6 +299558,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -288529,8 +299842,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -288569,8 +299881,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -288589,6 +299900,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -289626,6 +300941,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -289882,6 +301211,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -289898,6 +301228,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -290179,8 +301512,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -290219,8 +301551,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -290239,6 +301570,10 @@ } ] }, + "TyF64": { + "type": "number", + "format": "double" + }, "BasePath": { "description": "A base path.", "type": "object", @@ -291575,6 +302910,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -291784,6 +303133,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -291800,6 +303150,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -291891,8 +303244,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -291931,8 +303283,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -291950,6 +303301,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -291960,10 +303315,10 @@ "unpublished": false, "deprecated": false, "examples": [ - "// Create a pipe using a sweep.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc({ offset = 90, radius = 5 }, %)\n |> line(end = [-3, 0])\n |> tangentialArc({ offset = -90, radius = 5 }, %)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)", + "// Create a pipe using a sweep.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc(angle = 90, radius = 5)\n |> line(end = [-3, 0])\n |> tangentialArc(angle = -90, radius = 5)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)", "// Create a spring by sweeping around a helix path.\n\n// Create a helix around the Z axis.\nhelixPath = helix(\n angleStart = 0,\n ccw = true,\n revolutions = 4,\n length = 10,\n radius = 5,\n axis = Z,\n)\n\n// Create a spring by sweeping around the helix path.\nspringSketch = startSketchOn(YZ)\n |> circle(center = [0, 0], radius = 1)\n |> sweep(path = helixPath)", - "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfileAt([-200, 23.86], sketch001)\n |> angledLine([0, 73.47], %, $rectangleSegmentA001)\n |> angledLine([\n segAng(rectangleSegmentA001) - 90,\n 50.61\n ], %)\n |> angledLine([\n segAng(rectangleSegmentA001),\n -segLen(rectangleSegmentA001)\n ], %)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfileAt([0, 0], sketch002)\n |> yLine(length = 231.81)\n |> tangentialArc({ radius = 80, offset = -90 }, %)\n |> xLine(length = 384.93)\n\nsweep([rectangleSketch, circleSketch], path = sweepPath)", - "// Sectionally sweep one sketch along the path\n\n\nsketch001 = startSketchOn(XY)\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfileAt([0, 0], sketch002)\n |> yLine(length = 231.81)\n |> tangentialArc({ radius = 80, offset = -90 }, %)\n |> xLine(length = 384.93)\n\nsweep(circleSketch, path = sweepPath, sectional = true)" + "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfileAt([-200, 23.86], sketch001)\n |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001)\n |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61)\n |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfileAt([0, 0], sketch002)\n |> yLine(length = 231.81)\n |> tangentialArc(radius = 80, angle = -90)\n |> xLine(length = 384.93)\n\nsweep([rectangleSketch, circleSketch], path = sweepPath)", + "// Sectionally sweep one sketch along the path\n\n\nsketch001 = startSketchOn(XY)\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfileAt([0, 0], sketch002)\n |> yLine(length = 231.81)\n |> tangentialArc(radius = 80, angle = -90)\n |> xLine(length = 384.93)\n\nsweep(circleSketch, path = sweepPath, sectional = true)" ] }, { @@ -292011,4996 +303366,20 @@ "unpublished": false, "deprecated": false, "examples": [ - "// Horizontal pill.\npillSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [20, 0])\n |> tangentialArcToRelative([0, 10], %, $arc1)\n |> angledLine({\n angle = tangentToEnd(arc1),\n length = 20\n }, %)\n |> tangentialArcToRelative([0, -10], %)\n |> close()\n\npillExtrude = extrude(pillSketch, length = 10)", - "// Vertical pill. Use absolute coordinate for arc.\npillSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [0, 20])\n |> tangentialArcTo([10, 20], %, $arc1)\n |> angledLine({\n angle = tangentToEnd(arc1),\n length = 20\n }, %)\n |> tangentialArcToRelative([-10, 0], %)\n |> close()\n\npillExtrude = extrude(pillSketch, length = 10)", - "rectangleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0], tag = $seg1)\n |> angledLine({\n angle = tangentToEnd(seg1),\n length = 10\n }, %)\n |> line(end = [0, 10])\n |> line(end = [-20, 0])\n |> close()\n\nrectangleExtrude = extrude(rectangleSketch, length = 10)", - "bottom = startSketchOn(XY)\n |> startProfileAt([0, 0], %)\n |> arcTo({ end = [10, 10], interior = [5, 1] }, %, $arc1)\n |> angledLine([tangentToEnd(arc1), 20], %)\n |> close()", - "circSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 3, tag = $circ)\n\ntriangleSketch = startSketchOn(XY)\n |> startProfileAt([-5, 0], %)\n |> angledLine([tangentToEnd(circ), 10], %)\n |> line(end = [-15, 0])\n |> close()" + "// Horizontal pill.\npillSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [20, 0])\n |> tangentialArc(end = [0, 10], tag = $arc1)\n |> angledLine(angle = tangentToEnd(arc1), length = 20)\n |> tangentialArc(end = [0, -10])\n |> close()\n\npillExtrude = extrude(pillSketch, length = 10)", + "// Vertical pill. Use absolute coordinate for arc.\npillSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [0, 20])\n |> tangentialArc(endAbsolute = [10, 20], tag = $arc1)\n |> angledLine(angle = tangentToEnd(arc1), length = 20)\n |> tangentialArc(end = [-10, 0])\n |> close()\n\npillExtrude = extrude(pillSketch, length = 10)", + "rectangleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> line(end = [10, 0], tag = $seg1)\n |> angledLine(angle = tangentToEnd(seg1), length = 10)\n |> line(end = [0, 10])\n |> line(end = [-20, 0])\n |> close()\n\nrectangleExtrude = extrude(rectangleSketch, length = 10)", + "bottom = startSketchOn(XY)\n |> startProfileAt([0, 0], %)\n |> arcTo({ end = [10, 10], interior = [5, 1] }, %, $arc1)\n |> angledLine(angle = tangentToEnd(arc1), length = 20)\n |> close()", + "circSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 3, tag = $circ)\n\ntriangleSketch = startSketchOn(XY)\n |> startProfileAt([-5, 0], %)\n |> angledLine(angle = tangentToEnd(circ), length = 10)\n |> line(end = [-15, 0])\n |> close()" ] }, { "name": "tangentialArc", - "summary": "Draw a curved line segment along part of an imaginary circle.", - "description": "The arc is constructed such that the last line segment is placed tangent to the imaginary circle of the specified radius. The resulting arc is the segment of the imaginary circle from that tangent point for 'offset' degrees along the imaginary circle.", - "tags": [], - "keywordArguments": false, - "args": [ - { - "name": "data", - "type": "TangentialArcData", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "TangentialArcData", - "description": "Data to draw a tangential arc.", - "anyOf": [ - { - "type": "object", - "required": [ - "offset", - "radius" - ], - "properties": { - "radius": { - "description": "Radius of the arc. Not to be confused with Raiders of the Lost Ark.", - "type": "number", - "format": "double" - }, - "offset": { - "description": "Offset of the arc, in degrees.", - "type": "number", - "format": "double" - } - } - } - ] - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Sketch", - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - }, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - { - "name": "tag", - "type": "TagNode", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Nullable_TagDeclarator", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": false, - "labelRequired": true - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Sketch", - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - }, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle = 60, length = 10 }, %)\n |> tangentialArc({ radius = 10, offset = -120 }, %)\n |> angledLine({ angle = -60, length = 10 }, %)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" - ] - }, - { - "name": "tangentialArcTo", "summary": "Starting at the current sketch's origin, draw a curved line segment along some part of an imaginary circle until it reaches the desired (x, y) coordinates.", - "description": "", + "description": "When using radius and angle, draw a curved line segment along part of an imaginary circle. The arc is constructed such that the last line segment is placed tangent to the imaginary circle of the specified radius. The resulting arc is the segment of the imaginary circle from that tangent point for 'angle' degrees along the imaginary circle.", "tags": [], - "keywordArguments": false, + "keywordArguments": true, "args": [ - { - "name": "to", - "type": "[number]", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Array_size_2_of_double", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, { "name": "sketch", "type": "Sketch", @@ -297911,6 +304290,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -298167,6 +304560,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -298183,6 +304577,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -298591,8 +304988,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -298631,8 +305027,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -298650,11 +305045,6501 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, "required": true, "includeInSnippet": true, + "description": "Which sketch should this path be added to?", + "labelRequired": false + }, + { + "name": "endAbsolute", + "type": "[number]", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_Array_size_2_of_double", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2, + "nullable": true, + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": false, + "description": "Which absolute point should this arc go to? Incompatible with `end`, `radius`, and `offset`.", + "labelRequired": true + }, + { + "name": "end", + "type": "[number]", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_Array_size_2_of_double", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2, + "nullable": true, + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": false, + "includeInSnippet": true, + "description": "How far away (along the X and Y axes) should this arc go? Incompatible with `endAbsolute`, `radius`, and `offset`.", + "labelRequired": true + }, + { + "name": "radius", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_TyF64", + "allOf": [ + { + "$ref": "#/components/schemas/TyF64" + } + ], + "nullable": true, + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": false, + "description": "Radius of the imaginary circle. `angle` must be given. Incompatible with `end` and `endAbsolute`.", + "labelRequired": true + }, + { + "name": "angle", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_TyF64", + "allOf": [ + { + "$ref": "#/components/schemas/TyF64" + } + ], + "nullable": true, + "definitions": { + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": false, + "description": "Offset of the arc in degrees. `radius` must be given. Incompatible with `end` and `endAbsolute`.", "labelRequired": true }, { @@ -299511,6 +312396,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -299767,6 +312666,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -299783,6 +312683,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -300191,8 +313094,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -300231,8 +313133,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -300250,10 +313151,15 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, "required": false, + "description": "Create a new tag which refers to this arc", "labelRequired": true } ], @@ -301167,6 +314073,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -301423,6 +314343,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -301439,6 +314360,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -301847,8 +314771,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -301887,8 +314810,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -301906,4949 +314828,10 @@ } } ] - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle = 60, length = 10 }, %)\n |> tangentialArcTo([15, 15], %)\n |> line(end = [10, -15])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" - ] - }, - { - "name": "tangentialArcToRelative", - "summary": "Starting at the current sketch's origin, draw a curved line segment along some part of an imaginary circle until it reaches a point the given (x, y) distance away.", - "description": "", - "tags": [], - "keywordArguments": false, - "args": [ - { - "name": "delta", - "type": "[number]", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Array_size_2_of_double", - "type": "array", - "items": { + }, + "TyF64": { "type": "number", "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Sketch", - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - }, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - { - "name": "tag", - "type": "TagNode", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Nullable_TagDeclarator", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - } - } - }, - "required": false, - "labelRequired": true - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Sketch", - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - }, - "definitions": { - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction This is used to compute the tangential angle.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CircleThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the circle", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "p1", - "p2", - "p3", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArcThreePoint" - ] - }, - "p1": { - "description": "Point 1 of the arc (base on the end of previous segment)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p2": { - "description": "Point 2 of the arc (interior kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "p3": { - "description": "Point 3 of the arc (end kwarg)", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A circular arc, not necessarily tangential to the current point.", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type", - "units" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Arc" - ] - }, - "center": { - "description": "Center of the circle that this arc is drawn on.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "Radius of the circle that this arc is drawn on.", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "True if the arc is counterclockwise.", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "UnitLen": { - "description": "A unit of length.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Mm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Cm" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "M" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Inches" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Feet" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Yards" - ] - } - } - } - ] - }, - "TagDeclarator": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 3, - "minItems": 3 - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "type": "object", - "required": [ - "artifactId", - "id", - "origin", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "artifactId", - "id", - "solid", - "type", - "units", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face's X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face's Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - } - ] - }, - "ArtifactId": { - "type": "string", - "format": "uuid" - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - }, - { - "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", - "type": "string", - "enum": [ - "Uninit" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "type": "object", - "required": [ - "artifactId", - "height", - "id", - "sketch", - "units", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "artifactId": { - "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "Sketch": { - "type": "object", - "required": [ - "artifactId", - "id", - "on", - "originalId", - "paths", - "start", - "units" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes).", - "type": "string", - "format": "uuid" - }, - "paths": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "artifactId": { - "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", - "allOf": [ - { - "$ref": "#/components/schemas/ArtifactId" - } - ] - }, - "originalId": { - "type": "string", - "format": "uuid" - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "units" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "units": { - "$ref": "#/components/schemas/UnitLen" - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagIdentifier": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "string" - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] } } }, @@ -306859,7 +314842,9 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle = 45, length = 10 }, %)\n |> tangentialArcToRelative([0, -10], %)\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = 45, length = 10)\n |> tangentialArc(end = [0, -10])\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)", + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = 60, length = 10)\n |> tangentialArc(endAbsolute = [15, 15])\n |> line(end = [10, -15])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)", + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = 60, length = 10)\n |> tangentialArc(radius = 10, angle = -120)\n |> angledLine(angle = -60, length = 10)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" ] }, { @@ -306887,7 +314872,7 @@ "unpublished": false, "deprecated": true, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle = 50, length = 10 * tau() }, %)\n |> yLine(endAbsolute = 0)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = 50, length = 10 * tau())\n |> yLine(endAbsolute = 0)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" ] }, { @@ -306929,7 +314914,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle = 50,\n length = 70 * cos(toDegrees(pi() / 4))\n }, %)\n |> yLine(endAbsolute = 0)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = 50, length = 70 * cos(toDegrees(pi() / 4)))\n |> yLine(endAbsolute = 0)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" ] }, { @@ -306971,7 +314956,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle = 50,\n length = 70 * cos(toRadians(45))\n }, %)\n |> yLine(endAbsolute = 0)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> angledLine(angle = 50, length = 70 * cos(toRadians(45)))\n |> yLine(endAbsolute = 0)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)" ] }, { @@ -308265,6 +316250,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -308474,6 +316473,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -308490,6 +316490,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -308581,8 +316584,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -308621,8 +316623,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -308640,6 +316641,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -309863,6 +317868,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -310072,6 +318091,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -310088,6 +318108,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -310179,8 +318202,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -310219,8 +318241,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -310238,6 +318259,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -311461,6 +319486,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -311670,6 +319709,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -311686,6 +319726,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -311777,8 +319820,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -311817,8 +319859,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -311836,6 +319877,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -313059,6 +321104,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -313268,6 +321327,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -313284,6 +321344,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -313375,8 +321438,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -313415,8 +321477,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -313434,6 +321495,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -314656,6 +322721,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -314865,6 +322944,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -314881,6 +322961,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -314972,8 +323055,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -315012,8 +323094,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -315031,6 +323112,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -316323,6 +324408,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -316532,6 +324631,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -316548,6 +324648,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -316639,8 +324742,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -316679,8 +324781,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -316698,6 +324799,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -316708,9 +324813,9 @@ "unpublished": false, "deprecated": false, "examples": [ - "// Move a pipe.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc({ offset = 90, radius = 5 }, %)\n |> line(end = [-3, 0])\n |> tangentialArc({ offset = -90, radius = 5 }, %)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> translate(x = 1.0, y = 1.0, z = 2.5)", + "// Move a pipe.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc(angle = 90, radius = 5)\n |> line(end = [-3, 0])\n |> tangentialArc(angle = -90, radius = 5)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> translate(x = 1.0, y = 1.0, z = 2.5)", "// Move an imported model.\n\n\nimport \"tests/inputs/cube.sldprt\" as cube\n\n// Circle so you actually see the move.\nstartSketchOn(XY)\n |> circle(center = [-10, -10], radius = 10)\n |> extrude(length = 10)\n\ncube\n |> translate(x = 10.0, y = 10.0, z = 2.5)", - "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfileAt([-200, 23.86], sketch001)\n |> angledLine([0, 73.47], %, $rectangleSegmentA001)\n |> angledLine([\n segAng(rectangleSegmentA001) - 90,\n 50.61\n ], %)\n |> angledLine([\n segAng(rectangleSegmentA001),\n -segLen(rectangleSegmentA001)\n ], %)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfileAt([0, 0], sketch002)\n |> yLine(length = 231.81)\n |> tangentialArc({ radius = 80, offset = -90 }, %)\n |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Move the sweeps.\ntranslate(\n parts,\n x = 1.0,\n y = 1.0,\n z = 2.5,\n)", + "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfileAt([-200, 23.86], sketch001)\n |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001)\n |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61)\n |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfileAt([0, 0], sketch002)\n |> yLine(length = 231.81)\n |> tangentialArc(radius = 80, angle = -90)\n |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Move the sweeps.\ntranslate(\n parts,\n x = 1.0,\n y = 1.0,\n z = 2.5,\n)", "// Move a sketch.\n\n\nfn square(length) {\n l = length / 2\n p0 = [-l, -l]\n p1 = [-l, l]\n p2 = [l, l]\n p3 = [l, -l]\n\n return startSketchOn(XY)\n |> startProfileAt(p0, %)\n |> line(endAbsolute = p1)\n |> line(endAbsolute = p2)\n |> line(endAbsolute = p3)\n |> close()\n}\n\nsquare(10)\n |> translate(x = 5, y = 5)\n |> extrude(length = 10)", "// Translate and rotate a sketch to create a loft.\nsketch001 = startSketchOn(XY)\n\nfn square() {\n return startProfileAt([-10, 10], sketch001)\n |> xLine(length = 20)\n |> yLine(length = -20)\n |> xLine(length = -20)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n}\n\nprofile001 = square()\n\nprofile002 = square()\n |> translate(z = 20)\n |> rotate(axis = [0, 0, 1.0], angle = 45)\n\nloft([profile001, profile002])" ] @@ -317938,6 +326043,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -318147,6 +326266,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -318163,6 +326283,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -318254,8 +326377,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -318294,8 +326416,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -318313,6 +326434,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -318320,6 +326445,1626 @@ "includeInSnippet": true, "description": "The solids to union.", "labelRequired": false + }, + { + "name": "tolerance", + "type": "number", + "schema": { + "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", + "title": "Nullable_TyF64", + "allOf": [ + { + "$ref": "#/components/schemas/TyF64" + } + ], + "nullable": true, + "definitions": { + "Solid": { + "type": "object", + "required": [ + "artifactId", + "height", + "id", + "sketch", + "units", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtrudeSurface" + } + }, + "sketch": { + "description": "The sketch.", + "allOf": [ + { + "$ref": "#/components/schemas/Sketch" + } + ] + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "$ref": "#/components/schemas/EdgeCut" + } + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "ArtifactId": { + "type": "string", + "format": "uuid" + }, + "ExtrudeSurface": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + } + ] + }, + "TagDeclarator": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + } + } + }, + "SourceRange": { + "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 3, + "minItems": 3 + }, + "Sketch": { + "type": "object", + "required": [ + "artifactId", + "id", + "on", + "originalId", + "paths", + "start", + "units" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes).", + "type": "string", + "format": "uuid" + }, + "paths": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "$ref": "#/components/schemas/Path" + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "allOf": [ + { + "$ref": "#/components/schemas/SketchSurface" + } + ] + }, + "start": { + "description": "The starting path.", + "allOf": [ + { + "$ref": "#/components/schemas/BasePath" + } + ] + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TagIdentifier" + } + }, + "artifactId": { + "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "originalId": { + "type": "string", + "format": "uuid" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "Path": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction This is used to compute the tangential angle.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CircleThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the circle", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + { + "description": "A circular arc, not necessarily tangential to the current point.", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Arc" + ] + }, + "center": { + "description": "Center of the circle that this arc is drawn on.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "Radius of the circle that this arc is drawn on.", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "True if the arc is counterclockwise.", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + } + ] + }, + "UnitLen": { + "description": "A unit of length.", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Mm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Cm" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "M" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Inches" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Feet" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Yards" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } + } + ] + }, + "GeoMeta": { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "allOf": [ + { + "$ref": "#/components/schemas/SourceRange" + } + ] + } + } + }, + "SketchSurface": { + "description": "A sketch type.", + "oneOf": [ + { + "type": "object", + "required": [ + "artifactId", + "id", + "origin", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "$ref": "#/components/schemas/PlaneType" + }, + "origin": { + "description": "Origin of the plane.", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "xAxis": { + "description": "What should the plane's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the plane's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "artifactId", + "id", + "solid", + "type", + "units", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "artifactId": { + "description": "The artifact ID.", + "allOf": [ + { + "$ref": "#/components/schemas/ArtifactId" + } + ] + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face's X axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "yAxis": { + "description": "What should the face's Y axis be?", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "zAxis": { + "description": "The z-axis (normal).", + "allOf": [ + { + "$ref": "#/components/schemas/Point3d" + } + ] + }, + "solid": { + "description": "The solid the face is on.", + "allOf": [ + { + "$ref": "#/components/schemas/Solid" + } + ] + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + } + ] + }, + "PlaneType": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + }, + { + "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", + "type": "string", + "enum": [ + "Uninit" + ] + } + ] + }, + "Point3d": { + "type": "object", + "required": [ + "units", + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + } + } + }, + "BasePath": { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "units" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, + "TagIdentifier": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "string" + } + } + }, + "EdgeCut": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "$ref": "#/components/schemas/TyF64" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + } + } + } + ] + }, + "TyF64": { + "type": "number", + "format": "double" + } + } + }, + "required": false, + "description": "The tolerance to use for the union operation.", + "labelRequired": true } ], "returnValue": { @@ -319538,6 +329283,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -319747,6 +329506,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -319763,6 +329523,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -319854,8 +329617,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -319894,8 +329656,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -319913,6 +329674,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -319921,11 +329686,11 @@ "labelRequired": true }, "unpublished": false, - "deprecated": true, + "deprecated": false, "examples": [ - "// Union two cubes using the stdlib functions.\n\n\nfn cube(center) {\n return startSketchOn(XY)\n |> startProfileAt([center[0] - 10, center[1] - 10], %)\n |> line(endAbsolute = [center[0] + 10, center[1] - 10])\n |> line(endAbsolute = [center[0] + 10, center[1] + 10])\n |> line(endAbsolute = [center[0] - 10, center[1] + 10])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0])\npart002 = cube([20, 10])\n\nunionedPart = union([part001, part002])", - "// Union two cubes using operators.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center) {\n return startSketchOn(XY)\n |> startProfileAt([center[0] - 10, center[1] - 10], %)\n |> line(endAbsolute = [center[0] + 10, center[1] - 10])\n |> line(endAbsolute = [center[0] + 10, center[1] + 10])\n |> line(endAbsolute = [center[0] - 10, center[1] + 10])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0])\npart002 = cube([20, 10])\n\n// This is the equivalent of: union([part001, part002])\nunionedPart = part001 + part002", - "// Union two cubes using the more programmer-friendly operator.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center) {\n return startSketchOn(XY)\n |> startProfileAt([center[0] - 10, center[1] - 10], %)\n |> line(endAbsolute = [center[0] + 10, center[1] - 10])\n |> line(endAbsolute = [center[0] + 10, center[1] + 10])\n |> line(endAbsolute = [center[0] - 10, center[1] + 10])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0])\npart002 = cube([20, 10])\n\n// This is the equivalent of: union([part001, part002])\n// Programmers will understand `|` as a union operation, but mechanical engineers\n// will understand `+`, we made both work.\nunionedPart = part001 | part002" + "// Union two cubes using the stdlib functions.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfileAt([center[0] - size, center[1] - size], %)\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0], 10)\npart002 = cube([7, 3], 5)\n |> translate(z = 1)\n\nunionedPart = union([part001, part002])", + "// Union two cubes using operators.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfileAt([center[0] - size, center[1] - size], %)\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0], 10)\npart002 = cube([7, 3], 5)\n |> translate(z = 1)\n\n// This is the equivalent of: union([part001, part002])\nunionedPart = part001 + part002", + "// Union two cubes using the more programmer-friendly operator.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfileAt([center[0] - size, center[1] - size], %)\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube([0, 0], 10)\npart002 = cube([7, 3], 5)\n |> translate(z = 1)\n\n // This is the equivalent of: union([part001, part002])\n // Programmers will understand `|` as a union operation, but mechanical engineers\n// will understand `+`, we made both work.\nunionedPart = part001 | part002" ] }, { @@ -320845,6 +330610,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -321101,6 +330880,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -321117,6 +330897,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -321525,8 +331308,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -321565,8 +331347,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -321584,6 +331365,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -322443,6 +332228,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -322699,6 +332498,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -322715,6 +332515,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -323123,8 +332926,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -323163,8 +332965,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -323182,6 +332983,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -324041,6 +333846,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -324297,6 +334116,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -324313,6 +334133,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -324721,8 +334544,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -324761,8 +334583,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -324780,6 +334601,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -325641,6 +335466,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -325897,6 +335736,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -325913,6 +335753,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -326321,8 +336164,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -326361,8 +336203,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -326380,6 +336221,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -327298,6 +337143,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -327554,6 +337413,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -327570,6 +337430,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -327978,8 +337841,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -328018,8 +337880,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -328037,6 +337898,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -328047,7 +337912,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> xLine(length = 15)\n |> angledLine({ angle = 80, length = 15 }, %)\n |> line(end = [8, -10])\n |> xLine(length = 10)\n |> angledLine({ angle = 120, length = 30 }, %)\n |> xLine(length = -15)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> xLine(length = 15)\n |> angledLine(angle = 80, length = 15)\n |> line(end = [8, -10])\n |> xLine(length = 10)\n |> angledLine(angle = 120, length = 30)\n |> xLine(length = -15)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" ] }, { @@ -328967,6 +338832,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -329223,6 +339102,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -329239,6 +339119,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -329647,8 +339530,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -329687,8 +339569,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -329706,6 +339587,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -330565,6 +340450,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -330821,6 +340720,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -330837,6 +340737,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -331245,8 +341148,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -331285,8 +341187,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -331304,6 +341205,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -332163,6 +342068,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -332419,6 +342338,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -332435,6 +342355,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -332843,8 +342766,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -332883,8 +342805,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -332902,6 +342823,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -333763,6 +343688,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -334019,6 +343958,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -334035,6 +343975,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -334443,8 +344386,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -334483,8 +344425,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -334502,6 +344443,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -335420,6 +345365,20 @@ ] } } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Unknown" + ] + } + } } ] }, @@ -335676,6 +345635,7 @@ "Point3d": { "type": "object", "required": [ + "units", "x", "y", "z" @@ -335692,6 +345652,9 @@ "z": { "type": "number", "format": "double" + }, + "units": { + "$ref": "#/components/schemas/UnitLen" } } }, @@ -336100,8 +346063,7 @@ "format": "uuid" }, "radius": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", @@ -336140,8 +346102,7 @@ "format": "uuid" }, "length": { - "type": "number", - "format": "double" + "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", @@ -336159,6 +346120,10 @@ } } ] + }, + "TyF64": { + "type": "number", + "format": "double" } } }, @@ -336169,35 +346134,7 @@ "unpublished": false, "deprecated": false, "examples": [ - "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> yLine(length = 15)\n |> angledLine({ angle = 30, length = 15 }, %)\n |> line(end = [8, -10])\n |> yLine(length = -5)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" - ] - }, - { - "name": "yd", - "summary": "Yards conversion factor for current projects units.", - "description": "No matter what units the current project uses, this function will always return the conversion factor to yards.\n\nFor example, if the current project uses inches, this function will return `36`. If the current project uses millimeters, this function will return `914.4`. If the current project uses yards, this function will return `1`.\n\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function.\n\nWe merely provide these functions for convenience and readability, as `10 * yd()` is more readable that your intent is \"I want 10 yards\" than `10 * 914.4`, if the project settings are in millimeters.", - "tags": [ - "units" - ], - "keywordArguments": false, - "args": [], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "double", - "type": "number", - "format": "double" - }, - "required": true, - "includeInSnippet": true, - "labelRequired": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "totalWidth = 10 * yd()" + "exampleSketch = startSketchOn(XZ)\n |> startProfileAt([0, 0], %)\n |> yLine(length = 15)\n |> angledLine(angle = 30, length = 15)\n |> line(end = [8, -10])\n |> yLine(length = -5)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)" ] } ] \ No newline at end of file diff --git a/docs/kcl/subtract.md b/docs/kcl/subtract.md index d4e2c33f1..e3f704956 100644 --- a/docs/kcl/subtract.md +++ b/docs/kcl/subtract.md @@ -4,8 +4,6 @@ excerpt: "Subtract removes tool solids from base solids, leaving the remaining m layout: manual --- -**WARNING:** This function is deprecated. - Subtract removes tool solids from base solids, leaving the remaining material. Performs a boolean subtraction operation, removing the volume of one or more tool solids from one or more base solids. The result is a new solid representing the material that remains after all tool solids have been cut away. This function is essential for machining simulations, cavity creation, and complex multi-body part modeling. @@ -14,6 +12,7 @@ Performs a boolean subtraction operation, removing the volume of one or more too subtract( solids: [Solid], tools: [Solid], + tolerance?: number, ): [Solid] ``` @@ -24,6 +23,7 @@ subtract( |----------|------|-------------|----------| | `solids` | [`[Solid]`](/docs/kcl/types/Solid) | The solids to use as the base to subtract from. | Yes | | `tools` | [`[Solid]`](/docs/kcl/types/Solid) | The solids to subtract. | Yes | +| `tolerance` | [`number`](/docs/kcl/types/number) | The tolerance to use for the subtraction operation. | No | ### Returns @@ -36,25 +36,24 @@ subtract( // Subtract a cylinder from a cube using the stdlib functions. -fn cube(center) { +fn cube(center, size) { return startSketchOn(XY) - |> startProfileAt([center[0] - 10, center[1] - 10], %) - |> line(endAbsolute = [center[0] + 10, center[1] - 10]) - |> line(endAbsolute = [center[0] + 10, center[1] + 10]) - |> line(endAbsolute = [center[0] - 10, center[1] + 10]) + |> startProfileAt([center[0] - size, center[1] - size], %) + |> line(endAbsolute = [center[0] + size, center[1] - size]) + |> line(endAbsolute = [center[0] + size, center[1] + size]) + |> line(endAbsolute = [center[0] - size, center[1] + size]) |> close() |> extrude(length = 10) } -part001 = cube([0, 0]) -part002 = startSketchOn(XY) - |> circle(center = [0, 0], radius = 2) - |> extrude(length = 10) +part001 = cube([0, 0], 10) +part002 = cube([7, 3], 5) + |> translate(z = 1) subtractedPart = subtract([part001], tools = [part002]) ``` -![Rendered example of subtract 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEV5ElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqmd5sRd7sde+5pprHsxVV1111VX/q/3Wb/3Wd3PVVVddddVVVwGgBz3oQVx11VVXXXXVVfDhH/7h3/U6r/M6781VV1111VX/q9133323AnzIh3zIQ7jqqquuuuqqq9CDHvQgrrrqqquuuur/u8/93M/9rRd7sRd77YsXL/Krv/qrvCgkcdVVV/3PYZur/vPY5n+LV3iFV+BhD3sYv/Vbv/XdX//1X/8+XHXVVVddddX/b1Suuuqqq6666v+5d3zHd/ysF3uxF3ttgB/5kR/haU97GlddddVVz49trvrXs81/pac+9al82qd9Gq/zOq/z3vfdd9+tP/qjP/o5XHXVVVddddX/X5Tjx49z1VVXXXXVVf9fvdiLvdhrf8RHfMR3A3zzN38zT3va07jqqquuekEkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEv8fSEISkpCEJCQhCUlIQhKSkIQkJCGJf4vVasWFCxd48Rd/ca655poH33rrrX9z9uzZW7nqqquuuuqq/5/Qgx70IK666qqrrrrq/6tv+qZvevo111zz4F/7tV/j137t1/i/ThJXXfWisM1V//vY5iqwDcAbvuEb8oZv+Ibcd999t37WZ33W69x33323ctVVV1111VX//xBcddVVV1111f9Tn/u5n/tb11xzzYOf+tSn8mu/9mv8Z5CEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCGJq656UUlCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpDEVS8aSUhCEpKQhCQkIQlJSEISkpCEJCQhCUn8XyAJSfz5n/85T33qU7nmmmse/OEf/uHfxVVXXXXVVVf9/0Q5fvw4V1111VVXXfX/zTu+4zt+1uu8zuu898WLF/ne7/1eVqsVkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYmrrrrqP4YkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJHEVSEISkpCEJCQhCUlIQhKSkIQkJCGJ/2lWqxVPfepTefEXf3FuueWWBwP8wz/8w+9w1VVXXXXVVf+/UI4fP85VV1111VVX/X/yYi/2Yq/9ER/xEd8N8L3f+73cfffdXHXVVVcBSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQk8f+FJCQhCUlIQhKSkIQkJCEJSUhCEpL4z7Jarbjrrrt4+Zd/eV78xV/8tf/hH/7hd86ePXsrV1111VVXXfX/B+X48eNcddVVV1111f8X11xzzYO/4iu+4q8Afu3Xfo2/+Iu/4Kp/HUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSVz1P48kJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhif+rJCEJSUhCEpKQhCQkIQlJSEISL6qLFy8C8LCHPYwXe7EXe+0/+7M/+5nDw8Ndrrrqqquuuur/B4Krrrrqqquu+n/kwz/8w78L4GlPexq//uu/zv8kkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQxFX/80lCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlI4qp/O0lIQhKSkIQkJCEJSUhCEpKQhCQkIQlJ/F8hCUlIQhKSkIQkJCEJSUji13/91/nzP/9zrrnmmgd/zud8zm9x1VVXXXXVVf9/UI4fP85VV1111VVX/X/wuZ/7ub/1Yi/2Yq998eJFvuZrvoZ/iSQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJXHXV/yeSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJHHVc5KEJCQhCUlIQhKSkIQkJCEJSUhCEpL43+quu+7ixV/8xTl9+vTxa6655sF/+qd/+jNcddVVV1111f99lOPHj3PVVVddddVV/9e92Iu92Gu/0zu902cDfN/3fR+7u7tIQhKSkIQkJCEJSVx11VX/d0hCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCGJ/48kIQlJSEISkpCEJCQhCUlIQhKS+O+2Wq34h3/4B17jNV6DhzzkIS8N8A//8A+/w1VXXXXVVVf930Y5fvw4V1111VVXXfV/2TXXXPPgr/iKr/grgG/91m/laU97Glf97yUJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhiav+f5GEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYn/yyQhCUlIQhKSkIQkJCEJSUhCEpL4j7Rarbh48SIv9mIvxjXXXPPgW2+99W/Onj17K1ddddVVV131fxeVq6666qqrrvo/7sM//MO/C+BpT3saT3va0/i/RhJX/c8iif8vbHPVfyxJ/HvZ5v8SSfxr2eYF+fM//3NOnDjBG7zBGzz4wz/8w7/rQz7kQx7CVVddddVVV/3fRTl+/DhXXXXVVVdd9X/V537u5/7Wi73Yi7320572NL71W7+V/yySkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUjiqqv+O0lCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYmrXjBJSEISkpCEJCQhCUlIQhKSkIQkJCGJ/wskIQlJSEISkpCEJC5evMgNN9zATTfddPyaa6558J/+6Z/+DFddddVVV131fxPl+PHjXHXVVVddddX/Re/4ju/4Wa/zOq/z3gA//uM/zu7uLpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSVx11VX/9SQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJP4/k4QkJCEJSUhCEpKQhCQkIQlJSEIS/1usViue9rSn8eqv/uo85CEPeWmAf/iHf/gdrrrqqquuuur/Hsrx48e56qqrrrrqqv9rXuzFXuy1P+IjPuK7Ab7t276Npz3taVx11VVX/WtIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJP4/kIQkJCEJSUhCEpKQhCQkIQlJSOK/w2q14uLFi7zYi70Y11xzzYNvvfXWvzl79uytXHXVVVddddX/LehBD3oQV1111VVXXfV/yTXXXPPgb/qmb3o6wK//+q/zG7/xG1z1opHEVf/32eaq/91scxXY5j/C67/+6/MGb/AG3Hfffbd+1md91uvcd999t3LVVVddddVV/3cQXHXVVVddddX/MR/+4R/+XQBPe9rT+I3f+A3+p5KEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSVz1/4MkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSOKqfx1JSEISkpCEJCQhCUlIQhKSkIQkJCGJ/yskIQlJSEISkpCEJCQhCUlIQhLPz1/8xV/wtKc9jWuuuebBH/7hH/5dXHXVVVddddX/LZTjx49z1VVXXXXVVf9XvOM7vuNnvc7rvM57X7x4ka/7uq/jX0sSkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpDEVVdd9WySkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkMRVV0hCEpKQhCQkIQlJSEISkpCEJCQhCUn8byYJSUhCEpJYrVY87WlP48Ve7MW45ZZbHgzwD//wD7/DVVddddVVV/3fQDl+/DhXXXXVVVdd9X/Bi73Yi732R3zER3w3wPd///ezu7uLJCQhCUlIQhKSkIQkJCEJSVx11VX/t0lCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJPH/jSQkIQlJSEISkpCEJCQhCUlIQhL/k61WKx73uMfx6q/+6rz4i7/4a589e/YZt956619z1VVXXXXVVf/7UY4fP85VV1111VVX/W93zTXXPPgrvuIr/grgN37jN/jLv/xLrvrfRRKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkcdX/HZKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQk/i+ThCQkIQlJSEISkpCEJCQhCUn8V1qtVgA89KEP5cEPfvBL/9mf/dnPHB4e7nLVVVddddVV/7tRueqqq6666qr/Az78wz/8uwCe9rSn8Ru/8Rv8fyCJq/53k8T/Fba56j+GJP69bPN/hST+tWzzb/Xrv/7rnDhxgpd7uZd78Od8zuf81od8yIc8hKuuuuqqq676341y/Phxrrrqqquuuup/s8/93M/9rRd7sRd77YsXL/L1X//1/FeThCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSOKqq/4nkYQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSVz1gklCEpKQhCQkIQlJSEISkpCEJCQhif8LJCEJSUhCEpKQhCQkIQlJSOK53X333bzYi70Yp0+fPn7NNdc8+E//9E9/hquuuuqqq67634ty/Phxrrrqqquuuup/qxd7sRd77Xd6p3f6bIDv//7vZ3d3l+dHEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSVx11VX/PSQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJP6/koQkJCEJSUhCEpKQhCQkIQlJSEIS/1tJQhKSkMRqteJxj3scr/Zqr8ZDHvKQlwb4h3/4h9/hqquuuuqqq/53ohw/fpyrrrrqqquu+t/oxV7sxV77cz/3c38L4Nu//du59dZbkYQkJCEJSUjiqquuuupfSxKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJP4/kIQkJCEJSUhCEpKQhCQkIQlJ/E+1Wq3Y3d3lsY99LNdcc82Db7311r85e/bsrVx11VVXXXXV/z5Urrrqqquuuup/qXd6p3f6LIC//Mu/5OlPfzpX/ceQxFX/d9nmqv8ekvj3ss3/NZL417LNf4W/+Iu/4Pjx47z+67/+gz/8wz/8uz7kQz7kIVx11VVXXXXV/z6U48ePc9VVV1111VX/23zu537ub73Yi73Yaz/96U/nB37gB/jfTBKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCSu+r9NEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK7615GEJCQhCUlIQhKSkIQkJCEJSUhCEpL4v0ISkpCEJCQhCUlIQhKSkIQk/j12d3e5/vrruemmm45fc801D/7TP/3Tn+Gqq6666qqr/nehHD9+nKuuuuqqq6763+Qd3/EdP+t1Xud13hvgO77jO1itVvxnkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkrrrq/zNJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSOKqKyQhCUlIQhKSkIQkJCEJSUhCEpKQxP9mkpCEJCQhCUlIQhKSkIQkJPFAq9WKpz/96bzaq70aD3nIQ14a4B/+4R9+h6uuuuqqq67634Ny/Phxrrrqqquuuup/ixd7sRd77Y/4iI/4boBv//Zv5+6770YSkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYmrrrrq/w5JSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQxP83kpCEJCQhCUlIQhKSkIQkJCEJSfxvJAlJSEISq9WKpz3tabzcy70c11xzzYNvvfXWvzl79uytXHXVVVddddX/DpTjx49z1VVXXXXVVf8bXHPNNQ/+iq/4ir8C+M3f/E3+6q/+Cklc9f+TJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUjiqv9fJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUn8XyYJSUhCEpKQhCQkIQlJSEISkvifaHd3F4CXeImXOP5iL/Zir/1nf/ZnP3N4eLjLVVddddVVV/3PR+Wqq6666qqr/pf48A//8O8CePrTn85v/uZvctXzJ4mr/ntI4v8D21z1H0sS/x62+b9EEv8atvmv8Jd/+Zc85CEP4aEPfeiDP+dzPue3PuRDPuQhXHXVVVddddX/fJTjx49z1VVXXXXVVf/TveM7vuNnvc7rvM57X7x4kW/4hm/gfzpJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCRx1VX/2SQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSuOoFk4QkJCEJSUhCEpKQhCQkIQlJSEIS/xdIQhKSkIQkJCEJSUhCEpKQxL/VarXi6U9/Oo997GM5ffr0cYB/+Id/+B2uuuqqq6666n82yvHjx7nqqquuuuqq/8le7MVe7LU/4iM+4rsBfvAHf5Dd3V3+I0hCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCGJq6666j+eJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkvj/TBKSkIQkJCEJSUhCEpKQhCQkIQlJ/G8lCUlIQhKSkIQkJCEJSUjiua1WKx7/+Mfzaq/2arz4i7/4a589e/YZt956619z1VVXXXXVVf9zUY4fP85VV1111VVX/U91zTXXPPgrvuIr/grgN3/zN/nrv/5rJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhiauuuuqq+0lCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkMT/F5KQhCQkIQlJSEISkpCEJCQhif9tJCEJSUhCEqvVit3dXR772Mfy4Ac/+KX/7M/+7GcODw93ueqqq6666qr/mQiuuuqqq6666n+wD//wD/8ugKc//en81m/9Flf9zyMJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCGJq/7nkYQkJCEJSUhCEpKQhCQkIQlJSEISkpDE/1WSkIQkJCEJSUhCEpKQhCQk8T/VX/7lX/KXf/mXXHPNNQ/+nM/5nN/iqquuuuqqq/7nohw/fpyrrrrqqquu+p/ocz/3c3/rxV7sxV57d3eXb/zGb+T/K0lIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYmr/vtJQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJXPVvIwlJSEISkpCEJCQhCUlIQhKSkIQkJPF/hSQkIQlJSEISkpCEJCQhCUn8V7rnnnt4zGMew+nTp49fc801D/7TP/3Tn+Gqq6666qqr/uehHD9+nKuuuuqqq676n+Z1Xud13vvN3/zNPxrgB3/wB9nd3eV/EklIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhJXXfW/nSQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkcdVzkoQkJCEJSUhCEpKQhCQkIQlJSEIS/5tJQhKSkIQkJCEJSUhCEpL491qtVjz+8Y/nVV/1VXnIQx7y0gD/8A//8DtcddVVV1111f8slOPHj3PVVVddddVV/5O82Iu92Gt/0id90k8BfOd3fidPf/rT+beShCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUjiqquu+p9HEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCGJ/48kIQlJSEISkpCEJCQhCUlIQhL/G0lCEpKQhCQkIQlJSEISknhBVqsVu7u7PPaxj+Waa6558K233vo3Z8+evZWrrrrqqquu+p+Dcvz4ca666qqrrrrqf5LP/dzP/a3Nzc3jv/Vbv8Vf//VfIwlJSEISkpCEJCQhCUlIQhKSkIQkrrrqqqv+vSQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYn/6yQhCUlIQhKSkIQkJCEJSUhCEv+bSEISkpCEJCQhiXvuuQeAF3/xFz/+Yi/2Yq/9Z3/2Zz9zeHi4y1VXXXXVVVf9z0Bw1VVXXXXVVf+DfO7nfu5vXXPNNQ9++tOfzm/91m9x1X8NSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkcdV/HUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJ/F8jCUlIQhKSkIQkJCEJSUhCEv+T/eVf/iVPf/rTueaaax784R/+4d/FVVddddVVV/3PQTl+/DhXXXXVVVdd9T/BO77jO37W67zO67w3wHd913exWq34v04SkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSuOr/L0lIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSVz1opOEJCQhCUlIQhKSkIQkJCEJSUhCEv8XSEISkpCEJCQhCUlIQhKSkMR/pdVqxdOf/nQe85jHcMsttzwY4B/+4R9+h6uuuuqqq67670c5fvw4V1111VVXXfXf7cVe7MVe+yM+4iO+G+A7v/M7ueeee/ifQBKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlI4qqrrgJJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJXAWSkIQkJCEJSUhCEpKQhCQkIQlJ/G8mCUlIQhKSkIQkJCEJSUjiP8JqteKee+7hZV/2ZbnmmmsefOutt/7N2bNnb+Wqq6666qqr/nuhBz3oQVx11VVXXXXVf6drrrnmwd/0Td/0dIDf+q3f4rd+67f4t5DEVVdd9WzHjx/nX2N3d5erXjS2ueoFs83/Vbb5l7zu674ur/u6r8t9991362d91me9zn333XcrV1111VVXXfXfh8pVV1111VVX/Tf78A//8O8CuPXWW/nt3/5tJHHVVf9akvjvYJv/KsePH+f48eMcP36c48ePA3DixAmOHz8OwPHjxzl+/Dj/Xru7u9xvd3eX3d1dAJ7+9KcDsLu7y+7uLru7u/x/JYn/CLb5v0gS/1q2+d9AEv+S3/qt3+IhD3kID3nIQx78OZ/zOb/1IR/yIQ/hqquuuuqqq/77oAc96EFcddVVV1111X+XD//wD/+u13md13nv3d1dvuqrvoqr/mNJ4qr/fY4fP86DH/xgjh8/zoMf/GCOHz/O8ePH+Zfs7u4CsLu7y/12d3d5URw/fpz7HT9+HIDjx4/zwuzu7gLwV3/1V5w4cYKnP/3p7O7ucuutt3LVfw3b/H9km//pjh8/zvu93/tx/Phxfuu3fuu7v/7rv/59uOqqq6666qr/HuhBD3oQV1111VVXXfXf4cVe7MVe+3M/93N/C+C7vuu7uPXWW/m/ShJXXfX8HD9+nJd+6ZcG4MEPfjAPfvCDeW67u7sA7O7ucuuttwKwu7vL7u4uu7u77O7u8p/l+PHjABw/fpzjx48D8OAHPxiA48eP8+AHP5jntru7C8Ctt97Krbfeyu7uLrfeeiv/Fra56j+ebf4/sc1/h+PHj/NxH/dxAHz913/9+/zWb/3Wd3PVVVddddVV//XQgx70IK666qqrrrrqv9o111zz4G/6pm96OsB3fdd3ceutt/LfTRJXXfWf7fjx4zz4wQ/m+PHjvPZrvzbPbXd3l1tvvZXd3V1uvfVWbr31Vv6nO378OMePH+f48eM8+MEP5vjx4zz4wQ/mgXZ3d7n11lu59dZb+eu//mv+J7DNVf86tvm/zDb/0V7mZV6Gt33bt+Xs2bPP+Lqv+7r3/od/+Iff5qqrrrrqqqv+a6EHPehBXHXVVVddddV/tc/93M/9rRd7sRd77VtvvZXv+q7v4t9KEldd9T/d8ePHeemXfmke/OAH8+AHP5j77e7usru7y6233sqtt97Krbfeyv8Vx48f5/jx4xw/fpyXfumX5sEPfjD3293dZXd3l7/+67/mr//6r/m/wDZXPX+2+b/INi+q13md1+F1X/d1ue+++279kA/5kIdw1VVXXXXVVf+10IMe9CCuuuqqq6666r/S537u5/7Wi73Yi7327u4uX/3VX81V/79I4v+L48eP81Iv9VK89mu/Nvfb3d3lr//6r3nGM57Brbfeygtjm/8rjh8/zvHjx3nwgx/Mgx/8YB784AcDsLu7y6233spf//Vfc+utt/L/mW2uAtv8X2Kb48eP87Zv+7Y85CEP4bd+67e+++u//uvfh6uuuuqqq676r4Me9KAHcdVVV1111VX/Vd7xHd/xs97pnd7pswG++7u/m1tvvZWr/n0kcdX/LA9+8IN5q7d6K44fPw7A7u4uf/3Xf83f/M3fsLu7y/9FtvnXOH78OC/90i/NS7/0S3P8+HEAdnd3+e3f/m3++q//mqv+dWzz/5Ft/rc4fvw4H/uxHwvAj/zIj3z2j/7oj34OV1111VVXXfVfg3L8+HGuuuqqq6666r/Ci73Yi732R3zER3w3wHd/93dz66238n+VJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhiav+5zh+/Djv9E7vxEu/9Etz/Phxdnd3+ZVf+RV+5md+hmc84xmsViv+r5KEJCQhCUlIQhKSkIQkJCGJ9XrNM57xDJ74xCdy7733Mp/Pue6663j0ox/NS7/0S3Pvvfdy6dIlJCEJSUhCElc9L0lIQhKSkIQkJCEJSUhCEpKQhCQk8b+ZJCQhCUlIQhKSkIQkJCGJ/26r1Yrd3V0e85jHcM011zz41ltv/ZuzZ8/eylVXXXXVVVf950MPetCDuOqqq6666qr/Ct/0Td/09GuuuebBv/3bv81v//Zv8z+BJK666j/Ca73Wa/Har/3aAOzu7vIzP/Mz3HrrrVz1ojt+/Dhv9VZvxYMf/GAAfvu3f5vf+Z3f4b+Kba560djm/zLb/Gd5ndd5HV7ndV6H++6779bP+qzPep377rvvVq666qqrrrrqPxfl+PHjXHXVVVddddV/ts/93M/9rYc85CEvfeutt/LTP/3T/HtIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkrjqqn+v48eP807v9E689Eu/NAC//du/zY/8yI+wu7vLVf86q9WKv/mbvwHgwQ9+MMePH+eVX/mVeeITn8hqteI/myQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJPH/gSQkIQlJSEISkpCEJCQhCUn8byMJSUhCEpKQhCQkIQlJ/Fvs7u5y3XXXcdNNNx1/yEMe8jK/9Vu/9d1cddVVV1111X8uyvHjx7nqqquuuuqq/0zv+I7v+Fmv8zqv8967u7t8y7d8C5KQhCQkIQlJSEISkpCEJCQhCUlIQhJX/c8jCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQxIkTJ/ioj/oojh8/zu7uLt/6rd/KE5/4RCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlI4v+aZzzjGfzN3/wNL/3SL83x48d59KMfzROf+ERWqxX/G0hCEpKQhCQkIQlJSEISkpCEJCQhCUn8XyQJSUhCEpKQhCQkIQlJSEIS/1tIQhKSkIQkJCEJSUhCEg+0Wq249dZbecxjHsMtt9zyYIB/+Id/+B2uuuqqq6666j8P5fjx41x11VVXXXXVf5YXe7EXe+2P+IiP+G6AH/mRH2F3d5er/u0kIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKS+P/qjd7ojbjuuuu49dZb+dZv/VZWqxX/HSQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpL491itVjzxiU/kuuuu47rrruPRj340f/Inf8L/B5KQhCQkIQlJSEISkpCEJCQhCUlI4v8KSUhCEpKQhCQkIQlJSEIS/xtIQhKSkMR6veaee+7hZV7mZXjxF3/x1/6Hf/iH3zl79uytXHXVVVddddV/Dsrx48e56qqrrrrqqv8M11xzzYO/4iu+4q8Afvu3f5u/+Zu/4f8ySUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSVz1P8dLvdRL8Vqv9Vrs7u7yrd/6rVz1vCQhCUlIQhKSkIQkJCEJSUhCEpKQhCTW6zXPeMYzeNSjHsXx48e5dOkS9957L5KQhCQkcdWzSUISkpCEJCQhCUlIQhKSkIQkJPG/mSQkIQlJSEISkpCEJCQhif9Jdnd3AXjIQx7Ci73Yi732n/3Zn/3M4eHhLlddddVVV131H4/gqquuuuqqq/6TfPiHf/h3Adx66638zu/8Dv+TSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCSu+v/lpV7qpQD4mZ/5Ga76z7O7u8vP/MzPAPBSL/VSPD+SkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCTx/5EkJCEJSUhCEpKQhCQkIQlJSOJ/I0lIQhKSkIQkJCEJSUjiv8pv//Zv89d//ddcc801D/6cz/mc3+Kqq6666qqr/nMQXHXVVVddddV/gs/93M/9rRd7sRd77d3dXb7ne76H/yiSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpDEVVf9ez34wQ8G4BnPeAZX/ee6dOkSAA9+8IM5fvw4/9kkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCGJ/+skIQlJSEISkpCEJCQhCUlI4n8TSUhCEpKQhCQkIQlJSOI/wm/91m+xu7vLNddc8+AP//AP/y6uuuqqq6666j8elauuuuqqq676D/ZiL/Zir/1iL/Zirw3wMz/zM9xPElf97yaJq+D48eMA7O7uIon/yWzzv93u7i67u7v8byOJfw/b/F8iiX8N2/xPJ4kXhW1ekN3dXb7ru76Lj/mYj+F1Xud13vvs2bPP+JEf+ZHP5qqrrrrqqqv+4xBcddVVV1111X+ga6655sGf+7mf+1sA3/M938MznvEMJCGJq/7tJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYmrrtjd3QXg+PHjPOhBD+J/MklIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEv8ex48f5/jx4+zu7vL/hSQkIQlJSEISkpCEJCQhCUlIQhKS+L9AEpKQhCQkIQlJSEISkpDE/3SSkIQkJCEJSUhCEpcuXeKnfuqnAHid13md936xF3ux1+aqq6666qqr/uMQXHXVVVddddV/oA//8A//LoBbb72VZzzjGfx/IAlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYmr/uf5m7/5GwBe6qVeiqteNJKQhCQkIQlJSEISkpCEJCQhCUm813u9FwB/8zd/gyQkIQlJSEISkrjq2SQhCUlIQhKSkIQkJCEJSUhCEv+bSUISkpCEJCQhCUlIQhL/k/3N3/wNv/3bv82ZM2ce9OEf/uHfxVVXXXXVVVf9x6EcP36cq6666qqrrvqP8Lmf+7m/9WIv9mKvfeutt/K93/u9/E8lCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISV/3/dO+99/JKr/RKXHfddQA84xnP4Kr/eC/1Ui/FK73SKwHwYz/2Y6xWK14QSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKS+P9GEpKQhCQkIQlJSEISkpCEJCTxv40kJCEJSUhCEpKQhCQk8d9ld3eX6667jhtvvPH4Nddc8+A//dM//Rmuuuqqq6666t+Pcvz4ca666qqrrrrq3+sd3/EdP+t1Xud13hvgZ37mZ7h06RL/0SQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYmrrvqPsFqteMYznsFLvdRL8eAHPxiAZzzjGVz1H+c1X/M1eaM3eiMAvvd7v5d7772X/0qSkIQkJCEJSUhCEpKQhCQkIQlJSEISkvi/ThKSkIQkJCEJSUhCEpKQhCT+t5CEJCQhCUlIQhKSkIQk/qOtVituvfVWXvmVX5mHPOQhLw3wD//wD7/DVVddddVVV/37UI4fP85VV1111VVX/Xu82Iu92Gt/xEd8xHcDfM/3fA/PeMYzeH4kIQlJSEISkpCEJCQhCUlIQhKSkIQkrvrvIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQuXbrE7u4uj3rUo3jwgx/Mgx/8YG677TbW6zWSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJ/G9w/Phx3vEd35GXeqmXAuB7v/d7ecYznsH/RpKQhCQkIQlJSEISkpCEJCQhCUlIQhL/10hCEpKQhCQkIQlJSEISkvjfQBKSkIQkJCEJSUhCEpL411itVuzu7vLoRz+aa6655sG33nrr35w9e/ZWrrrqqquuuurfjnL8+HGuuuqqq6666t/qmmuuefBXfMVX/BXA7/zO7/C3f/u3SEISkpCEJCRx1b+eJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkrnrh7r33Xp7xjGfwoAc9iOuuu45HPvKRzOdznvGMZ/A/kSQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJF6Y13zN1+Qd3/EdOX78OLu7u/zoj/4oz3jGM/j/ShKSkIQkJCEJSUhCEpKQhCQkIYn/CyQhCUlIQhKSkIQkJCEJSfxPJwlJSEISkpCEJCQhiQe65557AHixF3ux4y/2Yi/22n/2Z3/2M4eHh7tcddVVV1111b8N5fjx41x11VVXXXXVv9UnfdIn/dQ111zz4Gc84xn87M/+LP/fSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJXPW/w6VLl3jSk57EarXiUY96FA960IN4yZd8SebzOZcuXWK1WnHVs0lCEpKQxIkTJ3ilV3ol3vM935MHP/jBAPzu7/4uP/ZjP8alS5eQhCQkIQlJSEISkpCEJCRx1RWSkIQkJCEJSUhCEpKQhCQkIQlJ/G8lCUlIQhKSkIQkJCEJSfxPJglJSEISly5d4rrrruPGG288/pCHPORlfuu3fuu7ueqqq6666qp/G8rx48e56qqrrrrqqn+Ld3zHd/ys13md13nv3d1dvu3bvo3/LSQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJXHXV/VarFc94xjP427/9W1arFY961KN40IMexCMf+UiuvfZa1us1ly5d4qpnO378OK/4iq/IO7zDO3Ds2DHm8zm/+7u/y8/93M/xxCc+kX8LSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKS+P9GEpKQhCQkIQlJSEISkpCEJP63kYQkJCEJSUhCEpKQhCT+J1itVjzjGc/g0Y9+NLfccsuDAf7hH/7hd7jqqquuuuqqfz30oAc9iKuuuuqqq67613qxF3ux1/7cz/3c3wL43u/9Xp7xjGfwn00SV131v8Xx48d5yZd8SV7yJV+S48ePA7C7u8sznvEMnvGMZ/C3f/u3/H9z/Phxjh07xoMe9CBe8zVfk/vt7u7yt3/7t/zu7/4u/xfZ5qorbPN/iW3+sx0/fpyP+qiPAuDrv/7r3+e3fuu3vpurrrrqqquu+tdBD3rQg7jqqquuuuqqf41rrrnmwd/0Td/0dIDf+Z3f4Xd/93d5UUniqv8fJHEVHDt2jOPHj/OSL/mSvORLviT3u3TpEru7uzzjGc/gtttu4xnPeAb/Frb5n+r48eMAvORLviQPetCDeNCDHsT9dnd3+du//Vt2d3f527/9W656/mzz/5Vt/i+wzb/Xa73Wa/Har/3a3Hfffbd+1md91uvcd999t3LVVVddddVVLzr0oAc9iKuuuuqqq6761/jcz/3c33qxF3ux137GM57B933f93HVfy9JXPW/w7Fjxzh+/Dgv+ZIvybFjx3jQgx7E/S5dugTAM57xDJ7xjGdw6dIlnvGMZ/C/xbFjxwB4yZd8SQAe9KAH8aAHPYj77e7uAvC3f/u3POMZz+AZz3gGV/3nsc3/J7b538w2/5K3equ34qVf+qW57777bv2QD/mQh3DVVVddddVVLzr0oAc9iKuuuuqqq656UX3u537ub73Yi73Ya+/u7vL1X//1XPXCSeKqq16QY8eO8aAHPYgHPehBHDt2jAc96EE8t0uXLrG7u8ulS5d4xjOeAcClS5fY3d3l0qVL/Fc6duwYx48f59ixYxw7dgyABz3oQTzoQQ/iuV26dAmAv/mbvwHg937v9/iPZJur/mPZ5v862/xvdezYMd7rvd6L48eP81u/9Vvf/fVf//Xvw1VXXXXVVVe9aNCDHvQgrrrqqquuuupF8WIv9mKv/bmf+7m/BfB93/d9POMZz+D/EklcddV/p2PHjgHwoAc9iAc96EEAPOhBD+LYsWO8IJcuXQJgd3cXgEuXLgGwu7vL/S5dusQLc+zYMR7o+PHjHDt2DIDjx49z7NgxXphLly6xu7vLM57xDABuu+02nvGMZ/C/iW2u+tezzf9Ftvmf6Pjx43zkR34kAD/6oz/6OT/yIz/y2Vx11VVXXXXVvww96EEP4qqrrrrqqqv+JS/2Yi/22p/7uZ/7WwDf933fxzOe8Qz+J5HEVVf9X3Xs2DEAHvSgBwHwoAc9CIBjx45x/Phxjh07xn+WS5cuAbC7u8ulS5fY3d0F4NKlS1y6dIlnPOMZXPVstrnq+bPN/yW2+e/wUi/1UrzVW70VZ8+efcbXfd3Xvfc//MM//DZXXXXVVVdd9cKhBz3oQVx11VVXXXXVv+Sbvumbnn7NNdc8+G/+5m/4uZ/7Of6jSeKq/1skcdV/Ptvc79ixYwAcP36c+x07dowXxaVLl7jf7u4uly5d4qr/Wra56grb/F9gm/8Mr/Var8VrvdZrcd999936IR/yIQ/hqquuuuqqq144KlddddVVV131L/jcz/3c37rmmmse/IxnPIOf+7mf4wWRxFX/PSRx1f9Pkrjf3t4eAHt7e/x7SeLfyjZX/etJ4t/KNv+XSOJFZZv/qSTxL7HNv9bf/M3f8KAHPYgHP/jBD/7wD//w7/r6r//69+Gqq6666qqrXjDK8ePHueqqq6666qoX5B3f8R0/63Ve53XeG+D7v//7Wa/XSEISkpCEJCRx1fMnCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhiauu+p9EEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCElc9J0lIQhKSkIQkJCEJSUhCEpKQxP8VkpCEJCQhCUlIQhKSkMT/VJKQhCQkIQlJSEISknhuq9WKW2+9lUc/+tE85jGPeWmAf/iHf/gdrrrqqquuuur5oxw/fpyrrrrqqquuen5e7MVe7LU/4iM+4rsBvv/7v597772X/w8kIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUjiqquu+o8nCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEIS/x9JQhKSkIQkJCEJSUhCEpKQxP92kpCEJCQhCUlIQhKSkMT/RJKQhCQkIYn1es29997LS73US3HNNdc8+NZbb/2bs2fP3spVV1111VVXPS/K8ePHueqqq6666qrnds011zz4K77iK/4K4Hd/93f527/9W/6nk4QkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK666qr/fyQhCUlIQhKSkIQkJCEJSUhCEpKQhCQk8X+dJCQhCUlIQhKSkIQkJCEJSfxvJQlJSEISkpCEJCQhif8pLl26BMCLvdiLHX+xF3ux1/6zP/uznzk8PNzlqquuuuqqq54Tlauuuuqqq656Pj78wz/8uwCe8Yxn8Hu/93v8V5HEVf83SeKq/zi2uep/Fkn8W9nm/xpJvKhs87+JJP4ltvmv8Ld/+7c8+MEP5kEPetCDP/dzP/e3P/iDP/jBXHXVVVddddVzohw/fpyrrrrqqquueqB3fMd3/KzXeZ3Xee9Lly7x7d/+7fxrSUISkpCEJCQhCUlIQhKSkIQkJCGJq/79JCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkrjqP5YkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSOKqfztJSEISkpCEJCQhCUlIQhKSkIQkJPF/gSQkIQlJSEISkpCEJCTxv4kkJCEJSUhCEpKQhCT+I6xWK57xjGfwqEc9ilOnTh2/5pprHvynf/qnP8NVV1111VVXPRvl+PHjXHXVVVddddX9XuzFXuy1P+IjPuK7AX78x3+cvb09JCEJSUhCEpKQhCQkIQlJSOKqF0wSkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISV13130USkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISVz0vSUhCEpKQhCQkIQlJSEISkpDE/1aSkIQkJCEJSUhCEpKQxP8WkpCEJCQhCUlIQhIvqtVqxZOe9CRe6ZVeiYc85CEvffbs2Wfceuutf81VV1111VVXXUE5fvw4V1111VVXXQVwzTXXPPgrvuIr/grg53/+53nSk57E/2eSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhiauuuurfRxKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJP6/koQkJCEJSUhCEpKQhCQkIYn/bSQhCUlIQhKSkIQkJCGJ/+kkIQlJSEISkpCEJCRxv9VqxaVLl3jUox7Fgx/84Jf+sz/7s585PDzc5aqrrrrqqquA4Kqrrrrqqque6cM//MO/C+AZz3gGf/u3f8v/ZpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSuOqqq/7vk4QkJCEJSUhCEpKQhCQkIQlJSEISkpCEJP6vk4QkJCEJSUhCEpKQhCQk8b+JJCQhCUlIQhKSkIQk/qeThCQk8bd/+7f8zd/8Dddcc82DP+dzPue3uOqqq6666qorKMePH+eqq6666qqrPvdzP/e3XuzFXuy1L126xHd8x3fw300SkpCEJCQhCUlIQhKSkIQkJCEJSUjiqv8dJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCGJq/7nk4QkJCEJSUhCEpKQhCQkIQlJSEIS/9dIQhKSkIQkJCEJSUhCEpL430ASkpCEJCQhCUlIQhKS+J/ivvvu49prr+XGG288fs011zz4T//0T3+Gq6666qqr/r+jHD9+nKuuuuqqq/5/e53XeZ33fvM3f/OPBvjxH/9xLl26xH8USUhCEpKQhCQkIQlJSEISkpCEJK76jyEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCRx1YtGEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlI4qp/H0lIQhKSkIQkJCEJSUhCEpKQhCT+L5CEJCQhCUlIQhKSkIQkJPE/nSQkIQlJSEISkpDEf5XVasVtt93GK77iK/KQhzzkpSXpH/7hH36bq6666qqr/j+jHD9+nKuuuuqqq/7/erEXe7HX/qRP+qSfAvj+7/9+brvtNl4QSUhCEpKQhCQkIQlJSEISkpDEVS+YJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK666r+CJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK56XpKQhCQkIQlJSEISkpCEJCQhif/NJCEJSUhCEpKQhCQkIYn/qSQhCUlIQhKSkIQkJPEfZbVasbu7y6Me9Siuueaahzz96U//67Nnz97KVVddddVV/19Rjh8/zlVXXXXVVf9/fe7nfu5vbW5uHv+93/s9/v7v/x5JSEISkpCEJCTx/50kJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlcddVVLzpJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpL4/0oSkpCEJCQhCUlIQhKSkIQk/jeShCQkIQlJSEISkpDE/1SSkIQkJCEJSUhCEv8a9957LwCPfexjj7/Yi73Ya//Zn/3ZzxweHu5y1VVXXXXV/0cEV1111VVX/b/1uZ/7ub91zTXXPPi2227j93//9/m/ShKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkrjqqqv+75CEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCT+r5OEJCQhCUlIQhKSkIQkJCGJ/y0kIQlJSEISkpCEJCQhif9pJCEJSUhCEpKQhCSe29/+7d/yjGc8g2uuuebBH/7hH/5dXHXVVVdd9f8V5fjx41x11VVXXfX/zzu+4zt+1uu8zuu8N8AP/MAPsF6v+Z9KEpKQhCQkIQlJSEISkpCEJCQhCUlI4qr//SQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkrvrfSxKSkIQkJCEJSUhCEpKQhCQkIQlJ/F8kCUlIQhKSkIQkJCEJSfxvIQlJSEISkpCEJCQhif9JJCEJSUhivV7zjGc8g0c96lHcfPPNDwb4h3/4h9/hqquuuuqq/28ox48f56qrrrrqqv9fXuzFXuy1P+IjPuK7AX7gB36A++67j/8KkpCEJCQhCUlIQhKSkIQkJCEJSVz1H0sSkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQk8X+dJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJXPUfQxKSkIQkJCEJSUhCEpKQhCQkIYn/CyQhCUlIQhKSkIQkJCEJSfxPJwlJSEISkpCEJCTx3229XnPvvffyki/5klxzzTUPvvXWW//m7Nmzt3LVVVddddX/J5Tjx49z1VVXXXXV/x/XXHPNg7/iK77irwB+7/d+j7/7u7/j30ISkpCEJCQhCUlIQhKSkIQkJHHVCycJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSVx11b+XJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCRx1fMnCUlIQhKSkIQkJCEJSUhCEpL430wSkpCEJCQhCUlIQhKS+J9KEpKQhCQkIQlJSEIS/9kuXboEwGMf+9jjL/ZiL/baf/Znf/Yzh4eHu1x11VVXXfX/BcFVV1111VX/r3z4h3/4dwHcdttt/P7v/z73k4QkJCEJSUhCEpKQhCQkIYn/7yQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISV1111XOShCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSfx/JQlJSEISkpCEJCQhCUlIQhL/G0lCEpKQhCQkIQlJSOJ/KklIQhKSkIQkJCGJ/wi/93u/xzOe8QyuueaaB3/u537ub3PVVVddddX/J5Tjx49z1VVXXXXV/w8f/uEf/l2v+Iqv+NaXLl3iu77ru5CEJCTx/4kkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK666qr/nSQhCUlIQhKSkIQkJCEJSUhCEpKQhCQk8f+BJCQhCUlIQhKSkIQkJCGJ/00kIQlJSEISkpCEJCQhif9pJCEJSUhCEpKQhCReVM94xjN41KMexcmTJ49fc801D/7TP/3Tn+Gqq6666qr/Dwiuuuqqq676f+HFXuzFXvt1Xud13hvgF37hF/jfTBKSkIQkJCEJSUhCEpKQhCQkIQlJSOKq/98kIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSVz1/5MkJCEJSUhCEpKQhCQkIQlJSEISkpDE/zWSkIQkJCEJSUhCEpKQhCT+t5CEJCQhCUlIQhKS+J9GEpKQhCQkIQlJSOJ+ly5d4vu+7/sAeJ3XeZ33fp3XeZ335qqrrrrqqv8PKMePH+eqq6666qr/26655poHf8VXfMVfAfzgD/4gt912G/8TSEISkpCEJCQhCUlIQhKSkIQkJHHVfx5JSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUn8R5KEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkMRV//EkIQlJSEISkpCEJCQhCUlIQhKS+L9AEpKQhCQkIQlJSEISkpDE/2SSkIQkJCEJSUhCEpL4n0QSkpDEer3m0qVLPPKRj+TBD37wS996661/c/bs2Vu56qqrrrrq/zKCq6666qqr/s/78A//8O8CuO2227jtttv4zyAJSUhCEpKQhCQkIQlJSEISkrjqXyYJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEldd9dwkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJXPXCSUISkpCEJCQhCUlIQhKSkIQk/jeThCQkIQlJSEISkpDE/2SSkIQkJCEJSUhCEv+d/vZv/5bf+73f45prrnnwh3/4h38XV1111VVX/V9HOX78OFddddVVV/3f9bmf+7m/9WIv9mKvfenSJb7ru76LF5UkJCEJSUhCEpKQhCQkIQlJXAWSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhiauu+v9EEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJPH/nSQkIQlJSEISkpCEJCQhCUn8byMJSUhCEpKQhCQkIQlJ/E8kCUlIQhKSkIQkJCGJ/0yXLl3i2muv5cYbbzx+zTXXPPhP//RPf4arrrrqqqv+r6IcP36cq6666qqr/m96x3d8x896ndd5nfcG+Kmf+in29vaQhCQkIQlJSEISkpCEJP4/kYQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK666qr/eSQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYn/LyQhCUlIQhKSkIQkJCEJSfxvIglJSEISkpCEJCQhif+JJCEJSUhCEpKQhCT+PdbrNbfddhuv+IqvyEMe8pCXlqR/+Id/+G2uuuqqq676v4hy/Phxrrrqqquu+r/nxV7sxV77Iz7iI74b4Id+6Ie47bbb+L9MEpKQhCQkIQlJSEISkpCEJCQhCUlcddVVV/1LJCEJSUhCEpKQhCQkIQlJSEISkpCEJP4vkoQkJCEJSUhCEpKQhCQk8b+BJCQhCUlIQhKSkIQk/qeRhCQkIQlJSEISL4r1es2lS5d45CMfyTXXXPOQpz/96X999uzZW7nqqquuuur/GvSgBz2Iq6666qqr/u/5pm/6pqdfc801D/793/99/uAP/oD/DSRx1f9skrjq/ybbXPU/j23+P7HN/3a2+d/ANvd7jdd4DV7jNV6D++6779bP+qzPep377rvvVq666qqrrvq/hOCqq6666qr/cz73cz/3t6655poH33bbbfzBH/wB/x0kIQlJSEISkpCEJCQhCUlIQhJXvegkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkrjq/y5JSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpDEVf8ySUhCEpKQhCQkIQlJSEISkpDE/2aSkIQkJCEJSUhCEpKQxP9kkpCEJCQhCUlIQhL/U0hCEpL4u7/7O2677TauueaaB3/4h3/4d3HVVVddddX/NZTjx49z1VVXXXXV/x3v+I7v+Fmv8zqv896XLl3iu7/7u/mPIglJSEISkpCEJCQhCUlIQhJXPZskJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlI4qqr/i+QhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSVwFkpCEJCQhCUlIQhKSkIQkJPG/kSQkIQlJSEISkpCEJP6nkoQkJCEJSUhCEpL477Ber7ntttt45CMfyc033/xggH/4h3/4Ha666qqrrvq/guCqq6666qr/M17sxV7std/pnd7pswF+8Rd/kRdGEpKQhCQkIQlJSEISkpCEJP6/kYQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCRx1VVX/deRhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQk/j+RhCQkIQlJSEISkpCEJCTxv4kkJCEJSUhCEpKQhCT+J5KEJCQhCUlIQhKS+M9y6dIlfv7nfx6Ad3qnd/rsF3uxF3ttrrrqqquu+r+Ccvz4ca666qqrrvrf75prrnnwV3zFV/wVwB/8wR/w93//90hCEpKQhCQkIYn/6yQhCUlIQhKSkIQkJCEJSUhCEpKQhCSuuuqq/98kIQlJSEISkpCEJCQhCUlIQhKSkIQk/q+ShCQkIQlJSEISkpCEJCTxv4EkJCEJSUhCEpKQhCT+p5GEJCQhCUlIQhKS+Pe4dOkSAA960IN4sRd7sdf+sz/7s585PDzc5aqrrrrqqv/tqFx11VVXXfV/wod/+Id/F8Btt93GH/zBH/B/hSSu+t9HElf9z2Gbq/5rSeLfwjb/V0jiRWGb/8kk8S+xzf8UknhBbPMv+f3f/32OHz/OS7zESzz4cz/3c3/7gz/4gx/MVVddddVV/9tRjh8/zlVXXXXVVf+7fe7nfu5vvdiLvdhrX7p0ie/5nu/hfypJSEISkpCEJCQhCUlIQhKSkMRV/zaSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCElf9zyIJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkcdWLThKSkIQkJCEJSUhCEpKQhCQk8b+dJCQhCUlIQhKSkIQkJPE/mSQkIQlJSEISkpDE/xSSkIQkJCEJSUjige69914e+chHcvLkyePXXHPNg//0T//0Z7jqqquuuup/M8rx48e56qqrrrrqf68Xe7EXe+13eqd3+myAn/qpn2Jvb4//CpKQhCQkIQlJSEISkpCEJCQhiauekyQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpK46qr/SSQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkrjqCklIQhKSkIQkJCEJSUhCEpKQxP9GkpCEJCQhCUlIQhKS+J9KEpKQhCQkIQlJSOJ/AklIQhLr9ZonP/nJvMIrvAIPechDXhrgH/7hH36Hq6666qqr/reiHD9+nKuuuuqqq/53erEXe7HX/tzP/dzfAvihH/ohbr/9dv49JCEJSUhCEpKQhCQkIQlJ/H8lCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSOKqq67695GEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQk8f+NJCQhCUlIQhKSkIQkJCGJ/00kIQlJSEISkpCEJCQhif9pJCEJSUhCEpKQhCT+O6zXay5dusQjH/lIrrnmmgffeuutf3P27Nlbueqqq6666n8jgquuuuqqq/7Xeqd3eqfPArjtttu4/fbbeX4kIQlJSEISkpCEJCQhCUn8fyAJSUhCEpKQhCQkIQlJSEISkpCEJCRx1VVX/d8kCUlIQhKSkIQkJCEJSUhCEpKQhCQk8X+ZJCQhCUlIQhKSkIQkJCGJ/y0kIQlJSEISkpCEJP6nkYQkJCEJSUhCEpL4z/J3f/d3/P7v/z7XXHPNgz/8wz/8u7jqqquuuup/K8rx48e56qqrrrrqf5/P/dzP/a0Xe7EXe+3bb7+dH/mRH0ESkpCEJCQhif+LJCEJSUhCEpKQhCQkIQlJSEISkpDEVf+zSUISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSOKq/5kkIQlJSEISkpCEJCQhCUlIQhKSkMT/JZKQhCQkIQlJSEISkpDE/3SSkIQkJCEJSUhCEpL4n0QSkpCEJCQhCUn8e126dIlrr72WG2644fg111zz4D/90z/9Ga666qqrrvrfhnL8+HGuuuqqq6763+Ud3/EdP+t1Xud13hvgR37kR1iv1/xvJQlJSEISkpCEJCQhCUlIQhKSuOrfTxKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYmr/mWSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJXPVvJwlJSEISkpCEJCQhCUlIQhKS+N9OEpKQhCQkIQlJSEISkvifTBKSkIQkJCEJSUjifwpJSEISkpCEJCTxoliv19x22228wiu8Ag95yENeWpL+4R/+4be56qqrrrrqfxPK8ePHueqqq6666n+PF3uxF3vtj/iIj/hugB/+4R/mvvvu438KSUhCEpKQhCQkIQlJSEISkpDEVc+fJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpDEVVf9R5OEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkrjqOUlCEpKQhCQkIQlJSEISkpDE/1aSkIQkJCEJSUhCEpL4n0oSkpCEJCQhCUlI4n8CSUhCEpKQhCQkIYn7rddrLl26xCMf+Uiuueaahzz96U//67Nnz97KVVddddVV/1tQjh8/zlVXXXXVVf87XHPNNQ/+iq/4ir8C+IM/+AP+4R/+gf9skpCEJCQhCUlIQhKSkIQk/r+ThCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJHHVVVc9J0lIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEIS/x9JQhKSkIQkJCEJSUhCEpL430YSkpCEJCQhCUlIQhL/E0lCEpKQhCQkIQlJ/E8gCUlI4r777gPgMY95zPEXe7EXe+0/+7M/+5nDw8Ndrrrqqquu+t+A4Kqrrrrqqv81PvzDP/y7AG6//Xb+8A//kH8rSUhCEpKQhCQkIQlJSEIS/19IQhKSkIQkJCEJSUhCEpKQhCQkIQlJSOKqq67630ESkpCEJCQhCUlIQhKSkIQkJCEJSUhCEv+XSUISkpCEJCQhCUlIQhKS+N9CEpKQhCQkIQlJSEIS/9NIQhKSkIQkJCEJSfx3+Pu//3tuu+02rrnmmgd/zud8zm9x1VVXXXXV/xaU48ePc9VVV1111f987/iO7/hZr/M6r/Pely5d4nu+53t4bpKQhCQkIQlJSEISkpCEJP6vkoQkJCEJSUhCEpKQhCQkIQlJSEISV/3/JAlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUjiqv9fJCEJSUhCEpKQhCQkIQlJSEISkvi/RhKSkIQkJCEJSUhCEpKQxP90kpCEJCQhCUlIQhKS+J9EEpKQhCQkIQlJ/GdZr9fcfvvtPOIRj+DUqVPHAf7hH/7hd7jqqquuuup/Osrx48e56qqrrrrqf7YXe7EXe+2P+IiP+G6An/mZn2Fvbw9JSEISkvi/RhKSkIQkJCEJSUhCEpKQhCQkcdV/DklIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJPEfSRKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSVz1H0cSkpCEJCQhCUlIQhKSkIQkJCGJ/wskIQlJSEISkpCEJCTxP50kJCEJSUhCEpKQxP8UkpCEJCQhCUlI4t9rvV7z5Cc/mZd/+ZfnxV/8xV/77Nmzz7j11lv/mquuuuqqq/4noxw/fpyrrrrqqqv+57rmmmse/BVf8RV/BfCHf/iH/MM//AP/20hCEpKQhCQkIQlJSEISkpCEJK564SQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlcdZUkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJHHVCyYJSUhCEpKQhCQkIQlJSEIS/1tJQhKSkIQkJCEJSUhCEv9TSUISkpCEJCQhCUn8TyAJSUhCEpKQhCReVOv1mr29PR7xiEfw4Ac/+KX/7M/+7GcODw93ueqqq6666n8qgquuuuqqq/5H+/AP//DvArj99tv5wz/8Q/4nkIQkJCEJSUhCEpKQhCQkIYmrQBKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK666v8iSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKS+P9MEpKQhCQkIQlJSEISkpCEJP63kYQkJCEJSUhCEpKQxP9EkpCEJCQhCUlIQhL/3SQhCUlIQhKSkMRz+7u/+zv+7u/+jmuuuebBn/u5n/vbXHXVVVdd9T8Z5fjx41x11VVXXfU/0+d+7uf+1ou92Iu99qVLl/je7/1e/jNJQhKSkIQkJCEJSUhCEpL4/0YSkpCEJCQhCUlIQhKSkIQkJCEJSUhCElddddV/PUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJ/H8hCUlIQhKSkIQkJCEJSUjifwtJSEISkpCEJCQhCUn8TyMJSUhCEpKQhCT+u0lCEpKQhCTOnj3LIx7xCE6ePHn8mmuuefCf/umf/gxXXXXVVVf9T0Q5fvw4V1111VVX/c/zYi/2Yq/9Tu/0Tp8N8DM/8zPs7e3xbyEJSUhCEpKQhCQkIQlJ/F8mCUlIQhKSkIQkJCEJSUhCEpKQhCQkcdVVV/3/JQlJSEISkpCEJCQhCUlIQhKSkIQkJPF/kSQkIQlJSEISkpCEJCTxv4EkJCEJSUhCEpKQxP8kkpCEJCQhCUlIQhL/HdbrNU95ylN4+Zd/eR7ykIe8NMA//MM//A5XXXXVVVf9T0M5fvw4V1111VVX/c/yYi/2Yq/9uZ/7ub8F8CM/8iPcfvvtPDdJSEISkpCEJCQhCUlI4v8aSUhCEpKQhCQkIQlJSEISkpDEVf+1JCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYmr/mtIQhKSkIQkJCEJSUhCEpKQhCT+r5CEJCQhCUlIQhKSkIQk/ieThCQkIQlJSEISkvifRBKSkIQkJCEJSfxnWq/XXLp0iUc84hFcc801D7711lv/5uzZs7dy1VVXXXXV/yToQQ96EFddddVVV/3P8k3f9E1Pv+aaax78D//wD/zyL/8y/1dJ4qr/XJK46qr/KWxz1X8O2/xfZpv/jWzzP51t/iO82qu9Gq/2aq/Gfffdd+uHfMiHPISrrrrqqqv+J6EcP36cq6666qqr/uf43M/93N96yEMe8tK33347P/MzP8P/JpKQhCQkIQlJSEISkpCEJCRx1bNJQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCRx1VX/k0hCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJHEVSEISkpCEJCQhCUlIQhKS+N9IEpKQhCQkIQlJSEIS/xNJQhKSkIQkJCEJSfxPIAlJSEISkpCEJP419vb2uOaaa7jhhhuOX3PNNQ/+0z/905/hqquuuuqq/ykox48f56qrrrrqqv8Z3vEd3/GzXud1Xue9AX70R3+U9XrNfzdJSEISkpCEJCQhCUlIQhL/H0lCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhJXXXXVv50kJCEJSUhCEpKQhCQkIQlJSEISkpCEJCTx/4UkJCEJSUhCEpKQhCQkIYn/TSQhCUlIQhKSkIQkJPE/jSQkIQlJSEISkpDEfzdJSEISkpCEJCTx3NbrNbfffjuPeMQjePSjH/3SkvQP//APv81VV1111VX/E1COHz/OVVddddVV//1e7MVe7LU/4iM+4rsBfvRHf5SzZ8/yn0USkpCEJCQhCUlIQhKSkMT/dZKQhCQkIQlJSEISkpCEJCQhCUlIQhJXXXXV/x2SkIQkJCEJSUhCEpKQhCQkIQlJSOL/KklIQhKSkIQkJCEJSUhCEv8bSEISkpCEJCQhCUlI4n8SSUhCEpKQhCQk8d9NEpKQhCQksV6vuffee3mJl3gJrrnmmoc8/elP/+uzZ8/eylVXXXXVVf/d0IMe9CCuuuqqq67673XNNdc8+Ju+6ZueDvCHf/iH/NEf/RH/FpL4/0oSV/3fIomrXjDbXPW/n23+v7HN/2a2+Z/ONv+dXvVVX5VXe7VX47777rv1sz7rs17nvvvuu5Wrrrrqqqv+OxFcddVVV1313+7DP/zDvwvg9ttv54/+6I94bpKQhCQkIQlJSEISkpDE/xWSkIQkJCEJSUhCEpKQhCQkIYmr/n0kIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhJXvXCSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkcdW/jSQkIQlJSEISkpCEJCQhCUlI4n87SUhCEpKQhCQkIQlJ/E8mCUlIQhKSkIQkJPE/gSQkIQlJSEISkviv8A//8A/cfvvtXHPNNQ/+nM/5nN/iqquuuuqq/26U48ePc9VVV1111X+fd3zHd/ys13md13nvvb09vv/7vx9JSEISkpDE/3aSkIQkJCEJSUhCEpKQhCQkcdXzJwlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCSuuurfSxKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlI4qpnk4QkJCEJSUhCEpKQhCQkIYn/jSQhCUlIQhKSkIQkJPE/lSQkIQlJSEISkvifQBKSkIQkJCEJSfxHWa/X3HbbbTziEY/g1KlTx6+55poH/+mf/unPcNVVV1111X8XyvHjx7nqqquuuuq/x4u92Iu99kd8xEd8N8DP/MzPsLe3x/8WkpCEJCQhCUlIQhKSkIQk/j+ThCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJHHVVf+fSUISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpL4/0YSkpCEJCQhCUlIQhKSkMT/JpKQhCQkIQlJSEISkvifRhKSkIQkJCEJSUjiv5skJCEJSUhCEpL411qv1zzlKU/h5V7u5XjIQx7y0mfPnn3Grbfe+tdcddVVV13134Fy/Phxrrrqqquu+q93zTXXPPgrvuIr/grgV37lV3jqU5/KfzdJSEISkpCEJCQhCUlIQhL/X0hCEpKQhCQkIQlJSEISkpCEJCQhCUlcddVV//NIQhKSkIQkJCEJSUhCEpKQhCQkIQlJ/F8mCUlIQhKSkIQkJCEJSUjifwNJSEISkpCEJCQhCUn8TyIJSUhCEpKQhCT+u0lCEpKQhCQkIYkXZL1es7e3xyMe8Qge/OAHv/Sf/dmf/czh4eEuV1111VVX/VcjuOqqq6666r/Fh3/4h38XwO23384//MM/8J9JEpKQhCQkIQlJSEISkvi/ShKSkIQkJCEJSUhCEpKQhCQkIQlJXHXVVVc9N0lIQhKSkIQkJCEJSUhCEpKQhCT+r5GEJCQhCUlIQhKSkIQk/qeThCQkIQlJSEISkvifQhKSkIQkJCEJSUjiv5MkJCEJSUhCEgB///d/z9///d9zzTXXPPhzP/dzf5urrrrqqqv+O1COHz/OVVddddVV/7U+93M/97de7MVe7LX39vb4/u//fv6tJCEJSUhCEpKQhCQkIYn/SyQhCUlIQhKSkIQkJCEJSUhCElf955CEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpDEVf+xJCEJSUhCEpKQhCQkIQlJSEIS/xdIQhKSkIQkJCEJSUjifzJJSEISkpCEJCQhif8pJCEJSUhCEpKQxH8XSUjivvvu45prruH6668/fs011zz4T//0T3+Gq6666qqr/itRjh8/zlVXXXXVVf91Xud1Xue93/zN3/yjAX7mZ36Gvb09nh9JSEISkpCEJCQhCUn8XyAJSUhCEpKQhCQkIQlJSEISV/3LJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCGJq/7vk4QkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkrnrBJCEJSUhCEpKQhCQkIQlJSOJ/K0lIQhKSkIQkJCEJSfxPJQlJSEISkpCEJCTxP4EkJCEJSUhCEpL4r7Ber7n99tt5uZd7OR7ykIe8NMA//MM//A5XXXXVVVf9V6EcP36cq6666qqr/mu82Iu92Gt/0id90k8B/NiP/Rh33nknkpCEJCQhCUn8byUJSUhCEpKQhCQkIQlJSEISV4EkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlcddX/NpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCGJ/68kIQlJSEISkpCEJCQhCUn8byMJSUhCEpKQhCQkIYn/iSQhCUlIQhKSkMT/BJKQhCQkIQlJ/Edbr9dcunSJRzziEVxzzTUPvvXWW//m7Nmzt3LVVVddddV/Bcrx48e56qqrrrrqv8bnfu7n/tbm5ubxP/qjP+Jxj3sc/1tIQhKSkIQkJCEJSUhCEpL4/0YSkpCEJCQhCUlIQhKSkIQkJCEJSUhCElddddV/PElIQhKSkIQkJCEJSUhCEpKQhCQkIYn/DyQhCUlIQhKSkIQkJCEJSfxvIQlJSEISkpCEJCQhif9JJCEJSUhCEpKQhCT+O0lCEpKQhCQkIYl/q7NnzwLw6Ec/+viLvdiLvfaf/dmf/czh4eEuV1111VVX/WcjuOqqq6666r/E537u5/7WNddc8+A77riDP/7jP+Z/AklIQhKSkIQkJCEJSUji/zpJSEISkpCEJCQhCUlIQhKSkIQkJHHVVVf93yQJSUhCEpKQhCQkIQlJSEISkpCEJP4vkoQkJCEJSUhCEpKQhCT+N5CEJCQhCUlIQhKS+J9EEpKQhCQkIQlJ/HeShCQkIQlJSOJF8fd///fcfvvtXHPNNQ/+8A//8O/iqquuuuqq/wqU48ePc9VVV1111X+ud3zHd/ys13md13lvgB/7sR9jvV7zn0kSkpCEJCQhCUlIQhKS+L9GEpKQhCQkIQlJSEISkpCEJCQhiav++0hCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlI4qr/epKQhCQkIQlJSEISkpCEJCQhCUn8XyAJSUhCEpKQhCQkIQlJ/E8mCUlIQhKSkIQkJPE/hSQkIQlJSEISkvjvIglJSEISkpCEJO63Xq+5/fbbefjDH87NN9/8YEn6h3/4h9/mqquuuuqq/0yU48ePc9VVV1111X+eF3uxF3vtj/iIj/hugB/7sR/j7Nmz/HtIQhKSkIQkJCEJSUji/wJJSEISkpCEJCQhCUlIQhKSkMRV/3qSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCElf955OEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSuOpFJwlJSEISkpCEJCQhCUlIQhL/m0lCEpKQhCQkIQlJSOJ/KklIQhKSkIQkJCGJ/wkkIQlJSEISkpDEfxdJSEISwzBw9uxZXuzFXoxrrrnmIU9/+tP/+uzZs7dy1VVXXXXVfxbK8ePHueqqq6666j/HNddc8+Cv+Iqv+CuAP/qjP+Jxj3scL4wkJCEJSUhCEpKQhCT+N5OEJCQhCUlIQhKSkIQkJHHVc5KEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSOKqq/6zSUISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkcRVIQhKSkIQkJCEJSUhCEpL430gSkpCEJCQhCUlIQhL/E0lCEpKQhCQkIYn/CSQhCUlIQhKS+K+2t7cHwKMf/ejjL/ZiL/baf/Znf/Yzh4eHu1x11VVXXfWfgeCqq6666qr/NB/+4R/+XQB33HEHf/Inf4IkJCEJSUhCEpKQxP9GkpCEJCQhCUlIQhKSkIQk/j+ShCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkrrrqquckCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYn/TyQhCUlIQhKSkIQkJCEJSfxvIglJSEISkpCEJCTxP40kJCEJSUhCEpKQxH8nSUhCEpKQhCQk8Z/lj/7oj7j99tu55pprHvw5n/M5v8VVV1111VX/WSjHjx/nqquuuuqq/3if+7mf+1sv9mIv9tp7e3v8wA/8AP/bSEISkpCEJCQhCUlIQhL/10lCEpKQhCQkIQlJSEISkpCEJCQhCUlcddVV/3NJQhKSkIQkJCEJSUhCEpKQhCQkIQlJ/F8lCUlIQhKSkIQkJCEJSfxvIAlJSEISkpCEJCQhif9JJCEJSUhCEpKQxH8nSUhCEpKQhCT+I9x+++084hGP4OTJk8evueaaB//pn/7pz3DVVVddddV/NMrx48e56qqrrrrqP9aLvdiLvfY7vdM7fTbAz/3cz7G3t8f/FJKQhCQkIQlJSEISkpDE/zWSkIQkJCEJSUhCEpKQhCQkIQlJXPV/jyQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK76v0ESkpCEJCQhCUlIQhKSkIQkJCGJ/yskIQlJSEISkpCEJCQhif/pJCEJSUhCEpKQhCT+p5CEJCQhCUlIQhL/XSQhCUlIQhKSkMSLar1e85SnPIWXe7mX4yEPechLA/zDP/zD73DVVVddddV/JMrx48e56qqrrrrqP84111zz4K/4iq/4K4Af//Ef54477uC/giQkIQlJSEISkpCEJCTxf4UkJCEJSUhCEpKQhCQkIQlJXPUfSxKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUn8TyAJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkrvr3k4QkJCEJSUhCEpKQhCQkIYn/7SQhCUlIQhKSkIQkJPE/mSQkIQlJSEISkvifQhKSkIQkJCEJSfx3kYQkJCEJSUji+Vmv1+zt7fHwhz+ca6655sHPeMYz/ua+++67lauuuuqqq/6jEFx11VVXXfUf6sM//MO/C+COO+7gjjvu4D+CJCQhCUlIQhKSkIQk/reThCQkIQlJSEISkpCEJCQhiateMElIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlc9f+XJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK56TpKQhCQkIQlJSEISkpCEJCTxv5EkJCEJSUhCEpKQhCT+J5KEJCQhCUlIQhKS+J9AEpKQhCQkIYn/LpKQhCQkIQlJ/MM//AN/+Id/yDXXXPPgD//wD/9urrrqqquu+o9EOX78OFddddVVV/3H+NzP/dzferEXe7HXvuOOO/jxH/9xXhSSkIQkJCEJSUhCEpL430oSkpCEJCQhCUlIQhKSkMT/Z5KQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJHHVVf/bSUISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpL4/0gSkpCEJCQhCUlIQhKSkMT/JpKQhCQkIQlJSEISkvifRhKSkIQkJCEJSfx3k4QkJCEJSUhCEv8dJLG3t8eZM2e4/vrrj19zzTUP/tM//dOf4aqrrrrqqv8IlOPHj3PVVVddddW/3zu+4zt+1uu8zuu8N8Cv/uqvsre3B4AkJCEJSUhCEpKQxP82kpCEJCQhCUlIQhKSkIQk/r+QhCQkIQlJSEISkpCEJCQhCUlIQhKSuOqqq/7zSEISkpCEJCQhCUlIQhKSkIQkJCEJSfxfJwlJSEISkpCEJCQhCUn8byEJSUhCEpKQhCQk8T+JJCQhCUlIQhKSkMR/J0lIQhKSkIQk/rOt12vuuOMOXvZlX5aHPOQhLw3wD//wD7/DVVddddVV/16U48ePc9VVV1111b/Pi73Yi732R3zER3w3wE/8xE9w5513IglJ/G8hCUlIQhKSkIQkJCEJSfxfJglJSEISkpCEJCQhCUlIQhKSkMRVV131f5ckJCEJSUhCEpKQhCQkIQlJSEIS/9dIQhKSkIQkJCEJSUhCEv/TSUISkpCEJCQhCUn8TyIJSUhCEpKQhCT+u0hCEpKQhCQkIYn/KOv1mr29PR7+8IdzzTXXPPjWW2/9m7Nnz97KVVddddVV/x7oQQ96EFddddVVV/3bXXPNNQ/+nM/5nN+65pprHvzHf/zH/Mmf/An/00ji/xNJXPU/nySu+q9nm6v+Z7LN/xe2+d/INv+T2eZ/Gtv8W7zKq7wKr/Iqr8J9991362d91me9zn333XcrV1111VVX/VsRXHXVVVdd9e/y4R/+4d91zTXXPPiOO+7gT/7kT/ivJglJSEISkpCEJCQhif/tJCEJSUhCEpKQhCQkIQlJSOKqfx1JSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJK767yEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQxFX/MklIQhKSkIQkJCEJSUhCEpL430wSkpCEJCQhCUlIQhL/E0lCEpKQhCQkIQlJ/HeThCQkIQlJSEIS/10kIQlJSEISkviX/MM//AO3334711xzzYM//MM//Lu46qqrrrrq34Ny/Phxrrrqqquu+rd5x3d8x896ndd5nffe29vjB3/wB/mPJglJSEISkpCEJCQhif+tJCEJSUhCEpKQhCQkIQlJXPVskpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYmrrvqvIAlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpL4/04SkpCEJCQhCUlIQhKSkIQk/reRhCQkIQlJSEISkvifSBKSkIQkJCEJSfx3k4QkJCEJSUhCEv8dJCEJSUhCEpK433q95o477uDhD384N99884Ml6R/+4R9+m6uuuuqqq/4tCK666qqrrvo3ebEXe7HXfqd3eqfPBvi1X/s1/rUkIQlJSEISkpCEJCTxv40kJCEJSUhCEpKQhCQkIYn/byQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYmrrrrq2SQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIYn/LyQhCUlIQhKSkIQkJCGJ/y0kIQlJSEISkpCEJCTxP4kkJCEJSUhCEpL47yYJSUhCEpKQxH8HSUhCEvv7+/zYj/0YAO/4ju/4WS/2Yi/22lx11VVXXfVvgR70oAdx1VVXXXXVv943fdM3Pf2aa6558N7eHlddddVVV4EkbPNAkrDNA0nCNg8kCds8kCRs80CSsM0DScI2DyQJ2zyQJGzzQJKwzQNJwjYPJAnbPJAkbPNAkrDNA0nCNg8kCds8kCRs80CSsM0DScI2DyQJ2zyQJGzzQJKwzQNJwjYPJAnbPJAkbHPVVf/VdnZ2APiHf/iH3/7Mz/zM1+Gqq6666qp/LSpXXXXVVVf9q11zzTUPvuaaax4MsLOzw1VXXXXVVVddddVV/7nOnDnz4GuuuebB9913361cddVVV131r0Hlqquuuuqqf5cf+7Ef499KEv9Wkvi3ksS/lST+O0ni30MS/x6S+PeSxH8ESfxHksR/Bklc9bwk8X+dbf43so0kHsg2kngg20jigWwjiQeyjSQAbPOfwTb/UWzz72Wbfy/b/HvY5t/KNv8etpHEA9lGEg9kG0k8kG3+LWzzb2Wbfwvb/FvZ5l/jHd/xHbnmmmsefN99993KVVddddVV/1pUrrrqqquu+le77777br3vvvtuveaaax68ubnJvffey7+HJP6tJPFvJYl/K0n8e0ji30MS/x6S+PeSxL+XJP6jSOI/kiT+M0jiv5ok/r+SxAPZ5v8z2/xXss1/Btv8R7LNfwTb/HvY5t/DNv8etvn3sM2/lW3+rWzzb2Gbfyvb/FvY5l9ra2uLq6666qqr/l2oXHXVVVdd9W9y9uzZW6+55poHA9gGQBL/FraRxL+FbQAk8a9lGwBJ/GvZBkAS/xa2AZDEv4Vt7ieJfy3b3E8S/xa2uZ8k/i1scz9J/HvY5n6S+Peyzf0k8R/FNs9NEv+ZbPP8SOL/Otv8f2Ob/w62+c9im/9otvmPYJt/L9v8e9jm38M2/x62+beyzb+Vbf4tbPNvZZt/C9v8W1133XUA/NZv/dZ3c9VVV1111b8FwVVXXXXVVf8mf//3f//bANdffz33s41t/i1sY5t/K9v8W9nGNv8WtrHNv5VtbPPvYRvb/FvZxjb/Hraxzb+HbWxjm38v29jGNv8RbGMb29jmP5ptbGMb29jmv4JtbGMb29jGNraxzVX/M9nGNraxjW1sYxvb/FewjW1sYxvb/EezjW1s8x/BNraxjW3+PWxjG9v8W9nGNrb5t7KNbf4tbGMb2/xb2cY2/xa2sc2/hW1s829hm38L29jm38I2/xa2sc1VV1111VX/blSuuuqqq676Nzl79uwzAK677jqem20k8W9hGwBJ/GvZBkAS/xa2AZDEv5ZtACTxb2EbAEn8W9kGQBL/Fra5nyT+LWxzP0n8W9nmfpL497DN/STxH8E2DySJ/2i2eW6S+K9km3+JJK76j2Ob/2ls81/BNv/RbPMfxTb/EWzz72Gbfw/b/HvZ5t/KNv9Wtvm3ss2/hW3+rWzzb2Wb+11//fUA/MM//MPvcNVVV1111b8Flauuuuqqq/5N7rvvvlt5IWwDIIl/C9sASOJfyzYAkvi3sA2AJP61bAMgiX8L2wBI4t/KNveTxL+FbQAk8W9lm/tJ4t/KNveTxL+HbR5IEv8RbPNAkvjPYJvnRxL/XWzzryGJ/29s87+Fbf4r2OY/g23+I9nmP4Jt/r1s8+9hm38v2/xb2ebfyjb/Vrb5t7LNv4Vt/q1s89yuv/56AO67775bueqqq6666t+CylVXXXXVVf8mZ8+evRVge3ubF8Y2AJL4t7CNJP4tbAMgiX8L2wBI4l/LNgCS+LewDYAk/j1sAyCJfwvb3E8S/1a2AZDEv4dt7ieJfy/bPJAk/iPY5rlJ4j+LbZ4fSfxPY5v/aJL4j2Kb/w9s81/JNv9ZbPMfyTb/EWzz72Wbfy/b/HvY5t/DNv9Wtvm3ss2/lW3+rWzzb2WbF+bs2bO3ctVVV1111b8Flauuuuqqq/5N7rvvvlvvu+++W6+55poHb21tcXBwwAtjGwBJ/GvZBkAS/xa2AZDEv4VtACTxr2Wb+0niX8s295PEv5VtACTxb2UbAEn8W9nmfpL497DN/STxH8E295PEfyTbPJAk/rPZ5vmRxP8ltrnqednmv4tt/rPY5j+abf4j2OY/gm3+PWzz72Wbfw/b/FvZ5t/KNv9Wtvm3ss2/lW1emK2tLQDuu+++W7nqqquuuurfguCqq6666qp/s7Nnz94KsLW1xYvKNv9WtrHNv5VtbPNvZRvb/FvZxjb/Vraxzb+HbWxjm38r29jGNv8etrGNbf69bGMb29jmP4JtbGMb2/xHs41tbGMb2/xXsY1tbGMb29jGNra56n8P29jGNraxjW1s81/FNraxjW1s8x/JNraxjW3+I9jGNraxzb+HbWxjm38P29jGNv9WtrHNv4dtbPNvZRvb/FvYxjb/Fraxzb+FbWzzb2Eb2/xb2MY2L8wjHvEIAP7hH/7hd7jqqquuuurfiuCqq6666qp/s/vuu+9WgOuvv55/DdvY5t/KNrb5t7KNbf6tbGObfyvb2Obfyja2+feyjW3+PWxjG9v8e9jGNrb5j2Ab29jmP4ptbGMb2/xnsI1tbGMb2/x3sI1tbGMb29jGNra56r+GbWxjG9vYxja2sY1t/qvZxja2sY1t/qPZxja2sc1/FNvYxjb/XraxjW3+PWxjG9v8W9nGNrb597CNbf6tbGObfwvb2Obfwja2+beyzb+Vbf6tbPOvcd99993KVVddddVV/1ZUrrrqqquu+je77777buXfwTYAkvi3sA2AJP4tbAMgiX8L2wBI4t/CNgCS+Lewzf0k8W9lm/tJ4t/KNgCS+Pewzf0k8e9lm/tJ4j+KbR5IEv8ZbPP8SOK/i21eVJK46tls87+Bbf6r2OY/i23+o9jmP4pt/r1s8x/BNv8etvm3ss2/h23+rWzzb2Wbfyvb/Gtcf/31APzDP/zDb3PVVVddddW/FZWrrrrqqqv+zf7hH/7hdwCuu+46bCOJfwvbAEji38I2AJL4t7ANgCT+LWwDIIl/C9sASOLfyjYAkvj3sA2AJP6tbHM/Sfx72OZ+kvj3ss0DSeI/im0eSBL/mWzz/EjifxLb/HtJ4n8C2/xfY5v/arb5z2Kb/0i2+Y9im38v2/xHsM2/h23+PWzz72Gbfyvb/FvZ5t/KNv8WW1tbXHXVVVdd9e9G5aqrrrrqqn+zs2fP3gqwvb0NgG0AJPFvYRsASfxb2AZAEv8WtgGQxL+FbQAk8W9hGwBJ/FvZBkAS/x62uZ8k/q1scz9J/HvY5n6S+I9gmweSxH8U2zw3Sfxns83zI4n/rWxz1b+Pbf672OY/k23+I9nmP4pt/iPY5j+Cbf49bPPvYZt/D9v8W9nm38o2/x62+bfa2toC4B/+4R9+m6uuuuqqq/6tqFx11VVXXfVvdt99990KsLW1xQPZRhL/VraRxL+VbSTxb2UbAEn8W9gGQBL/Fra5nyT+LWxzP0n8e9gGQBL/Hra5nyT+PWzzQJL4j2Cb+0niP5ptnpsk/ivY5gWRxFX/+9nmv5tt/rPZ5j+abf6j2OY/gm3+o9jm38M2/x62+fewzb+Vbf49bPNvZZt/K9sAbG9vA3DffffdylVXXXXVVf9WBFddddVVV/27/MM//MNvA1x//fU8kG1s829lG9v8W9nGNv8etrHNv5VtbPPvYRvb/HvYxjb/XraxjW3+vWxjG9v8R7CNbWzzH8U2trGNbf6z2MY2trGNbf6r2cY2trGNbWxjG9tc9T+DbWxjG9vYxja2sc1/NdvYxja2sc1/BtvYxja2+Y9iG9vY5t/LNraxzb+XbWzz72Ub29jm38o2tvm3so1t/q1sY5t/C9vY5t/KNrb5t7CNbf4tbGMbgOuvvx6Af/iHf/htrrrqqquu+vegctVVV1111b/Lfffdd+uLvdiLsbW1xfNjGwBJ/FvYBkAS/xa2AZDEv5VtACTxb2EbAEn8W9kGQBL/Vra5nyT+PWxzP0n8e9jmfpL497LN/STxH8U2DySJ/yy2eW6S+O9imxeFJK7617PN/3S2+a9im/8MtvmPZpv/CLb5j2Kbfy/b/HvY5t/DNv9Wtvn3sM2/lW3+PWzzQFtbWwDcd999t3LVVVddddW/B5Wrrrrqqqv+Xe67775bAba2tnhhbAMgiX8L2wBI4t/CNgCS+LeyDYAk/i1sAyCJfyvbAEji38M2AJL497INgCT+vWxzP0n8e9nmgSTxH8U2z00S/1ls8/xI4n8K2/xbSOL/Atv8b2eb/2q2+c9im/9ItvmPYpv/KLb597LNv5dt/j1s8+9hm38r2/x72ObfyjbPz/XXXw/AfffddytXXXXVVVf9e1C56qqrrrrq3+Uf/uEffgfg+uuv56/+6q/4l9gGQBL/FrYBkMS/hW0AJPFvZRsASfxb2OZ+kvi3sM39JPFvZZv7SeLfwzb3k8S/l23uJ4n/CLa5nyT+o9nmgSTxn802z48k/rewzVX/tWzz38E2/5ls8x/NNv+RbPMfxTb/Xrb597LNv4dt/j1s829lm38P2/xb2eZFcfbs2Wdw1VVXXXXVvweVq6666qqr/l3Onj17K8D29jb/GraRxL+VbQAk8W9hGwBJ/FvZBkAS/1a2AZDEv5VtACTx72EbAEn8e9nmfpL497LN/STxH8E2DySJ/2i2eW6S+K9gmxdEElf932eb/262+c9mm/9otvmPZJv/KLb5j2Cbfw/b/HvZ5t/DNv9Wtvn3sM2/h23+Jddffz0A//AP//DbXHXVVVdd9e9B5aqrrrrqqn+X++6771aAra0t/rVsAyCJfyvbAEji38I2AJL4t7INgCT+rWwDIIl/K9vcTxL/Vra5nyT+vWxzP0n8e9nmfpL4j2KbB5LEfwbbPDdJ/FeyzQsjiav+57PN/yS2+a9gm/8MtvmPZJv/SLb597LNv5dt/r1s8+9hm38P2/xb2ebfwzYvqu3tbQDuu+++W7nqqquuuurfg+Cqq6666qp/t3/4h3/4bYDrr7+efwvb2Obfwza2+beyjW3+PWxjm38P29jm38s2tvn3so1t/qPYxja2+Y9gG9vYxjb/kWxjG9vY5j+TbWxjG9vY5r+TbWxjG9vYxja2sY1trvrPZRvb2MY2trGNbWxjm/9OtrGNbWxjm/8strGNbWzzH8k2trHNfwTb2MY2/xFsYxvb/HvYxjb/Hraxzb+VbWxjm38r29jm38o2tvm3ss2/lW1s86K6/vrrAbjvvvtu5aqrrrrqqn8vKlddddVVV/2Hsc2/h20AJPFvZRsASfxb2AZAEv9WtgGQxL+Vbe4niX8r29xPEv9WtrmfJP4j2OZ+kviPYJv7SeI/km0eSBL/mWzz3CTxP4VtXlSSuAps87+Nbf6r2eY/i23+o9nmP5Jt/iPY5j+Cbf49bPPvZZt/D9v8e9jm38M2/1pbW1sA/MM//MNvc9VVV1111b8XwVVXXXXVVf9uf//3f//bANdffz22sc2/h21s8+9hm38P29jm38M2tvn3so1t/r1sY5t/L9vYxjb/UWxjG9v8R7GNbWxjm/9otrGNbWzzX8E2trGNbWxjm//pbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9v8V7ONbWxjG9vYxja2sY1tbGMb29jGNraxjW1s8z+ZbWxjG9vYxjb/2WxjG9vYxjb/0WxjG9v8R7GNbWzzH8U2tvn3so1t/j1sYxvb/FvZxjb/Hraxzb+VbWzzb2Ub2/xb2cY2/xbb29sA3Hfffbdy1VVXXXXVvxeVq6666qqr/t3+4R/+4XcArr/+eu5nGwBJ/FvZBkAS/xa2AZDEv5VtACTxb2Wb+0ni38o2AJL497DN/STx72Gb+0niP4Jt7ieJ/yi2uZ8k/qPZ5rlJ4r+CbV4QSfxfYpur/u1s89/JNv/ZbPOfwTb/0WzzH8E2/xFs8+9lm38v2/x72Obfwzb/Hrb597DN1tYWAGfPnn0GV1111VVX/XtRueqqq6666t/t7NmztwJsbW3x3GwDIIl/K9sASOLfwjYAkvi3ss39JPFvZRsASfxb2eZ+kvj3sA2AJP69bAMgif8otrmfJP6j2OaBJPGfwTbPTRL/lWzzgkjiqv97bPM/gW3+K9jmP4tt/qPZ5j+Kbf4j2Obfyzb/Xrb597DNv4dt/j1s8+9hm/tdf/31APzDP/zDb3PVVVddddW/F5Wrrrrqqqv+S9gGQBL/VraRxL+VbQAk8e9hGwBJ/FvZBkAS/x62AZDEv4dt7ieJfw/b3E8S/1Fs80CS+I9imweSxH8W2zw3Sfx3sM0LI4mr/mexzf9EtvmvYpv/LLb5z2Cb/yi2+Y9gm/8Itvn3ss2/h23+PWzz72Gbfw/bPLft7W0A7rvvvlu56qqrrrrq34vgqquuuuqqf7f77rvv1n/4h3/47e3tba6//npeGNv8e9jGNv8etrHNv5dtbPPvYRvb/HvZxja2+feyjW3+I9jGNrb5j2Yb29jmP5ptbGMb2/xns41tbGMb2/xPYBvb2MY2trGNbWxjG9tc9R/DNraxjW1sYxvb2MY2/xPYxja2sY1t/jPZxja2sc1/NNvYxjb/kWxjG9v8R7CNbf69bGObfw/b2MY2/1a2sY1t/q1sY5t/K9vY5t/DNv8etnluW1tbANx33323ctVVV1111X8EKlddddVVV/2Xsw2AJP6tbAMgiX8r29xPEv9WtgGQxL+Vbe4niX8P2wBI4t/DNveTxL+Xbe4nif9ItnkgSfxHss0DSeI/m22eH0n8T2Obfy1J/F9lm/8LbPPfwTb/2Wzzn8E2/5Fs8x/BNv8RbPPvZZt/L9v8e9nm38M2/x62eUFuuOEGAP7hH/7ht7nqqquuuuo/AsFVV1111VX/If7+7//+twGuv/56XlS2sc2/h21s8+9lG9v8e9jGNv9etrHNv5dtbGObfy/b2MY2/xFsYxvb/GewjW1s85/BNraxjW1s81/FNraxjW1sY5v/bWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sc3/NraxjW1sYxvb/FexjW1sY5v/DLaxjW1s8x/JNraxzX8E29jGNv9etrHNv5dtbPPvYRvb/HvYxjb/Hraxzb+VbWzzb2Ub27wwW1tbXHXVVVdd9R+KylVXXXXVVf8h/uEf/uF3AK6//nr+tWwDIIl/K9sASOLfwzYAkvi3sg2AJP49bAMgiX8v2wBI4t/LNveTxL+XbR5IEv+RbPNAkvjPYJsHksR/Jds8P5K46ioA2/x3s81/Bdv8Z7LNfyTb/EexzX8U2/x72ebfyzb/Xrb597DNv4dtXlTb29sA/MM//MPvcNVVV1111X8EKlddddVVV/2H2tra4t/KNgCS+LeyDYAk/j1sAyCJfyvb3E8S/1a2uZ8k/j1scz9J/HvZ5n6S+I9gm/tJ4j+abR5IEv8ZbPPcJPFfzTYvjCSu+r/BNv/T2Oa/im3+M9nmP5pt/qPY5j+Cbf4j2Obfyzb/Xrb597DNv5dt/jWuv/56AP7hH/7ht7nqqquuuuo/ApWrrrrqqqv+Q5w9e/ZWnsk2kvi3sg2AJP6tbAMgiX8P2wBI4t/DNgCS+PewDYAk/r1sAyCJ/wi2AZDEfxTb3E8S/xls80CS+M9im+cmif9OtnlhJHHV/wy2+Z/MNv+VbPOfzTb/0WzzH8U2/1Fs8x/BNv9etvn3ss2/h23+vWzzb7G9vc1VV1111VX/oahcddVVV131H+K+++679b777rv1mmuuefD29jb7+/sASOLfyjYAkvi3sg2AJP49bAMgiX8P2wBI4t/DNveTxL+Hbe4niX8v29xPEv9RbHM/Sfxnsc0DSeI/k22emyT+p7DNi0oSV/3r2OZ/G9v8d7DNfzbb/GewzX8k2/xHsM1/BNv8R7DNv5dt/r1s8+9hm/8I9913361cddVVV131H4HKVVddddVV/2HOnj176zXXXPPgra0t9vf3AbCNJP49bAMgiX8r2wBI4t/DNgCS+PewDYAk/r1sAyCJfy/b3E8S/162uZ8k/qPY5oEk8Z/FNg8kif9stnl+JPE/mW3+rSTxv5lt/i+yzX8H2/xXsc1/Btv8R7LNfxTb/EewzX8E2/x72ebfyzb/Hrb593rEIx4BwG/91m99N1ddddVVV/1HIbjqqquuuuo/zN///d//NsD111/PA9nGNv9etrHNv4dtbPPvZRvb/HvZxja2+feyjW1s8x/BNraxzX8E29jGNrb5j2Qb29jmP5ttbGMb2/xXso1tbGMb29jm/wLb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sY5v/zWxjG9vYxja2sc1/FdvYxja2+c9kG9vYxjb/kWxjG9v8R7CNbWzz72Ub29jm38s2tvn3sI1tbPPvYRvb/HvYxjb/Vraxzb+HbWxz1VVXXXXVfwoqV1111VVX/Yfb3t7m+bENgCT+PWwDIIl/K9vcTxL/Vra5nyT+PWwDIIl/L9sASOI/gm0AJPEfxTb3k8R/FNs8kCT+M9nmuUniv5JtXhBJXHUVgG3+p7DNfyXb/GexzX8k2/xHss1/BNv8R7DNfwTb/HvZ5t/LNv8etnmgG264AYB/+Id/+B2uuuqqq676j0Llqquuuuqq/zD/8A//8DsA29vbvDC2AZDEv4dtACTx72EbAEn8e9gGQBL/Hra5nyT+PWxzP0n8e9nmfpL4j2Kb+0niP5JtHkgS/9ls89wk8d/BNi+MJK76v8E2/xPZ5r+abf6z2OY/g23+o9jmP4pt/iPY5j+Cbf69bPPvZZt/D9s8P9dffz0A9913361cddVVV131H4XKVVddddVV/2HOnj17K8DW1hYvCtsASOLfwzYAkvj3sA2AJP49bAMgiX8v2wBI4t/LNveTxL+Xbe4nif8otrmfJP6j2eaBJPFfwTbPTRL/3WzzL5HEVf+9bPO/gW3+O9jmP5Nt/jPY5j+Sbf6j2OY/gm3+I9jm38s2/162+feyzb/k7Nmzt3LVVVddddV/FCpXXXXVVVf9h7nvvvtuBdje3mZ7e5v9/X1eFLYBkMS/h20AJPHvYRsASfx72AZAEv9etgGQxH8E2wBI4j+Cbe4nif8otnkgSfxHs80DSeK/im2emyT+p7HNi0ISV/3r2OZ/I9v8d7LNfzbb/GewzX8k2/xHsc1/FNv8e9nmP4Jt/r1s8+9lm3/J9vY2APfdd9+tXHXVVVdd9R+F4Kqrrrrqqv9Q//AP//DbAFtbW/xr2cY2/162sc2/l21s8+9lG9vY5t/LNraxzX8E29jGNv9RbGMb2/xHs41tbPOfxTa2sY1t/qvZxja2sY1tbPO/gW1sYxvb2MY2trGNbWxjG9vYxja2sc3/RraxjW1sYxvb2MY2trGNbWxjG9vYxjb/G9jGNraxjW3+q9nGNraxzX8G29jGNrb5j2Qb29jmP4JtbGOb/wi2sc2/l21sY5t/D9vY5t/LNrb597CNbf49bGObf8kjH/lIAP7hH/7hd7jqqquuuuo/EpWrrrrqqqv+Q9133323vtiLvRjXX389d999N/8WtgGQxL+HbQAk8e9hGwBJ/HvZBkAS/162AZDEfwTb3E8S/xFscz9J/EeyzQNJ4j+DbR5IEv8dbPP8SOL/Cttc9d/DNv+T2Oa/gm3+s9jmP5pt/qPY5j+Kbf4j2OY/gm3+vWzz72Wbf4v77rvvVq666qqrrvqPROWqq6666qr/UPfdd9+t/AexDYAk/j1sAyCJfw/bAEji38s2AJL497LN/STxH8E295PEfwTb3E8S/9Fscz9J/GexzXOTxH8X27wgkrjqqgeyzf80tvmvYpv/TLb5j2ab/0i2+Y9im/8ItvmPYJt/L9v8e9nm3+KGG24A4B/+4R9+m6uuuuqqq/4jUbnqqquuuuo/1D/8wz/8DsD111+PbQAk8e9hGwBJ/HvYBkAS/x62uZ8k/j1scz9J/HvZ5n6S+I9gGwBJ/EexzQNJ4j+SbR5IEv+ZbPPcJPHfzTYvjCSu+r/FNv/T2ea/km3+s9jmP4Nt/iPZ5j+Kbf6j2OY/gm3+vWzzH8E2/1ZbW1tcddVVV131n4LKVVddddVV/6HOnj17K8D29jb3sw2AJP49bAMgiX8P2wBI4t/LNgCS+PeyDYAk/iPYBkAS/xFscz9J/Eeyzf0k8R/NNg8kif9stnlukvifxDYvjCSu+p/DNv/b2Oa/mm3+M9nmP4Nt/qPZ5j+Kbf6j2OY/gm3+vWzzH8E2/17b29sA/MM//MNvc9VVV1111X8kKlddddVVV/2Huu+++24F2N7e5rnZBkAS/x62AZDEv4dtACTx72UbAEn8e9nmfpL497LN/STxH8E295PEfyTb3E8S/xls80CS+K9gm+cmif+pbPOiksRV/za2+d/ONv9dbPOfzTb/GWzzH802/5Fs8x/BNv9RbPPvZZv/CLb597INwPb2NgD33XffrVx11VVXXfUfieCqq6666qr/cP/wD//w2wDXX389z49tbPPvZRvb/HvZxja2+feyjW1s8x/BNrb5j2Ib29jmP4ptbGOb/2i2sY1tbPOfxTa2sY1t/ivZxja2sY1t/jeyjW1sYxvb2MY2trGNbWxjG9vYxjb/F9jGNraxjW1sYxvb2MY2trGNbWxjm/9tbGMb29jGNv+VbGMb29jmP4NtbGMb2/xHso1tbPMfxTa2sc1/BNvYxjb/Xraxzb+XbWxjm38P29jm38s2tvn3sI1tAG644QYA/uEf/uG3ueqqq6666j8alauuuuqqq/7TbG9vc/fdd/OC2AZAEv8etgGQxL+XbQAk8e9lGwBJ/HvZ5n6S+I9gGwBJ/Eexzf0k8R/NNveTxH8W2zyQJP4r2eb5kcT/Rba56n8e2/x3s81/Fdv8Z7HNfwbb/EeyzX8U2/xHsM1/BNv8R7DNv5dtntv29jYA9913361cddVVV131H43gqquuuuqq/3B///d//9sA29vbvChsY5t/L9vY5j+CbWzzH8E2tvmPYhvb/EexjW1s8x/JNraxzX8G29jGNrb5z2Qb29jGNrb572Ab29jGNraxjW2uuurfwja2sY1tbGMb2/x3sI1tbGOb/0y2sY1tbPMfzTa2sc1/JNvYxjb/EWxjG9v8e9nGNrb597KNbf69bGObfy/b2Obfwza2eX6uv/56AO67775bueqqq6666j8alauuuuqqq/7D/cM//MPvAFx//fX8a9gGQBL/HrYBkMS/l20AJPHvZZv7SeLfyzb3k8R/BNvcTxL/UWzzQJL4j2abB5LEfybbPDdJ/HexzQsiiav+/7LN/0S2+a9mm/9MtvnPYJv/aLb5j2Kb/yi2+Y9gm/8ItvmPYJsXxdmzZ5/BVVddddVV/9GoXHXVVVdd9R/u7NmztwJsb2/zb2EbAEn8e9gGQBL/XrYBkMR/BNsASOI/gm0AJPEfxTb3k8R/JNvcTxL/GWxzP0n8V7DNc5PEfzfbvDCSuOp/L9v8T2eb/w62+c9mm/8MtvmPZpv/SLb5j2Kb/wi2+Y9gm/8ItnlR3HDDDQD8wz/8w29z1VVXXXXVfzQqV1111VVX/afZ3t7m38M2AJL497ANgCT+vWxzP0n8e9nmfpL497LN/STxH8U295PEfyTb3E8S/xls80CS+K9im+cmif9JbPOikMRV/7Vs87+Nbf672OY/m23+s9jmP5pt/iPZ5j+Kbf6j2OY/gm3+I9jmX2N7exuA++6771auuuqqq676j0Zw1VVXXXXVf7j77rvv1n/4h3/4bYDrr7+efy/b2Obfyza2sc1/BNvY5j+KbWzzH8U2trHNfyTb2MY2/9FsYxvb2OY/i21sYxvb2Oa/km1sYxvb2OZ/A9vYxja2sY1tbGMb29jGNra56nnZxja2sY1tbGMb29jGNraxzf90trGNbWxjm/9KtrGNbWzzn8U2trHNfzTb2MY2/5FsY5v/KLaxzX8E29jmP4JtbPPvZRvb/HvZxjb/GjfccAMA9913361cddVVV131n4HKVVddddVV/+lsI4l/L9sASOLfyzYAkvj3sg2AJP4j2OZ+kviPYJv7SeI/im3uJ4n/aLa5nyT+M9nmgSTxX8k2z48k/reyzX8USfx3sM1VYJv/brb5r2Sb/yy2+c9gm/9ItvmPZJv/KLb5j2Cb/wi2+bfa3t4G4B/+4R9+m6uuuuqqq/4zEFx11VVXXfWf4u///u9/G+D6668HwDa2+Y9gG9v8R7CNbf4j2MY2tvmPYhvb/EeyjW3+o9nGNrb5z2Ab29jGNv/ZbGMb29jmv4ttbGMb29jGNv/f2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWzz/4ltbGMb29jGNrb572Ab29jGNv/ZbGMb29jmP5ptbGOb/0i2sY1t/qPYxjb/UWxjm/8ItrHNv5dtbPPvZRvb/HtsbW0BcN99993KVVddddVV/xkIrrrqqquu+k/xD//wD78DcMMNN/BAtrHNfwTb2OY/gm1s8x/FNrb5j2Ib29jmP4ptbGOb/2i2sY1t/rPYxja2sc1/NtvYxja2sc1/J9vYxja2sY1tbHPVVS+IbWxjG9vYxja2+e9kG9vYxja2+c9mG9vYxjb/GWxjG9v8R7KNbWzzH8U2trHNfwTb2MY2/162sY1t/r1sY5t/L9vY5t/LNtvb2wCcPXv2GVx11VVXXfWfgcpVV1111VX/Kc6ePXsrwPb2Ns+PbQAk8e9lGwBJ/HvZ5n6S+Peyzf0k8R/BNgCS+I9im/tJ4j+Sbe4nif8strmfJP4r2Oa5SeK/m21eGElc9X+Xbf6ns81/Ndv8V7DNfxbb/EezzX8k2/xHsc1/FNv8R7DNfwTb3O+GG24A4B/+4R9+m6uuuuqqq/4zULnqqquuuuq/lW0AJPHvZRsASfxHsA2AJP4j2AZAEv8RbHM/SfxHsc39JPEfyTYPJIn/DLZ5IEn8V7HNc5PE/yS2+ZdI4qr/eWzzv41t/rvY5r+Cbf6z2OY/mm3+I9nmP5Jt/qPY5j+Cbf4j2Oa5bW9vA3DffffdylVXXXXVVf8ZqFx11VVXXfWf4r777rv1vvvuu/Waa6558A033MBdd93FC2MbAEn8e9kGQBL/EWwDIIn/CLYBkMR/FNvcTxL/UWxzP0n8R7PN/STxn8U2DySJ/0q2eW6S+J/MNi8qSVz1b2eb/wts89/NNv8VbPOfyTb/GWzzH8k2/5Fs8x/FNv8RbPMfwTbPz/b2NlddddVVV/2no3LVVVddddV/mrNnz956zTXXPJh/BdsASOLfyzb3k8S/l20AJPEfwTb3k8R/FNsASOI/km3uJ4n/aLZ5IEn8Z7HNc5PEfyXbPD+S+N/GNv8ekvjfzjb/n9jmv5tt/ivZ5j+Tbf4z2OY/mm3+o9jmP5Jt/iPY5j+KbV6QG264AYDf+q3f+m6uuuqqq676z0Jw1VVXXXXVf5q///u//22A66+/nn8t29jmP4ptbPMfwTa2sc1/FNvY5j+SbWxjm/9otrGNbf6z2MY2tvmvYBvb2MY2/11sYxvb2MY2tvm/zDa2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxjb/F9nGNraxjW1sY5v/DraxjW1s85/NNraxjW3+M9jGNrb5j2Qb29jmP4ptbGOb/wi2sc1/BNvYxjb/XraxzX8E29jmhdne3uaqq6666qr/dARXXXXVVVf9pzl79uwzAG644Qb+rWxjm/8otrHNfxTb2OY/im1sY5v/SLaxjW3+o9nGNrb5z2Ib29jGNv8VbGMb29jGNv+dbGMb29jGNraxzVVX/XvYxja2sY1tbPPfzTa2sY1t/ivYxja2+c9iG9vY5j+SbWxjm/9ItrHNfxTb2OY/gm1s8x/BNrb5j2Ab27wotre3AfiHf/iH3+Gqq6666qr/LFSuuuqqq676T3Pffffdyn8Q2wBI4j+CbQAk8R/BNveTxH8E29xPEv9RbHM/SfxHss0DSeI/g20eSBL/FWzzQJL4n8A2L4gkrvr/zTb/09nmv4Nt/rPZ5j+Tbf6j2eY/km3+I9nmP4pt/qPY5l/rhhtuAOAf/uEffpurrrrqqqv+s1C56qqrrrrqP83Zs2dvBdje3sY2kvj3ss39JPHvZRsASfxHsQ2AJP6j2AZAEv+RbHM/SfxHs839JPGfxTYPJIn/CrZ5bpL4n8Q2/xJJXPW/l23+N7HNfxfb/FewzX8m2/xHs81/NNv8R7LNfxTb/Eexzb/V9vY2V1111VVX/aejctVVV1111X+a++6779b77rvv1muuuebB29vb7O/vAyCJ/wi2AZDEv5dt7ieJ/wi2AZDEfxTb3E8S/5Fscz9J/Eezzf0k8Z/JNg8kif8qtnlukvifzDb/Eklc9V/LNv/b2ea/k23+q9jmP5Nt/jPY5j+abf4j2eY/im3+o9jmP8p99913K1ddddVVV/1noXLVVVddddV/qrNnz956zTXXPHh7e5v9/X0AbAMgif8ItgGQxH8E2wBI4j+Cbe4nif8otrmfJP4j2eZ+kviPZpsHksR/Jts8kCT+K9nm+ZHE/xa2+deSxFXPZpv/q2zzP4Ft/qvY5j+bbf4z2OY/mm3+I9nmP5Jt/qPY5j/CIx/5SAB+67d+67u56qqrrrrqPxPBVVddddVV/6n+/u///rcBbrjhBp6bbWzzH8U2tvmPYhvb/EeyjW3+o9nGNv8ZbGMb2/xnsY1tbPNfwTa2sY1t/rvYxja2sY1tbPN/hW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNv+ZbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sc3/BbaxjW1sYxvb/HexjW1sY5v/bLaxjW3+s9jGNrb5j2Qb29jmP5JtbPMfxTa2+Y9iG9v8R7CNbf69bGObq6666qqr/stQueqqq6666r/E9vY2L4htACTxH8E2AJL4j2Cb+0niP4Jt7ieJ/yi2uZ8k/qPZ5n6S+M9gmweSxH822zyQJP472eb5kcRVYJur/nPZ5n8a2/xXs81/Bdv8Z7HNfzTb/EezzX8U2/xHss1/BNs80I033gjAP/zDP/wOV1111VVX/WeictVVV1111X+qf/iHf/gdgO3tbf4ltgGQxH8E29xPEv8RbAMgif8otrmfJP6j2OZ+kviPZpv7SeI/i23uJ4n/CrZ5bpL472abF0QSV131r2Gb/8ls89/BNv/ZbPOfyTb/GWzzH8k2/5Fs8x/JNv8RbPP83HDDDQDcd999t3LVVVddddV/JipXXXXVVVf9pzp79uytANvb27yobHM/SfxHsA2AJP4j2OZ+kviPYhsASfxHss39JPEfzTb3k8R/Fts8kCT+q9jmuUnifwrbvDCSuOr/F9v8b2Gb/y62+a9gm/9MtvnPYJv/aLb5j2Sb/0i2+Y9im3/J2bNnb+Wqq6666qr/TFSuuuqqq676T3XffffdCrC9vc329jb7+/v8a9gGQBL/EWwDIIn/KLYBkMR/FNvcTxL/kWxzP0n8R7PNA0niP4ttHkgS/5Vs89wk8T+Rbf4lkrjqfwfb/G9lm/9OtvmvYpv/TLb5z2Cb/wy2+Y9km/8otvmPZJt/yfb2NgD33XffrVx11VVXXfWfieCqq6666qr/dP/wD//w2wDb29v8W9nGNv9RbGOb/0i2sc1/NNvYxjb/0WxjG9v8Z7GNbWzzn802trGNbf472MY2trGNbf63sI1tbGMb29jGNraxjW1sc9V/DtvYxja2sY1tbGMb29jmfwPb2MY2trGNbf6r2cY2trHNfzbb2MY2/xlsYxvb/EezjW3+I9nGNrb5j2Ib2/xHsI1t/qPYxjb/kkc96lEA/MM//MPvcNVVV1111X82gquuuuqqq/7T3XfffbcC3HDDDfx72cY2/1FsYxvb/EexjW1s8x/NNrb5z2Ab29jmP4ttbGOb/wq2sY1tbPPfxTa2sY1tbGOb/81sYxvb2MY2trGNbWxjG9vYxja2+f/ANraxjW1sYxvb2MY2trGNbWxjG9v8b2Ub29jGNrb572Ib29jGNv/ZbGMb29jmP4NtbGOb/2i2sY1t/iPZxjb/UWxjG9v8R7CNbf6j2MY2/1r33XffrVx11VVXXfWfjcpVV1111VX/6e67775bAWzzH8U2AJL4j2IbAEn8R7HN/STxH8U295PEfzTb3E8S/xls80CS+M9mm+cmif8utnl+JPF/lW2u+t/LNv/T2Oa/mm3+s9nmP4tt/jPY5j+abf4j2eY/im3+rW688UYA/uEf/uG3ueqqq6666j8bwVVXXXXVVf/p/uEf/uF3AG688UZsY5v/KLaxzX8k29jmP5ptbPMfzTa2sc1/BtvYxjb/mWxjG9vY5r+KbWxjG9v8T2Ab29jGNraxjW2uuuo/m21sYxvb2MY2tvnvZhvb2MY2tvmvYBvb2MY2/1lsYxvb/GewjW3+o9nGNv+RbGOb/yi2sc1/BNvY5qqrrrrqqv81qFx11VVXXfWf7uzZs7cCbG9vcz/bAEjiP4Jt7ieJ/wi2uZ8k/qPY5n6S+I9km/tJ4j+abe4nif9MtrmfJP6r2Oa5SeJ/Ctu8IJK46qoXhW3+p7PNfxfb/FexzX8m2/xnsM1/NNv8R7PNfxTb/Ee54YYbAPiHf/iH3+aqq6666qr/bFSuuuqqq676T3fffffdCrC9vc1zsw2AJP6j2AZAEv9RbAMgif9ItgGQxH8029xPEv/RbPNAkvjPYpsHksR/Jds8N0n8T2ObF0YSV/3/YJv/bWzz38k2/1Vs85/JNv9ZbPMfzTb/kWzzH8k2/5Fss729DcB99913K1ddddVVV/1nI7jqqquuuuq/xD/8wz/8NsANN9zA82Mb29jmP4ptbPMfyTa2sc1/JNvYxjb/GWxjm/9MtrGNbf6z2cY2trHNfwfb2MY2trHN/3S2sY1tbGMb29jGNra56n8+29jGNraxjW1sYxvb/E9nG9vYxja2+a9mG9vYxjb/mWxjG9vY5j+DbWxjm/9otrGNbf4j2cY2/1FsY5v/KLaxzX8U29jmhhtuAOAf/uEffpurrrrqqqv+K1C56qqrrrrqv9T29jb/EtsASOI/gm3uJ4n/KLYBkMR/JNvcTxL/kWxzP0n8Z7HN/STxn802DySJ/w62eW6S+N/ENi8qSVz1H8M2/xfZ5n8K2/xXss1/Ntv8Z7HNfwbb/EezzX8k2/xHss0D7ezsAHDffffdylVXXXXVVf8VCK666qqrrvov8fd///e/DbC9vc2Lyja2+Y9kG9v8R7KNbWzzH802tvnPYBvb2OY/k21sYxvb/FewjW1sY5v/TraxjW1sYxvb/F9gG9vYxja2sY1tbGMb29jGNraxjW1s83+JbWxjG9vYxja2sY1tbGMb29jGNraxzf92trGNbWxjG9v8d7GNbWxjG9v8V7CNbWzzn8U2trHNfwbb2OY/mm1s8x/JNrb5j2Ib2/xHsY1tntsNN9wAwH333XcrV1111VVX/VegctVVV1111X+Jf/iHf/gdgBtvvJE///M/51/DNgCS+I9iGwBJ/EeyDYAk/iPZ5n6S+I9mmweSxH8W29xPEv8VbPPcJPHfyTbPjyT+v7DNVf+72OZ/Itv8d7DNfwXb/GeyzX8G2/xHs81/NNv8R7LNi+Ls2bPP4Kqrrrrqqv8KVK666qqrrvovcfbs2VsBtre3+beyDYAk/qPY5n6S+I9im/tJ4j+Sbe4nif8MtrmfJP6z2OaBJPFfxTYPJIn/CWzzgkjiqqv+K9jmfzLb/HewzX8V2/xnss1/Ftv8R7PNfzTb/EeyzYvixhtvBOAf/uEffpurrrrqqqv+K1C56qqrrrrqv9T29jb/Xra5nyT+o9gGQBL/kWwDIIn/aLa5nyT+M9jmfpL4z2SbB5LEfxXbPDdJ/E9imxdEEldd9a9hm/8NbPPfyTb/VWzzn8k2/1ls85/BNv+RbPMfyTb/Wtvb2wDcd999t3LVVVddddV/BYKrrrrqqqv+S9x33323/sM//MNvA9xwww38R7GNbf4j2cY2/9FsYxvb/GewjW1s85/FNraxzX8F29jGNrb5r2Yb29jGNrb5n8o2trGNbWxjG9vY5qr/X2xjG9vYxja2sY1tbPM/kW1sYxvb2Oa/mm1sYxvb/GezjW1s85/BNraxzX8029jGNv+RbGMb2/xHsY1t/qPYxjb/WjfccAMA9913361cddVVV131X4XKVVddddVV/+VsYxtJ/EexDYAk/qPY5n6S+I9km/tJ4j+abe4nif8MtnkgSfxns80DSeK/mm2emyT+p7PNi0ISV/3PZpv/C2zzP4Ft/ivZ5r+Cbf6z2OY/g23+o9nmP5Jt/j12dnYA+Id/+Iff5qqrrrrqqv8qBFddddVVV/2X+fu///vfBrjxxhsBsI1t/iPZxjb/0Wxjm/8MtrHNfxbb2MY2/5lsYxvb/FexjW1sY5v/LraxjW1sYxvb/G9kG9vYxja2sY1tbGMb29jmqv84trGNbWxjG9vYxja2sY1t/jeyjW1sYxvb/HexjW1sY5v/CraxjW3+M9nGNrb5j2Yb29jmP5JtbGOb/0i2sc1/FNvY5t9re3sbgPvuu+9Wrrrqqquu+q9C5aqrrrrqqv8y//AP//A7ADfccAMPZBsASfxHsc39JPEfxTb3k8R/JNvcTxL/GWxzP0n8Z7HN/STxX8U2DySJ/062eW6S+L/CNv8ekvi/wjZXgW3+p7HNfzXb/FexzX8W2/xnsc1/NNv8R7PNf6Tt7W0Azp49+wyuuuqqq676r0Llqquuuuqq/3I7Ozs8P7a5nyT+o9gGQBL/kWwDIIn/aLa5nyT+M9jmfpL4z2KbB5LEfxXbPJAk/rvZ5vmRxP83trnqfyfb/E9km/8utvmvYpv/TLb5z2Cb/wy2+Y9mm/9ItgG48cYbAfiHf/iH3+aqq6666qr/KlSuuuqqq676L3P27NlbeRHZBkAS/1Fscz9J/Eexzf0k8R/NNveTxH8G29xPEv+ZbPNAkvivYpvnJon/CWzzgkjiqqv+q9nmfzrb/HexzX8V2/xns81/Ftv8Z7DNfzTb/EeyzQNtb28DcN99993KVVddddVV/1UIrrrqqquu+i9z33333Xrffffdur29zQ033MCLwja2+Y9mG9v8R7ONbWzzn8E2trHNfxbb2MY2/xVsYxvb/HewjW1sY5v/iWxjG9vYxja2sc1VV/172MY2trGNbWxjm/9pbGMb29jGNv/VbGMb2/xns41tbPOfxTa2sc1/NNvYxjb/kWxjG9v8R7GNbWzzH8U2tnmg7e1trrrqqquu+m9B5aqrrrrqqv9SZ8+evfWaa655MP9KtgGQxH8k2wBI4j+abQAk8Z/BNgCS+M9im/tJ4j+bbR5IEv/VbPPcJPE/lW1eGElc9f+Xbf43ss3/BLb5r2Sb/2y2+c9km/8MtvmPZpv/aLZ5QW688UYAfuu3fuu7ueqqq6666r8SwVVXXXXVVf+l/v7v//63AW688Ub+LWxjG9v8R7KNbWzzH802trHNfwbb2MY2/5lsYxvb2Oa/gm1sYxvb/HexjW1sYxvb/G9hG9vYxja2sY1tbGMb21z1v49tbGMb29jGNraxjW3+N7CNbWxjG9v8d7GNbWxjm/8KtrGNbf6z2MY2tvnPYBvb2OY/mm1s8x/JNrb5j2Qb27ww29vbXHXVVVdd9d+CylVXXXXVVf+lzp49+wyAG264gX8v2wBI4j+SbQAk8R/NNveTxH8029xPEv+ZbHM/SfxXsM0DSeK/i22eH0n8b2SbF5UkrvrPYZv/y2zzP4lt/qvZ5r+Cbf4z2eY/i23+M9jmP5ptXlQ7OzsA/MM//MPvcNVVV1111X8lKlddddVVV/2Xuu+++27lP5htACTxH8k295PEfzTbAEjiP4Nt7ieJ/0y2eSBJ/FewzXOTxH8n2zw/kvi/wjb/VpL4v8w2V4Ft/ieyzX8H2/xXsM1/Ntv8Z7HNfzTb/Eezzb/FDTfcAMA//MM//DZXXXXVVVf9V6Jy1VVXXXXVf6mzZ8/eCrCzs4NtJPEfxTb3k8R/JNsASOI/mm3uJ4n/DLZ5IEn8Z7LN/STxX8k2DySJ/wls8/xI4v8T21z1f4dt/qeyzX8X2/xXsc1/Ntv8Z7HNfwbb/Eezzb/Hzs4OV1111VVX/bcguOqqq6666r/Ufffdd+t999136/b2Ntvb29jGNv/RbGOb/2i2sY1t/jPYxja2+c9kG9vY5j+bbWxjG9v8V7ONbWxjm/9pbGMb29jGNra56qr/SWxjG9vYxja2+Z/ENraxjW3+q9nGNrb5z2Yb29jmP4ttbGOb/wy2sc1/NNvY5j+SbWzzH+W+++67lauuuuqqq/4rEVx11VVXXfVf7uzZs7cC7OzscD/b2OY/mm1s85/BNraxzX8G29jGNv+ZbGMb2/xXsI1tbGOb/2q2sY1tbGOb/4lsYxvb2MY2trHNVVf9Z7CNbWxjG9vYxjb/09jGNraxjW3+q9nGNraxzX8229jGNv9ZbGMb2/xnsI1tbPMfyTa2sc1/JNvY5j/Cox/9aAB+67d+67u56qqrrrrqvxrBVVddddVV/+X+/u///rcBbrjhBp6bbWxjm/9ItrGNbf4z2MY2/1lsYxvb/GeyjW1s81/FNraxzX8X29jGNraxzf9ktrGNbWxjG9vYxjZXXfX82MY2trGNbWxjG9v8T2Ub29jGNrb572Ab29jGNv8VbGMb2/xnso1t/jPYxja2+Y9mG9v8R7ONbf4j2eaqq6666qr/NlSuuuqqq676b7Ozs8MLYxsASfxHsg2AJP6j2eZ+kvjPYJv7SeI/i23uJ4n/CrZ5IEn8d7HNc5PE/wa2+ZdI4qr/O2zzf4Ft/qewzX8H2/xXsM1/Jtv8Z7HNfzTb/Eezzf1uvPFGAP7hH/7hd7jqqquuuuq/GpWrrrrqqqv+y/3DP/zD7wBsb2/zorANgCT+I9nmfpL4j2ab+0niP4Nt7ieJ/yy2eSBJ/FewzQNJ4r+TbZ6bJP43ss2LShJX/dezzf9ltvmfxDb/HWzzX8U2/5ls85/FNv8ZbPMfzTbPbWdnh6uuuuqqq/7bULnqqquuuuq/3NmzZ28F2NnZ4V/DNgCS+I9mGwBJ/GewDYAk/rPY5n6S+M9km/tJ4r+KbZ6bJP472eb5kcT/Fbb5t5DEVWCb/89s8z+Rbf672Oa/im3+s9nmP4tt/jPY5j+abV6Q7e1tAP7hH/7ht7nqqquuuuq/GpWrrrrqqqv+y9133323Amxvb7O9vc3+/j7/Gra5nyT+I9nmfpL4j2ab+0niP4tt7ieJ/0y2eSBJ/FeyzQNJ4n8C2zw/kvj/wjZX/f9im/+pbPPfxTb/lWzzn802/1ls85/FNv/RbPMv2dnZAeC+++67lauuuuqqq/6rEVx11VVXXfXf4h/+4R9+G2BnZ4d/D9vY5j+DbWzzn8U2trHNfybb2MY2/xVsYxvb2Oa/mm1sYxvb/E9jG9vYxja2sc1VV/1vYRvb2MY2trGNbf4nsY1tbGOb/2q2sY1t/ivYxja2+c9iG9vY5j+DbWzzH802trHNfyTb2OZf8uhHPxqAf/iHf/gdrrrqqquu+u9AcNVVV1111X+L++6771aA7e1t/iPYxja2+Y9mG9vY5j+LbWxjm/9MtrGNbf6r2MY2tvnvYBvb2MY2tvmfyDa2sY1tbGMb21x11X8129jGNraxjW1s8z+RbWxjG9vY5r+abWxjG9v8V7CNbWzzn8U2trHNfwbb2MY2/9FsY5v/aLaxzb/WfffddytXXXXVVVf9d6By1VVXXXXVf4v77rvvVoDt7W3+o9kGQBL/0WxzP0n8Z7DN/STxn8U295PEfwXbPJAk/jvY5rlJ4n8q27wwkrjqqn8t2/xvZJv/CWzzX802/xVs85/NNv8ZbPOfwTb/VjfeeCMA//AP//DbXHXVVVdd9d+B4Kqrrrrqqv8W//AP//A7ADfeeCO2sc1/NNvYxjb/GWxjm/9MtrGNbf4z2cY2trHNfxXb2MY2tvnvZBvb2MY2tvnfwja2sY1tbGMb29jGNlf9/2Ib29jGNraxjW1sY5v/DWxjG9vYxjb/XWxjG9vY5r+KbWxjm/9MtrGNbf6z2MY2tvmPZhvb/EezjW2uuuqqq676X43KVVddddVV/y3Onj17K8D29jb3sw2AJP6j2QZAEv/RbHM/SfxnsQ2AJP6z2eZ+kvivYpsHksR/J9s8N0n8b2Sbf4kkrvqfzTb/V9nmfxLb/HexzX8V2/xnss1/Jtv8Z7DNf5Qbb7wRgH/4h3/4ba666qqrrvrvQOWqq6666qr/Fvfdd9+tADs7Ozw32wBI4j+abe4nif9otrmfJP4z2OaBJPGfyTb3k8R/Jds8kCT+u9nm+ZHE/3a2+deSxFX/drb5/8Y2/xPZ5r+Lbf4r2eY/m23+s9jmP4tt/qPt7OwAcN99993KVVddddVV/x0Irrrqqquu+m/zD//wD78NcOONN/L82MY2tvnPYBvb/GexjW1s85/JNraxzX8229jGNrb5r2Yb29jGNv+T2MY2trGNbf4/sI1tbGMb29jGNraxjW1sYxvb2MY2trGNbf43sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWzzf51tbGMb29jmfwrb2MY2tvmvZhvb2Oa/gm1sY5v/LLaxjW3+M9jGNv/RbGMb2/xHu+GGGwD4h3/4h9/mqquuuuqq/y5Urrrqqquu+m+3vb3Nv8Q2AJL4j2ab+0niP4NtACTxn8k295PEfzbbPJAk/ivZ5rlJ4n8K27wgkrjq2Wxz1f9OtvnfwDb/nWzzX8k2/xVs85/JNv9ZbPOfxTYAOzs7ANx33323ctVVV1111X8Xgquuuuqqq/7b/P3f//1vA+zs7PCiso1t/rPYxjb/WWxjG9v8Z7ONbWzzX8U2trHNfxfb2MY2tvmfyja2sY1tbGObq676n8o2trGNbWxjm/+JbGMb29jGNv8dbGMb2/xXsI1tbPOfyTa2sc1/FtvY5j+DbWzzn8E2trnf9vY2APfdd9+tXHXVVVdd9d+FylVXXXXVVf9t/uEf/uF3AG688Ub+tWxzP0n8R7PN/STxn8E295PEfybb3E8S/xVs80CS+O9gm+cmif+pbPPCSOKqq/6z2OZ/I9v8T2Cb/2q2+a9im/9MtvnPYpv/TLZ5fnZ2dgA4e/bsM7jqqquuuuq/C5Wrrrrqqqv+25w9e/ZWgO3tbf49bAMgif8MtgGQxH8W29xPEv+ZbHM/SfxXsc0DSeK/i22emyT+N7DNCyOJq656fmzzf4Ft/qewzX8H2/xXsc1/Jtv8Z7LNfybbvDA33ngjAP/wD//w21x11VVXXfXfhcpVV1111VX/7XZ2dviPYJv7SeI/mm3uJ4n/LLa5nyT+M9nmgSTxX8U2DySJ/062eW6S+N/GNv8SSVz1f4tt/i+yzf8ktvnvYpv/Krb5z2ab/yy2+c9kmxfVzs4OAPfdd9+tXHXVVVdd9d+F4Kqrrrrqqv829913363/8A//8NsAN954I/+RbGOb/yy2sY1t/jPZxja2+a9gG9vY5r+abWxjG9v8T2Ab29jGNrb5v8A2trGNbWxjG9vYxja2sc1V/31sYxvb2MY2trGNbWxjG9v8b2cb29jGNraxzX8329jGNrb5r2Qb29jGNv/ZbGMb2/xnsY1tbPOfwTa2+c9iG9u8qHZ2dgC47777buWqq6666qr/TlSuuuqqq676P80295PEfwbb3E8S/1lscz9J/GezzQNJ4r+SbR5IEv8T2Ob5kcT/Rbb5t5DEVVfY5qpns83/VLb572Sb/0q2+c9mm/9MtvnPZpt/ixtvvBGAf/iHf/htrrrqqquu+u9EcNVVV1111X+rv//7v/9tgBtuuAHb/GeyjW3+M9nGNv/ZbGMb2/xXsY1tbPPfwTa2sY1tbPM/iW1sYxvb2MY2/1/Zxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2tvn/yja2sY1tbGOb/0lsYxvb2Oa/mm1sYxvb/FewjW1s85/JNrb5z2Ib2/xnsY1tbPNvtb29DcB99913K1ddddVVV/13Irjqqquuuuq/1T/8wz/8DsBNN90EgG1sY5v/LLaxjW3+s9jGNrb5z2Yb29jmv4ptbGMb2/x3sY1tbGOb/4lsYxvb2MY2trHNVVf9b2cb29jGNraxjW3+p7GNbWxjG9v8d7CNbWzzX8U2trHNfybb2MY2/xlsYxvb/GexjW3+I+zs7ABw9uzZZ3DVVVddddV/JypXXXXVVVf9j7C9vc1zsw2AJP6z2OZ+kvjPYJv7SeI/k23uJ4n/KrZ5IEn8d7DNc5PE/1S2eUEkcdVV/xPY5n8j2/xPYJv/arb5r2Kb/2y2+c9mm/9oN954IwD/8A//8NtcddVVV13134nKVVddddVV/63Onj17K/8C2wBI4j+TbQAk8Z/FNveTxH8m2zyQJP6r2OZ+kvjvZJsHksT/BrZ5QSRx1VX/kWzzv5lt/qewzX8H2/xXsc1/Ntv8Z7PNfxbb7OzsAHDffffdylVXXXXVVf+dCK666qqrrvpvdd99991633333bqzs8ONN97IC2Mb29jmP5NtbGOb/0y2sY1t/ivYxja2+a9kG9vYxjb/3WxjG9vYxjb/29jGNraxjW1sYxvb2Oaqq+5nG9vYxja2sY1tbGOb/01sYxvb2MY2/51sYxvb2Oa/km1sY5v/bLaxjW3+M9nGNv+ZbGOb/wy2sc3Ozg5XXXXVVVf9j0Hlqquuuuqq/3Znz5699Zprrnkw/wq2AZDEfybb3E8S/1lscz9J/Gezzf0k8V/JNg8kif9utnl+JPG/lW3+JZK46n832/xfZpv/aWzz38k2/1Vs81/BNv/ZbPOfxTbP7cYbbwTgt37rt76bq6666qqr/rsRXHXVVVdd9d/u7//+738b4MYbb+Rfyza2sc1/NtvY5j+bbWxjm/8KtrGNbWzzX802trGNbf4nsY1tbGMb2/xfYhvb2MY2trGNbWxjG9vYxjZX/eezjW1sYxvb2MY2trGNbWxjm/8rbGMb29jGNrb5n8A2trGNbf6r2cY2trHNfzbb2MY2/5lsYxvb/GeyjW3+M9jGNlddddVVV/2PR+Wqq6666qr/dmfPnn0GwE033cSf/umf8m9lGwBJ/Geyzf0k8Z/JNveTxH8F29xPEv/VbPPcJPE/hW2eH0n8X2ebfy9J/F9lm6teONv8T2eb/262+a9km/8qtvmvYJv/LLb5l9x0000A/MM//MPvcNVVV1111X83KlddddVVV/23u++++27lP5Bt7ieJ/0y2uZ8k/jPZ5n6S+K9gmweSxH8H2zyQJP6nsc3zI4mrns02V/3fZ5v/LWzz3802/9Vs81/FNv8VbPOfxTb/GjfeeCMA9913361cddVVV131343KVVddddVV/+3Onj17K8D29jb/0WwDIIn/bLa5nyT+M9nmfpL4r2KbB5LEfwfbPDdJ/E9kmxdEEldd9b+Zbf43sc3/FLb5r2ab/yq2+a9gm/9Mtvm32NnZAeDs2bO3ctVVV1111X83gquuuuqqq/7b3Xfffbfed999t+7s7LC9vc1/BtvYxjb/FWxjG9v8Z7ONbWxjm/9KtrGNbf672cY2trHN/wa2sY1tbGMb29jmqqv+p7CNbWxjG9vYxjb/09nGNraxzX8n29jGNrb5r2Ib29jmP5ttbGOb/2y2sc1/FtvY5t/rvvvuu5Wrrrrqqqv+uxFcddVVV131P8LZs2dvBdje3sY2tvnPYhvb2Oa/gm1sY5v/CraxjW3+K9nGNraxzX8329jGNraxzf8mtrGNbWxjG9vYxjZXXfUfxTa2sY1tbGMb29jmfwvb2MY2trHNfyfb2MY2tvmvZBvb2OY/m21sY5v/bLaxjW3+M9jGNrb593jMYx4DwG/91m99N1ddddVVV/1PQHDVVVddddX/CPfdd9+tADfddBP3s41t/jPZxjb/VWxjG9v8V7CNbWzzX802trGNbf4nsI1tbGMb2/xvZRvb2MY2trGNbWxz1VUAtrGNbWxjG9vYxja2+d/INraxjW1s89/NNraxjW3+K9nGNraxzX8229jGNv8VbGOb/yy2sc1VV1111VX/Z1G56qqrrrrqf4T77rvvVl4A29xPEv8ZbHM/SfxXsM39JPGfzTYPJIn/SrZ5IEn8T2Cb50cS/5vZ5kUliav+d7HN/we2+Z/KNv+dbPNfyTb/lWzzn8k2/1luuukmAP7hH/7hd7jqqquuuup/AipXXXXVVVf9j/AP//APvwNw44038sLYBkAS/1lscz9J/Fewzf0k8V/BNveTxH812zyQJP4nsc1zk8T/Rbb515DEVf+xbPP/nW3+J7PNfzfb/FeyzX8l2/xns81/FtsAbG9vc9VVV1111f8oVK666qqrrvof4ezZs7cC7Ozs8KKwzf0k8Z/FNveTxH8F29xPEv8VbPNAkvivZpvnJon/SWzz/Eji/xPb/EeQxP9mtrnqX882/xvY5r+bbf6r2ea/mm3+s9nmP4ttHmhnZweAf/iHf/htrrrqqquu+p+AylVXXXXVVf8j3HfffbcC7OzssLOzw97eHi8q29xPEv9ZbAMgif8qtrmfJP6r2OZ+kvjvYpsHksT/RLZ5fiRx1Qtmm6v+77LN/xa2+Z/CNv/VbPNfzTb/2Wzzn8k2z8/Ozg4A9913361cddVVV131PwHBVVddddVV/2P8wz/8w28DbG9v829lG9v8Z7KNbWzzX8k2trHNfyXb2MY2tvnvZBvb2MY2tvmfzDa2sY1tbGMb21x11f8FtrGNbWxjG9vY5n8y29jGNrb572Qb29jGNv9VbGMb2/xXsY1tbPOfxTa2sc1/BtvYxjbPz0033QTAP/zDP/wOV1111VVX/U9BcNVVV1111f8Y9913360AOzs7/HvZxja2+c9kG9vY5r+SbWxjm/9qtrGNbWzz3802trGNbf63sI1tbGMb29jGNldd9T+JbWxjG9vYxja2+d/ANraxjW1s89/JNraxjW3+K9nGNrb5r2Ib29jmP5NtbPOfxTa2+Zfs7OwAcN99993KVVddddVV/1NQueqqq6666n+M++6771aAnZ0d/iPZBkAS/5lscz9J/FexzQNJ4r+SbR5IEv+dbPPcJPG/iW1eGElcddV/FNv8X2Gb/2ls89/JNv/VbPNfwTb/2Wzzr3HjjTcC8A//8A+/zVVXXXXVVf9TULnqqquuuup/jH/4h3/4HYAbb7yR/wy2uZ8k/jPZ5n6S+K9km/tJ4r+abR5IEv/dbPPcJPG/lW3+JZK46irb/F9lm/+JbPPfyTb/HWzzX8U2/5lsc9VVV1111f8pVK666qqrrvof4+zZs7cC7OzsYBtJ/Gexzf0k8Z/JNveTxH8l29xPEv8dbPNAkvifwDbPjyT+L7DNi0ISV/3vY5v/T2zzP5Vt/rvZ5r+Lbf4r2OY/m23+vW666SYA/uEf/uG3ueqqq6666n8KKlddddVVV/2Pcd99990KsLOzA4Bt7ieJ/yy2uZ8k/jPZ5n6S+K9kmweSxH8H2zyQJP4nsc1zk8T/Vbb515LEVf9xbHPVFbb5n842/xPY5r+Lbf4r2OY/m23+I+3s7ABw33333cpVV1111VX/UxBcddVVV131P8o//MM//DbATTfdxAPZxjb/2Wxjm/8KtrGNbf472MY2tvnvZBvb2MY2/xPZxja2sY1tbPP/lW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGOb/61sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb2/x/ZRvb2MY2tvmfyDa2sY1t/rvYxja2sc1/JdvYxja2+c9kG9vY5j+TbWzzH+mmm24C4L777ruVq6666qqr/iehctVVV1111f9IOzs7PD+2uZ8k/rPY5n6S+M9mm/tJ4r+abR5IEv9dbPPcJPE/kW1eEElc9S+zzVX/d9nmfxvb/E9gm/9OtvmvZJv/bLb5z7S9vQ3AP/zDP/w2V1111VVX/U9CcNVVV1111f8of//3f//bANvb2/xLbGMb2/xnso1tbPNfwTa2sc1/F9vYxja2+e9mG9vYxjb/G9jGNraxjW1sc9VV/xfZxja2sY1tbPM/nW1sYxvb2Oa/k21sY5v/DraxjW3+K9jGNrb5z2Qb2/xnsY1tdnZ2ALjvvvtu5aqrrrrqqv9JCK666qqrrvof5R/+4R9+B+Cmm27iX8M2tvnPZhvb2Oa/gm1sYxvb/HexjW1sY5v/braxjW1sY5v/LWxjG9vYxja2sY1trrrqfyLb2MY2trGNbWxjm/8NbGMb29jGNv/dbGMb29jmv4NtbGOb/wq2sY1t/jPZxja2+c9iG9vcb2dnB4CzZ88+g6uuuuqqq/4noXLVVVddddX/KGfPnr0VYGdnh38L29xPEv+ZbHM/SfxXsM39JPHfxTb3k8T/BLZ5bpL438Y2L4gkrrrqP4tt/q+wzf9EtvmfwDb/lWzzX8E2/9ls84LcdNNNAPzDP/zDb3PVVVddddX/JFSuuuqqq676H2lnZ4d/L9vcTxL/mWxzP0n8V7DN/STx38U2DySJ/yls89wk8b+Vbf4lkrjqqudmm/+rbPM/lW3+p7DNfyXb/FexzX822/xLdnZ2ALjvvvtu5aqrrrrqqv9JCK666qqrrvof5b777rv1H/7hH34b4KabbuI/im1s81/BNraxzX8V29jGNrb572Qb29jGNrb5n8Q2trGNbWzzf4ltbGMb29jGNraxjW1sY5ur/nezjW1sYxvb2MY2trGNbWzzf4VtbGMb29jmfxLb2MY2tvnvZBvb2MY2/xVsYxvb/GezjW1s85/FNraxzb9kZ2cHgPvuu+9Wrrrqqquu+p+GylVXXXXVVf+v2OZ+kvjPZpv7SeK/im3uJ4n/brZ5IEn8T2Kb50cS/5fZ5l9DElf957HNVc9mm//pbPM/iW3+q9nmv4pt/ivY5l/rpptuAuAf/uEffpurrrrqqqv+pyG46qqrrrrqf5y///u//22AG2+8kf9MtrGNbf4r2MY2tvmvZBvb2MY2/xPYxja2sc3/VLaxjW1sYxvb/H9lG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2Ob/EtvYxja2sY1tbGMb29jGNraxjW1sYxvb2Ob/K9vYxja2sY1t/ieyjW1sY5v/braxjW1s81/FNraxzX8F29jmP5NtbGObf4udnR2uuuqqq676H4vKVVddddVV/+P8wz/8w+8A3HTTTfzxH/8xAJL4z2Sb+0niP5tt7ieJ/0q2uZ8k/iewzQNJ4n8y2zw/krjqRWObq/7/sM3/Nrb5n8g2/x1s81/JNv8VbPMfYWdnB4B/+Id/+B2uuuqqq676n4bKVVddddVV/2Pt7OxwP9vcTxL/mWxzP0n8Z7PN/STxX8k2DySJ/wls89wk8T+dbV4QSVx11f91tvnfyjb/E9nmv4tt/ivZ5r+Cbf6j3XTTTQD8wz/8w29z1VVXXXXV/zRUrrrqqquu+h/n7Nmzt/JC2AZAEv/ZbAMgif8KtnkgSfxXss0DSeJ/Cts8N0n8b2GbF0QSV131v4Vt/rezzf9UtvnvZJv/Srb5r2Kb/yw7OzsA3Hfffbdy1VVXXXXV/zRUrrrqqquu+h/nvvvuu/W+++679Zprrnnwzs4Oe3t7PD+2uZ8k/jPZ5n6S+K9im/tJ4r+abR5IEv+T2Oa5SeJ/G9u8MJK46qr/Krb5v8Q2/9PZ5r+Tbf4r2ea/im3+s21vb3PVVVddddX/aARXXXXVVVf9j3T27NlbAXZ2dnhR2MY2tvnPZhvb2Oa/km1sY5v/LraxjW1s8z+RbWxjG9vY5n8729jGNraxjW1sYxvbXHXVi8I2trGNbWxjG9vYxjb/m9nGNraxjW3+J7KNbWxjm/9qtrGNbWzzX8E2trHNfzbb2MY2/5lsY5ubbroJgN/6rd/6bq666qqrrvqfiOCqq6666qr/kf7+7//+twFuuukm/rVsY5v/CraxjW3+K9nGNraxzX8X29jGNrb5n8o2trGNbWzzf41tbGMb29jGNraxjW1sc9X/TbaxjW1sYxvb2MY2trHN/yW2sY1tbGOb/6lsYxvb2Oa/g21sY5v/KraxjW3+K9jGNv+ZbGMb21x11VVXXfW/BpWrrrrqqqv+Rzp79uwzAG666Sb+rWxzP0n8Z7PN/STxX8k295PEfxfbPJAk/qeyzfMjif/LbPOvIYmr/uvZ5qorbPO/jW3+J7DNfzXb/FeyzX8F27wgN998MwD/8A//8DtcddVVV131PxGVq6666qqr/ke67777buU/kG3uJ4n/bLZ5IEn8V7HNA0niv4ttHkgS/9PZ5vmRxP9Htvn3kMT/N7a56t/GNv/b2OZ/Ctv8d7DNfyXb/FewzYvipptuAuC+++67lauuuuqqq/4nonLVVVddddX/SGfPnr0VYGdnh/9otrmfJP4r2OZ+kvivZJv7SeK/k20eSBL/W9jm+ZHEVS+Yba666oFs87+Zbf6nsM1/F9v8V7LNfxXb/FucPXv2Vq666qqrrvqfiOCqq6666qr/ke67775b77vvvlt3dnbY2dnhP4ttbGOb/yq2sY1t/qvZxja2sc1/N9vYxja2sc3/NraxjW1sYxvbXHXV/3e2sY1tbGMb2/xvYxvb2MY2/91sYxvb/FezjW1s81/FNrb5z2Yb29jmX2tnZweA++6771auuuqqq676n4jgqquuuuqq/7HOnj17K8D29jb/FWxjG9v8V7GNbWzz38E2trGNbf4nsI1tbGOb/61sYxvb2MY2trGNba666v8C29jGNraxjW1s87+RbWxjG9vY5r+bbWxjG9v8V7ONbWzzX8U2trHNfybb2MY2/1aPfexjAfiHf/iH3+aqq6666qr/qQiuuuqqq676H+u+++67FeCmm27CNraxzX8F29jGNv9VbGMb2/x3sY1tbGOb/wlsYxvb2MY2/xfYxja2sY1tbGObq676n8I2trGNbWxjG9vY5n8z29jGNraxzf8EtrGNbWzz38E2trHNfxXb2MY2/9lsY5v/SPfdd9+tXHXVVVdd9T8Vlauuuuqqq/7Huu+++27l+bDN/STxn80295PEfwXbPJAk/jvY5n6S+J/CNs9NEv9X2OZfIomrrvr3ss3/B7b5n8o2/91s89/BNv9VbPOf4eabbwbgH/7hH36Hq6666qqr/qciuOqqq6666n+sf/iHf/gdgJtvvpkXxDa2+a9iG9vY5r+SbWxjm/8utrGNbWxjm/9JbGMb29jGNv+X2cY2trGNbWxjG9vY5qr/v2xjG9vYxja2sY1tbGOb/4tsYxvb2MY2/5PYxja2sc1/F9vYxjb/lWxjG9v8Z7ONbWzzn2VnZ4errrrqqqv+x6Ny1VVXXXXV/1hnz569FWBnZ4d/iW3uJ4n/Cra5nyT+q9jmgSTx38U2DySJ/0ls8/xI4v8D2/xrSOKq/7lsc9Vzss3/dLb5n8I2/x1s81/JNv8VbLOzswPAP/zDP/w2V1111VVX/U9F5aqrrrrqqv+x7rvvvlsBdnZ2+Newzf0k8V/BNveTxH8l29xPEv+dbPNAkvifyDbPjyT+P7PNv5UkrvqX2eaqfz3b/G9hm/8pbPPfxTb/lWzzX8E2D7SzswPAfffddytXXXXVVVf9T0Vw1VVXXXXV/2j/8A//8NsAN910E/8WtrGNbf6r2MY2tvmvZhvb2MY2/91sYxvb2OZ/OtvYxja2sc1VLxrb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trHNv4dtbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNle9cLaxjW1sYxvb/E9mG9vYxjb/3WxjG9v8V7ONbWzzX8E2trHNfzbb2OaBbrrpJgD+4R/+4Xe46qqrrrrqfzKCq6666qqr/ke77777bgXY2dnh38s2trHNfxXb2MY2/x1sYxvb/E9gG9vYxja2+Z/ONraxjW1sYxvbXPXfyza2sY1tbGMb29jGNraxjW1sYxvbXPXfyza2sY1tbGOb/w1sYxvb2Oa/m21sYxvb/FezjW1s81/BNraxzX8229jGNs/PsWPHALjvvvtu5aqrrrrqqv/JqFx11VVXXfU/2n333XcrwM7ODv+RbHM/SfxXsM39JPFfzTYPJIn/CWzzQJL438I2z48krrrq/zvb/G9nm/9pbPPfyTb/HWzzX8U2L4qbbroJgPvuu+/pXHXVVVdd9T8ZwVVXXXXVVf+j/cM//MNvA9x88838Z7GNbf4r2cY2trHNfwfb2MY2tvmfwja2sY1tbPO/jW1sYxvb2MY2trHNVVf9X2Eb29jGNraxjW3+t7GNbWxjG9v8T2Eb29jmv4NtbGOb/0q2sY1t/rPZxja2+dc6e/bsM7jqqquuuup/MipXXXXVVVf9j3bffffdCrCzs8N/NtvcTxL/lWxzP0n8d7DNA0nifwrbPDdJ/G9lmxdEEldd9T+Jbf6vsc3/ZLb572ab/w62+a9im3+Pm2++GYB/+Id/+G2uuuqqq676n4zKVVddddVV/6OdPXv2GQA7OzvYBkAS/9lscz9J/Feyzf0k8d/FNg8kif9JbPPcJPG/nW3+JZK46qr/CLb5v842/9PZ5n8C2/x3sM1/Jdv8R9jZ2QHgvvvuu5Wrrrrqqqv+JyO46qqrrrrqf7x/+Id/+G2Am266CQDb2MY2/xVsYxvb2Oa/km1sYxvb/HeyjW1sY5v/iWxjG9vYxjb/F9nGNraxjW1sYxvb2MY2V/3/ZRvb2MY2trGNbWxjG9v8X2Mb29jGNrb5n8g2trGNbf672MY2trHNfyXb2MY2/xVsYxvb/Ee46aabALjvvvtu5aqrrrrqqv/pqFx11VVXXfW/mm0AJPFfxTb3k8R/JdvcTxL/nWzzQJL4n8g2z48k/q+zzb+GJK76n8s2V11hm/8tbPM/iW3+u9jmv5Jt/rMcO3YMgH/4h3/4ba666qqrrvqfjuCqq6666qr/8f7+7//+twFuvvlmXhDb2MY2/5VsYxvb/FezjW1sY5v/braxjW1sY5v/yWxjG9vYxja2+f/MNraxjW1sYxvb2MY2trGNbWxjG9tc9S+zjW1sYxvb2MY2trGNbWxjG9vYxja2+f/KNraxjW1s8z+ZbWxjG9v8d7ONbWxjm/9qtrGNbf4r2MY2tvnPtLOzA8B99913K1ddddVVV/1PR+Wqq6666qr/8f7hH/7hdwBuuukmXhS2uZ8k/qvY5n6S+K9mmweSxH832zyQJP6ns83zI4mrXjDb/E8giedmm6v+57PN/0a2+Z/GNv9dbPPfwTb/VWyzs7MDwNmzZ5/BVVddddVV/9NRueqqq6666n+8s2fP3gpw7Ngx/rVscz9J/Fexzf0k8d/BNveTxP8EtnlukvjfwDYviCSu+p/BNlf9z2Wb/81s8z+Rbf472ea/g23+q9jmgW6++WYA/uEf/uG3ueqqq6666n86KlddddVVV/2/YZv7SeK/im3uJ4n/DrZ5IEn8T2GbB5LE/za2eUEkcdVV/5/Y5v8K2/xPZJv/brb572Cb/yq2eUF2dnYAuO+++27lqquuuuqq/+kIrrrqqquu+h/vvvvuu/W+++67dWdnh5tuuon/CLaxjW3+K9nGNraxzX8X29jGNrb5n8Q2trGNbWzzv5ltbGMb29jGNra56qr/rWxjG9vYxja2sc3/VraxjW1sY5v/KWxjG9vY5r+LbWxjm/9KtrGNbf4r2MY2L8jOzg4A9913361cddVVV131vwGVq6666qqr/lc4e/bsrddcc82D+U9gm/tJ4r+Sbe4nif8utnkgSfxPYpvnJon/7Wzzwkjiqqv+q9nm/zrb/E9mm/8JbPPfxTb/lWzzorr55psB+Id/+Iff5qqrrrrqqv8NCK666qqrrvpf4e///u9/G+Dmm2/mP5NtbGOb/2q2sY1tbPPfyTa2sY1t/ieyjW1sYxvb/F9jG9vYxja2sY1tbGMb21x11YvKNraxjW1sYxvb2MY2/9fYxja2sY1t/qexjW1sY5v/TraxjW3+q9nGNrb5r2Ab29jmX2NnZ4errrrqqqv+V6Fy1VVXXXXV/wr/8A//8DsAN910E/9VbHM/SfxXs839JPHfyTYPJIn/iWzz/Eji/zLbvCgkcdX/Tbb5/842/1vY5n8S2/x3sc1/Ndv8exw7dgyAf/iHf/gdrrrqqquu+t+AylVXXXXVVf+rHDt2DNvcTxL/FWxzP0n8V7PNA0niv5Ntnpsk/qeyzfMjif9PbPOvJYmr/mvZ5qoXzjb/m9jmfxLb/HeyzX812/xHufnmmwH4h3/4h9/mqquuuuqq/w2oXHXVVVdd9b/C2bNnb+X5sA2AJP6r2OZ+kvjvYJv7SeJ/Ats8kCT+p7PN8yOJq66wzX8USfxfZZur/uPZ5n8j2/xPYpv/brb5r2ab/ww7OztcddVVV131vwqVq6666qqr/le47777br3vvvtuveaaax587NgxLl26xAPZ5n6S+K9imweSxH812zyQJP4nsM0DSeJ/C9s8P5K46t/ONldd9dxs87+Zbf4nss1/J9v8d7DNf5X77rvvVq666qqrrvrfgOCqq6666qr/Nc6ePXsrwM7ODi+MbWxjm/9qtrGNbf672MY2trHN/xS2sY1tbGOb/21sYxvb2MY2trHNVVdd9cLZxja2sY1tbPO/jW1sYxvb/E9hG9vYxjb/HWxjG9v8V7KNbWzzn+3FXuzFAPit3/qt7+aqq6666qr/LQiuuuqqq676X+Pv//7vfxvgpptu4kVlG9vY5r+abWxjm/9OtrGNbWzzP4ltbGMb29jmfyvb2MY2trGNbWxz1VX/H9jGNraxjW1sYxvb/G9kG9vYxja2+Z/CNraxjW3+u9jGNrb5r2Qb29jmv4JtbGObq6666qqr/tehctVVV1111f86x44d49/CNveTxH8l2zyQJP672OaBJPE/iW2emyT+N7PNCyOJq67638A2/1fZ5n8y2/xPYZv/Drb5r2abB7r55psB+Id/+Iff4aqrrrrqqv8tqFx11VVXXfW/xj/8wz/8DsDOzg7/Xra5nyT+q9nmfpL472SbB5LE/zS2eW6S+L/CNv8SSVx11X8m2/x/YZv/6WzzP4Vt/rvY5r+abV6Qm2++GYD77rvvVq666qqrrvrfgspVV1111VX/a5w9e/ZWgGPHjvEfyTb3k8R/Nds8kCT+O9nmgSTxP5Ftnpsk/q+yzb9EEldd9dxs8/+Vbf63sM3/JLb572Kb/2q2+dc4e/bsrVx11VVXXfW/BZWrrrrqqqv+17jvvvtuBdjZ2WFnZ4e9vT3+o9nmgSTxX80295PEfzfbPJAk/qeyzfMjif8PbPOvIYmr/neyzVXPyTb/m9jmfxLb/HeyzX812/xrHTt2DID77rvvVq666qqrrvrfguCqq6666qr/Vf7hH/7htwGOHTvGfwXb2MY2/x1sYxvb2OZ/AtvYxja2+d/ANraxjW1sY5v/72xjG9vYxja2sY1tbGMb29jGNra56j+GbWxjG9vYxja2sY1tbGMb29jGNrb5/8w2trGNbWxjm//pbGMb29jmfwLb2MY2/x1sYxvb/FeyjW3+tV7sxV4MgH/4h3/4ba666qqrrvrfhOCqq6666qr/Ve67775bAW666Sb+q9nGNrb572Ib29jmfwrb2MY2trHN/xa2sY1tbGMb21z1wtnGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jmfwLb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sY5urXjjb2MY2trGNbf43sI1tbGMb2/xPYBvb2MY2/x1sYxvb/FeyjW1s8+9133333cpVV1111VX/m1C56qqrrrrqf5X77rvvVp7JNveTxH8l29xPEv8dbPNAkvifwjYPJIn/TWzz/Ejiqv8atrnq/wfb/G9nm/+JbPM/gW3+O9jmP9LNN98MwD/8wz/8DlddddVVV/1vQuWqq6666qr/Vf7hH/7hdwBuvvlmHsg295PEfyXb3E8S/11s80CS+J/CNs9NEv/b2OYFkcRVV131/Nnm/wrb/E9mm/9utvnvYpv/LMeOHeOqq6666qr/lahcddVVV131v8rZs2dvBdjZ2eEFsc39JPFfyTYPJIn/LrZ5IEn8T2Kb5yaJ/61s88JI4qqr/q+yzf9Ftvmfzjb/E9jmv4tt/ivs7OwA8A//8A+/zVVXXXXVVf+bULnqqquuuup/lfvuu+9WgGPHjvGisM39JPFfzTb3k8R/J9s8kCT+p7HNc5PE/wW2eWEkcdVV/1PZ5v862/xvYJv/KWzz38U2/9WOHTsGwH333XcrV1111VVX/W9CcNVVV1111f86f//3f//bADfffDP/GraxjW3+O9jGNraxzX8329jGNrb5n8o2trGNbWzzf5FtbGMb29jGNraxjW2uuuo/g21sYxvb2MY2trGNbf6vsY1tbGMb2/xPZRvb2MY2/51sYxvb2Oa/mm1sY5v/KraxzU033QTAP/zDP/wOV1111VVX/W9D5aqrrrrqqv+1dnZ2+Leyzf0k8d/BNveTxH832zyQJP6nss3zI4n/y2zzopDEVVfZ5iqwzf8mtvmfxDb/nWzzX802z+3YsWMA3Hfffbdy1VVXXXXV/zYEV1111VVX/a/zD//wD78NcOzYMf4j2MY2trHNfwfb2MY2tvmfwDa2sY1t/jewjW1sYxvb/H9kG9vYxja2sY1tbGMb29jGNlf972Ab29jGNraxjW1sYxvb2MY2/9/Yxja2sY1tbPM/mW1sYxvb2Oa/m21sYxvb/HewjW1s81/JNrZ5fm6++WYA7rvvvqdz1VVXXXXV/zZUrrrqqquu+l/nH/7hH34b4Oabb+Y/g23uJ4n/DrZ5IEn8d7PNc5PE/3S2eX4kcdUVtvn3kMRV/zLbXPXvZ5v/rWzzP5Ft/rvZ5r+Dbf41zp49+wyuuuqqq67634bKVVddddVV/+vcd999twLs7Ozwn80295PEfxfb3E8S/1PY5oEk8b+FbV4QSVz1orPNVVf9R7PN/3a2+Z/INv/dbPPfxTb/WjfffDMA//AP//DbXHXVVVdd9b8Nlauuuuqqq/7XOnbsGP+VbHM/Sfx3sc0DSeJ/Cts8N0n8b2Ob50cSV1111X8c2/xfYZv/qWzzP4Ft/rvY5t/j2LFjANx33323ctVVV1111f82BFddddVVV/2vc/bs2Wf8wz/8w28D3HTTTdjmv5ptbGMb2/x3so1tbGOb/2lsYxvb2MY2/1vZxja2sY1tbGObq6666vmzjW1sYxvb2MY2/1vZxja2sY1t/iexjW1sY5v/TraxjW3+q9nGNrb597j55psBuO+++27lqquuuuqq/42oXHXVVVdd9X+Cbe4nif9qtrmfJP472eaBJPE/jW2emyT+N7PNCyOJq676v8o2/1fZ5n8D2/xPYZv/Lrb5j3bs2DEA/uEf/uG3ueqqq6666n8jgquuuuqqq/5X+vu///vfBrj55pt5braxjW3+O9jGNraxzX8329jGNrb5n8o2trGNbWzzf4ltbGMb29jGNraxzVVX/U9lG9vYxja2sY1tbGOb/ytsYxvb2MY2/1PZxja2sc1/J9vYxja2+a9mG9vY5j/Dzs4OAPfdd9+tXHXVVVdd9b8RwVVXXXXVVf8r/cM//MPvANxyyy28MLaxjW3+u9jGNrb5n8A2trGNbf4ns41tbGMb2/xfZRvb2MY2trGNbWxjG9tcddV/JNvYxja2sY1tbGMb2/xfZRvb2MY2tvmfzDa2sY1t/rvZxja2+e9gG9vY5j/bsWPHADh79uwzuOqqq6666n8jKlddddVVV/2vdPbs2VsBdnZ2eFHZ5n6S+O9gmweSxH832zyQJP4ns83zI4n/D2zzopDEVf9/2eaqZ7PN/ya2+Z/GNv/dbPPf4eabbwbgH/7hH36bq6666qqr/jeictVVV1111f9LtrmfJP672OZ+kvifwDbPTRL/09nmuUni/yvb/GtJ4qr/eWxz1YvGNv8b2eZ/Itv8d7PNfwfb3O/YsWMA3Hfffbdy1VVXXXXV/0ZUrrrqqquu+l/pvvvuu/W+++679ZprrnnwzTffzO23386/lW0eSBL/HWzzQJL4n8I2DySJ/w1s84JI4qrnZJt/L0lc9Wy2ueo/nm3+N7PN/0S2+Z/ANv8dbPPcjh07xlVXXXXVVf/rUbnqqquuuup/rbNnz956zTXXPJj/YLa5nyT+u9jmgSTxP4Vtnpsk/jexzfMjiav+7Wxz1VX/UWzzv51t/qeyzf8EtvnvYpsX5uabbwbgt37rt76bq6666qqr/rciuOqqq6666n+tv//7v/9tgJtvvpn/LLaxjW3+u9nGNrb5n8g2trGNbf63so1tbGMb29jGNlddddV/PNvYxja2sY1tbPO/kW1sYxvb/E9jG9vY5r+TbWxjm/9qtrGNbf4lx44d46qrrrrqqv/1CK666qqrrvpf6+zZs88AuOWWW/ivYBvb2MY2/51sYxvb2OZ/ItvYxja2sc3/draxjW1sYxvb2Oaqq656wWxjG9vYxja2sc3/ZraxjW1sY5v/aWxjG9vY5r+TbWxjm/9qtrGNbf41jh07BsA//MM//A5XXXXVVVf9b0Xlqquuuuqq/7Xuu+++W/lvZJv7SeK/k20eSBL/E9nmuUni/wLbvDCSuOqq/6ts83+dbf43sM3/FLb572Sbf6+bb74ZgH/4h3/4ba666qqrrvrfispVV1111VX/a509e/ZWgJ2dHWxzP0n8V7PNA0niv5NtHkgS/1PZ5rlJ4v8a27wwkrjqqv+pbPP/iW3+t7DN/yS2+e9km/9Ix44d46qrrrrqqv/1qFx11VVXXfW/1n333Xfrfffdd+s111zz4GPHjnHp0iUAbHM/Sfx3sM39JPHfzTbPTRL/U9nm+ZHE/1W2eVFI4qqr/qPY5v8z2/xvY5v/SWzz3802/9nuu+++W7nqqquuuup/K4Krrrrqqqv+Vzt79uytAMeOHeP5sY1tbPPfxTa2sY1t/qewjW1sY5v/DWxjG9vYxjb/39jGNraxjW1sYxvb2MY2V/3/ZRvb2MY2trGNbWxjG9vY5v8T29jGNraxzf90trGNbWxjm/8JbGMb2/x3sY1tbPOf5cVf/MUB+K3f+q3v5qqrrrrqqv/NCK666qqrrvpf7e///u9/G+Dmm2/mX2Ib29jmv5NtbGOb/0lsYxvb2OZ/C9vYxja2sY1t/r+zjW1sYxvb2MY2trGNbWxjG9tc9T+PbWxjG9vYxja2sY1tbGMb29jm/zvb2MY2trGNbf43sI1tbGOb/ylsYxvb2Oa/i21sY5urrrrqqquu+legctVVV1111f8Jx44d41/DNveTxH8X2zyQJP6nsM1zk8T/FrZ5fiRx1fNnm/8okvj/zDZX/eeyzf92tvmfyjb/E9jmv8vNN98MwD/8wz/8DlddddVVV/1vRuWqq6666qr/1f7hH/7hdwCOHTvGv5VtHkgS/11s80CS+J/ENg8kif9tbPOCSOKq/xi2ueqq/wi2+b/ANv+T2eZ/Atv8d7LN/W655RYA7rvvvlu56qqrrrrqfzMqV1111VVX/a929uzZWwF2dnb4j2Kb+0niv5NtHkgS/5PY5rlJ4n8r2zw/krjqqqv+89jm/xLb/E9nm/8pbPPfyTYvzNmzZ2/lqquuuuqq/82oXHXVVVdd9b/afffddyvAsWPHOHbsGJcuXeI/km3uJ4n/brZ5IEn8T2Ob5yaJ/81s88JI4qqrrnrhbPN/lW3+p7PN/yS2+e9km3/JsWPHALjvvvtu5aqrrrrqqv/NCK666qqrrvpf7x/+4R9+G2BnZ4f/TLaxjW1s8z+BbWxjG9v8T2Ub29jGNrb5v8Q2trGNbWxjG9tcddX/F7axjW1sYxvb2MY2/1fYxja2sY1t/ieyjW1sY5v/braxjW1s89/BNraxzb/kJV7iJQD4h3/4h9/mqquuuuqq/+0Irrrqqquu+l/vvvvuuxXglltu4b+SbWxjm/8pbGMb29jmfzLb2MY2trHN/0W2sY1tbGMb29jGNra56qr/6WxjG9vYxja2sY1tbPN/kW1sYxvb2OZ/KtvYxja2+Z/ANraxzX8X29jGNv8W9913361cddVVV131vx2Vq6666qqr/te77777bgWwzX8X2zyQJP4nsM0DSeJ/Mts8P5L4v8w2LwpJXHXVfzTb/H9nm/9tbPM/jW3+J7DNv9fNN98MwD/8wz/8DlddddVVV/1vR3DVVVddddX/ev/wD//wOwC33HILtrGNbf472cY2tvmfxDa2sY1t/rewjW1sYxvb/H9kG9vYxja2sY1tbGMb21x1lW1sYxvb2MY2trGNbWxjm/9vbGMb29jGNv8b2MY2trHN/xS2sY1t/rvYxja2sc1VV1111VVXPRcqV1111VVX/a939uzZWwGOHTvGA9nmfpL472KbB5LE/xS2eW6S+N/ANs+PJP6/s82/hSSu+p/HNlf969nmfzPb/E9km/8JbPOf6ZZbbgHgH/7hH36bq6666qqr/rejctVVV1111f969913360Ax44d4wWxzQNJ4r+LbR5IEv+T2OaBJPG/iW2eH0lc9cLZ5j+CJK4C21z1n882/9vZ5n8y2/xPYJv/KseOHQPgvvvuu5Wrrrrqqqv+tyO46qqrrrrq/4S///u//22AW265hReFbWxjm/9utrGNbWzzP41tbGMb29jmfyPb2MY2trGNbWxz1X8s29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vY5qr/OLaxjW1sYxvb2OZ/I9vYxja2+Z/GNraxjW3+O9nGNrb5r3LLLbcA8A//8A+/w1VXXXXVVf8XULnqqquuuur/lGPHjvGvZZv7SeK/m20eSBL/09jmgSTxv5ltnh9JXHXVVf81bPN/kW3+p7PN/yS2+e+0s7MDwH333XcrV1111VVX/V9AcNVVV1111f8J//AP//DbADs7O/x72MY2trHN/wS2sY1t/qeyjW1sYxvb/F9gG9vYxja2sY1tbHPVVVf969jGNraxjW1sY5v/C2xjG9vYxjb/E9nGNraxzX8329jGNrb572Ab29jmlltuAeC+++57OlddddVVV/1fQHDVVVddddX/Cf/wD//w2wC33HIL/5FsYxvb/E9gG9vYxjb/k9nGNraxjW3+r7GNbWxjG9vYxja2ueqq/29sYxvb2MY2trGNbf4vsY1tbGMb2/xPZRvb2MY2/xPYxja2+e9iG9vY5vk5e/bsM7jqqquuuur/AipXXXXVVVf9n3DffffdCnDs2DH+s9jmgSTx3802z00S/1PZ5vmRxP9FtnlhJHHVVf+b2Ob/I9v8b2Kb/2ls89/NNi+KW265BYB/+Id/+G2uuuqqq676v4DKVVddddVV/6ccO3aM/yq2uZ8k/qewzQNJ4n862zw3SfxfZ5sXhSSuuuo/k22uAtv8b2Sb/4ls89/NNv9ax44dA+C+++67lauuuuqqq/4vILjqqquuuur/hLNnzz7jH/7hH34b4JZbbuG/mm1sYxvb/E9iG9vYxjb/W9jGNraxjW1s8/+RbWxjG9vYxja2sY1tbGObq656INvYxja2sY1tbGMb29jm/yPb2MY2trHN/xa2sY1tbPM/hW1sYxvb/HexjW1s8691yy23AHDffffdylVXXXXVVf9XULnqqquuuur/HNv8d7PNA0nifwrbPDdJ/G9hm+dHEleBbf61JHHV/3y2uepfzzb/m9nmfzLb/E9gm/8Ix44dA+Af/uEffpurrrrqqqv+ryC46qqrrrrq/4y///u//22AW265BdvYxja2+e9mG9vY5n8i29jGNrb538g2trGNbWxjm6v+ZbaxjW1sYxvb2MY2trGNbWxjG9vYxja2ueoFs41tbGMb29jGNraxjW1sYxvb2MY2trGNba564WxjG9vYxja2+d/GNraxjW3+p7GNbWxjm/9OtrGNbf6jHDt2DID77rvvVq666qqrrvq/gspVV1111VX/Z/zDP/zD7wDccsstPDfb3E8S/51s80CS+J/GNs9NEv8b2eb5kcRV/3Fsc9VV/9ls83+Jbf6ns83/FLb5z3bs2DEAzp49+wyuuuqqq676v4LKVVddddVV/+ccO3aMF8Y295PEfzfbPJAk/ieyzQNJ4n8z27wgkrjqqqv++9jm/yLb/E9nm/9JbPNf6ZZbbgHgH/7hH36bq6666qqr/q+gctVVV1111f8ZZ8+evZV/Jds8kCT+u9nmgSTxP5Ftnpsk/i+wzQsiiauuuurfxzb/19nmfwPb/E9jm/8ux44dA+C+++67lauuuuqqq/6vILjqqquuuur/jPvuu+/W++6779Zjx45xyy238G9hG9vY5n8K29jGNrb5n8w2trGNbWzzf41tbGMb29jGNraxzVVXXXWFbWxjG9vYxja2+b/GNraxjW1s8z+VbWxjG9v8T2Ab29jGNv9ddnZ2uOqqq6666v8kKlddddVVV/2fcvbs2VuvueaaB/MfwDYPJIn/CWzzQJL4n8w2z48k/i+yzb9EEldd9b+Zbf4/ss3/Nrb5n8g2/91s80C33HILAL/1W7/13Vx11VVXXfV/CZWrrrrqqqv+T/n7v//7336xF3ux136zN3szLl26xH82SdjmgSRhmweShG0eSBK2eSBJ2OaBJGGbB5KEbR5IErZ5IEnY5oEkYZsHkoRtHkgStnkgSdjmgSRhmweShG0eSBK2eSBJ2OZ+krjqqquu+p/ANg8kCds8kCRs80CSsM0DScI2DyQJ2zyQJGzzQJKwzQNJwjYPJAnbPJAkbPNAkrDNA0nCNg8kCds8kCRs80CSsM0DScI2/9scO3aMq6666qqr/k+ictVVV1111f8pv/3bv/09AO/0Tu/02ceOHeOqq6666qqrrrrqRfUjP/Ijn/3bv/3b38NVV1111VX/l6AHPehBXHXVVVdd9X/LNddc8+AzZ848GDAgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMBnT179tb77rvvVq666qqrrvq/BD3oQQ/iqquuuuqqq6666qqrrrrqqquuuuqqq676P4nKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q/iHwGshrjUTdgcigAAAABJRU5ErkJggg==) +![Rendered example of subtract 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADtaklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq67iHd/xHT/rmmuueTBXXXXVVVf9j/Nbv/Vb3/MP//APv81VV1111VVXXfVvgR70oAdx1VVXXXXVVf9fvdiLvdhrf/iHf/h3XXPNNQ/mqquuuuqq/7F+67d+67u//uu//n246qqrrrrqqqv+tdCDHvQgrrrqqquuuur/q2/6pm96+jXXXPPgP//zP+fP//zPueqqq6666j+Xbf61PuRDPgSAr//6r3+f3/qt3/purrrqqquuuuqqfw0qV1111VVXXfX/1Od+7uf+1jXXXPPgpz71qfzoj/4oV71gkrjqfzbbXPV/i22uuuKHf/iHeed3fmfe8R3f8bP+4R/+4bfvu+++W7nqqquuuuqqq15UBFddddVVV131/9DrvM7rvPeLvdiLvTbAr/3ar/HfSRKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISV/3PJwlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJHHVv54kJCEJSUhCEpKQhCQkIQlJSEISkpCEJP6v+Iu/+Av+/M//nGuuuebBH/7hH/5dXHXVVVddddVV/xqU48ePc9VVV1111VX/n7zYi73Ya3/SJ33STwF88zd/M0972tN4bpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCSuuur/A0lIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSuOoKSUhCEpKQhCQkIQlJSEISkpCEJCQhif9J7rrrLl78xV+cW2655cEA//AP//A7XHXVVVddddVVLwqCq6666qqrrvp/5p3e6Z0+C+Av/uIvePrTn44kJCEJSUjiqquu+t9NEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCGJ/28kIQlJSEISkpCEJCQhCUlIQhKS+M9w8eJFfuRHfgSA13md13nvF3uxF3ttrrrqqquuuuqqFwXBVVddddVVV/0/8rmf+7m/9WIv9mKv/bSnPY0f/dEf5ar/+SQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJXPV/nyQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCGJ/8skIQlJSEISkpCEJCQhCUlIQhIviqc+9an8+Z//Oddcc82DP/zDP/y7uOqqq6666qqrXhQEV1111VVXXfX/xIu92Iu99ou92Iu9NsCv/dqv8X+BJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQk/jeRhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpDEVf9xJCEJSUhCEpKQhCQkIQlJSEISkpCEJCTxf4kkJCEJSUhCEpKQhCQk8Wu/9mtcvHiRa6655sHv+I7v+FlcddVVV1111VX/Esrx48e56qqrrrrqqv/rrrnmmgd/xVd8xV8BfMu3fAtPe9rT+I8iCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkrrrqv5okJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCElc9f5KQhCQkIQlJSEISkpCEJCQhCUlIQhL/G61WK+666y5e/uVfnmuuuebBt95669+cPXv2Vq666qqrrrrqqheEylVXXXXVVVf9P/DhH/7h3wXwtKc9jac//elI4qqrrvqv9YEf+IFc9X+Hbf67XXPNNQ/+8A//8O/6kA/5kIdw1VVXXXXVVVe9IFSuuuqqq6666v+4z/3cz/2tF3uxF3vtixcv8q3f+q1cddVV//U+8AM/kIc+9KFcddV/tLNnz956zTXXPPi+++67lauuuuqqq6666vmhctVVV1111VX/h73Yi73Ya7/Yi73YawP82I/9GFc9f5K46v8u2/xP8bSnPY3d3V3+p5DEVS+cbf4nsc39HvvYx/JiL/Zir81VV1111VVXXfXCULnqqquuuuqq/6OuueaaB3/u537ubwF867d+K0972tP4n0ISV131X0US/1Ps7u5y8eJF/jUk8Z9JEle9aGzzH8k2/1a2WSwWANx33323ctVVV1111VVXvSBUrrrqqquuuur/qA//8A//LoCnPe1pPO1pT+NFIYmrrrrqP97FixcBmM/n/GvZRhL/WWwjiav+ZZJ4INv8e0jifrb515DEVVddddVVV131IqFy1VVXXXXVVf8Hfe7nfu5vvdiLvdhrX7x4kW/7tm9DElddddV/n4sXLwIwn8/5t7ANgCSu+p9DEvezzb+HJABs86KYz+cA3Hfffbdy1VVXXXXVVVe9MFSuuuqqq6666v+YF3uxF3vtF3uxF3ttgB//8R/nqv/5JPF/mW3+v9vd3QVgsVjw72EbSfxHs40krvq3k8T9bPNvJYn72eYFWSwWAJw9e/ZWrrrqqquuuuqqF4bKVVddddVVV/0fcs011zz4cz/3c38L4Nu+7dt42tOexv9Fkrjqfw9J/F9hm3+LixcvAjCfz/n3so0krvqfSxL3s82/lSQAbPPc5vM5APfdd9+tXHXVVVddddVVLwyVq6666qqrrvo/5MM//MO/C+BpT3saT3va0/ivIImrrvr/QhL/Fru7uwDM53NsI4l/D9tI4v8qSfxnss1/FUk8kG3+tSRxP9tcddVVV1111VX/KlSuuuqqq6666v+Id3zHd/ysF3uxF3vtixcv8m3f9m08kCSuuuqq/36r1QoA20jiKpDEfzVJvDC2+c8iifvZ5l9LEgDz+RyA++6771auuuqqq6666qoXhspVV1111VVX/R/wYi/2Yq/9Tu/0Tp8N8OM//uNI4qqrrvqf4+LFi1y8eJETJ04wn89ZrVbYRhL/VraRxP9GkvifTBLPj23+I0nifrb511gsFgCcPXv2GVx11VVXXXXVVS8Mlauu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trGNbWzz/4VtbGMb29jGNraxjW1sc9VV/9FsYxvb2MY2trGNbWxjm/8vbGMb29jGNv8b2MY2trHN/xS2sY1tbPOf5ZZbbgHgH/7hH36bq6666qqrrnr+qFx11VVXXfV/xn333XcrwLFjx/ivYpsHksT/FLZ5bpL438I2z00S/1/Z5l9DElf9/2Kbq/5ltvnfzDb/U9nmv9qxY8cAuO+++27lqquuuuqqq54/KlddddVVV/2f8Q//8A+/A3DLLbfw38U2DySJ/0ls80CS+N/ENs+PJK56Trb5t5DEVf+9bHPVv59t/rezzf9ktrnqqquuuuqq/wWoXHXVVVdd9X/G2bNnbwU4duwYtpHEfzfbPJAk/iexzXOTxP82tnlBJHHVi842/5Ek8X+dba7672Ob/yts8z+Zbf4nefEXf3EAfuu3fuu7ueqqq6666qoXjMpVV1111VX/Z9x33323Ahw7dgwA2zyQJP672eZ+kvifyDbPTRL/W9nm+ZHEVf/5bHPVVf9etvm/xjb/09nmfxLbXHXVVVddddW/AcFVV1111VX/p/zDP/zDbwPccsstPDfb2MY2/xPYxja2sc3/ZLaxjW1s83+BbWxjG9vYxja2ueqqq/7r2cY2trGNbWxjm//tbGMb29jGNv9T2cY2tvmfwDa2sc1ze9CDHgTAP/zDP/wOV1111VVXXfWCUbnqqquuuur/pFtuuYV/DUn8TyOJq/5nksRVV131r2ebq/5nsc3/JLZ5UR07doyrrrrqqquuehFQueqqq6666v+U3/qt3/qeM2fOPPg1XuM1HsxVV1111VVXXfV/2j/8wz/89j/8wz/8NlddddVVV131glG56qqrrrrq/5Tf+q3f+m6A13md13kvrrrqqquuuuqq/9O+/uu//n3uu+++W7nqqquuuuqqFww96EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9X8Y+Ovq+IBbA2OwAAAABJRU5ErkJggg==) ```js // Subtract a cylinder from a cube using operators. @@ -62,25 +61,24 @@ subtractedPart = subtract([part001], tools = [part002]) // Codemods will generate the stdlib function call instead. -fn cube(center) { +fn cube(center, size) { return startSketchOn(XY) - |> startProfileAt([center[0] - 10, center[1] - 10], %) - |> line(endAbsolute = [center[0] + 10, center[1] - 10]) - |> line(endAbsolute = [center[0] + 10, center[1] + 10]) - |> line(endAbsolute = [center[0] - 10, center[1] + 10]) + |> startProfileAt([center[0] - size, center[1] - size], %) + |> line(endAbsolute = [center[0] + size, center[1] - size]) + |> line(endAbsolute = [center[0] + size, center[1] + size]) + |> line(endAbsolute = [center[0] - size, center[1] + size]) |> close() |> extrude(length = 10) } -part001 = cube([0, 0]) -part002 = startSketchOn(XY) - |> circle(center = [0, 0], radius = 2) - |> extrude(length = 10) +part001 = cube([0, 0], 10) +part002 = cube([7, 3], 5) + |> translate(z = 1) // This is the equivalent of: subtract([part001], tools=[part002]) subtractedPart = part001 - part002 ``` -![Rendered example of subtract 1](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEV5ElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVX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A+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMBnT179tb77rvvVq666qqrrvq/BD3oQQ/iqquuuuqqq6666qqrrrrqqquuuuqqq676P4nKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q/iHwGshrjUTdgcigAAAABJRU5ErkJggg==) +![Rendered example of subtract 1](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADtaklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq67iHd/xHT/rmmuueTBXXXXVVVf9j/Nbv/Vb3/MP//APv81VV1111VVXXfVvgR70oAdx1VVXXXXVVf9fvdiLvdhrf/iHf/h3XXPNNQ/mqquuuuqq/7F+67d+67u//uu//n246qqrrrrqqqv+tdCDHvQgrrrqqquuuur/q2/6pm96+jXXXPPgP//zP+fP//zPueqqq6666j+Xbf61PuRDPgSAr//6r3+f3/qt3/purrrqqquuuuqqfw0qV1111VVXXfX/1Od+7uf+1jXXXPPgpz71qfzoj/4oV71gkrjqfzbbXPV/i22uuuKHf/iHeed3fmfe8R3f8bP+4R/+4bfvu+++W7nqqquuuuqqq15UBFddddVVV131/9DrvM7rvPeLvdiLvTbAr/3ar/HfSRKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISV/3PJwlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJHHVv54kJCEJSUhCEpKQhCQkIQlJSEISkpCEJP6v+Iu/+Av+/M//nGuuuebBH/7hH/5dXHXVVVddddVV/xqU48ePc9VVV1111VX/n7zYi73Ya3/SJ33STwF88zd/M0972tN4bpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCSuuur/A0lIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSuOoKSUhCEpKQhCQkIQlJSEISkpCEJCQhif9J7rrrLl78xV+cW2655cEA//AP//A7XHXVVVddddVVLwqCq6666qqrrvp/5p3e6Z0+C+Av/uIvePrTn44kJCEJSUjiqquu+t9NEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCGJ/28kIQlJSEISkpCEJCQhCUlIQhKS+M9w8eJFfuRHfgSA13md13nvF3uxF3ttrrrqqquuuuqqFwXBVVddddVVV/0/8rmf+7m/9WIv9mKv/bSnPY0f/dEf5ar/+SQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJXPV/nyQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCGJ/8skIQlJSEISkpCEJCQhCUlIQhIviqc+9an8+Z//Oddcc82DP/zDP/y7uOqqq6666qqrXhQEV1111VVXXfX/xIu92Iu99ou92Iu9NsCv/dqv8X+BJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQk/jeRhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpDEVf9xJCEJSUhCEpKQhCQkIQlJSEISkpCEJCTxf4kkJCEJSUhCEpKQhCQk8Wu/9mtcvHiRa6655sHv+I7v+FlcddVVV1111VX/Esrx48e56qqrrrrqqv/rrrnmmgd/xVd8xV8BfMu3fAtPe9rT+I8iCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkrrrqv5okJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCElc9f5KQhCQkIQlJSEISkpCEJCQhCUlIQhL/G61WK+666y5e/uVfnmuuuebBt95669+cPXv2Vq666qqrrrrqqheEylVXXXXVVVf9P/DhH/7h3wXwtKc9jac//elI4qqrrvqv9YEf+IFc9X+Hbf67XXPNNQ/+8A//8O/6kA/5kIdw1VVXXXXVVVe9IFSuuuqqq6666v+4z/3cz/2tF3uxF3vtixcv8q3f+q1cddVV//U+8AM/kIc+9KFcddV/tLNnz956zTXXPPi+++67lauuuuqqq6666vmhctVVV1111VX/h73Yi73Ya7/Yi73YawP82I/9GFc9f5K46v8u2/xP8bSnPY3d3V3+p5DEVS+cbf4nsc39HvvYx/JiL/Zir81VV1111VVXXfXCULnqqquuuuqq/6OuueaaB3/u537ubwF867d+K0972tP4n0ISV131X0US/1Ps7u5y8eJF/jUk8Z9JEle9aGzzH8k2/1a2WSwWANx33323ctVVV1111VVXvSBUrrrqqquuuur/qA//8A//LoCnPe1pPO1pT+NFIYmrrrrqP97FixcBmM/n/GvZRhL/WWwjiav+ZZJ4INv8e0jifrb515DEVVddddVVV131IqFy1VVXXXXVVf8Hfe7nfu5vvdiLvdhrX7x4kW/7tm9DElddddV/n4sXLwIwn8/5t7ANgCSu+p9DEvezzb+HJABs86KYz+cA3Hfffbdy1VVXXXXVVVe9MFSuuuqqq6666v+YF3uxF3vtF3uxF3ttgB//8R/nqv/5JPF/mW3+v9vd3QVgsVjw72EbSfxHs40krvq3k8T9bPNvJYn72eYFWSwWAJw9e/ZWrrrqqquuuuqqF4bKVVddddVVV/0fcs011zz4cz/3c38L4Nu+7dt42tOexv9Fkrjqfw9J/F9hm3+LixcvAjCfz/n3so0krvqfSxL3s82/lSQAbPPc5vM5APfdd9+tXHXVVVddddVVLwyVq6666qqrrvo/5MM//MO/C+BpT3saT3va0/ivIImrrvr/QhL/Fru7uwDM53NsI4l/D9tI4v8qSfxnss1/FUk8kG3+tSRxP9tcddVVV1111VX/KlSuuuqqq6666v+Id3zHd/ysF3uxF3vtixcv8m3f9m08kCSuuuqq/36r1QoA20jiKpDEfzVJvDC2+c8iifvZ5l9LEgDz+RyA++6771auuuqqq6666qoXhspVV1111VVX/R/wYi/2Yq/9Tu/0Tp8N8OM//uNI4qqrrvqf4+LFi1y8eJETJ04wn89ZrVbYRhL/VraRxP9GkvifTBLPj23+I0nifrb511gsFgCcPXv2GVx11VVXXXXVVS8Mlauu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trGNbWzz/4VtbGMb29jGNraxjW1sc9VV/9FsYxvb2MY2trGNbWxjm/8vbGMb29jGNv8b2MY2trHN/xS2sY1tbPOf5ZZbbgHgH/7hH36bq6666qqrrnr+qFx11VVXXfV/xn333XcrwLFjx/ivYpsHksT/FLZ5bpL438I2z00S/1/Z5l9DElf9/2Kbq/5ltvnfzDb/U9nmv9qxY8cAuO+++27lqquuuuqqq54/KlddddVVV/2f8Q//8A+/A3DLLbfw38U2DySJ/0ls80CS+N/ENs+PJK56Trb5t5DEVf+9bHPVv59t/rezzf9ktrnqqquuuuqq/wWoXHXVVVdd9X/G2bNnbwU4duwYtpHEfzfbPJAk/iexzXOTxP82tnlBJHHVi842/5Ek8X+dba7672Ob/yts8z+Zbf4nefEXf3EAfuu3fuu7ueqqq6666qoXjMpVV1111VX/Z9x33323Ahw7dgwA2zyQJP672eZ+kvifyDbPTRL/W9nm+ZHEVf/5bHPVVf9etvm/xjb/09nmfxLbXHXVVVddddW/AcFVV1111VX/p/zDP/zDbwPccsstPDfb2MY2/xPYxja2sc3/ZLaxjW1s83+BbWxjG9vYxja2ueqqq/7r2cY2trGNbWxjm//tbGMb29jGNv9T2cY2tvmfwDa2sc1ze9CDHgTAP/zDP/wOV1111VVXXfWCUbnqqquuuur/pFtuuYV/DUn8TyOJq/5nksRVV131r2ebq/5nsc3/JLZ5UR07doyrrrrqqquuehFQueqqq6666v+U3/qt3/qeM2fOPPg1XuM1HsxVV1111VVXXfV/2j/8wz/89j/8wz/8NlddddVVV131glG56qqrrrrq/5Tf+q3f+m6A13md13kvrrrqqquuuuqq/9O+/uu//n3uu+++W7nqqquuuuqqFww96EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9X8Y+Ovq+IBbA2OwAAAABJRU5ErkJggg==) diff --git a/docs/kcl/sweep.md b/docs/kcl/sweep.md index a5a824e35..eaa049e4e 100644 --- a/docs/kcl/sweep.md +++ b/docs/kcl/sweep.md @@ -47,9 +47,9 @@ sweep( sweepPath = startSketchOn(XZ) |> startProfileAt([0.05, 0.05], %) |> line(end = [0, 7]) - |> tangentialArc({ offset = 90, radius = 5 }, %) + |> tangentialArc(angle = 90, radius = 5) |> line(end = [-3, 0]) - |> tangentialArc({ offset = -90, radius = 5 }, %) + |> tangentialArc(angle = -90, radius = 5) |> line(end = [0, 7]) // Create a hole for the pipe. @@ -62,7 +62,7 @@ sweepSketch = startSketchOn(XY) |> sweep(path = sweepPath) ``` -![Rendered example of sweep 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEkR0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVS+Sa6655sE805kzZx4McM011zyYZzpz5syDeC7XXHPNg3k+rrnmmgfzAtx333238gLcd999t/JMZ8+efQbPdN99993KM509e/bW++6771auuuqqq6666qqrrrrqqqsAPehBD+Kqq6666qqr/r+55pprHgxw5syZB19zzTUPPnPmzIN4pmuuuebB11xzzYMBzpw58+BrrrnmwbyIbr31Vu63u7vL8ePHeX52d3d5QY4fPw7A7u4uz+348eM80IMf/GBemH/4h3/47TNnzjz47Nmzt9533323AvzDP/zD7wDcd999t549e/bW++6771auuuqqq6666qqrrrrqqv+r0IMe9CCuuuqqq6666v+aa6655sFnzpx58DXXXPNggDNnzjzoxV/8xV/7zJkzD77mmmsezPNx6623sru7C8Du7i7Hjx9nd3eX+z34wQ9md3eX3d1djh8/zvHjx7nf8ePHATh+/Dj/Xru7uxw/fpzd3V2OHz8OwO7uLg+0u7vL7u4u93vGM57B/XZ3d9nd3eX48eMcP34cgGPHjnH8+HEAjh8/zoMf/GDud999990K8A//8A+/DfAP//APv/MP//APv33ffffdylVXXXXVVVddddVVV131vx160IMexFVXXXXVVVf9b3XNNdc8+MyZMw9+sRd7sde65ppr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/qNI4kUhCUk8P5L415DEVVddddVVV1111VVXXfW/AsFVV1111VVX/S/TWrvVNrb5j2Cbf4lt7mcbANs8kG3uZxvb2AbANrZ5INvYxjb/GpL495DEfwRJXLx4kWuuuebBXHXVVVddddVVV1111VX/UxFcddVVV1111f8yrTVsA2Ab2wDY5rnZBsA297PNc7PNA9nmhbHN/WxzP9vY5n62sc39bGMb2zw327yoJPFfQRJXXXXVVVddddVVV1111f9qBFddddVVV131v0xE/I5tbHM/2zw327wgtnlutnl+bPOC2AbANra5n21scz/b2Oa52QbANv+VJPHcJHE/Sbwgkrjf7u4uZ86ceRBXXXXVVVddddVVV1111f9UBFddddVVV131v4xtbGMb29jmfraxzfNjm3+Jbe5nmweyjW1sA2Cb52Yb29zPNraxjW1sYxvb2AbANs+PbR5IEv9TSEISV1111VVXXXXVVVddddX/eARXXXXVVVdd9b9MRNyamdjmgWxzP9vczzbPj23+rWwDYBvb2OaBbGMbANvczza2eUFs828hiX8tSfxrSOKqq6666qqrrrrqqquu+l+H4Kqrrrrqqqv+F7MNgG1eFLZ5INs8N9vczzYAtvmX2MY2tgGwjW0AbGOb+9nGNrYBsM3/BJJ4fiQBIIkH2t3d5ZprrnkwV1111VVXXXXVVVddddX/VARXXXXVVVdd9b9MRNw6TdOttgGwzf1s80C2AbDNC2Kb52abf4ltnh/b2AbANra5n21s80C2AbANgG1s819BElddddVVV1111VVXXXXV/2kEV1111VVXXfW/0DRNt9rGNgC2eW62eX5s869hm/vZxjb3s41tbGObB7INgG1sY5v72cY2tvn3kMT9JPEfSRIAknhBdnd3ueaaax7MVVddddVVV1111VVXXfU/FcFVV1111VVX/S+UmdjGNrYBsA2AbWzzr2Gb52abB7LN/Wzz/NjGNrYBsA2AbWxjG9s8N9v8R5DEv5Yk/rUkIYmrrrrqqquuuuqqq6666n88gquuuuqqq676Xygzb7XNi8I2ALa5n22em23+NWwDYBvb2OaBbANgm/vZBsA2tgGwzX8kSUhCEpKQhCReVJJ4YSTxQGfOnHkwV1111VVXXXXVVVddddX/VARXXXXVVVdd9b9Qa+1W29jGNrYBsM2LyjbPzTYPZBsA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DYBt7meb/wqS+NeQxHOTBMDu7i5XXXXVVVddddVVV1111f84BFddddVVV131f0RE3Gob29zPNrb597DNC2Ob58c297PN/WxzP9sA2AbANrZ5INs8N9u8IJIAkASAJF4UkgCQBIAkACTxgkjiqquuuuqqq6666qqrrvofjeCqq6666qqr/g+ZpulW29jmhbENgG3uZ5sXxDbPzTb/EtvYBsA297ONbV4Y29jmP5sk/iNI4syZMw/mqquuuuqqq6666qqrrvqfhOCqq6666qqr/g9prd0KYBvb3M8297PNC2KbF8Q2/xLb2MY2D2QbANvY5oFsYxvb/GeThCQk8a8liRdEEru7u1x11VVXXXXVVVddddVV/+MQXHXVVVddddX/Ia01bHM/29gGwDa2eW62eSDbvCC2eSDbANjGNg9kG9vczzb3s41tbPNAtgGwzXOzzb+HJB5IEs9NEv9Wu7u7XHXVVVddddVVV1111VX/4xBcddVVV1111f8hmfnbtrGNbV4Y27wgtnlBbPOvYZv72ea52QbANgC2+a8miQeSBIAknh9JSAJAEgCSuOaaax7MVVddddVVV1111VVXXfU/CcFVV1111VVX/R+SmdjmudnmhbHNc7PNC2Kb+9nmX2Kb+9nGNraxDYBtnptt7mebfwtJAEji+ZHEi0IS95PEVVddddVVV1111VVXXfW/BsFVV1111VVX/R9i+xmZiW1sYxvbPDfbANjmhbHNC2Kb52Yb29jGNra5n22eH9vczzYPZBvbPJBt/qeQBIAkLl26BMA111zzYK666qqrrrrqqquuuuqq/ykIrrrqqquuuur/llttY5vnZhvb2Ob5sc3zYxvb/Ets8/zY5n62sc39bANgG9sA2MY2/1UkASAJAElcddVVV1111VVXXXXVVf9nEFx11VVXXXXV/yERcattbGMb2/xr2OYFsc1zsw2AbV4Y2zyQbWzzn0USz48kJCGJf4kknpskXhBJAJw5c+bBXHXVVVddddVVV1111VX/UxBcddVVV1111f8xmckD2cY2z802ALZ5INu8ILaxzQtjG9vY5oFsY5vnZpv72eZ+tvmPIInnRxIvCkm8KHZ3d7nqqquuuuqqq6666qqr/schuOqqq6666qr/QyLiVgDb2OaBbPOiss0LY5v72eZ+tnkg29jmgWxjG9vYBsA2tgGwjW2eH9v8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braxjW1s89xsYxvbvCC2uZ9t/qeRxDOe8QwAXuzFXuy1ueqqq6666qqrrrrqqqv+uxFcddVVV1111f9RrbXfto1tAGxjGwDb2OZ+tnlBbGObfyvb2OYFsc1zs80D2eY/mySemyQeSBIviCQALl26BMCLvdiLvRZXXXXVVVddddVVV1111X83gquuuuqqq676P2qaJjIT29jmRWWb58c2tnlBbANgm/vZ5gWxjW0AbPNfSRKS+PeShCTuJ4lLly4B8OIv/uKvzVVXXXXVVVddddVVV131343gqquuuuqqq/6PkvQ7mYltbGMb29jmgWwDYJv72eYFsY1tnh/b3M82z802trHNc7ONbWwDYBsA2/xnk8S/liTuJ4n7Xbp0CYAzZ848mKuuuuqqq6666qqrrrrqvxvBVVddddVVV/0fFRG3Zia2sY1t7mcb29jmBbHNC2Mb2zw/tnkg29jm+bHNC2Kb52ab/2i2+feShCT29va49dZbueaaax7MVVddddVVV1111VVXXfXfjeCqq6666qqr/o+KiFsBbGMbANvY5rnZBsA2D2Sbf4ltbPOC2Ob5sY1tAGzzX8k2tnkg2zw32zw/knh+JCGJ+73Yi73Ya3PVVVddddVVV1111VVX/XciuOqqq6666qr/w9br9W9nJraxzf1scz/bPJBtHsg2tvmX2AbANvezzXOzjW2em23uZ5vnZpt/L9s8N9vczzb/GpKQhCQkcb+//du/BeDFXuzFXourrrrqqquuuuqqq6666r8TwVVXXXXVVVf9H5aZ2MY2trGNbQBsY5v72eZ+tnlutrHNC2Ob+9nmgWxjm+dmm/vZxjb/VraxjW2em20AbHM/2wDY5n62+beShCRuu+02AF78xV/8tbnqqquuuuqqq6666qqr/jsRXHXVVVddddX/YeM4/nZmYhsA2wDY5oFsA2Cb+9nm+bGNbWzzgtjmgWzz3GxjGwDbPDfb/HvYxja2sc0D2cY2/xqSAJAEgCTuJwlJAEhib2+PW2+9lTNnzjyYq6666qqrrrrqqquuuuq/E8FVV1111VVX/d/2O601bJOZANgGwDa2sc0LYpsXxja2eSDb3M82tnkg29jm30oS/1a2eW62AbDN/WzzopLE/SQhiftdc801D+aqq6666qqrrrrqqquu+u9EcNVVV1111VX/h0m6NTPJTGxjG9vY5rnZ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ccstt/ASL/ESPOhBDwLg0qVL3Hrrrfz1X/81T3va07BNZpKZDMNw62q1uvXSpUvfc3R09N1cddVVV1111VVX/c+CHvSgB3HVVVddddVVV/3rTNP03tvb29/V9z21Vkop1FoppVBKoZRCRBARRASSiAgiAklEBJKICCQhiYhAEpKICCQhCUlEBJKQREQgiYhAEhGBJCKCiCAiiAgigoggIiilEBGUUogISimUUogISilEBBFBRCCJiEASkngg29jGNrbJTGyTmWQmtslMMhPbZCa2sU1mYhvb2MY2trGNbWxjG9vYBsA2trENgG1sA2Ab2wDYxjYAtrENgG0AbGMbANsA2AbANgC2AbDN/WxzP9vczzb3s83zY5ur/v1s8/zY5rnZ5oFscz/b3M82ALYBsA2AbQBsYxsA2+zs7HDLLbfwoAc9iGPHjnHs2DH+5m/+hr/+67/mwoUL2CYzyUzW6/UzDg4OfuvSpUvfM47jb3PVVVddddVVV1313w896EEP4qqrrrrqqquu+teT9FsbGxuv3XUdtVZKKdRaKaVQSiEiKKUgiYggIpBERBARSCIikIQkIgJJSCIikIQkIgJJSEISEYEkJBERRASSiAgiAklEBBFBRFBKISKICEoplFKICEopRASlFCKCUgoRQUQgiYhAEpJ4INsAZCa2sU1mkpnYJjPJTGyTmdgmM7GNbTIT29jGNraxjW1sA2Ab29gGwDa2AbCNbWwDYBvbANjGNgC2AbCNbQBsA2Ab2wDYBsA2ALa5n20AbHM/2zyQbZ6bba76t7PNC2Ob52abB7LN/WxzP9sA2OZ+tgGwDYBtbANgGwDb2AZgZ2eHl3iJl+BBD3oQx44d43d+53f467/+azIT22Qmmclqtbr14sWL372/v/89tm/lqquuuuqqq6666r8HetCDHsRVV1111VVXXfWvl5kP3tjYeHrf99RaKaVQa6WUQimFUgoRQUQQEUQEkogIJBERRASSkEREIImIQBKSkEREIAlJSCIikIQkIgJJRASSiAgigoggIogIIoKIoJRCRFBKISIopRARlFIopRARRASlFCICSUQEkpDEA9kGwDaZiW0yE9tkJrbJTDIT22QmtslMbGMb29jGNraxjW1sYxsA29gGwDa2AbCNbQBsYxsA29jGNgC2sQ2AbQBsYxsA2wDYBsA2ALYBsM39bANgmweyzXOzzVX/NrZ5YWzz3GzzQLa5n23uZ5v72QbANgC2AbANgG0AbANgG9sA2MY2ttnZ2eFBD3oQx44d49ixY/z1X/81T3/607FNZpKZ2Ga5XN567ty5zzk6Ovpurrrqqquuuuqqq/5roQc96EFcddVVV1111VX/NtM0vffOzs53dV1HrZVSCrVWSimUUogISilEBJKICCICSUQEEYEkIgJJSCIikIQkJBERSEISEYEkJCGJiEASEYEkIgJJRAQRQUQQEUQEpRQiglIKEUEphYiglEIphYiglEJEUEohIpBERCAJSQBIwjYAtrGNbWyTmWQmtslMbJOZZCa2yUxsYxvb2CYzsQ2AbWxjG9sA2AbANrYBsI1tAGxjGwDb2MY2ALaxDYBtbANgG9sA2AbANgC2AbANgG3uZxsA2zyQbR7INlf929jmBbHNc7PNA9nmfra5n23uZxsA2wDY5n62AbCNbQBsA2AbANvYBsA2trHNzs4Ox44d40EPehC2+eu//msuXLiAbTKT1hrr9frW3d3d77506dLncNVVV1111VVXXfVfAz3oQQ/iqquuuuqqq676t6u1/tZsNnvtruuotVJKodZKKYVSChFBRBARRASSiAgiAklEBBGBJCQREUhCEhGBJCQhiYhAEpKQREQgCUlEBJKICCKCiEASEUEphYggIiilEBGUUogISimUUogISimUUogIIoJSCpKICCQhCUnczzYAtslMbGObzMQ2mUlmkpnYxjaZiW1sk5nYxjYAtrGNbWwDYBvbANgGwDYAtrENgG1sYxsA29gGwDa2AbCNbWwDYBsA29gGwDYAtrmfbQBscz/b3M82z802V/3b2Ob5sc0D2eaBbHM/2wDY5n62AbDN/WwDYBsA2wDYBsA2ALaxDYBtbANgG9vYBsA2Ozs7HDt2jGPHjmGbv/qrvyIzsU1mslqtnnFwcPBb58+f/x7bv81VV1111VVXXXXVfx70oAc9iKuuuuqqq6666t8uMx987NixpwPUWqm1Ukqh1kophYiglEJEIImIICKICCQREUgiIpBERCAJSUQEkpCEJCICSUhCEhGBJCQREUgiIpBERBARRAQRQUQQEUQEpRQiglIKpRQiglIKpRRKKUQEpRQigoggIogIJCEJSTyQbWxjG9vYJjPJTGyTmdgmM7FNZmKbzMQ2trENgG1sYxsA2wDYBsA2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H0USz48kJPFAkpAEgCQkASAJAEk8kCQk8UCSAJAEgCQAJHE/STyQJB5IEg8kiecmiedmGwDbPFBmcuONN976D//wD7/DVVddddVVV131oqAcP36cq6666qqrrrrqqquuuupfZXe9Xt8KHO/7/qUlcT/bvCCS+PeSxAsiiecmCUkASEISAJJ4IEkASEIS95OEJO4nCQBJPJAkHkgSDySJB5LEv4ZtADKThz3sYc/40z/905/mqquuuuqqq656UVC56qqrrrrqqquuuuqqq/7VJD3jwoULnxMRD97e3n7tWiu2iQgAJCEJAElEBJmJJCKCf4kkbPP8SMI2z48k7meb+0nCNgCSsI0kXhBJANgGQBIPZBtJ3M82krifbSRxP9sASALANgCSeEFsIwnbSEISe3t73HDDDa/NVVddddVVV131oqJy1VVXXXXVVVddddVVV/2bRMStFy9efJ+I+K2NjY0H11qxjW0iAkkASAIgIgDITCQREbwwkrDN8yMJ27wwkgCwDYAkAGwjiReFJGwDIAnbSALANpK4n20kcT/bAEjifrYBkASAbV4QSQBIQhKSiAguXrzIVVddddVVV131IqNy1VVXXXXVVVddddVVV/2b2b71/Pnzr9N13dNtU2vFNgCSAJDE/SQREQBkJpKICP4tJHE/27wgkgCwDYAkAGwjiX+JJABsIwnbSALANgCSALANgCTuZxsASdzPNgCSeGFsIwlJSEISz3jGM7jqqquuuuqqq15kBFddddVVV1111VVXXXXVv4vtW++55573GYaBcRxprdFaIzPJTDKTzCQzsU1mYhvb2CYzyUxsYxvb2MY2trGNbWxjG9vYxja2sc0D2cY2trGNbWzzQLZ5YSQhCUncTxIAkgCQhCQkASAJSUjifpKQhCTuJwlJSOJfIgkASUhCEsvl8kFcddVVV1111VUvKsrx48e56qqrrrrqqquuuuqqq/7d/jozX7vW+mBJvKgk8fxIwjaSkMS/hiQkIQlJSOK5SUISAJIAkASAJB5IEpIAkASAJAAk8UCSeH4k8fxI4l/DNrZ5xjOe8TlcddVVV1111VUvCipXXXXVVVddddVVV1111X+Iw8PD9+667laArut4QSKCzCQiyEwigudmG0nYBkAS97PNv5YkHsg2AJJ4UUnCNpKwjSRsI4n72QZAEg9km/tJ4n62uZ8kHsg2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EpIAkIQkJCEJSUQEkpCEJAAkASCJf4ltAGwDYBuAxz72sa/FVVddddVVV131H43gqquuuuqqq6666qqrrvoPcfbs2WecPn2aRz3qUQBI4j+bbZ4fSTw/kgCQhCQkcT9JPJAk7hcRSEISkpCEJCQhiRfENrZ5UbzKq7zK63DVVVddddVVV/1HI7jqqquuuuqqq6666qqr/kP81m/91nefOXOGV3/1V+cFkcR/F0k8P5KQBIAkJCEJSUhCEpKQhCQk8dwkIYkXxDa2sc0D2QZgY2ODq6666qqrrrrqPwXBVVddddVVV1111VVXXfUf4uzZs8/4h3/4h99+1KMexalTp/jvIol/C0k8kCQkIQlJSEISkpCEJCQhiX+vjY0Nrrrqqquuuuqq/xQEV1111VVXXXXVVVddddV/mB/5kR/5nNOnT/MWb/EW/HvY5j+SJO4niftJ4rlJQhIAkpCEJCQhCUlIQhKSeFHYxjYAtnlui8WC++6771auuuqqq6666qr/aARXXXXVVVddddVVV1111X+Yf/iHf/jtf/iHf/jtV33VV+VVXuVV+M9imxeVJJ6bJCRxP0kASAJAEpKQhCQkIQlJSEISkgCQhCQkIQlJANjGNra5n20AbPNAZ86c4b777ns6V1111VVXXXXVfzSCq6666qqrrrrqqquuuuo/1Nd//de/D8CbvdmbcerUKf6z2eZ+knhhJPHcJAEgCQBJAEhCEpKQhCQkIQlJSEIS/xHOnDnD2bNnn8FVV1111VVXXfUfjeCqq6666qqrrrrqqquu+g9133333fojP/Ijn33q1Ck++qM/mheFbf4zSOJfQxKSkIQkACQhCUlIAkASAJKQxL/ENrZ5INsAnDp1ioODg1v/4R/+4be56qqrrrrqqqv+oxFcddVVV1111VVXXXXVVf/hfvu3f/t7/uEf/uG3T548ybu/+7vzb2WbB7LNi0oSDyQJAEncTxKSkIQk7icJSUhCEpKQhCQkIQlJ3E8Sz49tbHM/29jmgW655RbOnj1763333XcrV1111VVXXXXVfzSCq6666qqrrrrqqquuuuo/3H333Xfr13/9178PwCu90ivxxm/8xvxnk8SLShKSeG6SkMT9JCEJSUhCEpIAkIQkJAEgiX+txWLBzTffzG/91m99D1ddddVVV1111X8Ggquuuuqqq6666qqrrrrqP8V9991362d+5me+NsCbvMmb8MZv/Mb8W9nmX0MSDySJF0YSkpAEgCQkIQlJSEISkpCEJP4ltgGwjW1scz/bALzkS74kAL/1W7/13Vx11VVXXXXVVf8ZCK666qqrrrrqqquuuuqq/zT/8A//8Dtf//Vf/z4Ab/zGb8wbvdEb8R/FNv9aknggSUjigSQhCUlIQhKSkIQkJCEJSUhCEpJ4INsA2OaBbHO/hz3sYZw6dYof+ZEf+Wyuuuqqq6666qr/LFSuuuqqq6666qqrrrrqqv9Uv/Vbv/XdAB/+4R/+XW/0Rm+EJH71V3+V/yySeCBJvCgkIQlJAEhCEpKQhCQkIQlJPD+SeG62eSDbHD9+nIc97GHcd999t/7oj/7o53DVVVddddVVV/1nIbjqqquuuuqqq6666qqr/tP91m/91nd/5md+5uvcd999t77hG74hn/qpn8qJEyd4fmzzn0kSkpDE/STxQJIAkIQkJCEJSUhCEpKQxAtjGwDb2Abgmmuu4WVe5mUA+Pqv//r34aqrrrrqqquu+s9EcNVVV1111VVXXXXVVVf9l/iHf/iH3/6sz/qs17nvvvtuPXnyJB/yIR/CG7zBG/AfQRLPjyTuJ4nnJglJAEhCEpKQhCQkIQlJSEISkgCQBIAkACQBYBsA2zy37e1tHvGIRwDwmZ/5ma/zD//wD7/NVVddddVVV131n4ly/Phxrrrqqquuuuqqq6666qr/GoeHh7t/+qd/+tOHh4e7L//yL//aD3vYwzhx4gR33303q9UKSQBIQhIAkgCQxP0kASAJAElIIiKQhCQiAklIQhIRgSQigoggIogIIoJSCqUUSinUWum6jq7r6Puevu+ZzWb0fU/f9/R9T62VUgoRgSQkYZvMpLXGNE2M48gwDKzXa4ZhYGNjg4c85CEAfP3Xf/37/Omf/ulPc9VVV1111VVX/WejHD9+nKuuuuqqq6666qqrrrrqv87R0dGlf/iHf/gdgBd/8Rd/7RtuuIEXe7EXY7FY8PSnPx0ASUgCQBIAkrifJO4nCUlIIiKQhCQiAklIIiKQREQgiYiglEJEEBGUUiilUGul1kqtlb7v6bqO2WzGbDaj73v6vqfrOrquo5RCRCAJANtkJq01xnFkHEfW6zXDMLCzs8Pp06e57777bv2u7/quj/mt3/qt7+aqq6666qqrrvqvQDl+/DhXXXXVVVddddVVV1111X+9f/iHf/id3/7t3/6ew8PD3Zd/+Zd/7Yc+9KG83Mu9HPP5nKc//elIAkASAJK4nyTuJwlJSCIikEREIAlJSCIikEREEBFEBBFBKYVSCqUUSimUUui6jq7r6Puevu+ZzWbMZjP6vqfve7quo9ZKKYWIICIAsE1m0lpjmiaGYWAcRxaLBYvFAoCP//iPf5l/+Id/+G2uuuqqq6666qr/KpTjx49z1VVXXXXVVVddddVVV/33ODw83P2Hf/iH3/mHf/iH33mxF3ux1z59+vTxhz70obzsy74s8/mcpz/96UjifpIAkMT9JCGJiEASkogIJCGJiEASkogIIoKIICKICCKCUgqlFGqt1Frpuo6u6+j7ntlsxmw2o+97+r6n6zpqrZRSiAgkAWCbzKS1xjAMDMNAKYVSCv/wD//w21//9V//Prfeeutfc9VVV1111VVX/VeiHD9+nKuuuuqqq6666qqrrrrqv9fZs2dv/bM/+7OfufXWW//mwQ9+8EufPn36+EMf+lBe9mVflvl8zu7uLqvVCkkASOJ+kpBERCAJSUQEkpBERCCJiEASEUFEUEohIiilEBHUWiml0HUdXdfRdR193zObzZjNZvR9T9/3dF1HrZWIICKQhCRsMwwD+/v7HBwcYBuAH/mRH/nsr//6r3+fs2fP3spVV1111VVXXfVfjXL8+HGuuuqqq6666qqrrrrqqv9+h4eHu7feeutf/9mf/dnP3HrrrX+zubl5/JZbbnnwQx/6UF71VV+VhzzkIQDcc889SOKBIoKIQBIRgSQkERFIQhIRQUQgiYggIiilEBGUUiilUGul6zpqrfR9T9/3zGYzZrMZfd/T9z21VmqtlFKQhCTGceTixYvcd999DMMAwG/91m9995d+6Ze+zZ/+6Z/+DFddddVVV1111X8X9KAHPYirrrrqqquuuuqqq6666n+ma6655sHv+I7v+Fmv8zqv89480+7uLhcvXuSv//qvuXjxIs94xjOICEopRASlFCKCiKCUQkRQSiEiKKVQSqGUQimFWiu1Vrquo+97ZrMZs9mMxWLBxsYGm5ubbG1tsbW1xebmJpubm8znc2azGQAHBwfs7e0xjiMA9913360AX//1X/8+//AP//DbXHXVVVddddVV/93Qgx70IK666qqrrrrqqquuuuqq/9muueaaB7/Yi73Ya7/O67zOe73Yi73Ya9933323XnPNNQ8G2N3d5dZbb+W2225jb2+PO++8k4iglEJEEBGUUogISimUUiilUEqh1krXdXRdR9d1zGYz5vM5i8WCjY0NNjc32draYmtri42NDbquIyJYrVZM08T97rvvvlt/67d+67t/67d+67vPnj37DK666qqrrrrqqv8p0IMe9CCuuuqqq6666qqrrrrqqv89rrnmmge/2Iu92Gu/2Iu92Gu9zuu8znvzfOzt7XHp0iX29/e56667kMTBwQERwdHREaUUVqsVtVZqrRw7doyu6+j7np2dHba3t9nc3KTvezY2Nqi18tzuu+++W3/rt37ru8+ePfuM3/qt3/purrrqqquuuuqq/4nQgx70IK666qqrrrrqqquuuuqq/73OnDnzoBd/8Rd/nRd7sRd7rWuuuebBL/ZiL/ba/DsdHBywtbXF/e67775bAc6ePXvr3//93//2P/zDP/zOP/zDP/w2V1111VVXXXXV/3ToQQ96EFddddVVV1111VVXXXXV/x3XXHPNg237mmuuecg111zz4Bd7sRd7rfvuu+/WF3/xF39tgDNnzjwY4Jprrnkwz/QP//APv33mzJkHA5w9e/bW++6779b77rvvVoB/+Id/+J1/+Id/+G2uuuqqq6666qr/jdCDHvQgrrrqqquuuuqqq6666qqrrrrqqquuuuqq/5OoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1X8IyhyoTEWoO3OAAAAAElFTkSuQmCC) +![Rendered example of sweep 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEkLUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVS+Sa6655sE805kzZx4McM011zyYZzpz5syDeC7XXHPNg3k+rrnmmgfzAtx333238gLcd999t/JMZ8+efQbPdN99993KM509e/bW++6771auuuqqq6666qqrrrrqqqsAPehBD+Kqq6666qqr/r+55pprHgxw5syZB19zzTUPPnPmzIN4pmuuuebB11xzzYMBzpw58+BrrrnmwbyIbr31Vu63u7vL8ePHeX52d3d5QY4fPw7A7u4uz+348eM80IMf/GBemH/4h3/47TNnzjz47Nmzt9533323AvzDP/zD7wDcd999t549e/bW++6771auuuqqq6666qqrrrrqqv+r0IMe9CCuuuqqq6666v+aa6655sFnzpx58DXXXPNggDNnzjzoxV/8xV/7zJkzD77mmmsezPNx6623sru7C8Du7i7Hjx9nd3eX+z34wQ9md3eX3d1djh8/zvHjx7nf8ePHATh+/Dj/Xru7uxw/fpzd3V2OHz8OwO7uLg+0u7vL7u4u93vGM57B/XZ3d9nd3eX48eMcP34cgGPHjnH8+HEAjh8/zoMf/GDud999990K8A//8A+/DfAP//APv/MP//APv33ffffdylVXXXXVVVddddVVV131vx160IMexFVXXXXVVVf9b3XNNdc8+MyZMw9+sRd7sde65pprHnzNNdc8+MVe7MVemwe49dZb2d3dZXd3F4Bbb72V48ePs7u7y/Hjxzl+/DgAD37wgwF48IMfzHPb3d0FYHd3lwc/+MG8qGxzP9vYBsA2trGNbWxjG9sA2GZzc5MXxa233grA8ePHOX78OPfb3d1ld3eX3d1dnvGMZ7C7u8utt97K/Y4fPw7A8ePHOX78OA960IM4fvw4D37wgwG47777bv2Hf/iH3/6Hf/iH3/mt3/qt7+aqq6666qqrrrrqqquu+t8IPehBD+Kqq6666qqr/re45pprHvzar/3a7/XiL/7ir/1iL/Zir80z7e7ucuutt7K7u8sznvEMAG699VYAjh8/zku91EsB8OAHP5gHP/jB3G93dxeA48eP89wODw8BODo64ujoiOVyiSQigvV6zTiO1Frpug6Avu8ppTCbzej7nlorpRQkYZtpmhjHkfV6zWq1YrVasVqtWK1WrNdrhmFgHEfGcWQcR1prTNNEa42NjQ0yk8xka2sL22xtbWGb7e1tdnZ2sM3Ozg47OzscO3aM+/3N3/wND3rQgzh+/Di7u7s84xnP4NZbb+Vv/uZveEGOHz/Ogx70IB784AfzUi/1Utx33323/tZv/dZ3/+iP/ujncNVVV1111VVXXXXVVVf9b4Ie9KAHcdVVV1111VX/U11zzTUPfrEXe7HXfp3XeZ33erEXe7HXBtjd3eWv//qvAXjGM57BrbfeygMdP36cl3qpl+LBD34wD37wgwHY3d1ld3eXBz/4wQDs7+8DcM8993BwcIAk7r33XiRx3333ERFIIiKICCKCUgoRQa2VWiu1Vvq+p+97ZrMZs9mM+XzObDaj73u6rqOUgiQyk9Ya4ziyXq9Zr9esVitWqxWr1Yr1es16vWYcR8ZxZJompmlimiYyk9YarTUyE9tkJrbJTDIT22QmtslMMpOdnR12dnbY3t7mQQ96EMeOHeMhD3kIf/M3f8NLvdRLceutt/KzP/uz7O7u8sIcP36cBz3oQbzWa70Wd955529/5md+5utw1VVXXXXVVVddddVVV/1vQeWqq6666qqr/ge65pprHvzar/3a7/VO7/ROnw3w27/923zP93wPz3jGM3hukgB40IMexGu91mvx4Ac/mN3dXY4fPw7A3t4e99xzD/v7+/zt3/4td999NxGBJCICSUgiIpCEJJ4f2wDYxjYAtrGNbWxjG9vYxja2eVFJ4rlJ4n6SkIRtHkgStpGEbQAkcenSJS5evEhrjb/6q7+itcb29ja33HILN998M5J4rdd6LX72Z3+WF+bSpUv87d/+LZcuXeIt3/ItX/vFXuzFXvsf/uEffpurrrrqqquuuuqqq6666n8DKlddddVVV131P8w111zz4G/6pm96+h/8wR/89s/8zM/wN3/zN/xLHvSgB/Fe7/Ve/M7v/A4nTpzgcY97HPv7+zzhCU8gIogIJBERSOJ+tpEEgG0k8aKyzf1sA2Ab29jGNraRxANJ4oEk8Z9JEve7ePEi0zRx/vx5HvGIR3DrrbfyL5HEgx70IN7iLd6C48ePc/bs2Vu56qqrrrrqqquuuuqqq/63oHLVVVddddVV/8N80Rd90dP/5m/+ht/4jd94bR5AEi/Igx/8YAAk8c3f/M2UUiilEBH8W9hGEgC2eW62AbCNbQBsYxvbPJBtnpskJCEJAEncTxL/kY4fP8729ja33HILL/MyL8OJEyfY3d3l+77v+3jGM56BJJ6f48eP85Iv+ZK85Eu+JMePH+d+Z86cefB99913K1ddddVVV1111VVXXXXV/wZUrrrqqquuuup/kGuuuebBv/Irv/LZb/RGb/TZD37wg3nGM57Bv+T48eNcunQJgJd8yZckIrjzzju58847uZ9tJHE/20jiRWUbANvYBsA2trGNbWxjG9vYxja2kYRt/iWSkMS/x87ODjs7O9x0000cO3aMl3iJl+B+u7u7/O3f/i1/+7d/y+7uLs/t+PHj3HLLLRw/fpyXfMmX5Pjx4+zu7nL8+HEuXbrEb//2b/NWb/VWXHXVVVddddVVV1111VX/q1C56qqrrrrqqv9B7rvvvlsB/uZv/ob3fM/3ZHd3l7/5m7/hGc94BrfddhvPz6VLl/jbv/1bbrvtNl7yJV+SBz3oQbz6q786e3t77O3tsb+/z5133snBwQEHBwccHh7yQLaRBIBtJHE/20gCwDYviG1sYxvb2MY2ALYBsM3zI4nnJglJPND29jaZyebmJltbW2xvb2ObG2+8kZ2dHXZ2drjfpUuX+Ju/+Rt+93d/l9tuu41nPOMZPNDx48d50IMexLFjx3jQgx7Egx70IAAuXbrE7u4ux48fZ29vjzvuuIM//MM/5K//+q8Zx5HXfM3X5JprrnnwP/zDP3DVVVddddVVV1111VVX/a9A5aqrrrrqqqv+h/nt3/7t73m5l3u5z77hhht4xCMewUu91EvxWq/1Wuzu7vKMZzyDZzzjGVy6dIlLly6xu7vL/XZ3d/nd3/1dAI4fP84tt9zC8ePHOXbsGK//+q/PA+3v7wNwcHDAwcEBkjg4OODw8BBJHB0dIQlJSGK5XBIRlFJYr9fYxja2sY1tbGMbANvYRhIRAYBtIoK+75FERLC5uck4jpRSaK3RWmM+n5OZbGxssLGxwdbWFs/PM57xDC5dusTTnvY0AG677Tae8YxnAHDs2DEAHvSgB3HLLbdwyy238KAHPYgHPehB3O/SpUvs7u7yoAc9CID9/X0ODg645557+PM//3Nuu+02WmtkJgCSuOqqq6666qqrrrrqqqv+10EPetCDuOqqq6666qr/aebz+dMf+tCHPvixj30sj3jEI3j5l395AP7mb/6G48eP86AHPQiAS5cuAfCMZzwDgGc84xkAXLp0id3dXS5dusQDHTt2jOPHj3Ps2DEAHvSgBwFw7NgxAB70oAfx3+UZz3gGAJcuXWJ3dxcASVy6dInd3V2OHz/OM57xDI4dO8bx48c5duwY97vlllsAOH78OMeOHeN+ly5dAuAZz3gGL/mSL8n99vf3OTg44K677mJvb48nPOEJ2CYzsU1mkpm01shMpmlimibe4z3egz/90z/97B/90R/9HK666qqrrrrqqquuuuqq/w2oXHXVVVddddX/QNM03Xru3LkH/8mf/Al/+Zd/yU/8xE9w6tQpHvawh/GQhzyE3d1dXuqlXopjx44B8JIv+ZIAHDt2jAc96EE80KVLl7jf7u4uly5d4n67u7sAPOMZzwDgb//2bwG4dOkS9zt27BiSANjd3QXg+PHjvDDHjh0D4NKlSzzQsWPHuHTpEgDHjh3jgY4dOwbAsWPHOHbsGMePHwfg2LFjPLdLly4BsLu7y4Me9CCe2+HhIbY5d+4cBwcH2OaXfumX2N/fZ39/H9vYxjaZyQsiCQBJXHXVVVddddVVV1111VX/K1G56qqrrrrqqv+BMhPb2OZ+u7u7/PVf/zV/+7d/S0Tw8z//85w4cYKI4JZbbkESt9xyC4973OPY2dlhZ2eHnZ0djh07xv2OHTvG/v4+29vb3O/SpUsAHDt2jP9qly5d4tixY7wgq9WK+y2XS2xzdHTE0dERBwcHAPzDP/wDh4eHHBwccHBwwMHBAbaxjW1sY5vMxDbPTRK2+ZdIAuCaa655MFddddVVV1111VVXXXXV/xZUrrrqqquuuup/oMz8bduvDWAb2wDY5oEuXbpERPD3f//3RASPe9zjkEREIAlJHDt2DElIYmdnh52dHSQhie3tbSSxvb3N2bNnkYQktra2AJCEJCQhicVigSQkASAJSQBIQhIAtpEEgCTul5nYxjbjOCKJ3d1dWmusVitaaxwdHTFNE0dHR0zTxOHhIa01WmtkJplJZpKZ2MY2mYltbPOCSMI2/x4XL17kqquuuuqqq6666qqrrvpfhcpVV1111VVX/Q/UWiMzsc39bPP82EYStpHEc9vb2yMikMTBwQF33303EYEkJBERSCIiiAgigoiglEIphVIKpRRqrdRa6bqOruvouo6+7+m6jr7v6fueruvo+55aK6UUSilIQhK2yUxaa7TWGMeRcRwZx5FhGBjHkXEcGceRcRyZpolpmnhBJGGbfw1J2ObfShLXXHPNg7nqqquuuuqqq6666qqr/rcguOqqq6666qr/gWw/wzYAtrHN/WxzP9s8P7Z5INs8kG1eFLZ5braxjW1sA2Ab2wDYxjYAtgGwzQsjif8JJPHcJAEgiYsXL3LVVVddddVVV1111VVX/a9CcNVVV1111VX/A0m61Ta2eX5sY5t/Dds8P7Z5INsA2AbANgC2sc0D2cY2ALaxjW1sYxsA2wDY5l9LEveTxAsiiReVJP61JAEgiauuuuqqq6666qqrrrrqfxWCq6666qqrrvofSNKttrGNbQBsY5vnxzYAtrmfbV4Y2zw32wDY5oFscz/b2MY2ALaxDYBtbANgG9sA2AbANgC2eWEk8V9JEs9NEs9td3eXM2fOPJirrrrqqquuuuqqq6666n8Lgquuuuqqq676HyozsQ2Abf4j2OYFsc1zs41tAGxjGwDb2MY2ALaxjW0AbANgG9v8W0jiBZHEv4ckXhhJAEjiqquuuuqqq6666qqrrvpfjeCqq6666qqr/geKiFttYxvbANgGwDYPZJsHss39bPPC2AbANs/NNvezzf1scz/b2MY2tgGwjW1s80C2eWEkASCJB5KEJAAkIYn/Lru7u1x11VVXXXXVVVddddVV/6sQXHXVVVddddX/UNM03Wob29gGwDYAtgGwzf1s8/zY5oFs829hG9sA2MY2ALYBsI1t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nG1sYxvb2OZFZZvnZpvnxzb/EtsA2MY2D2QbANvczza2eUFsYxvbANjmP5IkXhSSeGF2d3e55pprHsxVV1111VVXXXXVVVdd9T8NwVVXXXXVVVf9LxcRt2YmD2Qb2zw32wDY5n62eW62eWFs86KwjW1sA2AbANvY5n62AbANgG3+O0niX+uaa655MFddddVVV1111VVXXXXV/zQEV1111VVXXfW/XETcCmAb2/xHsc1zs80D2cY2trmfbQBs80C2eW62sQ2AbQBs8+8liReVJO4niX+JJJ7b7u4uV1111VVXXXXVVVddddX/SARXXXXVVVdd9X/ANE232gbANvezzf1s84LY5vmxjW2eH9s8kG3uZ5v72cY297ONbWzzX0USkpCEJP6tJAEgiftJ4qqrrrrqqquuuuqqq676H4vgqquuuuqqq/4PmKbpVtvYBsA2tgGwjW3uZxsA2zyQbV4Q29zPNi+IbR7INvezjW0eyDYAtgGwzf1s859FEi8qSbwgkrjfmTNnHsxVV1111VVXXXXVVVdd9T8NwVVXXXXVVVf9H5CZ2MY2tvm3ss2/l20AbHM/29zPNraxDYBtAGwDYJv/SJL4l0jiuUniRXXp0iWuuuqqq6666qqrrrrqqv+RCK666qqrrrrq/4DMvNU2z802L4xtnpttnh/b3M8297ONbWxzP9sA2MY2ALaxzQPZBsA2D2SbfytJvCgk8fxI4vmRxANJ4n67u7tcddVVV1111VVXXXXVVf8jEVx11VVXXXXV/wGttVttYxvb2MY2z802ALa5n22em22eH9s8kG0eyDb3s839bHM/29jGNgC2AbCNbR7INs/NNi8qSbyoJPFvIQmAa6655sFcddVVV1111VVXXXXVVf/TEFx11VVXXXXV/w3PsM3zYxvb2OZfwzYvjG2eH9s8kG3uZ5v/SSRx1VVXXXXVVVddddVVV/2fRnDVVVddddVV/zfcahvb2MY2L4htAGxzP9s8P7Z5brb5l9gGwDYAtrENgG1sYxvb2MY297MNgG0AbPOfSRIviCQAJPHCXLp0CYBrrrnmwVx11VVXXXXVVVddddVV/5MQXHXVVVddddX/AZJutY1t7mcb27yobPP82MY2L4htbGMb29zPNgC2uZ9tXhDb2AbANv9eknggSUhCEv8SSbwgkpAEgCQAJHHVVVddddVVV1111VVX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kwSAJCQBIAlJAEhCEpKQhCQkIQlJSEISAJKQhCQAJCEJAEkASALANg9kmweyzfNjm/tJ4l8iif8oz3jGM8hMHvOYx/CIRzzi+B133PHae3t7DMPwO1x11VVXXXXVVVddddVVLyrK8ePHueqqq6666qr/z2az2UdLopRCRCAJSUhCEpKQhCQAJAEgiQeShCQkcT9J3E8SAJIAkASAJCQhCUkASEISkpBERCAJAElIAkASkgCQBIAkJPGiss0D2eZFJYkXRhIviG3uJ4n7SeJ+ly5d4tprr+X666/nsY99LH/913/92pIevFwuf4arrrrqqquuuuqqq6666kVBOX78OFddddVVV131/5Wk3fV6Td/3rx0RRASSiAgkIQlJSEISkgCQxP0kIYnnJon7SQJAEgCSAJAEgCQkIQlJAEQEkpCEJCQhCUkASOJ+kpAEgCQAJPGvZZt/K0n8e0nigdbrNbfeeiuPetSjOHHiBC//8i/PX/7lX770xsbGe+/v7/8MsMtVV1111VVXXXXVVVdd9cJQjh8/zlVXXXXVVVf9f2b7GaWUjy6lIIlSChGBJAAkIQlJSAJAEgCSeCBJSEIS95MEgCTuJwkASUgCQBKSkIQkJCEJSUhCEpKQhCQAJCEJSUhCEgCSAJDEv5dtnpsk/iWS+LeSxP3W6zVPfOITufbaa7n++ut52MMexu233348It56uVxeaq39NVddddVVV1111VVXXXXVC0I5fvw4V1111VVXXfX/maRd269da31wRBARSEISkpCEJCQhCUkASOJ+kpDEc5MEgCTuJwkASQBIQhIAkpCEJCQhCUlIQhKSkIQkJAEgCUlIQhL3k4Qk/j1s86KQxAsiiX+Jbe4niftJQhKr1YpnPOMZ3HPPPbzyK78yL/ZiL8b29vbx8+fPv/U0TazX69/hqquuuuqqq6666qqrrnp+KMePH+eqq6666qqr/r+bpukZfd+/tyQigoggIpCEJCQhCUlIAkASAJJ4IElIQhIAkrifJAAkASAJAEkASEISkpCEJCQhCUlIQhKSkIQkACQhCUkASEISAJJ4bpL4l9jm30ISL4wkXhSSuJ8k1us16/Wa5XLJox/9aB760IfysIc9jPvuu++1Jb33wcHBz9je5aqrrrrqqquuuuqqq656IMrx48e56qqrrrrqqv/vIuLWzHztWuuDJRERSCIiAJCEJCQhCUkASOJ+kpDEc5MEgCQAJHE/SQBIQhIAkpCEJCQhCUlIQhKSkIQkJCEJAElIAkASAJKQxH8HSfx7SUISkpDEer3mGc94BrZ58IMfzIkTJ3ixF3sxjh07dvzee+99a9vH1+v173DVVVddddVVV1111VVX3Y9y/PhxrrrqqquuuuoqmKZJXde9dUQQEUhCEpKQhCQkIQlJAEgCQBIPJAlJSAJAEveTBIAkACQBIAkASUhCEpKQhCQkIQlJSEISkpCEJO4nCUlI4n6SeG6SAJDE/STxwtjmgSTxL5HEv5YkXhBJ3Hbbbfzt3/4ty+WSRz/60TzkIQ/hkY985PH77rvvtSPivQ8ODn7G9i5XXXXVVVddddVVV111FeX48eNcddVVV1111VWX7c7n848GkEREIImIAEASkpCEJCQBIIn7SUISz00SAJIAkMT9JAEgCUkASEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCSeH0kASOLfSxIvjCT+LSQhCUlIQhKSWK/XPOMZz8A2D37wgzlx4gQv9mIvxs7OzvH77rvvrW0fXy6Xz5C0y1VXXXXVVVddddVVV/3/RTl+/DhXXXXVVVdddRVI2l2tVnRd99qSiAgkIQlJSEISkpCEJAAkASCJ5yYJSQBI4n6SAJAEgCQAJAEgCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJPJAkXhhJAEgCQBL/FpJ4YSTxopCEJF4YSdx222387d/+Lcvlkkc/+tE85CEP4ZGPfOTxs2fPvnat9a1tH1+v17/DVVddddVVV1111VVX/f9EOX78OFddddVVV1111RW2n1FK+ehSCpKICCQREQBIQhKSkASAJAAkcT9JSOJ+krifJAAkcT9JAEhCEgCSkIQkJCEJSUhCEpKICCQBIAlJSEISkgCQhCQkASAJSdxPEi+IJB5IEi8qSbwwkvjXkIQkJCEJSUhCEuv1mttuuw2ABz3oQZw4cYIXe7EXY3t7+/jZs2dfe2tr671ba8eHYfgdrrrqqquuuuqqq6666v8XyvHjx7nqqquuuuqqq66QtDtN04O7rnvpiCAikIQkJAEgCUlIQhIAkrifJJ6bJAAkcT9JAEgCQBIAkgCQhCQkIQlJSEISkpAEgCQkIQkASQBIQhL3kwSAJAAkIQkASQBIAkAS95PEv5UkXhhJvCgk8dwkIQlJSEISt912G3/zN3/Dcrnk0Y9+NA95yEN42MMexh133HG81vraW1tb752Zx4dh+B2uuuqqq6666qqrrrrq/wfK8ePHueqqq6666qqrns3239RaPzoikEREIAlJSEISkpCEJAAkASCJB5KEJAAkcT9JAEjifpIAkASAJCQhCUlIQhKSkIQkJAEgCUlIAkAS95OEJAAkIYkHkgSAJAAkASCJ+0nifpJ4UUniXyKJf4kk7icJSdxPEpKQhCTW6zW33XYbtnnQgx7E8ePHeexjH8vGxgZ33nnn8e3t7dfe2tp6b9vH1+v1M4Bdrrrqqquuuuqqq6666v8uyvHjx7nqqquuuuqqq55N0m5r7cFd1710RBARSCIikASAJCQhCQBJAEgCQBKSeCBJAEjifpIAkMT9JCEJAElIQhL3k4QkJCEJSUhCEpKQBIAkJCEJSQBIQhLPTRKSAJDE/STx/EjiRSWJf4kkXhBJ3E8S95OEJB5IEpKQxG233cbf/u3fslqteNSjHsVDHvIQHvrQh7K3t8fBwcHxra2t197e3n7rruteepqmS621W7nqqquuuuqqq6666qr/eyjHjx/nqquuuuqqq656Tpn5N6WUj44IJBERSEISkgCQhCQAJCEJAEk8N0kASOJ+krifJAAkASAJAElIAkASkrifJCQhCQBJSEISkgCQhCQkIYn7SQJAEpKQBIAkACRxP0kASEIS95OEJF4YSbwoJPGCSOJ+kgCQxANJQhL3k4Qk1us1t912G5cuXeLaa6/luuuu42Ve5mV42Zd9WTY3N6m1Hl+v1y994sSJ997a2nrvUspLT9N0KTNv5aqrrrrqqquuuuqqq/5voBw/fpyrrrrqqquuuuo5SdqdpunBXde9dEQgiYggIpCEJAAkASAJSQBI4n6SkMT9JAEgiftJ4n6SAJAEgCQkASAJSUhCEgCSkIQk7icJSUgCQBKSkASAJCQBIIn7SUIS95MEgCQAJAEgiQeShCSemyReFJJ4YSQBIIn7SeJ+krifJCQBIAlJSOK+++7jz/7sz7h06RLXXnstx48f58EPfjAv8zIvw8u+7MuyublJ13XHh2F46ePHj7/39vb2e5dSXnqapkuZeStXXXXVVVddddVVV131vxd60IMexFVXXXXVVVdd9bwy88EbGxtP7/ueWitd19F1HaUUSilEBBFBRBARRASSiAgkIYmIQBKSiAgkIYmIQBIRgSQkERFIQhIRgSQigohAEhFBRBARRAQRQURQSiEiiAgigoiglEJEEBFIIiKQhCQAJGGb+9kmM7GNbTIT22QmtslMMhPbZCa2sU1mYhvb2MY2trGNbWxjG9vYxja2sY1tbANgG9vYxja2sQ2AbWwDYBsA29gGwDYAtrENgG1sA2Ab29jGNgA7Ozu8xEu8BK/xGq/BA+3u7vLXf/3X/OVf/iUXLlzANuv1+taDg4PfPjo6+p1hGG4dx/G3ueqqq6666qqrrrrqqv890IMe9CCuuuqqq6666qrnz/Z3bW1tvXfXdXRdR62VWiulFEopRAQRQUQQEUgiIpBERCAJSUgiIpBERCAJSUQEkpBERCCJiEASEYEkIgJJRAQRQUQQEUQEEUFEEBGUUogIIoKIoJRCRBARSCIikASAJB7INraxTWZiG9tkJpmJbTIT22QmtslMbGObzMQ2trGNbWxjG9vYxja2sY1tAGxjG9vYxja2sY1tAGwDYBvbANgGwDa2AbANgG1sA2Ab2wDYxjYAtrHNzs4Ox44d4yVe4iV4yZd8Se63u7vL7u4uf/3Xf81f/dVfkZnYxjbr9frWYRhuXa1Wtx4dHf3OOI63TtP021x11VVXXXXVVVddddX/TOhBD3oQV1111VVXXXXV85eZD14sFk+fzWbUWum6jlorpRRKKZRSiAgigohAEhGBJCICSUgiIpCEJCICSUQEkpBERCAJSUQEkogIJBERSCIiiAgigoggIogIIoKIICIopRARRASlFCKCiEASEYEkIgIASdzPNraxjW1sk5nYJjOxTWZim8wkM7GNbTIT29jGNpmJbWxjG9vYxjYAtrGNbWxjG9vYxja2sQ2AbWwDYBsA2wDYxjYAtgGwjW0AbANgG9sA2AbANrYBsI1tdnZ2uOWWW7jlllt4yZd8Se63u7vLM57xDG699Vb+6q/+CtvYxja2sQ3AarW6dRzHW4dhuDUzWa1Wv5OZAEzTdKttAGzfynOxjST+v8pMAGzfylVXXXXVVVddddVV/9HQgx70IK666qqrrrrqqhcsM79re3v7vbuuo9ZK13WUUqi1EhGUUogIIgJJRAQRgSQkERFIQhIRgSQkERFIIiKQhCQiAklIIiKQREQgiYggIpBERBARRAQRQSmFiCAiKKUQEUQEEUEphYhAEhGBJCQhCQBJ2AbANraxjW0yE9tkJplJZmKbzMQ2mYltbJOZ2MY2trGNbWxjG9vYxja2sY1tbGMb2wDYxja2sQ2AbQBsYxsA2wDYBsA2tgGwDYBtAGxjGwDbANjGNgC2AbCNbY4dO8bNN9/MS7zES/CgBz2I++3u7vKMZzyDW2+9FYDd3V1s8/SnPx0A29gGwDb3s80LYxtJ/H9lm/tJAmC9Xt/KMw3DcOswDLcC2GYYhltba8/ITKZpunUYhlsl3cpVV1111VVXXXXVVc8PetCDHsRVV1111VVXXfWCZeaDF4vF0/u+p+s6aq3UWqm1UkohIogIIoKIICKICCQREUhCEpKICCQREUhCEhGBJCQREUhCEhGBJCICSUQEEYEkIoKIICKICCKCUgoRQUQQEZRSiAgigoiglIIkIgJJSEISD2QbANvYJjOxTWaSmdgmM8lMbJOZ2MY2mYltbJOZ2MY2trGNbWxjG9sA2MY2trGNbWxjG9sA2AbANrYBsA2AbWwDYBsA2wDYBsA2ALaxDYBtAGwDYBsA29gGwDYAOzs73HLLLbzES7wEt9xyCy/I7u4uALu7u1y6dAnb7O7ucunSJXZ3d7HNrbfeylX/Mts8kG0AbHM/2wDYBkASq9Xq1vV6fes4jreu1+tbp2l6xjiOt47j+NtcddVVV1111VVX/f+FHvSgB3HVVVddddVVV71wmfneW1tb39X3PaUUuq6j1kophVIKEUFEEBFEBBGBJCICSUgiIpCEJCICSUQEkpBERCAJSUQEkpBERCCJiEASEUFEEBFEBBFBRBARRASlFCKCiKCUQkQQEUQEpRQkERFIQhKSeCDb2MY2trFNZpKZ2CYzsU1mkpnYJjOxjW0yE9vYxja2sY1tbGMb29jGNraxjW1sYxsA29gGwDa2AbCNbQBsA2AbANsA2AbANgC2sQ2AbQBsA2AbANsA2AbANgC2AbDNsWPH2NnZ4ZZbbuHYsWMcO3YMgFtuuYUX1e7uLlc9r0uXLrG7u8sznvEMAHZ3d7l06RK7u7sA2OZ+tnkg29gGwDa2AbCNbWwzDMOtBwcHv71er29drVbPWK1Wvx0Rt3LVVVddddVVV131fx960IMexFVXXXXVVVdd9cJl5oP7vv+uxWLx2l3XUUqh6zpKKZRSKKUQEUQEEUFEIImIQBIRgSQkERFIQhIRgSQkERFIQhIRgSQkERFIIiKQREQQEUQEEYEkIoJSChFBRBARlFKICEopRAQRQUQQEUQEEYEkJCGJB7KNbWxjm8zENpmJbTKTzMQ2mUlmYhvbZCa2sY1tbJOZ2MY2tgGwjW1sYxvb2MY2trENgG0AbGMbANvYBsA2ALYBsA2AbWxzP9vYBsA2ALa5n20AbANgGwDbANjmfra5n20AdnZ2ADh27BjHjh0D4JZbbgHg2LFjANxyyy0AXLp0iWPHjnHVv+zSpUsA7O7ucunSJXZ3d7l06RKXLl1id3eX3d1dAGwDYBsA2wDYxjYAtrFNZmKbYRhuHcfx1vV6feulS5e+ZxiG3+aqq6666qqrrrrq/x70oAc9iKuuuuqqq6666l/WWnvtra2t3+r7nlortVZqrZRSKKVQSiEiiAgiAklEBJKICCQhiYhAEhGBJCQREUhCEhGBJCQREUhCEhGBJCKCiEASEUFEEBFEBBFBKYWIICIopRARlFKICCKCiCAiiAgiAklIQhL3sw2AbWyTmdjGNplJZmKbzCQzsU1mYhvbZCa2sU1mYhvb2MY2trGNbWxjGwDb2MY2trENgG0AbGMbANvYBsA2ALYBsI1tAGwDYJv72QbANgC2AbANgG3uZxsA29zPNvezzQPZ5vmxzVUvumPHjnE/2xw7dgyAY8eOAbCzswPA8ePH2d3d5X7Hjh3jGc94BpcuXcI2z3jGM7ANgG1sYxvb2MY2trHNer2+db1e33p0dPQ7R0dHvz0Mw29z1VVXXXXVVVdd9b8fetCDHsRVV1111VVXXfWiiYjf2tjYeO2u6yil0HUdpRRKKZRSiAgigoggIogIJBERSEISEYEkIgJJSCIikIQkIgJJSCIikIQkIgJJRAQRgSQigoggIogIIoKIICIopRARRASlFCKCUgoRQUQQEUQEEYEkJAEgCQDbANjGNpmJbWyTmWQmmYltMhPbZCa2yUxsY5vMxDa2sY1tbGMb29jGNraxDYBtbGMbANvYBsA2tgGwjW0AbANgGwDbANgGwDa2uZ9tAGwDYBsA29zPNgC2eSDb3M82D2SbF5Vtnpsk/j+yzb/ENs/NNg+0s7MDwM7ODseOHeNBD3oQu7u7ABw7dgyAW2+9ld3dXQBuvfVWbGMb29gmM7HNer2+db1e33p4ePjbR0dHvzOO429z1VVXXXXVVVdd9b8PetCDHsRVV1111VVXXfWiycwHb2xsPL3ve2qt1FqptVJKoZRCKYWIICKICCICSUQEkpBERCCJiEASEYEkJBERSEISEYEkJBERSEISEYEkIoKIQBIRQUQQEUQEpRQigoiglEJEUEohIiilEBFEBBFBRBARSEISAJIAsA2AbWyTmdgmM7FNZpKZ2CYzsU1mYpvMxDa2yUxsYxvb2MY2trGNbWxjG9vYBsA2ALaxjW0AbANgG9sA2AbANrYBsA2AbQBsA2AbANsA2OZ+tgGwzf1scz/b3M82z802LwrbvCCS+P/GNv8S2zw/trmfbe5nm/vZ5tixY9jmlltu4ZZbbuHYsWM86EEPYnd3F4BLly6xu7vLrbfeim0uXrzI0572NGyTmazX61sPDg5++9KlS98zjuNvc9VVV1111VVXXfW/A3rQgx7EVVddddVVV131osvMz9ra2vrsvu8ppVBrpdZKKYVSChFBKYWIQBIRQUQgCUlEBJKICCQREUhCEhGBJCQREUhCEhGBJCQREUgiIpBERBARRAQRQUQQEUQEpRQigoiglEIphYggIiilEBFEBBFBRCAJSQBIAsA2ALaxTWZim8zENpmJbTKTzMQ2mUlmYhvb2MY2mYltbGMb29jGNraxjW0AbGMb2wDYxjYAtgGwjW0AbGMbANsA2AbANrYBsA2AbQBscz/bANjmfra5n23uZ5vnZpsXxDb/10jiudnmXyKJ+9nmRWWb58c297PNA9nmfrYBsA2AbXZ2dgC45ZZbuOWWW3jJl3xJ7re7uwvAX//1X/Nbv/Vb2CYzsc1qtbr14ODgdw4PD397uVx+N1ddddVVV1111VX/c6EHPehBXHXVVVddddVVL7rMfPB8Pv+t2Wz24FortVZqrZRSKKVQSiEiiAgigoggIpCEJCICSUQEkogIJBERSEISEYEkJCGJiEASkogIJBERSCIiiAgkERFEBBFBKYWIICIopRARlFKICEopRASlFCKCiCAikEREIAkASdzPNraxTWZiG9tkJpmJbTKTzMQ2mYltMhPb2MY2mYltbGMbANtkJgC2sY1tbANgG9sA2MY2ALaxDYBtbANgGwDb2AbANgC2AbANgG0AbHM/2wDY5n62uZ9tHsg2L4htrvr3sc0LYpsHss39bHM/29zPNgC2AbANgG1sc+zYMW655RZe4iVeggc96EEAXLp0iVtvvZW//uu/5mlPexq2yUwyk2EYbl2tVrdeunTpe46Ojr6bq6666qqrrrrqqv9Z0IMe9CCuuuqqq6666qp/nWma3nt7e/u7+r6n1kophVorpRRKKZRSiAgigohAEhFBRCCJiEASEYEkJBERSEISEYEkJCGJiEASkogIJBERSCIikEREEBFEBBFBRBARRASlFCKCUgoRQSmFUgoRQSmFiCAiiAgkERFIQhIPZBvb2MY2mYltMpPMxDaZSWZim8zENrbJTGxjG9vYxja2sY1tbGMb2wDYxja2AbCNbQBsYxsA29gGwDa2AbANgG1sA2AbANsA2AbANgC2uZ9t7meb+9nmfrZ5fmxz1b+fbZ4f2zw32zyQbe5nm/vZBsA2ALYBsA2AbWwDYJudnR1uueUWHvSgB3Hs2DGOHTvG3/zN3/DXf/3XXLhwAdtkJpnJer1+xsHBwW9dunTpe8Zx/G2uuuqqq6666qqr/vuhBz3oQVx11VVXXXXVVf96kn5rY2Pjtbuuo9ZKKYVaK6UUSilEBKUUJBERRASSiAgiAklEBJKQREQgCUlEBJKQREQgCUlIIiKQhCQigohAEhFBRCCJiCAiiAhKKUQEEUEphVIKEUEphYiglEJEUEohIogIJBERSEISD2QbgMzENrbJTDIT22QmmYltMhPbZCa2sU1mYhvb2MY2trGNbQBsYxvbANjGNgC2sY1tAGxjGwDb2AbANgC2sQ2AbQBsYxsA2wDYBsA297MNgG3uZ5sHss1zs81V/3a2eWFs89xs80C2uZ9t7mcbANvczzYAtgGwjW0AbANgG9sA7Ozs8BIv8RI86EEP4tixY/zO7/wOf/3Xf01mYpvMJDNZrVa3Xrx48bv39/e/x/atXHXVVVddddVVV/33QA960IO46qqrrrrqqqv+9TLzwRsbG0/v+55aK6UUaq2UUiilUEohIogIIoKIQBIRgSQigohAEpKICCQREUhCEpKICCQhCUlEBJKQREQgiYhAEhFBRBARRAQRQUQQEZRSiAhKKUQEpRQiglIKpRQigoiglEJEIImIQBKSeCDbANgmM7FNZmKbzMQ2mUlmYpvMxDaZiW1sYxvb2MY2trGNbWwDYBvbANjGNgC2sQ2AbWwDYBvb2AbANrYBsA2AbWwDYBsA2wDYBsA2ALa5n20AbPNAtnlutrnq38Y2L4xtnpttHsg297PN/WxzP9sA2AbANgC2AbANgG0AbGMbANvYxjY7Ozs86EEP4tixYxw7doy//uu/5ulPfzq2yUwyE9ssl8tbz5079zlHR0ffzVVXXXXVVVddddV/LfSgBz2Iq6666qqrrrrq32aapvfe2dn5rq7rqLVSSqHWSimFUgoRQSmFiEASEUFEIImIICKQREQgCUlEBJKQhCQiAklIIiKQhCQkERFIIiKQREQgiYggIogIIoKIoJRCRFBKISIopRARlFIopRARlFKICEopRASSiAgkIQkASdgGwDa2sY1tMpPMxDaZiW0yk8zENpmJbWxjG9tkJrYBsI1tbGMbANsA2MY2ALaxDYBtbANgG9vYBsA2tgGwjW0AbGMbANsA2AbANgC2AbDN/WwDYJsHss0D2eaqfxvbvCC2eW62eSDb3M8297PN/WwDYBsA29zPNgC2sQ2AbQBsA2Ab2wDYxja22dnZ4dixYzzoQQ/CNn/913/NhQsXsE1m0lpjvV7furu7+92XLl36HK666qqrrrrqqqv+a6AHPehBXHXVVVddddVV/3a11t+azWav3XUdtVZKKdRaKaVQSiEiiAgigohAEhFBRCCJiCAikIQkIgJJSCIikIQkJBERSEISkogIJCGJiEASEUFEEBFIIiIopRARRASlFCKCUgoRQSmFUgoRQSmFUgoRQURQSkESEYEkJCGJ+9kGwDaZiW1sk5nYJjPJTDIT29gmM7GNbTIT29gGwDa2sY1tAGxjGwDbANgGwDa2AbCNbWwDYBvbANjGNgC2sY1tAGwDYBvbANgGwDb3sw2Abe5nm/vZ5rnZ5qp/G9s8P7Z5INs8kG3uZxsA29zPNgC2uZ9tAGwDYBsA2wDYBsA2tgGwjW0AbGMb2wDYZmdnh2PHjnHs2DFs81d/9VdkJrbJTFar1TMODg5+6/z5899j+7e56qqrrrrqqquu+s+DHvSgB3HVVVddddVVV/3bZeaDjx079nSAWiu1Vkop1FoppRARlFKICCQREUQEEYEkIgJJRASSiAgkIYmIQBKSkEREIAlJSCIikIQkIgJJRASSiAgigoggIogIIoKIoJRCRFBKoZRCRFBKoZRCKYWIoJRCRBARRAQRgSQkIYkHso1tbGMb22QmmYltMhPbZCa2yUxsk5nYxja2AbCNbWwDYBsA2wDYxjYAtgGwjW0AbANgG9vYBsA2tgGwjW1sA2Ab2wDYBsA2tgGwzf1sA2Cb+9nmgWzz3GzzH00S/xfY5oWxzQPZ5oFscz/bANjmfra5n20AbANgGwDbANgGwDYAtgGwDYBtAGxjGwDb2MY2ALaxjW1ss7Ozw4Me9CAuXryIbZ7+9KeTmWQmkjh79ux3X7p06XvGcfxtrrrqqquuuuqqq/7joQc96EFcddVVV1111VX/PtM0vff29vZ39X1PKYVSCrVWSimUUiilEBFEBBFBRCCJiCAikEREIImIQBIRgSQkIYmIQBKSkIQkIgJJSCIikEREIImIQBIRQUQQEUQEEUEphYiglEJEUEqhlEIphVIKEUEphVIKEUFEEBFEBBEBgCQkAWAbANvYxjaZiW0yE9tkJrbJTGyTmdjGNraxjW1sYxvbANjmfraxzf1sA2Ab2wDYBsA2trENgG1sA2Ab29gGwDa2sQ2AbQBsYxsA2wDY5n62AbDNA9nmgWxz1XOShG1eGNs8kG0eyDb3sw2Abe5nGwDbANgGwDYAtgGwDYBtAGwDYBsA2wDYBsA2tgGwDYBtbANgG9vYxja2sY1tjh07xi233ALAX/7lX5KZZCaZyXK5fMa5c+c+e7lcfjdXXXXVVVddddVV/3HQgx70IK666qqrrrrqqv8Q37W5ufneXddRSqGUQq2VUgqlFCKCiCAiiAgigoggIpBERCCJiEASEYEkJCGJiEASkpCEJCICSUhCEhGBJCICSUQEEYEkIoKIICIopRARlFKICEoplFKICEoplFIopVBKISIopRARRAQRgSQiAkk8N9vYxjaZiW0yE9tkJrbJTGyTmdjGNraxjW1sA2AbANsA2OZ+tgGwDYBt7mcb29gGwDYAtrGNbQBsYxvb2AbANrYBsI1tAGwDYBsA2wDY5n62uZ9tnptt/j0k8X+RbZ4f2zyQbe5nm/vZBsA2ALYBsA2AbQBsA2AbANsA2AbANgC2sQ2AbQBsA2AbANvYBsA2ALaxDYBtbGMb2wDYxja22dnZ4ZZbbuHYsWM8/elP52lPexqZSWuN9Xp967333vs56/X6u7nqqquuuuqqq67690MPetCDuOqqq6666qqr/v0y88Gz2ey35vP5g2utlFIopVBrpZRCKYWIICKICCKCiCAikEREIImIQBIRgSQkIYmIQBKSkIQkIgJJSEISEYEkIgJJRASSiAgigoggIogIIoKIoJRCRFBKoZRCKYVSCqUUIoJSCqUUSilEBBFBRBARSEISkrifbQBsYxvbZCa2yUxsk5lkJraxjW0yE9vYBsA2trmfbR7INgC2eSDbANjGNgC2AbCNbWwDYBvb2MY2ALaxjW0AbANgG9sA2AbANgC2AbDN/WxzP9tc9ZwkYZvnxzYPZJv72QbANvezDYBtAGxjGwDbANgGwDa2AbCNbQBsA2AbANvYBsA2ALYBsI1tAGwDYBvbANjGNgC2sY1tAGxjG9vY5tixY9x888086EEPYnd3l7/4i7/gwoULZCbL5fLWu++++32mafptrrrqqquuuuqqq/7t0IMe9CCuuuqqq6666qr/GNM0vffW1tZ39X1PrZVSCqUUaq2UUogIIoKIICKICCKCiCAikEREIImIQBKSkEREIAlJSEISEYEkJCGJiEASkogIJBERSCIiiAgigoggIogISilEBKUUIoJSCqUUSimUUiilUEqhlEJEUEohIogIIgJJSEISz802trGNbTKTzMQ2mYltbJOZ2MY2trGNbQBsA2CbF8Q2z802ALYBsI1tAGxjGwDb2MY2ALaxjW1sA2Ab29gGwDYAtgGwDYBtAGxzP9s8kG3+NSTxf51tnptt7mcbANsA2OZ+tgGwjW0AbGMbANvYBsA2tgGwjW1sA2AbANvYBsA2tgGwDYBtAGxjGwDbANjGNgC2sQ2AbWxjGwDb2MY2trFNZrKzs8NLvdRL8eAHP5i//Mu/5C/+4i/ITC5cuPDdu7u73zNN029z1VVXXXXVVVdd9a+HHvSgB3HVVVddddVVV/3Hsf1Zm5ubn911HbVWSimUUiilUEqhlEJEEBFEBBFBRCCJiCAikIQkIgJJSCIikIQkJCGJiEASkpCEJCICSUgiIpBERCCJiCAiiAgigoggIiilEBGUUogISimUUiilUEqhlEIphVIKpRQiglIKEUFEIImIAEASD2Qb29jGNpmJbWyTmdgmM7FNZgJgG9vYBsA2/xq2eSDbANgGwDYAtrGNbQBsYxvb2AbANraxjW0AbANgG9sA2AbANgC2AbDNC2Kb50cS/9/Y5oFscz/b2AbANgC2AbCNbQBsYxvb2AbANrYBsI1tbGMb2wDYxjYAtrGNbQBsA2Ab2wDYxjYAtgGwjW0AbGMbANvYBsA2trENgG1sYxvbZCa2OXbsGC/5ki/JS7/0S/P0pz+dv/iLv+ApT3kKFy5c+O6LFy9+TmbeylVXXXXVVVddddWLDj3oQQ/iqquuuuqqq676j5OZD661ftfGxsZrd11HKYWIoNZKKYVSChFBRBARRAQRQUQQEUgiIpBERCAJSUQEkpCEJCICSUhCEpKQREQgCUlEBJKQREQQEUgiIogIIoKIICIopRARlFIopVBKoZRCKYVSCqUUSilEBLVWIoKIoJRCRBARSEISkngg29jGNraxjW0yE9tkJraxjW1sYxvb2AbANs+PJF4QSQDY5n62AbANgG1sA2Ab29jGNgC2sQ2AbWwDYBvb2AbANrYBsA2AbWzz/NjmhZHE/ye2uZ9t7mcb2wDYxjYAtrENgG1sYxvb2MY2trGNbQBsYxvb2MY2trGNbQBsYxvbANjGNgC2sQ2AbWwDYBvbANgGwDa2sQ2AbWwDYBvb2MY2ALaxTWZiG9scO3aM13zN1+SlX/ql2d3d5S/+4i/4hV/4hVsvXrz4PXt7e5/NVVddddVVV1111YsGPehBD+Kqq6666qqrrvqPlZkPns1mvzWfzx9ca6WUQimFUgqlFEopRAQRQSmFiCAiiAgkERFIIiKQhCQiAklIQhIRgSQkIQlJSEISEYEkJBERSCIikEREIImIICKICCKCiKCUQkRQSqGUQimFUgqlFEoplFIopVBKoZRCKYWIoJRCRBARSCIikMQD2QbANraxjW0yE9tkJraxjW1sYxvb2OaFkQSAJB5IEi+IbQBscz/b2MY2ALaxjW0AbGMbANvYxjYAtrGNbQBsYxsA2zw327wwkvivIon/aLZ5QSRxP9sA2AbANvezDYBtbGMb29gGwDa2sY1tbGMb22QmtrGNbWxjG9vYxja2sY1tbGMb29jGNgC2sY1tAGxjG9sA2MY2ALYBsI1tAGxjG9sA2MY2ALaxjW1sYxvb2MY2trHNzs4Ob/VWb8WDH/xgLl68yF/+5V/y8z//87eePXv2u5fL5edw1VVXXXXVVVdd9cKhBz3oQVx11VVXXXXVVf/xMvO1NzY2fqvve2qtlFKICGqtlFKICEopRAQRQUQQEUQEEYEkIgJJSCIikIQkJBERSEISkpCEJCQREUhCEpKICCQREUgiIpBERBARRAQRQURQSiEiKKVQSqGUQimFUgqlFEoplFIopVBKoZRCKYWIoJRCRCCJiEASkngg2wDYxjaZiW1sk5nYxja2sY1tbHM/29xPEgCSAJDE/SQhCQBJPJAkAGxzP9sA2AbANgC2sY1tAGwDYBvb2MY2ALaxjW1sA2Ab2zw327wwkviPIon/TraRxPNjGwDbANgGwDYAtrGNbWxjG9vYxja2sY1tMhPbZCa2sY1tMhPb2MY2mYltbGMb29jGNraxjW1sYxvb2MY2ALaxjW0AbGMbANvYBsA2trENgG1sA2Ab2wDYxja2sY1tbGMb29gmM3mpl3opXuqlXooHP/jBPP3pT+dHf/RHeepTn/rdFy9e/JzMvJWrrrrqqquuuuqq5w896EEP4qqrrrrqqquu+s/RWvus7e3tz+66jlIKpRRKKZRSKKVQSiEiKKUQEUQEEYEkIoKIQBKSiAgkIQlJRASSkIQkJCEJSUQEkpCEJCQREUgiIpBERCCJiCAiiAgigoiglEJEUEqhlEIphVIKpRRKKZRSKKVQSqHWSimFiKCUQimFiCAikIQkJCGJB7KNbWxjG9vYxjaZiW1sYxvbANjm+ZEEgCQkIQkASUhCEgCSkMRzkwSAbQBscz/bANjGNgC2sY1tAGxjG9vYBsA2trGNbZ6bbV4YSfxrSOJ/I9sA2AbANrYBsI1tbGMb29jGNpmJbWxjm8wkM7FNZmKbzMQ2mYltMhPbZCa2yUxsYxvbZCa2sY1tbGMb29jGNrYBsI1tbGMbANvYBsA2tgGwjW1sA2Ab2wDYxja2sQ2AbWxjG9vYJjOxjW1e8iVfkpd+6Zfm+PHj/NiP/RiPe9zjbr148eL37O/vfzZXXXXVVVddddVVzws96EEP4qqrrrrqqquu+s8j6bc2NjZeu+s6SimUUogIaq2UUogISilEBBFBRBARRASSiAgkERFIQhKSiAgkIQlJSEISkogIJCEJSUgiIpCEJCICSUQEkogIIoKIICKICEopRASlFCKCUgqlFGqtlFIopVBKoZRCrZVSCqUUIoJSCqUUIgJJRASSkMRzs41tADIT29jGNpmJbWwDYBsA29xPEgCSAJCEJCQhCUlIQhKSkIQkACQBIIkXxja2uZ9tAGxjGwDb2MY2trGNbWxjmweyzYtKEi8qSfxvIQnb2AbANrYBsI1tAGyTmdjGNpmJbWyTmdgmM8lMMpPMJDOxTWaSmWQmtslMMpPMxDaZiW0yE9tkJraxjW1sk5nYxja2sY1tAGxjG9vYxjYAtrENgG1sYxsA29gGwDa2sQ2AbWxjG9sAZCa2sY1tbGObzOSlXuqleKmXeime/vSn86u/+qssl8tb77333vcZx/G3ueqqq6666qqrrno29KAHPYirrrrqqquuuuo/T2Y+uO/735rP5w+utVJrJSIopVBKoZRCKYWIoJRCRBARSCIiiAgkIYmIQBKSkEREIAlJSEISkpBERCAJSUhCEpKICCQREUgiIpBERBARRAQRQUQQEZRSKKUQEZRSKKVQSqHWSimFUgqlFGqtlFIopVBKoZRCRBARRAQRQUQgiefHNgC2yUxsYxvb2MY2tgGwzXOTBIAkJCGJiEASkpCEJCICSUgCQBKSkASAJO4nCQDbPDfb2AbANraxjW1sYxvb2MY2z802L4wkXhBJ/HtI4r+KbR5IEg9kG9vYxjYAtrENQGZim8zENpmJbTIT22QmmUlmkplkJq01MpPMJDPJTDKTzCQzyUwyk8zENplJZmKbzMQ2mYltbGMb29jGNpmJbQBsYxvb2MY2tgGwjW1sA2Ab2wDYxja2AbCNbWwDYBvb2MY2trGNbWyTmdhmZ2eHl3qpl+JlXuZl+NZv/VYuXLjAvffe+9l7e3ufw1VXXXXVVVddddUV6EEPehBXXXXVVVddddV/LtsPXiwWT++6jlorpRRKKUQEtVZKKUQEpRQigoggIogIJBERSCIikIQkJBERSEISkpCEJCQREUhCEpKQhCQkERFIIiKQREQgiYggIogIIoKIICIopRARlFIopVBKoZRCKYVaK6UUSimUUqi1UkqhlEIphVIKEUFEEBFEBJKQhCQeyDYAtrGNbWxjG9vYxja2eUEkIQlJSEISEYEkIgJJRASSkIQkIgJJAEhCEpJ4IEk8kG3uZxvb2MY2ALaxTWZim+dmmxdGEg8kiX8NSfxPJgnb2MY2tgGwjW1sYxvb2CYzyUxsk5lkJplJZpKZZCatNTKTzKS1RmbSWiMzyUwyk9YamUlmkplkJplJZpKZ2CYzsU1mYpvMxDa2sY1tbJOZ2AbANraxjW1sYxsA29jGNgC2sY1tAGxjG9sA2MY2trGNbWwDkJnYxja2sU1msrOzw2u/9mtz4cIFfu3Xfo3lcnnrXXfd9TqZeStXXXXVVVddddX/d+hBD3oQV1111VVXXXXVf75pmt57a2vru/q+p9ZKKYWIoJRCKYVSCqUUIoKIICKICCICSUQEkogIJCGJiEASkpCEJCQhCUlEBJKQhCQkIQlJRASSkEREIImIICKQREQQEZRSiAgiglIKpRRKKZRSKKVQSqGUQq2VUgqlFGqtlFIopVBKoZRCKYWIICKICCQREQBIQhIAtgGwjW0AMhPb2MY2ALaxzXOThCQkIQlJSCIikEREIImIICKQREQgCUlIQhIRAYAkACQhiefHNgC2sY1tbGMb29gGwDbPzTbPTRL3k8QLIol/DUn8d7ANgCSem20yEwDb2MY2ALaxTWaSmWQmtslMMpPMJDPJTFprtNbITFprtNbITFprZCatNVprZCatNTKTzKS1RmaSmWQmmYltMpPMxDaZiW1sk5nYxja2yUxsYxvbANjGNraxjW1sA2Ab29gGwDa2sQ2AbWxjGwDb2MY2trGNbWxjG9tkJrbJTF7qpV6KzOTP//zPWa1Wz7h48eJ37e/vfw5XXXXVVVddddX/Z1Suuuqqq6666qr/ErXW7z44OHjQ9vb2Z/N8SEISAJKwjW0yk4jANgC2uZ9tXpjMJCJ4fjKTiAAgM4kIMhMASTyQbR7INraxjW1sA2Cbf4kkbCMJAElIQhKSeCDbANjGNraxDYBtbGMbANtI4n6SkIQkJBERSCIikEREEBFEBJKICCQREUgiIpCEJAAkIQlJPJAkbANgG9sA2MY2trHNA9nmfrZ5IEncTxLPTRIvKkn8TyUJ29jGNraxDYBtbGMb22QmmYltMpPMJDPJTDKT1hqZSWuN1hqtNVprtNbITFprtNZordFao5RCa43MJCLITDKT1hqZSWYiiYggM5GEbTITSWQmtrGNJDIT29jGNs9NEraxzf0kYZv/CBGBbQD+9m//lp2dHV7hFV6Bpz71qQ/q+/6zNzY2Xvu+++57H9u3ctVVV1111VVX/X9E5aqrrrrqqquu+i9Ta/2co6MjNjc3P1sSDySJ+0nifhGBbTKTiCAziQgAMpOI4IXJTCKC5ycziQgAMpOIIDOJCDKT52Yb25RSALCNbWwDYBvb2MY2trHN8yMJ20hCEpKQhCQAJAFgm/vZxja2AbCNbWwDYJv7SQJAEpKQhCQkIQlJSEISkpBERBARSCIikEREIAlJSEISkrifJABsA2AbANvYxja2eW62eSDbSOJ+knggSbwwkvjXkMR/Nts8N0k8UGZiG9sA2MY2ALaxTWaSmdgmM8lMMpPMJDNprdFaIzNprdFao7VGa43WGq01Wmu01mit0VojImitERG01shMJJGZZCaZSWYiCUnYRhKZiSQyE9vYRhKZiW1sYxvb2MY2tnkgSdjmgSRhm/tJwjYPJAnb2MY2trGNbTKTiMA2e3t7/O3f/i2ZySu+4ivyZ3/2Z6/d9/1vnT179rtXq9XncNVVV1111VVX/X9D5aqrrrrqqquu+i9l+3uWyyWSPhtAEgCtNQAk8fxEBLYBsM39bPMvyUwigucnM5FERJCZSAJAEg9kG9vczzalFB7INrYBsA2AbQBs84JIQhIAkpCEJAAkAWCb+9nGNgC2sY1tAGzz3CQhCUlIQhIPJAlJ3E8SkpCEJCQREUhCEpKQBIAk7meb+9nGNraxzQtim+cmiftJ4rlJ4kUlif/JbJOZANgGwDa2AchMbJOZ2CYzyUwyk8wkMyml0FqjtUZEEBFEBBFBRBARRAQRQUQQEUQEEUFrjYigtUZE0FojM8lMMpPMJDPJTCQhCdtIIjOxjW0AbGMb29jGNpmJJGxjG9vY5oEkYZt/j4jANrYBsA3AM57xDGqtLBaLB994442fffbsWe3t7X02V1111VVXXXXV/yeU48ePc9VVV1111VVX/deRtJuZz8jMly6lPFgSkpCEJAAkIQkASUjifpIAkMT9JPGikMS/RBIAkrifbV4Q2zw329jmfrZ5bpIAkIQkACQhCUlIQhKSiAgigoggIogISilEBBFBRFBKISIopRARRASSiAgiAklIQhKSkIQkJAEgCUlIAkASkpCEJCQhCUlIQhKSkIQkJCEJSQBIQhKSiAgigoggIogIJCGJiEASkpBERCAJSUQEkpCEJCKCiEASkpCEJCQhCUlEBBFBRBARSEISkpCEJCQhCUlIQhIRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFIQhKSkIQkJCEJSUQEEYEkJCEJSUQEkogIJCEJSUgiIpCEJCICSUhCEpKQhCQkERFIQhKSkIQkJCEJAElEBJKQhCQkIQlJAEhCEpKQhCQkASAJSQBIQhIAkpDE/STxwkjiuUniuUniRSUJSQCs12skIQlJLBaL197Y2Hjv/f39nwF2ueqqq6666qqr/j+gHD9+nKuuuuqqq6666r+WpN3W2u9IeuuIOC6J5yYJAEkASEISAJIAkMT9JPGikoRtJPH8SOIFsc3zY5vnZpv72QbANs9NEgCSkIQkJBERSEISEUFEEBFEBBFBRFBKISIopRARRASlFCKCUgoRQUQQEUQEkpCEJCQhCUlIAkASAJK4nyQAJPHCSMI2LwpJ3E8SkpAEgCQkcT9JSOL5kYQkJCGJf4kkJCEJSUhCEv+RJCEJSUgCQBKSkMT9JGEbAEkASAJAEs+PJAAk8dwkASCJF0YSkrifJCQBIAkASQBIQhKSkIQkJHE/SQBIAkASkgCQhCQkIQlJSEISkpDE8yOJ5yaJ5yYJSUhCEpKQhCQAJCGJ+0kiIiilHN/Y2Hjrg4ODn7G9y1VXXXXVVVdd9X8d5fjx41x11VVXXXXVVf/1JO1O0/QzwFtHxHFJSEISkgCQhCQeSBIAkpDEA0ni30oSz00SD2Sb58c2ALZ5brYBsA2Abf4lkrifJCQhiYggIogIIoKIICKICCKCUgoRQSmFiCAiKKUQEUQEEYEkIgJJRASSkIQkJPFAkgCwDYBtnpttAGwDYBvb2MY2L4htXhDbPJBtbPP82MY2trHNv8Q2trGNbWxjG9vYxjb/WraxjW1sYxvb2MY2ALaxjW1sYxvb2MY2trmfbQBsYxvb2OZ+tgGwjW1scz/bPDdJvCCSeCBJAEhCEgCSkIQkJCEJSUgCQBIAkrifJCQhiX8NSTw/knhuknhBJCEJAEkASEISkqi1Hl8sFm89TdPxcRx/h6uuuuqqq6666v8yKlddddVVV1111X+biLh1GIbX6bru6a01JCEJSbwwEYFtMpOI4H62+bfKTCQhiYgAIDORRESQmUjifraxjW1sY5tSCraxjW1sYxvbZCa2yUxsk5lkJrVWbJOZ2MY2timlcD9JSOKBJCEJSTw/tgGwDYBtAGzzospMJBERZCaSsI0kJCEJAEk8P7b5l9jmuUnigSTxgkji30oS/xls88JIAsA2trHN/WwDYBsA29jGNraxjW0yE9vY5oEkcT9JSEISkpBERGAb29zPNveTBIAk7icJSUjiuUkiMwGwzf1sY5vMJCKwjW1sk5n8e0nCNv+SiMA2ALa5nyQWi8WDr7vuus8+e/as9vf3P5urrrrqqquuuur/KipXXXXVVVddddV/K0m3Hh4ePmRra+vp0zQhiftJQhIvSESQmUQEAJlJRPDvlZlIQhIRQWYiCUkA2CYiALCNbWxjm1IKtrFNZpKZZCaZiW0yE9tkJraxTWZSa8U2mYltbGObUgoPFBFIAkASkpAEgCSeH9sA2AbANvezzQsiCQDb2EYSkpAEgCQAJPH82OZfYpsHksRzk8S/RBL/G9nGNgC2uZ9tAGwDYBvb2CYzsY1tbJOZZCaZSWZiG9vY5n6SkIQkJBER2CYisA2AbQBscz9JPDdJSEISmcn9bHM/22QmEYFtMpP7RQS2sY1tbGMb29jmP0NEkJlEBM/tmmuu+azFYvFa99133+tw1VVXXXXVVVf9X0Tlqquuuuqqq676byfp1oODg4fM5/On80ySeCBJPD8RQWYSEQBkJhHBf5TMRBKSiAgyE0kA2CYiALCNbWxTSsE2pRRsYxvb2CYzyUxqrWQmmUmtlcwkM6m1YpvMxDa2sY1tSinYBiAisA2AJCQhCUkASOK52eZ+tgGwDYBtXhS2uZ9tACTxQLa5n20eSBIAtnlhJPGCSOI/kiT+NWzzH8U2tgGwzf1sA2AbANvYxja2sY1tMhPbZCa2sY1tnptt7icJAElIQhKSiAgAbPNAtvmXSCIzuZ9tAGyTmUQEtrFNZvLvZRtJvCCSsI1tMhOAiMA2AJKQhCQe+tCHcu7cudeutT79nnvueZ3MvJWrrrrqqquuuur/Esrx48e56qqrrrrqqqv++0nanabpeyR9dEQgCUlI4n6SuJ8k7icJAEncTxL/WSTxQLZ5fmxjGwDb2MY2trENgG1sYxvb2MY2trENgG1scz/b3E8SkgCQhCQkIYmIQBKSiAgkERFEBBFBRFBKISIopRARRAQRgSQigohAEpKQhCQkIQlJSALANg9kmxfGNv9T2MY2trGNbWxjG9vYxja2sc2/lm1s89xsYxsA29zPNgC2AbCNbWxjG9vYxja2yUxsk5nYxjaZSWZiG9vYxja2sQ2AbWzzgtjmRSWJB5IEgCQAJHE/SfxrSeK5SeIFkcT9JPFAkgCQBMDu7i6LxYKXfMmXPH7x4sW3Pjw8/Bnbu1x11VVXXXXVVf9XUI4fP85VV1111VVXXfU/g6TdaZq+JyI+OiKQBIAkJAEgCQBJSEISAJIAkMQDSeJfyzbPjyReGNs8kG0AbGMbANvYxja2AbCNbWxjm8zENraxjW0AbPPcbPNAkgCQhCQkIQlJSCIiiAgigoggIogIIoKIICKICCKCiEASEUFEIImIICKICCQhCUlIQhIAkpAEgCQkIQlJSEISAJKQhCQkIQlJRASSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUk8P5KQxANJ4oEk8a9hG9vYBsA2ALaxDYBtbGMb2wDYxja2+c8giftJAkASAJKQBIAkJPGvIYnnJonnRxIPJAlJ3E8SkrjfarXi7rvv5hVf8RWP7+7uvvXR0dHfZOatXHXVVVddddVV/xdQjh8/zlVXXXXVVVdd9T+HpN1xHL8nIj5aEhGBJCRxP0kASAJAEgCSAJDEA0niRWGbfw1J3M82ALa5n21sYxvbANjmfraxjW1sY5vMxDa2yUxsY5vMxDa2sY1tbGMb2wDY5rlJQhKSkIQkJBERSEISkpBERBARRAQRQUQQEUQEEUFEEBFEBJKICCQREUgiIogIJBERSEISkpCEJCQhiYggIogIIoKIICKICCQREUQEEUFEEBFEBBGBJCQhiYggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICKICCQhCUlIQhIRQUQQEUQEkpCEJCQREUQEkpCEJCQhCUlIQhKSkMSLwjYAtrENgG1sYxvbANjGNraxjW1sYxvb2MY2trHNi0ISz00S95MEgCTuJ4n7SUISLwpJPD+SeG6SeH4k8UCSuJ8kVqsVr/Var3V8tVq9zvnz5/86M2/lqquuuuqqq676345y/Phxrrrqqquuuuqq/1kk7Y7j+D0R8dERgSQAJHE/SQBI4oEkASCJ5yaJF8Q2/5FsA2Cb+9nGNgC2sY1tbGMb29jGNplJZmIb22QmtrFNZmIb29gGwDYAtgGwzXOTBIAkJCEJSUQEkpBERBARRASSiAgigoggIogIJBERRAQRQUQQEUQEkogIJBERRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQURQSiEiiAgigoggIogIIoKIICKICCKCiCAiKKUQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBJKICCKCiCAiiAgigoggIogIIoKIICKQREQQEUQEEUFEEBFEBBFBKYWIICKQREQgiYhAEhGBJCQhCUkASEISkgCQxANJ4vmxjW1sYxvb2MY2tnl+bPPCSOKBJHE/SdxPEgCSuJ8kHkgSknhhJPGCSOK5SeL5kYQk7ieJ+61WK3Z3d3nEIx5x/OVf/uVf+wlPeMLxaZp+h6uuuuqqq6666n8zyvHjx7nqqquuuuqqq/7nkbQ7juP3lFI+WhKSkMQDSQJAEpK4nyTuJ4nnJon72eZFZZsXRBL3sw2AbQBs80C2sY1tbGMb22QmALaxjW0yE9tkJraxTWZim8wkM7FNZmIb22QmtrENgG3uZ5vnRxKSAJCEJCQhCUlIQhKSiAgigohAEhGBJCKCiEASEYEkIoKIICKICCKCiCAikEREEBFEBBFBKYWIICKICCKCiKCUQkQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUgiIogIIoKIICKICCQREUQEEUEphYggIpCEJCICSUQEkpBERCAJSUhCEpKQhCQAJPFAknhBbPPC2Ob5sc3zI4kHksTzIwkASQBI4n6SeG6SeGEk8YJI4vmRxPMjiftJ4n6r1Yq7776bhz/84ccf85jHPPgJT3jC8Wmafoerrrrqqquuuup/K8rx48e56qqrrrrqqqv+Z5K0OwzD90h664g4LglJPJAknh9J3E8S/x62+deyDYBtAGwDYBvb2MY2trGNbWxjG9vYJjOxTWaSmdgmM8lMMpPMxDaZiW0yE9vYJjOxjW1sYxvb2MY2ALZ5YSQBIAlJSEISkpCEJCQhiYhAEpKICCQREUhCEpKQhCQkIYmIICKICCKCiEASEUFEEBFEBBGBJCQREUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBFEBBFBRBARRASSkIQkIoKIICKICCKCiEASEUFEEBFEBJKQREQgCUkARASSiAgkIYmIQBIAkpCEJAAkASAJSUji38I2/xLbvDCSeCBJAEgCQBIAkviPIIkXRBLPjySeH0k8kCTu9/SnP52HPexhx9///d//tf/qr/6Kvb293+Gqq6666qqrrvrfiHL8+HGuuuqqq6666qr/uSTtjuP4MxHx1pKOS0ISAJKwjSReEEkASOLfwjYviG1eEEnczzYAtgGwDYBtbGMbANvYJjOxjW0yk8wkM7FNZpKZZCa2yUwyk8wkM8lMMpPMJDPJTDIT22QmmYltbGMb29gGwDa2sc3zI4kXRhKSAJCEJCQhCUlIQhKSkIQkACQhCUlEBJKQhCQkERFIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJAEhCEpKQhCQAJCEJSUQEkpDE/SQBIIn7SeJ+kpCEJAAkIQkASfxLbPNAtvnvJIn7SeLfShLPjySeH0m8MJIAkMT9nva0pzGbzXjXd33X114sFvqHf/iH3+aqq6666qqrrvrfhnL8+HGuuuqqq6666qr/2STtjuP4M7PZ7K2B45KQBIAkXhBJAEjifpJ4Udnm+bHNv5ZtAGxjGwDb3M82trGNbWyTmdgmM7FNZpKZZCaZSWaSmdgmM8lMWmu01shMMpPMJDPJTDKTzCQzyUxsk5nYJjOxjW1sYxvb2MY2trENgG1s88LY5t9KEi+IJP4nsM0LY5sXRhIAtrENgG1eVLYBsM2/hm2em21eGEm8qCTxX00Sz00SL4gkXhBJAEgCQBJPe9rTmM1mvOVbvuVrnz9/nqc//em/w1VXXXXVVVdd9b8J5fjx41x11VVXXXXVVf/zSdpdrVY/M03Tbq31tSUhCUnczzaSeCBJAEjigSTxwtjm+bHN82Obf4lt7mcb2wDYxja2sU1mYhvb2MY2mYltMpPMJDPJTDKTzCQzyUwyk8yktUZrjdYarTVaa7TWyEwyk9YamUlrjdYamUlmkplkJrbJTDKTzMQ2tslMbGObzCQzsY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9sA2MY2trGNbWxjGwDb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trFNZmIb29jGNraxjW1sk5nYxja2sY1tbGMb29gmM7GNbWxjG9vYxja2AbCNbWxjG9vYxjYAtgGwjW1s84LY5gWxzf0k8W9hm/8OknhuknhBJPGCSAJAEgCSeNrTnkZm8s7v/M6vDfAP//APv8NVV1111VVXXfW/BeX48eNcddVVV1111VX/O0jaba09Y5qm3Vrra0sCQBIAkrCNJF4QSTw3STyQbf41bPP82Oa52eaBbANgG9vYBsA2trGNbWyTmdgmM8lMMpPMpLVGZpKZZCaZSWuNzCQzyUxaa7TWaK3RWqO1RmuNzKS1RmuN1hqtNVprtNbITFprZCatNVprZCaZSWaSmWQmmUlmkplkJplJZpKZZCa2yUwyk8wkM8lMMpPMJDPJTDKTzCQzsU1mkplkJplJZpKZZCaZiW0yk8wkM8lMMpPMJDPJTDKTzCQzyUwyk8wkM8lMMpPMJDPJTDKTzCQzyUwyk8wkM2mtkZlkJplJZpKZZCaZSWaSmWQmmUlmkplkJplJZpKZZCaZSWaSmWQmmUlmkpnYJjOxTWaSmdgmM8lMMhPb2MY2mYltbGMb29jGNrYBsI1t/rNJ4r+TJJ6bJP61JPHcnv70p3P+/Hne6Z3e6bX/4R/+4XfOnj17K1ddddVVV1111f8GVK666qqrrrrqqv9VJN3aWvuc/f19tre3P5vnEhFkJra5nyQAIoLMRBIRwf0yE0lIQhKSeH5sI4kHso0k7mcbSUhCEs/NNraJCCQhCdtIQhK2yUwigswkIogIIgJJtNaICEoptNaICEopRAQRQSmFUgoRQSmFUgqlFCKCUgqlFCKCUgqlFCKCiKCUQkQQEZRSiAgkERFEBJKICCQhCUkASEISknhBJPGvJYkXRhL/HWzzorDNv8Q2trHNA9nmfrYBsI1tbANgG9vYxja2yUxsYxvbZCa2yUxsYxvb/EskIQlJSEISkpCEJCQBIAlJAEhCEraRhCQAJAEgCQBJAEjifpK4n20k8W9lG0k8kG0AJPGvIYmI4IH++q//GoAP//AP/67P/MzPfJ+zZ8/+NlddddVVV1111f90VK666qqrrrrqqv+VWmufs7u7y4kTJz6b50MSALaJCO4niYggM4kIXlS2kcQD2UYS97ONJB7INpKQhCQkAZCZSEISkpCEJGwjCdtIIjOJCCQREUQEEUFrjYggIiilEBFEBBFBRFBKISIopRARlFKICEopRASlFCKCUgoRQUQQEZRSiAgigohAEhFBRBARSEISkpCEJCQBIIkHksRzk8S/hST+p7LNv4VtbGOb+9nmgWwDYBsA2wDYxjYAtrGNbWxjG9vYxjaZiW1sk5nYJjOxjW0eSBK2uZ8kJCEJSUgiIshMJCEJAElIQhIAkgCQBIAkACQBIIn7SeJ+knh+bPP8SOK52QZAEg9kG0m8qCKCzCQieKC/+qu/Anjw537u537Xh37oh76O7Vu56qqrrrrqqqv+J0MPetCDuOqqq6666qqr/veS9OCtra3fms1mD661EhGUUogIJBERRAQRQUQgiYggIpCEJCICSUhCEpKQhCQkASAJSUhCEpIAkIQkJAEgCUlIAkASkpAEgCQkIQlJSEISkpCEJCQhCUlIIiKQhCQiAklEBBGBJCKCiCAiiAgigoggIogIIoJSChFBRBARlFKICCKCiCAiKKUQEUQEEUFEIImIICKICCQhCUlIQhKSkASAJO4niecmiX8LSfxPZZt/C9vYxjYviG0eyDYAtgGwDYBtbANgG9vYBsA2trGNbWyTmdjGNpmJbWyTmdgmM8lMbJOZZCa2yUwyE9tkJplJZmKbzCQzsU1mYpvMJDOxTWZim8zENrbJTGxjm8zENraxjW0yE9vYxja2sY1tbGMb29gGwDa2sY1tbANgG9vYxja2AbCNbWxjG9vYxja2yUxsk5nYJjPJTFprvM7rvA7DMDzju7/7u1/b9q1cddVVV1111VX/U6EHPehBXHXVVVddddVV/+s9eD6ff9bW1tZ7l1IopRARlFKQREQgiVIKkogIIgJJRASSkIQkJCEJSUhCEpKQhCQkIQkASUhCEgCSkIQkACQhCQBJSEISAJKQhCQkIQkASUhCEpKICCQhCUlIIiKQhCQiAklEBBGBJCKCiCAiiAgkERFEBBFBRFBKISKQREQQEUQEEUFEEBFEBJKICCKCiEASkpCEJCQhCUncTxIAknggSfxrSeI/giSeH9v8R7LNi8o2ALZ5YWzzQLZ5brYBsA2AbQBsA2Ab2wDYxja2sY1tbGMb29gmM7GNbTKTzMQ2mYltMpPMxDaZSWZim8wkM7FNZmKbzMQ2mYltMhPbZCa2sU1mYhvb2CYzsY1tbGMb29jGNraxjW1sYxvb2MY2ALaxjW1sA2Ab29jGNrYBsI1tbGMb29gmM7GNbTKTzCQzyUxaa7zu674u//AP/3Dr7//+7z+Eq6666qqrrrrqfyoqV1111VVXXXXV/wW3rlarz2mt3bqzs/PZPEBEABARtNaICO4nCQBJRAQvKttI4gWxjSQAbCOJ+9lGEvezjSQkIQnbSEISkrCNJCQhCUlkJpKICDITSUQEkpBERBARSCIikEREEBFIIiKICCICSUQEEUFEEBFIIiKQREQgiYggIpCEJCQhCUlIAkASAJIAkMQDSeLfShL/k9nmX8s2ALb597LNc7PNA9kGwDYAtgGwjW0AbGMb29gmM7HN8yMJ20hCEraRhCQAJAEgCdtIwjaSAJDE/SRxP9tI4t/DNgCSuJ9tACTxQLa5nyTuZxtJ3E8SEcH9bPMbv/EbvMzLvMyDH/rQh37X0572tPfhqquuuuqqq676n4jKVVddddVVV131f8Wt4zh+zsWLFzlx4sRn83xEBJnJ/SQBEBFkJpKQRETwgthGEg9kG0n8S2wjCQDbSEIStpGEJCRhG0lIQhKSkIQkJCEJSdhGEpLITCQhiYhAEpKICCQhiYhAEhGBJCICSUQEkogIIgJJSCIikEREIAlJSEISkpCEJCQhiftJAkASDySJfw9J/E9jm38r2wDYRhL/VpJ4UdnmgWxzP9sA2MY2ALaxjW1sYxvbPD+SsI0kbCMJ20hCEgCSALCNJABsIwkA20jiudnmXyKJ52YbAEnczzYAknhutrmfJB5IEgCSiAhsA/BXf/VXPPShD33ve++999bDw8PP4aqrrrrqqquu+p8GPehBD+Kqq6666qqrrvq/RdKDd3Z2fms2mz24lEIphYggIpBERCCJiCAiiAgkIYmIQBKSkIQkJCEJSUhCEpKQhCQAJCEJSQBIQhIAkpAEgCQAJCEJAElIAkASkpAEgCQkIQkASUhCEpKQhCQkIQlJSEISkpCEJCICSUhCEhGBJCQhiYhAEhGBJCQhCUlEBJKQhCQkASAJSUgCQBL3kwSAJJ6bJP6/ss1zsw2AJP4lknh+JPHcJPFAknhhbHM/2wDYBsA2trGNbWxjG9tkJraxTWZiG9tkJrbJTGyTmdgmM7GNbTIT29gmM7GNbWyTmdjGNraxjW1sYxvb2MY2trGNbWxjGwDb2MY2tgGwjW1sYxvbANjGNraxjW1sYxvbZCa2sU1mkplkJq01WmusVqtb77333veZpum3ueqqq6666qqr/iehctVVV1111VVX/Z9j+9ZLly69znw+f6+dnZ3P5gEigswkIshMbGObiCAiyEwkERG8KGwjifvZRhIAtpEEgG0k8UC2kQSAbSQBYBtJSMI2kpAEgCQkIQkASUhCEpKQhCQkASAJSUhCEhGBJCQhCUlIQhKSkIQkJCEJSUgiIgCQhCQkASAJSQBI4n6SeG6S+I8mif8qtvmPZpvnJonnRxLPTRL3k8QDSQJAEg8kiQeSxPNjm/vZBsA2tgGwjW3uZ5vnRxK2kYRtJAFgG0kA2EYSALYBkMRzs81zk8TzYxsASdzPNgCSeCDbAEjiBZHE/SQhCUlEBACz2ezBZ86c+a577rnndWzfylVXXXXVVVdd9T8Flauuuuqqq6666v+qW1er1edM08SJEyc+2zalFGwTEQBIIiLITO4niYggM5GEJCKC52YbSUji38s2kgCwjSQAbCMJ20hCEraRhCQAJCEJAElIQhKSAJCEJCQhicxEEgCSkIQkJCEJSUhCEpIAkIQkJCEJAElIAkAS95PE/STx/Eji/zPb/Esk8dwk8dwkASCJ+0nifpIAkASAJO4nCQBJPDdJPJBt7mcbANvYBsA2LwpJ2AZAErYBkIRtACRxP9s8kCSem22emyTuZ5v7SQLANveTxP1s84JI4n6SiAgeqJTCfD5/8DXXXPPb995774O56qqrrrrqqqv+p0APetCDuOqqq6666qqr/m+T9ODjx4//Vt/3Dy6lUEohIogIJBERSEISEUFEIImIQBKSkIQkJCEJSUhCEpKQBIAkJAEgCUlIAkASAJKQBIAkACQBIAlJAEgCQBIAkpAEgCQAJCEJAElIAkASkgCQhCQkASAJSUgCQBKSkIQkACQhCQBJSEISAJIAkASAJB5IEg8kif9MkvjvYJv/TJJ4bpJ4IEncTxIAkgCQBIAkACQBIAkASQBIAkASDySJF8Q2ALYBsA2AbWxjG9vYxjaZiW1sY5vMxDa2yUxsYxvb2CYzsY1tbGMb29jGNraxjW1sYxvb2MY2trGNbQBsYxvb2AbANraxjW0AbGMb29jGNraxjW1sY5vMxDaZSWaSmWQmrTWmaeLChQvfvbe39z5cddVVV1111VX/E1C56qqrrrrqqqv+z7N968WLF19nNpu917Fjxz6bB5AEgCQigszENhEBgCQkIYmI4PmxjSQk8fzYRhIPZBtJPD+2kYRtJPFAtpGEbSRhG0lIwjaSAJAEgCQkASAJSQBIAkASkpAEgCQAJCEJAElI4n6SAJAEgCSemySeH0lc9aKTxHOTxANJAkAS95MEgCQAJAEgCUkASAJAEpK4nyQAJHE/STw/trmfbWwDYBvb2MY2z00StgGQBIBt7ieJ+9nmX0sS97PN/SQBYJv7SQLANveTxAtiG0kASCIiuJ9tSikcP378vcdxvHW5XH4OV1111VVXXXXVfzf0oAc9iKuuuuqqq6666v+PiHjw8ePHf2s2mz24lEJEEBFEBJKQREQgCUlEBJKICCQhCUlIQhKSkIQkJCEJAElIQhIAkpAEgCQAJCEJAEkASAJAEgCSAJAEgCQAJAEgCQBJAEhCEgCSAJAEgCQAJAEgCQBJSAJAEgCSAJAEgCTuJwkASTyQJJ6bJP67SOJ/Its8P5J4QSTx3CRxP0ncTxIAkgCQBIAkACQhCQBJAEhCEgCSAJAEgCTuJ4kXxDYAtgGwjW0AbGMb29jGNpmJbWxjG9vYJjOxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbANgG9vYxjYAtrGNbWwDYBvb2MY2trGNbWxjG9vYxjaZiW0yk8wkM2mtMU0Tq9Xq1rNnz77PNE2/zVVXXXXVVVdd9d+JylVXXXXVVVdd9f9KZt568eLF15nP5+917Nixzy6lcD9JRASZiSQkASAJAElIIiJ4fmwjCUnczzaSALCNJB7INpL4t7KNJGwjCdtIAkASAJIAkASAJAAkASAJAEncTxIAkgCQxANJ4n6SeH4k8Z9FEv8fSOL5kcT9JHE/SdxPEgCSAJAEgCQkASAJAElIAkASAJKQBIAk7ieJf4ltAGxjGwDb2MY2tnlBJHE/2/xbSOJ+trmfJABscz9JANjmfpJ4UUgCQBIRAYBtSinMZrMHnzp16rvuvffeh3DVVVddddVVV/13ohw/fpyrrrrqqquuuur/nd1pmn5nuVz+Ttd1ry3pOM9FEg9km38t2/xHsw2AbV4Q2wDYBsA2ALaxDYBtAGwDYBvbANjGNgC2AbCNbWwDYBvbANjGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW0yk8wkM8lMMpPMxDa2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sk5nYxjaZiW1sYxvbZCa2yUxsk5nYxjaZiW0yE9vYJjOxTWZiG9tkJraxjW1sYxsA29jGNraxDYBtAGwDYBvb/HvYRhL/WpJ4bpJ4IEk8P5J4fmzzL4mI45n54GEYfoarrrrqqquuuuq/C+X48eNcddVVV1111VX/P9m+dblc/sw0Tbt93782z4ck/iWSuJ9tnh/b3M82z802ALYBsM0D2eYFsQ2AbZ6bbQBscz/bANjGNgC2sQ2AbWwDYBvbANjGNrYBsI1tbGMbANvYxja2sY1tbGMb29jGNgC2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxjYAtrGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2tgGwjW1sYxvbANjGNrYBsI1tbGMbANvYxja2sU1mYhvb2MY2mYltbGMb22QmtslMbGMb29jGNraxDYBtbGOb+9kGwDYAtrHNfzZJPD+SeCBJPDdJ/EeZzWYvfXBw8Du2b+Wqq6666qqrrvrvgB70oAdx1VVXXXXVVVddFREPPn78+HctFovXjghKKUgiIpCEJCICSUhCEpKICCQhCUlIQhKSkIQkACQhCQBJSAJAEpIAkASAJAAkASAJAEkASAJAEveTBIAk7ieJ+0kCQBL3k8T9JPFAkrifJJ6bJJ4fSfx7SeJ/Kkn8V5PECyKJ5yaJ+0kCQBL3kwSAJAAkASAJAElIAkASAJKQBIAkACQBIIn7SeIFsQ2AbQBsA2Ab29jGNraxjW1sYxvb2MY2trGNbWxjG9sA2MY2trGNbWxjGwDb2MY2tgGwjW1sA2Ab29jGNgC2sY1tbGMb29gmM7GNbTKTzCQzyUxaa7TWODo6esa99977YK666qqrrrrqqv8OlOPHj3PVVVddddVVV11le3e5XH7POI7M5/PX5rlI4vmxzYvKNv/dbHM/29zPNra5n23uZxvb2OZ+trGNbR7INraxjW1sYxvb2MY2/xLb2MY2trGNbWxjG9vYxja2sY1tbGMb29jGNraxjW1s8+9lG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2Lwrb2MY2tnkg29jGNvezjW0AbGMb2wDYBsA2tgGwDYBtAGxjGwDbANjGNraxDYBtAGwDYBvbANjGNraxjW0eyDYAtrHNi0oS/xqSeH4k8UCSeG6S+LeShG3uJ+l4Zj54GIaf4aqrrrrqqquu+q9GOX78OFddddVVV1111VX3m6bpdw4PD79nmqbdvu9fm+ciiRdGEs/NNs/NNvezzX8U2/xLbHM/2zyQbe5nG9s8kG1s80C2sY1tbGObF8Y2trGNbWxjG9vYxja2sY1t/iPZxja2sY1tbGMb2/xvYJvnxza2uZ9tbHM/2wDYxjYAtrENgG0AbANgGwDbANjmfrYBsA2AbQBsA2Ab29jmudnmudnmuUni30oSz48knpskHkgSDySJF4VtXpi+7196uVw+IzP/mquuuuqqq6666r8S5fjx41x11VVXXXXVVVc9kO3dcRx/5/Dw8HtKKS9da30wLyLbvDC2eUFs8+8lif8KtnlhbPMfxTa2+c8mif8MkviPIol/Ldvczza2AbCNbQBsYxsA2wDYBsA2ALYBsA2Abe5nGwDbANjGNgC2sY1tbPPcbANgm38PSbwgknhuknggSTyQJF4QSTyQbV4UtdaXPjw8/Bquuuqqq6666qr/SpTjx49z1VVXXXXVVVdd9fzY3l0ul9+zWq2eMZvNXlrScR5AEv8etnl+bPOisM3/B5L4jySJ/0iS+I8iiX8rSfxb2OZ+tgGwDYBtbANgGwDb3M82ALYBsA2AbWwDYBvbvDC2AbDNCyOJfw1JPDdJPDdJPJAkHkgS/x62AYiI45n54GEYfoarrrrqqquuuuq/CuX48eNcddVVV1111VVXvTCttb8+PDz8mXEcd2utD46I4zwXSdzPNv8atnl+bPOfQRL/2STxryGJ/0iS+PeSxL+HJP4jSeJfSxL/Vra5n20AbANgGwDbANgGwDYAtgGwzf1s88LY5oFscz9J/Esk8S+RxANJ4oEk8UCSeH4k8dxs8y+xTUQc39jY+JvDw8Nbueqqq6666qqr/itQjh8/zlVXXXXVVVddddWLYHccx985Ojr6mWmadheLxWvb5kVhm/tJ4n62eSDbPD+2AbANgG3+o0jigSTxQJJ4bpJ4QSTxopDEv4ck/j0k8W8hiX8LSfxnksSLQhL/GrZ5brYBsA2AbQBsA2AbANsA2MY2ALaxzQtimxeVJF4Uknh+JPFAknggSTw3SbwobPOCRMTxl37pl37wk5/85O/hqquuuuqqq676r0A5fvw4V1111VVXXXXVVS8q27vDMPzO/v7+90zTtDubzV5bEg8kifvZ5oFs89xs80C2uZ9t/rtI4rlJ4vmRxAsiiReFJP4jSOJfSxL/GpL415DEfzVJ/Esk8aKyzXOzDYBtAGwDYBsA29gGwDb3s80LY5sXRhIPJIl/iSReEEk8kCQeSBLPTRLPzTYvjG0A1uv1g1/7tV9b//AP//DbXHXVVVddddVV/9kox48f56qrrrrqqquuuupfy/buMAy/s7+//z3TNO3OZrPX5t/JNg9km/vZ5kVhm+cmiftJ4n6SeCBJvDCSeG6SeH4k8S+RxL+WJP61JPGiksSLShIvKkn8TyCJF0QSz00S95PE/Wzz3GwDYBsA2zw329zPNi+Mbe5nm/tJ4oEk8fxI4gWRxPMjiecmiQeSxIvCNi/IarUCeMjOzs5fnz179lauuuqqq6666qr/TJTjx49z1VVXXXXVVVdd9W9le3cYht/Z39//ntbabinlwRFxnBeBbZ6bbZ6bbe5nGwDbANgGwDb/HpJ4IEk8kCQeSBLPTRIviCReGEn8W0jiRSWJF5Uk/iWSeFFI4rlJ4r+bJF4QSbwwknhR2AbANv9WtnlBJHE/Sbwgknh+JPHcJPHcJPHCSALANv8Kx9/gDd7gtf/4j//4a7jqqquuuuqqq/4zUY4fP85VV1111VVXXXXVv5ft3fV6/TtHR0c/s1wu/6bv+5eOiOM8kyReGNs8kG0eyDb3s82/hm3+NSRxP0k8N0k8kCSemyT+JZL4l0jiX0MSLwpJ/Esk8S+RxAsjiecmCQBJ/E8iiedHEg8kiX8P29zPNv9WkrifJJ6bJJ4fSTw3STw3STw3Sfxr2Ob5sc1yueTo6Oj4W7zFWzz4T//0T3+Gq6666qqrrrrqPwvl+PHjXHXVVVddddVVV/1Hsb07TdNf7+/v/8xqtfqbiDjedd2DbfOisg2AbR7INg9kGwDb/FeQxANJ4rlJ4vmRxAsiiX8NSfxLJPGikMQLI4kXRhIvjCSemyT+M9nmuUniX0MSz00Sz00S95PEv5YkHkgSL4htXhSSeCBJPD+SeG6SeCBJPDdJvKgkASCJ52abCxcu8FIv9VIvffPNN/MP//APv8NVV1111VVXXfWfgXL8+HGuuuqqq6666qqr/hPsTtP01wcHB9+zt7f3PZKO933/0rZ5YWzz3GxzP9s8kG3uZxsA2wDY5l9LEveTxAsiiQeSxHOTxAsiiecmiX8tSfxLJPEvkcQLI4kXRBIviCSemyT+o9jm30MS/xJJPDdJPJAk7ieJ+0niRSWJF4VtHkgS95PE/STx3CTx3CTx3CTxQJJ4bpL4j3D77bfzju/4jg++9dZb/+bs2bO3ctVVV1111VVX/UejHD9+nKuuuuqqq6666qr/TLZ3j46OfmZvb+97xnHcBai1Pph/B9vczzb3sw2AbQBsA2AbANv8W0jifpJ4IEk8kCSeH0k8P5J4UUjiXyKJF0YSL4wkXhBJvCCSeEEk8UCS+LeyzX8mSbwgknhuknggSdxPEveTxP0k8aKQxHOzzQsiiftJ4oEk8UCSeG6SeCBJPJAknpsk/jUk8dyWyyUHBwfH3/AN3/DBv/Vbv/U9XHXVVVddddVV/9Eox48f56qrrrrqqquuuuq/gu3d9Xr9O/v7+9+zt7f3PcDxvu9fmmeSBIBtXlS2AbDN/WzzX0USDySJB5LECyKJB5LEv5YkXhhJvDCSeEEk8YJI4gWRxHOTxP0kAWCbf4ltXhjb/FtJ4l8iiedHEg8kiQeSxP0kcT9J3E8S95PE/STxorDN8yOJ+0nigSTxQJJ4bpJ4IEk8kCSemyT+JZJ4QZbLJa/1Wq/FL/zCL3wNV1111VVXXXXVfzTK8ePHueqqq6666qqrrvqvlpm7R0dHP3Pp0qXvWa1WfxMRx2utD7bNC2Kbf4ltAGwDYJv72QbANgC2eW62+beSxANJ4gWRxANJ4kUliRdGEi+MJF4QSbwgknh+JPGCSOKBJPFAtnlR2eZFZZv7SeJfQxLPjySemyQeSBIPJIn7SeJ+krifJO4niQeSxL+VJO4niQeSxANJ4rlJ4n6SeG6SeG6SeCDbPDdJPLejoyOuv/7647PZ7Bm33nrrX3PVVVddddVVV/1Hohw/fpyrrrrqqquuuuqq/y62d4dh+Ov9/f3v2d3d/Z5pmnYBuq57MC+Abf41bHM/2wDYBsA2ALZ5brb5t5LE8yOJ5yaJF4UkXhhJvDCSeEEk8YJI4vmRxAsiiecmiftJwjbPj21eENv8R5PECyKJ50cSz00S95PEA0nifpK4nyTuJ4n7SeLfQhIAkrifJO4niQeSxANJ4oEk8UCSeCBJ/GtI4gW5/fbbebM3e7MTv/Vbv/XdXHXVVVddddVV/5Eox48f56qrrrrqqquuuup/Atu7q9Xqd/b29r7n0qVL3zOO4y5A13UP5vmwzYtCEgC2AbANgG0AbANgGwDbPDfb/FeQhG0eSBL/Ekm8MJJ4QSTxgkjiX0sSz00S95MEgG2eH9s8P7b5jySJF0QSz48knpskHkgS95PEA0nifpK4nyTuJ4kHksS/lSTuJ4n7SeKBJPFAknggSdxPEs9NEv9aknig5XLJzs6O7r777p8+PDzc5aqrrrrqqquu+o9COX78OFddddVVV1111VX/02Tm7mq1+p29vb3v2d3d/Z5pmnZt03Xdg3kA27yoJPGC2AbANgC2AbDN/WwDYJv72eZ+trmfbf6tbPOvZZt/K9u8ILb517LNc7PN/Wxjm/vZxja2sc3zY5v/KpJ4bpJ4bpJ4IEk8kCTuJ4n7SeJ+krifJO4niecmiX8rSdxPEveTxANJ4oEkcT9JPJAkHkgSLypJPD8XLlw4/vIv//K7//AP//A7XHXVVVddddVV/1Eox48f56qrrrrqqquuuup/sszcXS6Xv7O3t/c9u7u733N4ePg3rbXd2Wz20jwftnlhJPHcJPGC2OZ+tgGwzf1scz/b3M82z802tnkg29zPNs/NNraxzQtjmxfENrZ5QWxjm+fHNrZ5braxjW2em21sY5v72ea52eYFsY1tbPPcbGMb29jGNraxjW1sY5t/LUk8N0k8kCQeSBIPJIkHksT9JHE/SdxPEveTxP0k8fxIAsA2L4gkACRxP0ncTxL3k8QDSeJ+knggSTyQJB5IEi+IbV6Y5XLJsWPHePKTn/w9XHXVVVddddVV/1HQgx70IK666qqrrrrqqqv+t6q1Pnhzc/O1jx8//l5bW1uvLQlJAEhCEgCSkASAJAAkcT9JAEgCQBL3k8T9JHE/SdxPEveTxANJ4vmRxANJ4kUliRdGEi+MJF4YSbwgknhhJPHcJPGC2OaFsc2/lySeH0k8kCSemyTuJ4kHksQDSeJ+krifJO4niQeSBIAk7ieJB5LEv4ZtAGwDYBsA2wDYxjYAtrGNbQBsYxsA29jGNgC2sQ2AbWxjGwDb2MY2trENgG1sY5vMxDa2yUxsk5lkJq01pmlia2uLcRxf5x/+4R9+m6uuuuqqq6666j8C5fjx41x11VVXXXXVVVf9b5WZu+v1+q8vXbr0PRcvXvye3d3dnxmG4VaAruseDGCbB7INgG3+NSRxP0ncTxL3k8T9JPH8SOK5SQJAErZ5fiTxL5HECyOJF0YSL4wkXhhJ/GvY5oWxzQPZxja2sY1tbGMb29jGNs/NNrZ5brZ5INs8kCReVJK4nyTuJ4n7SeJ+krifJO4niftJ4oEk8a8hCQBJAEjifpK4nyQeSBL3k8QDSeJ+knggSfxb2QZguVyyXC5v3dvb+x2uuuqqq6666qr/COhBD3oQV1111VVXXXXVVf9X1VofvLm5+VpbW1uv3ff9g7e3t18bQBKSAJCEJAAkASCJ+0kCQBIAkrifJO4niftJ4vmRxHOTxP0k8W8liRdGEv8SSbwwkviXSOL5kcRzs80LYpvnZpsXxDYAknhuknggSTyQJO4niQeSxP0kcT9J3E8S95PE/SRxP0ncTxL3kwSAJO4niftJ4oEk8S+xzf1sA2AbANsA2MY2ALaxDYBtbANgG9vYBsA2tgGwjW0AbGMb29gGwDa2sY1tbGMb29gmM7FNZpKZZCatNaZpYj6f3/r3f//3D+Gqq6666qqrrvqPgB70oAdx1VVXXXXVVVdd9f9F13UPrrU+eDabPWhra+u1+75/8Pb29mtLAkASkgCQBIAkACRxP0kASOJ+krifJJ6bJJ4fSQBI4t9KEv8SSfxLJPEvkcS/RBLPjyTuZ5vnxzbPj21eENs8P5J4IEk8kCTuJ4n7SeJ+krifJO4niftJ4n6SAJDE/SRxP0kASOJ+krifJO4niftJ4oEk8YLY5oFsA2AbANvYBsA2ALaxjW0AbGMbANvYBsA2trENgG1sA2Ab29jGNgC2sY1tbGMb22QmtslMbJOZtNZorTGOI7fddtvrTNP021x11VVXXXXVVf9e6EEPehBXXXXVVVddddVV/991XffgruseNJvNHrK1tfVas9nswQCz2ezBs9nswQCSAJAEgCQAJHE/SdxPEs9NEs9NEveTxP1s80CS+JdI4kUhiX+JJP4lkviXSOKFsc0LYpsXxDb/GpK4nyTuJ4n7SeJ+krifJAAkcT9J3E8SAJK4nyQAJHE/SQBI4n6SAJDE/SRxP0ncTxIPJInnxzYPZBsA2wDYBsA2ALaxDYBtbANgG9vYBsA2tgGwjW0AbGMb2wDYxja2sQ2AbWxjm8zENrbJTGyTmWQmrTWmaeL8+fPffeHChffhqquuuuqqq67690IPetCDuOqqq6666qqrrrrqBeu67sEAXdc9eDabPViSt7e3XxtAEn3fP1gSALPZ7MEA8/n8wTwXSTw3SdxPEv9WkviXSOJFIYl/iSReVJJ4UdjmhbHNfxRJAEgCQBL3k8T9JAEgiftJAkAS95MEgCTuJwkASQBI4n6SAJAEgCTuJwkASdxPEveTxHOTxAPZ5rnZBsA2ALYBsI1tAGxjGwDb2AbANrYBsI1tAGxjG9sA2MY2ALaxjW1sYxvb2MY2trFNZmKbzCQzaa3RWuPo6OjW22+//SFcddVVV1111VX/XuhBD3oQV1111VVXXXXVVVf95+r7/sFcYUA8QNd1D5IkgGEYbuUKA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEA/R9/yBAi8XiwQDz+fxBs9nswQDz+fzBOzs7r82LQBIvKkncTxIAkgCQBIAk7icJAEncTxIAkgCQBIAk7icJAEkASAJAEveTBIAkACRxP0kASOJ+knh+JHE/2zyQbe5nGwDb2AbANgC2sQ2AbWwDYBvb2AbANrYBsI1tAGxjG9sA2MY2trGNbWxjG9tkJrbJTDKTzKS1xjRN3H333Z99cHDwOVx11VVXXXXVVf8e6EEPehBXXXXVVVddddVVV131P13f9w/u+/5B8/n8ITs7O681n88fvLOz89o8kySeH0m8IJK4nyQAJAEgiftJAkASAJIAkASAJAAkASCJ+0kCQBIAkgCQBIAkACQBIAkASdxPEgCSuJ8k/rVsA2AbANsA2AbANrYBsI1tAGxjGwDb2AbANraxDYBtbANgG9vYxjYAtrGNbWxjm8zENpmJbVprZCbTNHF0dHTr7bff/hCuuuqqq6666qp/D/SgBz2Iq6666qqrrrrqqquu+t+o7/sHb21tvdaxY8deezabPXhnZ+e1JQEgiecmiecmiQeSBIAkACQhCQBJAEgCQBIAkgCQBIAk7icJAEkASEIS95MEgCQAJAEgCQBJAEjifpIAkMS/hm3uZxsA2wDYxjYAtgGwjW0AbGMb2wDYxjYAtrENgG1sYxsA29jGNraxDUBmYhvb2CYzsU1m0lqjtcY4jjzjGc94nXEcf5urrrrqqquuuurfinL8+HGuuuqqq6666qqrrrrqf6PW2u5yufyb3d3dnzl37tz33Hfffd9zeHj4NxFxvO/7BwPYxjYAtrHNA9nmgWwDYBsA29zPNgC2AbANgG0AbANgmweSBIAkHkgSAJIAkASAJAAkASAJAEncTxL3k8SLQhL3kwSAJAAkcT9J3E8S95PE/SRxP0ncTxLPTRL/VsMw3LparX6Hq6666qqrrrrq3wo96EEP4qqrrrrqqquuuuqqq/6v6bruwdvb2699+vTp99rZ2XltSQBI4n6SuJ8kHkgSAJIAkIQkACQBIAlJAEgCQBIAkgCQhCQAJAEgCQBJAEhCEgCSAJAEgCQAJAEgiftJ4n6SeFHZ5n62AbCNbQBsA2Ab2wDYxja2AbCNbQBsYxsA29gGwDa2sQ2AbWxjG9vYxjaZiW1sk5lkJq01Wmssl8tn3HrrrQ/mqquuuuqqq676t6IcP36cq6666qqrrrrqqquu+r8mM3eXy+Vfnz9//nvOnj37PeM47h47duy1MxMA2wDYBsA2trmfbQBsA2Cb+9nmfrYBsM0LYpsXRBL/EkkASAJAEveTBIAkXlSSeH4kASCJ+0nifpK4nyTuJ4kHksT9JPHcJHE/27wwpZTju7u7v5OZt3LVVVddddVVV/1bUI4fP85VV1111VVXXXXVVVf9X5aZuwcHB79z9uzZ7zk4OPibiDje9/2DAWwDYBsA29zPNgC2AbDNA9nmudnm30sSAJJ4bpIAkMT9JAEgiReVJAAkASAJAEkASOJ+krifJO4niQeSxP0k8UCS+JfY5oFsY5thGG5drVa/w1VXXXXVVVdd9W9BOX78OFddddVVV1111VVXXfX/QWburlarv75w4cL3HB4ePqOUcrzrugfb5oFscz/bANgGwDYPZJv72eZ+tvnXksRzkwSAJO4nCQBJAEjifpL415IEgCQAJHE/SdxPEveTxP0kcT9JPJAkHkgS/1q11gfv7u5+DVddddVVV1111b8F5fjx41x11VVXXXXVVVddddX/N+v1+q8vXrz4PUdHR89YLBYvXUo5DmCb+9kGwDYAtgGwzXOzzX8kSTw3STw3SQBI4n6SeG6SkMQDSeJ+kgCQBIAk7ieJ+0nifpJ4IEncTxL3k8TzI4n72eb5sU1EHN/d3f2dzLyVq6666qqrrrrqX4ty/Phxrrrqqquuuuqqq6666v+r9Xr917u7uz8zDMPu5ubma/NcbANgGwDbANjmBbHN/WxzP9v8W0jifpIAkMT9JAEgiftJ4oEkASCJB5LE/SQBIIn7SeJ+krifJO4niftJ4n6SeCBJ/Ets89xss1qtbl2v17/DVVddddVVV131r0U5fvw4V1111VVXXXXVVVdd9f9ZZu4eHR39zoULF75nmqbdjY2N1wawzQPZBsA2z802z802/1qSuJ8k7ieJ+0kCQBKSAJAEgCTuJ4n7SeJ+knggSdxPEveTBIAk7ieJ+0nifpJ4IEncTxLPTRL/GrbZ29v7Hq666qqrrrrqqn8tyvHjx7nqqquuuuqqq6666qqrIDN3j46Ofmdvb+93FovFa5dSjvNcbHM/2zw/tnlutvn3ksT9JHE/SQBIAkASAJJ4IEncTxKSuJ8kHkgSAJIAkMT9JPFAkrifJO4niQeSxL+FbWxz8eLFr+Gqq6666qqrrvrXohw/fpyrrrrqqquuuuqqq6666tmmabr10qVLPzNN0+7GxsZr81xscz/b/Ets80C2eSBJvCCSeEEkcT9JAEgCQBIAkrifJJ6bJO4nCQBJAEgCQBL3k8T9JHE/SdxPEg8kiQeSxAtjmweyTSnl+GKxeMalS5f+mquuuuqqq6666l+Dcvz4ca666qqrrrrqqquuuuqq52R7d7lc/s4wDGxubr62bQBs89xs8+9hmxeVJB5IEveTBIAkACQBIIn7SeK5SeJ+kgCQBIAkACRxP0ncTxIPJIn7SeKBJPFAknhutnl+bHP99dcff8YznvE9XHXVVVddddVV/xoEV1111VVXXXXVVVddddULdOnSpc95ylOe8uDlcnnrNE1kJplJZpKZZCa2sU1mYhvb2MY2trGNbWyTmdjGNraxjW1sYxvb2MY2trENgG1sYxsA29jGNgC2sQ2Abf61JCEJAEkASAJAEgCSkASAJCRxP0lIAkASkrifJCQBIAlJSOL5kYQkJCEJSUgiIjg6OnowV1111VVXXXXVvxbl+PHjXHXVVVddddVVV1111VUvWGZe2t/f/5mNjY23jojj/CeTxL9EEg8kiftJQhIAkgCQxP0k8YJIAkASAJIAkMT9JHE/SdxPEg8kiQeSxANJ4gWxzQPZZmNj4/irvMqr8A//8A+/w1VXXXXVVVdd9aKiHD9+nKuuuuqqq6666qqrrrrqhbO9u7+//zPA8dls9tK2+ZdI4l9imxeFJJ6bJB5IEpK4nyQAJAEgCQBJvDCSAJAEgCQAJHE/SdxPEg8kiftJ4oEk8fxIAsA2L8hyueTmm2/mb/7mb76Hq6666qqrrrrqRUU5fvw4V1111VVXXXXVVVddddW/zPbucrn8m2madufz+WvzXCQBYBtJPJAknptt/r0k8dwkcT9JAEhCEgCS+JdIAkASAJIAkMT9JPFAkrifJB5IEg8kiX+JbR7INg9/+MMfvFwuf+e+++67lauuuuqqq6666kVBOX78OFddddVVV1111VVXXXXVi2x3vV4/Y5qm3fl8/tqSuJ9tnpsk/qNI4vmRhCQeSBKSAJCEJAAkASCJB5KEJB5IEgCSAJAEgCTuJ4kHksQDSeKBJPHcJPHcbANgmwfKTG688cZb/+Ef/uF3uOqqq6666qqrXhSU48ePc9VVV1111VVXXXXVVVf9q+yu1+tbgeN937+0JO5nmxdEEv9eknhBJPHcJCEJAElIAkASDyQJAElI4n6SkMT9JAEgiQeSxANJ4oEk8UCS+NewDUBm8rCHPewZf/qnf/rTXHXVVVddddVVLwoqV1111VVXXXXVVVddddW/mqRnXLhw4XMi4sHb29uvXWvFNhEBgCQkASCJiCAzkURE8C+RhG2eH0nY5vmRxP1scz9J2AZAEraRxAsiCQDbAEjigWwjifvZRhL3s40k7mcbAEkA2AZAEi+IbSRhG0lIYm9vjxtuuOG1ueqqq6666qqrXlRUrrrqqquuuuqqq6666qp/k4i49eLFi+8TEb+1sbHx4FortrFNRCAJAEkARAQAmYkkIoIXRhK2eX4kYZsXRhIAtgGQBIBtJPGikIRtACRhG0kA2EYS97ONJO5nGwBJ3M82AJIAsM0LIgkASUhCEhHBxYsXueqqq6666qqrXmRUrrrqqquuuuqqq6666qp/M9u3nj9//nW6rnu6bWqt2AZAEgCSuJ8kIgKAzEQSEcG/hSTuZ5sXRBIAtgGQBIBtJPEvkQSAbSRhG0kA2AZAEgC2AZDE/WwDIIn72QZAEi+MbSQhCUlI4hnPeAZXXXXVVVddddWLjOCqq6666qqrrrrqqquu+nexfes999zzPsMwMI4jrTVaa2QmmUlmkplkJrbJTGxjG9tkJpmJbWxjG9vYxja2sY1tbGMb29jGNrZ5INvYxja2sY1tHsg2L4wkJCGJ+0kCQBIAkpCEJAAkIQlJ3E8SkpDE/SQhCUn8SyQBIAlJSGK5XD6Iq6666qqrrrrqRUU5fvw4V1111VVXXXXVVVddddW/219n5mvXWh8siReVJJ4fSdhGEpL415CEJCQhCUk8N0lIAkASAJIAkMQDSUISAJIAkASAJB5IEs+PJJ4fSfxr2MY2z3jGMz6Hq6666qqrrrrqRUHlqquuuuqqq6666qqrrvoPcXh4+N5d190K0HUdL0hEkJlEBJlJRPDcbCMJ2wBI4n62+deSxAPZBkASLypJ2EYStpGEbSRxP9sASOKBbHM/SdzPNveTxAPZBkAStgGQxFVXXXXVVVdd9a9COX78OFddddVVV1111VVXXXXVv5+kS0dHR8/ouu6tIwJJPDdJAEgCQBIAknggSbwgkpCEJP6tJCEJSQBIQhIAknggSdxPEpIAkMT9JPH8SOKFkcS/xDYPtFwuuXjx4u+01m7lqquuuuqqq676l1C56qqrrrrqqquuuuqqq/7DlFK+e39//70kvTb/goggM4kIMpOI4H6ZSUTwL5HEv5ZtHkgSL4gkACQBYBsASdhGEgC2kcRzs839JPHcbHM/STw320gCQBKSkEQphauuuuqqq6666kVC5aqrrrrqqquuuuqqq676DzVN0+csl8vXlsQD2QZAEveLCDKTiMA2D2Sb/wySeH5sI4n7SeK5SQLANpKwjSQAbCOJF8Q2DySJB7LNc5MEgG0kASCJ2Wz24KOjI6666qqrrrrqqn8Rlauuuuqqq6666qqrrrrqP1Qp5beHYfjtiHhtSUjCNrVWnp+IwDaZSURwv8wkIvivIgkA20jiuUnCNgCSuJ9tJAFgGwBJ/Etscz9JPD+2AZCEbSQhidls9iCuuuqqq6666qoXBZWrrrrqqquuuuqqq6666j9ca+1zWmuvvV6vkQSAJAAkIYnnFhFkJhHB/Wzz7yWJF5VtJPHcJAEgifvZRhLPj22emyReENs8P5IAsI0kJCGJvu8fzFVXXXXVVVdd9aKgctVVV1111VVXXXXVVVf9hyul/PY4jr9dSnntYRh4QSRhG9tkJhGBbe5nmxdEEi8K27yoJPHcJPH8SOJ+tpHEC2Ob50cSL4xtJGEbSUhiNps9mKuuuuqqq6666kVB5aqrrrrqqquuuuqqq676TzFN0/e01l67lMI0TUjifpKQhCTuFxHYJjOJCABs89wkAWCbfwtJvChsI4n7SeK52UYSALaRxL+WbV4YSQBIwjaSmM/nD+aqq6666qqrrnpRULnqqquuuuqqq6666qqr/lNExG9nJplJRNBaQxKSkIQknp+IwDYAmUlEcD9J2OZFJYnnZpvnRxL3s40k/iWSsI0k/rPYBkASkpCEJK666qqrrrrqqhcJlauuuuqqq6666qqrrrrqP0VE3DqO42/XWl/bNrbJTFprSEISAJKQhG1sY5vMJCIAsM39bPOCSOK52eYFkcQD2eZ+knhBJPGC2EYSL4ht/rUkAWAbSQDM5/MHc9VVV1111VVXvSgIrrrqqquuuuqqq6666qr/TJ+dmdjGNrbJTFprZCaZSWaSmWQmmUlmYhvb2MY2tgGwjW1sY5sHso1tbGMb29jGNraxzQPZxja2eVFJ4rlJQhKSkASAJCQhCUncTxKSkIQkJCEJSUhCEpKQhCQkcT9JAEgCoOu6B3PVVVddddVVV/1LqFx11VVXXXXVVVddddVV/5luzUwyk4jANvdrrSEJSUhCEraxjW1sA2AbANs8kCRs84JI4rnZ5n6SuJ9t7ieJ5yaJB5LEA9lGEvezzQNJ4gWxzQsjCQDbSEISkrjqqquuuuqqq14kVK666qqrrrrqqquuuuqq/zQR8YzW2m/bfm3b2MY2tgHITCQhCUk8t4jANgC2uZ8kbPPcJHE/2zw/kgCwzf0kcT/b3E8Sz00Sz00S/xq2uZ8k/iW2kYRtrrrqqquuuuqqfxUqV1111VVXXXXVVVddddV/qsy81Ta2eX5sk5lIQhK2sY1tbGMbANvczzYPJAkA2zw/krifbe4nCQDbAEjigWwDIIkHksRzs40k/iW2kcTzY5vnRxK2kYQkJHHVVVddddVVV71IqFx11VVXXXXVVVddddVV/6mmabrVNgC2sQ2AbR7INpmJJGxjG9vYBsA2AJKwDYAkAGzzQJJ4INs8kCQAbAMgCQDbAEjigWwjiecmiX8tSTyQbe4niedmGwBJ2AZAEn3fP3gcx1u56qqrrrrqqqteGCpXXXXVVVddddVVV1111X+qiPidzMQ2tnlhbJOZAEjCNplJRGAbANsASMI2DyQJANs8N0nczzYAkgCwDYAkAGwjiRdGEg8kiX+JbSRxP9tI4oFs80CSALCNJCQhiauuuuqqq6666kVC5aqrrrrqqquuuuqqq676TxURt9rGNvezzXOzjSRsY5vMBCAisI1tAGwDYJv7SQLANg8kifvZ5n6SALANgCQAbCMJANsASOIFkcS/hiTuZxtJ3M82AJJ4INsASMI2krjqqquuuuqqq15kVK666qqrrrrqqquuuuqq/1QRcSvPRRL/EtvYxja2sQ2AbQBsAyAJ29xPEvezzf0kcT/bAEgCwDYAkrANgCSeH0lIQhIAknhRSeJ+kgCwDYAk7meb+0kCwDaSsM1VV1111VVXXfUio3LVVVddddVVV1111VVX/aeThG0kIYkXlW1sYxvbSMI2krCNJGwDIAkA29xPEvezzf0kAWAbAEkA2EYSALaRhG0kASCJB5IEgCQAbCMJAEnYJjO5nyQAbCMJAEnczzYAkrifbQAkYRtJSEISV1111VVXXXXVv4jgqquuuuqqq6666qqrrvpP11q7VRIPJIkXhW1sYxvb2MY2trGNbQBsYxvb3M82trHNA9nGNvezjW0AbPOvIYn7SUISkpCEJCQhCUlIQhKSkASAJCQBIAlJSOJ+kpAEgCTuJ4mrrrrqqquuuupfROWqq6666qqrrrrqqquu+i8jiRdEEi+MbWwDYBtJ2EYStgGQBIBt7icJANvcTxIAtgGQBIBtJGEbSdhGEraRhG0k8dwk8UCSsA1ARJCZAEgCQBIAkgCwjSQAbAMgCQDbAEjCNgCSuOqqq6666qqrXiRUrrrqqquuuuqqq6666qr/EpIAkIQkXhBJPJAk7mcbSdjGNgC2AZCEbe4nCQDbAEjifrYBkASAbSQBYBtJ2EYStpHEc5OEJCQhiRdGEgCSAJAEgCQAJAFgG0kA2AZAEgC2kYQkANbr9a1cddVVV1111VX/EoKrrrrqqquuuuqqq6666j9d13UPloQkHkgSkvjXsA2AbQBsA2Ab29zPNra5n21sY5v72cY2ALb595CEJCQhCUlIQhIRgSQiAklIQhKSAJAEgCQkASAJSdxPEveTxFVXXXXVVVdd9SKhctVVV1111VVXXXXVVVf9p4sIJAEgCUlI4n6SAJDEA0ni+bENgG0kYRsASdgGQBIAtgGQxP1sI4n72UYStpGEbSRhG0kA2EYSAJIAkIQkJCGJF0YSAJKQBIAkJAEgCQDbSALANpIAsI0kJHHVVVddddVVV73ICK666qqrrrrqqquuuuqq/xKSkMSLShL/EtvYxjYAtrmfbR7INra5n21scz/bANgGwDb3s82LQhKSkIQkIoKIQBIRgSQkIQlJSEISkpAEgCQkASCJ+0nigYZhuJWrrrrqqquuuupfQnDVVVddddVVV1111VVX/afKzAdLIiKQhCQkIQlJSAJAEveTxIvKNgC2AbCNbQBsY5sHso1t7meb+9kGwDb3s83zIwkASUhCEpKQhCQiAklIIiKQhCQigohAEpKQBIAkJCEJAEkASOK5SeKqq6666qqrrnqREFx11VVXXXXVVVddddVV/+kkIQlJSOK5SeJ+knhR2QbANgC2uZ9t7mcb2zyQbe5nm+fHNi+MJAAkIQkASUhCEpKQhCQkERFIQhKSkIQkJCEJSQBIAkASAJIAkIQkrrrqqquuuuqqFxnBVVddddVVV1111VVXXfWfKjMfDCCJiEASkpCEJB5IEv9atgGwDYBtbANgG9vczzYPZJv72QbANgC2+deShCQkIYmIICKQREQgCUlIQhKSkIQkACQhCQBJAEgCQBL3W61Wt3LVVVddddVVV70oCK666qqrrrrqqquuuuqq/3SSkIQkJCEJSQBIAkASDyQJSUhCEs+PJABsA2Cb+9nmfra5n21scz/b3M82ALZ5INvYxjbPTRKSkIQkJBERSEISkogIJCEJSUhCEpKQhCQkcT9JAEgCQBIPtFqtbuWqq6666qqrrnpREFx11VVXXXXVVVddddVV/6lsP1gS95OEJCQhCUlI4n6SkMRzk8QLYxsA29zPNvezzQPZ5n62uZ9t7mcb2/xLJCGJiEASkogIJCEJSUQEEUFEEBFIQhKSkIQkJCEJAEkASOJ+kgBYr9e3ctVVV1111VVXvSgIrrrqqquuuuqqq6666qr/EpKQhCQkASCJ+0lCEi+MJCTxQJK4n20AbHM/29zPNra5n23uZ5sHss2/RBKSAJAEgCQkIYmIICKICCQhCUlIIiKQhCQkIQlJSEISAJK4nyQAJGGbq6666qqrrrrqRUJw1VVXXXXVVVddddVVV/2niggk8UCSkIQkJCGJfw1JvCC2AbDN/WzzQLa5n23uZ5sXlSTuJwlJSCIikEREIImIQBIRQUQQEUhCEpKQhCQeSBKSuJ8krrrqqquuuuqqfxOCq6666qqrrrrqqquuuuo/le0H8XxI4n6SkIQkJCEJSUhCEpJ4YSTxQLYBsM39bPNAtrmfbR7INi8qSdxPEpKICCQREUgiIpCEJCQREUgiIpCEJCQhCUk8kCSe23K5vJWrrrrqqquuuupFQeWqq6666qqrrrrqqquu+k8VEUhCEpKQxP0kIYkXhSQeSBIvjG0kYRtJANhGEvezjSQAbCMJ20jifraxzfMjCQBJSEISkpCEJABsY5sHso0kJCEJSUhCEpKQhCQkYRsASUgCYLVaPYOrrrrqqquuuupFQeWqq6666qqrrrrqqquu+k8l6cG8EJKQhCQkIQlJSEISDySJB5LEi8I2kgCwjST+JbaxjSReGElIQhIRgSQigvtJIjOJCABsExHYxjaSkIQkXhBJ2OZ+6/X6Vq666qqrrrrqqhcFwVVXXXXVVVddddVVV131n0oSz00SknggSUjiuUlCEveThCSemyTuZxsA29zPNvezzf1scz/bvCC2uZ8kJCEJSUhCEpKICCQREUQEkogIIgJJRASSkIQkJAEgCUlIQhIAkpDEc1uv17dy1VVXXXXVVVe9KAiuuuqqq6666qqrrrrqqv9UkpDE8yMJAEncTxKSkMQDSeL5kcT9JAEgifvZ5l9imweyzb+WJCQhCUlIQhIRQUQgiYhAEpKQhCQkIQkASdxPEi+Iba666qqrrrrqqhcJlauuuuqqq6666qqrrrrqP1VEPBhAEv9akpDE/SRxP0ncTxLPzTaSeCDbSALANpL495KEJCQhCUlEBJK4n23uZxvbZCaSkIQkJAEgiX/JMAy3ctVVV1111VVXvSioXHXVVVddddVVV1111VX/ZSTxbyGJ+0nifpJ4QSRxP9tI4t9DEg8kCUkASEISkpCEJCQhCdsASEISkpBERJCZSEISkpAEgCQk8fysVqtncNVVV1111VVXvaioXHXVVVddddVVV1111VX/qUopD5bE/STxwkhCEpJ4IEncTxLPTRIAkrifbSTxQLaRBIBtJAFgG0nYRhLPzTbPjyQkIQlJRAQRgSQkYRvb3M82mYkkJCEJSdxPEveThCQeaLlc3spVV1111VVXXfWionLVVVddddVVV1111VVX/beSxP0k8UCSeCBJ3E8SAJJ4UdhGEs/NNpL415AEgCQkIQlJSEISkogIACRhGwDbSCIiyEwkIQkASUji+ZHE/Var1a1cddVVV1111VUvKipXXXXVVVddddVVV1111X8q2w/m30ESDySJ5yYJAEkASAJAEs+PbSTxryEJSUgCQBKSkIQkJBERRAQRgSQkAWAbANvYJjORRESQmUjigSTxgiyXy6dz1VVXXXXVVVe9qKhcddVVV1111VVXXXXVVf+puq5DEv8ZJPEvsY0k/iNJ4oEkIQlJSEISEYEkADITSUhCEpKQxANJ4kWxWq2ewVVXXXXVVVdd9aKictVVV1111VVXXXXVVVf9p7INgCT+rSTxopLEfwVJSEISkogIJBERRAQRwf0iAgDbZCaSkIQkJCEJAElI4oXJTK666qqrrrrqqhcZlauuuuqqq6666qqrrrrqP01mPoj/BJJ4bpJ4IEn8Z5DE/SQhCUlIIiKQREQgCUkAZCaS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IQlJAEgCQBL/WraxTWuNq6666qqrrrrq34zgqquuuuqqq6666qqrrvoPl5kP5j+JbV4Y2/xnkIQkJCEJSUhCEpKQhCQkIYn7SeKFsc0Ls7u7+9tcddVVV1111VX/VgRXXXXVVVddddVVV1111X8KSQBI4oEk8a9lm/9oknhukrifJAAkIQlJSEISkpCEJCQhCUlIQhIAkpDEVVddddVVV13134rKVVddddVVV1111VVXXfUfzvaDASRxP0m8MLaRxL+VbSTx/EjiRSUJSQBI4oEkIQlJSEISEYEkJCEJSdxPEpKQhCT+LVar1a1cddVVV1111VX/VgRXXXXVVVddddVVV1111X8KSfxr2eZFZZsXRhL/GpJ4fiQhCUncTxKSkIQkJCEJSUhCEv8RJHHVVVddddVVV/27ULnqqquuuuqqq6666qqr/sNFBP9VbCOJfwtJAEjiuUlCEgCSkIQkJCEJSUQEkpCEJCQhCQBJSEISLwrbPLdz5879DlddddVVV1111b8Hlauuuuqqq6666qqrrrrqP5ztB/HfyDaSeH4k8UCSeGEkcT9JSEISkpCEJCQhCUlIAkASLyrbPD9HR0e3ctVVV1111VVX/XsQXHXVVVddddVVV1111VX/4SICSfxvIwlJSAJAEgCSkIQkJCEJSUhCEpKQhCQkcT9JAEji+bHNVVddddVVV131n4rKVVddddVVV1111VVXXfUfTtKDASTxv5UkACQBIAkASUhCEpKQREQgCUkASEISAJL4tzo6Ono6V1111VVXXXXVvweVq6666qqrrrrqqquuuuo/nCTuJwlJ/E8niRdEEgCSkIQkJCEJSUhCEpKQBIAkJHE/SfxrHR0dPYOrrrrqqquuuurfg+Cqq6666qqrrrrqqquu+g8nCUn8R7DN/WzzwtjmBZHE/STxwkgCQBKSkIQkJCEJSUhCEpKQREQgCUlI4j9CZnLVVVddddVVV/27EFx11VVXXXXVVVddddVV/+EkPZj/ASTxopAEgCQkASCJB5KEJCQhCUlIIiKQhCQkIQkASUhCEpJ4INvY5l9y8eLF3+aqq6666qqrrvr3oHLVVVddddVVV1111VVX/b8kiX+JJCQhCQBJSEISkpCEJCQhCUlIAkASV1111VVXXXXVfzsqV1111VVXXXXVVVddddV/uFLKgyUhif8KtpHEv5YkJPHc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u9x6663cdttt7O3tceeddxIRlFKICCKCUgoRQSmFUgqlFEop1Frpuo6u6+i6jtlsxnw+Z7FYsLGxwebmJltbW2xtbbGxsUHXdUQEq9WKaZq433333Xfrb/3Wb333b/3Wb3332bNnn8FVV1111VVXXfU/BXrQgx7EVVddddVVV1111VVXXfW/xzXXXPPgF3uxF3vtF3uxF3ut13md13lvno+9vT0uXbrE/v4+d911F5I4ODggIjg6OqKUwmq1otZKrZVjx47RdR1937Ozs8P29jabm5v0fc/Gxga1Vp7bfffdd+tv/dZvfffZs2ef8Vu/9VvfzVVXXXXVVVdd9T8RetCDHsRVV1111VVXXXXVVVdd9b/XmTNnHvTiL/7ir/NiL/Zir3XNNdc8+MVe7MVem3+ng4MDtra2uN999913K8DZs2dv/fu///vf/od/+Iff+Yd/+Iff5qqrrrrqqquu+p8OPehBD+Kqq6666qqrrrrqqquu+r/jmmuuebBtX3PNNQ+55pprHvxiL/Zir3Xffffd+uIv/uKvDXDmzJkHA1xzzTUP5pn+4R/+4bfPnDnzYICzZ8/eet99991633333QrwD//wD7/zD//wD7/NVVddddVVV131vxF60IMexFVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Slauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KfwTjQKp3ku1BTgAAAABJRU5ErkJggg==) ```js // Create a spring by sweeping around a helix path. @@ -91,15 +91,9 @@ springSketch = startSketchOn(YZ) sketch001 = startSketchOn(XY) rectangleSketch = startProfileAt([-200, 23.86], sketch001) - |> angledLine([0, 73.47], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 50.61 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -108,13 +102,13 @@ circleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63) sketch002 = startSketchOn(YZ) sweepPath = startProfileAt([0, 0], sketch002) |> yLine(length = 231.81) - |> tangentialArc({ radius = 80, offset = -90 }, %) + |> tangentialArc(radius = 80, angle = -90) |> xLine(length = 384.93) sweep([rectangleSketch, circleSketch], path = sweepPath) ``` -![Rendered example of sweep 2](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAFjVklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqr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1VVXXXXVVf/Bpmn67czENvezjW2em20AbHM/2zw329zPNrZ5YWxjm+fHNg9km/vZBsA2z00SkogIIoKIICKICCQhCUkASEISAJK4nyQkcdVVV131f9WZM2cefOHCBV5UJ0+eBODw8JD/K2zz3+n6668H4B/+4R9+h6uuuuqqq64Cgquuuuqqq676DzaOI5mJbWxjm/vZ5n62eUFsYxvb3M82D2Qb2zyQbWzzorINgG1sYxvbANgGwDYAkpCEJCKCiEASkpCEJCQhiftJAkASkgDY3t5+ba666qqr/o+65pprHszzYZvn58SJE/x/ZZv/aLa56qqrrrrqqudCcNVVV1111VX/wSLid2xjG9sA2MY2ALaxzf1sA2Cb58c297PNc7ONbWzzgtjGNvezjW0AbANgG9vYxja2sQ2AJCQREUQEEUFEEBFEBBGBJCQhCUlI4rlJ4qqrrrrq/7oLFy7wojp58iQA9913H1c9f7b517juuusA+Id/+Iff5qqrrrrqqquA4Kqrrrrqqqv+g0m61Ta2sY1tXlS2+ZfY5l/DNvezzfNjm/vZxja2eW6SiAgigoggIpCEJCQhiecmiftJYj6fP5irrrrqqv+jrrnmmgdfuHCBF8Q2V/3n2traAuC+++67lauuuuqqq64Cgquuuuqqq676T5CZ2AbANraxjW3uZxvbANjmfrZ5brZ5INv8S2xjm+dmm/vZ5n62sY1tbANgm/tJQhKSiAgigoggIpCEJAAkIQlJSAJAEpK46qqrrrrqOZ04cQKAw8ND/iezzYvCNi8K2/xHs83W1hYA9913361cddVVV1111RUEV1111VVXXfUfLCJuba3dmpnY5rnZxjYvjG1sY5v72eaBbGOb52Yb27yobGMb29gGwDa2sc39JCGJiCAiiAgigoggIpCEJCQhiftJ4n6SmM1mD+aqq/6XO3PmzIMB7rvvvlu56qpnerEXe7HXBrhw4QL/Etv8a0ni/xvb/Gtcd911APzDP/zDb3PVVVddddVVVxBcddVVV1111X+C1tqttrGNbWwDYJvnZhsA2zw/trmfbZ6bbWxjG9u8KGxjm+fHNraxDYBt7icJSUgiIogIIgJJRASSkASAJCQBIAlJAEQEpZQHc9VVV131f8w111zzYP4VHvawhwFw3333cdW/j22uuuqqq6666gUguOqqq6666qr/BK21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T0ISz00SknhhJGGb/2i2kcQD2UYS97MNgCQAbAMgCQDbSALANpIAsI0kbAMgCdtIwjaSsA2AJGwjCdtIwjaSsI0kbAMgiauuuuqqq676T0Tlqquuuuqqq/4X+a3f+q3v/od/+Ifffu3Xfu33eqd3eqfPfrmXezle7uVejosXL/LXf/3X/NVf/RWXLl3ifpKwjSQAbCMJ20gCwDaSeCDbAEgCwDaSsM3m5iY7Oztcf/31vORLviQPdN999936W7/1W9/9oz/6o5/DVVddddX/UX//93//2y/zMi/z2j//8z/PA508eRKA1hqSkIRtJGGbF0QStvnXso0knpttJPFAtpHEA9lGEvezjSQAbCMJANtIAsA2kgCwjSRsIwnbSALANpKwjSRsIwnbSMI2krANwMbGBgD33XffrVx11VVXXXXVfywqV1111VVXXfW/zH333Xfrj/7oj37Ob//2b3/Pa7/2a7/X67zO67z3Nddc8+DXeZ3X4XVe53XY3d3l1ltv5RnPeAbPeMYzuHTpEgC2kcTzYxtJPDfb7OzscMMNN7Czs8MNN9zAddddxwPdd999t/7Wb/3Wd//2b//299x33323ctVVV131f9w//MM//M7rv/7r89xOnToFQGYiiecmCdv8V7CNJB7INpJ4INtI4n62kQSAbSQBYBtJANhGEgC2kYRtJGEbAEnYRhK2kYRtJGEbSdhGEidPngTgH/7hH36bq6666qqrrvqPR+Wqq6666qqr/pe67777bv3RH/3Rz/nt3/7t73mxF3ux136xF3ux13qd13md9z5+/Dgv/dIvzUu/9EsDsLu7y6VLl7h06RKSuHTpEvv7+wBEBACS2NnZQRKSuPHGG5HEDTfcwPNz33333fpbv/Vb3/0P//APv/MP//APv81VV1111f8jZ8+evfXUqVM86lGP4klPehLPTRKSeEEkYZvnRxK2eVHZRhLPj20k8UC2AZDE/WwjifvZRhIAtgGQhG0AJGEbSQDYRhK2kQSAbSRhG0nYRhK2kYRtJGGbjY0NAO67775bueqqq6666qr/eFSuuuqqq6666n+5++6779b77rvvu3/rt37ru3/0R3/0c86cOfPgF3uxF3utF3/xF3/tF3uxF3vt48ePc/z4cf6t7rvvvlvPnj1769///d//9j/8wz/89j/8wz/8DlddddVV/4/dd999t/7D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ALjvvvtu5aqrrrrqqqv+81C56qqrrrrqqquuuuqqq676dzh79uyt11xzzYMBJCEJ20jCNg8kCds8kCRsY5t/rYggM/nPYBsASTyQbQAkAWAbAEkA2EYSALaRhG0AJGEbSczncwDuu+++W7nqqquuuuqq/zxUrrrqqquuuuqqq6666qqr/h3+/u///rdf7MVe7LUBIgIA27wgtnlutnkg2zyQbR7INg9km/vZ5oFs80C2eW62uZ9tHsg2z802z802z49tJGGbB5rP5wCcPXv2GVx11VVXXXXVfx4qV1111VVXXXXVVVddddVV/w6//du//T1nz559xod/+Id/F88kiRdEEldd8SM/8iOf/Vu/9VvfzVVXXXXVVVf950EPetCDuOqqq6666qqrrrrqqquu+ve45pprHnzmzJkHAwbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyYB4TgbEczIgnpMB8ZwMiOdkQDwnA+I5GRDPyf/wD//wO1x11VVXXXXVfy70oAc9iKuuuuqqq6666qqrrrrqqquuuuqqq6666v8kKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yr+Eb+/zPL/fUIgAAAAAElFTkSuQmCC) +![Rendered example of sweep 2](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAFhqElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqr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kpCEJAAkIQkAScxmswdz1VVXXfV/yDXXXPNg/gW2ud+JEycAODw85LlJ4qp/veuuuw6Af/iHf/htrrrqqquuuurZCK666qqrrrrqP0lE/E5mYhvbANjGNgC2sc3zYxvbPDfb3M82tvmX2MY297PNA9nGNg9km8zENraxzQNJQhIRQUQgiYhAEpJ4IEncTxIAEUGt9cFcddVVV/0fcebMmQcDnD9/nhfFyZMnATg8POTfShL/Ekn8SyTxf8HW1hYA9913361cddVVV1111bMRXHXVVVddddV/nlttYxsA27wgtgGwzQPZxja2eUFs8/zYxjbPj22em21sYxvb2MY2trGNbQAkERFEBBFBRBARSCIikIQkJCGJ+0kCQBIAtdYHc9VVV131f8Q111zz4AsXLvCisM3JkycBODw85PmRxFUvuq2tLa666qqrrrrqBSC46qqrrrrqqv9EtrGNbQBsYxvb2AbANg9km+fHNgC2eW62sY1tbGObF4VtnpttbGMb29jmgSQhiYggIogIIoKIQBKSkIQkACQhiQeShCSuuuqqq/4vOX/+PP/VJHEVXHfddQD81m/91ndz1VVXXXXVVc+J4Kqrrrrqqqv+k0TEra21W21jG9s8N9vczzYvKtv8e9kGwDa2sY1tbGMb29jGNrZ5IElIIiKICEopRAQRQUQgCQBJ3E8SkpAEQNd1D+aqq6666v+IM2fOPOjChQu8qE6cOAHA4eEhL4gk/iNI4v8i21x11VVXXXXVi4Dgqquuuuqqq/4TtdZutY1tbGMbANs8kG0eyDa2eW62uZ9tbPOisI1tbGOb58c2tgGwjW1sYxvb2AZAEpKICCQREUQEEYEkJCEJSUhCEpJ4IEnMZrMHcdVVV131f8Q111zzYP4VTp48CcDh4SEvjCT+JZL495LEv0QS/1Ndf/31APzDP/zD73DVVVddddVVz4ngqquuuuqqq/4TdV1HZmKb+9kGwDYAtrmfbR7INrZ5INs8kG1eENvY5rnZBsA2ALa5n20AbGMb29jmgSQhiYggIogIIoKIQBKSkMRzk4QkJDGbzR7MVVddddX/IefPn+d/KklcddVVV1111f9TBFddddVVV131n+jw8PC3bQNgG9sA2AbANvezDYBtnpttbPOC2MY2trGNbWzzwtgGwDb3s41tbGObzMQ2trHN/SQhiYggIogIIoKI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bGObzCQzyUxs80CSkEREEBFEBJKICCQhiftJQhIAkpjNZg/mqquuuup/ofPnz/OievjDHw7A2bNneSBJSOK5SeL5kcRzk8Rzk8SLShLPTRLPjySeH0k8P5L415LEv+S+++67lauuuuqqq676lxFcddVVV1111X8hSbfaJjMBsI1tbPPcbHM/2/xLbPNvYRsA29gGwDa2sY1tbJOZZCa2sY1tbAMgCUlEBBFBRBARRASSkIQkJCGJ+0kCYD6fP5irrrrqqv9lrrnmmgfzbyCJ50cSz00Sknhuknhuknhuknhuknh+JPHcJPGfSRL/Wtdddx0A9913361cddVVV1111b+M4Kqrrrrqqqv+G9jGNra5n23uZxsA29zPNraxjW1sA2Cb+9nm38I297PN/WxjG9vYxjaZSWZimweShCQigoggIogIIgJJSEISAJKQBIAkrrrqqqv+Nzpz5syDz58/D4BtAGwDYBsA2wDY5uTJkwAcHR0hCUk8N0k8P5J4bpJ4bpJ4bpJ4bpJ4UUniuUni+ZHE8yOJfy1JvDBnz559BlddddVVV131LyO46qqrrrrqqv9CEXHrNE232sY2ALaxDYBtbPOvZZv72cY2/x62sY1tbGObzCQzyUxsk5nYxjYAkpCEJCKCiCAikIQkACQhiftJAmA+nz+Yq6666qr/Za655poHnz9/nn8PSTw3SUjiuUniuUniuUniuUniuUniuUniRSWJfw1JPD+S+Ne47rrrAPiHf/iH3+aqq6666qqr/mUEV1111VVXXfVfrLV2q21sY5sXxDYAtnlBbPOC2MY2trGNbWxjG9vYxjYPZJvnZhvb2MY2tslMbGMbAElIIiKICCKCiEASEYEkJAEgCUncTxKSuOqqq676v+zkyZMAHB0d8dwkIYnnJonnJonnJonnJonnJonnJonnJonnJonnRxLPTRL/USTx3La2tgC47777buWqq6666qqr/mUEV1111VVXXfVfrLV2q21sA2AbANvczzYPZJt/iW3+LWwDYBsA29jGNraxTWZim8wkM8lMbGOb+0lCEhFBRBARRASSiAgkIYn7SUISAPP5/MFcddVVV/0vc8011zz4/PnzvChOnjwJwNHREZKQxHOTxHOTxHOTxHOTxHOTxHOTxHOTxHOTxHOTxItKEs+PJJ4fSVx11VVXXXXVfxKCq6666qqrrvov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bPNAkrDNfybb3E8SL4htACRxP9sASALANgCSALCNJABsIwnbSALANpKwjSRsA3DixAkA7rvvvlu56qqrrrrqqv8cVK666qqrrrrqqquuuuqqq/6N/v7v//63X+ZlXua1eQBJAEjCNi+MJGxjm/9KtgGQxAtiG0k8kG0kcT/bSALANpIAsI0kbAMgCdtIwjaSeKCzZ8/eylVXXXXVVVf956By1VVXXXXVVVddddVVV131b/QP//APv/P6r//6PFBEYJv7ScI2AJKwDYAkbPOCSMI2trGNbWyTmfxHsc39JPHcbAMgifvZBkASALaRBIBtJAFgG0kA2EYStpGEbSSxWCwAuO+++27lqquuuuqqq/5zULnqqquuuuqqq6666qqrrvo3Onv27K2nTp3ifpIAkIRtJGEbAEnYBkAStnlukrCNbWzz/EQEtslM/iPZBkASz802AJK4n20kAWAbAEnYRhIAtpEEgG0kYRtJHD9+HIB/+Id/+G2uuuqqq6666j8Plauuuuqqq6666qqrrrrqqn+j++6779b77rvv1muuuebBAJJ4fiRhGwBJ2Oa5ScI2L6qIIDP5j2YbAEk8N9tI4n62kcT9bCMJ2wBIwjaSALCNJGyzWCwAuO+++27lqquuuuqqq/7zULnqqquuuuqqq6666qqrrvp3OHv27K3XXHPNgwEkIQnbSMI2DyQJ2zyQJGxjm3+tiCAz+c9gGwBJPJBtACQBYBsASQDYRhIAtpGEbQAkYRtJzOdzAO67775bueqqq6666qr/PFSuuuqqq6666qqrrrrqqqv+Hf7+7//+t1/sxV7stQEiAgDbvCC2eW62eSDbPJBtHsg2D2Sb+9nmgWzzQLZ5bra5n20eyDbPzTbPzTbPj20kYZsHms/nAJw9e/YZXHXVVVddddV/HipXXXXVVVddddVVV1111VX/Dr/927/9PWfPnn3Gh3/4h38XzySJF0QSV13xIz/yI5/9W7/1W9/NVVddddVVV/3nQQ960IO46qqrrrrqqquuuuqqq67697jmmmsefObMmQcDBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/J//AP//A7XHXVVVddddV/LvSgBz2Iq6666qqrrrrqqquuuuqqq6666qqrrrrq/yQqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/Kv4RS5EogPVEQ3gAAAAASUVORK5CYII=) ```js // Sectionally sweep one sketch along the path @@ -126,12 +120,12 @@ circleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63) sketch002 = startSketchOn(YZ) sweepPath = startProfileAt([0, 0], sketch002) |> yLine(length = 231.81) - |> tangentialArc({ radius = 80, offset = -90 }, %) + |> tangentialArc(radius = 80, angle = -90) |> xLine(length = 384.93) sweep(circleSketch, path = sweepPath, sectional = true) ``` -![Rendered example of sweep 3](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEFJ0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddX/Ytdcc82DX+zFXuy1Ac6cOfMggGuuuebBAPfdd9+tZ8+efcZ9991369mzZ2+97777buWqq/6XOHPmzPzs2bMrrrrqqquuuuqqq/59qFx11VVXXXXVVVf9L3LNNdc8+LVf+7Xf68Vf/MVf+8Ve7MVem2d63OMed+s111zzYB7g9OnTPNA//MM//Pbf//3f//bZs2ef8Q//8A+/fd99993KVVf9D/PKr/zKN37CJ3zCHTzA273d24mrrrrqqquuuuqqfxv0oAc9iKuuuuqqq6666qr/6d7xHd/xs97pnd7ps++7775bI+LBv/u7v4skHv/4x/PEJz4RAEk8kCROnz4NwKMf/Wge9ahHcfr0aR796EcDcN999936oz/6o5/zW7/1W9/NVVf9D/ETP/ET5rn89m//9hd/3dd93adw1VVXXXXVVVdd9a+HHvSgB3HVVVddddVVV131P9WHf/iHf9frvM7rvPfZs2f5vd/7PX73d3+X8+fPIwkASQBI4n6SeGFOnz7Nox/9aF7t1V6NRz/60fzDP/zDb//93//9b//oj/7o53DVVf/NfuInfsI8l3/4h3/47c/8zM98Ha666qqrrrrqqqv+9ahc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6bO46qqrrrrqqqv+tyC46qqrrrrqqquuAvq+f+9aK6UUIoKIQBKSkIQkJAEgCUncTxKSuJ8kACRxP0ncTxIPJAlJSEISz48kJCGJB5LE8yMJAEkASOJ+knggSVx11VX/sh/90R/9HIAXe7EXe+0Xe7EXe22uuuqqq6666qr/DQiuuuqqq6666qr/94Zh+KyIICKQREQgCUlIQhKSkIQk7icJSUgCQBKSAJAEgCQkASAJSdxPEpL415LEA0nifpL4t5AEgCRekGEYfoerrvp/7L777rv167/+698H4MM//MO/i6uuuuqqq6666n8Dgquuuuqqq6666v+9Usp711oppRARSEISkpCEJCQhCUlIQhKSkASAJCQBIAkASdxPEveThCSemyQkIQlJSEISknhukpDE/SRxP0kASAJAEveTxP0k8YJI4rlN0/TbXHXV/3P/8A//8Nv33Xffrddcc82DX+d1Xue9ueqqq6666qqr/qcjuOqqq6666qqr/l+bpum9u657cEQQEUQEkpCEJCQhCQBJSEISkrifJCQBIAkASQBIQhIAkpDE/SQhCUlI4oWRhCSemyTuJ4l/LUncTxIviG0y81auuur/ufvuu+/WH/3RH/0cgHd8x3f8LK666qqrrrrqqv/pCK666qqrrrrqqv/vPqvWSikFSUhCEpKQhCQkIYnnJglJ3E8SAJIAkMT9JHE/SUji30ISknggSTw3STw3STw/knggSTyQbcZx/G2uuuqqy37rt37ru//hH/7ht6+55poHf/iHf/h3cdVVV1111VVX/U9GcNVVV1111VVX/b81juN7933/4IggIogIJBERSEISkpCEJCQhCUlIQhIAkpAEgCQAJAEgCUncTxLPTRKSkIQkJCEJSUhCEs9NEs+PJB5IEs+PJP41pmm6lauuuupZfuRHfuRzAF7sxV7sta+55poHc9VVV1111VVX/U9FcNVVV1111VVX/b8VEZ9VSqGUQkQgiYhAEpKQBIAkJCEJSUhCEgCSkASAJAAkASCJ+0lCEveThCQk8aKQhCQeSBL3k8QLI4nnJon7SQJAEs/POI6/w1VXXfUs//AP//Db//AP//Db11xzzYPf8R3f8bO46qqrrrrqqqv+pyK46qqrrrrqqqv+XxrH8b1rrQ8upRARSCIikIQkJCEJSUhCEpKQxP0kIQkASQBIAkASAJKQ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29zPNraxTWaSmWQmmUlm0lojIpCEJABsExFIwja2sU1rjdYarTUyk9YamUlmkpnYxja2sY1tbGObfw1J2ObfQhJXXXXVVVddddVVV131/xyVq6666qqrrrrqv0xrDUnYBsA2ALaxzQtjG0k8kG0kYRtJPD+2sY1tbGMb29jGNplJZtJaIyJorSEJSdimlEJmIgkA22QmmUlrjcyktUZmkplkJrbJTGxjG9vYBsA2trmfbf6zSeKqq6666qqrrrrqqqv+nyK46qqrrrrqqqv+y9xzzz232gbANgC2eSDbPDfb3M82ALZ5braxjW1sYxsA29jGNrbJTDKTzCQzaa2RmbTWaK3RWmOaJlprTNNEa41pmpimiWmaaK3RWqO1RmuN1hqZSWZim8zENraxjW1sY5v72eZFJYl/DUlcddVV/7edOXPmwQBnz569lauuuuqqq6666oUhuOqqq6666qqr/stcc801ANgGwDYAtgGwDYBtbGMb29zPNgC2uZ9tAGzz/NjGNraxjW1sY5vMJDPJTFprtNZordFao7VGa43WGtM00VqjtUZrjdYarTVaa7TWyEwyk8wkM8lMMpPMxDa2AbCNbV4YSbwwkgCQxItCEq/zOq/zXlx11VVXXXXVVVddddX/T1Suuuqqq6666qr/MpKeYRvb2AbANgC2eWFsI4kHso0kbCMJANvYxja2sQ2AbWxjG9tkJhFBZpKZZCaZSWsNSQDYJiKICB4oM8lMMpPWGq01WmtkJpmJbWxjm8zENra5n20AbPP8SMI2/1FuvPHG1+aqq6666qqrrrrqqqv+fyK46qqrrrrqqqv+y9x777232uZ+tnlutnlutrmfbQBsA2Cb+9nmgWwDYBvb2MY2trFNZmKbzCQzaa2RmbTWaK3RWqO1xjRNtNZorTFNE601Wmu01shMMpPMJDPJTDIT29gGwDa2sc2LShIPJIl/jxd7sRd7ba666qr/M6655poHA9x33323ctVVV1111VVXvTAEV1111VVXXXXVf5nrrrsO29jGNgC2sY1tbANgG9vYxjb3s80LYhsA29jGNgC2sY1tbGObzCQzsU1mkplkJplJa43WGq01Wmu01mit0VqjtUZrjdYamUlm0lojM8lMMhPb2CYzsY1tbHM/2wDY5l8iiX8tSTy3a6+99sHXXHPNg7nqqquuuuqqq6666qr/f6hc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SEISAJKwjW0yk42NDR760Idy4403cr/HPe5xPP3pT2dvb48XlSSuuuqq/xuuueaaBwPcd999t3LVVVddddVVV70oqFx11VVXXXXVVf/lMpP72ebChQv85m/+Js94xjN467d+a44fP86bvumb8mqv9mr80R/9EY9//OOxjW0kYRtJANhGEgC2AZAEgG0eSBK2uZ9tHsg2D2QbSUjCNpL4l9jmfpJ4QSQhiYhAEgCSmM1mXHvttTz4wQ/mgZ74xCfyjGc8g/39fVprvCCSeH5KKQ9urd3KVVdd9b/amTNnHgxw9uzZW7nqqquuuuqqq14UVK666qqrrrrqqv8Ot9rmud1666183dd9Ha/92q/NS77kS3Ls2DHe+I3fmFd91VflcY97HHfeeSd33XUXkrANgCRsAyAJANs8kCQAbHM/SdjmgWzzH8k2knggSUhCEhGBJDY2Nrj22mu55pprmM/n3G+1WnHnnXfyxCc+kdYarTUeSBIvjCQAbHPVVVf933DNNdc8GOC+++67lauuuuqqq6666kVB5aqrrrrqqquu+i83DMOttrGNbWxjm/v97u/+Ln//93/Pgx70IF7iJV6CY8eO8cqv/MoA7O3t8YQnPIG77rqLu+++G9tIAsA295PE/WzzQJKwzXOzzf1sIwkA20jCNpJ4UUjiuUlCEovFgpMnT7JYLHjwgx/MA63Xa+655x4uXrzI+fPnaa0hiX+JJF4QSVx11VX/N3z4h3/4dwG82Iu92Gtz1VVXXXXVVVe9KKhcddVVV1111VX/5U6fPo1tXpjd3V329/d53OMex7Fjx3i1V3s1HvvYx7Kzs8MrvuIrArC/v89dd93F3Xffzf7+Pvfccw+SALDN8yMJ2zw3SdgGwDaS+LeQBIBtJGGbzc1NbrzxRiRxww03sFgseKD1es19993HpUuXuHTpEplJZiIJSQBIQhL3k8SLQhIAtdYHt9Zu5aqrrvpf6yd+4ifMM11zzTUP/omf+Am/3du9nbjqqquuuuqqq14YKlddddVVV1111X+HZ9jGNraxDYBtbHM/29hmb2+PX/mVX+GP//iPufnmm7npppt4zGMew/b2No961KN41KMeBcD+/j4HBwccHBxwzz33cHBwwH333ccD2ea5ScI2/x4bGxsAbGxscOrUKQBOnTrFqVOneG6r1YrVasWlS5fY399nb28PSQBIQhIPJIn7SUIS95PEVVdd9X/f27zN27wbV1111VVXXXXVvwWVq6666qqrrrrqv9y9995765kzZ7CNbQBs8y/Z29vj8Y9/PE94whP4zd/8TXZ2drjxxhu58cYbedSjHsX29jbb29sAPOIRj+B+BwcHABweHnJwcMDh4SFHR0dIQhKHh4dIQhKSuJ8kJAGwubkJwMbGBgAbGxssFgsATp8+zXNbLpcsFgsAlsslFy5cYLVacenSJS5dukREEBFEBJJ4bpKQhCReVJK4nyTuJ4mrrrrqf7frr7/+Nbjqqquuuuqqq/4t0IMe9CCuuuqqq6666qr/Wpn54BMnTjx9sVjQ9z1d19F1HbVWSilEBKUUIoKIICKQREQQEUhCEhGBJCQhiZ2dHW644QYkcf3117O9vc11113Hf5WjoyOWyyXnz58H4MKFC1y4cIGIQBIRQUQQEUQEEUFEEBE8UGbSWqO1RmuNaZporTFNE601Wmu01mitkZm01shMMpPWGq01MpNpmpimiWEY+Pu///vXWa/Xv81VV131v9ZP/MRPmOfydm/3duKqq6666qqrrnphqFx11VVXXXXVVf9tbGOb+9nGNgC2eX5sIwkA20jifvv7+zzpSU9CEk9+8pORhCS2t7eRxNbWFtvb22xtbbG1tYUkADY3N7mfJJ6bJI6OjgA4OjoCYLlccnR0BMD58+cBkASAJAAkIQnbSOK5SUISAJIAsA2AJCQBIAkASTyQJAAk8UCSeG611gev12uuuuqq/71+8Ad/8NXe9V3f9Q94prd7u7cTV1111VVXXXXVv4TKVVddddVVV131Xy4ibs1MHsg2z802trGNJJ4f20jihTk4OEASh4eH3HfffUhCEpKQhCQkIQlJSEISAJKQBIAkACRxP0k8N9tI4oWRxAsiiftJAkASAJKQxItCEgCSiAiuuuqq/91+4id+4g/f9V3fFYAP+ZAPeQhXXXXVVVddddWLguCqq6666qqrrvpv0Vq71Ta2sQ2AbQBs8/zYBsA2/9lscz/bPJBt7meb+9nm30ISkpCEJAAkIQkASTw3SbwoJHHVVVf933PffffdylVXXXXVVVdd9aIguOqqq6666qqr/lucOnUK29gGwDYAtvnXss1/Bdv8V5DE/SRxP0n8W3Vd9yCuuuqq/9WuueaaBwOcPXv2GVx11VVXXXXVVS8qgquuuuqqq6666r/FPffccyvPZJvnZpsHss0D2eaBbGObfy/b2OZ+tnl+bHM/2/xHkIQkACQhCUlIQhIAknggSQBIAkASz00SEcFVV131v9uZM2ceDHDffffdylVXXXXVVVdd9aIiuOqqq6666qqr/lucPn0a29gGwDa2eSDb2MY297PN/Wzz3GxjG9vYxja2sY1tbPOC2OYFsQ2AbV4Y29zPNg9km+cmCQBJ3E8SkpDE8yOJq6666v+fa6655sEA9913361cddVVV1111VUvKoKrrrrqqquuuuq/RWvtVtsA2OZ+trHNfybb2MY2trGNbZ6bbV4Y29zPNg9kGwDbANjmBZHE/STxQJKQhCQkcT9JSOJFJYmrrrrqqquuuuqqq676f4jgqquuuuqqq676b3H33Xffahvb2OZFYRsA29zPNv8ZbPOC2OY/gyQAJCEJSTw3SfxbdF33YK666qr/1c6cOfMggPvuu+/pXHXVVVddddVVLyqCq6666qqrrrrqv4XtZ9jmfraxzf1s86KyzX8m2wDY5rnZ5n62+deQxP0kASAJSdxPEpKQhCSeH0kASOJ+kgCQBIAkrrrqqv/drrnmmgcDnD179hlcddVVV1111VUvKoKrrrrqqquuuuq/haRbAWxjm/vZxjYAtgGwjW0eyDYPZJv/CLaxzb+HbR7INvezzQsiiftJQhLPjyReGEkASAJAElddddX/ftdcc82Dueqqq6666qqr/rUIrrrqqquuuuqq/xbXXnstmcn9bPP82OaBbPOC2MY2L4htbPOC2Oa52eb5sc39bPPvIYn7SUISkgCQhCQkASAJAEkASOJFMZvNHsxVV131v9qZM2ceDPAP//APv81VV1111VVXXfWiIrjqqquuuuqqq/5b3HfffbcC2MY2ALb517DN82Mb29jGNraxzf1sYxvb2MY2tnlutrmfbQBs8x9JEgCSkIQk7ieJB5LEA0niqquuuuqqq6666qqrrnqhCK666qqrrrrqqv8W1113Hba5n20AbANgm+dmGwDb3M82/11scz/bANjm30sSkpCEJCQhiftJ4rlJ4oWRxFVXXfW/2zXXXPNggPvuu+9WrrrqqquuuuqqFxXBVVddddVVV1313+K+++679dSpU9jGNgC2AbANgG3uZ5v/Sra5n20AbANgmxeFbf41JCGJB5LE/SQhiRdGEs9NElddddX/btdcc82Dueqqq6666qqr/i0Irrrqqquuuuqq/za7u7u32sY2tnl+bGOb52ab+9nmP5JtXlS2eX5sA2Cbf4kkJHE/SUhCEgCSkMQDSeJ+knhBJAEwm80ezFVXXfW/1pkzZx4M8A//8A+/zVVXXXXVVVdd9a9BcNVVV1111VVX/bc5PDy8lediGwDbPD+2eX5sY5t/iW1eENvY5oFs8/zY5rnZ5gWxzYtCEpKQhCQkIQkASUhCEgCSuOqqq/5/uOaaax7MVVddddVVV131b0Fw1VVXXXXVVVf9t6m1Yhvb2MY2ALZ5fmzzQLZ5braxzQPZxja2AbCNbWxjG9vY5rnZ5n62AbDNc7PNA9nm+bHNCyOJ5yYJAEk8P5J4fiQhiauuuur/lvvuu+9Wrrrqqquuuuqqfw0qV1111VVXXXXVf5tpmm61zQtim+fHNpJ4YWxzP0n8d7KNJF4YSQBIAkASkgCQBIAk7ieJ5yaJ50cSV1111f9uZ86ceRDAfffddytXXXXVVVddddW/BsFVV1111VVXXfXfZr1e32ob29jGNrZ5INvYxjbPj23+M9jmfrZ5fmzz3GzzryEJSQBI4n6SkIQkJCEJAElI4oWRxHObz+cP5qqrrvpf65prrnkwwNmzZ5/BVVddddVVV131r0Fw1VVXXXXVVVf9tzl9+jS2eW62sc2Lyjb/kWzz/NgGwDbPzTb/ESQhiftJ4n6SeCBJ3E8SV1111VVXXXXVVVddddXzILjqqquuuuqqq/47PQPANraxzb/ENgC2eSDb/HvZxjYPZJsXxjYviG1eVJKQBIAkJCEJAElIAkASz00SL4gkrrrqqv/9XuzFXuy1Ae67775bueqqq6666qqr/jUIrrrqqquuuuqq/zb33nvvrbZ5INvczzYPZJsXxjYvjG1sYxvb3M82tnlhbPNAtnlhbANgmweyjW1eEEkASEISkgCQhCQAJCEJAEk8kCRekFLKg7nqqqv+Vzt79uytXHXVVVddddVV/xoEV1111VVXXXXVf5vrrrsO29jGNrYBsI1tAGxjG9vczzYAtnlutrGNbWxjG9vY5rnZxjYviG2em22em20AbPMfQRL3k4Qk7ieJfy1JXHXVVf+7XXPNNQ8GuO+++27lqquuuuqqq6761yC46qqrrrrqqqv+29x333232sY2tgGwzb+Gbf4z2OZ+tvnXsM1zs80LIglJSEISkpCEJAAkIQlJAEgCQBIvKklI4qqrrrrqqquuuuqqq/6fIbjqqquuuuqqq/7bXHfdddjmBbHNc7PNfzbbPD+2AbANgG3+s0hCEpKQhCQkIQkASTw3STyQJB6olPJgrrrqqv91rrnmmgcD3Hfffbdy1VVXXXXVVVf9axFcddVVV1111VX/be67775bT548iW1sYxsA29jmhbHN/WzzH8E2tnkg27wobANgm+dmGwDbvDCSkIQkACQhiRdGEs+PJK666qr/G17sxV7stQHOnj17K1ddddVVV1111b8WwVVXXXXVVVdd9d+qtXYrgG0AbPNAtrGNbWzzgtjGNv8S29jGNg9km38L2/xnkASAJCQhCUlIQhKSkASAJCTxwkhCElddddX/Xvfdd9+tXHXVVVddddVV/1oEV1111VVXXXXVf6t77733VtsA2OZFYRsA2zw32zw/trHNA9nGNrZ5fmxzP9sA2AbANv8S27yoJAEgCUlIQhIAkpDEi0oS95PEVVdd9b/bmTNnHgRw33333cpVV1111VVXXfWvRXDVVVddddVVV/23OnXqFLa5n21sYxvb/FvYxja2sY1t/rVs869lm/vZ5oWxzXOTBIAkACQhiftJQhKS+NeQBEDXdQ/mqquu+l/nmmuueTDA2bNnn8FVV1111VVXXfWvRXDVVVddddVVV/23ysxbbWMb2/xLbPNAtvmPZpsHss0LY5sHss39bPPCSEIS95MEgCQkIQlJSEIS95MEgCQeSBIviCSuuuqqq6666qqrrrrq/xmCq6666qqrrrrqv9Vdd911q23uZ5sHso1tAGxzP9vczzb/UWzzgtgGwDYAtnlR2QbANs+PJO4nCUkASEISkgCQhCQAJPGikoQkrrrqqv99rrnmmgcD3Hfffbdy1VVXXXXVVVf9axFcddVVV1111VX/3Z4BYBvbANgGwDb3s80LY5sXlW2em21s89xs86Kwzb+XJCRxP0kASAJAEs+PJCQhiRem1vogrrrqqv91zpw582CAs2fP3spVV1111VVXXfWvRXDVVVddddVVV/13u9U2ALa5n21eENsA2OaBbPMvsQ2AbWxjG9s8P7a5n22eH9s8kG2em20AbANgmxdGEpKQhCQkIQlJSEISkgCQxIsqIrjqqqv+97nmmmseDHDffffdylVXXXXVVVdd9a9FcNVVV1111VVX/be67rrrsI1tAGxjm/vZ5l/DNrZ5INvYxjYvKts8P7YBsM1/NElIQhKSkIQkACQBIIn7SeIFkYQkACRx1VVXXXXVVVddddVV/08RXHXVVVddddVV/63uu+++W21jG9s8P7a5n20eyDbPj21sY5t/Lds8kG3+tWxjm38rSQBIQhKSkASAJCTxopAEgCT6vn8wV1111f8qZ86ceRDAfffddytXXXXVVVddddW/BcFVV1111VVXXfXf6rrrrsM297MNgG1scz/b2OZ+trmfbf6j2OYFsc3zYxsA2zw327woJAEgCUkASEISkpCEJCRxP0kASOKBJPH8SOKqq6763+Waa655MMDZs2dv5aqrrrrqqquu+rcguOqqq6666qqr/lvdd999t546dQrb2AbANv8dbPPcbPPcbANgm+fHNv8WkrifJCQhCUncTxKSkASAJAAkASCJq6666v+Oa6655sEA9913361cddVVV1111VX/FgRXXXXVVVddddV/u9barbaxjW0eyDbPzTYAtrmfbV5UtrGNbWxjG9s8N9v8R7ENgG1eGElIQhKSAJCEJCQBIInnRxIvTN/3D+aqq6666qqrrrrqqqv+fyG46qqrrrrqqqv+291777238gC2sY1tAGxzP9u8ILaxzQtiG9v8W9jm+bENgG0AbPOvJYkHkgSAJCQhCUlIQhIAkpDEi0oSkrjqqqv+dzlz5syDAe67775bueqqq6666qqr/i0Irrrqqquuuuqq/3alFGxjG9s8P7axzf1sA2Cb52Yb29jGNraxzb+GbZ4f2wDY5kVlGwDb3M82z48kACQBIAkASUhCEpK4nyQk8cJI4qqrrvrf6ZprrnkwwNmzZ5/BVVddddVVV131b0Fw1VVXXXXVVVf9t9vZ2bnVNg9kGwDb/FezzQPZ5j+SbZ6bJCQBIAlJSEISkpCEJO4nCUm8MJK46qqr/nc7c+bMgwHuu+++W7nqqquuuuqqq/4tCK666qqrrrrqqv9299xzz622sY1tbANgm+fHNg9km/8ItrHNA9nmfrZ5fmwDYJv72cY2/1aSkIQkJCEJAElI4rlJ4oEkASCJ+81mswdz1VVX/a9yzTXXPBjg7Nmzt3LVVVddddVVV/1bEFx11VVXXXXVVf/tTp8+zQtjm+fHNvezzYvKNraxjW1sY5sXlW0AbPMvsc2/hiQkASAJSUgCQBKSkIQkACQhCQBJSEISz00Skrjqqquuuuqqq6666qr/Zwiuuuqqq6666qr/drafYRvb2MY2tnkg29jGNi+Ibf4ltnlR2eZ+tnlR2ea52ea52eaBJHE/SUhCEpKQhCQeSBJXXXXV/23XXHPNgwHuu+++W7nqqquuuuqqq/4tCK666qqrrrrqqv9299133622eW62sc3zYxsA2zyQbWzz3GxjmxeVbZ4f2zw/tnlR2OaBbPNAkpCEJO4nCUlIQhKSkMRVV131f9s111zzYID77rvvVq666qqrrrrqqn8rgquuuuqqq6666r/dddddh21sYxvb/HvZxja2sc2/hm0eyDbPzTYAtnkg2zw32wDY5kUhCQBJSEISkpCEJCQBIAlJSEISL4gkAGaz2YO56qqr/tc4c+bMgwHOnj17K1ddddVVV1111b8VwVVXXXXVVVdd9d/uvvvuu5XnYpv72eaBbPNAtvmPYpv/bLaxzQsjCUlIQhKSkIQkACTxryWJq6666n+Pa6655sEA9913361cddVVV1111VX/VgRXXXXVVVddddV/u+uuuw7b2MY297ONbQBsYxvb3M8297PNv4ZtbANgG9vY5rnZ5n62+dewzb+GJCQhCUlIQhKSkASAJCQhCUlI4n6SeCBJ3E8SV1111VVXXXXVVVdd9f8QwVVXXXXVVVdd9d/uvvvuu/XkyZPYxja2sc1/FtvczzYviG2eH9sA2AbANgC2uZ9tAGzzbyUJSUhCEpIAkMQDSeJ+kpCEJAAkcT/blFIezFVXXfW/wpkzZx4EcN99993KVVddddVVV131b0Vw1VVXXXXVVVf9j9Bau5UXwDbPzTYAtrmfbf4ltvm3sM2Lyjb/WpK4nyQkASAJSUhCEpIAkIQkJAEgiX+JJK666qr/Pa655poHA5w9e/YZXHXVVVddddVV/1YEV1111VVXXXXV/wj33nvvrbaxjW0AbGObfw3b2MY2D2Qb27yobPP82ObfwjYAtnlhJAEgCUlIQhKSkIQkJPFvJYmrrrrqqquuuuqqq676f4Tgqquuuuqqq676H+HUqVPY5n62eSDb2MY2tnkg2zw/trGNbf41bPNAtnlutgGwDYBtAGzz3GwDYJsHss3zIwkASUhCEpKQhCQkIQlJAEgCQBLPjyQAJFFKeTBXXXXV/wov9mIv9toA//AP//DbXHXVVVddddVV/1YEV1111VVXXXXV/wittVsBbGObF4Vt/iPZxjYPZJv72eY/gm1s88JIQhKSAJCEJCQhCUkASAJAEi+MJAAkcdVVV1111VVXXXXVVf+PEFx11VVXXXXVVf8j3H333bfa5n62sQ2Abf4ltvnXsI1tbGMb27yobPOfQRKSeG6SkIQkJHE/STw3SVx11VX/N1xzzTUPBrjvvvtu5aqrrrrqqquu+rciuOqqq6666qqr/ke45pprsI1tbHM/2zw/tgGwzf1s86KwzYvCNi+MbQBsA2Cb+9nGNv8S2zw3SUhCEpKQhCQkIQlJSEISkpDEA0niqquuuuqqq6666qqrrrqM4Kqrrrrqqquu+h/hvvvu+x3bANjmudnmfrZ5QWzzgtjGNi8K2zyQbf4tbPNAtnlutnlukpCEJCQhCUlIQhKSeGEkIQlJ3E8SXdc9mKuuuup/vBd7sRd7bYCzZ88+g6uuuuqqq6666t+D4Kqrrrrqqquu+h/huuuuwza2AbCNbR7INrZ5brZ5INvYxja2sY1tXlS2eSDb3M82/xLbPDfb2OZFIQkASUhCEpKQhCQkIQlJSAJAEpL4l0jiqquu+p/vmmuueTDA3//93/82V1111VVXXXXVvwfBVVddddVVV131P8J99913q21sY5v72cY2z49t/qPZ5kVhGwDbANjmBbHNA9kGwDbPTRIAkgCQhCQkIQlJSOKBJPHCSEISAJK46qqrrrrqqquuuuqq/0cIrrrqqquuuuqq/xGuu+46bHM/29jmfrZ5INs8kG3+tWxjG9vYxjbPzTb3s82/xDYvCtu8IJIAkIQkJCEJSUhCEpKQhCQeSBIviCS6rnsQV1111f94Z86ceRDAfffd93Suuuqqq6666qp/D4Krrrrqqquuuup/hPvuu+/WU6dOYRvbvKhscz/bvKhs829lm/9skpCEJCQhCUlIQhKSkASAJCQhiX+JJK666qr/+a655poHA5w9e/YZXHXVVVddddVV/x4EV1111VVXXXXV/xittVt5JtsA2MY2ALaxjW1eENv8S2zzorDN/Wzz3GwDYJvnxzbPzTYPZBsA2zw3SUhCEpKQhCQAJAEgiecmiRdEElddddVVV1111VVXXfX/CMFVV1111VVXXfU/xr333nurbWwDYJsXxjYAtnkg2zw/trHNi8I2/1q2uZ9tAGwDYJsXhSQkIYn7SUISkgCQBIAkACQhiQeShCQeSBJXXXXV/w7XXHPNgwHOnj17K1ddddVVV1111b8HwVVXXXXVVVdd9T/GqVOnsI1tbPNAtvnXsI1tbGMb27wobGObB7LN/WzzL7HN82MbANsA2OYFkYQkJCEJSUhCEpKQhCQk8UCSeCBJAEgCoO/7B3PVVVf9j3fmzJkHA9x33323ctVVV1111VVX/XsQXHXVVVddddVV/2PYvpUHsI1tbPPcbPNAtvnXso1tbGMb27yobANgGwDbvCC2eW62uZ9tnh9JSEISkpCEJCQhCQBJSAJAEs+PJO4niauuuup/vmuuuebBAPfdd9+tXHXVVVddddVV/x4EV1111VVXXXXV/xj33HPPrbaxjW2em21sY5v72eY/k23uZ5t/iW3+vSQhCQBJSEISkogIJCEJSdxPElddddVVV1111VVXXXXV8yC46qqrrrrqqqv+xzh9+jS2eSDbvKhs86Kyzb/ENs+Pbf6tbPNAtnlBJCEJSUhCEpKQhCQkIYnnJokXZDabPZirrrrqf7RrrrnmwQD33XffrVx11VVXXXXVVf9eBFddddVVV1111f8Ytp9hG9vYxjYAtrHNc7MNgG3uZ5sXxja2+ZfY5oFs89xsA2Cb58c2/x6SkIQkJBERSEISkpAEgCQAJCEJAEk8N0lcddVV//OdOXPmwQBnz569lauuuuqqq6666t+L4Kqrrrrqqquu+h/jvvvuu9U2L4htXhS2eW62sc2Lwjb/Fra5n20AbANgm/vZxja2eUEkcT9JSEISkpDE/SQhCUk8N0lcddVV//tcc801Dwa47777buWqq6666qqrrvr3Irjqqquuuuqqq/7HuO6667CNbWxjG9s8kG1sY5sHss0D2cY2trHNi8I2tnlutrmfbf6tbPP82OaBJAEgCUlIQhKSkIQkJCEJSbwwkgCQBMBsNnswV1111VVXXXXVVVdd9f8HwVVXXXXVVVdd9T/GfffddyvPh21s8/zY5t/KNraxjW3+NWwDYJvnZpsHss2/xDYPJAkASUhCEpKQhCQkIYn7SUISAJJ4IElcddVV/3u82Iu92GsB3Hfffbdy1VVXXXXVVVf9exFcddVVV1111VX/Y1x33XXYxja2+deyzYvKNi8K29zPNi+IbV4Utnkg2zyQJO4nCUlIQhKSkIQkJCEJSUjifpJ4QSQhiauuuup/h7Nnzz6Dq6666qqrrrrq34vgqquuuuqqq676H+O+++679dSpU9jGNraxzf1s80C2AbDN/WzzL7HNi8I2z49tXhDb/EtsYxvbvDCSAJCEJCQhCUlIQhKSkIQkHkgSV1111f9O11xzzYMB7rvvvlu56qqrrrrqqqv+vQiuuuqqq6666qr/UaZpupXnYhvbANgGwDYviG1eENu8KGzzQLZ5brb5zyIJAElIQhKSkIQkJPHcJPEvmc1mD+aqq676H+3MmTMPBjh79uytXHXVVVddddVV/14EV1111VVXXXXV/yj33nvvrbaxjW2eH9s8N9s8kG0eyDa2+ZfYxjb/GrZ5fmxjGwDb2Ob5sc0DSQJAEpIAkIQkJCEJSUhCEpKQBIAkJAEgiftJAkASV1111VVXXXXVVVdd9f8IwVVXXXXVVVdd9T/KqVOneCDbvDC2eUFsYxvbvCC2sY1tbPP82OZ+tnlBbHM/27wobPMvkYQkJCGJiEASkpDE/STx3CRx1VVX/e9yzTXXPBjgvvvuu5Wrrrrqqquuuurfi+Cqq6666qqrrvofJTNvtY1tbANgGwDbPJBtHsg2/xq2+ZfY5vmxzQtimweyzf1sA2Ab29zPNraxDYAkJCEJSUhCEhGBJCQhCUlIQhL/EknYppTyYK666qr/ka655poHA9x33323ctVVV1111VVX/UcguOqqq6666qqr/ke5++67b7XN/WwDYBsA2wDY5n62+deyzb/ENg9km+dmGwDbvKhs80C2eUEkIQlJRASSkIQkJAEgiecmiftJ4n6SuOqqq/7nOnPmzIMBzp49eytXXXXVVVddddV/BIKrrrrqqquuuup/lJd4iZfANraxzfNjmxfENv8S2/xLbPNvYZt/Ddu8IJIAkIQkJCEJSUhCEpIAkIQkJCGJF0YSV1111f9M11xzzYMB7rvvvlu56qqrrrrqqqv+IxBcddVVV1111VX/o/z93//9b9sGwDa2sQ2AbZ6bbQBscz/bvCC2+ZfY5rnZ5n62AbDNi8o2tnkg2/xLJCEJSUhCEpKQhCQkIYnnRxLPTRK11gdz1VVXXXXVVVddddVV/z8QXHXVVVddddVV/6Nce+212MY2D2Sbfw3b2MY2ALaxzfNjG9vYxjb/WrZ5fmxjm+fHNg9kmweSBIAkACQhCUlIQhKSkIQkJCGJF0QSkrjqqqv+Zztz5syDAO67775bueqqq6666qqr/iMQXHXVVVddddVV/6Pcd999t9oGwDbPzTb3s80D2eb5sc0LYpt/iW3uZ5sXxDb3s83zYxvbPJBtAGzzQJIAkIQkJCEJSUhCEs9NEg8kiauuuup/j2uuuebBAGfPnn0GV1111VVXXXXVfwSCq6666qqrrrrqf5Rrr70WANsA2MY2D2Qb29zPNv8WtvmX2Ob5sc2LyjYviG1eGElIQhKSkIQkJCEJSUhCEveThCSeH0lcddVVV1111VVXXXXV/yMEV1111VVXXXXV/yhnz559xqlTp7CNbe5nG9v8S2zzorDNv8Q2D2Sb52ab52abF4VtXhSSkIQkIoKIICKQhCQkASAJSTw3STxQRHDVVVf9z/RiL/Zirw3wD//wD7/NVVddddVVV131H4Hgqquuuuqqq676H6e1divPZBvb3M82D2QbANvczzYvjG3+Jbb517DNv8Q297PN/Wxjm+cmCUkASEISkpCEJCQhCQBJPDdJPD9d1z2Yq6666qqrrrrqqquu+v+B4Kqrrrrqqquu+h/n3nvvvdU2tnlhbPOC2Ob5sc0LYxvbPDfb3M82L4htnh/b3M8297PN/Wxjm+cmCUlIQhKSkIQkJCEJAEkASOK5SUISV1111f9s11xzzYMB7rvvvlu56qqrrrrqqqv+IxBcddVVV1111VX/45w6dQrb2MY2ALaxDYBtbPPcbPNAtrGNbWxjm+dmG9vYxjbPj22eH9v8a9nmfrZ5QSQBIAlJSEISkpCEJCQhCUlIAkASAJJ4fiTR9/2DuOqqq6666qqrrrrqqv8fCK666qqrrrrqqv9xMvNWHsA2L4xt/qvY5rnZ5vmxjW3+JbaxzXOTBIAkJCEJSUhCEpKQhCQkIYnnJonnJomrrrrqf54Xe7EXey2Af/iHf/htrrrqqquuuuqq/ygEV1111VVXXXXV/zj33HPPrbaxjW0eyDYvjG1eVLb5l9jmRWWb+9nmfrZ5brYBsM0LIwkASUhCEpKQhCSuuuqq/zuuueaaBwPcd999t3LVVVddddVVV/1HIbjqqquuuuqqq/7HOXPmDLZ5INvY5rnZBsA297PNv8Q2/xLbPJBt7mebF8Q2z49tXhjb2Oa5SQJAEpKICCQhCUlIQhKSkIQkACQBIIn7SUISV1111VVXXXXVVVdd9f8EwVVXXXXVVVdd9T+O7WfYBsA2tnkg29jGNi+IbV4Q27wwtrHNi8I2ALZ5YWxzP9sA2AbANra5n23uJwkASUgiIpBERCAJSUjiuUniuUkCoO/7B3PVVVf9j3PmzJkHA9x33323ctVVV1111VVX/UchuOqqq6666qqr/se57777brWNbf41bPNAtnlutnlutrGNbWzz/Njmfrb5t7LNi0oSAJKQhCQkIQlJSEISkpCEJCTx/EjifpK46qqr/ue55pprHgxw9uzZZ3DVVVddddVVV/1HIbjqqquuuuqqq/7Hue6667CNbWxjG9vYxjbPzTYviG1sYxvbPDfb/Ets8/zY5rnZ5kVhGwDbANjGNs+PJCQhCUlIQhKSkIQkJHE/SdxPElddddVVV1111VVXXfX/GMFVV1111VVXXfU/zn333XcrL4Rt7mebB7LNfyTbPJBtnpttnh/b2OYFsQ2Abe5nmweSBIAkJCEJSUhCEpK4nyQkASAJSTw/fd8/mKuuuup/nBd7sRd7bYD77rvvVq666qqrrrrqqv8oBFddddVVV1111f841113HbaxjW1sY5sHso1t7mebfy3bvDC2+dewzf1scz/bPJBt/iW2uZ8kACQhCUlIQhKSkIQkJPH8SOJ+kpDEVVdd9T/X2bNnb+Wqq6666qqrrvqPQnDVVVddddVVV/2Pc99999168uRJAGxzP9vY5l9im3+JbV4Y2zw329zPNv9atrHNA9kGwDa2AbDNc5OEJCQREUhCEpKQhCTuJ4nnRxJXXXXV/1zXXHPNgwHuu+++W7nqqquuuuqqq/6jEFx11VVXXXXVVf8jZeattgGwzQtjGwDb3M82L4htnpttbGMb2zw32zw/tnlutnlutnkg29zPNvezzQNJQhKSkIQkJBERSEISkpCEJCTxQJK46qqrrrrqqquuuuqq/8cIrrrqqquuuuqq/5HuvffeW21jGwDb3M82Lwrb2OZ+trHNc7PNv4Ztnptt/rVs80C2eWEkIQlJSCIikIQkHkgSkpDE/SRxv/l8/mCuuuqq/1GuueaaBwPcd999t3LVVVddddVVV/1HIrjqqquuuuqqq/5HOnXqFM/NNrYBsI1tbPNAtnlutrHN82Obf4ltXlS2+ZfY5n62AbDNCyIJSUhCEpKQhCQkIQlJSEISL4wkrrrqqv95zpw582CAs2fP3spVV1111VVXXfUfieCqq6666qqrrvofKTNvtY1tbPMvsc1/Bts8kG3uZ5sXxja2eX5scz/b3M82tnlukgCQhCQkIQlJSEISknh+JHHVVVf9z3bNNdc8GOC+++67lauuuuqqq6666j8SwVVXXXXVVVdd9T/S3XfffattAGxjmxeVbV4UtnlhbPOisM0LYxsA29jmfraxDYBtbPPCSEISkpCEJCICSUgCQBKSkMRzkwSAJK666qr/Wc6cOfMgrrrqqquuuuqq/wwEV1111VVXXXXV/0gv8RIvAYBt7mcbANs8kG0AbHM/27wwtnlBbGOb52ab+9nmudnmfrZ5UdnmfrYBsA2AJCQhCUlIQhIRgSQkIQlJSOKBJCGJ5zabzR7MVVdd9T/KNddc82CAf/iHf/gdrrrqqquuuuqq/0gEV1111VVXXXXV/0j33nvvM2wDYBvbANgGwDa2sc0LYpvnxzbPzTa2sc3zY5t/D9u8MLaxDYBtnh9JSCIikIQkJCGJ+0lCEs9NEgCSuOqqq6666qqrrrrqqv9HCK666qqrrrrqqv+RIuJW29jm38M2trGNbWzz3Gzzr2Gb+9nmudnmhbGNbWxjmxeFJAAkIQlJRASSAJCEJO4niauuuup/j2uuuebBAPfdd9+tXHXVVVddddVV/5EIrrrqqquuuuqq/5Huu+++W20DYBvb2AbANs/NNgC2+dewzb/ENv8S2/xb2QbANraxzQNJAkASkpCEJCQhCUlIQhKSeG6SeG611gdz1VVX/Y9x5syZBwOcPXv2Vq666qqrrrrqqv9IBFddddVVV1111f9I1113HbaxzQPZ5l9im/8otnkg29zPNs/NNg9km/vZxjbPj20eyDYPJAlJSEISkpCEJCQhCUlIQhIAkpDE/SQBIImrrrrqf5ZrrrnmwVx11VVXXXXVVf8ZCK666qqrrrrqqv+R7rvvvltPnTqFbWzz3GxjG9vYBsA2/xq2eUFsY5sXhW2eH9sA2OYFsY1tAGxjm/vZ5oEkIQlJSEISkpCEJB5IEs+PJK666qr/ue67775bueqqq6666qqr/iMRXHXVVVddddVV/2O11m7lmWxjmxeVbV4Y2zyQbWxjG9s8P7a5n21eGNs8kG3uZxvb2OZ+trmfbZ6bJAAkIYmIQBKSkIQkJCEJSTw3STxQ13UP5qqrrvof4ZprrnkwwNmzZ5/BVVddddVVV131H43gqquuuuqqq676H+vee++91Ta2uZ9tbPPcbANgm/vZxjbPzTb/Wrb5l9jm38M2tgGwzXOTBIAkJBERRAQRAYAkHkgSz48krrrqqv85zpw582CA++6771auuuqqq6666qr/aARXXXXVVVddddX/WKdOnQLANrZ5INu8qGxjG9vY5rnZ5l/DNvezzb+HbWxjm/vZ5oEkIQkASUhCEpKQhCQkASAJSUjifpK46qqr/ue65pprHgxw33333cpVV1111VVXXfUfjeCqq6666qqrrvof6/Tp09jmfrZ5INsA2OaBbPMfyTb/EtvczzbPj21scz/bPDfb3M82DyQJSUhCEpKQhCQkIYnnJon7SeKqq6666qqrrrrqqqv+nyG46qqrrrrqqqv+x/rbv/3b37YNgG0AbGOb+9nmfrb517LNC2Ib2zyQbe5nm38L29jmfrYBsA2AbWzz3CQhCUlIQhKSkIQkJCEJSUji+ZEEQN/3D+aqq676H+HMmTMPArjvvvuezlVXXXXVVVdd9R+N4Kqrrrrqqquu+h/rmmuuwTa2AbDNi8o2/xLbPJBtbGMb2/xb2OZ+trGNbV4Q2wDYBsA2z48k7icJSUhCEpKQhCQkcT9J3E8S95OEJK666qr/Ga655poHA5w9e/YZXHXVVVddddVV/9EIrrrqqquuuuqq/7FsP8M2ALZ5INs8kG0AbHM/27wgtnkg2/xLbPP82OZfYpvnZpsHsg2AbWwDYJv7SUISkpBERCAJSUjifpK4nyQk8dwkcdVVV/3PcM011zyYq6666qqrrrrqPwvBVVddddVVV131P9Z99913K4BtAGxjG9sA2AbANi+IbWxzP9vY5l/LNg9km+dmm/vZ5kVlG9vYxjb3s81zk4QkJCGJiEASkpCEJAAk8cJ0Xfcgrrrqqv8Rzpw582CAf/iHf/htrrrqqquuuuqq/2gEV1111VVXXXXV/1jXXXcdtrGNbZ4f2zw32zw329jm+bHNC2ObF8Q2/xq2AbANgG2em21s89wkIQlJSEISkpCEJCQhCUkASOK5SUISkrjqqquuuuqqq6666qr/Bwiuuuqqq6666qr/se67775bbfOiss1/NNs8N9u8MLZ5fmwDYJsHso1tbGOb+9nmBZGEJCQhCUlI4n6SeG6SuJ8krrrqqv8ZrrnmmgcD3Hfffbdy1VVXXXXVVVf9RyO46qqrrrrqqqv+x7ruuusAsI1tbGMb29jmhbHNi8I2z49tbPPcbPP82OZfyzbPzTa2sc0DSQJAEpKQhCQkIQlJSEISkrifJAAkcdVVV/3Pc8011zyYq6666qqrrrrqPxPBVVddddVVV131P9Z9991368mTJwGwzXOzzf1sA2Cb+9nmhbHNA9nGNrZ5UdjmX2Ib27wgtgGwjW0AbHM/29xPEgCSiAgkIQlJSEISkpCEJCQBIInnNpvNHsJVV1313+7MmTMPBviHf/iH3+aqq6666qqrrvrPQHDVVVddddVVV/2Plpm32gbANrZ5INvY5gWxzfNjm38t2zw/trmfbe5nm/vZ5oFscz/b3M82ALaxzXOThCQAJCGJiEASAJL4l0jiqquu+p/hmmuueTDAfffddytXXXXVVVddddV/BoKrrrrqqquuuup/tHvuuedWANvczza2eUFs80C2sY1tbGOb52abF8Y2D2Sbfwvb2AbANvezjW0AbPOCSEISkogIIgJJSEISAJK4nyTuJwlJAMxmswdz1VVXXXXVVVddddVV//cRXHXVVVddddVV/6OdPn0a2wDY5oWxzb+FbV4Y27wobHM/2zw32zw329jmfrYBsI1tbHM/SdxPEpKQhCQkIQlJAEhCEveTxFVXXfU/z5kzZx4EcN99993KVVddddVVV131n4Hgqquuuuqqq676H621dqttbANgm/vZ5n62eSDb/EewzXOzzf1s8x/FNgC2sc39bHM/SUhCEpKQhCQkIQlJSOKBJPFAkpDEVVdd9d/vmmuueTDA2bNnn8FVV1111VVXXfWfgeCqq6666qqrrvof7Z577rnVNgC2AbCNbQBsY5v72eZfwzYPZBvb2MY2z802/xLb/Ets80C2AbCNbQBs8/xIQhKSkIQkJCEJSQBIQhKSuOqqq6666qqrrrrqqv/HCK666qqrrrrqqv/RXuIlXgLb2OZfyzYvjG0eyDb/Gra5n21eENs8P7axjW0AbGMbANsA2Ob5kYQkJCEJSUgCQBL/ktls9mCuuuqq/3Yv9mIv9toA//AP//DbXHXVVVddddVV/xkIrrrqqquuuuqq/9HuvffeZ/BMtrHN/Wzz/NjmfraxzQPZxjb/Wrb5l9jmgWwDYBsA29jmudnmfrYBsM0DSUISkpCEJCQhCUlIQhKSkMT9JAEgCUkASOKqq6666qqrrrrqqqv+HyC46qqrrrrqqqv+R4uIW21jm/vZ5vmxzQtiG9vY5vmxzQtjmweyzf1s8/zY5l/DNrYBsA2AbWzzQJKQhCQkERFIQhKSuJ8k7ieJq6666n+ea6655sEA9913361cddVVV1111VX/GQiuuuqqq6666qr/0e67775bbQNgG9sA2AbANraxzQPZ5kVlmxfGNv8RbHM/29jGNraxzf1sYxvbPDdJAEhCEpKQhCQkIQlJSAJAEs9NElddddVVV1111VVXXfX/BMFVV1111VVXXfU/2nXXXYdtbPOisM1/FNvY5rnZ5n62uZ9t7mebfy3b2MY2ALaxzXOTBIAkIgJJSEISAJIAkMQLMp/PH8RVV1313+qaa655MMB99913K1ddddVVV1111X8Wgquuuuqqq6666n+0++6779bTp08DYBvb2AbANi+Mbf4ltnkg29jGNs+Pbf6j2cY2ALYBsM39bPPcJCEJSUgiIpCEJAAkcT9J3E8SV1111f8ML/ZiL/baAGfPnr2Vq6666qqrrrrqPwvBVVddddVVV131P940Tbfa5oFs89xsA2Cb+9nmBbHNA9nmX8M297PN/WzzgtjGNvezzf1sA2Ab29jGNgC2uZ8kJCEJSUhCEpKQhCQkIQlJAEhCElddddX/PPfdd9+tXHXVVVddddVV/1kIrrrqqquuuuqq//FsA2Cb52Yb29jmBbHNA9nGNv9atvm3sI1tHsg2trmfbQBsYxsA2zw3SQBIQhKSkIQkJCEJSbwwkgCotT6Yq6666r/NmTNnHgRw33333cpVV1111VVXXfWfheCqq6666qqrrvofr7V2q21sYxvbANjmBbHNA9nGNrZ5fmzzwtjmgWzz/NjmgWzzL7ENgG3uZxsA29jmgSRxP0lIQhKSkASAJK666qr/2a655poHA5w9e/YZXHXVVVddddVV/1kIrrrqqquuuuqq//HOnDmDbR7INs+Pbf61bPOC2MY2L4xtnh/bPJBtnpttHsg2trGNbV4QSUhCEpKQhCQkIQkASUhCEs9NEpK46qqrrrrqqquuuuqq/+MIrrrqqquuuuqq//HuvvvuW21jG9s8kG1eENv8a9nGNraxzfNjm38P2zyQbWxjG9vYxja2sY1tbHM/SUhCEpKICCQhCQBJSOKBJCEJSdyv1vpgrrrqqv8211xzzYMB7rvvvlu56qqrrrrqqqv+sxBcddVVV1111VX/40m61Tb3s80D2cY2tnlutnlhbPPvYZv72eZ+tnl+bANgG9s8kG2em21eEElIQhKSkIQk7icJSTw3SVx11VX//c6cOfNggLNnz97KVVddddVVV131n4Xgqquuuuqqq676H8/2rbYBsA2AbWzz/NjmgWzz/NjmgWzzL7HNfyTbANgGwDa2sY1tAGxzP0kASEISkpCEJCQhCUlI4n6SeG6SuOqqq/57XXPNNQ8GuO+++27lqquuuuqqq676z0Jw1VVXXXXVVVf9j3f27NlbAWwDYJt/iW0eyDa2sY1tbPOvZZsHss39bHM/2/xr2AbANgC2sY1tbANgm/tJAkASkpCEJCQhCUlIQhIvjCSuuuqqq6666qqrrrrq/ziCq6666qqrrrrqf7xrr70W2wDY5oFs80C2+bewzQtiG9v8W9jGNraxzQPZ5n62AbANgG1sYxvbANjmfpIAkIQkJCEJSUjifpIAkMRz67ruwVx11VX/Lc6cOfMggPvuu+9Wrrrqqquuuuqq/0wEV1111VVXXXXV/3j33XffrQC2AbCNbWwDYBvb2OaBbPOisM3zYxvbPD+2uZ9t7mebf4ltnh/b2MY297PNCyIJSUhCEpKQBIAkJAEgCQBJSEISkpDEVVdd9d/jmmuueTDA2bNnb+Wqq6666qqrrvrPRHDVVVddddVVV/2Pd+2112Ib29jmX2Kbfyvb2MY2L4htXhS2eUFsA2Ab29jmfraxjW0AbGObB5KEJCQhiYhAEpKQxP0k8YJEBFddddV/j2uuuebBAPfdd9+tXHXVVVddddVV/5kIrrrqqquuuuqq//HOnj37jJMnTwJgmweyzQtjmxfGNv8etrmfbf4ltnlBbGMbANvYxja2eSBJ3E8SkpCEJCQhCUlI4n6SeG5d1z2Iq6666qqrrrrqqquu+r+N4Kqrrrrqqquu+l8hM2+1DYBtbGOb52ab52ab52Yb2zyQbf4ltnlR2OZfYpvnxzYAtrENgG1scz9JSEISkpCEJCQhCUncTxLPTRKSuOqqq/57nDlz5sEA9913361cddVVV1111VX/mQiuuuqqq6666qr/Fe65555bAWzz3GwDYJv72eaBbGMb29jm38I2D2Sbfy/b2MY2trGNbWxjGwDbPD+SAJCEJCQhCUkASEIS95OEJCQBIImrrrrqv8c111zzYICzZ88+g6uuuuqqq6666j8TwVVXXXXVVVdd9b/C6dOnsQ2AbWzzQLZ5brZ5UdnmBbGNbV4Y29zPNg9kG9vczza2eX5sYxvbANjGNrYBsM0DSUISkpDE/SRx1VVX/c915syZBwPcd999t3LVVVddddVVV/1nIrjqqquuuuqqq/5XyMxbbWOb+9nGNs/NNv8etrGNbWzz/NjmRWGb+9nmBbGNbe5nG9vY5n62uZ8kJCEJSUhCEpKQhCQkIQlJSOK5zWazB3PVVVf9t7jmmmseDHD27Nlbueqqq6666qqr/jMRXHXVVVddddVV/yvcfffdt9oGwDYvKtv8S2zzr2GbB7LN/WzzwtjmfraxjW3uZxvb2MY2trGNbZ4fSUhCEpKQhCSeH0ncTxKSuOqqq6666qqrrrrqqv/jCK666qqrrrrqqv8VXuIlXgLb2AbANvezzf1s89xs84LY5oFs8x/FNi8q29gGwDYAtrGNbZ4fSQBIQhKSkIQkJCEJSTyQJK666qr/ftdcc82DAe67775bueqqq6666qqr/jMRXHXVVVddddVV/yvcd999z+CZbANgG9sA2MY297PNA9nmgWxjm38t2zyQbe5nm/vZ5t/CNgC2sQ2AbWxjm+cmCUlIQhKSkIQkJAEgCUncTxIAfd8/mKuuuuq/3DXXXPNggPvuu+9Wrrrqqquuuuqq/2xUrrrqqquuuuqq/xUi4lYA2wDY5l/LNveTxHOzjSSeH9sASOLfyza2uZ9tAGxjG9vYBsA2ALYBsA2AJCQhCQBJSEISknhRSOKqq676r3fmzJkHA5w9e/ZWrrrqqquuuuqq/2wEV1111VVXXXXV/xqZCYBtHsg2D2QbANu8qGzzQLa5n22eH9vczzYvjG2em21sA2Cb+9nGNraxjW0AbPP8SEISkpAEgCQkIQlJAEjifpK46qqr/ntcc801Dwa47777buWqq6666qqrrvrPRnDVVVddddVVV/2vEBG32sY297ONbR7INg9km38t2wDYxjbPj21eENs8kG0AbPPC2MY297ONbWxjm+cmCUlIQhKSkIQkJPH8SOKqq6666qqrrrrqqqv+HyG46qqrrrrqqqv+V7jvvvtuPX36NAC2sc0D2cY297PN/Wzzwtjm38M2L4ht/iW2sc39bGMb29jGNraxzXOThCQkIQlJSEISkpAEgCTuJwmA+Xz+YK666qr/cmfOnHkQwH333XcrV1111VVXXXXVfzaCq6666qqrrrrqf41Tp05hm/9Itnkg2/xLbPOC2OZ+tnlutnkg29zPNraxjW1sYxvb2AbANs9NEpKQhCQk8UCSeH4kcdVVV/3Xu+aaax4McPbs2Wdw1VVXXXXVVVf9ZyO46qqrrrrqqqv+17j33ntvtY1tbGMbANs8kG2em21sYxvb2MY2/1q2eSDb/FvYxjYviG1sYxvbANjmgSQhCUlIQhKSkIQkJCGJ+0nifpKwzVVXXXXVVVddddVVV/0fR3DVVVddddVVV/2vkZm3AtjmfrYBsM1zs82/hm1eENvY5oWxzf1s84LY5oFsYxsA29gGwDa2AbCNbWxjm+cmCUlIQhKSkMT9JPHcFovFg7nqqqv+y73Yi73YawP8wz/8w29z1VVXXXXVVVf9ZyO46qqrrrrqqqv+1zh9+jS2AbDNc7ONbf4tbPNAtrGNbWzz/NjmP5JtAGxjGwDb2MY2z48kJAEgCUlIQhIAkpDE/SQhiauuuuqqq6666qqrrvp/guCqq6666qqrrvpf4+67774VwDYAtgGwzXOzDYBt/rVs8y+xzQPZ5oWxjW2em20eyDYAtrENgG1sY5vnRxKSkIQk7ieJF0YSV1111X+9a6655sEA9913361cddVVV1111VX/2Qiuuuqqq6666qr/TW7NTABsA2Cbf4ltXhjb/EeyzQPZ5n62eW62sY1tbGMb29jGNraxjW1scz9JSAJAEpKQhCQkIQlJSEISkrifJGxz1VVXXXXVVVddddVV/8cRXHXVVVddddVV/5s8gwewzf1scz/bPDfbPDfb2OaBbPMvsc0D2eYFsc3zYxvbPD+2sY1tbGObB7LNA0lCEpKQhCQk8aKotT6Yq6666r/Mi73Yi702wD/8wz/8DlddddVVV1111X8Fgquuuuqqq6666n+N++6771bb2MY2z802trmfbR7INraxjW3+tWxjmxfGNvezzb+GbWxzP9vYxja2sY1tnpskJCEJSUhCEpKQhCTuJwlJAEjiqquu+q91zTXXPBjgvvvuu5Wrrrrqqquuuuq/AsFVV1111VVXXfW/xnXXXYdtHsg2tvmPYJv72cY297PN82Obfy3b3M82trHN/WxjG9vYxja2sY1tHkgSAJKQhCQkASCJ+0lCEs9NElddddVVV1111VVXXfV/GMFVV1111VVXXfW/xn333XcrgG1sY5sXxDYAtnlR2Ob5sY1tnh/bPJBt7mebfy3b2MY2trGNbWxjm/vZ5oEkASAJSUhCEgCSeH4kAdB13YO56qqr/sucOXPmQQD33Xff07nqqquuuuqqq/4rEFx11VVXXXXVVf9rXHfddXRdx/Njm/vZ5oFs869hm/8KtrmfbR7INgC2sY1tbGOb50cSAJKQhCQkASCJ+0nifpK46qqr/mtdc801DwY4e/bsM7jqqquuuuqqq/4rEFx11VVXXXXVVf9r3HfffbdubW1hG9vYxja2AbCNbe5nm/vZ5gWxzb+WbR7INvezzQPZxja2sQ2Abe5nm/vZxjYAtrGNbWxjm/vZBkASkpCEJO4nCUlIAkASV1111VVXXXXVVVdd9f8QwVVXXXXVVVdd9b+K7Vtt829hmweyjW0eyDb/Etv8R7HN/WxzP9vYxja2sY1tbGOb50cSkpCEJAAkIQkASQBI4n6SuOqqq/7rXHPNNQ8GOHv27K1cddVVV1111VX/FQiuuuqqq6666qr/Ve65555bAWzzQLZ5UdjGNrb5t7DNc7PNC2Kb52ab52YbANvYxja2sY1tbGMb2zw3SUhCEpKQBIAk7ieJB5KEJPq+fzBXXXXVf5kzZ848GOC+++67lauuuuqqq6666r8CwVVXXXXVVVdd9b/K6dOnsQ2AbWxjm+dmGwDbvKhscz/b2MY2trGNbZ6bbR7INv9WtgGwDYBtbGMb29jGNrZ5bpKQhCQkIQlJSEIS95PEA0niqquu+q9zzTXXPBjgvvvuu5Wrrrrqqquuuuq/AsFVV1111VVXXfW/SmbeahvbPDfb2MY2D2Sbf4lt/qPZ5oWxDYBt7mcbANvYxja2sY1t7meb+0kCQBKSkIQknpsknpskrrrqqquuuuqqq6666v8wgquuuuqqq6666n8V27faBsA2tnlBbPOfyTYPZJv72eaFsQ2AbQBscz/b2AbANraxjW1sY5v7SQJAEgCSkIQkJCEJSUjifpIAkETXdQ/iqquu+i9xzTXXPBjgvvvuu5Wrrrrqqquuuuq/CsFVV1111VVXXfW/ypkzZwCwzf1sY5sXxjYviG0eyDb/Ets8kG3+JbZ5YWxjGwDb2MY2trENgG1s89wkIQlJSEISknhBJAEQEVx11VX/Nc6cOfNggLNnz97KVVddddVVV131X4Xgqquuuuqqq676X+W+++57hm0AbPNAtrmfbZ6bbWxzP9vY5oFs8y+xzQtjmweyjW0AbPPcbPNAtgGwjW1sYxvb2AbANveTBIAkACRxP0lIQhKSkMRVV1313+Oaa655MMB99913K1ddddVVV1111X8Vgquuuuqqq6666n+ViLgVwDYAtnkg29jmfrZ5braxzb/ENra5n21s89xs869hm+dmG9vYBsA2tgGwjW1sA2AbANvcTxIAkgCQhCQk8dwkcb/ZbPZgrrrqqquuuuqqq6666v8ugquuuuqqq6666n+dzATANgC2sc2/l22eH9vY5kVhmweyzQtiG9s8N9vYxja2sY1tbGMb29jmuUlCEpKQhCQAJPH8SEISV1111X+NF3uxF3stgPvuu+9Wrrrqqquuuuqq/yoEV1111VVXXXXV/yoRcattbANgmxfENgC2+deyzYvCNv+RbGOb+9nGNraxjW1eEElIQhKSAJAEgCQkIQkASVx11VX/Pc6ePfsMrrrqqquuuuqq/yoEV1111VVXXXXV/zqnT58GwDYPZJsXxDYvjG3+tWzzQLZ5INu8ILa5n21sY5v72cY2trGNbWxjG9vY5oEkASAJSQBIAkASL8h8Pn8wV1111X+Ja6655sEA9913361cddVVV1111VX/VQiuuuqqq6666qr/Ve67775bT506hW3uZ5v72cY2tgGwzf1s8/zY5oFs8y+xzX8G29jGNraxjW1sYxvb2AbANgCSAJAEgCQkIQlJAEjifpIAkMRVV131X+fMmTMPBjh79uytXHXVVVddddVV/1UIrrrqqquuuuqq/3XuvffeW21jG9sA2OZFYRvb2MY2tvnXss1zs80D2eaBbGMb27yobGMb29jGNrYBsM0DSUISkpCEJAAkIQkASVx11VVXXXXVVVddddX/MwRXXXXVVVddddX/Opl5K4Bt/qPZ5n62sY1tbGMb2/xLbPPC2AbANra5n20AbGMb29jGNraxjW1scz/bPJAkACQhiecmCQBJXHXVVf+1rrnmmgcD3Hfffbdy1VVXXXXVVVf9VyG46qqrrrrqqqv+1zl9+jS2AbCNbQBs80C2AbDNi8I2/xa2eWFs88LYxjYAtgGwDYBtbGMb29jGNraxzQNJAkASAJKQhCQk8fzM5/MHc9VVV/2nu+aaax4McN99993KVVddddVVV131X4ngqquuuuqqq676X+fuu+++FcA297MNgG1sY5sHss2/hm1eFLZ5INs8kG2eH9s8N9sA2AbANraxjW0yE9vYxjYPJAkASUhCEpKQxP0kASAJAElI4qqrrvrPd+bMmQcDnD179lauuuqqq6666qr/SgRXXXXVVVddddX/OpJutQ2AbV4Y27wobPOvZZv/aLYBsI1tbGMb29jGNrYBsM0DSUISkpDE/SQhCQBJXHXVVf/1rrnmmgcD3Hfffbdy1VVXXXXVVVf9VyK46qqrrrrqqqv+17nmmmuwzf1sA2CbF8Y2z802tnkg2/xLbPPcbPNAtvmX2AbANvezDYBtAGyTmdjGNraxzfMjCQBJSEISz48krrrqqquuuuqqq6666v8Bgquuuuqqq6666n+dv//7v/8d29jGNgC2eW62eW62sY1tbPMvsY1tHsg2/xFsA2AbANvczzYAtrGNbWxjG9vYxja2uZ8kACQBIAkASUhCEg8kifl8/mCuuuqq/3Rnzpx5EMB99913K1ddddVVV1111X8lgquuuuqqq6666n+d6667Dtvczzb3s41tbHM/27yobHM/29zPNraxzfNjmweyzQPZxja2sc0LYhvb2MY2trGNbWxjm+dHEgCSkIQkACTxQJKQxP0kcdVVV/3nu+aaax4McPbs2Wdw1VVXXXXVVVf9VyK46qqrrrrqqqv+14mIWwFsY5sXhW3+Jbb5t7DNA9nmP4JtbGMb29jGNraxjW1eEElIQhKSAJDEc7PNVVddddVVV1111VVX/R9GcNVVV1111VVX/a/UdR22uZ9tbPPcbPNvYZsXhW3+JbZ5brZ5INvYxja2sY1tbGMb29jGNraxDYBt7icJSUhCEpK4nyQeSBIAkui67sFcddVV/6le7MVe7LUB/uEf/uG3ueqqq6666qqr/isRXHXVVVddddVV/+vcd999t546dQoA29jmfrZ5QWzzgtjmP4JtHsg2L4xtbPOC2MY2trGNbWxjG9s8P5IAkIQkJHE/SUjiqquuuuqqq6666qqr/p8guOqqq6666qqr/ldarVa32ub5sQ2AbQBscz/bPJBtbPNAtrmfbV4Q2/xnsI1tbGMb29jGNraxjW1sA2Cb+0kCQBIAkgCQhCQeSBJXXXXVf41rrrnmwQD33XffrVx11VVXXXXVVf+V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A2CbB7KNbWxjG9vYxja2eW6SkIQkJCEJSTw3SQBI4qqrrvrPcebMmQcDnD179lauuuqqq6666qr/DgRXXXXVVVddddX/WhFxq21sYxsA2wDY5r+Dbf41bPP82MY2trGNbWxjG9vYxja2sY1t/iWSkIQkJHHVVVf957vmmmsezFVXXXXVVVdd9d+J4Kqrrrrqqquu+l/t1KlT2AbANg9kG9s8kG1eGNv8W9nmudnm38M2tgGwjW1sYxvb2MY2ALaxzf0kIQlJSOKqq67673PffffdylVXXXXVVVdd9d+B4Kqrrrrqqquu+l/rvvvuu7XvewBscz/bPDfb3M82z49tHsg297PNC2Ob/wi2sY1tbHM/29jGNrbJTGxjGwDbPJAknpsknpskFovFg7nqqqv+w11zzTUPBjh79uwzuOqqq6666qqr/rsQXHXVVVddddVV/6stl8tbbXM/27wobPNAtnlBbANgm+fHNs+PbZ6bbWxjmweyjW2em21sYxvb2MY2trGNbWzzgkhCEpIAkIQkACRx1VVX/ec5c+bMgwHuu+++W7nqqquuuuqqq/67EFx11VVXXXXVVf+r3XvvvbcC2MY297PN/WwDYJsHso1tbPPcbPP82MY2trGNbZ4f2zw32zw/tnlutrENgG1sY5vMJDOxjW1sYxvb2OaBJPGCSOKqq676z3XNNdc8GOC+++67lauuuuqqq6666r8LwVVXXXXVVVdd9b/aNddcg22eH9vY5l/LNv8etnlutnlutnlutrHN/WxjG9vYxja2sU1mYhvbPDdJAEhCEgCSeG6SAOi67sFcddVVV1111VVXXXXV/z0EV1111VVXXXXV/2rTNN1qG9vYxja2eUFs869hm/9MtnlBbGMbANvYxja2sY1tbGMb29gGQBIAkrifJAAkIYkHksRVV131H+/MmTMPArjvvvuezlVXXXXVVVdd9d+F4Kqrrrrqqquu+l/N9q28CGzzorDN82ObF4Vtnptt/iW2sc39bHM/29jGNraxjW1sYxsA2zw/krifJO4nCUncTxJXXXXVf6xrrrnmwQBnz559BlddddVVV1111X8Xgquuuuqqq6666n+1a665BtvYxja2AbDNC2Kb58c2D2SbB7LNC2Ob52abfy3bANjGNrYBsI1tbJOZ2MY2trmfbZ6bJCQBIInnp+u6B3PVVVf9h7rmmmsezFVXXXXVVVdd9d+N4Kqrrrrqqquu+l/tvvvue4ZtHsg2ALaxjW0AbHM/29jmfrZ5Udjm+bHNv5Vt7meb58c2trGNbWxjG9vYxja2eSBJSOK5SeJ+krjqqqv+c5w5c+bBAP/wD//w21x11VVXXXXVVf9dqFx11VVXXXXVVf+rRcStALaxzb+WbQAk8UC2kQSAbSRxP9s8N0k8N9tI4rnZBkASL4htbGMb29jGNraxjW1sYxvb2OaBJHE/SUhCEg8kCQBJXHXVVVddddVVV1111f9RBFddddVVV1111f96mcn9bANgm+fHNv8VbPP82OZ+tnlR2MY2trFNZmIb29jGNraxDYBtXhBJAEjigSRx1VVX/ce65pprHgxw33333cpVV1111VVXXfXfheCqq6666qqrrvpfLSJuBbCNbQBs89xs86Kyzf1s8x/FNs/NNgC2sQ2AbWxjG9vczza2sY1tMhPb2AbANra5nyQkIQlJSAJAEs+t7/sHc9VVV/2Hueaaax4McN99993KVVddddVVV13134ngqquuuuqqq676X+/06dPczzb3s41tbPNAtnlBbPP82MY2LwrbPDfbvChs89xsYxvb2MY2mYltbGMb2/xbSEISkrjqqqv+45w5c+bBAGfPnr2Vq6666qqrrrrqvxPBVVddddVVV131v9p9991366lTp7CNbV4Y29zPNs/NNg9km+dmmxfGNs/NNv9WtgGwDYBtbGMb22QmtrGNbZ4fSdxPEgCSkMT9IoKrrrrqP84111zzYID77rvvVq666qqrrrrqqv9OBFddddVVV1111f9699577608gG1s8y+xjW1sY5sXlW2em21s829hmweyjW1sA2Ab29jGNraxjW1sYxvbANjmgSQBIAlJvCB93z+Iq6666qqrrrrqqquu+r+H4Kqrrrrqqquu+l8vM2+1jW1s8/zYBsA2Lwrb3M82z802trGNbV4Q2/x72MY2ALaxjW1sYxvb2MY2tnkgSTw/knggSbz4i7/4a3PVVVf9hzlz5syDAO67775bueqqq6666qqr/jsRXHXVVVddddVV/+udOXMG2zw329jGNv8dbPOC2Oa52cY297PN/WxjG9vYxjaZiW1sYxvb2MY2DyQJSUhCEg8kCYBrr732wVx11VX/Ya655poHA5w9e/YZXHXVVVddddVV/50Irrrqqquuuuqq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ANvYxja2sU0phTNnznDs2DEAfuRHfuSzP/MzP/N1uOqqq/7TXXPNNQ8GuO+++27lqquuuuqqq676n4LKVVddddVVV131f9Zv/dZvfTfAh3/4h3/XG73RGyGJX//1X+e52eaBJPH82EYS97ONJP4ltpHEv8Q2kgCwDYBtbANgG9sA2MY2trGNbWazGddddx0A9913361f//Vf/z7/8A//8NtcddVV/yXOnDnzYICzZ8/eylVXXXXVVVdd9T8Flauuuuqqq6666v+03/qt3/ru++6779bP/dzP/a03fMM35BVe4RX4lm/5FnZ3d5HEv8Q2knhBbCOJ58c2AJL417CNJGzz3GxjG9sA2KbWyrXXXsvOzg733XffrWfPnr3167/+69/nvvvuu5Wrrrrqv8w111zzYID77rvvVq666qqrrrrqqv8pCK666qqrrrrqqv/z/uEf/uG3P+RDPuQh9913360nTpzggz7og3j91399/iW2eX5s80C2sY1tbGMb2/xHso1tAGxjm77vue6663jkIx/Jzs4OAL/1W7/13Z/5mZ/5Ovfdd9+tXHXVVVddddVVV1111VVUrrrqqquuuuqq/xfuu+++Wz/rsz7rdV77tV/7vd7pnd7ps1//9V+fl3u5l+MnfuInuPXWW/mX2EYS/1Fs80CSALCNJO5nG9vczzaLxYKbbrqJhzzkIdzvH/7hH377Mz/zM1+Hq6666r/NmTNnHgRw33333cpVV1111VVXXfU/BeX48eNcddVVV1111VX/PxweHu7+wz/8w+/8wz/8w+9cc801D77lllse/LIv+7IcP36c9XrN7u4ukpAEgCQkIQkASQBIAkASkpCEJCQhCUlIQhKSkIQkJHE/SUhCEpIAkIQkJCEJSUgiIpDE1tYWD3/4w3nZl31ZTpw4AcB9991365d8yZe8zY/+6I9+DlddddV/ixd7sRd77WuuuebBr/u6r/ve11xzzYP/4R/+4bcBnT179lauuuqqq6666qr/buhBD3oQV1111VVXXXXV/z/XXHPNg1/7tV/7vd7pnd7ps3mm3d1dfuu3fou//uu/RhKSkASAJCQBIAlJSCIikIQkJCEJSUhCEpKQhCQkASAJSUhCEpKQREQgiYhAEhHBzs4OD3/4w9na2uLBD34w9/uHf/iH3/6RH/mRz/mHf/iH3+aqq676b/VN3/RNT7/mmmsezHP5kA/5kIfcd999t3LVVVddddVVV/13Qg960IO46qqrrrrqqqv+/7rmmmse/Nqv/drv9U7v9E6fzTPt7u5y66238jd/8zc84xnPAEASkgCQhCQkIYmIQBKSkIQkJCEJSUgCQBKSkIQkJCEJSUhCEhHB9vY2j3zkI9ne3uZhD3sYD/QjP/Ijn/3bv/3b33PffffdylVXXfU/wjd90zc9/Zprrnkwz+VDPuRDHnLffffdylVXXXXVVVdd9d+JylVXXXXVVVdd9f/afffdd+uP/uiPfs5v/dZvffc111zzkHd6p3f6rBd7sRd77RtuuOHWl37pl37w7u4uz3jGM3jGM57B7u4ut912G7aRxP1sI4kXxDaSeEG2t7e54YYb2N7e5oYbbuD666/nge67775bf+u3fuu7f/RHf/RzuOqqq6666qqrrrrqqqv+NahcddVVV1111VVXAWfPnn3G2bNnn/GZn/mZv33NNdc8+MVe7MVe+3Ve53Xe68Ve7MVe+/jx47zUS70UAJcuXcI2t912G5cuXWJvb4+9vT0A9vf32d/f53622dnZQRKS2NnZYWdnh52dHSRx4403csMNN/D8/MM//MNv//3f//1v/+iP/ujncNVVV1111VVXXXXVVVf9W1G56qqrrrrqqquuei733Xffrffdd993/9Zv/dZ3X3PNNQ9+sRd7sdd+sRd7sde65pprHvxiL/Zirw1w/Phx/qPcd999t549e/bWv//7v//tf/iHf/idf/iHf/htrrrqqquuuuqqq6666qr/CFSuuuqqq6666qqrXoj77rvv1vvuu++7f+u3fuu7Ac6cOfOga6655iHXXHPNg1/sxV7ste67775bX/zFX/y1Ac6cOfPga6655sE8wH333Xcrz3T27Nlb77vvvlvvu+++WwH+4R/+4Xf+4R/+4be56qqr/lf7h3/4h98+e/bsg7nqqquuuuqqq/4nQg960IO46qqrrrrqqquuuuqqq6666qqrrrrqqqv+T6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X8U/AvsCC5EP+dCwAAAAAElFTkSuQmCC) +![Rendered example of sweep 3](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADpjklEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrvo/55prrnnwmTNnHvxiL/ZirwVwzTXXPPiaa655MA9w33333Xrffffdevbs2Wfcd999t/7DP/zDb3PVVVddddVVV1111f81VK666qqrrrrqqquu+j/hxV7sxV77mmuuefA7vuM7ftY111zzYJ7p3LlznD17FkmcO3eO+11//fVcf/31PPrRj+Z+9913363/8A//8Nu/9Vu/9T3/8A//8NtcddVVV1111VVXXfW/HXrQgx7EVVddddVVV1111VX/O11zzTUPfu3Xfu33ep3XeZ33vuaaax587tw5fvd3fxdJ/N7v/R7nzp0DQBLPjyQATp8+zaMf/Wge/ehHc/r0aR796Edz33333foP//APv/1bv/Vb3/MP//APv81VV1111VVXXXXVVf8boQc96EFcddVVV1111VVXXfW/yzXXXPPgd3zHd/ys13md13nvs2fP8nu/93v83u/9HufOnQNAEveTxANJ4l9y+vRpXu3VXo3XeI3X4PTp0/zDP/zDb//Ij/zI5/zDP/zDb3PVVVddddVVV1111f8m6EEPehBXXXXVVVddddVVV/3vcM011zz4tV/7td/rnd7pnT777Nmz/ORP/iS/93u/B4AkACRxP0ncTxL/WqdPn+ZRj3oUj3jEI3jt135tfuu3fuu7f/RHf/Rz7rvvvlu56qqrrrrqqquuuup/A/SgBz2Iq6666qqrrrrqqqv+53vHd3zHz3qnd3qnzz579iw/8RM/we/93u8hCQBJAEjifpK4nyReEEnczzbPj21e/dVfnbd5m7chM2/9rd/6re/+0R/90c/hqquuuuqqq6666qr/6dCDHvQgrrrqqquuuuqqq676n+uaa6558Id/+Id/14u92Iu99o//+I/zkz/5k0gCQBIAkgCQBIAk7ieJ5yaJf4ltHsg2p0+f5tVf/dV5m7d5G/7hH/7ht7/+67/+fe67775bueqqq6666qqrrrrqfyr0oAc9iKuuuuqqq6666qqr/me65pprHvw5n/M5vyXpwd/0Td/E4x//eCQhCUkASAJAEgCSuJ8kHkgS/1q2uZ9tAE6fPs2nfMqnkJm3ftZn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knhukpDECyIJSUjigSQBIIkHksRzk4QkAB7/+Mdz5syZB3PVVVddddVVV1111X81gquuuuqqq6666qqr/stdc801D77vvvu4nyTuJ4n7SUISkpDEA0kCQBIAkgCQxP0k8UCSkMS/hiQeSBIAkgCQxP0kIYnndu7cOa655poHc9VVV1111VVXXXXVfzWCq6666qqrrrrqqqv+S73Yi73Ya997771I4oWRxHOThCSemySemyTuJwlJPDdJSEISkpCEJJ6bJCRxP0kASOJ+krifJCQBIIlz587xuMc9jhd7sRd7ba666qqrrrrqqquu+q9E5aqrrrrqqquuuuqq/1LXXHPNg//mb/4GAElIQhKSkASAJF4YSQBI4oEkASCJ+0niuUnihZHE/WxzP0nY5rlJwjZXXXXVVVddddVVV/2PQ3DVVVddddVVV1111X+5e++9F0k8P5IAkIQkJCEJSTyQJAAkASAJAEncTxIPJAlJ/GtI4oEkASAJAEkASEISkpAEgCQAJPG7v/u7t15zzTUP5qqrrrrqqquuuuqq/0oEV1111VVXXXXVVVf9lzpz5syD7rvvPgAkASAJSUgCQBLPjyQk8dwk8dwkcT9JSOK5SUISkpCEJCTx3CQhiftJAkASAJJ4bpIAkATAhQsXHnzmzJkHcdVVV1111VVXXXXVfyUqV1111VVXXXXVVVf9l7vvvvuQBIAkHkgS/xJJAEjigSQBIIn7SeK5SeKFkcT9bHM/SdgGQBK2kYRtACRxP9vcTxIAZ8+efQZXXXXVVVddddVVV/1XIrjqqquuuuqqq6666r/c2bNneW6SeCBJSEISkpDEA0kCQBIAkgCQxP0k8UCSkMS/hiQkcT9JPD+SeCBJSOJ+586d48yZMw/iqquuuuqqq6666qr/SgRXXXXVVVddddVVV/2Xuuaaax583333IQlJAEgCQBIAknh+JPGiksT9JCGJ5yYJSUhCEpKQhCSemyTuJwkASQBI4gWRBMC5c+c4e/bsM7jqqquuuuqqq6666r8Slauuuuqqq6666qqr/ku11l6bB5DEA0nihZGEJAAkASAJAEkASOJ+knhukviXSALANveThG0AJGEbSdgGQBIPZBsASQA87nGP46qrrrrqqquuuuqq/1IEV1111VVXXXXVVVf9l8rMB0tCEveThCQkcT9JSEISkpDE8yMJAEkA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EpJ4bpK46qqrrrrqqquuuupfROWqq6666qqrrrrqqn+RJJ6bJAAkIQkASUhCEpK4nyQeSBIvjCQAJAEgCUncTxKSkIQkJCEJSUQEkogIIoKIICIopRARlFKICEopRAQRQUQgCUkA2MY2kpAEgG1KKdgmIogIMpOIIDORhCQAJCEJSUhCEraRhG0AJGEbAEnYBkAStnl+JAEgiauuuuqqq6666qqrXiRUrrrqqquuuuqqq656oa655poH7+3tIQkASdxPEi+MJF4YSdxPEgCSAJAEgCQkASAJSUhCEpKQhCQkERFIIiKQREQgiYggIogIIoJSChFBKYWIICKQhCTul5lIQhIAtrFNRBARRAQRQWYiCUlIQhKSeG6SsI0kbAMgCdsASMI295OEbe4nCQBJAMxmswdz1VVXXXXVVVddddW/hMpVV1111VVXXXXVVf+icRx5IEk8N0m8MJIAkMRzk8TzI4n7SUISkpCEJCQREUhCEpKICCQREUQEEUFEEBGUUogIIoJSChFBKYWIQBKSuJ8kJCEJ25RSyEwigohAEpKQhCQkIQlJAEjifpKwzYtKEra56qqrrrrqqquuuurfjcpVV1111VVXXXXVVf8iSUhCEpL415DE8yOJ5yYJAEncTxKSeCBJSEISkpBERCAJSUQEEUFEEBFEBBFBRFBKoZRCKYWIoJRCRCAJSUjCNhFBZtJawza2KaWQmUgiIpCEJCQhiftJAkASkrANgCRsIwnbAEjCNgCSsM0DSUISDyQJSVx11VVXXXXVVVdd9S+ictVVV1111VVXXXXVC3XmzJkH83xIAkASz00Sz48knpskACQBIAkASTyQJCQhCQBJSEISkpBERBARRAQRgSQigoggIogIIoKIICIopVBKISKQREQAYBvbSALANrbJTCKCiEASEYEkJCEJSUgCQBIPJAnb3E8StgGQhG2emyRscz9J3M82V1111VVXXXXVVVf9i6hcddVVV1111VVXXfUvksQDSQJAEgCSAJCEJAAkcT9JPJAkACTx/EgCQBKSkIQkJCEJSUhCEpKICCICSUhCEpKICCKCUgqlFEoplFIopVBKoZRCRFBKISKQxP0yE0kA2CYziQgigoggIpBERCAJAElIQhIAkpCEJGwDIAnbPDdJ2EYStpGEbe4nCQBJAEjiqquuuuqqq6666qp/EZWrrrrqqquu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v4ZtJPEvsc1zs81zkwSAJB5IEpKICCQBIIn72abve66//npuuOEGFosF93vc4x7H05/+dPb397nqqquuuuqqq6666j8Ulauuuuqqq6666qqr/kW2sc1zsw2AbR7o0qVL/NEf/RGPf/zjebEXezEe+9jHsrOzwyu8wivw6Ec/mv39fZ74xCfy5Cc/GQDb3E8SD2Sb/wi2kQSAbSTxQLb515KEJCQhiYhAEpKQhCTm8znXXnstx48f5/jx49xvuVxy22238fjHP57WGpnJC2Kb52abq6666qqrrrrqqqv+RVSuuuqqq6666qqrrvoXZSYAtvnX2Nvb44//+I95whOewE033cSNN97IYx7zGLa3t7nhhht4+Zd/eSTxpCc9iXvuuYd77rkH2zw/knhBbPMfxTbPjyQAbCOJB5KEJCQRESwWC6677jqOHz/OsWPHeKCLFy9y5513ctttt9Fa46qrrrrqqquuuuqq/1RUrrrqqquuuuqqq656oe67775bH/OYx/CC2OYFsY0kLl26xP7+Pk94whP4sz/7M2666SYe/ehHc8MNNwDwsi/7sgAcHBxwzz33cHBwwL333su9997L/Wzzgkjifrb5z2AbSTyQJDY2NtjY2ODkyZOcOHGC48eP89xWqxX33HMPT3/602mtkZn8e43j+Ayuuuqqq6666qqrrvqXULnqqquuuuqqq6666l9kG9v8R9jf3+eJT3wiT3rSk9jZ2eGGG27ghhtuYHt7m+uvv56HP/zhPNDBwQH33nsvkrj33ns5PDzk7NmzvCCSsM1/JEksFgskcfr0aRaLBRsbG5w8eZLFYsFzW61W3HfffazXa+677z4yE9sASAJAEv9atgGwzVVXXXXVVVddddVVLxIqV1111VVXXXXVVVf9i2zzQLaxzQPZ5kVlG0ns7+/zpCc9iSc/+clIYnt7mxtuuIHrr7+era0trrvuOra2ttja2gLgoQ99KPc7PDwE4L777kMSh4eHHB0dIYmjoyMAlsslkgCQxP0k8UCLxQKAjY0NADY2NgA4ffo0AKdOneKFWa1W3H333Uji9ttvRxKSuJ8kbCOJB5KEJCTxL7ENgG0AMpOrrrrqqquuuuqqq/5FVK666qqrrrrqqquu+k9hG0n8axwcHPDkJz+ZpzzlKUhie3sbSVx33XVce+21AGxtbXHttdeyubkJwEMe8hD+Mx0dHXG/5XLJ0dERFy5cYLVasVqtuHTpEhFBRBARSEISAJKwzVVXXXXVVVddddVV/22oXHXVVVddddVVV131L7rmmmuwjW1s829hG0nczzaSeGEODg6QxFOf+lSe+tSnIglJSGJra4utrS02NzeRxObmJpubmwBsbm4CsLm5yYvi6OgIgKOjIyRxdHQEwNHREcvlkvPnzyMJSUhCEpKICCKC50cSAJIAkASAJF4Utrnqqquuuuqqq6666t+NylVXXXXVVVddddVVL9TZs2dv5QWwzQPZxja2kQSAbSTx72EbSTzQ4eEhh4eHSEISkpAEgCQkASAJSdxPEveTxPMjiftJ4l9DEi+IJAAk8e81juOtXHXVVVddddVVV131LyG46qqrrrrqqquuuurfzTb/FraxzQtjm38v2zw/tnl+bHM/29zPNrb5l0hCEpJ4QSTxorDN82Obq6666qqrrrrqqqv+RQRXXXXVVVddddVVV/272OZFZZvnxzbPzTa2eUFs89xs8y+xzQPZ5j+TJCQhif8otrnqqquuuuqqq6666kVCcNVVV1111VVXXXXVi8Q2/5lsYxvb2OaFsc1zs80D2eZFZZt/iW1eGElIQhL3k8QDSUIS95PEVVddddVVV1111VX/qQiuuuqqq6666qqrrvoXXXfddUjCNgC2eVHY5rnZ5t/DNs/NNi+IbQBscz/b/Ets828lCUkASEISkrifJP69pmm6lauuuuqqq6666qqr/iUEV1111VVXXXXVVVe9UPfdd9+tAJkJgG0AbPOiss1/Fts8N9v8a9nm30oSV1111VVXXXXVVVf9j0Rw1VVXXXXVVVddddV/CNv8Z7PNv4dt7meb52abfy9J3E8SkrifJCQBIAkASbyobGMbANtcddVVV1111VVXXfUvIrjqqquuuuqqq6666t/MNi+IbV4Q2/xr2ea52ea52eZ+tgGwzfNjm+dmm/vZBsA2L4gk7icJAElI4n6SkMS/lW0eyDZXXXXVVVddddVVV71ICK666qqrrrrqqquuepHZ5oWxzQtimweyzYvKNv/TSeK5SeL5kcRVV1111VVXXXXVVf8lCK666qqrrrrqqquu+hdJupUXwjb3s41t7mebfw/bPD+2eW62uZ9tnh/bPJBtnptt/r0kASAJSUhCEpL4t7DNA7XWbuWqq6666qqrrrrqqn8JwVVX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npttnh/bPD+2eX5s89xs80C2+feQhCQkIQkASTyQJP4txnG8lauuuuqqq6666qqrXlQEV1111VVXXXXVVVf9p7INgG0eyDbPj23+JbZ5fmzz3GwDYJvnZpsXhW1eFJKQxHOThCQkIQlJ3E8S95PEv8Q2V1111VVXXXXVVVe9yAiuuuqqq6666qqrrvpXsc0D2eZ+tvnXsM0D2eb5sc3/ZJKQxP0kIQlJSEISAJKQBIAkJAEgiauuuuqqq6666qqr/lMQXHXVVVddddVVV131b2abfy/b2MY2Lwrb3M8297PN/WzzwtjmudkGwDb/VpKQxP0kIQlJSOJ+kvi3ss1VV1111VVXXXXVVS8ygquuuuqqq6666qqrXmTXXXcdz49tnh/bPJBt/rVs8x/FNs/NNv/RJCEJAEkASEISkrifJP61Wmu3ctVVV1111VVXXXXVi4rgqquuuuqqq6666qp/FdvYxjYPZBsA2/xXs83zYxsA2/xnkMT9JAEgCQBJSAJAEgCSAJCEJAAkASCJq6666qqrrrrqqqv+wxFcddVVV1111VVXXfUiue+++27lRWQb29zPNv8Wtnkg29zPNs+PbV4Utvn3kASAJO4nCQBJAEhCEpKQBIAk/j1sc9VVV1111VVXXXXVi4zgqquuuuqqq6666qr/Urb5j2Sbfw3bvCC2uZ9tbPOikMT9JCEJSQBIAkASkpCEJCQhiX8N29jmqquuuuqqq6666qoXGcFVV1111VVXXXXVVf8qtvmvYJsHss2/xDb3s82LyjYviG3+LSQhCQBJSEISz48kXhDbXHXVVVddddVVV131b0Zw1VVXXXXVVVddddWL7Nprr0US/162eWFs88LY5kVlGwDbPDfbPD+2+deShCQkIQkASUhCEveThCQkASCJf43W2q1cddVVV1111VVXXfWiIrjqqquuuuqqq6666kV233333QpgGwDbPJBtnpttAGzzQLZ5fmzzorLN/WzzP4kkACQhCUlI4oEk8aKyzVVXXXXVVVddddVV/2oEV1111VVXXXXVVVf9q9gGwDYAtrHNv4VtHsg2z49t7mebf4ltXhjb/GeSBIAk7icJSUhCElddddVVV1111VVX/ZcguOqqq6666qqrrrrqX8U2z49tnptt/iW2sY1t/q1s8/zY5oFs84LY5oWxzQsiCQBJSAJAEpKQhCTuJwkA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uuqqq676tyC46qqrrrrqqquuuurfxTbPzTYPZBsA2/x3s81zs82/h21s89xsY5t/L9tcddVVV1111VVXXfVvQnDVVVddddVVV1111b+Zbf6z2Ob5sQ2AbQBscz/b/Fezzf1scz/b3M82trHNc7PNc7MNgG0AbHPVVVddddVVV1111b8JwVVXXXXVVVddddVV/ybXXXcd97MNgG3+M9jmX2KbB7LN/Wzz3Gzz/NjGNrb5t7CNbf4ltnlRjeN4K1ddddVVV1111VVX/VsQXHXVVVddddVVV131H8o2ALYBsM0D2eZfYpv/iWzzgtjmudnGNlddddVVV1111VVX/bchuOqqq6666qqrrrrqX+2+++67lReBbf4j2eb5sc2LwjbPzTb3s82Lyja2AbANgG1sA2Cb+9nmgWxz1VVXXXXVVVddddV/CYKrrrrqqquuuuqqq/7NbHM/27wwtnlR2OaBbPPcbANgm+fHNvezzb+VbZ6bbWxzP9s8N9s8N9vYxjZXXXXVVVddddVVV/2XIbjqqquuuuqqq6666t/FNv9atnl+bPNfwTb/GWxzP9vYxjZXXXXVVVddddVVV/23Ibjqqquuuuqqq6666t/k2muvxTb/VrZ5INv8R7DN82ObF8Y2L4htbPPC2AbANrZ5INv8e4zjeCtXXXXVVVddddVVV/1bEFx11VVXXXXVVVdd9W9y33333SqJfw/b2MY2z49t7mebfy3bvDC2+Y9gm+fHNvezjW0eyDb/EttcddVVV1111VVXXfVvRnDVVVddddVVV1111b+ZbQBs80C2eSDbANjm38s2ALYBsM39bPMfzTYviG0eyDa2sY1tAGzzQLaxjW2uuuqqq6666qqrrvpPR3DVVVddddVVV1111X8Y2/xHsc2/hm1eFLZ5brb517INgG0AbPPcbANgmxfGNs/NNgARwVVXXXXVVVddddVV/2YEV1111VVXXXXVVVf9m81mM2zzQLYBsA2Abf69bPOvZZv72ea52eY/im0eyDa2AbANgG3+Jba56qqrrrrqqquuuuo/FMFVV1111VVXXXXVVf9m29vb3M82z802z802/xLb/GvY5j+SbZ4f2wDY5vmxjW2em20AbGObf42jo6Nbueqqq6666qqrrrrq34rgqquuuuqqq6666qp/k7Nnz95qm/9Ktnkg2zw/tnl+bPMvsQ2AbZ4f2zw/tnkg29jGNs/NNlddddVVV1111VVX/ZcguOqqq6666qqrrrrqv4Rt7mebF8Q2D2Sb52abF5VtXhjb/FvZxjb3s41tbPPcbPNAtrGNbQBs8/xI4qqrrrrqqquuuuqqfzOCq6666qqrrrrqqqv+XWxjm/8Itvn3ss2/xDbPj20eyDYvCts8N9vYxja2AbDNVVddddVVV1111VX/pQiuuuqqq6666qqrrvo3O3XqFM+Pbf4ltnkg2zw329zPNv+T2OaBbANgG9s8N9sA2OaFsc0DLZfLW7nqqquuuuqqq6666t+K4KqrrrrqqquuuuqqfzNJvChs8/zYxja2+beyzf1s80C2uZ9t/q1sY5t/iW3uZxvb2MY2ALYBsM1VV1111VVXXXXVVf8lCK666qqrrrrqqquu+je57777brXNA9nGNi+Ibf69bANgmweyzb+Wbe5nm38L29jGNgC2sc1zsw2AbQBsc9VVV1111VVXXXXVfzqCq6666qqrrrrqqqv+zWxzP9s8kG0AbPNvYZv72eY/im3+vWwDYJsHss39bGMb29jm38I2V1111VVXXXXVVVf9uxBcddVVV1111VVXXfXvYpsXxDb/XWxzP9v8W9nmX8M2tnl+bANgGwDb/EtWq9WtXHXVVVddddVVV131b0Vw1VVXXXXVVVddddW/2ZkzZwCwzYvKNv8S2zw/tnl+bPOvZZv72eZFYRvbPDfb2MY297ONbWxjG9sA2Oa52eaqq6666qqrrrrqqv8UBFddddVVV1111VVX/Zvcd999t9rmRWWbfwvbPDfbANjm+bHNfzbbANjmgWxjG9vY5oFscz/bANjmhbHNVVddddVVV1111VX/ZgRXXXXVVVddddVVV/2Xs80LYpv/SLa5n21eFLb597DN/WxjG9vczzZXXXXVVVddddVVV/2XILjqqquuuuqqq6666t/MNrZ5brb5t7DNv5dt/jVs80C2AbDNv8Q2ALaxjW1sA2Ab2zyQbWxzP9tcddVVV1111VVXXfWfiuCqq6666qqrrrrqqn+za665hudmmxeFbR7INs/NNvezzfNjm/vZ5kVhm/9MtrmfbWxjm6uuuuqqq6666qqr/ssRXHXVVVddddVVV131b2ab+9nGNs+PbQBs80C2sY1tXlS2AbDNv8Q297PNv8Q2D2Sb58c297PN/WxzP9vY5rnZxja2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++679Ud+5Ec+h6uuuuqqq6666qqr/iMRXHXVVVddddVVV131H+q+++679TM/8zNf5+TJk3zkR34kALZ5INu8ILb517DNfxTbvKhs88LYxjb3s41tbANgG9s85jGP4eTJk3z913/9+/zDP/zDb3PVVVddddVVV1111X8kyvHjx7nqqquuuuqqq6666j/W2bNnbwV4hVd4hdd+xVd8RX73d38XSUhCEpIAkIQkJCEJSQBIQhKSAJAEgCQAJAEgCQBJAEhCEpKQhCQkIQkASUhCEpIAkIQkJAEgCUlIQhKSkASAJCQREUgiIpBEKYWIoJRCKYWIoJRCKYWIQBIAtrFNa43WGo9+9KM5fvw4P/qjP/o5v/Vbv/XdXHXVVVddddVVV131H41y/Phxrrrqqquuuuqqq676j3fffffdenh4uPsKr/AKr/0Kr/AK/P3f/z2r1QpJSEISkpCEJCQBIAlJSAJAEpIAkASAJAAkASAJAElIQhKSkIQkJAEgCUlIAkASkpCEJAAkIQlJSAJAEpKQhCQkERFIIiKICEopRASlFEoplFKICCICSdwvMyml8JCHPISdnR3+4R/+4be//uu//n246qqrrrrqqquuuuo/A+X48eNcddVVV1111VVXXfUf7+jo6NLZs2efcXh4uPsKr/AKr/3iL/7i/MM//APr9RpJSOK5SUISkpAEgCQkASAJAEkASOJ+kpCEJCQhCUlIAkASkpCEJAAkIQlJAEhCEpKQhCQkIQlJSEISkogIIoKIICIopVBKoZRCRFBKISIopRARSMI2pRQe8pCHsLGxwT/8wz/89md+5me+DlddddVVV1111VVX/WehHD9+nKuuuuqqq6666qqr/nMcHh7unj179hmHh4e7r/AKr/DaL/7iL858PufpT386kpCEJCQhCUlIQhKSAJCEJAAkASAJAEncTxKSkIQkJCEJSQBIQhKSkASAJCQhCQBJSEISkpCEJCQhCUlIQhIRQUQQEUQEEUEphYiglEIphVIKEYEkABaLBQ996EMppfAP//APv/2Zn/mZr8NVV1111VVXXXXVVf+ZKMePH+eqq6666qqrrrrqqv88h4eHu2fPnn3G4eHh7su//Mu/9sMe9jAAnv70pyMJSUhCEpKQhCQAJCEJAElI4n6SAJAEgCQkIQlJSEISAJKQhCQkASAJSUhCEgCSkIQkJCEJSUhCEpKQhCQigohAEhFBKYWIoJRCRFBKISKICCRx+vRprr/+egB+67d+67u/5Eu+5G246qqrrrrqqquuuuo/G+X48eNcddVVV1111VVXXfWf6/DwcPcf/uEffgfgxV/8xV/7oQ99KC/3ci/H4x//eFarFZKQhCQkIQkASUgCQBIAkgCQBIAkACQhCUlIQhIAkpCEJCQhCQBJSEISAJKQhCQkIQlJSAJAEpKQhCQigoggIogISimUUogISilEBBHBfD7n5ptv5vjx49x33323ftd3fdfH/OiP/ujncNVVV1111VVXXXXVfwXK8ePHueqqq6666qqrrrrqv8Y//MM//M5v//Zvf88rvuIrvvXp06ePP/axj2WxWPD0pz8dSUhCEgCSkIQkACQBIAkASQBIAkASkpCEJAAkIQlJSEISAJKQhCQkASAJSUhCEpKQhCQkIQlJSEISkpBERBARRAQRQSmFiKCUwo033siDH/xg+r7nvvvuu/Xrv/7r3+dP//RPf5qrrrrqqquuuuqqq/6roAc96EFcddVVV1111VVXXfVf65prrnnwi73Yi732h3/4h38XwMWLF/mt3/ot/vqv/xpJAEhCEgCSkASAJAAkcT9JAEhCEpKQhCQkIQlJSAJAEpKQBIAkJCEJSUhCEpKQhCQiAklEBKUUIoJSCrVWaq3UWum6jq7rOHPmDI985COZzWYA/MiP/Mhn/+iP/ujncNVVV1111VVXXXXVfzX0oAc9iKuuuuqqq6666qqr/ntcc801D/6cz/mc37rmmmseDLC7u8tP/uRP8oxnPANJSAJAEpIAkASAJO4nCQBJSEISkpCEJCQhCQBJSEISkgCQhCQkIQlJSEISkpBERCCJiKCUQkRQSqHWSimFruvY2dnhJV7iJThx4gQA9913361f//Vf/z7/8A//8NtcddVVV1111VVXXfXfAT3oQQ/iqquuuuqqq6666qr/PmfOnHnQ67zO67z367zO67z3Nddc82CA3d1dfvu3f5u/+Zu/AUASAJIAkASAJAAkASAJSUhCEpKQhCQkASAJSUhCEgCSkIQkJCEJSUhCEpKICCQREUQEpRRKKZRSePEXf3Ee9KAHsbGxAcB9991362/91m9994/+6I9+DlddddVVV1111VVX/XdCD3rQg7jqqquuuuqqq6666r/fNddc8+DXfu3Xfq8Xf/EXf+0Xe7EXe22A3d1d/vqv/5pnPOMZPOMZz0ASAJIAkMT9JCEJSUhCEpKQhCQAJCEJSUgCQBKSkIQkJAEgiYhAEpKICCQREUQEOzs7PPzhD+fFX/zFAbjvvvtuBfit3/qt7/7RH/3Rz+Gqq6666qqrrrrqqv8J0IMe9CCuuuqqq6666qqrrvqf45prrnnwi73Yi73W67zO67z3i73Yi702z7S7u8vf/M3f8IxnPIPbbrsNAEncTxKSkIQkJCEJSUgCQBKSkIQkACQhCUlIAkASkpBERCAJSezs7PDIRz6Shz/84WxtbXG/++6779bf+q3f+u4f/dEf/Ryuuuqqq6666qqrrvqfBD3oQQ/iqquuuuqqq6666qr/ma655poHv/Zrv/Z7vdM7vdNn8wC7u7s84xnP4BnPeAZ7e3s84xnPQBKSkIQkJCEJSQBIQhKSkIQkACQhCUkASEISktjZ2eHRj340N9xwA9dffz0PdN999936W7/1W9/927/9299z33333cpVV1111VVXXXXVVf8ToQc96EFcddVVV1111VVXXfU/2zXXXPPgM2fOPOh1Xud13vuaa6558Iu92Iu9Ns/l0qVL3HbbbQDcfvvtAOzt7bG3tweAJPb395HEsWPHAJDEzs4OkrjpppsAuPHGG9nZ2WF7e5vndt999936W7/1W9/9D//wD7/9D//wD7/DVVddddVVV1111VX/06EHPehBXHXVVVddddVVV131v8s111zz4Bd7sRd77Rd7sRd7rWuuuebBL/ZiL/ba/Ce47777bv2t3/qt7wb40R/90c/hqquuuuqqq6666qr/bdCDHvQgrrrqqquuuuqqq6763+2aa655MMCLvdiLvTbgF3uxF3ttgGuuuebBZ86ceTDPdM011zwY4L777ruVZzp79uytAH//93//2wBnz559xn333XfrP/zDP/w2V1111VVXXXXVVVf9b4ce9KAHcdVVV1111VVXXXXVVVddddVVV1111VVX/Z9E5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6v4R1oewojDsY7PAAAAAElFTkSuQmCC) diff --git a/docs/kcl/tangentToEnd.md b/docs/kcl/tangentToEnd.md index 5171881ab..8ddb00c21 100644 --- a/docs/kcl/tangentToEnd.md +++ b/docs/kcl/tangentToEnd.md @@ -31,12 +31,9 @@ tangentToEnd(tag: TagIdentifier): number pillSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [20, 0]) - |> tangentialArcToRelative([0, 10], %, $arc1) - |> angledLine({ - angle = tangentToEnd(arc1), - length = 20 - }, %) - |> tangentialArcToRelative([0, -10], %) + |> tangentialArc(end = [0, 10], tag = $arc1) + |> angledLine(angle = tangentToEnd(arc1), length = 20) + |> tangentialArc(end = [0, -10]) |> close() pillExtrude = extrude(pillSketch, length = 10) @@ -49,12 +46,9 @@ pillExtrude = extrude(pillSketch, length = 10) pillSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [0, 20]) - |> tangentialArcTo([10, 20], %, $arc1) - |> angledLine({ - angle = tangentToEnd(arc1), - length = 20 - }, %) - |> tangentialArcToRelative([-10, 0], %) + |> tangentialArc(endAbsolute = [10, 20], tag = $arc1) + |> angledLine(angle = tangentToEnd(arc1), length = 20) + |> tangentialArc(end = [-10, 0]) |> close() pillExtrude = extrude(pillSketch, length = 10) @@ -66,10 +60,7 @@ pillExtrude = extrude(pillSketch, length = 10) rectangleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [10, 0], tag = $seg1) - |> angledLine({ - angle = tangentToEnd(seg1), - length = 10 - }, %) + |> angledLine(angle = tangentToEnd(seg1), length = 10) |> line(end = [0, 10]) |> line(end = [-20, 0]) |> close() @@ -83,7 +74,7 @@ rectangleExtrude = extrude(rectangleSketch, length = 10) bottom = startSketchOn(XY) |> startProfileAt([0, 0], %) |> arcTo({ end = [10, 10], interior = [5, 1] }, %, $arc1) - |> angledLine([tangentToEnd(arc1), 20], %) + |> angledLine(angle = tangentToEnd(arc1), length = 20) |> close() ``` @@ -95,7 +86,7 @@ circSketch = startSketchOn(XY) triangleSketch = startSketchOn(XY) |> startProfileAt([-5, 0], %) - |> angledLine([tangentToEnd(circ), 10], %) + |> angledLine(angle = tangentToEnd(circ), length = 10) |> line(end = [-15, 0]) |> close() ``` diff --git a/docs/kcl/tangentialArc.md b/docs/kcl/tangentialArc.md index c3dc9c827..148187c13 100644 --- a/docs/kcl/tangentialArc.md +++ b/docs/kcl/tangentialArc.md @@ -1,17 +1,20 @@ --- title: "tangentialArc" -excerpt: "Draw a curved line segment along part of an imaginary circle." +excerpt: "Starting at the current sketch's origin, draw a curved line segment along some part of an imaginary circle until it reaches the desired (x, y) coordinates." layout: manual --- -Draw a curved line segment along part of an imaginary circle. +Starting at the current sketch's origin, draw a curved line segment along some part of an imaginary circle until it reaches the desired (x, y) coordinates. -The arc is constructed such that the last line segment is placed tangent to the imaginary circle of the specified radius. The resulting arc is the segment of the imaginary circle from that tangent point for 'offset' degrees along the imaginary circle. +When using radius and angle, draw a curved line segment along part of an imaginary circle. The arc is constructed such that the last line segment is placed tangent to the imaginary circle of the specified radius. The resulting arc is the segment of the imaginary circle from that tangent point for 'angle' degrees along the imaginary circle. ```js tangentialArc( - data: TangentialArcData, sketch: Sketch, + endAbsolute?: [number], + end?: [number], + radius?: number, + angle?: number, tag?: TagDeclarator, ): Sketch ``` @@ -21,9 +24,12 @@ tangentialArc( | Name | Type | Description | Required | |----------|------|-------------|----------| -| `data` | [`TangentialArcData`](/docs/kcl/types/TangentialArcData) | Data to draw a tangential arc. | Yes | -| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | | Yes | -| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | | No | +| `sketch` | [`Sketch`](/docs/kcl/types/Sketch) | Which sketch should this path be added to? | Yes | +| `endAbsolute` | [`[number]`](/docs/kcl/types/number) | Which absolute point should this arc go to? Incompatible with `end`, `radius`, and `offset`. | No | +| `end` | [`[number]`](/docs/kcl/types/number) | How far away (along the X and Y axes) should this arc go? Incompatible with `endAbsolute`, `radius`, and `offset`. | No | +| `radius` | [`number`](/docs/kcl/types/number) | Radius of the imaginary circle. `angle` must be given. Incompatible with `end` and `endAbsolute`. | No | +| `angle` | [`number`](/docs/kcl/types/number) | Offset of the arc in degrees. `radius` must be given. Incompatible with `end` and `endAbsolute`. | No | +| [`tag`](/docs/kcl/types/tag) | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | Create a new tag which refers to this arc | No | ### Returns @@ -35,14 +41,40 @@ tangentialArc( ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ angle = 60, length = 10 }, %) - |> tangentialArc({ radius = 10, offset = -120 }, %) - |> angledLine({ angle = -60, length = 10 }, %) + |> angledLine(angle = 45, length = 10) + |> tangentialArc(end = [0, -10]) + |> line(end = [-10, 0]) |> close() example = extrude(exampleSketch, length = 10) ``` -![Rendered example of tangentialArc 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAD+sUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquu+l/vmmuueTDAmTNnHswzXXPNNQ/mX+G+++67lWc6e/bsrQD33XffrVx11VVXXXXVVVdd9b8Zlauuuuqqq6666qqr/ke65pprHgxw5syZB7/Yi73YawFcc801D77mmmseDHDmzJkHX3PNNQ/mv8B99913K8DZs2dvve+++24F+Id/+IffAbjvvvtu/Yd/+Iff5qqrrrrqqquuuuqq/4nQgx70IK666qqrrrrqqquu+u9xzTXXPBjgxV7sxV77zJkzD3rxF3/x1wZ4sRd7sdfm+djd3WV3dxfb7O7usru7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1b/gmmuueTDP9KAHPYgP//AP56qrrrrqqquu+u93zTXXPPi+++67lauuuuqqq656wdCDHvQgrrrqqquuuupf8mIv9mKv/eEf/uHfxVVXXXXVVVdd9T/Cj/7oj37Ob/3Wb303V1111VVXXfXCoQc96EFcddVVV1111VVXXXXVVVddddVVV1111VX/J1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fxT8CVFr/nMHIqvMAAAAASUVORK5CYII=) +![Rendered example of tangentialArc 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADyC0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV131f9w111zzYIAzZ848GOCaa655MMCZM2cexIvg7Nmzz+CZ7rvvvlsBzp49e+t99913K1ddddVVV1111VX/s1G56qqrrrrqqquuuuqq/8WuueaaBwO82Iu92GufOXPmQQAv/uIv/toAL/ZiL/baPMB999136zXXXPNg/oPdd999t549e/bW++6771aA3/qt3/oenukf/uEffpurrrrqqquuuuqq/z7oQQ96EFddddVVV1111VVXXfW/wTXXXPPgF3uxF3vtM2fOPOjFX/zFX/vFXuzFXhvgvvvuu/Waa655MM+0u7sLwNOf/nQuXrwIwO7uLrbZ3d0F4OLFi9xvd3eX5+f48eM80PHjx7nf8ePHOXHiBCdOnADg+PHjADz0oQ/lgf7hH/7ht8+cOfPgf/iHf/htgH/4h3/4nX/4h3/47fvuu+9Wrrrqqquuuuqqq/7zoQc96EFcddVVV1111VVXXXXV/zTXXHPNg1/7tV/7vc6ePfuM13md13mvF3uxF3ttHmB3d5eLFy/y9Kc/HYBbb72Vixcvsru7y4vKNi8K27wgtnluJ06c4Pjx45w4cYKHPOQhAJw4cYKHPvSh3O++++679ezZs7f+/d///W//wz/8w+/8wz/8w29z1VVXXXXVVVdd9R8PPehBD+Kqq6666qqrrrrqqqv+u11zzTUPfu3Xfu33Anind3qnz+YBdnd3+cu//EsAbr31Vp7+9KfzH802/xLbvCC2eW62eaATJ05w/PhxTpw4wUMf+lBOnDjBQx/6UADuu+++WwH+4R/+4bd/67d+63v+4R/+4be56qqrrrrqqquu+vdDD3rQg7jqqquuuuqqq6666qr/atdcc82Dz5w58+AXe7EXe63XeZ3Xee9rrrnmwQC7u7tcvHiRW2+9lac//enceuut/FvY5t/KNi+MbZ4f2zw/tnkg29zvxIkTHD9+nIc+9KE87GEP46EPfSgA9913361nz5699e///u9/+x/+4R9+5x/+4R9+m6uuuuqqq6666qp/PfSgBz2Iq6666qqrrrrqqquu+q9wzTXXPPi1X/u13+vFX/zFX/vFXuzFXptn2t3d5a/+6q94+tOfzq233sp/Ftv8a9jmhbHN82Ob52abB7LNA9kG4MSJEwC83Mu9HA996EN52MMeBsB999136z/8wz/89m/91m99zz/8wz/8NlddddVVV1111VUvGvSgBz2Iq6666qqrrrrqqquu+s9yzTXXPPi1X/u13+vFX/zFX/vFXuzFXhtgd3eXv/qrv+LpT386t956K/9dbPOisM0LY5vnZpvnZpvnZpsHss39bHPixAke9rCH8dCHPpSXf/mXB+C+++679R/+4R9++7d+67e+5x/+4R9+m6uuuuqqq6666qoXDD3oQQ/iqquuuuqqq6666qqr/iNdc801D37t137t93rxF3/x1z5z5syDr7nmmgfv7u7yl3/5l9x6663ceuut/E9jm3+JbV4Q2zw/tnlutnkg2zyQbe5nm/sdP36chz3sYTzsYQ/j5V/+5QG47777bv2t3/qt7/7t3/7t77nvvvtu5aqrrrrqqquuuuo5oQc96EFcddVVV1111VVXXXXVf4Rrrrnmwa/92q/9Xu/0Tu/02QC7u7v85V/+JX/913/N7u4u/x6SeFHY5t/LNi+MbV4Q2zw32zw32zyQbR7INvezzf1sA3DixAke+tCH8rCHPYxXeIVX4L777rv1H/7hH377H/7hH37nt37rt76bq6666qqrrrrqqivQgx70IK666qqrrrrqqquuuurf6pprrnnwa7/2a7/X67zO67z3Nddc82CA3/zN32R3d5e//uu/5l9LEv9ZbPOvYZsXxjYviG2em20eyDYPZJsHss39bHM/29zPNidOnOAVXuEVeNjDHsbDHvYw7rvvvlt/67d+67t/9Ed/9HO46qqrrrrqqqv+v0MPetCDuOqqq6666qqrrrrqqn+ta6655sGv/dqv/V7v9E7v9NkAu7u7/OVf/iW/9Vu/hSReVJL472KbF5VtXhDbPD+2eW62eW62uZ9tHsg297PN/WxzP9vc78SJE7zhG74hr/AKr8B999136z/8wz/89m/91m99zz/8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/Etsc9V/Ltv8b2Sbf69jx47xmq/5mrzkS74kAPfdd9+tX//1X/8+//AP//DbXHXVVVddddVV/1kox48f56qrrrrqqquuuuqq/zuOjo4u/dmf/dnPHB4e7r74i7/4a1977bU88pGPZDabcdttt3HVfw3b/G9mm/8ox44d4xVf8RV5h3d4B6699loAfuRHfuSzv/RLv/Rtzp49eytXXXXVVVddddV/JvSgBz2Iq6666qqrrrrqqqv+b7rmmmse/I7v+I6f9Tqv8zrvDXDp0iV+7/d+j7/7u7/jqv8Ytvm/wDb/GV7jNV6D13zN1+R+v/Vbv/XdX//1X/8+XHXVVVddddVV/1XQgx70IK666qqrrrrqqquu+r/txV7sxV77wz/8w7/rmmuueTDApUuX+Pmf/3luu+02rvqX2eb/Etv8Z3uN13gNXuqlXopjx44BcN9999369V//9e/zD//wD7/NVVddddVVV131Xwk96EEP4qqrrrrqqquuuuqq//uuueaaB7/2a7/2e73TO73TZwNcunSJ2267jd/7vd/j0qVL/H9nm/+rbPNf5UEPehBv8RZvwbFjxwC47777bv3RH/3Rz/6t3/qt7+Gqq6666qqrrvrvgB70oAdx1VVXXXXVVVddddX/H9dcc82DX/u1X/u93umd3umzAS5dusTf/u3f8nd/93dcunSJ/6ts8/+Bbf47vMZrvAYv9VIvxbFjxwC47777bv2t3/qt7/7RH/3Rz+Gqq6666qqrrvrvhB70oAdx1VVXXXXVVVddddX/P2fOnHnQ67zO67z3O73TO302wKVLl/i7v/s7/vZv/5ZLly7xv4lt/j+yzX+313iN1+ClXuqlOHbsGAD33Xffrb/1W7/13T/6oz/6OVx11VVXXXXVVf8ToAc96EFcddVVV1111VVXXfX/1zXXXPPgd3zHd/ys13md13lvgEuXLnHbbbfxe7/3e1y6dIn/Lra56tls8z/FsWPHeMmXfEle8zVfk/vdd999t/7Wb/3Wd//oj/7o53DVVVddddVVV/1Pgh70oAdx1VVXXXXVVVddddVV11xzzYPf8R3f8bNe53Ve570BLl26xG233cbf/u3fctttt/HvZZurXjS2+Z/o2LFjvORLviSv+ZqvCcB99913K8Bv/dZvffeP/uiPfg5XXXXVVVddddX/ROhBD3oQV1111VVXXXXVVVdddb9rrrnmwa/92q/9Xu/0Tu/02TzTpUuX+L3f+z3+9m//lqv+49jmf4Njx47xmq/5mrzkS74k97vvvvtu/dEf/dHP/q3f+q3v4aqrrrrqqquu+p8MPehBD+Kqq6666qqrrrrqqque2zXXXPPg137t136vd3qnd/psnunSpUv87d/+LX/7t3/LpUuXuOpFY5v/bY4dO8ZLvuRL8lIv9VIcO3aM+/3Ij/zIZ//2b//299x33323ctVVV1111VVX/W+AHvSgB3HVVVddddVVV1111VUvyJkzZx704i/+4q/zOq/zOu/1Yi/2Yq8NcOnSJZ7xjGfwt3/7t9x2221cdYVt/rd70IMexEu+5Evyki/5ktzvvvvuu/W3fuu3vvtHf/RHP4errrrqqquuuup/G/SgBz2Iq6666qqrrrrqqquuelG82Iu92Gu/zuu8znu92Iu92Gtfc801Dwa4dOkSf/u3f8sznvEMbrvtNv6vs83/NceOHeMlX/Ilec3XfE0e6Ld+67e++x/+4R9+57d+67e+m6uuuuqqq6666n8r9KAHPYirrrrqqquuuuqqq6761zhz5syDXud1Xue9X+d1Xue9r7nmmgfzTJcuXeJv//Zv+b3f+z3+N7PN/2W2OX78OC/5ki/JS73US3Hs2DHud9999936W7/1W9/9oz/6o5/DVVddddVVV131fwF60IMexFVXXXXVVVddddVVV/1bXXPNNQ9+x3d8x896ndd5nffmmS5dusTu7i5/93d/x9/+7d/yP41t/r+wzf2OHz/OS77kS/KSL/mSHD9+nPvdd999t/7Wb/3Wd//2b//299x33323ctVVV1111VVX/V+CHvSgB3HVVVddddVVV1111VX/XmfOnHnQi7/4i7/Oi73Yi73W67zO67w3D3Dp0iX+9m//lmc84xncdttt/Gezzf9Htnmg48ePc+zYMR70oAfxmq/5mjzQfffdd+tv/dZvffc//MM//PY//MM//A5XXXXVVVddddX/VehBD3oQV1111VVXXXXVVVdd9R/pmmuuefCLvdiLvfaLvdiLvdbrvM7rvDcPcOnSJZ7xjGdw22238bd/+7f8a9jmqits8/wcP36cl3zJl+RBD3oQD3rQg3ig++6779bf+q3f+u5/+Id/+J1/+Id/+G2uuuqqq6666qr/D9CDHvQgrrrqqquuuuqqq6666j/LNddc8+AXe7EXe+0Xe7EXe63XeZ3XeW8e4NKlSwD87d/+Lc94xjN4xjOewVXPyzYvyPHjx3nJl3xJAF7zNV+T53bffffd+lu/9Vvf/du//dvfc999993KVVddddVVV131/w160IMexFVXXXXVVVddddVVV/1XOXPmzINe53Ve571f/MVf/LVf7MVe7LV5gEuXLgHwjGc8g2c84xk84xnP4NKlS/x/YZsX5vjx4xw7dowHPehBPOhBD+JBD3oQz+2+++679bd+67e+G+BHf/RHP4errrrqqquuuur/O/SgBz2Iq6666qqrrrrqqquu+u9wzTXXPPjFXuzFXvvFXuzFXuuaa6558Iu92Iu9Ns/l0qVLPOMZzwDgGc94Bs94xjO4dOkS/5vZ5l9y/Phxjh07xoMe9CCOHTvGS73US/H83Hfffbf+wz/8w2/fd999t/72b//299x33323ctVVV1111VVXXfVs6EEPehBXXXXVVVddddVVV131P8E111zz4DNnzjz4xV7sxV7rxV/8xV/7xV7sxV6b5+PSpUvs7u5y6dIlnvGMZwBw6dIlnvGMZ/A/iW3+JcePH+fYsWM86EEPAuBBD3oQD3rQg3hB7rvvvlt/67d+67sBfvRHf/RzuOqqq6666qqrrnrh0IMe9CCuuuqqq6666qqrrrrqf6prrrnmwS/2Yi/22i/2Yi/2Wtdcc82DX+zFXuy1eSEuXbrEpUuX2N3dBeAZz3gGAJcuXWJ3d5dLly7xH8k2z8/x48cBOHbsGMeOHeP48eMAHDt2jOPHj3Ps2DGOHz/OC3LffffdCvBbv/Vb3w3wD//wD7/zD//wD7/NVVddddVVV1111b8OetCDHsRVV1111VVXXXXVVVf9b3LNNdc8+MyZMw++5pprHvxiL/Zir3XNNdc8+MyZMw++5pprHsyL6NKlSwDs7u5yv0uXLvHcdnd3eaBjx44BIAnbHD9+nPsdP36cY8eO8a9x33333Xr27Nlb//7v//63Af7hH/7hd/7hH/7ht7nqqquuuuqqq676j4Ee9KAHcdVVV1111VVXXXXVVf9XXHPNNQ8+c+bMg6655pqHALzYi73Ya9133323vviLv/hrnzlz5sHXXHPNg/kvcN99990KcPbs2VsB/v7v//63Ac6ePfuM++677+lnz559xn333XcrV1111VVXXXXVVf+50IMe9CCuuuqqq6666qqrrrrq/5trrrnmwbZ9zTXXPIRnuuaaax4MGBDPdObMmQfxAGfPnn0GVxjQfffddyvPdN999z397Nmzz+Cqq6666qqrrrrqfw70oAc9iKuuuuqqq6666qqrrrrqqquuuuqqq6666v8kKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8V/wg9C5pLs7VQ4gAAAABJRU5ErkJggg==) + +```js +exampleSketch = startSketchOn(XZ) + |> startProfileAt([0, 0], %) + |> angledLine(angle = 60, length = 10) + |> tangentialArc(endAbsolute = [15, 15]) + |> line(end = [10, -15]) + |> close() + +example = extrude(exampleSketch, length = 10) +``` + +![Rendered example of tangentialArc 1](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAD91UlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1313+iaa655MM/0Yi/2Yq995syZBwG8+Iu/+Gvfd999t/7oj/7o59x33323ctVVV1111VVXXXXVvwV60IMexFVXXXXVVVddddVVV/1nuuaaax585syZB7/Yi73YawG8+Iu/+GufOXPmwddcc82DeT52d3cBGIbhVoCv//qvf59/+Id/+G2uuuqqq6666qqrrvrXQg960IO46qqrrrrqqquuuuqqf69rrrnmwQCv/dqv/V4AL/7iL/7aL/ZiL/baPJfd3V0uXrzI7u4uu7u7AOzu7nLx4kV2d3fZ3d0F4Pjx43zsx34sAP/wD//w25/5mZ/5Olx11VVXXXXVVVdd9a9F5aqrrrrqqquuuuqqq/6VrrnmmgefOXPmwS/2Yi/2Wi/+4i/+2i/2Yi/22jzA7u4uAH/913/NxYsX2d3dZXd3l1tvvZXnZpvnZ3d3l93dXY4fP86LvdiLvfY7vuM7ftaP/uiPfg5XXXXVVVddddVVV/1rULnqqquuuuqqq6666qoX4pprrnnwmTNnHvxiL/Zir/XiL/7ir/1iL/Zir80D7O7u8lu/9VsA3Hrrrdx66638a0jiBbl48SLHjx/nJ3/yJ3md13md9/7t3/7t77nvvvtu5aqrrrrqqquuuuqqFxWVq6666qqrrrrqqquueoBrrrnmwa/92q/9XgCv8zqv897XXHPNg3mm3d1d/vqv/5qLFy9y6623cuutt/Kf6dZbb+UhD3kIAE94whMe/OEf/uHf9Zmf+Zmvw1VXXXXVVVddddVVLyoqV1111VVXXXXVVVf9v3bNNdc8+LVf+7XfC+Cd3umdPptn2t3d5dZbb+Uf/uEfuPXWW7n11lv5r3brrbcC8JjHPIZv+ZZv4dM+7dNe+3Ve53Xe+7d+67e+m6uuuuqqq6666qqrXhRUrrrqqquuuuqqq676f+Waa6558Iu92Iu99pkzZx70Tu/0Tp/NM+3u7vLXf/3XXLx4kd/+7d8GQBL3k8R/Fts8P7u7uwCcOXOGc+fO8ZM/+ZO84zu+42f9wz/8w2/fd999t3LVVVddddVVV1111b+EylVXXXXVVVddddVV/+ddc801D37t137t93rxF3/x136xF3ux1wbY3d3l1ltv5elPfzp/8zd/w+7uLveTxH8lSTw/kgA4ffo0kvi93/s9XvM1X/PBH/7hH/5dn/mZn/k6XHXVVVddddVVV131L6Fy1VVXXXXVVVddddX/SS/2Yi/22i/2Yi/2Wu/0Tu/02TzT7u4uv/3bv82tt97Krbfeyv90u7u73HrrrTz4wQ/mMY95DI973OP4lm/5Fr76q7/6tV/ndV7nvX/rt37ru7nqqquuuuqqq6666oWhctVVV1111VVXXXXV/wnXXHPNg8+cOfPgF3uxF3utd3qnd/psgN3dXW699VZuvfVWfvu3f5v/zU6fPo0kzp07x7d8y7fwju/4jp/1D//wD79933333cpVV1111VVXXXXVVS8Ilauuuuqqq6666qqr/ld7x3d8x8+65pprHvw6r/M67w2wu7vLb//2b3Prrbdy66238m8lif9Ktnl+br31Vh784Adz+vRp7vd7v/d7vOZrvuaD3/Ed3/Gzvv7rv/59uOqqq6666qqrrrrqBaFy1VVXXXXVVVddddX/Otdcc82DX/u1X/u93umd3umzAXZ3d/nt3/5tbr31Vm699Vb+tSTx300Sz88znvEMAB7zmMfwUz/1U0jCNt/yLd/CV3/1V7/3P/zDP/zOb/3Wb303V1111VVXXXXVVVc9P1Suuuqqq6666qqrrvpf4Zprrnnwa7/2a7/XO73TO302wO7uLr/927/NX//1X7O7u8uLShL/m+zu7gJw5swZHujcuXN8y7d8C+/4ju/4Wf/wD//w2/fdd9+tXHXVVVddddVVV1313KhcddVVV1111VVXXfU/1jXXXPPg137t136v13md13nva6655sEAf/3Xf82tt97KX//1X/OikMT/Zru7uwCcPn2a06dPc+7cOSRhm9/7vd/jNV/zNR/8ju/4jp/19V//9e/DVVddddVVV1111VXPjcpVV1111VVXXXXVVf/jXHPNNQ9+x3d8x896ndd5nfcG2N3d5bd/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rrrqPx7BVVddddVVV/0neMd3fMfP4pl+7/d+j//JbGMb29jGNv+X2MY2trGNbWxjG9tcddX/B7axjW1sYxvb2OZ/O9vYxja2sc3/ZLaxjW1s89/JNraxzX812+zu7vIzP/Mz3O91Xud13ourrrrqqquu+o9HcNVVV1111VX/CV7sxV7stQF+53d+h4sXL2Kb/01sYxvb2MY2/1fZxja2sY1tbGMb21x11f8GtrGNbWxjG9vYxjb/l9jGNraxzf90trGNbWzz3802trHNfzXb2MY29/vrv/5rbr31VgBe7MVe7LW56qqrrrrqqv94VK666qqrrrrqP9iLvdiLvRbP9Fqv9Vq81mu9FlddddVVV1111b/smmuuefB99913K1ddddVVV131H4fgqquuuuqqq/6D/cM//MPv/NZv/dZ3c9VVV1111VVXvch+67d+67vvu+++W7nqqquuuuqq/1joQQ96EFddddVVV1111VVXXXXVVVddddVVV1111f9JVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+r+Ed9t1Vy9MMhLwAAAABJRU5ErkJggg==) + +```js +exampleSketch = startSketchOn(XZ) + |> startProfileAt([0, 0], %) + |> angledLine(angle = 60, length = 10) + |> tangentialArc(radius = 10, angle = -120) + |> angledLine(angle = -60, length = 10) + |> close() + +example = extrude(exampleSketch, length = 10) +``` + +![Rendered example of tangentialArc 2](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAD+sUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquu+l/vmmuueTDAmTNnHswzXXPNNQ/mX+G+++67lWc6e/bsrQD33XffrVx11VVXXXXVVVdd9b8Zlauuuuqqq6666qqr/ke65pprHgxw5syZB7/Yi73YawFcc801D77mmmseDHDmzJkHX3PNNQ/mv8B99913K8DZs2dvve+++24F+Id/+IffAbjvvvtu/Yd/+Iff5qqrrrrqqquuuuqq/4nQgx70IK666qqrrrrqqquu+u9xzTXXPBjgxV7sxV77zJkzD3rxF3/x1wZ4sRd7sdfm+djd3WV3dxfb7O7usru7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1b/gmmuueTDP9KAHPYgP//AP56qrrrrqqquu+u93zTXXPPi+++67lauuuuqqq656wdCDHvQgrrrqqquuuupf8mIv9mKv/eEf/uHfxVVXXXXVVVdd9T/Cj/7oj37Ob/3Wb303V1111VVXXfXCoQc96EFcddVVV1111VVXXXXVVVddddVVV1111VX/J1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fxT8CVFr/nMHIqvMAAAAASUVORK5CYII=) diff --git a/docs/kcl/tangentialArcTo.md b/docs/kcl/tangentialArcTo.md index d3c237611..4c517946d 100644 --- a/docs/kcl/tangentialArcTo.md +++ b/docs/kcl/tangentialArcTo.md @@ -35,7 +35,7 @@ tangentialArcTo( ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ angle = 60, length = 10 }, %) + |> angledLine(angle = 60, length = 10) |> tangentialArcTo([15, 15], %) |> line(end = [10, -15]) |> close() diff --git a/docs/kcl/tangentialArcToRelative.md b/docs/kcl/tangentialArcToRelative.md index bc7a02b97..f277bfbb1 100644 --- a/docs/kcl/tangentialArcToRelative.md +++ b/docs/kcl/tangentialArcToRelative.md @@ -35,7 +35,7 @@ tangentialArcToRelative( ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ angle = 45, length = 10 }, %) + |> angledLine(angle = 45, length = 10) |> tangentialArcToRelative([0, -10], %) |> line(end = [-10, 0]) |> close() diff --git a/docs/kcl/tau.md b/docs/kcl/tau.md index 0080e0edd..48f51783a 100644 --- a/docs/kcl/tau.md +++ b/docs/kcl/tau.md @@ -30,7 +30,7 @@ tau(): number ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ angle = 50, length = 10 * tau() }, %) + |> angledLine(angle = 50, length = 10 * tau()) |> yLine(endAbsolute = 0) |> close() diff --git a/docs/kcl/toDegrees.md b/docs/kcl/toDegrees.md index a14fd13b6..9ff62fdc0 100644 --- a/docs/kcl/toDegrees.md +++ b/docs/kcl/toDegrees.md @@ -33,10 +33,7 @@ toDegrees(num: number): number ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ - angle = 50, - length = 70 * cos(toDegrees(pi() / 4)) - }, %) + |> angledLine(angle = 50, length = 70 * cos(toDegrees(pi() / 4))) |> yLine(endAbsolute = 0) |> close() diff --git a/docs/kcl/toRadians.md b/docs/kcl/toRadians.md index 44de6b8c0..6e7ac2254 100644 --- a/docs/kcl/toRadians.md +++ b/docs/kcl/toRadians.md @@ -33,10 +33,7 @@ toRadians(num: number): number ```js exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ - angle = 50, - length = 70 * cos(toRadians(45)) - }, %) + |> angledLine(angle = 50, length = 70 * cos(toRadians(45))) |> yLine(endAbsolute = 0) |> close() diff --git a/docs/kcl/translate.md b/docs/kcl/translate.md index 7a33ceb55..2a79b28b7 100644 --- a/docs/kcl/translate.md +++ b/docs/kcl/translate.md @@ -45,9 +45,9 @@ translate( sweepPath = startSketchOn(XZ) |> startProfileAt([0.05, 0.05], %) |> line(end = [0, 7]) - |> tangentialArc({ offset = 90, radius = 5 }, %) + |> tangentialArc(angle = 90, radius = 5) |> line(end = [-3, 0]) - |> tangentialArc({ offset = -90, radius = 5 }, %) + |> tangentialArc(angle = -90, radius = 5) |> line(end = [0, 7]) // Create a hole for the pipe. @@ -61,7 +61,7 @@ sweepSketch = startSketchOn(XY) |> translate(x = 1.0, y = 1.0, z = 2.5) ``` -![Rendered example of translate 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEs6UlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqf5NrrrnmwQBnzpx5MMA111zzYIAzZ848iGe65pprHgxwzTXXPJhnOnPmzIN5gGuuuebB/Dvcd999t15zzTUPvu+++27luZw9e/ZWgPvuu+9Wnum+++67FeDs2bPPALjvvvtuBTh79uyt9913361cddVVV1111VVXXXXVVf+XoAc96EFcddVVV1111VVXXHPNNQ8GOHPmzINf7MVe7LV4phd/8Rd/bYAzZ848+JprrnkwL8B99913a9/3Dwa49dZbefCDH8zu7i7Hjx8H4Pjx4+zu7vKiOH78OAC7u7sA7O7uAnD8+HGe2+7uLs9td3eX++3u7nL8+HEAjh8/DsCDH/xgnp/77rvv1rNnz95633333QrwD//wD79z33333Xr27Nlb77vvvlu56qqrrrrqqquuuuqqq/43QQ960IO46qqrrrrqqv9PrrnmmgefOXPmwS/2Yi/2WgAv/uIv/toAL/ZiL/baPJdbb72V3d1ddnd3OX78OPc7fvw4u7u7ABw/fpzjx49z/Phxnp/d3V3ut7u7y/0e/OAH8x/p1ltv5X7Hjx/n+PHj3G93d5fjx4+zu7vL7u4uu7u7ANx6663s7u6yu7sLwIkTJzh+/DgAD3rQgwA4fvw4D37wgwH4h3/4h98GuO+++279rd/6re/5h3/4h9/mqquuuuqqq6666qqrrvqfDD3oQQ/iqquuuuqqq/6vuuaaax78Yi/2Yq995syZB734i7/4a7/Yi73Ya/MAf/3Xf83u7i4At956KwC7u7u89Eu/NAAPfvCDOX78OMePH+d+u7u77O7uslgsuPbaa3luR0dHAEhiuVwSEQzDQESQmdRaqbVSayUiKKUgCUlkJq01pmlitVoxDAPr9Zr1ek1EMI4jrTVaa0zTRGaSmWxsbJCZbG5uAmCbra0tALa3t9nZ2eG5/fVf/zXHjx/nwQ9+MAC7u7vceuutPOMZz+Cv//qveW7Hjx/nwQ9+MAAv9VIvxYMf/GDuu+++W//hH/7ht3/0R3/0c+67775bueqqq6666qqrrrrqqqv+p0EPetCDuOqqq6666qr/S6655poHv/Zrv/Z7vdM7vdNn80y33nort956K894xjO49dZbeaAHP/jBPOhBD+LBD34wD37wgwHY3d3l+PHjPNDBwQH7+/scHh5ycHCAJA4PDzk6OmK5XLJcLokISimUUiil0HUdXdfRdR2z2Yz5fM58Pmc+nzOfz5nNZnRdRykFgMxkmibW6zXr9ZrlcslyuWS5XLJarViv1wzDwDiOjOPINE201mit0VqjtUZmkpnYJjPJTGyztbVFZrKzs8P29ja2uemmmzh27BgPetCDeKDd3V1+53d+h7/5m7/hBTl+/DjHjh3jpV/6pbn++utv/dEf/dHP+a3f+q3v5qqrrrrqqquuuuqqq676n4TKVVddddVVV/0f8WIv9mKv/eEf/uHfdc011zz41ltv5bd/+7f5nd/5HV6Q13qt1+K1X/u12d3dZXd3lwc/+MEA7O3t8aQnPQlJ3H333RweHnJwcEBEIImIQBIRgSQigoggIgCwjW0AbGOb+9nGNraxjW1sYxtJ3E8SDyQJSUji32pvb4/M5NKlS2Qmmcnf/M3f0Fqjtcb29ja33HILL/MyL8PDHvYwXuu1XotnPOMZ7O7u8twkcenSJS5dusRtt93GS73USz34dV7ndd7rH/7hH377vvvuu5Wrrrrqqquuuuqqq6666n8KKlddddVVV131f8A7vuM7ftYbvdEbffbf/M3f8M3f/M3cTxLPz0u91Evx4Ac/GABJ3HXXXfzZn/0Zd911FxFBRBARSCIikMS/h21sYxvbANjGNi+MJCTxQJIAkIQkHkgS/x4XL17kwoULPOxhD+MZz3gGly5dQhIvyPHjx3nJl3xJXuu1Xot/+Id/4L777ruVq6666qqrrrrqqquuuup/EipXXXXVVVdd9X/Ay77sy773M57xDH7nd36HF8Xx48eRxN/8zd/wh3/4hxweHlJKISJ4UdlGEgC2sc0D2cY2tgGwjW1sY5v72cY2/xqS+LeQhG0Ajh07xk033cTOzg633HILD37wgwH43d/9Xb7+67+e3d1dJPFAx48f59ixYzzoQQ/iJV/yJTl+/Dj3e7EXe7HX5qqrrrrqqquuuuqqq676n4bKVVddddVVV/0vd8011zx4tVrxUi/1Ujzo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wja2sY1tAGxjGwDb2MY297PNv5VtXhjb2AbANgC2sY1tHsg2trENgG3+rSTxgkjiP8vFixe55pprHsxVV1111VVXXXXVVVdd9T8JwVVXXXXVVVf9HxERt9rGNgC2+beyzXOzzf1sA2Cb+9kGwDa2uZ9tAGxjG9vYxja2sc0D2eaFkcSLShL/USTx3CRxP0lcddVVV1111VVXXXXVVf/jEFx11VVXXXXV/xERcattbGObB7LNc7PNA9nm+bHNA9nmudkGwDb3s41tbGMb29jmfraxjW1sY5sXRhKSeCBJAEjigSTxryGJfy1J3E8SFy9e5JprrnkwV1111VVXXXXVVVddddX/JARXXXXVVVdd9X/IOI638ky2sY1tXhjbPD+2eVHY5oFsY5sHso1tAGxjG9s8N9u8KCTxL5HE/STxryWJq6666qqrrrrqqquuuup/PYKrrrrqqquu+j+ktXarbWzz3GxzP9s8P7Z5fmwDYJsXxDYPZBvb2OZ+trGNbQBsYxvb2AbANi8KSQBIAkASkvivJgkASVx11VVXXXXVVVddddVV/+MQXHXVVVddddX/Ia01bPOC2MY297MNgG2eH9u8ILaxDYBtAGzz/NjGNraxjW1sYxvb2AbANgC2sc39JPEfRRLPjyT+PS5evMiZM2cezFVXXXXVVVddddVVV131PwnBVVddddVVV/0f0lq71Ta2sY1tAGzzorLNv8Q297PNA9nGNraxjW0AbGOb+9nGNvezzf9UknhhJCGJq6666qqrrrrqqquuuup/HIKrrrrqqquu+j+ktXarbWxzP9s8P7b517ANgG1eVLaxjW3uZxvb2AbANraxjW1scz/bPDdJ/HeShCQAJHG/ixcvctVVV1111VVXXXXVVVf9j0Nw1VVXXXXVVf+HtNawDYBtbHM/2zw/tgGwzf1scz/b/EtsYxvbANjGNvezjW1sYxvbANjGNs/NNv8dJPFAknhRSeKaa655MFddddVVV1111VVXXXXV/yQEV1111VVXXfV/iKTfsY1tnh/b2MY2/xa2uZ9tbPPcbHM/29gGwDa2sY1tbGMbANvYBsA2L4gkHkgSAJL415DEv4UknpskJHHVVVddddVVV1111VVX/Y9EcNVVV1111VX/x2QmtrENgG1s86Kwzf1scz/bvCC2eW62sc39bPPcbGMb29gGwDYvCkm8IJJ4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be5nmxeVbZ6bbQBsYxvbPJBtbGMbANvYxja2sY1tAGwDYJv72ea5SeJfQxIPJInnRxJXXXXVVVddddVVV1111f8JBFddddVVV131/4RtbPOisM39bHM/2zyQbR7INg9kG9vY5oFsYxvb2AbANraxzXOzzYtCEs+PJP6zSWJ3dxeAM2fOPJirrrrqqquuuuqqq6666n8Cgquuuuqqq676Pygibs1MbGMb27wwtvnPZhvb2MY2D2SbB7KNbQBs859JEv8SSQBI4rlJQhIAkrjqqquuuuqqq6666qqr/kchuOqqq6666qr/o6ZputU297MNgG1eENvczzb3s839bANgm/vZ5n62sY1tAGxjGwDb2AbANraxjW1sYxvb/GtJ4j+aJP4tLl68yFVXXXXVVVddddVVV131PwbBVVddddVVV/0fNU3TrbaxjW0AbPPcbPPvYRsA2zw329zPNvezjW1sYxsA29jmfraxzQsiCQBJ/HtJ4j/SNddc82Cuuuqqq6666qqrrrrqqv8JCK666qqrrrrq/6jMxDbPj21sY5v72QbANvezzf1scz/bPD+2eW62sQ2AbWxjG9vczzb3s41t/j0k8YJI4t9LEpJ4fi5evMhVV1111VVXXXXVVVdd9T8GwVVXXXXVVVf9HzVN0622sY1tbPMfzTbPj21sY5v72ea52cY2trGNbWzzH0kS/1kkcT9JSALgzJkzD+Kqq6666qqrrrrqqquu+p+A4Kqrrrrqqqv+j8rMW23zQLaxzb/ENvezzf1s8y+xzXOzDYBtbGMb29jGNgC2uZ9tbGMb29jmP5sknpskrrrqqquuuuqqq6666qr/1Qiuuuqqq6666v+oaZqwjW1s88LYBsA2Lyrb3M82tnl+bANgGwDb2MY2trGNbQBsY5v/CJKQxH8USbwgkrjqqquuuuqqq6666qqr/kciuOqqq6666qr/oyLid2xjGwDb3M82tgGwzb/ENvezzQPZ5n62AbCNbWwDYBsA2zw/trGNbQBsYxvbPD+SeG6SeGEkcT9J/FtJ4oEkcT9J7O7ucs011zyYq6666qqrrrrqqquuuup/AoKrrrrqqquu+j/MNg9kG9vczzYviG3+LWzzQLYBsA2AbWxjG9vYxja2AbCNbe5nGwDb2OZfIol/K0n8R7jmmmsezFVXXXXVVVddddVVV131PwHBVVddddVVV/0fJelW29jGNv8S2wDY5vmxzf1sA2CbF8Q2z802ALaxjW1scz/b2AbANv9akvjvIgmAixcvctVVV1111VVXXXXVVVf9j0Fw1VVXXXXVVf+HZSa2AbDN/WzzorDNi8I2trENgG0AbANgG9vYxjbPzTa2sQ2AbQBsA2Cb50cS/9Ek8UCSeFFJQhJXXXXVVVddddVVV1111f8YBFddddVVV131f1RE3FprxTa2AbDN82ObF4Vt/rVs80C2sY1tbGMb29gGwDYAtnlRSeJfSxL/GXZ3dzlz5syDueqqq6666qqrrrrqqqv+JyC46qqrrrrqqv/DxnG8FcA2tgGwDYBtbGOb+9kGwDb3s83zYxsA2zyQbQBsYxsA29jGNvezjW1scz/bANjmfrb5n0IS95PE/SRx1VVXXXXVVVddddVVV/2PRHDVVVddddVV/4etVqtbbfPvZZv72eZfYpv72eaBbGOb+9nGNraxjW3uZ5t/iSReVJJ4UUjiRSGJ57a7u8tVV1111VVXXXXVVVdd9T8GwVVXXXXVVVf9HyYJ29jGNrYBsM1zs80D2eZfYpv72eYFsY1tbANgG9vYBsA2trmfbWxzP9v8e0ji+ZHEv4UknpskJAFwzTXXPJirrrrqqquuuuqqq6666n8Cgquuuuqqq676P2y9Xv+2bR7INi+MbZ4f29zPNg9kGwDb2OZ+tnlutrmfbWxzP9vY5n62sQ2AbV5UkviPJIkXRBJXXXXVVVddddVVV1111f9YBFddddVVV131f1hmYhvbPDfb3M82z49t/q1sA2AbANvYBsA2tgGwjW1sA2Ab29jmv4Ik/iPt7u5y1VVXXXXVVVddddVVV/2PQXDVVVddddVV/4dl5jNsYxvb2OaBbGObF5Vt7mcbANs8N9s8kG3uZxsA29gGwDa2sc3/FJL4t5AEwDXXXPNgrrrqqquuuuqqq6666qr/bgRXXXXVVVdd9X+YpFszkweyjW2eH9sA2OZ+tvm3so1tAGxjGwDbANjGNvezjW1sYxvb2MY2ALZ5QSTx/EjigSTx3CTxH0ESV1111VVXXXXVVVddddX/KARXXXXVVVdd9X+YbWxjG9v8R7DN82Mb29gGwDb3s839bGMb2wDYxja2AbDN/2SSeG6SkATA7u4uAGfOnHkwV1111VVXXXXVVVddddV/N4Krrrrqqquu+j8sIm61jW0AbHM/2zyQbR7INvezzfNjGwDbPJBtnpttbGMbANvYBsA2trENgG1sY5v72QbANi8KSUjiRSWJ5yaJ+0niRSGJq6666qqrrrrqqquuuup/DIKrrrrqqquu+j8sIm61DYBtAGxjGwDb2MY297PN82Ob+9nmRWEb2zw32wDYxja2AbCNbWxzP9s8N9s8P5KQxPMjif8qFy9e5Kqrrrrqqquuuuqqq676H4Hgqquuuuqqq/6Pm6bpVtsA2OZfwzb/Ets8P7a5n20AbGMbANsA2AbANg9kG9sA2OY/kiT+I0jiBbnmmmsezFVXXXXVVVddddVVV131343gqquuuuqqq/6Pm6bpVtvY5l9iGwDbPD+2uZ9tHsg2trHN82Ob+9kGwDYAtrGNbWxjm/vZ5r+KJF5UkgCQxP0kIYmrrrrqqquuuuqqq6666n8Mgquuuuqqq676Py4zsY1tbGMbANu8KGzzr2UbANvYxjYAtrENgG0AbHM/29gGwDYPZJv/DpL417p48SJnzpx5EFddddVVV1111VVXXXXVfzeCq6666qqrrvo/rrV2q20eyDYAtrmfbV4UtrmfbQBs89xs80C2uZ9tbGMb29jGNvezDYBtAGwDYJvnRxL/WpJ4fiTxbyGJq6666qqrrrrqqquuuup/HIKrrrrqqquu+j+utXarbWzz/NjGNvezDYBt7meb/yi2uZ9tAGxjG9vYxja2AbDN/xSSAJDEA0nifpK46qqrrrrqqquuuuqqq/7HoHLVVVddddVV/8e11rANgG1sA2CbfyvbSOK52cY297ONbWwDYBsA29gGwDb3s41tAGzzv9Xu7i7XXHPNg7nqqquuuuqqq6666qqr/rsRXHXVVVddddX/cZJ+xza2uZ9tnh/bPJBt7meb58c2ALa5n22em20AbGMbANsA2MY297PNA9nm30MSAJJ4IEk8P5L4t5DEVVddddVVV1111VVXXfU/CsFVV1111VVX/T9gG9vYxjb3s83zY5vnxzb3s80LY5vnZpv72cY2trGNbWxjGwDb2MY2ALZ5UUniP5IkXlSS2N3d5ZprrnkwV1111VVXXXXVVVddddV/N4Krrrrqqquu+j9O0q22eUFsYxvbPD+2+ZfY5gWxjW1sA2Ab29zPNvezDYBtnh/b2Oaqq6666qqrrrrqqquuuupFRHDVVVddddVV/w/Yxja2AbCNbf4tbHM/2zw329zPNg9km/vZxjYAtrENgG0AbGMb29jmP4sknh9J/GtI4qqrrrrqqquuuuqqq676H4fgqquuuuqqq/6Pi4hbbWMbANu8MLYBsM39bPOisA2AbWxzP9s8kG3uZxvb2MY2trHNc7PN/wSSuJ8kJPHcdnd3OXPmzIO56qqrrrrqqquuuuqqq/67EVx11VVXXXXV/wPjON5qG9s8kG3+LWxzP9sA2Ob5sQ2AbWxjGwDb2MY297MNgG1sYxvb/HtI4oEk8dwk8S+RxL9EEpK46qqrrrrqqquuuuqqq/7HILjqqquuuuqq/wdaa7faBsA2trHNc7PNA9nmfrb517LN82Mb29zPNrYBsM1zs80LIgkASTyQJP41JPHcJPGCSOJ+knig3d1drrrqqquuuuqqq6666qr/EQiuuuqqq6666v+B1hoAtnlutrGNbe5nm3+JbZ4f29jmgWxjGwDb3M82trGNbWxjG9vYxjYPZBsA27wgkrifJP67XHPNNQ/mqquuuuqqq6666qqrrvrvRnDVVVddddVV/w/YvjUzsc2/h22eH9sA2OZ+tgGwzf1sA2Ab29jmX2IbANsA2ObfQhL3k8R/pkuXLnHVVVddddVVV1111VVX/Y9AcNVVV1111VX/D4zjeKttAGxjG9vY5rnZ5oFs80C2uZ9tXhjbPDfbPJBtbGMb29jGNraxDYBtXhSS+PeQxL+XJO53zTXXPJirrrrqqquuuuqqq6666r8TwVVXXXXVVVf9P2D7GbaxzYvKNv8atnlBbGMb2wDYxja2sc39bANgG9sA2Oa/kyTuJwkASTw3SUjiqquuuuqqq6666qqrrvofheCqq6666qqr/n+41TYAtrHN/WwDYBvbPD+2eSDb3M82z80297PNA9nmudnGNgC2uZ9tAGxjG9v8R5HE8yOJf69Lly4BcObMmQdz1VVXXXXVVVddddVVV/13Irjqqquuuuqq/wdsYxvbPD+2eSDbANjmfrZ5UdgGwDYvjG1sYxvb2MY2trGNbQBsc9VVV1111VVXXXXVVVdd9W9EcNVVV1111VX/D0TErbaxjW0AbGObfyvb3M82ALZ5INsA2MY2tgGwzfNjmweyzQtim/8JJHHVVVddddVVV1111VVX/Y9FcNVVV1111VX/T9jGNgC2eUFs84LY5l/LNg9kGwDb2MY2trENgG1sYxsA29jGNgC2+beSxANJ4vmRxANJ4vmRBIAk7icJSVy8eJFrrrnmwVx11VVXXXXVVVddddVV/50Irrrqqquuuur/gYi4NSIAsM0D2eb5sQ2AbV4Q27yobHM/2zw/tgGwDYBtHsg2ALb515DEVVddddVVV1111VVXXfX/EsFVV1111VVX/T8xTdOttgGwjW1sA2Ab29jmX2Kb58c2ALaxjW1sA2AbANvYBsA2trGNbWwDYBsA2wDYxjYviG3+PSTxryGJF0QS97t48SJnzpx5EFddddVVV1111VVXXXXVfyeCq6666qqrrvp/YrVa3Wob2/xr2eaBbHM/2/xr2eaBbGMb29jGNgC2uZ9tXlSS+PeSxAsjiQeSxP0kcdVVV1111VVXXXXVVVf9j0Bw1VVXXXXVVf9PtNZutc39bANgm+dmGwDb/GvY5rnZBsA2trENgG1sY5v72eZ+tvmvIol/iSReFJIAkMRVV1111VVXXXXVVVdd9d+O4Kqrrrrqqqv+n8jMW21jG9sA2OZFZZsHss39bPPC2OaBbHM/29jGNgC2sY1tbGMb2wDYxjb/HpL4r3Dx4kWuueaaB3PVVVddddVVV1111VVX/XciuOqqq6666qr/J1pr2MY2z802ALaxzb+XbWxjmxfENrZ5INu8ILb5zySJ5yaJfwtJXHXVVVddddVVV1111VX/IxBcddVVV1111f8Ttp9hGwDb2OaBbPNAtgGwzf1s80C2uZ9tAGzzQLYBsI1tbGOb+9nGNrYBsI1tbGMb29jmgWzzopLEf4fd3V2uueaaB3PVVVddddVVV1111VVX/XciuOqqq6666qr/JyTdahvb3M82tvnXsM1/BNvY5n62sY1tbPP82OaBbPNvIYnnRxIvCkk8P5K46qqrrrrqqquuuuqqq/5HIbjqqquuuuqq/yck3Wob29jmhbHNA9nmBbHNv8Q2L4htbANgm/vZxja2AbANgG0AbPPCSOKBJPFvIYn7SeK5SUIS95PEVVddddVVV1111VVXXfU/BsFVV1111VVX/T9im/vZ5n62eX5s8/zY5oFsA2AbANvYxjb3s41tbGMbANvczzYAtrHNA9nm30IS/1qSeFFJ4vmRxO7uLmfOnHkwV1111VVXXXXVVVddddV/J4Krrrrqqquu+n8iIm61jW1sA2Ab2wDYxja2eX5s80C2eVHY5vmxDYBtbANgm/vZxja2AbDNfyRJ/EeSxANJ4qqrrrrqqquuuuqqq676b0dw1VVXXXXVVf+PjON4q20AbPOisM2/hm2em20AbGMb2wDYBsA2tgGwjW0eyDYAtvmvIIl/r93dXa666qqrrrrqqquuuuqq/3YEV1111VVXXfX/SGvtVtvY5l9im+dmmweyzf1s869hGwDb3M82trGNbWxjmweyjW3+I0jiRSGJf4trrrnmwVx11VVXXXXVVVddddVV/50Irrrqqquuuur/kdYatrmfbQBs80C2eUFs80C2eX5sY5v72ea52QbANrZ5INvYBsA2tvmfQBL/EklcddVVV1111VVXXXXVVf8jEFx11VVXXXXV/yOttVttYxvbANgGwDYAtrmfbQBs86KwDYBt7mcb2wDYxja2sQ2AbQBsYxvb2OZ+trmfbf49JPHcJPH8SOKFkcRzk4QkAC5dugTANddc82Cuuuqqq6666qqrrrrqqv8uBFddddVVV131/0hm3mob2zw/tnlR2OaBbPNvYRsA2wDY5n62sc0LYpvnRxL/WpK46qqrrrrqqquuuuqqq/5PIrjqqquuuuqq/0emacI2ALaxDYBt/iW2eVHY5vmxzf1scz/bANgGwDa2uZ9tbGMbANv8d5DEv8WZM2cezFVXXXXVVVddddVVV13134Xgqquuuuqqq/4fiYjfsY1t7meb58c2ALZ5fmzzQLZ5INvYxjb3s41tAGxjGwDbANjmfraxzQPZBsA2ALZ5UUjiXyKJ5yaJf4kkJPFAkrh06RJXXXXVVVddddVVV1111X87gquuuuqqq676f8Y2trHNA9nmfrZ5fmzzQLZ5UdjmBbENgG0AbGOb+9nGNrb5jyCJ/wySuOqqq6666qqrrrrqqqv+xyG46qqrrrrqqv9HJN1qm/vZ5oFsY5t/K9sA2Oa52QbANraxzf1sA2Ab29jGNrb5rySJF4UkXhQXL17kmmuueTBXXXXVVVddddVVV1111X8Xgquuuuqqq676f8Y2trENgG1s8/zYBsA297PNA9nm38o2tgGwzfNjG9sA2MY2D2Sb/0iSeCBJ3E8S/xJJXHXVVVddddVVV1111VX/YxBcddVVV1111f8jEXGrbWwDYJt/C9s8kG2eH9vY5n62eX5sA2Ab29jGNra5n23uZxvb/FtJ4j+CJB5IEveTxMWLFzlz5syDuOqqq6666qqrrrrqqqv+uxBcddVVV1111f8/twLY5oFs80C2eSDbvChsA2Cb+9nGNgC2sY1tbGMbANs8kG0AbGOb/00kASCJq6666qqrrrrqqquuuuq/FcFVV1111VVX/T+zWq1utc39bGMbANsA2OZ+tnl+bPNAtvm3sg2AbWxjGwDb3M82trHNfwRJvCCSuOqqq6666qqrrrrqqqv+TyC46qqrrrrqqv+HbGMb2zw327wgtnkg2zw/tnl+bHM/29jmfrZ5INsA2OZfYpt/C0m8KCTxryWJixcvcs011zyYq6666qqrrrrqqquuuuq/C8FVV1111VVX/T8zjuOttnlR2OZfwzYPZBvbPJBtbHM/29gGwDa2sQ2AbQBsA2AbANsA2OZfIgkASTw/knh+JPH8SAJAElddddVVV1111VVXXXXV/3gEV1111VVXXfX/TGvtVtvYxja2AbDNC2Kb+9nmgWzzL7GNbV4Y2zyQbQBsA2AbANsA2OY/iiT+PSQhCQBJ3G93d5drrrnmwVx11VVXXXXVVVddddVV/10Irrrqqquuuur/GdvPsI1t7meb52abF5Vt7mcbANs8N9sA2MY2trGNbQBsYxvbANgGwDb/m0hCEpK46qqrrrrqqquuuuqqq/5bEVx11VVXXXXV/z+32gbANg9kG9vY5n62AbDN/WzzH802trmfbQBsA2Ab2/xnkcRzk8T9JPH8SOJ+krjqqquuuuqqq6666qqr/kchuOqqq6666qr/Z2xjG9sA2ObfwjYPZJv72eZ+trHN/WxzP9vY5oFsYxsA2wDY5n62sc39bPM/1e7uLmfOnHkwV1111VVXXXXVVVddddV/F4Krrrrqqquu+n8mIm7NTGxjGwDb2OZfYpt/Ddvczza2AbCNbe5nG9vY5n62AbDNfxRJvDCSeFFI4qqrrrrqqquuuuqqq676X4Hgqquuuuqqq/6fiYhbbXM/29zPNg9kGwDbPD+2eSDb/HvZxjYAtgGwjW1scz/b2OZ+tvmfZnd3l6uuuuqqq6666qqrrrrqvxXBVVddddVVV/0/NE3TrbaxzQtim+fHNg9km+fHNs+PbQBsYxvb2MY2trmfbQBs819JEg8kiftJ4oEk8dwkIQlJAFxzzTUP5qqrrrrqqquuuuqqq67670Jw1VVXXXXVVf8PtdZutc39bGMbANvY5l/DNvezzQPZxja2uZ9tXhDb2AbANgC2sQ2AbWzzbyWJf4kk/iNI4qqrrrrqqquuuuqqq676b0Vw1VVXXXXVVf8PZSa2sY1tXhjbANjmfrZ5UdjmgWzzQLaxjW1s80C2AbDN/WzzH0ES/xV2d3cBuOaaax7MVVddddVVV1111VVXXfXfgeCqq6666qqr/h9qrd1qm+dmmxeVbR7INvezzQtiGwDbPDfb2MY2ALYBsI1tHsg2/xJJvCCSeFFJ4oWRhCSuuuqqq6666qqrrrrqqv9xCK666qqrrrrq/6HW2q22sY1tbGOb52abB7LNC2ObF4VtHsg2trmfbWzz3GxjG9s8kG3+LSQhiedHEi+MJJ6bJO4nCUkAnDlz5sFcddVVV1111VVXXXXVVf8dCK666qqrrrrq/6HMxDbPj21sY5v72eb5sc0LYpv72cY2z802trmfbWxzP9vY5gWxjW3+vSTxopLEi2p3d5errrrqqquuuuqqq6666r8VwVVXXXXVVVf9P2T7GbaxjW1s86KyzQPZ5oFs80C2uZ9tbANgmxfENra5n21s86KwzXOTxL9EEv8Wknhukrjqqquuuuqqq6666qqr/kcguOqqq6666qr/hyTdahvb3M82tnlutvm3ss2/xDa2sY1tbHM/29jmfraxDYBt/qNJ4oEkcT9JvCgkcT9JXLx4kWuuuebBXHXVVVddddVVV1111VX/HQiuuuqqq6666v8hSbfaxja2eVHY5n62eSDbPJBtXhjbANjmBbHN/Wxjm/vZ5n86SVx11VVXXXXVVVddddVV/+0Irrrqqquuuur/Kdvczzb3s839bPOiss0LYhvb2OZ+trmfbWxjG9vYBsA2trmfbWzzn0kS/5F2d3c5c+bMg7jqqquuuuqqq6666qqr/jsQXHXVVVddddX/QxFxq21sY5v72QbANra5n20AbHM/2zw329zPNgC2eSDbPJBtnh/b3M82tnlutnkg2/xHk8RzkwSAJK666qqrrrrqqquuuuqq/9EIrrrqqquuuur/qWmabrUNgG1s869lm38L2wDY5n62sY1tbANgG9s8N9vY5j+LJJ4fSfxrSOKqq6666qqrrrrqqquu+m9FcNVVV1111VX/T03TdKttbPPC2OaBbPPC2OZ+tnlBbANgG9s8N9vczzYAtrHNA9nGNrb57yQJSQBI4n4XL17kmmuueTBXXXXVVVddddVVV1111X8Hgquuuuqqq676fyozeSDbANjm+bHN82ObF4VtbPPC2MY2tgGwjW0AbPPvIYl/DUncTxIvjCSemyQAJHHVVVddddVVV1111VVX/bchuOqqq6666qr/p2zfmpnYxjYAtgGwjW1s8/zY5oFs80C2eSDb3M82tgGwDYBtbPNAtrmfbR7INv9TSeJ+krh48SLXXHPNg7nqqquuuuqqq6666qqr/jsQXHXVVVddddX/U+M43mqb/yi2eX5s8/zYBsA2D2Qb2wDYxjYAtrGNbQBsY5t/D0lIQhIvKkkASOJFIYmrrrrqqquuuuqqq6666r8NwVVXXXXVVVf9P2X7GbaxjW1sA2Cb52YbANvczzbPzTb3s82/hm1scz/b/EeTBIAkJPFAknhukrjqqquuuuqqq6666qqr/lcjuOqqq6666qr/v261jW3uZ5vnZpsXxDYvKtvYxjb3sw2AbR7INgC2sY1tbGObfy9JvCCSeEEk8fxI4oXZ3d3lzJkzD+aqq6666qqrrrrqqquu+u9AcNVVV1111VX/T9nmfrZ5INu8ILZ5YWxzP9sA2OaBbGMbANvczza2AbDN82Mb29zPNv+RJPHvJQlJSOKqq6666qqrrrrqqquu+m9FcNVVV1111VX/T0XErZmJbQBs80C2sc39bPP82Oa52eZfyzb3sw2AbQBs89xsY5v/bJL499jd3eWqq6666qqrrrrqqquu+m9DcNVVV1111VX/j9nGNrYBsI1t/iW2eSDbvCC2eUFsA2Cb+9kGwDYAtgGwjW2eH9v8R5LECyOJ50cSz00S11xzzYO56qqrrrrqqquuuuqqq/47EFx11VVXXXXV/1MRcWspBdsA2OYFsQ2AbV4Q2zyQbR7INraxjW3uZxsA29gGwDYAtgGwzf1sY5v/DpJ4IEncTxJXXXXVVVddddVVV1111f84BFddddVVV131/9jR0dFvA9jmgWxzP9s8P7Z5Udnmudnmfra5n20eyDYAtrHNC2Kb/0iSuJ8kXlSSuJ8kdnd3AbjmmmsezFVXXXXVVVddddVVV131X43gqquuuuqqq/4fy0xsA2Ab29gGwDa2eWFs80C2eSDbvDC2eSDb3M82L4xtAGzz300SL4gkrrrqqquuuuqqq6666qr/NgRXXXXVVVdd9f9Ya+1W29jmX2IbANu8MLb517ANgG3uZxsA29jGNvezjW0AbPNAtvmPJIl/K0k80JkzZx7MVVddddVVV1111VVXXfVfjeCqq6666qqr/h9rrd1qG9sA2AbANi8q2zw329zPNvezjW1sY5v72eZ+tgGwzQPZxjb/0SQhCUlI4l8iCQBJvCCSuN+lS5e46qqrrrrqqquuuuqqq/7bEFx11VVXXXXV/2OZiW0AbANgm+dmmweyzQPZ5l9im+dmmweyDYBtAGxjG9v8d5PE8yOJF0QSV1111VVXXXXVVVddddV/K4Krrrrqqquu+n/M9jNsY5vnZhvb2OZ+tnlR2eZ+tnlBbANgGwDbANjmgWxjG9vYxjb3s82/hSSemyT+o128eJFrrrnmwVx11VVXXXXVVVddddVV/9UIrrrqqquuuur/MUm32gbANrZ5UdnmgWzz3GzzorANgG0AbANgG9vY5vmxjW0eyDb/XpK4nySuuuqqq6666qqrrrrqqv+1CK666qqrrrrq/zFJt9rGNvezjW2em20AbHM/2zyQbV4Y29jGNraxzf1s80C2eX5s8x9BEv/RJCGJB5LE7u4uZ86ceRBXXXXVVVddddVVV1111X81gquuuuqqq676f842trHNfwTbPJBtAGzz/NjmgWxzP9vczza2AbCNbR7INv+RJPHcJAEgCQBJ3E8SDySJq6666qqrrrrqqquuuuq/HcFVV1111VVX/T8WEbfa5n62uZ9t7mebF8Q2z802/xq2AbANgG3uZxvb/HeSxL+FJK666qqrrrrqqquuuuqq/1YEV1111VVXXfX/3DRNt9rGNs/NNra5n20AbPNAtnlutrmfbR7INraxzf1sA2AbANs8kG0AbHM/2wDY5l9DEi8KSfxbSOJ+ktjd3eWaa655MFddddVVV1111VVXXXXVfzWCq6666qqrrvp/rrV2q23uZxvb/GewjW0eyDb3sw2AbQBsYxvbANgGwDa2AbDNc7PNv4YkJCGJfwtJXHXVVVddddVVV1111VX/IxFcddVVV1111f9zmQmAbWzzorLNA9nmudnmRWGb52abB7LNv8Q2/16SeH4kASAJAEn8a1xzzTUP5qqrrrrqqquuuuqqq676r0Zw1VVXXXXVVf/PtdZutc1zs80D2QbANi+IbV4Q27wwtgGwzf1sYxvbANjGNvezzQtjm3+JJJ6bJO4niX+v3d1drrrqqquu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IQlJSEISAJKQxP0k8dxs88JI4r777ruVq6666qqrrrrqvwqVq6666qqrrrrqqquuuurfTNKD+R9MEveThCTuJwlJSEISkpCEJCQhCUlI4oEkIYl/i62tLa666qqrrrrqqv9SBFddddVVV1111VVXXXXVv5kkJPGCSOLfwjYviCT+tSRxP0lIQhKSkIQkJCEJSUhCEpKQBIAkJPFAkvjXODo6upWrrrrqqquuuuq/EsFVV1111VVXXXXVVVdd9W8mif8otnlBbPPCSOIFkcQLIwlJSEISEUFEIAlJAEhCEgCS+Lc6Ojq6lauuuuqqq6666r8SwVVXXXXVVVddddVVV131bxYRD+bfwDYvCtv8W0nigSQhCQBJSEISkpCEJCQhCUlIQhKSkASAJJ4f29jmX3LffffdylVXXXXVVVdd9V+JylVXXXXVVVddddVVV1317yIJSbwobCOJfy9JPDdJ3E8SL4gkACQhCUlIQhKSkIQkJCEJSQBI4n6S+NeyzebmJlddddVVV1111X8pgquuuuqqq6666qqrrrrq3ywiHsy/km3+s0hCEveTBIAkACQBIAkASQBIIiKQhCQkIQlJSAJAEpKQBIAkXhDbPD+r1epWrrrqqquuuuqq/0pUrrrqqquuuuqqq6666qr/0yQBIAkASUhCEgCSkIQkJCEJSUgCQBL/Ue65555ncNVVV1111VVX/VeictVVV1111VVXXXXVVVf9h5DEfyVJ/HtIQhKSkIQkJCEJSUhCEpIAkIQk/j26rruVq6666qqrrrrqvxKVq6666qqrrrrqqquuuurfrNb6YEk8kCT+J5DE/SQBIAlJSAJAEpKQhCQkIQlJSEISz00SkvjXsA3AfffddytXXXXVVVddddV/JYKrrrrqqquuuuqqq6666t/kdV7ndd7bNv/RbPOiksSLShIPJAlJSEISkogIIgJJSEISkpCEJCTxbyEJgGPHjnHVVVddddVVV/2XIrjqqquuuuqqq6666qqr/k1e53Ve5714Jkk8kCT+NWzzH0kSAJKQxP0kIQlJSEISkpCEJCQhCUlIQhKSkIQk/q1sA3DffffdylVXXXXVVVdd9V+J4Kqrrrrqqquuuuqqq676Nzl9+vRrA0jiP4NtAGzzwkjiX0sSkgCQhCQkIQlJSEISkpCEJAAk8W+1tbXFVVddddVVV131X47gqquuuuqqq6666qqrrvpXO3PmzIMAJPFAkvjvIIn7SeK5SUISkpDE/SQhCUlIQhKSkIQkJCEJAEkASOLf4ty5c7/NVVddddVVV131X43KVVddddVVV1111VVXXfWvds011zyY/2EkIYn7SQJAEg8kCUlIQhKSkIQkJCGJiEASkgCQxL/XfffddytXXXXVVVddddV/NSpXXXXVVVddddVVV1111b+ZJP4nk8T9JCEJAElIQhKSkIQkJCEJSUhCEgC2kYQkACTxgtjm+dna2uKqq6666qqrrvovR+Wqq6666qqrrrrqqquu+le77777br322mv530IS95MEgCQkIQlJRASSkIQkJCEJAEn8ex0dHd3KVVddddVVV131X43gqquuuuqqq6666qqrrvpXO3v27DMAHv3oR/M/kSReGEkASEISkpBERCAJSUgCQBKSkASAJF4Q27wgmclVV1111VVXXfVfjuCqq6666qqrrrrqqquu+jf5h3/4h99+zGMegyT+PWxzP9u8MJL415KEJCQhCUlIQhKSkIQkJCGJiEASkpDEA0niBbHNC/PKr/zKr81VV1111VVXXfVfjeCqq6666qqrrrrqqquu+jd7jdd4DQAkIYn/CpKQxAsiCQBJSOIFkQSAJCQhCUlIQhKSkIQkJCGJF8Q2z802D/Swhz3swVx11VVXXXXVVf/VCK666qqrrrrqqquuuuqqf5Mf+ZEf+ZzMvPVRj3oU/xUk8UCS+NeQhCQkIQlJSEISkpCEJCQhCUlIQhIviG1s86I4c+bMg7nqqquuuuqqq/6rEVx11VVXXXXVVVddddVV/yZnz5699ezZs7e+z/u8D//RbANgGwBJPD+SkMT9JPHcJCGJ+0lCEpKQhCQiAklIQhKSkIQkACQBIIl/q52dHa666qqrrrrqqv9yBFddddVVV1111VVXXXXVv8l9991364/8yI98zqlTp3izN3sz/jtJQhL3kwSAJO4nCUk8kCQkIQlJSEISkpCEJCQhCUkASOJFIYn7XXvttfzDP/zDb3PVVVddddVVV/1XI7jqqquuuuqqq6666qqr/s3Onj176z/8wz/89qu8yqvwiEc8gv9JJPH8SEISkpCEJCQREUhCEpKQBIAk/i1sc7/NzU3+/u///re56qqrrrrqqqv+qxFcddVVV1111VVXXXXVVf9m9913360/8iM/8jmnTp3iPd7jPTh58iT/00hCEpKQBIAkJCEJSUhCEhGBJCQhCUkASEISkvi3eNjDHsZVV1111VVXXfXfguCqq6666qqrrrrqqquu+nf5h3/4h9/+kR/5kc8+efIkH/mRH8l/N0m8IJKQBIAkJCEJSUhCEpKQBIAkJPHvcc0113Ddddfx27/929/DVVddddVVV131X43gqquuuuqqq6666qqrrvp3++3f/u3v+fu///vfPnnyJJ/5mZ/Ji8o297PNfzRJAEjifpKQhCQkIQlJSEISkpCEJCQhCUn8W73ES7wE//AP//Db9913361cddVVV1111VX/1Qiuuuqqq6666qqrrrrqqn+3++6779av//qvf+/77rvv1pMnT/Iu7/Iu/HeQBIAkJAEgCQBJSAJAEpKQhCQkIQlJSEISknggSbwgtnl+rrnmGq699lp+67d+63u46qqrrrrqqqv+OxBcddVVV1111VVXXXXVVf8hzp49+4zP+qzPep1/+Id/+O1XeIVX4NM+7dP4rySJF4UkJAEgCUlIQhKSkIQkJCEJSUjiX2tzc5PXeZ3X4b777rv1t37rt76bq6666qqrrrrqvwPBVVddddVVV1111VVXXfUf5r777rv167/+69/nvvvuu/XkyZN86qd+KidOnOBfwzYAtnlRSeKFkYQkJCEJAElIQhIRgSQkIQlJSEISDySJ52YbANvcb2Njgzd5kzfhvvvuu/Xrv/7r34errrrqqquuuuq/C8FVV1111VVXXXXVVVdd9R/qvvvuu/WzPuuzXue+++679cSJE3zwB38wr//6r89/JElIQhKSeCBJ3E8SknhukpCEJCQhCUlIQhIAkgCQBIAknpttnttiseAN3/ANAfit3/qt7/6Hf/iH3+aqq6666qqrrvrvQjl+/DhXXXXVVVddddVVV1111X+sw8PD3T/7sz/7mcPDw92Xf/mXf+2HPexhnDhxgrvvvpvVaoUkJAEgCUkASAJAEgCSkIQkJCGJiEASkpCEJCQhCUlEBBFBRBARRASlFEop1FqptdJ1HV3X0fc9fd/T9z1939N1HbVWSilEBJIAsE1rjWmamKaJcRwZhoFxHJmmiWmaaK1x/PhxXv3VXx2A3/qt3/ru7/qu7/oYrrrqqquuuuqq/06U48ePc9VVV1111VVXXXXVVVf9xzs8PNz9h3/4h98BePEXf/HXvuGGG3jsYx/LYrHg6U9/OpIAkIQkACQBIAkASUhCEpKICCQhCUlIQhKSkEREIImIICKICCKCUgqlFGqt1Frpuo6u6+j7nr7v6fuevu/puo5aK6UUIgJJ2CYzaa0xTRPTNDGOI+M4Mo4j0zQxTRPb29u8/Mu/PAC/9Vu/9d1f//Vf/z5cddVVV1111VX/3SjHjx/nqquuuuqqq6666qqrrvrP8w//8A+/89u//dvfs7m5efwxj3nMSz/0oQ/lZV/2ZVmtVtxzzz1IQhIAkgCQBIAkJCGJiEASkpCEJCQhCUlIIiKQREQQEZRSKKUQEdRaKaVQa6XrOrquo+97+r6n73v6vqfrOmqtlFKICO5nm8xkmiamaWIcR8ZxZBxHpmni+uuv59GPfjT33XffrX/6p3/601//9V//Plx11VVXXXXVVf8TUI4fP85VV1111VVXXXXVVVdd9Z/r8PBw90//9E9/5h/+4R9+58Ve7MVe+/Tp08cf+9jH8jIv8zKsVivuvvtuJCEJAEkASEISkogIJCEJSUhCEpKQREQgiYhAEqUUIoKIoJRCKYVaK7VWuq6j6zr6vmc2m9H3PX3f03UdtVZKKUQEkrBNZtJao7XGOI6M48g4jnRdx2Mf+1iOHTsGwM///M9/9Xd913d9DFddddVVV1111f8UlOPHj3PVVVddddVVV1111VVX/dc4e/bsrX/6p3/604eHh7vXXHPNg0+fPn38MY95DC/7si/LfD7n1ltvBUASAJKQhCQiAklIQhKSkIQkJBERSCIiiAgigoiglEJEUGullELXddRa6fuevu/p+56+7+n7nr7vqbVSSkESkgDITFprTNPEOI5kJidOnOD06dMA3Hfffbd+/Md//Mv86Z/+6c9w1VVXXXXVVVf9T0I5fvw4V1111VVXXXXVVVddddV/naOjo0v/8A//8Dt/9md/9jOHh4e711xzzYNPnTp1/CEPeQgv8zIvw/XXX898Pueee+5BEpKQREQgCUlIQhKSkEREIAlJRAQRQURQSiEiKKVQSqHWSq2Vruvo+56+7+n7nr7v6fueruuotVJKISIAsI1tpmmitUatlY2NDWqt3Hfffbd+13d918d8/dd//fscHh7uctVVV1111VVX/U+DHvSgB3HVVVddddVVV1111VVX/fe55pprHvxiL/Zir/U6r/M67/1iL/Zir80z7e7ucuutt/KMZzyD/f19br/9diKCiCAiiAgiglIKEUFEUEohIiilUEqh1kqtla7r6Pue2WzGbDZjsViwsbHBxsYGm5ubbG5uslgsWCwW9H1PrZVSCq01pmlitVqxXq+533333Xfrb/3Wb333j/7oj34OV1111VVXXXXV/2ToQQ96EFddddVVV1111VVXXXXV/ww/8RM/YYB/+Id/+O0Xe7EXe20e4NKlS9x+++3cfvvt7O/vc+edd1JKISKICCKCUgoRQSmFWiulFLquo+s6uq5jNpsxn89ZLBZsbGywsbHB5uYmm5ubLBYL5vM5pRQyk3EcGceRB7rvvvtu/a3f+q3v/tEf/dHP4aqrrrrqqquu+t+AylVXXXXVVVddddVVV131P8I111zzYID77rvv1s/8zM98nTNnzjzoxV/8xV/nxV7sxV7rdV7ndd772LFjHDt2jBd/8Rfnfnt7e+zv77O/v8/dd99NRHB4eEgphaOjI2qtlFLouo6u6+j7np2dHWazGdvb2ywWC/q+p+97bLNcLnmg++6771aAH/3RH/3sf/iHf/id++6771auuuqqq6666qr/TahcddVVV1111VVXXXXVVf8jnDlz5sEAZ8+evRXg7Nmzz/it3/qt7/6t3/qt7/7RH/3RzwF4sRd7sdd6sRd7sde+5pprHvxiL/Zir72zs8POzg4Aj370o/n3uu+++249e/bsM/7+7//+t/7hH/7hd/7hH/7ht7nqqquuuuqqq/43o3LVVVddddVVV1111VVX/Y9333333Qpw33333fpbv/Vb3wNwzTXXPBjgxV7sxV4L0Iu92Iu9FsA111zz4Pvuu+8Z11xzzYPOnDnzYJ6Ps2fP3nrffffd+g//8A+/febMmQf/wz/8w++cPXv21vvuu+9Wrrrqqquuuuqq/0uoXHXVVVddddVVV1111VX/I1xzzTUPBrjvvvtu5UVw33333Qpw33333QrwW7/1W9/NVVddddVVV1111XOictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV131P8KZM2ceBHDffffdylVXXXXVVVddddV/DCpXXXXVVVddddVVV1111f8I11xzzYMBzp49+wyuuuqqq6666qqr/mNQueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq676H+Gaa655MMB99913K1ddddVVV1111VX/MahcddVVV1111VVXXXXVVf8jnDlz5sEAZ8+evZWrrrrqqquuuuqq/xhUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VX/I1xzzTUPBrjvvvtu5aqrrrrqqquuuuo/BpWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqv92Z86ceRDAfffddytXXXXVVVddddVV/3GoXHXVVVddddVVV1111VX/7a655poHA5w9e/ZWrrrqqquuuuqqq/7jULnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVX/be75pprHgxw33333cpVV1111VVXXXXVfxwqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qr/dmfOnHkwV1111VVXXXXVVf/xqFx11VVXXXXVVVddddVV/2Pcd999t3LVVVddddVVV131H4fKVVddddVVV1111VVXXfXf5pprrnkwwDXXXPNgnumaa6558H333XcrV1111VVXXXXVVf9+6EEPehBXXXXVVVddddVVV1111X+Pz/3cz/2tF3uxF3ttnstnfuZnvs4//MM//DZXXXXVVVddddVV/z5Urrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq676b3PffffdeubMmVu56qqrrrrqqquu+s+BHvSgB3HVVVddddVVV1111VVXXXXVVVddddVVV/2fROWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q/hHxnvfrjXTaKAAAAAASUVORK5CYII=) +![Rendered example of translate 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAEhS0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVS+Sa6655sE805kzZx4McM011zyYZzpz5syDeC7XXHPNg3k+rrnmmgfzAtx333238gLcd999t/JMZ8+efQbPdN99993KM509e/bW++6771auuuqqq6666qqrrrrqqqsAPehBD+Kqq6666qqr/r+55pprHgxw5syZB19zzTUPPnPmzIN4pmuuuebB11xzzYMBzpw58+BrrrnmwbyIbr31Vu63u7vL8ePHeW67u7v8S44fP87u7i7P7fjx4zzQgx/8YF6Yf/iHf/jtM2fOPPjs2bO33nfffbcC/MM//MPvANx33323nj179tb77rvvVq666qqrrrrqqquuuuqq/6vQgx70IK666qqrrrrq/5prrrnmwWfOnHnwNddc82CAM2fOPOjFX/zFX/vMmTMPvuaaax7M83Hrrbeyu7vL7u4uAMePH2d3d5f7PfjBD2Z3d5fd3V2OHz/O8ePHud/x48cBOH78OP9eu7u7HD9+nN3dXY4fPw7A7u4uD7S7u8vu7i73u/XWW7nf7u4uu7u7HD9+nOPHjwNw/Phxjh8/DsDx48d58IMfzP3uu+++WwH+4R/+4bcB/uEf/uF3/uEf/uG377vvvlu56qqrrrrqqquuuuqqq/63Qw960IO46qqrrrrqqv+trrnmmgefOXPmwS/2Yi/2Wtdcc82D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ddVVV131Px7BVVddddVVV/0v0lq71Ta2sY1tbGObB7LNC2Kb52ab58c2D2Sb58c2L4htAGwDYJsHss3/ZJKQxFVXXXXVVVddddVVV131vxLBVVddddVVV/0v0lrDNrZ5brYBsM1zs82/xDb3s80LYpv72eZ+trGNbWxjG9sA2AbANgC2sc2/hyReEEn8e0jiBZGEJHZ3dzlz5syDueqqq6666qqrrrrqqqv+JyO46qqrrrrqqv9FJP2ObQBsY5sHss0D2eb5sc2/h21sA2Ab2zw/trGNbWxjG9vczzb/FpL495LEv0QS95PEVVddddVVV1111VVXXfW/DsFVV1111VVX/S9im8zENvezjW3+JbZ5INs8N9vczzb3s41tbPPC2MY2trENgG0eyDa2sQ2AbWzzH00S/1qSeFHt7u5yzTXXPJirrrrqqquuuuqqq6666n8ygquuuuqqq676XyQibgWwjW1eGNsA2OYFsc1zs80D2eaBbANgG9vYBsA297ONbWwDYBvb2OaBbPPfSRJXXXXVVVddddVVV1111f9pBFddddVVV131v4xtbANgm/vZ5n62eX5s89xs84LY5kVhGwDb2OaBbGMb2wDYxjYviG3+LSTx3CTxn0ESu7u7AFxzzTUP5qqrrrrqqquuuuqqq676n4rgqquuuuqqq/4XiYhbp2m6FcA2ALaxDYBtbPPC2Oa52eaBbPPC2Oa52QbANraxjW0eyDb3s80D2eZ/OklIAkASV1111VVXXXXVVVddddX/eARXXXXVVVdd9b/MNE232gbANi+MbQBs8y+xzQtiG9vY5n62sY1tbANgmweyjW1sYxsA29gGwDa2sQ2Abf61JPHCSOKFkcTzI4kXxZkzZx7MVVddddVVV1111VVXXfU/FcFVV1111VVX/S+TmdjGNg9kmxeVbf4ltgGwzQPZ5vmxDYBtbGMbANvczzb3s82/liT+LSTxopLEi2J3d5errrrqqquuuuqqq6666n88gquuuuqqq676X2aaplttYxvb2MY2z802D2SbB7LNc7PNi8I2ALaxjW0AbHM/29gGwDa2sY1tbPNfTRL/VpJ4IElI4qqrrrrqqquuuuqqq676H4/gqquuuuqqq/6Xaa3dapvnxza2sc39bPOC2Oa52eZFYZsHsg2AbWwDYBvb2MY2D2Qb29jmP4okXhhJPD+SeEEkASCJ53bx4kWuueaaB3PVVVddddVVV1111VVX/U9FcNVVV1111VX/y0zThG1sY5t/Dds8N9u8ILa5n21sY5sXxDYAtrENgG3uZxvb2OaBbGOb/w0kcdVVV1111VVXXXXVVVf9r0Fw1VVXXXXVVf/LRMTvZCb3sw2AbZ6bbQBs88LY5oFs80C2eSDbANjGNraxDYBt7mcbANvY5rnZ5r+aJP4jSOLixYucOXPmQVx11VVXXXXVVVddddVV/1MRXHXVVVddddX/MraxjW3uZ5sXlW3+NWzz/NjmudkGwDa2AbDN/WxjG9vYBsA2z49t/iWSeG6S+LeQxP0kASCJB5IEgCSuuuqqq6666qqrrrrqqv8VCK666qqrrrrqf5mIuBXANraxzf1scz/bvCC2eW62eSDbvChsYxvbANgGwDa2AbCNbWxjmxfENv8VJHHVVVddddVVV1111VVX/b9AcNVVV1111VX/C9nGNvezjW0AbGOb+9kGwDb/Etu8ILaxjW1sA2CbB7INgG3uZxvb2OZ+trGNbQBsYxsA2/xrSeKBJPGfTRK7u7tcc801D+aqq6666qqrrrrqqquu+p+K4Kqrrrrqqqv+l4mIW6dputU2tvm3ss3zY5v72QbANi8q2wDYxja2uZ9tbPNAtnlutnlBJPEfQRJXXXXVVVddddVVV1111f95BFddddVVV131v9A4jrcC2MY297PNA9nmgWzzQLb5t7INgG1sYxvbANgGwDYAtrHN/WxjG9u8qCTxryGJfy1J/Eskcb/d3V2uueaaB3PVVVddddVVV1111VVX/U9FcNVVV1111VX/C2UmtrmfbWzzQLa5n21eENs8N9vczzYviG2em20AbANgm/vZxjbPzTb/WpL495LEi0ISkrifJK666qqrrrrqqquuuuqq/xUIrrrqqquuuup/odbarbaxjW0eyDa2eUFs89xs89xs80C2sY1tbPNAtrGNbQBsA2AbANvY5n62sQ2Abe5nmxeFJF4Ukvi3ksQLIwmAM2fOPJirrrrqqquuuuqqq6666n8qgquuuuqqq676X6i1dqttXhS2AbDN/Wzz3GzzgtjmudkGwDYPZBsA2wDYxja2sY1t7meb+9nm30MSz48kXhhJvDCSuJ8kHmh3d5errrrqqquuuuqqq6666n80gquuuuqqq676X2iaJjIT29jGNgC2+few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BBFBRBARRAQRQURQSiEiKKUQEdRaKaVQa6XrOrquYzabMZvNmM/nbGxssLGxwebmJpubm2xsbLCxscF8Pqfve2qtRAStNQ4PDzk6OqK1BsB99913K8DXf/3Xv88//MM//DZXXXXVVVddddV/N/SgBz2Iq6666qqrrrrqqquuuup/tmuuuebBL/ZiL/bar/M6r/NeL/ZiL/ba9913363XXHPNgwEuXbrEbbfdxu23387+/j533nknEUFEEBGUUogISimUUiilUGul1kqtlb7v6fue+XzOfD5nsViwubnJ5uYmm5ubbGxssLGxQd/3ANjm6OiI1hr3u++++279rd/6re/+rd/6re8+e/bsM7jqqquuuuqqq/6nQA960IO46qqrrrrqqquuuuqqq/73uOaaax78Yi/2Yq/9Yi/2Yq/1Oq/zOu/N87G3t8f+/j77+/vcddddRASHh4dEBMvlklIK6/Waruvouo7jx4/T9z3z+Zzt7W22trbY2Nig6zr6vuf5ue+++279rd/6re8+e/bsM37rt37ru7nqqquuuuqqq/4nQg960IO46qqrrrrqqquuuuqqq/73OnPmzINe/MVf/HVe7MVe7LWuueaaB7/Yi73Ya/PvdHBwwNbWFve77777bgU4e/bsrX//93//2//wD//wO//wD//w21x11VVXXXXVVf/ToQc96EFcddVVV1111VVXXXXVVf93XHPNNQ+27WuuueYh11xzzYNf7MVe7LXuu+++W1/8xV/8tQHOnDnzYIBrrrnmwTzTP/zDP/z2mTNnHgxw9uzZW++7775b77vvvlsB/uEf/uF3/uEf/uG3ueqqq6666qqr/jdCD3rQg7jqqquuuuqqq6666qqrrrrqqquuuuqqq/5PonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9X8Y8Q6hZuDzQmEgAAAABJRU5ErkJggg==) ```js // Move an imported model. @@ -86,15 +86,9 @@ cube sketch001 = startSketchOn(XY) rectangleSketch = startProfileAt([-200, 23.86], sketch001) - |> angledLine([0, 73.47], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 50.61 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -103,7 +97,7 @@ circleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63) sketch002 = startSketchOn(YZ) sweepPath = startProfileAt([0, 0], sketch002) |> yLine(length = 231.81) - |> tangentialArc({ radius = 80, offset = -90 }, %) + |> tangentialArc(radius = 80, angle = -90) |> xLine(length = 384.93) parts = sweep([rectangleSketch, circleSketch], path = sweepPath) @@ -117,7 +111,7 @@ translate( ) ``` -![Rendered example of translate 2](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAFhlUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXfU/3ju+4zt+1jXXXPNg/g/70R/90c+57777buWqq6666qqrrvqPhB70oAdx1VVXXXXVVVddddVVV/3P9eEf/uHf9Tqv8zrvfe7cOc6dO8f/RZl56+nTp/n6r//69/mHf/iH3+aqq6666qqrrvqPgh70oAdx1VVXXXXVVVddddVVV/3P9U3f9E1Pv+aaax587tw5Pv7jP57/i06fPs0nf/Ink5m3ftZnfdbr3Hfffbdy1VVXXXXVVVf9RyC46qqrrrrqqquuuuqqq/5XOH36NO///u+PJCQhCUlIQhKSkIQkJCEJSUhCEpKQxP9E586d44u/+Iu55pprHvw5n/M5v8VVV1111VVXXfUfheCqq6666qqrrrrqqquu+h/tmmuuefBP/MRPAPDoRz+afy9JSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCT+vc6dO8e3f/u3c8011zz4cz/3c3+Lq6666qqrrrrqPwLl+PHjXHXVVVddddVVV1111VX/c73TO73TZ3/rt34rD3rQg3jQgx7E6dOn+au/+iv+p5GEJCQhCUlIQhKSkIQkJCEJSUhCEpKQxO233w7Aa77maz4Y4B/+4R9+h6uuuuqqq6666t+D4Kqrrrrqqquuuuqqq676H+uaa655MM/0Ld/yLQA8+tGP5syZM0hCEpKQhCQk8b/dz/zMz/D7v//7vNM7vdNnv+M7vuNncdVVV1111VVX/XsQXHXVVVddddVVV1111VX/4509e5azZ8/yu7/7u5w+fZq3equ34gWRhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEv9VfuZnfoYnPOEJvM7rvM57v9iLvdhrc9VVV1111VVX/VsRXHXVVVddddVVV1111VX/Y505c+bBPMBP/uRPAvCoRz2KRz3qUfxXk4QkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCTxwpw7d47v+I7v4Jprrnnwh3/4h3/XNddc82Cuuuqqq6666qp/C4Krrrrqqquuuuqqq6666n+Nc+fO8bu/+7ucPn2at3qrt+J/M0lIQhKSkIQkJCGJ8+fP8yVf8iVcc801D/6cz/mc3+Kqq6666qqrrvq3ILjqqquuuuqqq6666qqr/se65pprHnz27Fke6Cd/8icBePSjH82jH/1oJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhL/UzzxiU/kZ37mZ7jmmmse/OEf/uHfxVVXXXXVVVdd9a9FOX78OFddddVVV1111VVXXXXV/0wPechDXvrFX/zF3/qXf/mXAZDE0dER586d4+Ve7uU4ffo0f/AHf8B/NElIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEIS/15PfOITAXjjN37jlwb4h3/4h9/hqquuuuqqq656URFcddVVV1111VVXXXXVVf+jnT17luf2+Mc/nnPnzvGoRz2KRz3qUfxPJglJSEISkpCEJCQhCUlIQhKSkIQkJCGJP/zDP+QJT3gCr/M6r/PeL/ZiL/baXHXVVVddddVVLyqCq6666qqrrrrqqquuuup/rDNnzjyI5+PcuXP85E/+JADv+77viyQkIQlJSEISkpCEJCQhCUlIQhKS+N/g3LlzfNd3fRcR8eAP//AP/65rrrnmwVx11VVXXXXVVS8Kgquuuuqqq6666qqrrrrqf7Rz587x/Dz+8Y/n8Y9/PKdPn+ZVX/VV+beShCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJPGf6dy5c3zZl30Z11xzzYM/53M+57e46qqrrrrqqqteFARXXXXVVVddddVVV1111f9Y11xzzYN5Ac6dO8fv//7vA/CWb/mW/E8gCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJvCDnzp3jO7/zOwH48A//8O/iqquuuuqqq676l1COHz/OVVddddVVV131v88111zz4M3NzeObm5vHNzc3jx8eHu5y1VVX/Z/ziq/4im8dES/9F3/xFwBIAkASALfddhuPfvSjedCDHsT58+e54447kIQkJCGJ/40kIQlJSEISkpDE7bffzubm5vE3fuM3fmmAf/iHf/gdrrrqqquuuuqqF4TKVVddddVVV131P94111zz4Nd+7dd+r2uuuebBL/ZiL/ba11xzzYN5Lv/wD//w22fOnHkwwD/8wz/89j/8wz/8zj/8wz/89n333XcrV1111f9qZ8+e5YX5qZ/6KR7zmMfwlm/5lvzhH/4hz00S/5Fs89/tD/7gD3jUox7F67zO67z3P/zDP/zOP/zDP/w2V1111VVXXXXV84Me9KAHcdVVV1111VVX/c9zzTXXPPjFXuzFXvvDP/zDvwvg3LlznDt3jsc//vFI4olPfCIPdPr0aSTxqEc9itOnT/OoRz0KgPvuu+/Wf/iHf/jt3/qt3/qef/iHf/htrrrqqv9VPvdzP/e3nvCEJ7z2T/7kTwIgCQBJAEgC4FM/9VN59KMfzR/+4R/yXd/1XfxvYJt/j1OnTvEJn/AJZOatn/VZn/U69913361cddVVV1111VXPDT3oQQ/iqquuuuqqq676n+Oaa6558Du+4zt+1uu8zuu89+Me97hbn/CEJzz493//9zl//jwAkpAEgCQAJPFAkjh16hSPetSjeNSjHsWrvdqrAXDffffd+vVf//Xv8w//8A+/zVVX/Qt+4id+wjzA273d24mr/st97ud+7m/9/u///mv/7u/+LgCSAJAEgCQAzpw5w1d8xVdw/vx5vvzLv5xz587xf51tTp06xZd8yZdw33333fohH/IhD+Gqq6666qqrrnpulOPHj3PVVVddddVVV/3P8I7v+I6f9Umf9Ek/vVwuX/pbvuVb+Kmf+qnjT3ziE1kulwBIQhIAkgCQxP0kIQmA5XLJ7bffzl//9V/zB3/wB9x+++08+tGPPv5mb/Zm7/06r/M6733rrbf+zdmzZ2/lqquej5/4iZ8wz+X48ePLv/iLv/gDrvov9Y7v+I6f/YQnPOH4M57xDAAkASAJAEkALJdLHvOYx3DLLbewsbHB3/zN3yAJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlI4n8iSSyXS86fP8+rv/qrH7/mmmse/Kd/+qc/w1VXXXXVVVdd9UCU48ePc9VVV1111VVX/ff7pm/6pqc/9KEPfeuv/Mqv5Kd+6qc4f/48kpCEJCQhCQBJAEgCQBKSeH4ksVwuueOOO/irv/orbr/9dh796Ecff4VXeIXX3tzcPP4P//APv8NVVz2Xd3qnd/psnst6ve5+67d+63u46r/Um7/5m3/0E57whOPPeMYzAJAEgCQAJAEgiSc84Qm80Ru9ERsbG9x+++2cP3+e/yiSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpDEf4bbb78dgDd+4zd+aYB/+Id/+B2uuuqqq6666qr7EVx11VVXXXXVVf+tXud1Xue9f+InfsK/8zu/8+CP+IiP4PGPfzySkIQkJCEJSUhCEpKQBIAkHkgSkpCEJB7owoUL/NEf/RFf9mVfxh//8R8/+J3e6Z0++5u+6Zuefs011zyYq6666n+ss2fP8qI4d+4cv//7v8+pU6d4i7d4C/4nkoQkJCEJSUhCEpKQhCQkIQlJSEISknhB/vAP/5AnPvGJvNM7vdNnv87rvM57c9VVV1111VVX3Y9y/Phxrrrqqquuuuqq/x6v8zqv897v+I7v+F1f9mVfxu/93u8REUQEkpCEJCQhCUkASAJAEpK4nyQk8aJYLpc88YlP5A/+4A949Vd/9eMv9mIv9tJnzpx58D/8wz/8DlddBbzJm7zJu85ms1M8wId8yIc8hKv+y73v+77vV//u7/4u586dA0ASAJIAkASAJABuv/123vAN35DTp0/zpCc9iQsXLiAJSUhCEpKQhCQkIQlJSEISkpCEJP6nkYQkJCEJSUhiuVzypCc9iZd5mZfhsY997Evfeuutf3P27Nlbueqqq6666qqrCK666qqrrrrqqv8Wr/M6r/Pe7/AO7/Bd3/AN38DjH/94IgJJSEISkpCEJCQBIAkASdxPEpL415LE+fPn+bIv+zJqra/9Oq/zOu/9ju/4jp/FVVcB7/M+7/Ooj/7oj34Iz/R2b/d24qr/NufOneNFde7cOX76p38agLd4i7fg30sSkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpL4r3D+/Hm+/Mu/nGuuuebBH/7hH/5d11xzzYO56qqrrrrqqqsIrrrqqquuuuqq/3Iv9mIv9trv8A7v8F1f//Vfz+Mf/3giAklEBJKQhCQkIQkASQBIAkASknggSUhCEpKQhCQkIYnnJonz58/znd/5nfzxH//xg1/ndV7nvd/xHd/xs7jqKuD222+/lav+W11zzTUP5gEk8aL4/d//fQAe+chH8shHPpL/CSQhCUlIQhKSkIQkJCEJSUhCEpKQhCReVOfPn+e7v/u7ueaaax78ju/4jp/FVVddddVVV11FcNVVV1111VVX/Ze65pprHvy5n/u5v/V1X/d1POEJTyAiiAgkIQlJSEISkgCQBIAkACTxQJKQxL9EEs/P+fPn+YM/+AP+6I/+6MGv8zqv894v9mIv9tpcddVV/2OcPXuWf41z587xHd/xHQC893u/N5KQhCQkIQlJSEISkpCEJCQhCUn8TyIJSUhCEpKQhCQkIQlJSOKP/uiP+Lmf+zle53Ve570//MM//Lu46qqrrrrqqv/fCK666qqrrrrqqv9SH/7hH/5dX/3VX80TnvAESilEBJKICCQhCUlIAkASkpAEgCTuJwlJ/GtI4oEkAXD+/Hn+8A//kIsXLz74wz/8w7/rmmuueTBX/b9333333QpwzTXXPJir/sudOXPmwfwbPeEJT+DcuXOcOnWKV3mVV+HfQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkvjv8PM///P83M/9HK/zOq/z3u/4ju/4WVx11VVXXXXV/18EV1111VVXXXXVf5nXeZ3Xee+77777wb/3e79HKYWIICKQhCQkIQlJAEhCEgCSkASAJCTxQJKQhCQkIQlJPD+SeH7OnTvHd37ndxIRD/6cz/mc3+Kqq676X+vcuXP8zM/8DABv/uZvzn8nSUhCEpKQhCQkIQlJSEISkpCEJCTx7/FHf/RHPOlJT+J1Xud13vvFXuzFXpurrrrqqquu+v+J4Kqrrrrqqquu+i/z4R/+4d/1Yz/2Yw8upRARSEISEYEkJCEJAElIAkASAJKQxP0kIQlJvCCSkMSL6ty5c3zZl30Z11xzzYPf8R3f8bO46v+1s2fP3gpw5syZB3PVf7lrrrnmwWfPnuXf6glPeAJPeMITOHXqFK/6qq+KJCQhCUlIQhKSkIQkJCEJSfxPIAlJSEISkpCEJCQhCUlIQhKSkIQkzp8/z3d/93dTSnnwh3/4h3/XNddc82Cuuuqqq6666v8fgquuuuqqq6666r/E67zO67z3p37qp3LhwgVKKUQEEYEkJCEJSQBIQhIAkgCQxP0kIYl/DUk8kCSemyQAzp07x8/8zM/wOq/zOu/9Yi/2Yq/NVVdd9b/SuXPn+Jmf+RkA3uzN3ox/LUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJ/HeSxIULF/jKr/xKrrnmmgd/zud8zm9x1VVXXXXVVf//EFx11VVXXXXVVf8lHv3oR3/Wk570JEopSEISkpCEJCQBIAlJAEgCQBIAkpDEc5OEJCQhCUk8P5J4Uf3hH/4hFy9efPA7vdM7fRZXXXXVf5uzZ8/y7/HEJz6RJzzhCZw6dYr3fM/35L+aJCQhCUlIQhKSkIQkJCEJSUhCEpL4j3L+/Hm+53u+h2uuuebBH/7hH/5dXHXVVVddddX/LwRXXXXVVVddddV/usc85jHv/Y3f+I0PLqUQEUQEEYEkJCEJAElIQhKSkIQkACTxQJKQhCSeH0lI4l9LEpI4f/48P/MzP8OLvdiLvfaLvdiLvTZX/b9033333QpwzTXXPJir/sudOXPmQfwH+Jmf+RkAHvnIR3L69GkkIQlJSEISkpCEJCQhCUn8d5KEJCQhCUlIQhKSkIQkJCEJSUhCEs/tj/7oj/j5n/95Xud1Xue93/Ed3/GzuOqqq6666qr/Pwiuuuqqq6666qr/dH//93//XrVWIoKIICKQhCQkASAJSUgCQBIAkpDE/SQhiReVJB5IEs9NEs/Pk570JJ74xCfyTu/0Tp/FVVdd9d/i3Llz/Hs98YlP5IlPfCKnTp3izd7szfjXkIQkJCEJSUhCEpKQhCQkIQlJSEISkvjvIglJSEISkvjjP/5jnvSkJ/E6r/M67/1iL/Zir81VV1111VVX/f9AcNVVV1111VVX/aeapum9a62vHRFEBJKQhCQkIQlJSEISAJIAkMT9JCGJ5yYJSUhCEs+PJJ4fSfxLfuZnfgaAa6655sFc9f/OfffddyvAmTNnHsRV/+WuueaaB/N8SOJf6zu/8zsBeMQjHsGpU6f4ryIJSUhCEpKQhCQkIQlJSEISkpCEJP6jnT9/nu/93u+llPLgD//wD/+ua6655sFcddVVV1111f99BFddddVVV1111X+azHxw13XfVWullEJEEBFIQhKSkIQkJAEgCQBJAEhCEveThCQkIYnnJglJ/Ec5f/48Z86cefBrv/ZrvxdXXXXV/1rnzp3jD/7gDzh16hRv9mZvhiQkIQlJSEISkpCEJCQhif8ukpCEJCQhCUlIQhKSkIQkJCEJSbww58+f56u+6qu45pprHvw5n/M5v8VVV1111VVX/d9HcNVVV1111VVX/Wf6roggIpCEJCQhCUlIQhKSAJCEJCQBIIn7SUISLypJPJAk7ieJ5yYJSUjigc6fP8+Tn/zkB7/4i7/4a3PV/ztnz559BsA111zzYK76b3H27Fn+o/zsz/4sAI94xCN4xCMewYtKEpKQhCQkIQlJSEISkpCEJCQhCUn8d5CEJCQhCUlIQhKSuHDhAt/7vd/LNddc8+B3fMd3/Cyuuuqqq6666v82gquuuuqqq6666j/FOI6fVWt97VIKEUFEEBFIQhKSkIQkACQhCQBJSAJAEpJ4fiQhiRdEEv8WknigP/iDP+DMmTMP5qqrrvovdc011zyY/0Dnz5/nD/7gDzh16hRv9mZvxn8FSUhCEpKQhCQkIQlJSEISkpCEJCTxn+mP//iP+YVf+AXe6Z3e6bPf8R3f8bO46qqrrrrqqv+7CK666qqrrrrqqv9w0zS9dt/3n11KISKICCQhCUlIQhKSkIQkJAEgiftJ4oEkIQlJSOJ+kpCEJJ6bJO4niX+L8+fPA/BiL/Zir81V/6/cd999twJcc801D+aq/xZnz57lP9LP/uzPAvCIRzyCRz7ykUhCEpKQhCQkIQlJSEIS/x0kIQlJSEISkpCEJCQhCUlIQhKSeFH98R//MU960pN4p3d6p89+ndd5nffmqquuuuqqq/5vIrjqqquuuuqqq/7DRcRnlVIopRARSCIikIQkJCEJSQBIAkASAJKQBIAkJCGJF4Uk/jUkIYnnJon7nTt3josXLz74xV7sxV6Lq6666r/Mfffddyv/wc6fP893fdd3AfCmb/qmvKgkIQlJSEISkpCEJCQhCUlIQhKSkIQk/itJQhKSkIQkJCEJSUhCEhcuXOD7v//7OX/+PO/4ju/4WS/2Yi/22lx11VVXXXXV/z0EV1111VVXXXXVf6hpmj6r67rXLqUQEUQEkpCEJCQhCUkASEISkgCQxP0k8W8hiX8tSUjihbnmmmsezFVXXfVf6jVf8zV5QSTxb/HEJz6R8+fP84hHPIJHPOIR/FeQhCQkIQlJSEISkpCEJCQhCUlI4j/b+fPn+Zqv+RquueaaB3/4h3/4d3HVVVddddVV//cQXHXVVVddddVV/2Faa6/d9/1nl1KICCQhiYhAEpKQhCQAJCEJAElIAkASkrifJCQhCUlIQhKSkIQknpsk7ieJf68nPOEJXHPNNQ/mqv9Xzp49eyvAmTNnHsxV/+V+9Ed/9HMe+9jH8pjHPIZ/D0k80Pnz5/nZn/1ZAN7jPd4DSUhCEpKQhCQkIQlJSEIS/9UkIQlJSEISkpCEJCQhCUlIQhL/WufPn+f7vu/7uOaaax78uZ/7ub/FVVddddVVV/3fQnDVVVddddVVV/2H6bruu0opRAQRQUQgCUlIQhKSAJCEJAAkASAJSdxPEpJ4UUjiP4Iknp9z585x1VVX/de67777bv2Hf/iH337N13xN/qM98YlP5IlPfCInT57klV7plXhRSUISkpCEJCQhCUlIQhKSkIQkJCGJ/yqSkIQkJCEJSUhCEpKQhCQkIYk//uM/5hd+4Rd4sRd7sdd+x3d8x8/iqquuuuqqq/7vILjqqquuuuqqq/5DtNZ+KyIeXEohIpCEJCICSUhCEgCSkASAJAAkcT9JSOJfSxIPJIkXRBKSkMSL6syZMw/mqquu+i/1Iz/yI5/zmMc8hv9o58+f54/+6I8AeNM3fVP+K0hCEpKQhCQkIQlJSEISkpCEJCTxX0ESv/RLv8Qv/uIv8k7v9E6f/Y7v+I6fxVVXXXXVVVf930Bw1VVXXXXVVVf9u7XWXrvrutcupRARRAQRgSQkIQlJAEhCEgCSkIQkACQhiQeShCQkIQlJSEISknhukvjXksSL4uzZs7dy1f8r9913360A11xzzYO56r/FP/zDP/z2fffd99tv+7ZvywsiiedHEi/MH/7hH/LEJz6RkydP8qZv+qZIQhKSkIQkJCEJSUhCEpL4ryQJSUhCEpKQhCQkIQlJSEISkvi3+uM//mOe/OQn8zqv8zrv/WIv9mKvzVVXXXXVVVf970dw1VVXXXXVVVf9u/V9/1u1ViKCiCAikIQkJCEJAElIQhKSkMT9JHE/SUhCEv8SSUji30sS95PE83PffffdylVXXfVf7rd+67e+5zVf8zX5z/BzP/dzALzSK70S/xqSkIQkJCEJSUhCEpKQhCQkIQlJSOK/giQkIQlJSEISkpCEJCQhCUnc78KFC3zf930fpZQHf/iHf/h3XXPNNQ/mqquuuuqqq/53I7jqqquuuuqqq/5dWmu/JYmIICKQhCQkIQlJAEhCEpIAkASAJCQBIAlJ/FtI4n6SeEEkIQlJ/GucOnWKq/5/uu+++24FuOaaax7MVf8t/uEf/uG3z5w5w2u8xmvwwkgCQBIvqic96Uk86UlP4uTJk7zbu70b/xUkIQlJSEISkpCEJCQhCUlIQhL/2SQhCUlcvHiRr/3ar+Waa6558Od8zuf8FlddddVVV131vxvBVVddddVVV131bzZN03v3ff/atVZKKUQEEYEkJCEJAElIQhIAkgCQBIAkJPFAkpCEJCQhCUlIQhIvKkkASOK5SeKBJPHcbGOb06dPc999993KVVdd9V/uvvvuu/VHfuRHPvtt3/Zt+c/w3d/93QA84hGP4NSpU0hCEpKQhCQkIQlJSEISkpDEfwVJSEISkpCEJCQhCUlIQhKSkMS/x4ULF/j+7/9+rrnmmge/4zu+42dx1VVXXXXVVf97EVx11VVXXXXVVf8mmfngvu+/q9ZKRCAJSUhCEpKQhCQkIQkASUhCEgCSuJ8kJCGJf4kkJPFAkvjXksSL4tGPfjRnz559Blf9v3P27NlbAc6cOfNgrvpv89u//dvfc+bMGR7zmMfwH+38+fM86UlP4uTJk7zJm7wJ/1qSkIQkJCEJSUhCEpKQhCQkIQlJ/GeThCQkIQlJSEISkpCEJCQhief2J3/yJ/ziL/4i7/RO7/TZ7/iO7/hZXHXVVVddddX/TgRXXXXVVVddddW/1XeVUogIIoKIICKQhCQkIQlJSEISkpAEgCQkASAJSfxbSOL5kcRzk8S/hW1Onz7NP/zDP/w2V1111X+L++6779bf+q3f+u63fdu35T/Dd3/3dwPw8Ic/nIc//OH8V5CEJCQhCUlIQhKSkIQkJCEJSfxnkoQkJCEJSfzpn/4pT37yk3md13md936xF3ux1+aqq6666qqr/vchuOqqq6666qqr/tWmaXrvvu9fu5RCRBARSEISkpCEJCQhCUkASAJAEveTxANJQhKSkIQkJCEJSUji30MSknggSbwgtnm1V3s1AO67775bueqqq/7b/OiP/ujnPOYxj+Exj3kM/9HOnz/PH/3RH3Hy5Ene5E3eBElIQhKSkIQkJCEJSUhCEpKQhCT+s0lCEpKQhCQkIQlJSEISkpDEv9eFCxf4gR/4AWqtD/7wD//w77rmmmsezFVXXXXVVVf970Jw1VVXXXXVVVf9q2Tmg/u+/65SCqUUIgJJRASSkIQkJCEJSQBIAkASAJKQxP0kIYkXhSQeSBL3k8SLQhIviG0AbAPwqEc9it/6rd/6bq76f+m+++67FeCaa655MFf9t7rvvvtu/Yd/+Ifffo3XeA3+M/z8z/88AA9/+MN5+MMfzr+FJCQhCUlIQhKSkIQkJCEJSUjiP5MkJCEJSUhCEpKQhCQkIQlJPD8XLlzga7/2a7nmmmse/Dmf8zm/xVVXXXXVVVf970Jw1VVXXXXVVVf9q0j6rlorpRQigohAEpKQhCQkIQlJAEhCEpIAkMT9JCGJfy1J/GeyDYBtHv3oR/OjP/qjn8NVV1313+5HfuRHPucxj3kM/xnOnz/Pz//8zwPwxm/8xkhCEv/ZJCEJSUhCEpKQhCQkIQlJSEIS/1kkIQlJSEISkrh48SI/8AM/wDXXXPPgD//wD/8urrrqqquuuup/D4KrrrrqqquuuupFNk3TZ/V9/9qlFCICSUgiIpCEJCQhCUkASEISAJKQBIAkJHE/SUhCEpKQhCQkIQlJPDdJ3E8SL4gkJCGJB5LEC2ObV33VV+W+++777fvuu+9Wrvp/6b777rsV4MyZMw/iqv92//AP//Db995772+/zdu8Df8Z/viP/xiAhz/84Tz84Q8HQBKSkIQkJCEJSUhCEpKQhCQkIYn/TJKQhCQkIQlJSEISkpCEJCTxH+FP//RP+aVf+iVe53Ve573f8R3f8bO46qqrrrrqqv8dCK666qqrrrrqqhdJa+21Z7PZZ5dSiAgigohAEpKQhCQkIQlJSEISAJIAkIQk7icJSbwoJPHvJYkXlW1e/dVfnR/5kR/5HK666qr/MX7rt37re17zNV+T/wznz5/ne7/3ewF4l3d5F/49JCEJSUhCEpKQhCQkIQlJSEIS/1kkIQlJSEISkpCEJCQhCUm8MH/6p3/KU57yFF7ndV7nvV/ndV7nvbnqqquuuuqq//kIrrrqqquuuuqqF0kp5bNqrZRSiAgiAklEBJKQhCQkIQkASQBIAkAS95OEJP61JPFAkvjXksS/xDaPetSjyMzf/od/+Iff5qr/t86ePfsMgGuuuebBXPU/wj/8wz/89unTp3n0ox/Nf4YnPelJnD9/npMnT/KKr/iKSEISkpDEfyZJSEISkpCEJCQhCUlIQhKS+M8gCUlIQhKSkIQkLl68yA/+4A9Sa33wO77jO37WNddc82Cuuuqqq6666n82gquuuuqqq6666l/UWvusvu9fu5RCRBARSEISkpCEJCQhCQBJSEISkpAEgCQkcT9JSEISkpCEJCQhCUk8N0m8KCQhCUm8KGxjG9vY5lVe5VVu/ZEf+ZHP4aqrrvof5b777rv1R37kRz77Az/wA/nPcP78eX7hF34BgDd6ozfiuUlCEpKQhCQkIQlJSEISkpCEJP6zSEISkpCEJCQhCUlIQhKSkMR/hAsXLvD1X//1XHPNNQ/+nM/5nN/iqquuuuqqq/5nI7jqqquuuuqqq16o1tprz2azzy6lEBFEBBGBJCICSUhCEpIAkIQkACQBIAlJ3E8SknhRSEISDySJ5yaJF0QS/xqnTp3innvu+e5/+Id/+G2u+n/tvvvuuxXgmmuueTBX/Y/x27/9299z+vRpHv3oR/Of4clPfjJPetKTOHnyJK/wCq/Av5ckJCEJSUhCEpKQhCQkIQlJSOI/gyQkIQlJSEISkpCEJCQhiRfmwoUL/OAP/iDXXHPNgz/3cz/3t7jqqquuuuqq/7kIrrrqqquuuuqqF6rW+l21VkopRASSkIQkJCEJSUgCQBKSAJAEgCTuJwlJPD+SkMQLIonnRxIvCkncTxIviG0e9rCH/faP/uiPfg5XXXXV/0j33Xffrf/wD//w22/zNm/Df4bz58/zC7/wCwC80Ru9EZKQhCQkIQlJSOI/iyQkIQlJSEISkpCEJCQhCUn8R5OEJCQhCUlIQhKS+LM/+zN++Zd/mRd7sRd77Xd8x3f8LK666qqrrrrqfyaCq6666qqrrrrqBWqt/VbXdQ8upRARRAQRgSQiAklIQhKSkIQkJCEJSUgCQBKSuJ8kJCEJSUjifpKQhCT+LSQhiX8L29jm137t116Hq6666n+0r//6r3+fM2fO8OhHP5r/DE9+8pN58pOfzMmTJ3nnd35nXhBJSEISkpCEJCQhCUlIQhKSkMR/BklIQhKSkIQkJCEJSUhCEv9RfuVXfoU//dM/5Z3e6Z0++x3f8R0/i6uuuuqqq676n4fgqquuuuqqq656vlprrz2fz1+71kpEIAlJSEISkpCEJCQBIAlJAEgCQBKSuJ8kJPGiksQDSeJ+knhhJCGJF5VtAJbL5Wdz1VXPdPbs2VsBzpw582Cu+h/lvvvuu/Xee+/97dd4jdfgP8sv/MIvAPCwhz2MkydP8h9FEpKQhCQkIQlJSEISkpCEJP6jSUISkpCEJCQhCUlIQhIvil/5lV/hKU95Cq/zOq/z3i/2Yi/22lx11VVXXXXV/ywEV1111VVXXXXV89X3/W/VWokIIoKIICKQREQgCUlIAkASkgCQBIAk7icJSTw3SUhCEpJ4fiTx7yGJ+0niudnGNgCZyTiO38NVV131v8KP/MiPfM6jH/1o/rM8+clP5slPfjInT57kDd/wDZGEJCQhCUlIQhKSkMR/BklIQhKSkIQkJCEJSUhCEv+RJCEJSUhCEpKQhCQkcfHiRX74h3+Ya6655sEf/uEf/l3XXHPNg7nqqquuuuqq/zkIrrrqqquuuuqq52H7t2qtRAQRQUQQEUhCEpKQhCQAJCEJAEkASAJAEpK4nyQkIQlJPDdJSOK5SeJ+knhBJPFvZZv1ev3dtm/lqquu+l/h7Nmzt957772//dZv/db8Z/m+7/s+AB72sIfxsIc9jH+JJCQhCUlIQhKSkIQkJCEJSfxHk4QkJCEJSUhCEpKQhCQk8R/lwoULfP7nfz7XXHPNgz/ncz7nt7jqqquuuuqq/zkIrrrqqquuuuqq5zBN03v3ff/atVZKKUQEkpCEJCICSUgCQBKSkIQkJCEJAEncTxKSeFFJQhL/FpKQxANJ4l9im/V6/TlcddUD3HfffbcCXHPNNQ/mqv9x7rvvvlt/67d+63te4zVeg/8s58+f54//+I85efIkL//yL89/NElIQhKSkIQkJCEJSUhCEpL4jyQJSUhCEpKQhCQkIQlJvCguXLjAD/3QD3HNNdc8+MM//MO/i6uuuuqqq676n4Hgqquuuuqqq656lsx88Hw+/65aKxFBRBARRASSkIQkJAEgCUlIAkASAJKQBIAkJPHcJCEJSUhCEs+PJO4niX8NSbyobLNer7/b9q1cddVV/6v8wz/8w2+fPn2aRz/60fxnkMQv/uIvAvDwhz+chz/84UhCEpKQhCQkIQlJSOI/iyQkIQlJSEISkpCEJCQhif8okpCEJCQhCUlIQhKSkMSf/dmf8Su/8iu8zuu8znu/4zu+42dx1VVXXXXVVf/9CK666qqrrrrqqmeJiO+qtVJKISKQhCQkIQlJSAJAEpKQBIAkACQBIAlJ3E8SkpCEJJ4fSUjiRSGJ/yi2sc16vf4errrq+bjvvvtuBbjmmmsezFX/49x33323/siP/Mhnv/VbvzX/WS5cuMCf/MmfcOLECd7gDd6AF4UkJCEJSUhCEpKQhCQkIQlJ/GeQhCQkIQlJSEISkpCEJP6jSOLP//zPeepTn8rrvM7rvPeLvdiLvTZXXXXVVVdd9d+L4Kqrrrrqqquuumwcx8/q+/61SymUUogIIoKIQBKSkASAJCQhCQBJSEISAJK4nyQk8a8hiQeSxP0k8UCSAJCEJCTxQJJ4fmxjG9sAjOP425n521x11VX/K/32b//29zz60Y/m0Y9+NP9ZfvEXfxGAhz3sYTzsYQ/jP5okJCEJSUhCEpKQhCQkIYn/aJKQhCQkIQlJSEISkpDEi+LChQv88A//MLXWB3/4h3/4d11zzTUP5qqrrrrqqqv++xBcddVVV1111VVk5oMXi8Vn11oppRARRASSkIQkJCEJSUhCEpKQhCQAJCEJAElI4oEkIQlJSEISkpDEc5PEv5Uk/jVss16vv4errnoBzp49eyvAmTNnHsxV/yPdd999t/7DP/zDb7/1W781/xaS+JdcuHCB7//+7wfgnd7pnZCEJCQhCUlIQhKSkIQkJCGJ/0iSkIQkJCEJSUhCEpKQhCT+I0lCEpKQhCQkIQlJSEISFy5c4Ju+6Zu45pprHvw5n/M5v8VVV1111VVX/fchuOqqq6666qqrKKV8V9d1lFKICCQhiYhAEpKQhCQkIQlJAEgCQBIAkpDE/SQhCUm8MJKQxANJ4n6S+NeQxIvCNrYZx/G7ueqqq/5X+5Ef+ZHPOX36NI9+9KP5z/LkJz+ZCxcucOLECR760IfyryEJSUhCEpKQhCQkIQlJSEIS/1EkIQlJSEISkpCEJCQhif9Ikrh48SI//MM/zDXXXPPgD//wD/8urrrqqquuuuq/B8FVV1111VVX/T/XWvusvu9fu5RCRBARRAQRgSQkIQlJSEISkgCQhCQkASCJ+0lCEv9akvjXkoQkXhBJPD+2sc3BwcH7cNVVV/2v9w//8A+/fe+99/72q73aq/Gf5cKFC/zSL/0SAO/0Tu+EJCQhCUn8R5KEJCQhCUlIQhKSkIQkJPEfQRKSkIQkJCEJSUhCEpL41/jzP/9zfvVXf5XXeZ3Xee93fMd3/Cyuuuqqq6666r8ewVVXXXXVVVf9P9Zae+3FYvHZtVZKKUQEkpCEJCQhCUlIQhKSkIQkJAEgCUkASEISDyQJSUhCEpKQhCSeH0ncTxIvKkn8a9lmHMfv5qqrXoj77rvvVoBrrrnmwVz1P9qP/MiPfM6jH/1o/jM9+clP5ilPeQonTpzg5V7u5XggSUhCEpKQhCQkIQlJSEIS/5EkIQlJSEISkpCEJCQhif8IkpCEJCQhCUlIQhKSeKA/+7M/48/+7M94ndd5nfd+sRd7sdfmqquuuuqqq/5rEVx11VVXXXXV/2Nd131WrZVSChFBRBARRASSkIQkJCEJSUgCQBIAkgCQhCTuJwlJSOKFkYQk/qNI4n6SeG62sY1tbLNarb6bq6666v+Ms2fP3nrvvff+9qu/+qvzn+XChQv8yZ/8CQBv8AZvwL+VJCQhCUlIQhKSkIQkJCGJ/yiSkIQkJCEJSUhCEpKQxL+XJCQhid3dXX7t136Nruse/OEf/uHfdc011zyYq6666qqrrvqvQ3DVVVddddVV/0/Z/q6+71+7lEJEEBFEBJKQhCQkIQlJSEISAJIAkASAJO4nCUn8a0nigSTx3CTxQJKQxL+VbVar1edw1VX/gvvuu+9WgDNnzjyIq/5Hu++++279rd/6re95q7d6K/4z/emf/ilPecpTOHHiBG/wBm+AJCQhCUlIQhKS+I8gCUlIQhKSkIQkJCEJSUjiP4IkJCEJSUhCEpKQhCT+NS5evMg3fdM3cc011zz4cz7nc36Lq6666qqrrvqvQ3DVVVddddVV/w+11l57Pp+/d62VUgoRgSQkERFIQhKSkIQkJAEgCUlIQhKSAJCEJB5IEpKQhCQkIQlJSOK5SeL5kcQLI4kHksS/xDar1eq7bd/KVVdd9X/KP/zDP/z26dOnedSjHsV/pl/6pV8C4OVe7uV4YSQhCUlIQhKSkIQkJCEJSfxHkIQkJCEJSUhCEpKQhCT+vSQhCUlIQhKSkIQkJPFAFy9e5Ed+5Ee45pprHvzhH/7h38VVV1111VVX/dcguOqqq6666qr/h/q+/65aK6UUIoKIICKQhCQkIQlJSEISkpCEJAAkcT9J3E8SkpDEv0QSknggSdxPEi8qSbyobGOb9Xr9PVx11VX/59x33323/tZv/dZ3v9VbvRX/mZ7ylKfwlKc8hRMnTvAO7/AO/EeQhCQkIQlJSEISkpCEJP4jSEISkpCEJCQhCUlI4t9LEpKQhCT+4i/+gl/7tV/jdV7ndd77nd7pnT6bq6666qqrrvrPR3DVVVddddVV/8/Y/q2+7x9cSiEikEREIImIQBKSkIQkJCEJAEkASAJAEpIAkIQk/i0k8a8hCUm8qGxzP9sArFar726t/TZXXfUiOHv27DMArrnmmgdz1f8KP/qjP/o5j370o3nUox7Ff6Yf/MEfBOChD30oJ0+eRBKSkIQkJCEJSUhCEv8RJCEJSUhCEpKQhCQkIYl/L0lIQhKSkIQkJCEJSfxr/dqv/Rp//ud/zju+4zt+1ju+4zt+FlddddVVV131n4vgqquuuuqqq/4faa299nw+f+1aKxFBRBARSCIikIQkJCEJSUgCQBKSkIQkJAEgCUk8kCQkIQlJSEISkpCEJJ6bJO4niReFJB5IEi+IbWwDYJvVavU9XHXVi+i+++67FeCaa655MFf9r3Dffffd+g//8A+//VZv9Vb8Z7pw4QJPecpTOHHiBK/3eq/Hi0ISkpCEJCQhCUlIQhKSkMS/lyQkIQlJSEISkpCEJCTx7yEJSUhCEpKQhCQkIYnn9mu/9ms89alP5XVe53Xe+8Ve7MVem6uuuuqqq676z0Nw1VVXXXXVVf9PZOaD5/P5b3VdRymFiCAiiAgkIQlJSEISkpAEgCQkASCJ+0nifpKQhCReFJL4jyCJfw3bDMPw26213+aqq676P+1HfuRHPuf06dM86lGP4j/TD/7gDwLw0Ic+lIc+9KFIQhL/ESQhCUlIQhKSkIQkJCGJfy9JSEISkpCEJCQhCUn8e0hCEpKQxO7uLj/2Yz/GNddc8+AP//AP/65rrrnmwVx11VVXXXXVfw6Cq6666qqrrvp/opTyXV3XUUohIogIJCGJiEASkpCEJCQhCUlIAkASAJKQBIAkJPHcJCEJSUji+ZHEA0niXyKJ5yaJF5VtVqvV93DVVVf9n/cP//APv33vvff+9qu92qvxn+nChQv86Z/+KSdOnOD1Xu/1uJ8kJCEJSUhCEpKQhCQkIYl/L0lIQhKSkIQkJCEJSUji30MSkpCEJCQhCUlIQhL/GhcvXuRbvuVbuOaaax78OZ/zOb/FVVddddVVV/3nILjqqquuuuqq/wdaa+89m81eu9ZKRBARRAQRgSQkIQlJSEISkgCQhCQkASAJAElI4n6SkIQkJPHcJCEJSTyQJF4YSTw3SUjiX8s2AMMwfDdXXfWvcPbs2VsBzpw582Cu+l/lR37kRz7nUY96FP/ZfuVXfgWAhz70oTzkIQ/hX0sSkpCEJCQhCUlIQhKS+PeShCQkIQlJSEISkpDEv4ckJCEJSUhCEpKQhCQe6GlPexq/9mu/xjXXXPPgD//wD/8urrrqqquuuuo/HsFVV1111VVX/R+XmQ/e2Nj4rlorEUFEEBFEBJKICCQhCUlIQhIAkpAEgCQkIQlJ3E8SkvjXkMQDSeK5SeLfQhLPj21ss7e39z5cddVV/2+cPXv21nvvvfe3X+3VXo3/TBcuXOBXfuVXAHj91399JCEJSUhCEpL495KEJCQhCUlIQhKSkIQk/j0kIQlJSEISkpCEJCTx7yEJSUhCEr/xG7/Br//6r/M6r/M67/1O7/ROn81VV1111VVX/cciuOqqq6666qr/40op31VrpdZKKYWIQBKSkIQkJCEJSUhCEpKQBIAkACRxP0lI4oEkIQlJSEISknh+JPH8SOL5kYQkHkgS95PEc7ONbWwDYJthGL6bq6666v+N++6779bf+q3f+p63fMu35D/bn/3ZnwHwkIc8hIc85CE8P5KQhCQkIQlJSEISkpDEv5ckJCEJSUhCEpKQhCT+PSQhCUlIQhKSkIQkJPGv8Rd/8Rc87WlP43Ve53Xe+8Ve7MVem6uuuuqqq676j0Nw1VVXXXXVVf+HtdY+az6fv3YphYggIogIIgJJRASSkIQkJCEJAEkASAJAEgCSkMT9JCEJSbwgkpCEJB5IEveTxItCEv8Wtlkul9/NVVf9G9x33323AlxzzTUP5qr/df7hH/7ht0+fPs2jHvUo/jNduHCBH/qhHwLg7d7u7fj3kIQkJCEJSUhCEpKQhCT+PSQhCUlIQhKSkIQkJPHvIQlJSEISkpCEJCTxQBcvXuTHfuzHqLU+6MM//MO/65prrnkwV1111VVXXfUfg+Cqq6666qqr/o+apum1NzY2PrvWSimFiEASkpCEJCQhCUlIQhIAkpCEJCQhCUlI4n6SkMS/liT+vSRxP0n8S2xjm+Vy+TlcddVV/+/cd999t/7Wb/3Wd7/lW74l/9me+tSncuHCBU6cOMHLvuzLIglJSEISkpCEJCQhiX8PSUhCEpKQhCQkIQlJSOLfShKSkIQkJCEJSUhCEv9WkpCEJCSxu7vLt33bt3HNNdc8+HM+53N+i6uuuuqqq676j0Fw1VVXXXXVVf9H9X3/WV3XUUqhlEJEEBFEBJKICCQhCUlIAkASkgCQBIAk7icJSdxPEpKQhCQkIQlJSEISz00S95PEv0QS/1a2ATg6OvruzLyVq676N7rvvvtuBbjmmmsezFX/6/zoj/7o5zzqUY/iUY96FP+ZLly4wK/+6q8C8Lqv+7q8KCQhCUlIQhKSkIQkJCGJfw9JSEISkpCEJCQhiX8PSUhCEpKQhCQkIYl/jYsXL/LjP/7jXHPNNQ/+8A//8O/iqquuuuqqq/79CK666qqrrrrq/6DM/Kz5fP7apRRKKUQEEUFEIImIQBKSkIQkACQhCQBJSEISAJKQxP0kIYkXhST+vSTxQJJ4fmxzP9sAZCar1ep7uOqqq/7fuu+++279h3/4h99+1Vd9Vf6zPfWpT+WpT30qJ06c4GVf9mWRhCT+vSQhCUlIQhKSkIQkJPFvJQlJSEISkpCEJCQhiX8rSUhCEpKQhCQkIYnn9hd/8Rf8+q//Oq/zOq/z3u/4ju/4WVx11VVXXXXVvw/BVVddddVVV/0f01p77Y2Njc+utVJKISKQhCQkIQlJSEISkpCEJCQhCUlIAkASkgCQhCQk8fxI4gWRxANJ4rlJ4oWRxIvCNrYBsM0wDL/dWvttrrrq3+Hs2bO3Apw5c+bBXPW/0o/8yI98zqMe9Sge9ahH8Z/pwoUL/Oqv/ioAr/u6r8v9JCEJSUhCEpKQhCQkIYl/D0lIQhKSkIQkJCEJSfxbSUISkpCEJCQhCUn8W0lCEpKQhCT+6q/+iqc97Wm8zuu8znu/+Iu/+Gtz1VVXXXXVVf92BFddddVVV131f8zGxsZ3dV1HKYWIICKICCICSUQEkpCEJCQBIAlJAEgCQBL3k8QDSUISkpCEJAAkIQlJSOKBJPH8SOL5kcRzk8S/hm0ODw8/h6uuuur/vX/4h3/47Xvvvfe3X/VVX5X/bE996lN56lOfyvHjx3nbt31b/jUkIQlJSEISkpCEJCTx7yEJSUhCEpKQhCQk8W8lCUlIQhKSkIQkJPGvcfHiRX7iJ36Cruse/OEf/uHffc011zyYq6666qqrrvq3Ibjqqquuuuqq/0Mk/Vat9cGlFEopRAQRgSQkIQlJSEISkgCQhCQAJCEJSQBIQhIAkpCEJF5UknggSdxPEs+PJO4niX8r27TWbp2m6be56qqrrgJ+5Ed+5HMe9ahH8V/hV3/1VwF4yEMewokTJ5CEJCQhiX8PSUhCEpKQhCQkIQlJ/FtJQhKSkIQkJCEJSfxbSUISkpCEJCQhCUk8t4sXL/Lt3/7tnDlz5kGf8zmf81tcddVVV1111b8NwVVXXXXVVVf9H9Fae+3FYvHatVZKKUQEEYEkIgJJRASSkIQkJCEJSUhCEpIAkIQkACQhiecmCUlIQhKSeH4k8e8hiX8t29jm4ODgc7jqqv8A9913360A11xzzYO56n+ts2fP3nrPPff89qu+6qvyn+2pT30qT33qUzl+/Div8zqvw3OThCQkIQlJSEISkpCEJP6tJCEJSUhCEpKQhCT+rSQhCUlIQhKSkIQk/q0kIQlJSEISu7u7/MRP/ATXXHPNgz/8wz/8u7jqqquuuuqqfz2Cq6666qqrrvo/YrFYfFetlVIKEUFEEBFEBJKQhCQkIQlJAEhCEgCSAJAEgCQkcT9JSEISknh+JCEJSTyQJO4niX8tSdxPEgCSeH5sA2Cb9Xr93Vx11VVXPdN9991362/91m99z1u+5VvyX+FHfuRHAHjIQx7Cgx/8YP4tJCEJSUhCEpKQhCQkIYl/LUlIQhKSkIQkJCEJSUjiX0sSkpCEJCQhCUlIQhL/Gn/5l3/Jb/zGb/A6r/M67/2O7/iOn8VVV1111VVX/esQXHXVVVddddX/AZJ+q+/7B5dSKKUQEUhCEpKQREQgCUlIAkASkgCQhCQkASCJ+0lCEv9aknggSbyoJCGJF5VtbGMbANvs7+9/Nldd9R/kvvvuuxXgzJkzD+Kq/9X+4R/+4bdPnTrFIx/5SCTxn+nixYv8+Z//OcePH+dlX/ZlkYQkJCEJSUhCEpKQhCT+LSQhCUlIQhKSkIQkJPFvIQlJSEISkpCEJCQhiX8tSUhCEpKQhCQkIYnn9ld/9Vc8/elP553e6Z0++3Ve53Xem6uuuuqqq6560RFcddVVV1111f9ymfnai8XitWutlFKICCKCiCAikIQkJCEJSQBIQhKSkIQkACQhCQBJSOKBJCEJSUhCEpKQhCSemySeH0kASOI/mm0yk/V6/T1cddVVVz2X++6779bf+q3f+u63eIu34L/Cr/7qrwLw0i/90jz4wQ/mRSEJSUhCEpKQhCQkIYl/C0lIQhKSkIQkJCEJSfxbSEISkpCEJCQhCUn8a0lCEpKQxO7uLj/xEz/BxYsXecd3fMfPevEXf/HX5qqrrrrqqqteNARXXXXVVVdd9b9YZj54Y2Pjt7quo5RCRBARRASSkIQkIgJJSEISkpCEJAAkASAJAElI4n6SkIQk/iWSkMQDSeJ+knhhJPFAkrifJP4ltrHN0dHRd2fmrVx11VVXPR8/+qM/+jmPetSjeOQjH8l/tosXL/Lnf/7nALzO67wOkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQREQQEUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkEREIAlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEhGBJCQhCUlIQhKSkIQkJCEJSUhCEpKQxKVLl/jO7/xOrrnmmgd/+Id/+Hdz1VVXXXXVVS8agquuuuqqq676X6zW+l1d11FKISKICCQhiYhAEhGBJCQhCQBJSAJAEpKQBIAk7icJSfxbSOJfQxL3k8SLwjbPj22Ojo4+h6uu+g909uzZZwBcc801D+aq//Xuu+++W//hH/7ht1/1VV+V/wq/9mu/BsDx48c5efIkEUFEEBFEBBGBJCQhCUlIQhKSkIQkJCEJSUhCEhFBRBARRAQRQUQQEUQEkpCEJCQhCUlIQhKSkIQkJCGJiCAiiAgigoggIogIJCEJSUhCEpKQhCQkIQlJSEISkogIIoKIICKICCICSUhCEpKQhCQkIQlJSEISly5d4qd+6qc4c+bMgz78wz/8u7jqqquuuuqqfxnBVVddddVVV/0v1Vp778Vi8dq1VkoplFKICCKCiEASkpCEJCQBIAlJSEISkgCQhCQAJCGJ+0lCEpKQhCQkIQlJSEISz00S95PEv4Yk7ieJF4VtbHN0dPTdmXkrV131n+Caa655MFf9n/AjP/Ijn/PIRz6SU6dO8Z/t4sWL/Nqv/RrHjx/nrd7qrYgIIoKIICKICEoplFIopVBKISKICCKCiCAiiAgigoggIogIIoKIICKICCKCiCAiiAhKKZRSKKUQEUQEEUFEEBFEBBFBRBARRAQRQUQQEUQEEUFEEBGUUiilUEohIogIIoKIICKICCKCiCAiiAgigoggIogIIoKIICIopVBKISKICCKCiCAiiAgigoggIogI/uZv/oZbb72V13md13nv13md13lvrrrqqquuuuqFI7jqqquuuuqq/4Uy88FbW1vf1XUdpRQiAklEBJKQhCQkIQlJAEhCEpIAkASAJAAkIYn7SUISLypJSOK/km1sYxsA2yyXy+/hqqv+g9133323ctX/Kf/wD//w2/fcc89vv8VbvAX/Ff7iL/4CgOPHj/PgBz8YSUhCEpKQhCQkIYmIICKICCKCiCAiiAgigoggIogIIgJJSEISkpCEJCQhCUlEBBFBRBARRAQRQUQQEUQEEUFEEBFIQhKSkIQkJCEJSUQEEUFEEBFEBBFBRBARRAQRQUQgCUlIQhKSkIQkJBERRAQRQUQQEUQEEUFEEBFEBBHBz/zMzwDwju/4jp91zTXXPJirrrrqqquuesEIrrrqqquuuup/oa7rvqvrOkopRAQRQUQgiYhAEpKICCQBIAlJSAJAEpKQBIAk7icJSTyQJCQhCUlIQhLPjyTuJ4nnJonnRxIPJIl/Ddus1+vfnqbpt7nqqquuehH81m/91vc88pGP5L/CxYsXedrTnsaxY8d40IMeREQQEUQEEUFEIAlJSEISkpCEJCQhCUlIQhKSkIQkIoKIICKICCKCiEASkpCEJCQhCUlIQhKSkIQkJCEJSUQEEUFEEBFIQhKSkIQkJCEJSUhCEpKQhCQkIYmIICKICCKCiEASkpCEJCQhCUlIQhKSkIQkJCGJvb09/uZv/oZrrrnmwe/4ju/4WVx11VVXXXXVC0Zw1VVXXXXVVf/LZOZnLRaL1661UkohIogIIgJJSEISkpCEJCQhCUlIQhKSAJCEJAAkIYn7SUISknhBJCGJF4Uk/iWS+LewjW2Ojo6+h6uu+k9w9uzZWwHOnDnzYK76P+Mf/uEffru1duurvMqr8F/h137t1wB4yZd8SSQhCUlIQhIRQUQQEUQEEUFEEBFEBBFBRBARSEISkpCEJCQhCUlIQhIRQUQQEUQEEUFEEBFEBBFBRCAJSUhCEpKQhCQkIYmIICKICCKCiCAiiAgigoggIpCEJCQhCUlIQhKSkIQkIoKIICKICCKCiCAiiAgkIQlJSEISkpDE7/3e7wHwOq/zOu/9Yi/2Yq/NVVddddVVVz1/BFddddVVV131v8g0Ta+9tbX12bVWSilEBBGBJCQREUhCEhGBJAAkIQlJAEgCQBIAkpAEgCQkIYl/DUlI4n6SuJ8kXhhJPJAk/jVsYxvbrNfr7+aqq6666kV033333fqjP/qjn/Pmb/7m/Fd42tOextOe9jQAHvSgBxERRAQRQUQQEUhCEpKQhCQkIQlJSEISEUFEEBFEBBFBRBARRAQRQUQgCUlIQhKSkIQkJCEJSUQEEUFEEBFEBBFBRBARRASSkIQkJCEJSUhCEpKQREQQEUQEEUFEEBFEBBGBJCQhCUlIQhKSkIQkJBERRAQRQUQQEUQEEcHe3h6/+7u/C8A7vdM7fRZXXXXVVVdd9fwRXHXVVVddddX/IvP5/LO6rqPWSkQQEUQEEUFEIAlJSEISAJKQhCQAJCEJSUhCEgCSkMQDSUISkpCEJCQhCUn8SyTxwkjifpJ4fiTxwtjmfru7u+/DVVddddW/0j/8wz/89qlTp3jkIx/Jf4WnPe1pHDt2jJd4iZdAEpKQhCQkERFEBBFBRBARRAQRQUQQEUhCEpKQhCQkIQlJSEISkogIIoKIICKICCKCiCAikIQkJCEJSUhCEpKQhCQkERFEBBFBRBARRAQRgSQkIQlJSEISkpCEJCQhiYggIogIIoKIICKICCQhCUlIQhKSkIQkJCEJSfz93/89AC/2Yi/22i/+4i/+2lx11VVXXXXV8yK46qqrrrrqqv8lbH/WYrF47VorEUFEEBFEBJKQhCQkEREASEISkpCEJCQBIAkASUjifpKQhCT+JZKQxANJ4t9KEi+IJO5nG9vYBsA2mclqtfpurrrqP8l99913K8A111zzYK76P+W+++679bd+67e++83f/M35r/AXf/EXANxyyy1EBJKQhCQkIQlJSEISkpCEJCQhiYggIogIIoKIICKICCQhCUlIQhKSkIQkJCEJSUgiIogIIoKIICKICCQhCUlIQhKSkIQkJCEJSUgiIogIIoKIICKICCQhCUlIQhKSkIQkJCEJSUgiIogIIoKIICKICCQhCUlIQhJ7e3v8wi/8AgDv+I7v+NlcddVVV1111fMiuOqqq6666qr/BVprr721tfXZtVZKKZRSiAgkIYmIQBKSkASAJCQhCUkASAJAEgCSuJ8kJPHcJCEJSUji+ZHEA0niuUniX0MSD2Sb58c2tjk8PPxurrrqqqv+jX70R3/0cx75yEfyyEc+kv9sFy9e5GlPexo7OzvcfPPNRAQRQUQQEUQEEYEkJCEJSUhCEpKQhCQkIQlJSEISEUFEEBFEBBGBJCQhCUlIQhKSkIQkJCEJSUgiIogIIoKIICKQhCQkIQlJSEISkpCEJCQhCUlEBBFBRBARRASSkIQkJCEJSUhCEpKQhCQkIYmIICKICCICSUji9ttvB+DFXuzFXuvFXuzFXpurrrrqqquuek4EV1111VVXXfW/wPb29nd1XUetlYggIogIIoKIQBKSkIQkJCEJSUgCQBKSkIQkJAEgCUncTxKSkIQknpskJCGJB5LE8yOJF0YSDySJfy3bHB4efg5XXfWf7L777rsV4JprrnkwV/2fct999936D//wD7/9yq/8yvxXeNrTngbAzTffjCQkIQlJSEISEUFEEBFEBJKQhCQkIQlJSEISkpCEJCQhCUlIIiKICCKCiEASkpCEJCQhCUlIQhKSkIQkJCGJiCAiiAgiAklIQhKSkIQkJCEJSUhCEpKQhCQigoggIpCEJCQhCUlIQhKSkIQkJCEJSUgiIogI9vf3+YM/+AMA3umd3umzuOqqq6666qrnRHDVVVddddVV/8NFxG/VWh9cayUiiAgigohAEpKQhCQkIQlJSEISkpCEJAAkASAJSdxPEpL415DEA0nifpJ4fiTx3CTxb2Eb2xweHn53Zt7KVVddddW/w4/8yI98ziMf+UhOnTrFf7anP/3pALzYi70YkpCEJCQhCUlIQhKSkEREEBFIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSCIikIQkJCEJSUhCEpKQhCQkIQlJSEISkpBERCAJSUhCEpKQhCQkIQlJSEISkpCEJCQREUhCEpKQhCQkIQlJSEISkpCEJCQhCUn8wz/8AwBnzpx58Iu92Iu9NlddddVVV131bARXXXXVVVdd9T9Ya+21NzY2XrvWSkRQSiEikIQkIgJJSEISkpCEJCQhCQBJAEgCQBL3k4QkHkgSkpCEJCQhCUk8N0n8W0jigSTxr2Eb29jm6Ojoe7jqqv8CZ8+evRXgzJkzD+aq/3P+4R/+4bfvueee336zN3sz/rNdvHgRgJ2dHY4dO4YkJCEJSUhCEpKQhCQkIYmIQBKSkIQkJCEJSUhCEpKQhCQkIQlJSEISEYEkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJLG3t8ftt9/ONddc8+DXeZ3XeS+uuuqqq6666tkIrrrqqquuuup/sOPHj/9W13XUWimlEBFEBBGBJCQhCUlIQhKSkIQkJCEJSUhCEpIAkIQk7icJSUjihZGEJB5IEveTxItKEv8atrGNbe63Wq1+e5qm3+aqq6666j/Ab/3Wb33PIx/5SP6zXbx4kac97WkA7OzsIAlJSEISkpCEJCQhCUlIAkASkpCEJCQhCUlIQhKSkIQkJCEJSUhCEgCSkIQkJCEJSUhCEpKQhCQkIQlJSEISAJKQhCQkIQlJSEISkpCEJCQhCUlIQhIAkpCEJCQhCUlIQhKSkIQkJCEJSUgCQBJ/+Id/CMCLvdiLvTZXXXXVVVdd9WwEV1111VVXXfU/VET8VkRQSiEiiAgkIQlJRASSkIQkJCEJSUhCEgCSAJAEgCQkASAJSUjiX0sSDySJfwtJ/FvYxjb7+/ufw1VXXXXVf5B/+Id/+O3W2q2v/MqvzH+2pz3taQC88iu/MpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkASAJSUhCEpKQhCQkIQlJSEISkpCEJCQBIAlJSEISkpCEJCQhCUlIQhKSkIQkJAEgCUlIQhKSkIQkJCEJSUhCEpKQhCQAJCGJO++8k9tvv51rrrnmwS/2Yi/22lx11VVXXXXVFQRXXXXVVVdd9T9Qa+29Nzc3X7vWSimFiCAiiAgigohAEpKQhCQkIQlJSAJAEpKQBIAkACQhiQeShCQkIQlJSEISkpDEc5PE8yMJAEk8P5J4fiQBIIkXxja2Gcfx1nEcf5urrvovct99990KcM011zyYq/5Puu+++2790R/90c95szd7M/6z/eVf/iUA29vbSEISkpCEJCQhCUlI4n6SkIQkJCEJSUhCEpKQhCQkIQlJSEISAJKQhCQkIQlJSEISkpCEJCQhCUlIQhIAkpCEJCQhCUlIQhKSkIQkJCEJSUjifpKQhCQkIQlJSEISkpCEJCQhCUncTxKSkIQkHve4xwHwTu/0Tp/FVVddddVVV11BcNVVV1111VX/w2Tmg3d2dr6r6zpKKZRSKKUQEUQEkpCEJCQhCUlIQhKSkIQkJAEgCUkASOJ+kpCEJF4UkpDEA0nifpJ4fiTxH8U2ALbZ29v7HK666qqr/oP9wz/8w2+fOnWKRzziEfxnunjxIgA7OzvcdNNNSEISkpCEJB5IEpKQhCQkIQlJSEISkpCEJCQhCUlI4n6SkIQkJCEJSUhCEpKQhCQkIQlJSOJ+kpCEJCQhCUlIQhKSkIQkJCEJSdxPEpKQhCQkIQlJSEISkpCEJCQhiftJQhKSkIQkJHHnnXcCcObMmQdz1VVXXXXVVVcQXHXVVVddddX/MH3ff1fXdZRSKKUQEUhCEpKICCQhCUlIQhKSkIQkACQBIAkASUgCQBKSeCBJSEISkpCEJJ4fSfx7SeJ+knhBbHM/2wDYBmC1Wn03V131X+i+++67FeDMmTMP4qr/s+67775bf+u3fuu73+zN3oz/bE972tO4nyQkIYn7SUISkpCEJCQhCUlIQhKSkIQkJCEJSTyQJCQhCUlIQhKSkIQkJCEJSUhCEg8kCUlIQhKSkIQkJCEJSUhCEpKQxP0kIQlJSEISkpCEJCQhCUlIQhIPJAlJSEISkpCEJCSxv7/PHXfcwTXXXPPg13md13lvrrrqqquuugoIrrrqqquuuup/kGmaPmtjY+O1a62UUogIIoKIICKQhCQkIQlJSEISkpAEgCQkIQlJSAJAEpK4nyQkIYkXRBKSkMQDSeJ+knhRSOLfwja2AbCNbXZ3dz+bq6666qr/JD/6oz/6OY985CN5xCMewX+mpz/96QDceOONSOJ+kpCEJCQhCUlIQhKSkIQkJCEJSUjigSQhCUlIQhKSkIQkJCEJSUhCEpJ4IElIQhKSkIQkJCEJSUhCEpKQhCQeSBKSkIQkJCEJSUhCEpKQhCQeSBKSkIQkJCEJSUhCEpKQhCT+5E/+BIDXeZ3XeS+uuuqqq666Cgiuuuqqq6666n+IzHzw8ePHP7vrOkoplFKICCKCiEASEYEkJCEJSUhCEpKQhCQkASAJAElI4n6SkMS/liQeSBLPTRIvjCTuJ4l/C9ssl8vv4aqrrrrqP8l999136z/8wz/89iu/8ivzn+lpT3saAI9+9KMBkIQkJCEJSUhCEpKQhCQkIQlJSOKBJCEJSUhCEpKQhCQkIQlJSEISknggSUhCEpKQhCQkIQlJSEISkpDEc5OEJCQhCUlIQhKSkIQkJCGJB5KEJCQhCUlIQhKSkIQkJCEJSdxvf38fgBd7sRd77Rd/8Rd/ba666qqrrvr/juCqq6666qqr/oeYzWbf1XUdpRRKKUQEEYEkJBERSEISkpCEJCQhCUkASAJAEgCSuJ8kJPFAkpCEJCQhCUlIQhLPTRLPjyQeSBIviCReGNs8P7axzcHBwXdn5q1cddV/sbNnzz4D4JprrnkwV/2f9yM/8iOf84hHPIKTJ0/yn2V3d5f7SUISkpCEJCQhCUlIQhKSkMQDSUISkpCEJCQhCUlIQhKSkIQkJPFAkpCEJCQhCUlIQhKSkIQkJCGJB5KEJCQhCUlIQhKSkIQkJCGJ5yYJSUhCEpKQhCQkIQlJSEISz00Sktjf3+fOO+8E4LGPfexrcdVVV1111f93BFddddVVV131P4Dtz9rY2HjtWiulFCKCiCAiiAgkIQlJSEISkpCEJCQBIAlJSEISkgCQhCTuJwlJSOJfIglJPJAk7ieJF4Uk/j1sY5vMZH9//3O46qqrrvpP9g//8A+/fc899/z2m77pm/KvZZsXxcWLF3n605/O9vY2N954I5KQhCQkIQlJSEISDyQJSUhCEpKQhCQkIQlJSEISknhukpCEJCQhCUlIQhKSkIQkJPHcJCEJSUhCEpKQhCQkIQlJPDdJSEISkpCEJCQhCUlIQhKSeG6SkIQkJCEJSUjiT//0TwF48Rd/8dfhqquuuuqq/+8Irrrqqquuuuq/WWvttbe3tz+76zpKKZRSiAgiAklIIiKQhCQkIQlJSEISkpCEJAAkASAJSQBIQhKSeH4k8cJI4t9LEi8q2wDYxjYAtjk8PPzuzLyVq676b3DffffdCnDNNdc8mKv+X/it3/qt73nEIx7Bf6aLFy8CcMMNNyAJSUhCEs9NEpKQhCQkIQlJSEISkpCEJCTxQJKQhCQkIQlJSEISkpCEJCTx3CQhCUlIQhKSkIQkJCEJSUjigSQhCUlIQhKSkIQkJCEJSUjiuUlCEpKQhCQkIQlJSEISktjb2wPgmmuueTBXXXXVVVf9f0dw1VVXXXXVVf/NFovFZ/V9TymFUgoRQUQgiYggIpCEJCKCiCAiiAgigohAEhFBRBARSCIikIQkJPFAkpCEJCQhCQBJSEISknhukrifJF4Uknh+JAEgiRfENvezjW0ODw+/h6uuuuqq/yL/8A//8NuttVtf+ZVfmf8sFy9eBOCGG27guUlCEpKQhCQkIQlJSEISkpCEJJ6bJCQhCUlIQhKSkIQkJCGJ5yYJSUhCEpKQhCQkIQlJSEISz00SkpCEJCQhCUlIQhKSkMRzk4QkJCEJSUhCEpKQhCSen4ODA+68807OnDnzoBd7sRd7ba666qqrrvr/jOCqq6666qqr/htJ+q6NjY3XrrVSSiEiiAgiAklEBBFBRFBKISKICCKCiCAiiAgigohAEhFBRCAJSUQEEUFEEBFEBC8qSUjiXyIJAEn8Z7CNbVar1W+P4/jbXHXVf5OzZ8/eCnDmzJkHc9X/C/fdd9+tP/qjP/o5b/Imb8J/lqc//ekAbG9vIwlJSEISkpCEJCQhCUlIQhLPjyQkIQlJSEISkpCEJCQhiecmCUlIQhKSkIQkJCEJSUji+ZGEJCQhCUlIQhKSkIQknh9JSEISkpCEJCQhCUlI4rlJQhKSkIQkJHHXXXcB8E7v9E6fxVVXXXXVVf+fEVx11VVXXXXVf5PW2mtvb2+/d9d1lFIopRARRAQRQa2VUgoRQSmFUgqlFEoplFIopVBKISIopRARlFKICEoplFIopRARSEISkpBERBARSEISkpCEJCTx3CRxP0ncTxIvCkncTxL/GrYBsM2lS5c+h6uuuuqq/2L/8A//8NunTp3iEY94BP8Zdnd3uZ8kJCEJSUhCEpKQxHOThCQkIQlJSEISkpCEJCQhiecmCUlIQhKSkIQkJCEJSUjiuUlCEpKQhCQkIQlJSEISknhukpCEJCQhCUlIQhKSkMTzIwlJSEISkpCEJCQhCUk84QlPAODMmTMP5qqrrrrqqv/PCK666qqrrrrqv8nW1tZ3dV1HKYVSChFBKYVSCrVWSimUUqi1UkohIogIIoKIICKQREQgiYhAEhGBJCQhCUlEBBFBRBARSEISEYEkJCGJ+0lCEg8kiX8PSfxr2QbANuM43jqO429z1VX/jb7pm77p6QDXXHPNg3/iJ37CXPX/wn333Xfrb/3Wb333m7zJm/Cf4eLFizz96U9na2uLG264AUlIQhLPTRKSkIQkJCEJSUhCEpKQxPMjCUlIQhKSkIQkJCEJSTw/kpCEJCQhCUlIQhKSkMTzIwlJSEISkpCEJCQhCUk8N0lIQhKSkIQkJCEJSUji+Tk4OODOO+/kmmuuefCLvdiLvTZXXXXVVVf9f0Vw1VVXXXXVVf8NIuK35vP5g2utlFKotVJrpdZKrZVSCqUUIoKIICKICCKCiCAiiAgigoggIogIIgJJSEISEUFEIAlJSEISEUFEIImIQBKSkIQk7ieJ50cSLwpJ/GvYBsA2tgGwjW0uXbr0OVx11X+jH/uxH1vzXH7iJ37CXPX/wo/8yI989iMe8Qge8YhH8F9JEpKQhCQkIQlJSEISkpDEc5OEJCQhCUlIQhKSkIQkJPHcJCEJSUhCEpKQhCQkIYnnRxKSkIQkJCEJSUhCEpJ4fiQhCUlIQhKSkIQkJPH8SEISkpCEJCQhCYAXe7EXey2uuuqqq676/4rgqquuuuqqq/6LZeZrb29vv3bXddRa6bqOWiu1VkopRAQRQURQSiEiiAgigoggIogIIoKIICKICCQREUQEEUFEIAlJRAQRQUQgCUlIIiKQREQgCUlIQhL3k8T9JPGvJYl/Ddvczza2yUyWy+V3c9VV/40ioueq/7fOnj37jH/4h3/47Vd6pVfiP5ptnva0pwFw/fXXIwlJSEISkpCEJCQhiedHEpKQhCQkIQlJSEISknh+JCEJSUhCEpKQhCQkIYnnJglJSEISkpCEJCQhCUk8P5KQhCQkIQlJSEISknh+JCEJSUhCEpKQhCQkcb8///M/B+DFX/zFX5urrrrqqqv+vyK46qqrrrrqqv9CmfngnZ2d3+q6jq7r6PueWiulFEoplFIopVBKISKICCKCiCAiiAgigohAEhGBJCKCiEASEUFEEBFEBBFBRCAJSUQEEYEkJCEJSUQEEYEkJBERSAJAEs9NEgCSeG6S+PeyDYBtdnd3P5urrrrqqv9mP/IjP/I5j3jEI/jP8PSnPx2A66+/HklIQhKSeH4kIQlJSEISkpCEJCQhiedHEpKQhCQkIQlJSEISknh+JCEJSUhCEpKQhCQk8fxIQhKSkIQkJCEJSUji+ZGEJCQhCUlIQhKSkMTzIwlJHBwcAHDmzJkHc9VVV1111f9XBFddddVVV131X6jv++/q+57ZbEbf95RSKKVQSqGUQimFUgoRQSmFiCAiiAgigoggIogIIoKIICKQREQQEUhCEpKQhCQkERFEBJKQhCQkERFIAkASkogIJCEJSTyQJF4UknhukvjXsI1tlsvl93DVVf/NvuM7vuOleS533XXXL3PV/xv/8A//8Nt33333b7/Jm7wJ/9F2d3cB2Nra4rlJQhKSkIQkJCEJSUhCEpJ4bpKQhCQkIQlJSEISkpDE8yMJSUhCEpKQhCQkIYnnRxKSkIQkJCEJSUhCEs+PJCQhCUlIQhKSkIQknh9JSEISkpCEJCRxcHDAXXfdxTXXXPPgF3uxF3ttrrrqqquu+v+I4Kqrrrrqqqv+i7TW3nt7e/u1F4sFXddRSqHWSq2VUgoRQUQQEZRSiAgigoggIogIIoKIQBIRgSQigohAEhFBRBARRAQRQUQQEUhCEhGBJCICSUhCEhGBJCQhCUlIQhKSkMS/lSQeSBL3s80D2cY2trHNwcHBd7fWbuWqq/6b/eIv/uLffNZnfdYpnumnf/qn3+0jPuIj3oSr/l/5rd/6re95pVd6Jf69bPP8bG1tIQlJSEISkpCEJCQhCUk8P5KQhCQkIQlJSEISknh+JCEJSUhCEpKQhCQk8fxIQhKSkIQkJCEJSUji+ZGEJCQhCUlIQhKSkMTzIwlJSEISkpCEJCTx/Nx9990AvNiLvdhrcdVVV1111f9HBFddddVVV131XyAzH3zy5MnvWiwW1FqptVJrpZRCKYVSCqUUSilEBJKICCKCiCAiiAgkIYmIQBIRgSQkERFIQhKSkIQkJCGJiEASkogIJBERSEISkpCEJAAkIQlJSEISkviXSOJ+knhR2MY2tnkg2+zt7X0OV131P8Tf//3fX/iHf/iH3wb4y7/8y7u46v+df/iHf/jtaZpufcVXfEX+I128eJGnP/3pAFx//fVIQhKSkMTzIwlJSEISkpCEJCQhCUk8N0lIQhKSkIQkJCEJSUjiuUlCEpKQhCQkIQlJSOL5kYQkJCEJSUhCEpKQxPMjCUlIQhKSkIQkJPH8SEISkpCEJO6++24AXvzFX/y1ueqqq6666v8jgquuuuqqq676L7BYLL5rY2ODruvouo5aK6UUSilEBBFBRCCJiCAikIQkJCEJSUQEkpCEJCQhiYhAEpKQhCQkIQlJSEISEYEkJCEJSUgiIpCEJCQREUhCEpKQhCQkIQlJ/HvY5oWxjW329/e/u7V2K1ddddVV/0Pcd999t/7Wb/3Wd7/Jm7wJ/5UkIQlJSEISkpCEJCQhiedHEpKQhCQkIQlJSEISz48kJCEJSUhCEpKQxPMjCUlIQhKSkIQkJCGJ50cSkpCEJCQhCUlI4vmRhCQkIQlJSEISkrjfwcEBAGfOnHkwV1111VVX/X9EcNVVV1111VX/yVprn3Xs2LHX7rqOWiulFEoplFKICCKCiCAiiAgkERFEBBFBRBARSEISEYEkIgJJSEISkpCEJCQhCUlIQhKSkIQkJBERSCIikIQkJBERSEISkpCEJCQhCUlI4rlJ4n6S+LeyjW0yk8PDw+/hqquuuup/mN/+7d/+npMnT/KIRzyC/0hPf/rTAbjuuuuQhCQkIQlJSEISkpDE8yMJSUhCEpKQhCQkIYnnRxKSkIQkJCEJSUhCEs9NEpKQhCQkIQlJSEISz48kJCEJSUhCEpKQxPMjCUlIQhKSkIQkJPH8SEISBwcH7O/vc8011zz4xV7sxV6bq6666qqr/r8huOqqq6666qr/RJn54Guvvfaz+76n1kqtlVorEUFEEBFEBBGBJCKCiEASkpCEJCQREUhCEpKQhCQiAklIQhKSiAgiAklIQhKSkIQkJCEJSUhCEpKICCQhCUlIQhKSkIQkJAEgCUn8R7INgG2Wy+VvD8Pw21x11VVX/Q9z33333fpbv/Vb3/3Gb/zG/Ee6ePEiANdddx2SkIQkJCGJ5yYJSUhCEpKQhCQkIYnnRxKSkIQkJCEJSUhCEs+PJCQhCUlIQhKSkMTzIwlJSEISkpCEJCTx/EhCEpKQhCQkIQlJPD+SkIQkJCEJSUhCEgcHB1x11VVXXfX/FsFVV1111VVX/Sfa2tr6rr7v6bqOWiulFCKCUgoRQUQQEUgiIpCEJCQREUhCEpKQhCQkERFIQhKSkIQkJBERSEISEYEkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCTxQJKQxHOTxHOTxIvCNgC2sc3+/v73cNVV/wPdd999twJcc801D+aq/7d+9Ed/9HMe/vCH8/CHP5z/KLu7u7wwkpCEJCQhCUlIQhKSeG6SkIQkJCEJSUhCEpJ4fiQhCUlIQhKSkIQknh9JSEISkpCEJCQhiedHEpKQhCQkIQlJSOL5kYQkJCEJSUhCEpJ4fu6++24AXuzFXuy1uOqqq6666v8bgquuuuqqq676TyLps7a3t1+773tqrZRSiAgiAklEBBGBJCICSUQEEUFEIImIICKQhCQiAklIQhIRgSQkIYmIQBKSkIQkJCEJSUhCEpKQhCQAJCEJSUhCEpKQhCQkIQlJSEISkpCEJCTx3CTxwtjGNraxDYBtbGOb1Wr13Vx11VVX/Q9133333fr3f//3v/2Kr/iK/Ee5ePEiAJubm0hCEpKQhCQkIQlJSOL5kYQkJCEJSUhCEpKQxHOThCQkIQlJSEISkpDEc5OEJCQhCUlIQhKSeH4kIQlJSEISkpCEJJ4fSUhCEpKQhCQk8YJIQhKSkIQk7rnnHgBe/MVf/LW56qqrrrrq/xuCq6666qqrrvpPME3Ta588efKzZ7MZtVZKKZRSiAgigohAEpKICCQREUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpIAkIQkJCEJAElIQhKSkIQkJCEJSdxPEs9NEv8WtrGNbc6dO/c+XHXVVVf9D/ejP/qjn/3whz+cF5VtXpjd3V0Atra2kIQkJCGJ50cSkpCEJCQhCUlIQhLPjyQkIQlJSEISkpDE8yMJSUhCEpKQhCQk8dwkIQlJSEISkpCEJJ4fSUhCEpKQhCQk8fxIQhKSkIQkJCEJSTzQwcEBAGfOnHkwV1111VVX/X9DcNVVV1111VX/Cba2tj5rPp9Ta6WUQkQQEUQEEUFEEBFEBJKICCQhCUlIQhKSkEREIAlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJAEhCEpKQBIAkJAEgiftJQhKS+Leyzf0yk6Ojo+/mqquuuup/uH/4h3/4nbvvvvu33/iN35j/KE9/+tMBuPbaa3kgSUhCEpKQhCQkIQlJPD+SkIQkJCEJSUhCEpJ4bpKQhCQkIQlJSEISz48kJCEJSUhCEpJ4fiQhCUlIQhKSkIQknpskJCEJSUhCEpKQxPMjCUlI4vDwkHvuuYdrrrnmwS/+4i/+2lx11VVXXfX/CcFVV1111VVX/Qebpum9jx079tq1VkopRASlFCKCiEASkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUkASEISkpCEJAAkIQlJPDdJSEISkpCEJCQhCUlIQhL/WrYBsI1t9vf3v5urrvof7L777rsV4MyZMw/iqv/3fuu3fut7XvEVX5H/DJKQhCQkIQlJSEISz00SkpCEJCQhCUlIQhLPjyQkIQlJSEISkpDEc5OEJCQhCUlIQhKSeG6SkIQkJCEJSUhCEs+PJCQhCUlIQhKSeH4kIQlJSEISkpDEcztz5syDueqqq6666v8Tgquuuuqqq676D3by5MnP6rqOWiulFCKCiEASEUFEEBFEBJKICCQhCUlIQhKSkIQkJCEJSUQEkpCEJCQhCUlIQhKSkASAJCQhCUlIAkASAJKQBIAkJCEJSUhCEpKQBIAkACQhCQBJvChs80C2AbCNbTKTvb29z+Gqq6666n+Jf/iHf/jtkydP8oqv+Ir8R3j6058OwLXXXoskJCEJSUjigSQhCUlIQhKSkIQkJPHcJCEJSUhCEpKQhCSeH0lIQhKSkIQkJPH8SEISkpCEJCQhiedHEpKQhCQkIQlJPD+SkIQkJCEJSUji+ZGEJO655x4Azpw58yCuuuqqq676/4Tgqquuuuqqq/4D2X7vjY2NB9daKaUQEZRSiAgiAklIQhKSkIQkJCGJiCAiiAgkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEIS95OEJCQhiftJQhKSkASAJAAkIYl/iW1sY5sHss3+/v53t9Zu5aqrrrrqf4n77rvv1h/5kR/57Dd6ozfiP5IkJPHcJCEJSUhCEpKQhCSemyQkIQlJSEISkpDEc5OEJCQhCUlIQhKSeG6SkIQkJCEJSUhCEs9NEpKQhCQkIQlJSOK5SUISkpCEJCQhiedHEpKQhCQkIQlJ3HPPPQC8+Iu/+Otw1VVXXXXV/ycEV1111VVXXfUf6LrrrvuurusopRARRASSkEREEBFEBBGBJCICSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkACQhCUlIQhKSkIQkJAEgCUlIQhLPTRKSkASAJCQhCUlI4n6SkMSLyja2sc3BwcH3cNVVV131v8xv//Zvf8/Jkyd52MMexr/X05/+dACuueYaACQhCUlIQhKSkIQkJPFAkpCEJCQhCUlIQhLPTRKSkIQkJCEJSUjiuUlCEpKQhCQkIYnnRxKSkIQkJCEJSTw/kpCEJCQhCUlI4rlJQhKSkIQkJCGJ5+fw8BCAa6655sFcddVVV131/wnBVVddddVVV/3HeW9JlFIopVBKISKICCICSUhCEpKQhCQkIYmIQBKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUkASAJAEgCSkASAJCQhCUlIQhKSkMT9JCEJAElIAkASkvjXsI1tbHN0dPTbwzD8NlddddVV/8vcd999t/7Wb/3Wd7/RG70R/5EkIQlJSEISknhukpCEJCQhCUlIQhIPJAlJSEISkpCEJCTx3CQhCUlIQhKSkMRzk4QkJCEJSUhCEs+PJCQhCUlIQhKSeH4kIQlJSEISknh+JCEJSUhCEoeHhxwcHHDmzJkHvdiLvdhrc9VVV1111f8XBFddddVVV131H2RnZ+ezuq6jlEIphYggIogIJCEJSUhCEpKQhCQkASAJSQBIQhKSkIQkJAEgCUlIQhKSkASAJAAkIQlJSEISkpCEJCQBIAlJ/EskIYn7SUISAJK4nyQeyDbPj23uZ5vd3d3P4aqr/hc4e/bsMwCuueaaB3PVVc/0oz/6o59z8uRJHv7wh/PvcfHiRQA2NzeRhCQk8UCSkIQkJCEJSUhCEs9NEpKQhCQkIQlJPDdJSEISkpCEJCTx3CQhCUlIQhKSkMRzk4QkJCEJSUhCEs+PJCQhCUlIQhKSeG6SkIQkJCEJSUjiuR0cHHDVVVddddX/OwRXXXXVVVdd9R9gmqb3XiwWDy6lUEohIpCEJCQREUQEEYEkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkASAJCQhCUkASEISkgCQhCQAJCEJSUhCEpKQhCQkcT9JSEISAJIAkMT9JPHC2AbANrYZhuHWYRh+m6uuuuqq/6Xuu+++W+++++7ffoVXeAX+PXZ3dwHY3NxEEveThCQkIQlJSEISkpDE/SQhCUlIQhKSkIQkHkgSkpCEJCQhCUlI4oEkIQlJSEISkpCEJB5IEpKQhCQkIQlJPDdJSEISkpCEJCTx/EhCEpKQhCQk8fxIQhKSkMS9994LwIu92Iu9FlddddVVV/1/QXDVVVddddVV/wFOnjz5WV3XUUohIogIIoKIQBKSkIQkJCEJSUhCEpKQxP0kIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpIAkIQkJCEJSdxPEpKQhCQeSBKSkMT9JCEJSQBI4n6SuJ9tbGMb2wDYxjaZycWLFz+Hq6666qr/5X7kR37kcx7+8Ifz77W7uwvA5uYmkpCEJCQhCUlIQhIPJAlJSEISkpCEJB5IEpKQhCQkIQlJSOKBJCEJSUhCEpKQxHOThCQkIQlJSEISDyQJSUhCEpKQhCSemyQkIQlJSEISknhukpCEJCQhCUlI4n733nsvAC/+4i/+2lx11VVXXfX/BcFVV1111VVX/TtN0/Tas9nswaUUSimUUpBERCCJiEASkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJAEgCUlIQhLPTRKSkMQDSUIS95OEJAAk8S+xDYBtMpOjo6Pv5qqrrrrqf7l/+Id/+O0777zzt9/wDd+Q+9nmX+vixYsAbG5uIglJSEISkpDE/SQhCUlIQhKSkIQk7icJSUhCEpKQhCQk8UCSkIQkJCEJSUjigSQhCUlIQhKSkMRzk4QkJCEJSUhCEg8kCUlIQhKSkIQknpskJCEJSUhCEs+PJCQhCYAzZ848mKuuuuqqq/6/ILjqqquuuuqqf6f5fP5eXddRSiEikEREIImIQBKSkIQkJCEJSUhCEpKQhCQkIQlJSEISAJKQhCQkIQlJSEISkpCEJCQhCUkASEISkgCQhCTuJwlJSEISkpDEA0lCEpK4nyQeSBL/EtsA2MY2Fy9e/Gyuuuqqq/6P+O3f/u3veYVXeAX+I2xubiIJSUhCEveThCQkIQlJSEISDyQJSUhCEpKQhCQeSBKSkIQkJCEJSTyQJCQhCUlIQhKSeCBJSEISkpCEJCTx3CQhCUlIQhKSeG6SkIQkJCEJSTw3SUhCEpKQhCQADg4OuOqqq6666v8dgquuuuqqq676d9rZ2XnvWiulFCKCiEASkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJAEgCUkASEISknhBJCGJ5yYJSQBIAkAS/xLbANjGNpnJ4eHh93DVVVdd9X/E3//93//WyZMneYVXeAX+rZ7+9KcDsLm5iSQkcT9JSEISkpCEJCRxP0lIQhKSkIQkJCGJ+0lCEpKQhCQkIQlJ3E8SkpCEJCQhCUk8kCQkIQlJSEISknggSUhCEpKQhCQk8UCSkIQkJCEJSUjigSQhCUlIQhKSeG6SODo64uDggGuuuebB11xzzYO56qqrrrrq/wOCq6666qqrrvp3GMfxvbuuo5RCRBARRAQRgSQkIQlJSEISkpCEJAAkIQlJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUQEkpCEJCQhCUlIQhKSkASAJCQhCUlIQhKSeCBJSEISkrifJAAk8S+xDYBtbGObvb29726t3cpVV/0vct99990KcM011zyYq656LmfPnn3Gj/zIj3z2G77hG/IfSRKSkIQkJCEJSUgCQBKSkIQkJCEJSUjifpKQhCQkIQlJSOKBJCEJSUhCEpKQxP0kIQlJSEISkpDEA0lCEpKQhCQkIYkHkoQkJCEJSUjiuUlCEpKQhCQk8UCSkIQkJCEJSRweHgJw5syZB3PVVVddddX/BwRXXXXVVVdd9e+wvb39XrVWIoKIQBKSkEREIAlJSEISkpCEJCQhCQBJSEISkpCEJCQhCUlIQhKSkEREIAlJSCIikEREIAlJSEISkpAEgCQkIYkXRhKSeH4kcT9J3E8SkpDEA9nmgWyTmVy6dOlzuOqqq676P+a3f/u3v+fkyZM87GEP499id3cXgDNnziAJSUhCEpKQhCQkcT9JSEISkpCEJCRxP0lIQhKSkIQkJHE/SUhCEpKQhCQk8UCSkIQkJCEJSTyQJCQhCUlIQhKSeCBJSEISkpCEJB5IEpKQhCQkIYnnJglJSEISkpDEAx0eHgLwYi/2Yq/FVVddddVV/x8QXHXVVVddddW/w+bm5mvXWimlEBFEBJKQhCQkIQlJSAJAEgCSkIQkACQhCUlIQhKSkIQkJCGJiEASkpCEJCICSUhCEpKQhCQkIQlJSAJAEpKQhCQkIQlJSEIS95OEJCQhiftJ4oEk8fzY5n62sY1t9vb2vru1ditXXXXVVf/H3Hfffbf+wz/8w2+/4Ru+If8atgHY3d3lfpKQhCQkIQlJSAJAEpKQhCQkIQlJSAJAEpKQhCQkIQlJ3E8SkpCEJCQhCUncTxKSkIQkJCEJSdxPEpKQhCQkIQlJPJAkJCEJSUhCEg8kCUlIQhKSkMQDSUISkpCEJCTx3CQhCUkcHh5y1VVXXXXV/ysEV1111VVXXfVv1Fp7767riAgiAklIQhKSkIQkJCEJSUhCEpKQhCQkIQkASUhCEpKQBIAkJCEJSUhCEpKICCQhCUlIIiKQhCQkIQlJSEISLwpJSOK5SUISAJJ4UdnGNraxzf7+/vdw1VVXXfV/1Nd//de/z4kTJ/i3uHjxIgAbGxtIQhKSkIQkJAEgCUlIQhKSkIQk7icJSUhCEpKQhCQAJCEJSUhCEpKQxP0kIQlJSEISkpDE/SQhCUlIQhKSkMT9JCEJSUhCEpJ4IElIQhKSkIQkHkgSkpCEJCQhiQeShCQkIQlJSALgvvvuA+DFX/zFX5urrrrqqqv+PyC46qqrrrrqqn+j+Xz+WqUUSilIIiKQREQgCUlIQhKSAJCEJCQBIAlJSEIS95OEJCQhCUlIQhKSiAgkERFIQhKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJB5IEpKQxANJ4n6SeH5sA2Cb+9nm6Ojot4dh+G2uuuqqq/6Puu+++269++67f/sN3/AN+feQhCQkIQlJAEhCEpKQhCQkIQkASUhCEpKQhCQkIQkASUhCEpKQhCQkASAJSUhCEpKQhCTuJwlJSEISkpCEJO4nCUlIQhKSkMT9JCEJSUhCEpKQxP0kIQlJSEISknggSUhCEpKQhCQeSBJHR0cAnDlz5sFcddVVV131/wHBVVddddVVV/0bbW9vv3cphYggIpBERCAJSUhCEpKQhCQkASAJSQBIQhKSkIQkHigikIQkJCEJSUhCEpKQREQQEUhCEhGBJCQBIAlJSEISkpCEJJ6bJJ4fSUjigSTxwtgGwDa2sc3e3t73cNVVV131f9zf//3f//bDHvYwXhjbPLfd3V0ANjY2kIQkJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCUkASEISkpCEJCQhCQBJSEISkpCEJCQBIAlJSEISkpCEJO4nCUlIQhKSkMT9JCEJSUhCEpJ4IElIQhKSkIQk7icJSUhCEpKQxANJQhKSkIQkrrrqqquu+n+F4Kqrrrrqqqv+DcZxfO+u6yilEBFEBBGBJCQhCUlIQhIAkpCEJAAkIQkASUhCEpKQhCQiAklEBBGBJCQhiYhAEhFBRCAJSUQEkpCEJCQREUhCEpJ4bpKQhCTuJwlJSEISDyQJAEm8ILa5n21sY5thGG49Ojr6bq666qqr/o/77d/+7e952MMexr/F7u4uAJubm0hCEpIAkIQkJCEJSUhCEgCSkIQkJCEJSUgCQBKSkIQkJCGJ+0lCEpKQhCQkcT9JSEISkpCEJO4nCUlIQhKSkMT9JCEJSUhCEpK4nyQkIQlJSEISDyQJSUhCEpKQxP0kIQlJSEISkgA4PDzk8PCQa6655sHXXHPNg7nqqquuuur/OoKrrrrqqquu+jfo+/61SilEBJKQhCQkIQlJPJAkJAEgCUlIQhKSAJCEJCQhCUlIQhKSkEREEBFIQhIRgSQkIQlJSCIikIQkJCEJSdxPEpKQhCQeSBLPjyQk8aKwDYBtbANgm8zkwoULn8NVV1111f8D9913363/8A//8NsPe9jD+Ne6ePEiABsbG0hCEpKQhCQkIQlJSEISAJKQhCQkIQlJSAJAEpKQhCQkIQlJSEISkpCEJCQhCQBJSEISkpCEJCQBIAlJSEISkpDE/SQhCUlIQhKSuJ8kJCEJSUhCEveThCQkIQlJSOKBJCEJSUhCEg8kCUkcHh4CcObMmQdz1VVXXXXV/3UEV1111VVXXfVvsLm5+dqlFCKCiEASkpCEJCQhCUlIQhIAkgCQBIAkJCEJAElIQhKSkIQkJCEJSUgiIogIJBERRAQRQUQQEUhCEhFBRCAJAElIQhKSuJ8kJHE/SUhCEpJ4fiTxorKNbTKTw8PD7+aqq6666v+Rl3/5l+ffShKSkIQkJCEJSUhCEpKQhCQkIQlJSEISkgCQhCQkIQlJSEISAJKQhCQkIQlJAEhCEpKQhCQkcT9JSEISkpCEJAAkIQlJSEISkrifJCQhCUlIQhL3k4QkJCEJSUjifpKQhCQkIQlJ3E8SkpCEJCQhCYBrrrnmwVx11VVXXfV/HcFVV1111VVX/RvM5/MHl1KICCQhCUlIAkASkpCEJAAkIQlJSEISAJKQhCQkIQlJSEISkpCEJCKCiCAikEREIImIICKICCQREUQEkpCEJCQhCUlIAkASkrifJCTx3CRxP0m8KGxjG9tkJra5dOnSd3PVVf/LnT179laAM2fOPJirrvoX/MiP/MjnPOxhD+Nfa3d3F4DFYoEkJCGJiEASkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQhCQAJCEJSUhCEpIAkIQkJCEJSUhCEpKQhCQkIQlJSAJAEpKQhCQkIQkASUhCEpKQhCTuJwlJSEISkpDE/SQhCUlIQhKSuJ8kJCEJSUjifvfddx8AZ86ceRBXXXXVVVf9X0flqquuuuqqq/6Vpml671orEUFEEBFIQhKSkIQkJCEJAElIAkASAJKQBIAkJAEgCUlEBJKQREQgCUlIQhKSkMRzk4RtnltEkJkA2EYSALaRBIBtACQBYJv7ScI2AJKwDYAkJPGCSAIgM7l06dLncNVVV131/8jZs2dvPXHiBA9kG0m8KDY2NpDEi0IStvmPYhtJvCC2kcTzYxtJPD+2kcTzYxtJPD+2AZDE82MbAEk8N9sASALg6OgIgGuuuebBXHXVVVdd9X8dlauuuuqqq676V+r7/rVKKUQEkpCEJCQhCUk8kCQkASAJAEkASEISkpCEJCQhCUlIQhKSkEREIAlJSEISz802krCNbTKT+0kCQBIAtpGEbQAkYZv7SQLANgCSsM0LYxvb2MY2q9WKWiuXLl367tbarVx11VVX/T9y33333Qrw0Ic+lKc97Wm8qC5evMj9JPFAkrDNfyfbSOL5sY0knh/bSOL5sY0knh/bSOL5sQ2AJJ6bbQAk8UDL5RKAa6655sFcddVVV131fx3BVVddddVVV/0rbW5uvnYphYhAEpKQhCQAJCEJSUhCEgCSkIQkJCEJAEkASEISkpCEJCQREUgiIpBERBARRAQRQUQQEUQEEUFEIAlJSCIikIQkJAEgCQBJAEjifpKQxANJ4vmRxAtjm0uXLtFaY39//3u46qqrrvp/6O///u9/+2EPexj/FhsbG0hCEpKQhCQiAklIQhKSkEREIAlJSEISkogIJCEJSUhCEpKQhCQkIQlJSEISkpCEJCQhCQBJSEISkpCEJAAkIQlJSEISkgCQhCQkIQlJ3E8SkpCEJCRxP0lIQhKSkMT9JCEJSUhCEveThCQkIQlJSOLw8BCAM2fOPJirrrrqqqv+r6Ny1VVXXXXVVf9Ks9nswRGBJCICSUgCQBKSkIQkJAEgCUkASAJAEpKQhCQkIQlJSEISEYEkIoKIQBIRgSQkIQkASdgGwDa2sY1tMhNJAEhCEgCSsI0kbCMJ29xPEra5nyRsIwnbSMI2L4htbLO3t4ek7x6G4be56qqrrvp/6B/+4R9+++Vf/uVfm3+F3d1dACQREdjmuUnCNv9T2EYSz49tJPGvYRtJPD+2kcTzYxtJPD+2AZDEVVddddVV/29Queqqq6666qp/hXEc37uUQkQQEUhCEpKQhCSemyQkASAJAEkASAJAEgCSkIQkJCGJiCAikEREEBFIQhKSkMT9bGMb29gmM4kIADITSUjCNpKQhG0kYRtJANgGQBIAtvnXsI1tMpOtrS329/e/h6uuuuqq/6f+4R/+4bff8A3fkH+N3d1dAObzOZKQhG2emyRs80CSsM1zk4Rt/qvZRhLPzTYAknhutpHE82MbSTw32wBI4rnZBkASAMvlEoBrrrnmwVx11VVXXfV/HZWrrrrqqquu+leotVJKISKQhCQkIQlJAEhCEpKQhCQAJAEgCQBJSEISkpCEJCQREUhCEpKQREQQEUQEkogIJPHcbJOZ2AYgM5GEJCQhCUnYBkAStpGEbQAkYZvnJgnbSMI2z49tAGxjm/l8/tsXL178ba666qqr/p+67777bj1x4gT/FpKQBIAkbPPcJGGbB5KEbV4UkrDN/xS2kcTzYxtJPDfbSOL5sY0kntvR0REbGxtcc801D77vvvtu5aqrrrrqqv+rqFx11VVXXXXVv0LXda8VEUhCEpKQhCQkIQkASTyQJAAkIQlJSAJAEgCSkIQkJBERRAQRQUQQEUQEEUFEIAlJSOJ+trGNJDKT+9lGEpKQhCQkIQnbSMI2krANgCRsAyAJ2/xLbANgG9vY5tKlS9/DVVddddVVPPShD+XpT386L4qLFy8CMJ/PkcT9JAFgmweShG0eSBK2eSBJ2OZFIQnb/GewjSSem20k8dxsAyCJ52YbSTw32wBI4rnZ5ujoiI2NDc6cOfPg++6771auuuqqq676v4rKVVddddVVV/0rLBaL144IIgJJSAJAEgCSkASAJCQhCQBJSAJAEgCSkIQkJCEJSUhCEpKICCKCiKCUQkQgiYhAEpK4n21sk5nczzYRgW0kIQlJSEISkrDN/SRhGwBJ2AZAEraRhG1eGNtkJsvlkqOjo+/mqquuuur/sbNnzz7jH/7hH3775MmTr/30pz+df62IwDYPJAnbPJAkbPNAkrDNA0nCNg8kCdv8R7ONJP6z2EYSz802knhutgGQxFVXXXXVVf9vEFx11VVXXXXVv8JsNntwRCAJSUhCEgCSAJCEJCRxP0ncTxIAkpAEgCQkIQlJSCIiiAgkERGUUogIIoJSCqUUSimUUiilUEqhlEJEEBFEBBFBRCCJiEASknh+JHE/SdxPEv8atrGNbS5evPg+XHXVVVddddmJEyd4Ue3u7gIwn8+RREQQEUhCEpKICCQhCUlIIiKQhCQkIYmIQBKSkIQkIgJJSEISkogIJCEJSUgiIpCEJCQhiYhAEpKQhCQkIQlJSEISkpCEJCQhCUlIQhKSkIQkJAEgCUlIQhKSAJCEJCQhCUkASEISkpCEJAAkIQlJSEISAJKQhCTOnz8PwIu92Iu9FlddddVVV/1fRuWqq6666qqrXkTTNL12KYWIQBKSAJCEJCQhiQeShCQAJCEJAElIAkASkpCEJCQREUgiIogIIoKIoJRCRBARRAQRwQPZRhKSuJ9tbGMbSUhCEpKQhCQkYRtJ2AZAErb5t7BNZnJ0dPTdXHXVVVddxd///d//9su//Mu/Ni8C20jifpK4nyRscz9JANjmfpKwzQNJwjYPJAnb/GeShG3+o9lGEs/NNpJ4braRxFVXXXXVVf8vUbnqqquuuuqqF5GkB0cEEYEkJCGJ5yYJSUjifpK4nyQkASAJSUhCEpKICCQREUQEEUFEUEohIiilUEohIpCEJABsYxtJSOJ+mYkkJCEJAEk8N0nYRhK2eSBJ2EYStnlBbGMbgN3d3e/mqquuuuqqy86ePfuMkydP8q+xu7vL8ePHWSwWrFYr7icJANvcTxK2uZ8kAGxzP0nY5oEkYZv7ScI2DyQJ2zyQJGzzQJKwzX8k20jiRWEbSTw320jiuS2XSwCuueaaB3PVVVddddX/ZVSuuuqqq6666kVUa32tiEASkpCEJCQhCUlI4oEkIQkASUjifpKQhCQkIQlJSEISkpBEKYVSChFBKYVSCqUUIoKIQBIAtslMJAFgG9tEBLbJTCQhCUlIQhKSkIRt7icJ20jCNs+PJF6QzOTw8PB3uOqq/4Puu+++WwGuueaaB3PVVS+i++6771b+jSQREQDY5n6SsM39JGGbB5KEbe4nCds8kCRscz9J2OaBJGGb/wlsI4kXhW0k8dxss1wuAbjmmmsezFVXXXXVVf+XUbnqqquuuuqqF1HXdUQEkpCEJAAkIYn7SUISDySJ+0lCEg8kCUlIQhIRQUQQEUQEEUEphVIKtVZKKUQEEYEkAGyTmbTWuJ9tIoLMJCLITCQBIInnJgnbvKgkcT/bANjGNsMw/DZXXXXVVVdddvbs2VtPnDjBC2IbSTzQxYsXOX78OIvFgmEYAJAEgG0AJAFgGwBJANjmfpKwzf0kYZsHkoRt7icJ2zyQJGxzP0nY5oEkYZv/araRxIvCNpKQxFVXXXXVVf8vULnqqquuuuqqF9FsNnvtiEASkgCQxP0kIYn7SUIS95OEJO4nCUlIQhKSiAgkERFEBBFBRFBKoZRCrZVSCrVWIoKIQBIAtslMJAFgm4ggIogIMhNJSEISAJKQhCQkYRtJ2EYStpGEbSRhGwBJ2OZ+tgGwjW1s01q7lauuuuqqq57DQx/6UJ72tKfxryGJiADANgCSsM39JGGb+0nCNveThG3uJwnbPJAkbHM/SdjmhZGEbV4YSdjmv5ptJPFAtpEEwHK5BODMmTMP5qqrrrrqqv/LqFx11VVXXXXVi2g+nz84IpCEJCQhCUlI4gWRhCTuJwlJSEISkgCQhCQiAklEBKUUSimUUiilUEqh1kqtlYggIpAEgG0yEwDb2CYziQgiAklIQhKSkMR/lt3d3e/mqquuuuqqZ7nvvvtuve+++24FHsy/kiQkASAJ2wBIAsA2AJIAsA2AJABsAyAJANsASALANveThG3uJwnb3E8StnlhJGGbF0YStvnPYhtJvDCSuOqqq6666v8FKlddddVVV131IsjMB0tCEpKQhCQeSBKSkIQkJCGJ+0lCEg8kCUlIQhKSkEREEBFEBBFBKYVSCrVWaq3UWimlEBFIAiAzaa1xP9tkJpmJJCICSUjifpJ4IEnYRhK2eX4kYZsXxDatNa666qqrrnpOZ8+evfXEiRMP5kW0u7sLwGw2IyKwDYAkAGwDIAkA2wBIwjb3k4Rt7icJ29xPEra5nyRscz9J2OZ+krDN/SRhmxdGErb5z2AbSfxLbCOJ+61WKwCuueaaB3PVVVddddX/ZVSuuuqqq6666kXQWnvtiEASkrifJCTxwkjigSQhCUkASEISkpBERBARRAQRQSmFUgq1Vmqt1FqptVJKoZTC/TITSQDYprVGRBARRASSkIQkJCEJAElIQhK2eSBJ2EYStvmX2MY2y+Xyd7jqqquuuup5nDhxgvvZRhL/kohAEpIAsA2AJABsAyAJ2wBIAsA2AJKwzf0kYZv7ScI295OEbe4nCdvcTxK2uZ8kbHM/SdjmX0MStvnPYBtJPJBtlssli8WCa6655sH33XffrVx11VVXXfV/EZWrrrrqqquuehGUUogIJCEJSUjifpK4nyQk8UCSkIQkACQhCUlIQhKSiAgkIYmIICIopVBKoZRCKYVaK13XUUohIpAEQGYSEQDYppRCa42IQBKSkASAJCQhiX8NSdjmhbHNMAy3ctVVV1111XO47777bj158iQvqt3dXQD6vicisA2AJABsAyAJ2wBIAsA2AJKwDYAkAGwDIAnb3E8StrmfJGxzP0nY5kUlCdvcTxK2uZ8kbHPVVVddddVV/8moXHXVVVddddWLoJTyWhGBJCRxP0lIAkASkrifJCTx3CRxP0kASEISkogIIoKIoJRCRFBKodZKrZVaK7VWaq1EBJKwTWYiCdtkJqUUSim01ogIJCEJSTyQJB5IEraRhG1eVLaxjW0y81auuuqqq656Dvfdd9+tD3rQg/jXkoQkJAFgGwBJANhGEgC2AZCEbQAkAWAbAEnYBkASALYBkIRt7icJ29xPErYBkIRt7icJ2/x3s40kXhjbSGK5XLJYLLjmmmsefN99993KVVddddVV/xdRueqqq6666qoXQSkFSUgCQBKSuJ8kXhBJSEIS95OEJAAkIQlJSEISEUFEEBGUUiilUEqh1krXdXRdRymFUgqSsE1rDUlkJqUUSilEBJKQREQgCUlIQhKSAJCEJCRhmweShG1eVLZprd3KVVddddVVz+Hs2bPP4N9AEhEBgG0kAWAbAEnYBkAStgGQBIBtACRhGwBJ2OZ+krANgCRscz9J2OZ+krANgCRscz9J2OZ+krDNCyIJ29xPEra5nyRs8+9hG0k8P5K46qqrrrrq/zwqV1111VVXXfUi2Nraem1JSEISkgCQxANJQhKSeH4kIYn7SUISkogIIoKIICKICEoplFIopVBrpdZKrZVaK7VWIgJJ2CYikERm0lojIogIIoKIQBKSkIQk/rUkYZt/yTAMt3LVVVddddXzuO+++249ceIEL6rd3V0A+r5HEgCSsA2AJABsIwkA20gCwDYAkrANgCRsAyAJANsASMI2AJKwzf0kYZvnRxK2uZ8kbPP8SMI2/51sIwmA5XLJiRMnOHPmzIO56qqrrrrq/yoqV1111VVXXfUiyEwiAklIAkASAJIAkMQDSUISknhukpCEJCQhCUlIIiKICCKCiKCUQq2VUgq1Vmqt1FqptVJKQRK2aa1hm1IKtVamaSIiiAgkIQlJ3E8SkpDEc5OEbf61bDMMw61cddVVV131H0YSEQGAbSQBYBsASdgGQBK2AZCEbQAkYRsASQDYBkAStgGQhG0AJAFgGwBJ2AZAEra5nyRs8/xIwjb3k4Rt/ieQxFVXXXXVVf/nUbnqqquuuuqqF0Hf9w+WhCSeH0m8MJKQhCQkASAJAElIQhKSkEREEBGUUiilUEqh1kqtlVorXddRayUikIRtJGGbzGSaJiKCiCAikIQkJCEJSTyQJO4nCdsASMI2LwrbAKzX61u56qqrrrrqeZw9e/bWEydO8K8liYjANpKwDYAkbAMgCdsASALANpIAsI0kAGwDIAnbAEjCNgCSsM39JGEbAEnYBkAStrmfJGwDIAnbvCgkYZv/DqvVCoAzZ848iKuuuuqqq/6vonLVVVddddVV/4LMfDCAJAAkIQlJSOLfQhIAkgCQhCQigohAEqUUIoJSCqUUaq3UWqm1Umul1kpEIAnbAGQmpRRKKZRSiAgkERFIQhKSAJDEA0lCErZ5bpKwzQtiGwDbjON4K1ddddVVV71AJ06cYHd3l3/JxYsXAei6DklIwjaSALCNJABsIwkA2wBIwjYAkrANgCRsAyAJ2wBIwjYAkrDN/SRhGwBJ2AZAErZ5fiRhGwBJ2OY/m20kcT/bSOJ+tpHEVVddddVV/69Queqqq6666qp/QWY+OCIAkMRzk8T9JCEJSUji+ZEEgCQkIQlJSEISkogIIoJSCqUUSimUUiilUGullEKtlYhAEpkJgG1aa5RSiAgigohAEpKQBIAkACQhif9IwzA8g6uuuuqqq57HfffddyvAiRMn2N3d5V8jIrCNJABsIwnbAEjCNgCSsA2AJGwDIAnbAEjCNgCSsA2AJGwDIAnbPD+SsA2AJGwDIAnb/EskYZvnRxK2eVHYRhJXXXXVVVdd9UJQueqqq6666qp/ge0HRwSSAJCEJJ6bJJ6bJCQhCUlIAkAS95OEJCQhiYggIogIIoKIoJRCKYVaK6UUaq2UUogIJCEJgNYaEUFEEBFEBJKQhCQAJPGikIRt/jVsk5lcddVVV131b2MbSTyQJCQhCdsASMI2kgCwjSQAbCMJ2wBIwjYAkrANgCRsAyAJ2wBIwjYAkrANgCRs8y+RhG0AJGEbAEnY5r+LbSRxP9us12sArrnmmodw1VVXXXXV/1VUrrrqqquuuupfEBFIQhKSuJ8kJAEgiX8tSUhCEpKQREQgiYggIiilUEqhlEIphVIKpRRKKZRSiAgkIQnblFIopRARRASSkIQkJCEJSUhCEv8Wknh+bAPQWruVq6666qqrnq/77rvvVuDB/CtFBLaRBIBtJGEbAEnYBkAStpEEgG0kYRsASdgGQBK2AZCEbQAkYRsASdgGQBK2AZCEbQAkYZt/K0nY5j+SbSTxwkjiqquuuuqq//OoXHXVVVddddW/QBIRgST+I0jifpIAkIQkJBERRAQRQURQSqGUQimFUgqlFEoplFKICAAkYZvWGhFBRCCJiCAikASAJJ4fSbwgkrDNA0ni+bFNa+1Wrrrqqquuer7Onj1764kTJx789Kc/nX/JxYsXAei6DklIwjYAkrCNJABsIwnbAEjCNgCSsI0kbAMgCdsASMI2AJKwDYAkbAMgCdsASMI2AJKwzQsjCdsASMI2AJKwzX8U20ji+bGNJO5nG0msVisArrnmmgdz1VVXXXXV/1UEV1111VVXXfUvKKU8iGeShCQkcT9JPJAkXhBJAEhCEgCSkEREIImIICKICEopRASlFEopRASlFCKCiCAiiAgigoggIpCEJCICSUhCEpJ4bpKQxHOTxPMjiRfGNldd9f/BfffddyvANddc82Cuuuq/QEQgiYggIpBERCAJSUQEkogIJCGJiEASkogIJBERSEISEYEkJBERSEISEYEkJCEJSUhCEpKQhCQkIQlJSCIikIQkIgJJSEISkpCEJCQhCUlIQhKSkIQkJCEJSUhCEpKQBIAkJCEJSUhCEpKQhCQAJCEJSUhCEpIAkIQkJHHVVVddddX/eVSuuuqqq6666l8g6cGSkMQLIwlJAEhCEpKQhCQk8dwkIQkASUhCEpKICCKCiCAiiAhKKUQEpRQigogAIDORhCQigohAEpK4nyQkIQlJPDdJAEjCNv9WrbVbueqqq6666gU6ceIED2QbSbwwkpCEbQAkYRtJ2AZAEraRhG0AJGEbAEnYRhK2AZCEbV4QSdgGQBK2+Z/CNpIAsI0knh/bSALANpK46qqrrrrq/xUqV1111VVXXfUviAgk8R9FEpKQxP0kARARSCIiiAgiglIKEUEphYggIpBERCAJAElEBBGBJCQhCUlIQhLPTRLPTRK2uZ8kbAMgCdu8ILaxzVVXXXXVVf/xIgLbSMI2AJKwjSRsAyAJ20jCNgCSsM0DScI2DyQJ2wBIwjYviCRs8z+RbSQBYBtJPD+2Wa/XAFxzzTUP5qqrrrrqqv+rqFx11VVXXXXVv6DW+mBJSEIS95OEJAAk8aKQxANJQhKSkIQkIoKIICKICCKCUgoRQUQQEUQEkogIbCMJAElIQhKSAJCEJCTxn20Yhlu56qqrrrrqBbrvvvtu5d9AEveThG0eSBK2eSBJ2OaBJGGbB5KEbV4QSdjmBZGEbf49bCMJANtIAsA2kgCwjSQAbCMJANtIAsA2knh+bCMJANtIQhJXXXXVVVf9n0flqquuuuqqq/6VJPEfQRIAkpCEJCQhCUlEBBFBRBARRAQRQUQgCUlIAkASknhuknggSUjiP5Jt7mebq6666qqrXriTJ0/yryEJSUjCNg8kCds8kCRs80CSsM0DScI2DyQJ2/xXsI0k/rPYRhIAtpEEgG0kcdVVV1111f8bVK666qqrrrrqX9D3/YMl8UCS+LeShCQAJHE/SUhCEpKQREQQEUQEEUFEIAlJSAJAEpK4nyT+JZL4j2QbgHEcb+Wqq6666qoX6L777rt1Z2eHF8Xu7i4ApRQkASAJ20jCNg8kCds8kCRs85/JNpJ4QWwjCQDbSOIFsY0kAGwjCQDbSALANpIAsI0kAGwjCQDbSALANpIAsI0kAGwjiauuuuqqq/7Po3LVVVddddVV/wLbAEhCEs9NEi8KSTw/kpCEJCQhiYggIpBERCAJSUhCEpKQhCRsAyAJSQBIQhIvKkm8MJKwzb/ENlddddVVV71wJ06c4F8rIrDN8yMJ2/xPYhtJvCC2kQSAbSTxgthGEgC2kQSAbSQBYBtJANhGEgC2kQSAbSQBYBtJSOKqq6666qr/86hcddVVV1111b9AEpL4jyaJ50cSkpBERCCJiCAikIQkJPHcbGOb5yaJF0QSL4gkbPOisk1EcNVVV1111b/MNpJ4UUniv4JtJPFAtpHEA9lGEg9kG0k8kG0kAWAbSTyQbSQBYBtJANhGEraRBIBtJAFgG0kA2EYSALaRBIBtJAFgG0kA2EYSAOv1GoAzZ848iKuuuuqqq/6vonLVVVddddVV/4K+7x/Mv5Mknh9JAEhCEpKQhCQkIYmIQBKSiAgkIQlJPD+2sY1tAGzzn0ESz221Wt3KVVddddVV/+Ek8YLYRhLPj20k8fzYRhLPj20k8UC2kcQD2UYSD2QbSTyQbSQBYBtJ2EYSALaRBIBtJGEbSQDYRhIAtpEEgG0kYRsASdgGQBK2AZCEbQAkYRsASVx11VVXXfV/HpWrrrrqqquu+hdI4j+TJAAkIQlJSEISkpBERCAJSUjiudnmqquuuuqq//nOnj37DF4EtpHEA0nihbGNJJ4f20ji+bGNJGwjiQeyjSQeyDaSsI0kAGwjCdtIAsA2krCNJABsIwnbSALANpIAsI0kbCMJANtIAsA2krANgCRsIwkA20gCwDaSALCNJGwDIAnbXHXVVVdd9f8CwVVXXXXVVVf9CzKT/yiSAJDEA0nifpKQhCQkIQlJRASSkIQknpttbGMb2/xHkcRVV1111VX/vSQhCQBJAEgCQBKSkIQkACQBIAkASUgCQBIAkgCQhCQkIQkASQBIQhIAkgCQBIAkJAEgCQBJSAJAEgCSuJ8kACQhCQBJ3E8SAJK4nyTuJwkASdxPEveTxP0kcT9JAEhCEgCSkMRVV1111VX/5xFcddVVV1111YtAEpL4t5DEi0oS95OEJCQhCUlIQhKSkMQLYxvb2OZfSxL/Fra56qqrrrrqP54kACQBIAlJSEISAJIAkASAJAAkIQkASQBIAkASkgCQBIAkACRxP0kASAJAEpIAkASAJO4nCQBJAEhCEgCSuJ8kACRxP0kASOJ+krifJAAkcT9J3E8S95PE/SRxP0lcddVVV131/wbBVVddddVVV/0PIQkASUhCEpKQhCTuJ4n7SQLANraxjW1sYxvbANjGNrYBsM1/BklcddVVV131wp04cYLnxzYvjCQAJCEJAEkASAJAEgCSAJCEJAAkASAJAEncTxIAkgCQBIAk7icJAEk8N0kASOJ+kgCQxHOTxHOTxP0kASCJ+0nifpIAkMT9JHE/SdxPElddddVVV/2/RnDVVVddddVVL0RmPph/J9v8R5CEJJ6bbe5nG9vYxjYAtnkg29zPNv+RhmG4lauuuuqqq/7DSQJAEs9NEgCSAJAEgCSemyQAJAEgiecmCQBJAEjiuUkCQBLPTRLPTRIAkrifJAAkcT9JPDdJ3E8Sz00S95PECyOJ+0niqquuuuqq/xcIrrrqqquuuupfIIn/LpKQhCQkcT9JPJBtbGMb29gGwDYAtrHNfwZJXHXVVVdd9Z9PEgCSAJDEv0QSAJJ4QSQBIIkXRBIAknhukgCQxHOTxHOTxItCEi+MJF4YSVx11VVXXXUVQHDVVVddddVV/4Vs8+8hCUnczzb3s41tbGMb29jGNrYBsM2/RBL3k8QDSUISV1111VVX/c8kCQBJ/EeQxH8FSfxnksQLsl6vAbjmmmsezFVXXXXVVf8XUbnqqquuuuqq/wK2eSDbPDfb/EtsY5sHso1tbGMb29gmM7GNbQBsA2Cbq6666qqr/m+yzX8k2/xfYJurrrrqqqv+3yK46qqrrrrqqheRbZ4f2/xHss39bGMb29jmfrZ5INvYxja2sY1tbGMb2zyQbWzzryGJq6666qqr/v0uXrzI/Wzzn8E2ALb5l9jmX2KbF8Q2L4htnpttnpttnpttXhjbvDC2ueqqq6666iqAylVXXXXVVVf9C2zzH8E2L4htAGwDYBvb2OZ+trGNbQBsYxvb2MY2tslMMhPb2MY2trGNba666qqrrvrvdeLECf4tbANgGwDbANgGwDYviG0AbANgm+dmGwDbvCC2AbDNc7MNgG2em22em22em22em23uZ5vnZpv72eaFsc39bHPVVVddddX/C1Suuuqqq6666r+JbWxjGwDbANjGNraxTWZiG9vYxja2AbCNbWxjm8zENraxjW1sYxsA29jmBZGEbf4lkrjqqquuuuq/jm0AbANgGwDbANjmfrYBsA2AbQBsA2Cb+9kGwDYAtrmfbQBsA2Cb52YbANs8N9sA2OZ+tgGwzf1sA2Cb+9nmudnmfrZ5bra5n23uZ5urrrrqqqv+X6Ny1VVXXXXVVf8BbPOiso1tHsg2ALaxjW1sYxvbZCa2sY1tMhNJZCaZiW0yE9tkJplJZpKZ2AbANv9WkrDNVVddddVV/31sA2AbANsA2AbANvezDYBtAGwDYJv72QbANgC2AbDN/WwDYBsA29zPNgC2uZ9tAGwDYJv72QbANvezDYBt7meb+9kGwDb3s839bANgm/vZ5n62uZ9t7mcbANvMZjMA7rvvvlu56qqrrrrq/yIqV1111VVXXfUvsI1tAGwDYBsA29zPNg9kG9s8kG2em20AbGMb29jGNraxjW0yk8zENraxjW1sk5lkJplJZmIb29jGNraxjW1sY5v/DH3fP5irrrrqqqv+w9nGNgC2uZ9tAGwDYBsA2wDY5n62AbANgG3uZxsA2wDY5n62AbANgG3uZxsA29zPNgC2AbDN/WwDYJv72eZ+tgGwzf1scz/bANjmfra5n23uZxsA29zPNvezzVVXXXXVVf8vULnqqquuuuqqFyIibgWwjW0AbANgm+dmG9vYRhIAtrHNc7ONbQBsYxvb2MY2mUlmkplkJplJZpKZ3M82mUlmkplkJplJZpKZ2MY2trHNA9nGNi+IJGzzopAEgG2uuuqqq6564S5evMgLYxtJPJBtbHM/2wDYBsA2ALa5n20AbANgm/vZBsA2ALa5n20AbANgm/vZBsA2ALa5n20AbHM/2wDY5n62AbDN/WxzP9sA2OZ+trmfbe5nGwDb3M8297PN/WxzP9tcddVVV131/waVq6666qqrrvovYhsA29jmfraxjW1sY5vMJDPJTFprtNbITDKT1hr3s01rjcwkM8lMMpPMJDPJTDIT29jGNs+Pbf4tJHE/SUjiqquuuuqq/3i2sc39bANgGwDbANjmfrYBsA2Abe5nGwDbANjmfrYBsM39bANgm/vZBsA2ALa5n20AbHM/29zPNgC2uZ9t7mcbANvczzb3s839bHM/2wDY5n62uZ9t7mebq6666qqr/l+gctVVV1111VX/Akm8MLZ5UdnmfraxjW1sYxvbZCaZSWaSmWQmmUlrjdYakrifbTKT1hqZSWuNzCQzyUwyE9vY5n62sc2LShK2ueqqq6666j+Gbf61bGMbANvczzYAtgGwzf1sA2AbANvczzYAtrmfbQBsA2Cb+9kGwDb3sw2Abe5nGwDb3M8297MNgG3uZ5v72QbANvezzf1scz/b3M82ALa5n23uZ5v72eZ+trnqqquuuur/PCpXXXXVVVdd9S+wjW1sYxsA2/xHsM39bJOZ2MY2mUlrjdYarTVaa7TWkMT9bNNao7VGa43MJDPJTGxjG9tkJraxzX8USTy3+Xz+YK666qqrrnqBzpw58yD+DTKT+9kGwDYAtrmfbQBscz/bANgGwDb3sw2Abe5nGwDb3M82ALa5n20AbHM/2wDY5n62uZ9t7mcbANvczzb3s839bHM/2wDY5n62uZ9t7meb+9nmfra56qqrrrrq/w0qV1111VVXXfUvGIbhVuDBPJNtAGxjGwDb2OZ+trGNbWxjG9sA2MY2tgGwjW1sY5vMJDPJTDKT1hqtNVprtNaQhG0kYZvWGq01Wmu01mit0VojM8lMMhPb2MY2trGNbQBs8x8lM7nqqquuuuo/nm0AbANgm/vZBsA2ALa5n20AbHM/2wDY5n62AbDN/WwDYJv72eZ+tgGwzf1sA2Cb+9nmfra5n23uZxsA29zPNvezzf1scz/b3M8297PN/WxzP9vczzZXXXXVVVf9v0Dlqquuuuqqq/4FEYFtXhS2sY0knh/bPJBtbGMb29gmM8lMMpPWGq01pmmilEJEAFBKAcA2rTVaa7TWaK2RmWQmmYltbGMb27wwkrANgCRs86KQBIAkJHHVVVddddULd/HiRZ6bbSTxgmQm97MNgG3uZxsA29zPNgC2uZ9tAGxzP9vczzYAtrmfbQBscz/b3M82ALa5n23uZ5v72eZ+trmfbQBscz/b3M8297PN/WxzP9vczzYPZJv72eZ+trnqqquuuur/PCpXXXXVVVdd9S8YhuFW2w+2jW2em23+NWxjG9vYxja2sU1mYpvMpLVGa43WGq01pmkiIgCwDYBtWmtM08Q0TbTWaK2RmWQmmYltbGMb29jmfrZ5YSRhm/tJQhLPTRJXXXXVVVf957ENgG0AbHM/2wDY5n62AbDN/WwDYJv72eZ+tgGwzf1scz/bANjmfra5n23uZ5v72eZ+tgGwzf1scz/b3M8297PN/WxzP9s8kG3uZ5v72eZ+trnfbDYD4OzZs8/gqquuuuqq/6uoXHXVVVddddW/wDYPZBvbANgGwDbPj21sYxvbPJBtAGxjm8zENplJa43MpLVGa41pmiilME0TALYBsE1mMk0TrTVaa7TWaK2RmWQmmYltbGMbANv8a0nCNi9M3/cP5qqrrrrqqhfommuueTD/BpkJgG3uZ5v72QbANvezDYBt7meb+9kGwDb3s839bHM/29zPNgC2uZ9t7meb+9nmfra5n23uZ5v72eZ+trmfbe5nm/vZ5oFscz/b3M82D2Sbq6666qqr/t+gctVVV1111VX/AtvYxja2uZ9tHsg2trGNbWwjiQeyjW1sA2Ab22QmtslMMpPMpLVGa41pmiilUEpBEgCZiSRs01qjtUZrjdYarTUyk9YamYltbGMb29gGwDYvKknY5l8iiauuuuqqq/5jHD9+HIBpmshM7meb+9kGwDb3s839bHM/2wDY5n62uZ9t7meb+9nmfrYBsM39bHM/29zPNvezzf1scz/b3M82D2Sb+9nmfra5n20eyDb3s839bPNAtgGwzVVXXXXVVf/nUbnqqquuuuqqf0Fm3mob29zPNvezzb+WbWxjGwDb2MY2mUlm0lqjtUZrjWmaiAgkYZtSCvdrrdFaY5ompmkiM2mtkZnYJjOxzYtKEraRhG2eH0k8N0ksFosHc9VVV1111Qt18eJFXhS2uZ9tbANgm/vZ5n62uZ9t7meb+9kGwDb3s839bHM/29zPNvezzf1scz/b3M8297PNA9nmfra5n23uZ5v72eaBbHM/29zPNg9kmweyzf1sA2Cbq6666qqr/s+jctVVV1111VX/AtvYBsA2tgGwjW0AbPP82MY2trGNbWwDYBvb2MY2mUlmkplkJplJa41pmiilME0TkrBNZiIJ22QmrTWmaaK1RmuNzCQzyUxsYxvb2MY2tnlRScI2LwrbXHXVVVdd9YJdc801D77rrrv417BNZmKb+9nmfra5n23uZ5v72QbANvezzQPZ5n62uZ9t7meb+9nmfra5n23uZ5sHss39bHM/29zPNg9km/vZ5oFscz/bPJBtHsg297MNwGw2A+C+++67lauuuuqqq/6vonLVVVddddVV/4LW2q22sc0LYxvb2MY2tpHE82Ob+9nGNrbJTDKTzKS1RmuN1hrTNCEJSdimlML9MpPWGq01Wmu01shMMpPMxDa2sY1tnh9J2OZfSxIAkrhfRDw4M2/lqquuuuqq5+vixYsA2EYSL4rMxDb3s839bHM/29zPNvezzQPZ5n62uZ9t7meb+9nmfra5n20eyDb3s839bPNAtrmfbR7INvezzQPZ5n62eSDbPJBt7mebB7INgG2uuuqqq676P4/KVVddddVVV/0LWmtkJraxjW1scz/bvDC2sY1tbGMbANvYxja2sY1tMpPWGqUUWmu01pimCUlIwjaZiSRsY5vWGtM00VqjtUZrjczENplJZmIbANu8IJKwjSRsIwnbvDCSAJAEQEQ8ODNv5aqrrrrqqudx5syZB/MiOnHiBPfLTGxzP9s8kG3uZ5v72eZ+trmfbR7INvezzf1scz/bPJBt7mebB7LN/WxzP9s8kG0eyDb3s80D2eaBbHM/2zyQbR7INg9kG4D5fA7AfffddytXXXXVVVf9X0Xlqquuuuqqq/5lz7CNbWxzP9vYBsA2z802tpHEc7ONbWxjG9tkJpmJbTKT1hoRQWuNiEASALaJCO5nm9YarTVaa7TWyEwyk8zENraxjW0AbPPvJYnnJomI4Kqrrrrqqn8b20jigYZhIDOxzQPZ5n62uZ9tHsg297PN/WzzQLa5n20eyDb3s839bPNAtnkg29zPNg9km/vZ5oFs80C2eSDbPJBtHsg2D2SbB7INgG2uuuqqq676P4/KVVddddVVV/3LbrWNbQBsY5v72QbANraxjW0kcT/b2MY2trENgG1sYxvb2CYzyUwyk8xkmiYkIQkA20QEkgCwTWuN1hqtNTKT1hqZSWZiG9vYBsA2ALZ5IEnYRhK2kYRtACQhCUlI4vmRhCRqrQ8ehoGrrrrqqque1zXXXPPgCxcu8K+VmQDY5n62uZ9tHsg297PNA9nmfrZ5INvczzYPZJsHss39bPNAtnkg29zPNg9kmweyzQPZ5oFs80C2eSDbPJBtHsg297PNVVddddVV/+dRueqqq6666qp/gW0yE9vYxjYAtrHNC2Mb20jiudnGNraxjW0yk8wkM2mtERFIIiKQhG1sExFIAsA2mUlrjdYarTUyk8zENpmJbQBs89wkYRsASdhGErYBkIRtXlS11gdx1VVXXXXVC3Tx4kX+NWyTmQDY5n62eSDb3M82D2SbB7LN/WzzQLZ5INvczzYPZJsHss0D2eaBbPNAtnkg2zyQbR7INg9km+dmmweyzQPZ5qqrrrrqqv9XqFx11VVXXXXVvyAibm2tYRvbANjmgWxjG9vYxja2kQSAbWxjG9vYxja2sY1tbGObzCQzyUxaa0giIgCwjW0iAkkA2CYzyUxaa7TWyExsk5nYxja2eUEkYRsASdgGQBK2eW6SeCBJAEiilMJVV1111VX/fsePHwdgGAYyEwDb3M82D2SbB7LNA9nmgWxzP9s8kG0eyDYPZJsHss0D2eaBbPPcbPNAtnkg2zyQbR7INs/NNg9km+dmm/vN53MA7rvvvqdz1VVXXXXV/1VUrrrqqquuuupfEBG32sY2trGNbWxjG9u8ILaxjSTuZxvb2AbANrbJTCQREWQmmUlmkplM08T9bBMRSALANrZprZGZZCaZSWZiG9vYxja2sc3zIwnb3E8StvmXSAJAEpKYzWYP5qqrrrrqqudxzTXXPBjg4sWLSOJFZZvMBMA2D2SbB7LNA9nmgWzzQLZ5INs8kG0eyDYPZJsHss1zs80D2eaBbPPcbPNAtnkg2zw32zw32zyQbR7INlddddVVV/2fR+Wqq6666qqrXgTTNN1q+8G2sQ2AbQBsYxvb3M82tpEEgG1sYxtJ3M82trGNbWyTmUgiM2mtIYn72aaUQmYiCQDb2CYzyUxaa2QmmUlmYhvb2OZfIgkASdgGQBKSkMRzk8Rz67ruwVx11f9x11xzzYMB7rvvvlu56qoX0ZkzZx7Mv4FtMhMA2zyQbR7INs/NNg9kmweyzQPZ5rnZ5oFs80C2eW62eSDbPDfbPJBtnpttHsg2z802z802z802D7RYLAA4e/bsM7jqqquuuur/KipXXXXVVVdd9SJord2amQ+2jW1sA2CbB7KNbSQBYBvbSALANraxjW1sY5vMRBK2yUwkkZlIorXGA9lGEpK4n20yk8wkM8lMMhPb2OZ+trmfJJ4f20hCEpKwzf0kcT9J3E8SAJKICK666qqrrnpe11xzzYMvXrzIc7ONJF4Q22Qm97PNA9nmgWzz3GzzQLZ5brZ5INs8N9s8kG2em20eyDbPzTbPzTbPzTYPZJvnZpvnZpvnZpvnZpurrrrqqqv+z6Ny1VVXXXXVVS+C1hq2sY1tbGMb29jGNraxDYBtbCMJANvYRhIAtrGNbWxjG9tkJpKwTWYiCUlI4n62kYQk7mebzMQ2mUlmkplkJpmJbWzzgkgCwDaSsM0LIonnRxIAfd8/mKuuuuqqq56vCxcu8KI6ceIEAKvViszkfrZ5brZ5INs8N9s8N9s8N9s8kG2em22em22em20eyDbPzTbPzTbPzTbPzTbPj22em22e22KxAODs2bO3ctVVV1111f9VVK666qqrrrrqRdBa++3MfG3b2MY2trmfbe5nG0kA2MY2krCNbWwjCdvYxja2yUwkkZlIQhKSuJ9tADKTiEAS97ONbTIT22QmtrGNbWzz/EgCwDYAkgCQhCQkIQlJvCgkIYmrrrrqqque15kzZx508eJFXhS2uZ9tMpMHss1zs81zs81zs81zs81zs81zs81zs81zs81zs81zs81zs81zs81zs83zY5vnZpurrrrqqqv+36Jy1VVXXXXVVS+CcRzJTGzzQLaxDYBtbGMb29hGEgC2kQSAbWwjCdvYxja2yUwkkZlIQhIAkrhfRGAbSdzPNraxjW0yk8zENgC2sY1t7icJ20jiuUlCEpK4nyTuJ4n7SeJ+kpjNZg/mqquuuuqq53HNNdc8mH+jzOS52eb5sc1zs81zs81zs81zs81zs83zY5vnZpvnZpvnxzbPzTbPj22em22eH9s8N9ssFgsA7rvvvlu56qqrrrrq/yoqV1111VVXXfWi+Z3WGpmJbWxjG9vYxjbPj21sIwnb2EYStrGNJGxjG9vYxja2yUwkcT/b2MY2kpDEA9nGNrbJTGxjG9s8N0nYRhLPjyTuJ4n7SeKBJAEgCUkARAQR8eDMvJWrrrrqqquew4ULF3hRHT9+HIDlcoltAGzz3Gzz3Gzz/Njmudnm+bHNc7PNc7PN82Ob58c2z802z49tnh/bPDfbPD+2ueqqq6666v81KlddddVVV131IoiIWzMT29jGNrZ5INvYxja2sY0kbGMbSdjGNgC2sQ2AbWxjm8xEErbJTJ6bbSICAEnczza2sY1tbGMb29jmuUnihZGEJAAkIQkASbwgkgAopTw4M2/lqquuuuqqZ7nmmmse/Pd///f8a9kmM7mfbZ4f2zw/tnlutnl+bPP82Oa52eb5sc3zY5vnxzbPj22eH9s8P7Z5fmzz/NhmY2MDgPvuu+9Wrrrqqquu+r+KylVXXXXVVVe9iGyTmWQmtrGNbWxjG9s8N9tIwja2kYRtJGEb20jCNraxjW0ykxdEEraRBIAkbANgGwDb2MY2tgGwzQNJ4oEkkZkASEISkpCEJJ6bJB5IEgCSiAiuuuqqq656TmfOnHkwz2QbSbwobJOZPDfbPD+2eX5s8/zY5vmxzfNjm+fHNs+PbZ4f2zw/tnlBbPP82OYFsc3zY5urrrrqqqv+X6By1VVXXXXVVS+CiLh1mqZbbT/YNrYBsA2AbQBsYxvb2EYStpGEbWwjCdtIwja2AbCNbWxjG9vYxja2yUwAJCEJSQBIwjb3s41tAGwDYJv7SeJ+kgCQhG0igswkIgCwjSTuJwkASdxPEpIAkATAbDZ7rfV6/dtcddVVV131HC5evMgLYhtJ3O/EiRMALJdLbGOb58c2L4htnh/bPD+2eX5s84LY5vmxzQtim+fHNi+IbV4Q2zw/tnlBFosFAPfdd9+tXHXVVVdd9X8Zlauuuuqqq656EU3TdGtmPtg2trGNbWwDYJsHso1tJGEbSdjGNgC2AbCNJGxjG9vYxjaZyf0kASAJSUgCQBL3sw2AbQBs8/xIAkAS95OEbe5nG0lIQhKSeG6SeG6SKKVw1VVXXXXVc7rmmmsefOHCBV5Ux48fByAzyUzuZ5sXxDYviG2eH9u8ILZ5QWzz/NjmBbHNC2KbF8Q2L4htXhDbvCCLxQKAs2fP3spVV1111VX/l1G56qqrrrrqqhdRa+3WzMQ2trGNbWxjG9vYxja2kQSAbSRhG0nYRhK2kYRtbANgG9vYJjOJCGxjG4DMJCIAsI0kbPPcbPP8SEISkpCEJCQBYBvbANhGEpJ4bpJ4fiQBIInZbPZgrrrqqquuepZrrrnmwfwbLZdLMpMXxDYviG1eENu8ILZ5QWzzgtjmBbHNC2KbF8Q2L4xtXhDbvCAbGxsA3Hfffbdy1VVXXXXV/2VUrrrqqquuuupFNE3TrZlJZmIb2wDYxjYAtrGNbWxjG0nYRhK2kYRtJGEbANtIwja2sQ2AbWyTmUQEAJmJJCRhG0k8N9s8kCQeSBIRgSQkAWAb29hGEpKQhCQkIQlJ3E8Sz00SAF3XPZirrrrqqque5cyZMw8GuHjxIpL418hMbHM/27wwtnlBbPOC2OaFsc0LY5sXxDYviG1eGNu8ILZ5YWzzgtjmqquuuuqq/xeoXHXVVVddddWLKDOfkZnYxja2sY1tbGMb29gGwDa2sQ2AbSRhGwDbAEjCNraRhG1sA2Ab2wBkJhHB/WwjCdu8MJKwjSQkERFIQhKSkIQkbJOZRAS2yUwkIYnnJon7SUIS95NERHDVVVddddWzXXPNNQ/mX+nEiRMAHB0dYZsXxjYviG1eGNu8MLZ5YWzzwtjmBbHNC2ObF8Y2L4xtXpDNzU0A7rvvvlu56qqrrrrq/zIqV1111VVXXfUisn2rbWxjG9vY5n62uZ9tJGEb20jCNrYBkIRtAGwDYBvbANgGwDaZiSQigsxEEpIAkASAJJ4fSdhGEpK4nyQkERFIAkASALaRhCTuJ4n7SeJ+krifJCQhidls9mCuuuqqq656DhcvXuTfIjN5QWzzwtjmX2KbF8Y2L4xtXhjbvDC2eWFs88LY5l9im+e2sbEBwNmzZ5/BVVddddVV/5dRueqqq6666qoXUUTcahvb2MY2ALaxDYBtbGMb20gCwDaSsA2Abe5nGwDb2AYgM4kIMpOIACAzkYQkJCEJ20jCNpJ4IEnYRhIPJAlJSEISkpCEbSQhCUlIQhKSAJCEJF4U8/n8wVx11VVXXfUcLly4wHOzjSReGNs8P7b5l9jmX2KbF8Y2L4xt/iW2eWFs8y+xzQtjm3+Jba666qqrrvp/h8pVV1111VVXvYgi4tbMJDOxDYBt7meb52Yb20jCNpIAsI0kAGwjCdvYBkAStgGwzb+GJABsI4kHkgSAJCQhCUlIAkASkgCQBIAkJPHcJHE/SQBIQhIAEfHgzLyVq6666qqrOHPmzIMuXrzIi8I2J0+eBODo6AjbPD+2+ZfY5l9im3+JbV4Y2/xLbPMvsc2/xDb/Etu8MLbZ2NgA4L777ruVq6666qqr/i+jctVVV1111VX/CsMw/PbGxsZr28Y2trGNbQBsYxvb2EYSALaRhG0AJGEbAEnYRhK2kYRtACRhmxdEEraRhG0kYRsASbwoJAEgCUlIQhIAkrifJAAkIYn7SQJAEveThCSuuur/ooc//OFbPJMkbHPVVf+Sa6655sG2eVEdP34cgOVyiW2eH9v8S2zzorDNv8Q2/xLb/Ets8y+xzb/ENi8K2zw/m5ubAJw9e/ZWrrrqqquu+r+M4Kqrrrrqqqv+FWyTmdjGNg9km+dmG9sA2OZ+trENgG0AbANgG9sA2MY2trENgG1sYxvb2MY2trGNbe5nmxdGEgCSuJ8kJCEJSUhCEgCSeCBJPDdJAETEg7nqqv9jPvdzP/ervuRLvmSfZ/rxH/9x7+zsBFdd9S+45pprHnzx4kVeVCdOnADg6OgI29jGNraxjW1sYxvb2MY2trGNbWwDYBvb2MY2trGNbWxjGwDb2MY2trGNbWxjm/vZxja2sY1tbGOb+9nGNraxjW1sY5sHso1tbGMb29jmgWxjG9vYxja2eSDb2MY2trGNbWzzQLaxjW02NzcBuO+++27lqquuuuqq/8sIrrrqqquuuupfYRzH37aNbQBsYxvbANjmfra5n20AbGOb+9kGwDYAtrENgG1sY5v72eZ+trENgG0AbHM/2wDY5kUhCUkASEISkrifJB5IEs9NEgCSKKVw1VX/17zYi73YR/NcvuRLvuSpXHXVv+DMmTMPvnDhAv9atrGNbWxjG9vY5n62sY1tbGMb29jGNvezjW1sYxvb2MY2trmfbWxjG9vYxja2sc39bGMb29jGNraxzQPZxja2sY1tbGObB7KNbWxjG9vY5oFsYxvb2MY2tnlutrGNbWxjG9tcddVVV131/xKVq6666qqrrvpXGMeRzMQ2tgGwDYBtAGxjG0kA2EYSD2QbSQDYRhK2kQSAbSRxP9s8N0m8ILaRxAPZ5oEkASAJSdhGEpKQhCQAJCEJAElIQhIPJAlJAEhCErPZ7LVWq9Vvc9VVV1111b+LbV4UtnlR2OZFZZsXhW1eFLZ5UdjmRWGbF4VtHuiaa64B4L777ruVq6666qqr/q+jctVVV1111VX/ChHxO5mJbWxjGwDb/EtsI4n72UYSD2QbSQDYBkASL4xtJGEbSTw/tpGEbV4QSQBIQhIAkpAEgCSeH0k8P6UUrrrqqquuuuKaa6558MWLF3lRHT9+HIDDw0MAbPOvYZsXhW1eVLZ5UdnmRWGbF5VtXhS2+Zdsbm4C8A//8A+/zVVXXXXVVf/XEVx11VVXXXXVv86ttrGNbWxjm/vZxjYAtrENgG0AbPNAtgGwzf1s80C2eUFs89xs868lCUkASAJAEpIAkMTzI4kHkoQkJNH3/YO56qr/Y97u7d5OPJcP+ZAPeQhXXfUiuHDhAi+IbR7oxIkTABwdHWGb52Yb29jGNraxjW1s80C2sY1tbGMb29jmudnGNraxjW1sY5vnZhvb2MY2trGNbZ6bbWxjG9vYxjbPj21sYxvb2MY2z802trGNbWxjm+fHNraxjW2uuuqqq676f4Xgqquuuuqqq/6VbGMb29zPNra5n21eENs8P7a5n20eyDa2sY1tbGOb+9nm+bHN82Mb2zw3SUhCEpIAkIQkJCEJSUhCEg8kiftJou/7B3PVVf8HfciHfMhDAO67775b3+7t3k5cddW/4MyZMw8CuHjxIgC2eVHZxja2sY1tbPPcbGMb29jGNraxzfNjG9vYxja2sc3zYxvb2MY2trHN82Mb29jGNraxzfNjG9vYxja2sc3zYxvb2MY2tnlBbGMb29jGNs9tc3MTgPvuu+9Wrrrqqquu+r+OylVXXXXVVVf9K0TEra21W20/GMA2trmfbZ6bbSRhG0kA2EYSALaRBIBtJAFgG0n8S2wjCQDbSALANpKwjSTuZ5sHkgSAJO4nCUlIQhIvjCQk8dwkcdVVV111FVxzzTUP5l/pxIkTABwdHQFgm38N2/xr2OZfwzYvKtu8qGzzorLNi8o2D7S5uQnA2bNnn8FVV1111VX/11G56qqrrrrqqn+lcRxvzcwH28Y2ALaxDYBtAGxjG0nczzaSALCNJABsIwkA20gCwDYAknh+bCMJANtIAsA2krifbWxjm3+JJCQhCUkASEISknggSTyQJCQhidls9mCuuuqqq67immuuefCFCxf41zh+/DgAh4eH2Oa52eZfyzb/Grb517DNi8o2/xq2eVHZ5l9y7bXXAnDffffdylVXXXXVVf/XUbnqqquuuuqqf6XMJDOxDYBtnpttJHE/20jiudlGEgC2kcTzYxtJPJBtJPEfQRIAkpCEJAAkIQlJ3E8SkpDECyOJq6666qqrrrh48SL/FraxzYvKNv8atvnXsM2/hm3+NWzzorLNv4Zt7mcbgLNnz97KVVddddVV/9dRueqqq6666qp/pdbab9t+bdvYBsA2ALZ5braRxP1sI4n72UYSD2QbSTyQbR5IEvezjSQAbCOJfy1J2EYSAJKQhCQAJCGJ50cSkgCQhCRms9mDueqqq666ijNnzjz4woUL/GucOHECgMPDQ56bbf61bPOvZZt/Ddv8a9jmRWWbfw3bvDBbW1sA3Hfffbdy1VVXXXXV/3UEV1111VVXXfWvNE3TMzIT29jGNgC2AbCNbQBscz/b3M82z49t7mebfy3b3M82trHNA9nGNs+PJAAkIQlJSEIS95PEA0nifpJ4oK7rXpurrrrqqv/nrrnmmgfzIrLNc7ONbWxjmxeFbWxjG9u8KGxjG9vY5l9iG9vYxjYvCtvYxjb/EtvYxjYvCtvYxjYvzObmJgD33XffrVx11VVXXfX/AZWrrrrqqquu+leyfWtmkpnYxja2AbDN/WwjCQDbSMI2kgCwjSQAbCMJANtIAsA2AJJ4QWwjiX+JbV4QSUgCQBKSkMT9JCEJSQBIQhKSeH4kIYmI4KqrrrrqKrh48SLPzTaSeG4nTpwA4PDwENu8qGzzr2Wbfy3b/GvY5l/DNi8q2/xrXXvttQD8wz/8w29z1VVXXXXV/wcEV1111VVXXfWvFBG32sY2D2Sbfy3b3M8297PNA9nGNg9kG9vczzb3s80D2QbANvezzfMjCUlIQhKSAJAEgCSeH0kASAJAErXWB3PVVVdd9f/cmTNnHnzhwgVeVMePHwfg8PCQf4ltbGObF5VtbGObF5VtbGObF4VtbGObF4VtbGObF4VtbPOiso1tbHPVVVddddX/O1Suuuqqq6666l8pIm4FsI1tbGOb+9nGNgC2sY0kbCMJ20jifraRBIBtJAFgG0k8kG3uJ4nnxzaS+NeSxP0kIQlJSEISAJIAkMQDSQJAEgCSkESt9UFcddVVV/0/d8011zyYf4UTJ04AcHR0xPNjm38L2/xr2OZfwzb/Grb517DNv5Ztntu1114LwD/8wz/8DlddddVVV/1/QHDVVVddddVV/wbjON5qG9vYBsA2trmfbV4Q2zyQbZ4f27wobPOiss2/RBKSkIQkJCEJSUgCQBKSkMQDSQJAEqUUrrrq/5ozZ848GODs2bO3ctVVL6KLFy/y72Ub2/xr2cY2Lyrb2OZfwzb/Grb517DNv4ZtbPP8bG1tcdVVV1111f8rBFddddVVV131b9BauzUzsQ2Abe5nm+dmGwDb3M82z49tHsg2L4xt7meb+9nGNrYBsM39bPP8SEISkpCEJCQhCUm8qCQBMJvNHsxVV1111f9z11xzzYMvXLjAi+rEiRMAHB4ecj/b/GvZxjb/Grb517CNbV5UtrHNi8o2tvnXsM0Ls7m5CcA//MM//DZXXXXVVVf9f0Bw1VVXXXXVVf8G0zTdahvb2MY2trENgG0AbGObB7LN/WxzP9vczzYPZBvb2OZ+trHNv4ZtHsg295OEJCQhCUlIQhKSkIQkJCGJB5KEJCRxP0l0Xfdgrrrqqqv+H7vmmmsezL/ANg904sQJAA4PDwGwzb+Wbf61bPOvYZt/Ddv8a9jmX8s2/5KtrS0A7rvvvlu56qqrrrrq/wOCq6666qqrrvo3mKbp1szENrZ5fmzzQLZ5fmxzP9vczzbPj21s89xscz/bPJBtnptt7ieJ+0kCQBKSkMTzIwlJSOKBJCEJSUQEV1111VX/n505c+bBABcuXOBFdfz4cQAODw+xzb+Wbf41bGObfw3b/GvY5l/DNv9atvmXbG1tAXDffffdylVXXXXVVf9fEFx11VVXXXXVv83vZCa2sY1tbGMb2zw32wDYBsA2D2Sb+9nmfrZ5UdjmfrZ5YWzzgkgCQBKSkIQkJCEJSUhCEi+Kvu8fzFVXXXXV/2PXXHPNg/lXOnHiBACHh4f8a9jGNv8atvnXss2/hm3+NWzzr2Eb27worr32WgD+4R/+4be56qqrrrrq/wuCq6666qqrrvo3yExsY5vnxza2sY1tnh/bPJBt7meb+9nGNi+IbV4Q29zPNrYBsM1zkwSAJCQhCUlIQhKSkMT9JPFAkpAEgCQkERFcddVVV/1/d/HiRe5nm/8MtvnXss2/hm1s869hm38N2/xr2OZfwzZXXXXVVVf9v0Plqquuuuqqq/4NIuJW29jGNraxjW1s8/zYRhK2kQSAbQAk8S+xzfMjifvZRhIAtpGEbSTxopAEgCQkIQlJSEISAJKQBIAkJCGJ+0nifn3fP5irrrrqqv/nLly4wL/GiRMnADg8PORFYZt/Ldv8a9jmX8s2/xq2+dewzb+Gba677joA/uEf/uF3uOqqq6666v8Lgquuuuqqq676N4iIW22TmdjGNg9kmweyzQPZ5oFsA2Cb+9nmX8M297PNA9nmudnmBZGEJCQhCUkASOJFJQlJlFIezFVXXXXV/1Nnzpx50IULF3hRnThxgn8N2/xr2eZfwzb/Wrb517DNv4Zt/jVsA7C5uclVV1111VX/7xBcddVVV1111b/Rer3+bdvYBsA2trENgG1sY5v72eZfYpv72cY2/xLbvKhsYxsA2zyQJCQhCUlIQhKSkIQkJCEJSbwgkgCQRK31wVx11VVX/T91zTXXPJgXkW1OnDgBwH333ce/xDb/Wrb517DNv4ZtbPOvYZt/Ddv8a9jmfltbWwD8wz/8w29z1VVXXXXV/xcEV1111VVXXfVvZJvMxDa2sc2/hm1scz/b3M82D2SbF8Q2D2Sb58c2tnlutgGQBIAkJCEJSUhCEpKQhCTuJwlJSEISkpAEgCQkIYmrrrrqqv/PLly4wIvqxIkTABweHvLC2OZfyzb/Grb517DNv5Zt/jVs869hmwfa2toC4L777ruVq6666qqr/r8guOqqq6666qp/o2mafts2trENgG0AbPPcbANgmweyzf1scz/bPJBtbGMb29jGNg9kmweyjW3+tSQhiYhAEpKQhCQAJCGJF8V8Pn8trrrqqqv+n3qxF3ux17548SLPzTb/Vrb517LNv4Zt/jVs869lm38N2/xr2OaBtra2ADh79uwzuOqqq6666v8Tgquuuuqqq676NxrHkczENgC2AbANgG1sYxvbPJBtHsg297PN/Wzzb2Wb+9nmfrYBsM1zk4QkACQhCUlIQhIAkrifJJ4fSUhCEhHBVVddddVVL5rjx48DcHh4yHOzjW3+tWzzr2Gbfw3b/GvZ5l/DNv8atnlu1157LQB///d//9tcddVVV131/wnBVVddddVVV/3b/U5mYhvbANgGwDbPj23uZ5sHss3zY5sXhW3uZ5sXxjYAtnlukpCEJCQhCUlIQhKSkIQkACQhCUlIQhL3k8RsNnswV131f8g111zzYID77rvvVq666l9wzTXXPPjChQu8qE6cOAHA0dERD2Sbfwvb/GvY5l/DNv9atvnXsM2/hm2uuuqqq6666gEIrrrqqquuuurfKCJutY1tbGMbANsA2OaBbANgm3+JbR7INrZ5fmxjm/vZ5vmxjW1eFJKQhCQigohAEpKQhCQAJPH8SEISAH3fP5irrrrqqv/HLl68yL+Hbf4tbPOvYZt/Ddv8a9nmX8M2/xq2eUGuu+46AP7hH/7ht7nqqquuuur/EypXXXXVVVdd9e9kG9vYxjYPZBvb2EYSz802AJIAsI0kAGwjiQeyzXOTxL+FbQBsYxsASUgCQBKSkIQkJCGJ+0niXyKJiOCqq6666v+ja6655sEAFy5c4EV14sQJAA4PDwGwzb+Fbf41bPOfzTb/Grb517DNVVddddVVVz0fBFddddVVV131bxQRt47jeGtmYpv72cY2z49tAGzzQLa5n23uZ5t/Dds8kG1sY5v72cY2ALZ5fiQhCUlIQhKSkIQkJHE/SUhCEpKQxAP1ff9grrrqqqv+Hzpz5syD+RfY5oFOnDgBwOHhIbb5t7DNv4Zt/rVs869hm38N2/xr2OZfcu211wLwD//wD7/NVVddddVV/58QXHXVVVddddW/wzRNt9rGNraxzf1s80C2eSDbPJBt7meb+9nmRWGbB7LNv4UkACQhCUlIQhKSkIQkJCGJ50cSkpCEJK666qqr/j+65pprHnzhwgX+NU6cOAHAwcEB/xa2+dewzb+Wbf41bPOvYZt/Ddu8KLa2tgC47777buWqq6666qr/Twiuuuqqq6666t+htXZrZmIb2wDYxjYAtrGNbe5nm/vZ5oFscz/b3M82tnl+bGObB7LNc7ONbe5nmxdEEpKQhCQkERFIQhIAkgCQxAsiidls9mCuuuqqq/6funDhArb5r2Cbfw3b/GvZ5l/DNv8atvnXsM2LYmtrC4D77rvvVq666qqrrvr/huCqq6666qqr/h1aa7faxjYAtnlhbANgm/vZ5oFscz/bPJBtbGMb29jmudnmhbGNbQBsY5vnJglJRAQRgSQkIQlJSAJAEgCSkIQk7ieJ+5VSHsxVV1111f8zZ86cedDFixd5UZ04cQKAw8ND/rVs869hm38t2/xr2OZfwzb/GrZ5UV177bUA/MM//MNvc9VVV1111f83BFddddVVV13172D7dzIT29jGNraxjW0eyDYviG1eENu8qGzzQLaxzb/ENgCSkASAJCQhiYhAEpKQhCQk8fxIQhIAkpBErfXBXHXVVVf9P3PNNdc8mH+FEydOAHB4eMi/hm3+NWzzr2Wbfw3b/GvY5l/DNlddddVVV131IiK46qqrrrrqqn+HzMQ2trHNc7ONbWxzP9sA2OaBbGMbANs8kG3+JbZ5INvczzbPzTYviCQkIQlJSEISkpCEJAAkIYkXRhKSuOqqq676/+jChQu8KGxz4sQJAA4PD3lR2eY/m23+NWzzn8k2/xq2ufbaawH4h3/4h9/hqquuuuqq/28IrrrqqquuuurfISJuzUxsYxvb2AbANv8S27wgtnkg27wgtnkg2zw329jGNrYBsI1tHkgSkgCQhCQkIQlJSAJAEveThCQeSBKSkMR8Pn8trrrqqqv+n7nmmmsefOHCBe5nm/9ItvnXss2/hm3+NWzzr2WbF5Vt/jVsc9VVV1111f97BFddddVVV1317xARt9rGNra5n20AbPNAtgGwzf1s80C2uZ9tHsg2trGNbWxjm38L2zyQbR5IEpKICCKCiEASkpCEJCQhiftJQhKSeKBSClddddVV/9+cOXPmwfwrnDhxAoDDw0P+Jbb517LNv4Zt/jVs869lm/8strnfddddB8A//MM//DZXXXXVVVf9f0Nw1VVXXXXVVf9OwzD8tm0AbGObB7KNbWzzgtjmgWxzP9v8a9jmRWUbANs8kCQkIQlJSEISEYEkJAEgCQBJPDdJAEii7/sHc9VVV131/9CFCxd4UZ04cQKAw8NDXhjb/GvZ5l/DNv8atvnXss2/hm1eVLZ5oK2tLQDuu+++W7nqqquuuur/G4Krrrrqqquu+neyTWZiG9sA2MY2z49tAGzzQLaxzfNjmxeFbR7INraxDYBtAGxzP9s8P5KQhCQkIQlJSEISkgCQBIAknpskJNH3/YO56qqrrvp/5pprrnnwxYsXeW62+beyzb+Wbf41bPOvYZt/Ldv8a9jm32prawuA++6771auuuqqq676/4jgqquuuuqqq/6dpmn67czENgC2uZ9tHsg2D2Sb52YbANs8kG1s8/zYxjYPZJsHsg2AbQBscz/bPJAkJCEJSUQEEYEkJCEJSUjigSQhCUk8UERw1VVXXfX/yTXXXPNg/pUe+tCHAnDffffx/NjmX8s2/9PY5l/DNv8atnmg6667DoB/+Id/+G2uuuqqq676/4jgqquuuuqqq/6dxnHENraxjW1sYxsA29jGNvezzf1s84LY5rnZxja2sY1tnpttXhS2sQ2AbWwjiftJIiKQhCQkIQlJSAJAEpJ4bpKQhCRms9mDueqq/yPOnDnzIID77rvvVq666gU4c+bMgwEuXLjAfxfb/GvZ5l/DNv8atvnXsM2/hm2uuuqqq6666rkQXHXVVVddddW/U0T8TmZiG9s8kG2em20AbHM/2zyQbe5nm38N2/xLbPMvkYQkJCEJSUQEkpCEJCRxP0m8IPP5/MFcddVVV/0/cs011zyYf6UTJ04AcHh4yHOzzX822/xr2OZfwzb/Grb517DN83PttdcC8A//8A+/w1VXXXXVVf8fEVx11VVXXXXVv9+ttslMbGMb29jmudnmBbGNbe5nm/vZ5kVhm+dmG9sA2MY2ALaxjW1s80CSkIQkJBERRASSkIQkACQhCUkASEISkgCQhCQAIuLBXHXVVVf9P3LhwgVeGNu8KGzzr2Wbfw3b/GvY5j+Tbf41bHPVVVddddVVLwDBVVddddVVV/0HyExs8/zYxja2uZ9tAGzz3GxzP9vczza2eX5sY5vnZpsXlW2emyQkIQlJSEISkpCEJCQBIIkHksQDlVIezFVXXXXV/yMXLlzgRXXixAkADg8PeSDb/GvZ5l/DNv8atvnXss1/Ftu8MNdddx0A//AP//DbXHXVVVdd9f8RwVVXXXXVVVf9O0XEra21W21jG9vYxja2+ZfY5rnZ5gWxjW1sYxvbPD+2eSDb3M82trmfbZ6bJCQhCUlEBBFBRCAJSdxPEgCSeG6SkEREcNVVV131/8WZM2cedOHCBV5UJ06cAODw8JD/a2zzr2GbF5Vt/iVbW1sA3Hfffbdy1VVXXXXV/0cEV1111VVXXfUfYJqmW21jG9vY5n62eSDbANjmfrZ5QWzzr2WbF8Q297ONbe5nGwBJSEISEUFEIAlJSEISkpCEJB5IEpIAkASAJLquezBXXXXVVf9PXHPNNQ/mX+HEiRMAHB4ecj/b/GvZ5l/DNv8atvnXsM2/hm3+I21tbXHVVVddddX/ewRXXXXVVVdd9R+g73syE9vczza2AbCNbWzzQLa5n21scz/b3M82tvmX2MY2L4htnh/b2Oa5SUISkpBERCAJSUhCEgCSkMQDSQJAEgBd1z2Iq6666qr/Ry5cuIBt/iW2eW62+deyzb+Gbf41bPOfyTb/Grb5l1x77bUA/NZv/dZ3c9VVV1111f9XBFddddVVV131H+Dw8PC3bWMb29jmhbHNC2Kb+9nmgWzzgtjmudnGNrZ5INvYxja2eSDbAEhCEpKICCICSUQEEYEkJCGJ+0nigSQBIImI4Kqrrrrq/4sXe7EXe+2LFy/yonrYwx4GwOHhIf9X2OZFZZt/DdtcddVVV1111YuI4Kqrrrrqqqv+A7TWnpGZ2MY2ALYBsM0D2QbANgC2eW62uZ9tHsg2trGNbWxjm+dmmweyzQtjG9s8kCQkIQlJRASSkIQkJCEJSUgCQBKSuJ8kJDGbzR7MVVddddVVL9Th4SG2+deyzb+Gbf41bPOvYZv/LLZ5UV133XUA/MM//MPvcNVVV1111f9XBFddddVVV131H8D2rZmJbWxjGwDbANjGNrZ5fmzz3GxzP9v8a9jmBbHN/WxjG9u8IJKQREQgiYhAEpIAkIQkACRxP0k8UN/3D+aqq6666v+Ja6655sEXLlzgfrZ5YU6cOAHAwcEB/1q2+dewzb+Gbf4z2eaqq6666qqr/hMRXHXVVVddddV/gIi41Ta2uZ9tAGzz3GwDYJv72cY2L4htXhS2eUFsA2Ab2zyQbR5IEpKQREQQEUQEkpCEJCRxP0k8N0lIQhKSuOqqq676/+TChQu8qE6cOAHA4eEh/9vZ5kVlm38N27yobHPdddcB8A//8A+/zVVXXXXVVf9fEVx11VVXXXXVf4CIuNU2trGNbQBsA2Cb+9nmgWzzQLaxDYBtHsg2L4xtnpttbPOC2MY2ALZ5IElIQhKSkIQkIoKIQBKSkMT9JCGJ5zabzR7CVVddddX/A9dcc82DAS5cuMB/Ntv8a9jmX8M2/xq2+c9im3+tra0tAO67775bueqqq6666v8rgquuuuqqq676DzJN062ZiW1sY5sHso1t7mebF4VtHsg2trGNbWxjG9s8N9vczzYAtrmfbe5nGwDbPJAkJBERRAQRgSQkIQlJAEhCEveTBIAkJLFYLB7EVVf9H3DNNdc8GODs2bPP4Kqrno8zZ848mH+lEydOAHB4eMj/FLb5z2SbF5Vt/jVss7W1xVVXXXXVVVcBBFddddVVV131H6S1dqttbHM/29jmudnmgWzz3GxzP9v8a9nmudkGwDa2AbCNbQBscz9JSEISEYEkJBERSEISkpCEJO4niftJ4n62iYgHc9VVV131f9w111zz4AsXLvD82Oa5nThxgn8L2/xr2OY/k21eVLb5z2IbgOuuuw6A3/qt3/purrrqqquu+v+M4Kqrrrrqqqv+g0zTdGtmYhvb2OZ+trmfbe5nm/vZxjYPZJv72eZFZZsXhW0AbGMbANs8kCQkERFEBJKICCQhCUlIQhKSAJDEA0lCErXWB3PVVVdd9f/AhQsXeGFsc78TJ04AcN999/E/hW3+NWzzn8U2LyrbXHXVVVddddVzIbjqqquuuuqq/yDjON5qG9vYBsA2tgGwjW3uZxsA2zyQbWzz/NjGNi+MbV4UtgGwzf1s80CSkIQkJBERRASSkIQkXhBJAEjifhHBVVddddX/dWfOnHnQhQsXeFGdPHkSgMPDQ15UtvnXsM3/FLZ5Udnm3+q6664D4B/+4R9+h6uuuuqqq/4/I7jqqquuuuqq/yAR8TuZiW0AbHM/27wwtnlutgGwzXOzjW3uZxvb2Oa52cY2tgGwjW0AbANgG9vczzb3k4QkIgJJRAQRQUQQEUhCEpKQhCTuJwkASUii1vpgrrrqqqv+j7vmmmsezP9itvnXsM3/BLa56qqrrrrqqueD4Kqrrrrqqqv+g2QmtrGNbWxjG9sA2AbANrYBsM2LwjbPj21s8/zYxjYPZJvnZhsA29jGNveThCQkIYmIQBIRgSQkIQlJSOJ+krifJAAk0XXdg7jqqquu+n/gwoULvKhOnDgBwMHBAf8ZbPM/hW1eVLZ5UdnmuV133XUA/MM//MNvc9VVV1111f9nBFddddVVV131HyQibs1MbGOb58c2L4htbPNAtrmfbV5UtvmX2OZ+tgGwzfMTEUgiIogIJBERSEISkgCQhCQAJCEJAEkAlFK46qqrrvq/7pprrnnwhQsXeFHY5sSJEwAcHh7yorDNfxbb/GvY5kVlm/9KW1tbANx33323ctVVV1111f9nBFddddVVV131HyQibp3NZtjGNraxjW1s89xsA2CbB7LNA9nmfraxzQtjm3+JbQBsYxsA2wDY5oEkIYmIQBKSiAgkIQlJSEIS95PEc5PEbDZ7MFddddVV/8edOXPmwVz172KbF5VtntvW1hZXXXXVVVdd9UwEV1111VVXXfUfaG9v77czE9s8N9vczzYPZJsHso1t7mebB7KNbR7INrZ5fmxjGwDbPDfbANgGwDYAkpCEJCQREUQEkogIJCEJAElIQhIAkgCQhCQk0ff9g7nqqquu+n/gwoUL2OZFceLECQAODw/5j2ab/yy2eVHZ5kVlm3+v6667DoDf+q3f+h6uuuqqq676/47gqquuuuqqq/4D2cY2trGNbQBsA2Ab29zPNvezzXOzzf1s89xsYxvbPD+2sc39bHM/29jmfrYBsM1zk0REIImIICKQREQgCUk8P5J4IElcddVVV/1fd8011zz4woULvKhOnjwJwOHhIf8S2/xnsc3/Nra56qqrrrrqqn8BwVVXXXXVVVf9B5qm6bczE9vYBsA2z49tnpttXhjbvKhs86KwjW1sYxvb2MY2AJKQhCQigoggIogIJCEJSUhCEpKQxP0kIQlJzGazB3PVVVdd9X/YmTNnHsS/0okTJwA4PDzkfwvbvKhs86KyzYvKNi/IddddB8B99933dK666qqrrvr/juCqq6666qqr/gO11p5hG9sA2OZ+trENgG3uZ5sHss0D2eaBbPMvsc0LYhvbPD+2eUEkERFIIiKQhCQiAklI4oEk8UCSmM/nD+aqq6666v+wa6655sEAFy5c4H62+e9gmxeVbf4vOnv27DO46qqrrrrq/zuCq6666qqrrvoPZPvWzMQ2trGNbWxzP9vczzYAtnkg29jmfrZ5INvY5rnZxjYvCtvYxja2sQ2AbWxzP0lIQhKSiAgkERFEBJKQhCQkIQlJAEgCQBL3i4gHc9VVV131f9Q111zzYP4VTpw4AcDh4SH/F9nmRWWbF5VtXpjrrrsOgH/4h3/4ba666qqrrvr/juCqq6666qqr/gNFxK22sY1tHsg2L4xtnptt7meb52Yb29jGNs+PbWxjmxfENgC2uZ9t7ieJiCAiiAgigohAEpKQBIAknpskACQBUGt9MFddddVV/4dduHCBF9XJkycBODw85H8L2/xPt7W1BcB99913K1ddddVVV/1/R3DVVVddddVV/8FsYxvb2MY2tgGwDYBtbANgm/vZ5rnZ5n62+dewzQPZBsA297MNgG1sYxvbPJAkJCGJiCAikEREIAlJSAJAEpKQxHOTRERw1VX/m11zzTUPBrjvvvtu5aqrno8LFy7w/NjmuZ04cQKAw8ND/iW2+b/KNi8q21x11VVXXXXVvwLBVVddddVVV/0Hiohbp2m61Ta2sc1zs80LY5sXxjYvCts8P7YBsI1tAGxjGwDb2OZ+kpCEJCICSUQEEYEkIgJJSEISDyQJAElIQhK11gdz1VVXXfV/1JkzZx584cIF/jexzX8G2/x3ePjDHw7AP/zDP/w2V1111VVXXQUEV1111VVXXfUfrLV2a2ZyP9vYxjbPzTYAtnkg29jmfrZ5INvY5vmxjW1eVLa5n21sA2CbB5KEJCKCiCAiiAgkIQlJSEISAJIAkMQD9X3/IK666qqr/o+65pprHsy/wokTJwA4ODjgP5Jt/jPY5j+abV5UtnlR3Xfffbdy1VVXXXXVVUBw1VVXXXXVVf/BWmu32sY2trHN/WxjG9vY5oFs89xscz/bPDfb2MY2trHN82Mb2zw32wDYxja2AbANgG0AJCGJiCAikEREEBFIQhKSkASAJAAkASAJSUgiIrjqqquu+r/s/PnzvDC2ud/JkycBODw85Kr/GNdddx0A9913361cddVVV111FRBcddVVV1111X+waZputY1t7mcb2zw/trmfbZ6bbe5nm38t29zPNgC2sQ2AbR7INraxzQNJQhKSiAgkIYmIICKQBIAkACQBIIn7SWI2mz2Yq6666qr/o17sxV7stS9cuMCLwjb/V9nmP5pt/jXOnj37DK666qqrrroKCK666qqrrrrqP97vZCa2sY1t7mebB7INgG3uZ5vnZpv72eZFZZvnZpvnZhvb2MY2ALa5nyQkIYmIICKICCICSUhCEpKQhCRekL7vH8xVV1111VWXPexhDwPgvvvu4/8j2/xHu+666wD4h3/4h9/mqquuuuqqq4Dgqquuuuqqq/6DZSaZiW1sA2Ab2wDYBsA2L4htbPOC2MY2L4htbPMvsc39bGMb29gGwDb3k4QkIoKIICKICCICSUhCEg8kCQBJSEISEcFVV1111f9V11xzzYMvXLjA/xa2eVHZ5r+LbV5UW1tbANx33323ctVVV1111VVAcNVVV1111VX/wSLiVttkJraxzXOzzf1sA2Cb52ab+9nmudnGNraxjW1s8y+xjW0AbGMbANsA2MY2zy0ikEREEBFEBJKQhCQkIQlJSAJAEveTRN/3D+aqq6666v+wCxcu8KI6ceIEAIeHh/xfYZurrrrqqquu+h+E4Kqrrrrqqqv+g0XErbaxjW1sYxsA2zyQbR7INs/NNvezzb+FbWxjmxfENgC2sY1tbAMgCUlIIiKICCICSUQEEYEkJCEJSQBIAkASkgBYLBYP5qqrrrrq/6BrrrnmwQAXLlzgqn+Zbf6jPexhDwPgH/7hH36bq6666qqrrrqC4Kqrrrrqqqv+EwzD8Nu2eSDbANjGNra5n23uZ5vnZpv72eZFZRvbPJBt7mcb29jGNraxzfMjCUlIQhIRQUQQEUhCEg8kiecmCYCIeDBXXXXVVf/HnDlz5sE8k23+JSdOnADg8PCQq14w2/xr3Xfffbdy1VVXXXXVVVcQXHXVVVddddV/AtvYxja2sQ2AbV4Q29zPNrZ5INvczza2eWFs88LY5rnZxja2sY1tbAMgCUlEBBFBRBARSCIikIQkJCGJ+0kCQBL3q7U+mKuuuuqq/2OuueaaB1+4cIEX1cmTJwE4PDzkRSGJq16466+/HoD77rvvVq666qqrrrrqCoKrrrrqqquu+k8wTdNvZya2sQ2AbZ4f27wgtrHN/WzzQLaxjW0AbGMb27wwtgGwjW1sYxsA29jGNs9NEpKICCKCiCAikIQkJCEJAElIAkASAJKQRERw1VVXXfV/0YULF3gg27wgJ06cAODee+/lqn8/29zv7Nmzz+Cqq6666qqrriC46qqrrrrqqv8E4zhiG9sA2OZ+trGNbWwDYBsA2/xb2eaFsc2/xDYAtrGNbe4nCUlEBBFBRBARRAQRQUQgCUlI4n6SeCBJdF33YK666n+pM2fOPBjg7Nmzt3LVVQ9w5syZB50/f55/ra2tLf6vsM2LwjYvCtv8a1x33XUA/MM//MNvc9VVV1111VVXEFx11VVXXXXVf4JSyu9kJraxDYBtbPMvsc1zs839bGObF5VtbANgG9s8N9vYxja2sY1tbGOb+0lCEpKICCKCiEASkpAEgCQkIYn7SUISAF3XPYirrrrqqv9jrrnmmgfzr/Cwhz0MgIODA/6ns83/ZLYB2NraAuC+++67lauuuuqqq666guCqq6666qqr/nPcahvb2MY297PNA9kGwDb3s41tHsg2D2Sbf4ltXhDb2MY2D2Qb2zw/kpBERCCJiCAiiAgkERFI4rlJ4n6SKKVw1VVXXfV/0YULF3h+bPOCHB0dcdVVV1111VVX/achuOqqq6666qr/JJmJbQBsYxvbANjGNrZ5YWxjm/vZ5oFsY5vnZhvbvCC2eSDb2MY2trGNbWxjGwBJSCIiiAgigohAEpKICCQhCUlIQhKSAJCEJCQxm80ezFVXXXXV/zHXXHPNgy9cuMCL6uTJkwAcHh7yopLEi0IS/988/OEPB+Af/uEffpurrrrqqquuejaCq6666qqrrvpPEBG3ttZutY1t/iW2AbDN82Ob+9nmudnGNraxzb+GbQBsYxsA29jGNs9NEpKICCKCiCAikIQkJCEJSdxPEg/U9/2Dueqqq676P+bMmTMP5l9gm/udOHECgMPDQyRx1XOyzb/FfffddytXXXXVVVdd9WwEV1111VVXXfWfpLV2a2ZiG9vYxja2eSDbPJBt/iW2+deyjW3uZxvbANjmfrYBsI1tbGMbAElIIiKICCKCiCAiiAgkIYn7SUISAJKQhCQkcdVVV131f9GFCxe46oWzzX8k2wBcf/31ANx33323ctVVV1111VXPRnDVVVddddVV/0laa7faxja2eSDb2MY297PN/WxjmweyzQPZ5kVhG9vczzbPj21sYxvb2MY2trmfJCQhiYggIogIIgJJSEISkpDECzKbzR7MVVddddX/Mddcc82DL1y4wIvCNidPngTg8PAQAEm8KCTxH0US/9ecPXv2GVx11VVXXXXVsxFcddVVV1111X+S1tqtmYltAGxjG9s8N9sA2OaBbGOb+9nmgWxjm+fHNrZ5fmxzP9vczza2sY1tbGObB5JERBARRAQRgSQiAklIQhIAkpCEJO4nicVi8WCuuuqqq/4Pueaaax7Mv8KJEye46j/WddddB8A//MM//DZXXXXVVVdd9WwEV1111VVXXfWfJDOfYRvb2MY297PNv4Zt7meb52Yb29jGNrb517CNbQBsYxvb2AbANveThCQigoggIogIJBERSEISknggSUgCwDallAdz1VVXXfV/xJkzZx4McP78eV4UJ0+eBOC+++7jP4sk/qNI4n+6ra0trrrqqquuuur5ILjqqquuuuqq/yS2b81MbGMbANvYBsA2trENgG0AbPP82OZ+tvn3so1tHsg2ALaxjW1scz9JSCIikEREEBFEBBGBJCQhCUlIQhKSuJ8kJFFKeTBXXXXVVf9HXHPNNQ/mX+HkyZMAHB4e8kCSeFFI4iqwzXO77777buWqq6666qqrno3gqquuuuqqq/6TRMSttrENgG1eVLb5l9jmRWUb29jGNg9kG9vYxja2sY1tbGMb29xPEpKICCKCiCAikIQkJPGCSAJAEhHBVVddddX/JRcuXOA/giT+v7PNv8Z1110HwD/8wz/8NlddddVVV131nAiuuuqqq6666j9JRNxqG9vYBsA2ALZ5INsA2OZ+trHNA9nmgWxjmxfENrZ5brZ5QWxjG9vYxja2sc39JBERRAQRQUQQEUQEkpCEJCQBIAlJAEgCoOu6B3PVVVdd9X/I+fPneVGdOHECgMPDQ/6tJPEvkcT/B1tbWwDcd999t3LVVVddddVVz4ngqquuuuqqq/4TjeP427axjW0AbANgG9vY5oFs80C2sc39bPPcbGMb29jGNrb5l9gGwDa2sY1tbGMb29jmgSQhCUlEBBFBRBARSEISkpAEgCTuJwkASfR9/yCuuuqqq/6POHPmzIMuXLgAgG3+JSdPngTg8PCQ50cS/1Uk8b/d1tYWAPfdd9+tXHXVVVddddVzIrjqqquuuuqq/0SZSWZiG9vYBsA2z802L4xt7mebfy/bANjmfrYBsI1tbGMb2zyQJCICSUQEEUFEEBFEBJKQhCTuJwkASUgiIrjqqv+NrrnmmgcD3Hfffbdy1VXPdM011zyYq/7bbG9vA3D27NlncNVVV1111VXPieCqq6666qqr/hO11n7bNra5n22em20eyDa2eW62uZ9t/iPZBsA2ALaxjW1sYxsASUhCEhFBRBARRASSkIQkACQhCUk8t/l8/mCuuuqqq/4POX/+PA9kmxfkxIkTABweHvKCSOJfIol/iST+L7LN/a677joA/uEf/uG3ueqqq6666qrnRHDVVVddddVV/4nGcSQzsY1tbHM/29jGNvezzQPZ5oWxzYvCNraxjW1sA2AbANsA2MY2trGNbWxjmweSREQQEZRSiAgkERFIQhKSAJAEgCQkIQlJ9H3/YK666qqr/o94sRd7sde+cOECz49tntvJkycBODw85IWRxFX/sq2tLa666qqrrrrqBSC46qqrrrrqqv9EEfE7trGNbQBsY5vnZhsA2zyQbWxjGwDbPJBtbGObB7KNbWzzwtgGwDYAtrGNbWxjG9vYBkASkpBERBARRAQRQUQQEUhCEpIAkMQDSUISV1111VX/X508eRKAw8ND/r0k8e8liX+JJP6nu++++27lqquuuuqqq54TwVVXXXXVVVf957o1M7ENgG3uZ5sXxDYv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/ujn/PZv//b3vNiLvdhrv87rvM57vdiLvdhrv8zLvAwv8zIvw9u8zduwu7vLM57xDJ7xjGdw6dIl9vb22N/fxzaSsI0kAGwjifttb2+zs7PDjTfeiCRuuOEGbrjhBp7bfffdd+tv/dZvffdv//Zvf8999913K1dd9X/U537u5/7WmTNnHswzfe7nfu5vA/7Mz/zM1+Gq/3f+4R/+4Xde//Vfn+d26tQpAGwjCUnY5kUhCdv8S2wjiedmG0k8N9tI4oFsI4n72UYSALYBkIRtACRhGwBJ2EYSALaRhG0kYRtJ2AZAEraRhG0eSBK2OX36NAD/8A//8DtcddVVV1111X88KlddddVVV131v9h9991363333ffdv/Vbv/XdZ86cedCLv/iLv87rvM7rvNeLvdiLvfbx48c5fvw4L/VSL8UDXbp0iftJ4oF2dnZ4Ye67775bf+u3fuu7AX70R3/0c7jqqv8Hzpw586AXe7EXe22e6ZprrnnwNddc8+D77rvvVq76f+ns2bO3njp1ikc+8pE86UlPwjaSuJ8kJHE/SdjmP5ttJPHcbCOJB7KNJO5nG0nczzaSALCNJABsIwnbSALANpKwjSRsIwkA20jCNpKwjSRsc9VVV1111VX/RahcddVVV1111f8RZ8+efcZv/dZvffdv/dZvffc111zzYIAXe7EXe60Xe7EXe+1rrrnmwWfOnHnwNddc8+Bjx44BcN999916zTXXPPi+++679ZprrnkwD/AP//APv33ffffdCnDffffd+g//8A+/8w//8A+/zVVXXXXVVdx33323/sM//MNvA6/NA5w6dQqAzEQSz00StgGQhG1eEEnY5l/LNpJ4braRxAPZRhL3s40k7mcbSQDYRhIAtpGEbQAkYRtJ2EYStgGQhG0kYRtJ2EYStpHEqVOnAPiHf/iH3+aqq6666qqr/uNRueqqq6666qr/g+67775bAe67775bf+u3fut7eIAzZ848SJJ4ANuWpPvuu+9WrrrqqquuepE88pGP5ElPehIAp06dAiAzkYQkbCMJ27wwkrDNfxTbSOK52QZAEvezDYAkAGwDIAkA20gCwDaSALCNJABsIwnbSMI2AJKwjSRsIwnbSMI2krDNYrEA4L777ruVq6666qqrrvqPR+Wqq6666qqr/p85e/bsM7jqqquuuurf5e///u9/+/Vf//Vf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XXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V/FPwJhlSKfKyi8AQAAAABJRU5ErkJggg==) +![Rendered example of translate 2](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAFgy0lEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqr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tNZorZGZtNbITDKTzCQzyUxs8/zY5kUhCdv8S2qtD+Kqq6666qr/cLbJTABscz/bANgGwDb3sw2Abe5nGwDbANjmfrYBsM39bANgm/vZBsA297MNgG3uZ5v72QbANvezzf1scz/bANjmfra5n23uZ5v72eZ+trmfbe5nm/vZ5qqrrrrqqv8XqFx11VVXXXXVC2Gb+9nmfraxzb+GbQBsYxvb2MY2trFNZmKbzCQzyUxaa0zTRCmFiEAStgHITFprtNZorZGZZCaZSWZiG9vYxja2sc2/lyTuJwkASUQEV1111VVX/cezjW1scz/bANjmfrYBsM39bANgm/vZBsA2ALa5n20AbHM/29zPNgC2uZ9tAGxzP9vczzb3sw2Abe5nm/vZ5n62uZ9t7mcbANvczzb3s80D2eZ+trmfba666qqrrvo/j8pVV1111VVX/QtsYxsA29jmgWzzorLNA9kGwDa2sU1mkpm01mit0VqjtUZrjWmaAIgIADKT1hqtNVprtNZorZGZZCaZiW1sY5v72eZfIgnb/GtI4qqrrrrqqhfu4sWLvChscz/bZCb3sw2Abe5nGwDb3M82ALa5n20AbHM/2wDY5n62uZ9tAGxzP9sA2OZ+trmfbe5nm/vZBsA297PN/WxzP9vczzb3s839bHM/29zPNvezzf1s80C2ueqqq6666v80KlddddVVV131QkTErbYBsM2/hm1sYxvb2AbANraxDYBtbJOZZCaZSWaSmbTWaK0xTROlFCQBEBEA2GaaJlprtNZorZGZtNbITGxjG9vYxja2AbDNi0IStrnqqquuuurf75prrnkwz2QbSbwoMhPb2OZ+tgGwzf1scz/bANjmfrYBsM39bHM/2wDY5n62AbDN/WxzP9vczzb3sw2Abe5nm/vZ5n62uZ9t7meb+9nmfra5n23uZ5v72eaBbHM/29xvPp8DcN99993KVVddddVV/xdRueqqq6666qoXgW0AbANgGwDbANjGNraxjW0k8dxs80C2sY1tbGObzCQzaa3RWqO1RmuNaZqQBEBEAGCbaZqYpolpmmit0VojM8lMMpPMxDa2sc0LIwnb/GtJAqDrugdz1VVXXXXVf5jjx48DME0TmQmAbe5nm/vZBsA297MNgG3uZ5v72QbANvezzf1scz/bANjmfra5n23uZ5v72eZ+trmfbe5nm/vZ5n62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P+e3f/u3v+fFXuzFXvvFXuzFXut1Xud13vv48eO89Eu/NC/90i8NwO7uLpcuXeLSpUtIYm9vj729PQAiAgBJHDt2DABJ3HjjjUjihhtu4Pm57777bv2t3/qt7/6Hf/iH3/mHf/iH3+aqq6666v+Rs2fP3nrq1Cke+chH8qQnPYnnJglJPD+SsA2AJGzzH8k2knhutpHE/WwDIAkA2wBIAsA2kgCwjSQAbCMJANtIwjaSsA2AJGwjCdtIwjaSsI0kbCMJ22xsbABw33333cpVV1111VVX/cejctVVV1111VX/y91333233nfffd/9W7/1W9/9oz/6o59z5syZB7/Yi73Ya734i7/4a7/Yi73Yax8/fpzjx4/zb3Xffffdevbs2Vv//u///rf/4R/+4bf/4R/+4Xe46qqrrvp/7L777rv1H/7hH377EY94xGs/6UlP4n6PfOQjAchMJCEJ20jCNi+MJGzzorKNJJ4f20jiudlGEg9kG0nczzaSALCNJABsIwkA20gCwDaSsI0kAGwjCdtIwjaSsI0kbCMJ20hisVgAcN99993KVVddddVVV/3Ho3LVVVddddVV/4fcd999t9533323/sM//MNv/+iP/ujnAFxzzTUPPnPmzIOvueaaBwOcOXPmQddcc82DeS733XffrTzTP/zDP/wO4H/4h3/4Ha666qqrrnoef//3f//bL/MyL/Pav/ALv8Bzy0wk8dwkYRsASdjmhZGEbf4tbCOJ52YbSTyQbSRxP9tIAsA2AJKwDYAkbCMJANtIwjYAkrCNJGwjCdtIwjaSsI0kbLOxsQHA2bNnn8FVV1111VVX/cejctVVV1111VX/x91333233nfffbf+wz/8A1ddddVVV/3H+Id/+Iffef3Xf30e6NSpUwDYJiKwjSRs89/BNpJ4brYBkMT9bAMgCQDbAEgCwDaSALCNJGwDIAnbSALANpKwjSRsIwnbSMI2krCNJE6dOgXAfffddytXXXXVVVdd9R+PylVXXXXVVVddddVVV1111b/S2bNnbz116hSnTp3i/PnzPJAknpskbAMgCdvcTxK2eSBJ2OaFsY0kXhjbSOL5sY0kHsg2krifbSQBYBtJANhGEgC2kYRtJAFgG0nYRhK2kYRtJGEbSdjmfmfPnr2Vq6666qqrrvqPR+Wqq6666qqrrrrqqquuuupf6b777rv1vvvuu/XUqVMPPn/+PKdOnQIgM5HEi0oStvnPZBsASTw32wBI4n62kcT9bCMJANtIAsA2kgCwjSRsAyAJ20jCNpKwjSRsIwnbSGKxWABw33333cpVV1111VVX/ccjuOqqq6666qqrrrrqqquu+je47777bn3kIx8JwKlTpwDITCICSUQEkogIJCGJiEASkpCEJCQhCUlIIiKQhCQkIQlJSEISkpCEJAAkIQlJSEISkpCEJCQhiftJQhKSkIQkACQhCUncTxKSuJ8k7ieJ+0kCQBKSAJAEgCQAJAEgCQBJnDx5EoB/+Id/+G2uuuqqq6666j8Hlauuuuqqq6666qqrrrrqqn+Df/iHf/jtl3mZl3ltgFOnTgFgG0k8P5Kwzf0kYZsHkoRt/jPZRhLPzTYAkrifbSRxP9tIAsA2kgCwjSRsIwkA20jCNpKwjSRsc7/FYgHAfffddytXXXXVVVdd9Z+D4Kqrrrrqqquuuuqqq6666t/gH/7hH3771KlTPDdJRASSiAgkIQlJSEISEYEkJCEJSUQEkpCEJCQhCUlIQhKSkIQkJCEJAElIQhKSkIQkJCEJSUhCEpK4nyQkIQlJSAJAEpKQxP0kIQkASUgCQBKSAJDE/SQBIAkASQBIQhIAi8UCgPvuu+9Wrrrqqquuuuo/B5Wrrrrqqquuuuqqq6666qp/g/vuu+/WU6dO8chHPpKTJ08CYBtJPDdJ2AZAErZ5IEnY5t/KNveTxIvKNgCSeCDbAEjifraRBIBtJAFgG0kA2EYSALaRhG0kYRtJ2AZAEovFAoCzZ88+g6uuuuqqq676z0Hlqquuuuqqq6666qqrrrrq3+Ds2bPP+Id/+IfffuQjH/nap06d4n4RgW0kYZsHkoRtHkgStvmPYpv7SeJFYRsASTyQbSRxP9tIAsA2AJKwDYAkbCMJANtIwjaSsA2AJGxz8uRJAO67775bueqqq6666qr/HFSuuuqqq6666qqrrrrqqqv+jf7+7//+t1/mZV7mtXkm20jigSRhm+dHErb5z2KbB5LEC2MbSTyQbQAkAWAbAEkA2EYSALaRhG0kAWAbSdhGEgC2kcT9zp49eytXXXXVVVdd9Z+DylVXXXXVVVddddVVV1111b/RP/zDP/zO67/+63M/SUhCEraRhG0AJGGb+0nCNi+IJGxjG9vYxjaZCYAkMpN/DdvcTxLPj20AJPFAtpHE/WwjCQDbSALANpKwDYAkbCMJ20gCwDaLxQKA++6771auuuqqq6666j8Hlauuuuqqq6666qqrrrrqqn+js2fP3nrq1CnuJwlJPDdJ2OZ+krDNc5OEbWxjm+cnIrBNZiKJfyvbAEji+bENgCTuZxsASQDYRhIAtpEEgG0kAWAbSdhGErYBOHnyJAD/8A//8NtcddVVV1111X8eKlddddVVV1111VVXXXXVVf9G991336333Xffrddcc82DeaaIwDaSsM1zk4RtHkgStrHNiyoiyEz+vWxzP0k8N9sASOJ+tpEEgG0AJGEbAEnYRhIAtpGEbSQBMJ/PAbjvvvtu5aqrrrrqqqv+81C56qqrrrrqqquuuuqqq676dzh79uyt11xzzYMBJPHcJGEbAEnY5oEkYZt/i4ggM/mPYhsASTw320jifraRxP1sIwkA20jCNgCSsI0kbAOwWCwAuO+++27lqquuuuqqq/7zULnqqquuuuqqq6666qqrrvp3+Pu///vffrEXe7HXBiil8PzY5vmxzQPZ5rnZ5n62eSDb3M82z80297PNA9nmgWzzQLZ5brZ5brZ5fmzzgthmsVgAcPbs2Wdw1VVXXXXVVf95qFx11VVXXXXVVVddddVVV/07/PZv//b3nD179hkf/uEf/l2SeH4kcdXz+pEf+ZHP/q3f+q3v5qqrrrrqqqv+86AHPehBXHXVVVddddVVV1111VVX/Xtcc801Dz5z5syDAQPiORkQz8mAeE4GxHMyIJ6TAfGcDIjnZEA8JwPiORkQz8mAeE4GxHMyIJ6TAfGcDIjn5H/4h3/4Ha666qqrrrrqPxd60IMexFVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Slauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxX/CLue669D0dK2AAAAAElFTkSuQmCC) ```js // Move a sketch. diff --git a/docs/kcl/types.md b/docs/kcl/types.md index 054e9485e..5fb43c2e0 100644 --- a/docs/kcl/types.md +++ b/docs/kcl/types.md @@ -184,15 +184,17 @@ way: ```norun startSketchOn('XZ') |> startProfileAt(origin, %) - |> angledLine({angle = 0, length = 191.26}, %, $rectangleSegmentA001) - |> angledLine({ + |> angledLine(angle = 0, length = 191.26, tag = $rectangleSegmentA001) + |> angledLine( angle = segAng(rectangleSegmentA001) - 90, length = 196.99, - }, %, $rectangleSegmentB001) - |> angledLine({ + tag = $rectangleSegmentB001, + ) + |> angledLine( angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), - }, %, $rectangleSegmentC001) + tag = $rectangleSegmentC001, + ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() ``` @@ -217,15 +219,17 @@ However if the code was written like this: fn rect(origin) { return startSketchOn('XZ') |> startProfileAt(origin, %) - |> angledLine({angle = 0, length = 191.26}, %, $rectangleSegmentA001) - |> angledLine({ + |> angledLine(angle = 0, length = 191.26, tag = $rectangleSegmentA001) + |> angledLine( angle = segAng(rectangleSegmentA001) - 90, - length = 196.99 - }, %, $rectangleSegmentB001) - |> angledLine({ + length = 196.99, + tag = $rectangleSegmentB001, + ) + |> angledLine( angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001) - }, %, $rectangleSegmentC001) + tag = $rectangleSegmentC001, + ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() } @@ -245,15 +249,17 @@ For example the following code works. fn rect(origin) { return startSketchOn('XZ') |> startProfileAt(origin, %) - |> angledLine({angle = 0, length = 191.26}, %, $rectangleSegmentA001) - |> angledLine({ + |> angledLine(angle = 0, length = 191.26, tag = $rectangleSegmentA001) + |> angledLine( angle = segAng(rectangleSegmentA001) - 90, - length = 196.99 - }, %, $rectangleSegmentB001) - |> angledLine({ + length = 196.99, + tag = $rectangleSegmentB001, + ) + |> angledLine( angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001) - }, %, $rectangleSegmentC001) + tag = $rectangleSegmentC001, + ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() } diff --git a/docs/kcl/types/AngledLineData.md b/docs/kcl/types/AngledLineData.md deleted file mode 100644 index 903dea11d..000000000 --- a/docs/kcl/types/AngledLineData.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "AngledLineData" -excerpt: "Data to draw an angled line." -layout: manual ---- - -Data to draw an angled line. - - - - -**This schema accepts any of the following:** - -An angle and length with explicitly named parameters - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `angle` |[`number`](/docs/kcl/types/number)| The angle of the line (in degrees). | No | -| `length` |[`number`](/docs/kcl/types/number)| The length of the line. | No | - - ----- -An angle and length given as a pair - -**Type:** `array` - -`[number, number]` - - - - - ----- - - - - - diff --git a/docs/kcl/types/AngledLineThatIntersectsData.md b/docs/kcl/types/AngledLineThatIntersectsData.md index 111a7054a..c0e9a1309 100644 --- a/docs/kcl/types/AngledLineThatIntersectsData.md +++ b/docs/kcl/types/AngledLineThatIntersectsData.md @@ -16,8 +16,8 @@ Data for drawing an angled line that intersects with a given line. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `angle` |[`number`](/docs/kcl/types/number)| The angle of the line. | No | +| `angle` |`TyF64`| The angle of the line. | No | | `intersectTag` |[`TagIdentifier`](/docs/kcl/types#tag-identifier)| The tag of the line to intersect with. | No | -| `offset` |[`number`](/docs/kcl/types/number)| The offset from the intersecting line. | No | +| `offset` |`TyF64`| The offset from the intersecting line. | No | diff --git a/docs/kcl/types/AngledLineToData.md b/docs/kcl/types/AngledLineToData.md deleted file mode 100644 index c95f12a4d..000000000 --- a/docs/kcl/types/AngledLineToData.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "AngledLineToData" -excerpt: "Data to draw an angled line to a point." -layout: manual ---- - -Data to draw an angled line to a point. - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `angle` |[`number`](/docs/kcl/types/number)| The angle of the line. | No | -| `to` |[`number`](/docs/kcl/types/number)| The point to draw to. | No | - - diff --git a/docs/kcl/types/ArcData.md b/docs/kcl/types/ArcData.md index 46a9220a7..daf7278f9 100644 --- a/docs/kcl/types/ArcData.md +++ b/docs/kcl/types/ArcData.md @@ -23,9 +23,9 @@ Angles and radius with an optional tag. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `angleStart` |[`number`](/docs/kcl/types/number) (**maximum:** 360.0) (**minimum:** -360.0)| The start angle. | No | -| `angleEnd` |[`number`](/docs/kcl/types/number) (**maximum:** 360.0) (**minimum:** -360.0)| The end angle. | No | -| `radius` |[`number`](/docs/kcl/types/number)| The radius. | No | +| `angleStart` |`TyF64`| The start angle. | No | +| `angleEnd` |`TyF64`| The end angle. | No | +| `radius` |`TyF64`| The radius. | No | ---- @@ -41,9 +41,9 @@ Center, to and radius with an optional tag. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `center` |`[number, number]`| The center. | No | -| `to` |`[number, number]`| The to point. | No | -| `radius` |[`number`](/docs/kcl/types/number)| The radius. | No | +| `center` |`[, `TyF64`, `TyF64`]`| The center. | No | +| `to` |`[, `TyF64`, `TyF64`]`| The to point. | No | +| `radius` |`TyF64`| The radius. | No | ---- diff --git a/docs/kcl/types/ArcToData.md b/docs/kcl/types/ArcToData.md index 31727dcea..00889f6d6 100644 --- a/docs/kcl/types/ArcToData.md +++ b/docs/kcl/types/ArcToData.md @@ -16,7 +16,7 @@ Data to draw a three point arc (arcTo). | Property | Type | Description | Required | |----------|------|-------------|----------| -| `end` |`[number, number]`| End point of the arc. A point in 3D space | No | -| `interior` |`[number, number]`| Interior point of the arc. A point in 3D space | No | +| `end` |`[, `TyF64`, `TyF64`]`| End point of the arc. A point in 3D space | No | +| `interior` |`[, `TyF64`, `TyF64`]`| Interior point of the arc. A point in 3D space | No | diff --git a/docs/kcl/types/BezierData.md b/docs/kcl/types/BezierData.md index 1363fc723..309e41910 100644 --- a/docs/kcl/types/BezierData.md +++ b/docs/kcl/types/BezierData.md @@ -16,8 +16,8 @@ Data to draw a bezier curve. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `to` |`[number, number]`| The to point. | No | -| `control1` |`[number, number]`| The first control point. | No | -| `control2` |`[number, number]`| The second control point. | No | +| `to` |`[, `TyF64`, `TyF64`]`| The to point. | No | +| `control1` |`[, `TyF64`, `TyF64`]`| The first control point. | No | +| `control2` |`[, `TyF64`, `TyF64`]`| The second control point. | No | diff --git a/docs/kcl/types/EdgeCut.md b/docs/kcl/types/EdgeCut.md index b7980c9d7..eb351be1a 100644 --- a/docs/kcl/types/EdgeCut.md +++ b/docs/kcl/types/EdgeCut.md @@ -26,7 +26,7 @@ A fillet. |----------|------|-------------|----------| | `type` |enum: `fillet`| | No | | `id` |[`string`](/docs/kcl/types/string)| The id of the engine command that called this fillet. | No | -| `radius` |[`number`](/docs/kcl/types/number)| | No | +| `radius` |`TyF64`| | No | | `edgeId` |[`string`](/docs/kcl/types/string)| The engine id of the edge to fillet. | No | | [`tag`](/docs/kcl/types/tag) |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| | No | @@ -46,7 +46,7 @@ A chamfer. |----------|------|-------------|----------| | `type` |enum: `chamfer`| | No | | `id` |[`string`](/docs/kcl/types/string)| The id of the engine command that called this chamfer. | No | -| `length` |[`number`](/docs/kcl/types/number)| | No | +| `length` |`TyF64`| | No | | `edgeId` |[`string`](/docs/kcl/types/string)| The engine id of the edge to chamfer. | No | | [`tag`](/docs/kcl/types/tag) |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| | No | diff --git a/docs/kcl/types/KclValue.md b/docs/kcl/types/KclValue.md index e16bafba2..d999068a5 100644 --- a/docs/kcl/types/KclValue.md +++ b/docs/kcl/types/KclValue.md @@ -252,7 +252,7 @@ Data for an imported geometry. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `type` |enum: [`ImportedGeometry`](/docs/kcl/types/ImportedGeometry)| | No | +| `type` |enum: `ImportedGeometry`| | No | | `id` |[`string`](/docs/kcl/types/string)| The ID of the imported geometry. | No | | `value` |`[` [`string`](/docs/kcl/types/string) `]`| The original file paths. | No | diff --git a/docs/kcl/types/NumericType.md b/docs/kcl/types/NumericType.md index 8e0050fd1..ad7be7a57 100644 --- a/docs/kcl/types/NumericType.md +++ b/docs/kcl/types/NumericType.md @@ -130,6 +130,21 @@ A unit of length. | `type` |enum: `Yards`| | No | +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Unknown`| | No | + + ---- @@ -178,6 +193,21 @@ A unit of angle. | `type` |enum: `Radians`| | No | +---- + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Unknown`| | No | + + ---- diff --git a/docs/kcl/types/Point2d.md b/docs/kcl/types/Point2d.md index 3055d5a68..ca90a146f 100644 --- a/docs/kcl/types/Point2d.md +++ b/docs/kcl/types/Point2d.md @@ -7,7 +7,7 @@ layout: manual A point in two dimensional space. ```kcl -type Point2d = [number; 2] +type Point2d = [number(Length); 2] ``` [`Point2d`](/docs/kcl/types/Point2d) is an alias for a two-element array of [number](/docs/kcl/types/number)s. To write a value diff --git a/docs/kcl/types/Point3d.md b/docs/kcl/types/Point3d.md index 220daa9cc..e12abd583 100644 --- a/docs/kcl/types/Point3d.md +++ b/docs/kcl/types/Point3d.md @@ -7,7 +7,7 @@ layout: manual A point in three dimensional space. ```kcl -type Point3d = [number; 3] +type Point3d = [number(Length); 3] ``` [`Point3d`](/docs/kcl/types/Point3d) is an alias for a three-element array of [number](/docs/kcl/types/number)s. To write a value diff --git a/docs/kcl/types/PolarCoordsData.md b/docs/kcl/types/PolarCoordsData.md deleted file mode 100644 index e4d1e4636..000000000 --- a/docs/kcl/types/PolarCoordsData.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "PolarCoordsData" -excerpt: "Data for polar coordinates." -layout: manual ---- - -Data for polar coordinates. - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `angle` |[`number`](/docs/kcl/types/number)| The angle of the line (in degrees). | No | -| `length` |[`number`](/docs/kcl/types/number)| The length of the line. | No | - - diff --git a/docs/kcl/types/PolygonData.md b/docs/kcl/types/PolygonData.md index 501c0928a..8cd12387c 100644 --- a/docs/kcl/types/PolygonData.md +++ b/docs/kcl/types/PolygonData.md @@ -16,9 +16,9 @@ Data for drawing a polygon | Property | Type | Description | Required | |----------|------|-------------|----------| -| `radius` |[`number`](/docs/kcl/types/number)| The radius of the polygon | No | +| `radius` |`TyF64`| The radius of the polygon | No | | `numSides` |`integer`| The number of sides in the polygon | No | -| `center` |`[number, number]`| The center point of the polygon | No | +| `center` |`[, `TyF64`, `TyF64`]`| The center point of the polygon | No | | `inscribed` |`boolean`| Whether the polygon is inscribed (true) or circumscribed (false) about a circle with the specified radius | No | diff --git a/docs/kcl/types/TangentialArcData.md b/docs/kcl/types/TangentialArcData.md index c5b2c854c..7b624e75a 100644 --- a/docs/kcl/types/TangentialArcData.md +++ b/docs/kcl/types/TangentialArcData.md @@ -16,7 +16,7 @@ Data to draw a tangential arc. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `radius` |[`number`](/docs/kcl/types/number)| Radius of the arc. Not to be confused with Raiders of the Lost Ark. | No | -| `offset` |[`number`](/docs/kcl/types/number)| Offset of the arc, in degrees. | No | +| `radius` |`TyF64`| Radius of the arc. Not to be confused with Raiders of the Lost Ark. | No | +| `offset` |`TyF64`| Offset of the arc, in degrees. | No | diff --git a/docs/kcl/types/UnitAngle.md b/docs/kcl/types/UnitAngle.md index a9660e2cf..09a6aa892 100644 --- a/docs/kcl/types/UnitAngle.md +++ b/docs/kcl/types/UnitAngle.md @@ -43,6 +43,21 @@ A unit of angle. ---- +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Unknown`| | No | + + +---- + diff --git a/docs/kcl/types/UnitLen.md b/docs/kcl/types/UnitLen.md index 747440241..5e00e5c39 100644 --- a/docs/kcl/types/UnitLen.md +++ b/docs/kcl/types/UnitLen.md @@ -103,6 +103,21 @@ A unit of length. ---- +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `Unknown`| | No | + + +---- + diff --git a/docs/kcl/types/tag.md b/docs/kcl/types/tag.md index b4c6014b5..3e4639057 100644 --- a/docs/kcl/types/tag.md +++ b/docs/kcl/types/tag.md @@ -14,15 +14,17 @@ way: ```js startSketchOn('XZ') |> startProfileAt(origin, %) - |> angledLine({angle = 0, length = 191.26}, %, $rectangleSegmentA001) - |> angledLine({ + |> angledLine(angle = 0, length = 191.26, tag = $rectangleSegmentA001) + |> angledLine( angle = segAng(rectangleSegmentA001) - 90, length = 196.99, - }, %, $rectangleSegmentB001) - |> angledLine({ + tag = $rectangleSegmentB001, + ) + |> angledLine( angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), - }, %, $rectangleSegmentC001) + tag = $rectangleSegmentC001, + ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() ``` @@ -46,15 +48,16 @@ However if the code was written like this: fn rect(origin) { return startSketchOn('XZ') |> startProfileAt(origin, %) - |> angledLine({angle = 0, length = 191.26}, %, $rectangleSegmentA001) - |> angledLine({ + |> angledLine(angle = 0, length = 191.26, tag = $rectangleSegmentA001) + |> angledLine( angle = segAng(rectangleSegmentA001) - 90, - length = 196.99 - }, %, $rectangleSegmentB001) - |> angledLine({ + length = 196.99, + tag = $rectangleSegmentB001) + |> angledLine( angle = segAng(rectangleSegmentA001), - length = -segLen(rectangleSegmentA001) - }, %, $rectangleSegmentC001) + length = -segLen(rectangleSegmentA001), + tag = $rectangleSegmentC001 + ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() } @@ -74,15 +77,15 @@ For example the following code works. fn rect(origin) { return startSketchOn('XZ') |> startProfileAt(origin, %) - |> angledLine({angle = 0, length = 191.26}, %, $rectangleSegmentA001) - |> angledLine({ + |> angledLine(angle = 0, length = 191.26, tag = $rectangleSegmentA001) + |> angledLine( angle = segAng(rectangleSegmentA001) - 90, length = 196.99 - }, %, $rectangleSegmentB001) - |> angledLine({ + , %, $rectangleSegmentB001) + |> angledLine( angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001) - }, %, $rectangleSegmentC001) + , %, $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() } diff --git a/docs/kcl/union.md b/docs/kcl/union.md index c01ada45b..b192d282f 100644 --- a/docs/kcl/union.md +++ b/docs/kcl/union.md @@ -4,14 +4,15 @@ excerpt: "Union two or more solids into a single solid." layout: manual --- -**WARNING:** This function is deprecated. - Union two or more solids into a single solid. ```js -union(solids: [Solid]): [Solid] +union( + solids: [Solid], + tolerance?: number, +): [Solid] ``` @@ -20,6 +21,7 @@ union(solids: [Solid]): [Solid] | Name | Type | Description | Required | |----------|------|-------------|----------| | `solids` | [`[Solid]`](/docs/kcl/types/Solid) | The solids to union. | Yes | +| `tolerance` | [`number`](/docs/kcl/types/number) | The tolerance to use for the union operation. | No | ### Returns @@ -32,23 +34,24 @@ union(solids: [Solid]): [Solid] // Union two cubes using the stdlib functions. -fn cube(center) { +fn cube(center, size) { return startSketchOn(XY) - |> startProfileAt([center[0] - 10, center[1] - 10], %) - |> line(endAbsolute = [center[0] + 10, center[1] - 10]) - |> line(endAbsolute = [center[0] + 10, center[1] + 10]) - |> line(endAbsolute = [center[0] - 10, center[1] + 10]) + |> startProfileAt([center[0] - size, center[1] - size], %) + |> line(endAbsolute = [center[0] + size, center[1] - size]) + |> line(endAbsolute = [center[0] + size, center[1] + size]) + |> line(endAbsolute = [center[0] - size, center[1] + size]) |> close() |> extrude(length = 10) } -part001 = cube([0, 0]) -part002 = cube([20, 10]) +part001 = cube([0, 0], 10) +part002 = cube([7, 3], 5) + |> translate(z = 1) unionedPart = union([part001, part002]) ``` -![Rendered example of union 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAD3iElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquu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ddVVV1111VVXXXXVVf8pqFx11VVXXfV83XfffbcCHDt2jP8MtrmfJP6z2eZ+kvivZJsHksR/F9s8N0n8T2Ob50cS/1fZ5l9DElddddVVV1111VVXXXXVv4jKVVddddVVz9c//MM//A7Azs4O/9lscz9J/GezzQNJ4r+SbR5IEv+dbPNAkvifyjbPjyT+v7HNv4Ukrrrqqquuuuqqq6666v8RKlddddVVVz1fZ8+evRXg2LFj2AZAEv/ZbHM/SfxXsM39JPFfzTb3k8R/N9s8N0n8T2ab50cSVz0n2/xnk8R/F9tcddVVV1111VVXXXXVAxBcddVVV131fN1333233nfffbceO3aMW265BQDb2MY2/xVsYxvb/FexjW1s89/BNraxjW3+p7CNbWxjm/8tbGMb29jGNraxzVX/eWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sc1VV1111VVXXXXVVVc9F4KrrrrqqqteoLNnz97KC2Ab29jmv4JtbGOb/yq2sY1tbPPfwTa2sY1t/qewjW1sYxvb/G9jG9vYxja2sY1trrrqqquuuuqqq6666qr/M6hcddVVV131Av393//9b7/Yi73Ya7/4i784/1NJ4r+DJP4nkMRV//UkcdVVV1111VVXXXXVVVf9r0DlqquuuuqqF+gf/uEffue+++679SVe4iUe/BIv8RJcddVVV/1f8A//8A+/zVVXXXXVVVddddVV/1+gBz3oQVx11VVXXfWCvdiLvdhrv9M7vdNncdVVV131f8RnfuZnvg5XXXXVVVddddVVV/1/gR70oAdx1VVXXXXVVVddddVVV1111VVXXXXVVVf9n0Tlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V/GPS3YW338jIp4AAAAASUVORK5CYII=) +![Rendered example of union 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADzVElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVX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BsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCe6ezZs7fed999t3LVVVddddVV/z3Qgx70IK666qqrrrrqqquuuuqqq6666qqrrrrqqv+TqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X8U/Arqr2cdD02ooAAAAAElFTkSuQmCC) ```js // Union two cubes using operators. @@ -56,24 +59,25 @@ unionedPart = union([part001, part002]) // Codemods will generate the stdlib function call instead. -fn cube(center) { +fn cube(center, size) { return startSketchOn(XY) - |> startProfileAt([center[0] - 10, center[1] - 10], %) - |> line(endAbsolute = [center[0] + 10, center[1] - 10]) - |> line(endAbsolute = [center[0] + 10, center[1] + 10]) - |> line(endAbsolute = [center[0] - 10, center[1] + 10]) + |> startProfileAt([center[0] - size, center[1] - size], %) + |> line(endAbsolute = [center[0] + size, center[1] - size]) + |> line(endAbsolute = [center[0] + size, center[1] + size]) + |> line(endAbsolute = [center[0] - size, center[1] + size]) |> close() |> extrude(length = 10) } -part001 = cube([0, 0]) -part002 = cube([20, 10]) +part001 = cube([0, 0], 10) +part002 = cube([7, 3], 5) + |> translate(z = 1) // This is the equivalent of: union([part001, part002]) unionedPart = part001 + part002 ``` -![Rendered example of union 1](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAD3iElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquu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ddVVV1111VVXXXXVVf8pqFx11VVXXfV83XfffbcCHDt2jP8MtrmfJP6z2eZ+kvivZJsHksR/F9s8N0n8T2Ob50cS/1fZ5l9DElddddVVV1111VVXXXXVv4jKVVddddVVz9c//MM//A7Azs4O/9lscz9J/GezzQNJ4r+SbR5IEv+dbPNAkvifyjbPjyT+v7HNv4Ukrrrqqquuuuqqq6666v8RKlddddVVVz1fZ8+evRXg2LFj2AZAEv/ZbHM/SfxXsM39JPFfzTb3k8R/N9s8N0n8T2ab50cSVz0n2/xnk8R/F9tcddVVV1111VVXXXXVAxBcddVVV131fN1333233nfffbceO3aMW265BQDb2MY2/xVsYxvb/FexjW1s89/BNraxjW3+p7CNbWxjm/8tbGMb29jGNraxzVX/eWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sc1VV1111VVXXXXVVVc9F4KrrrrqqqteoLNnz97KC2Ab29jmv4JtbGOb/yq2sY1tbPPfwTa2sY1t/qewjW1sYxvb/G9jG9vYxja2sY1trrrqqquuuuqqq6666qr/M6hcddVVV131Av393//9b7/Yi73Ya7/4i784/1NJ4r+DJP4nkMRV//UkcdVVV1111VVXXXXVVVf9r0DlqquuuuqqF+gf/uEffue+++679SVe4iUe/BIv8RJcddVVV/1f8A//8A+/zVVXXXXVVVddddVV/1+gBz3oQVx11VVXXfWCvdiLvdhrv9M7vdNncdVVV131f8RnfuZnvg5XXXXVVVddddVVV/1/gR70oAdx1VVXXXXVVVddddVVV1111VVXXXXVVVf9n0Tlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V/GPS3YW338jIp4AAAAASUVORK5CYII=) +![Rendered example of union 1](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADzVElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVX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BsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCe6ezZs7fed999t3LVVVddddVV/z3Qgx70IK666qqrrrrqqquuuuqqq6666qqrrrrqqv+TqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X8U/Arqr2cdD02ooAAAAAElFTkSuQmCC) ```js // Union two cubes using the more programmer-friendly operator. @@ -81,25 +85,26 @@ unionedPart = part001 + part002 // Codemods will generate the stdlib function call instead. -fn cube(center) { +fn cube(center, size) { return startSketchOn(XY) - |> startProfileAt([center[0] - 10, center[1] - 10], %) - |> line(endAbsolute = [center[0] + 10, center[1] - 10]) - |> line(endAbsolute = [center[0] + 10, center[1] + 10]) - |> line(endAbsolute = [center[0] - 10, center[1] + 10]) + |> startProfileAt([center[0] - size, center[1] - size], %) + |> line(endAbsolute = [center[0] + size, center[1] - size]) + |> line(endAbsolute = [center[0] + size, center[1] + size]) + |> line(endAbsolute = [center[0] - size, center[1] + size]) |> close() |> extrude(length = 10) } -part001 = cube([0, 0]) -part002 = cube([20, 10]) +part001 = cube([0, 0], 10) +part002 = cube([7, 3], 5) + |> translate(z = 1) -// This is the equivalent of: union([part001, part002]) -// Programmers will understand `|` as a union operation, but mechanical engineers + // This is the equivalent of: union([part001, part002]) + // Programmers will understand `|` as a union operation, but mechanical engineers // will understand `+`, we made both work. unionedPart = part001 | part002 ``` -![Rendered example of union 2](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAD3iElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquu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ddVVV1111VVXXXXVVf8pqFx11VVXXfV83XfffbcCHDt2jP8MtrmfJP6z2eZ+kvivZJsHksR/F9s8N0n8T2Ob50cS/1fZ5l9DElddddVVV1111VVXXXXVv4jKVVddddVVz9c//MM//A7Azs4O/9lscz9J/GezzQNJ4r+SbR5IEv+dbPNAkvifyjbPjyT+v7HNv4Ukrrrqqquuuuqqq6666v8RKlddddVVVz1fZ8+evRXg2LFj2AZAEv/ZbHM/SfxXsM39JPFfzTb3k8R/N9s8N0n8T2ab50cSVz0n2/xnk8R/F9tcddVVV1111VVXXXXVAxBcddVVV131fN1333233nfffbceO3aMW265BQDb2MY2/xVsYxvb/FexjW1s89/BNraxjW3+p7CNbWxjm/8tbGMb29jGNraxzVX/eWxjG9vYxja2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxja2sc1VV1111VVXXXXVVVc9F4KrrrrqqqteoLNnz97KC2Ab29jmv4JtbGOb/yq2sY1tbPPfwTa2sY1t/qewjW1sYxvb/G9jG9vYxja2sY1trrrqqquuuuqqq6666qr/M6hcddVVV131Av393//9b7/Yi73Ya7/4i784/1NJ4r+DJP4nkMRV//UkcdVVV1111VVXXXXVVVf9r0DlqquuuuqqF+gf/uEffue+++679SVe4iUe/BIv8RJcddVVV/1f8A//8A+/zVVXXXXVVVddddVV/1+gBz3oQVx11VVXXfWCvdiLvdhrv9M7vdNncdVVV131f8RnfuZnvg5XXXXVVVddddVVV/1/gR70oAdx1VVXXXXVVVddddVVV1111VVXXXXVVVf9n0Tlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V/GPS3YW338jIp4AAAAASUVORK5CYII=) +![Rendered example of union 2](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAADzVElEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a8+6EEP4qqrrrrqqquuuuqqq6666qqrrrrqqquu+j+JylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVX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BsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCekwHxnAyI52RAPCcD4jkZEM/JgHhOBsRzMiCe6ezZs7fed999t3LVVVddddVV/z3Qgx70IK666qqrrrrqqquuuuqqq6666qqrrrrqqv+TqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X8U/Arqr2cdD02ooAAAAAElFTkSuQmCC) diff --git a/docs/kcl/xLine.md b/docs/kcl/xLine.md index 32c70c065..1614e2dc5 100644 --- a/docs/kcl/xLine.md +++ b/docs/kcl/xLine.md @@ -38,10 +38,10 @@ xLine( exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> xLine(length = 15) - |> angledLine({ angle = 80, length = 15 }, %) + |> angledLine(angle = 80, length = 15) |> line(end = [8, -10]) |> xLine(length = 10) - |> angledLine({ angle = 120, length = 30 }, %) + |> angledLine(angle = 120, length = 30) |> xLine(length = -15) |> close() diff --git a/docs/kcl/yLine.md b/docs/kcl/yLine.md index b8ab0b992..6f7d38e20 100644 --- a/docs/kcl/yLine.md +++ b/docs/kcl/yLine.md @@ -38,7 +38,7 @@ yLine( exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> yLine(length = 15) - |> angledLine({ angle = 30, length = 15 }, %) + |> angledLine(angle = 30, length = 15) |> line(end = [8, -10]) |> yLine(length = -5) |> close() diff --git a/e2e/playwright/basic-sketch.spec.ts b/e2e/playwright/basic-sketch.spec.ts index adf2270bf..d386bda7e 100644 --- a/e2e/playwright/basic-sketch.spec.ts +++ b/e2e/playwright/basic-sketch.spec.ts @@ -137,7 +137,7 @@ async function doBasicSketch( await page.waitForTimeout(100) } - await page.getByRole('button', { name: 'Length: open menu' }).click() + await page.getByRole('button', { name: 'constraints: open menu' }).click() await page.getByRole('button', { name: 'Equal Length' }).click() // Open the code pane. diff --git a/e2e/playwright/boolean.spec.ts b/e2e/playwright/boolean.spec.ts index 3b493bb8f..62bc43393 100644 --- a/e2e/playwright/boolean.spec.ts +++ b/e2e/playwright/boolean.spec.ts @@ -38,7 +38,7 @@ test.describe('Point and click for boolean workflows', () => { path.resolve( __dirname, '../../', - './rust/kcl-lib/e2e/executor/inputs/boolean-setup-with' + './rust/kcl-lib/e2e/executor/inputs/boolean-setup-with-sketch-on-faces.kcl' ), 'utf-8' ) diff --git a/e2e/playwright/code-pane-and-errors.spec.ts b/e2e/playwright/code-pane-and-errors.spec.ts index 76585cbe4..3a66167a5 100644 --- a/e2e/playwright/code-pane-and-errors.spec.ts +++ b/e2e/playwright/code-pane-and-errors.spec.ts @@ -1,4 +1,4 @@ -import { bracket } from '@src/lib/exampleKcl' +import { bracket } from '@e2e/playwright/fixtures/bracket' import fsp from 'fs/promises' import { join } from 'path' diff --git a/e2e/playwright/desktop-export.spec.ts b/e2e/playwright/desktop-export.spec.ts index 4d5124cc9..167cc342b 100644 --- a/e2e/playwright/desktop-export.spec.ts +++ b/e2e/playwright/desktop-export.spec.ts @@ -38,7 +38,6 @@ test( await expect(projectName).toBeVisible() await projectName.click() await scene.settled(cmdBar) - await page.waitForTimeout(1_000) // wait for panel buttons to be available // Expect zero errors in gutter await expect(page.locator('.cm-lint-marker-error')).not.toBeVisible() @@ -48,10 +47,9 @@ test( await expect(exportButton).toBeVisible() await exportButton.click() - await page.waitForTimeout(1_000) // wait for export options to be available // Select the first format option - const gltfOption = page.getByText('glTF') + const gltfOption = cmdBar.selectOption({ name: 'glTF' }) const exportFileName = `main.gltf` // source file is named `main.kcl` await expect(gltfOption).toBeVisible() await page.keyboard.press('Enter') @@ -59,7 +57,6 @@ test( // Click the checkbox const submitButton = page.getByText('Confirm Export') await expect(submitButton).toBeVisible() - await page.waitForTimeout(500) await page.keyboard.press('Enter') // Look out for the toast message @@ -120,10 +117,9 @@ test( const exportButton = page.getByTestId('export-pane-button') await expect(exportButton).toBeVisible() await exportButton.click() - await page.waitForTimeout(1_000) // wait for export options to be available // Select the first format option - const gltfOption = page.getByText('glTF') + const gltfOption = cmdBar.selectOption({ name: 'glTF' }) const exportFileName = `other.gltf` // source file is named `other.kcl` await expect(gltfOption).toBeVisible() await page.keyboard.press('Enter') @@ -131,7 +127,6 @@ test( // Click the checkbox const submitButton = page.getByText('Confirm Export') await expect(submitButton).toBeVisible() - await page.waitForTimeout(500) await page.keyboard.press('Enter') // Look out for the toast message diff --git a/e2e/playwright/editor-tests.spec.ts b/e2e/playwright/editor-tests.spec.ts index de0c4bdcf..597358b69 100644 --- a/e2e/playwright/editor-tests.spec.ts +++ b/e2e/playwright/editor-tests.spec.ts @@ -731,7 +731,7 @@ sketch_001 = startSketchOn(XY) |> close() |> extrude(length = 10) - sketch001 = startSketchOn(box, revolveAxis) + sketch001 = startSketchOn(box, face = revolveAxis) |> startProfileAt([5, 10], %) |> line(end = [0, -10]) |> line(end = [2, 0]) @@ -920,7 +920,7 @@ sketch001 = startSketchOn(XZ) `sketch001 = startSketchOn(XZ) |> startProfileAt([4.61, -14.01], %) |> line(end = [12.73, -0.09]) - |> tangentialArcTo([24.95, -5.38], %) + |> tangentialArc(endAbsolute = [24.95, -5.38]) |> close()` ) }) @@ -969,7 +969,7 @@ sketch001 = startSketchOn(XZ) // expect the code to have changed await expect(page.locator('.cm-content')).toHaveText( - `sketch001 = startSketchOn(XZ) |> startProfileAt([4.61, -14.01], %) |> line(end = [12.73, -0.09]) |> tangentialArcTo([24.95, -5.38], %) |> close()extrude001 = extrude(sketch001, length = 5)` + `sketch001 = startSketchOn(XZ) |> startProfileAt([4.61, -14.01], %) |> line(end = [12.73, -0.09]) |> tangentialArc(endAbsolute = [24.95, -5.38]) |> close()extrude001 = extrude(sketch001, length = 5)` ) // Now hit undo @@ -982,7 +982,7 @@ sketch001 = startSketchOn(XZ) .toHaveText(`sketch001 = startSketchOn(XZ) |> startProfileAt([4.61, -14.01], %) |> line(end = [12.73, -0.09]) - |> tangentialArcTo([24.95, -5.38], %) + |> tangentialArc(endAbsolute = [24.95, -5.38]) |> close()`) }) @@ -998,7 +998,7 @@ sketch001 = startSketchOn(XZ) sketch001 = startSketchOn(XZ) |> startProfileAt([4.61, -10.01], %) |> line(end = [12.73, -0.09]) - |> tangentialArcTo([24.95, -0.38], %) + |> tangentialArc(endAbsolute = [24.95, -0.38]) |> close() |> extrude(length = 5)` ) @@ -1072,7 +1072,7 @@ sketch001 = startSketchOn(XZ) // we wait so it saves the code await page.waitForTimeout(800) - // drag tangentialArcTo handle + // drag tangentialArc handle const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]') await page.dragAndDrop('#stream', '#stream', { sourcePosition: { x: tangentEnd.x + 10, y: tangentEnd.y - 5 }, @@ -1089,7 +1089,7 @@ sketch001 = startSketchOn(XZ) `sketch001 = startSketchOn(XZ) |> startProfileAt([2.71, -2.71], %) |> line(end = [15.4, -2.78]) - |> tangentialArcTo([27.6, -3.05], %) + |> tangentialArc(endAbsolute = [27.6, -3.05]) |> close() |> extrude(length = 5)`, { shouldNormalise: true } @@ -1104,7 +1104,7 @@ sketch001 = startSketchOn(XZ) `sketch001 = startSketchOn(XZ) |> startProfileAt([2.71, -2.71], %) |> line(end = [15.4, -2.78]) - |> tangentialArcTo([24.95, -0.38], %) + |> tangentialArc(endAbsolute = [24.95, -0.38]) |> close() |> extrude(length = 5)`, { shouldNormalise: true } @@ -1119,7 +1119,7 @@ sketch001 = startSketchOn(XZ) `sketch001 = startSketchOn(XZ) |> startProfileAt([2.71, -2.71], %) |> line(end = [12.73, -0.09]) - |> tangentialArcTo([24.95, -0.38], %) + |> tangentialArc(endAbsolute = [24.95, -0.38]) |> close() |> extrude(length = 5)`, { shouldNormalise: true } @@ -1135,7 +1135,7 @@ sketch001 = startSketchOn(XZ) `sketch001 = startSketchOn(XZ) |> startProfileAt([4.61, -10.01], %) |> line(end = [12.73, -0.09]) - |> tangentialArcTo([24.95, -0.38], %) + |> tangentialArc(endAbsolute = [24.95, -0.38]) |> close() |> extrude(length = 5)`, { shouldNormalise: true } @@ -1144,7 +1144,7 @@ sketch001 = startSketchOn(XZ) ) test( - `Can use the import stdlib function on a local OBJ file`, + `Can import a local OBJ file`, { tag: '@electron' }, async ({ page, context }, testInfo) => { test.fixme(orRunWhenFullSuiteEnabled()) @@ -1194,7 +1194,7 @@ sketch001 = startSketchOn(XZ) .toBeLessThan(15) }) await test.step(`Write the import function line`, async () => { - await u.codeLocator.fill(`import('cube.obj')`) + await u.codeLocator.fill(`import 'cube.obj'\ncube`) await page.waitForTimeout(800) }) await test.step(`Reset the camera before checking`, async () => { @@ -1353,4 +1353,51 @@ sketch001 = startSketchOn(XZ) 15 ) }) + + test(`test-toolbar-buttons`, async ({ + page, + homePage, + toolbar, + scene, + cmdBar, + }) => { + await test.step('Load an empty file', async () => { + await page.addInitScript(async () => { + localStorage.setItem('persistCode', '') + }) + await page.setBodyDimensions({ width: 1200, height: 500 }) + await homePage.goToModelingScene() + + // wait until scene is ready to be interacted with + await scene.connectionEstablished() + await scene.settled(cmdBar) + }) + + await test.step('Test toolbar button correct selection', async () => { + await toolbar.expectToolbarMode.toBe('modeling') + + await toolbar.startSketchPlaneSelection() + + // Click on a default plane + await page.mouse.click(700, 200) + + // tools cannot be selected immediately, couldn't find an event to await instead. + await page.waitForTimeout(1000) + + await toolbar.selectCenterRectangle() + + await expect(page.getByTestId('center-rectangle')).toHaveAttribute( + 'aria-pressed', + 'true' + ) + }) + + await test.step('Test Toolbar dropdown remembering last selection', async () => { + // Select another tool + await page.getByTestId('circle-center').click() + + // center-rectangle should still be the active option in the rectangle dropdown + await expect(page.getByTestId('center-rectangle')).toBeVisible() + }) + }) }) diff --git a/e2e/playwright/feature-tree-pane.spec.ts b/e2e/playwright/feature-tree-pane.spec.ts index 019f6c9e4..b91dfb4fa 100644 --- a/e2e/playwright/feature-tree-pane.spec.ts +++ b/e2e/playwright/feature-tree-pane.spec.ts @@ -19,7 +19,7 @@ length001 = timesFive(1) * 5 sketch001 = startSketchOn(XZ) |> startProfileAt([20, 10], %) |> line(end = [10, 10]) - |> angledLine([-45, length001], %) + |> angledLine(angle = -45, length = length001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() revolve001 = revolve(sketch001, axis = X) @@ -38,19 +38,13 @@ extrude001 = extrude(sketch002, length = 10) const FEATURE_TREE_SKETCH_CODE = `sketch001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine([0, 4], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 2 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = 4, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 2, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close(%) extrude001 = extrude(sketch001, length = 10) -sketch002 = startSketchOn(extrude001, rectangleSegmentB001) +sketch002 = startSketchOn(extrude001, face = rectangleSegmentB001) |> circle( center = [-1, 2], radius = .5 @@ -200,7 +194,7 @@ test.describe('Feature Tree pane', () => { highlightedCode: '', diagnostics: [], activeLines: [ - 'sketch002=startSketchOn(extrude001,rectangleSegmentB001)', + 'sketch002=startSketchOn(extrude001,face=rectangleSegmentB001)', ], }) await toolbar.exitSketchBtn.click() diff --git a/e2e/playwright/fixtures/bracket.ts b/e2e/playwright/fixtures/bracket.ts new file mode 100644 index 000000000..d17bd431f --- /dev/null +++ b/e2e/playwright/fixtures/bracket.ts @@ -0,0 +1,16 @@ +import fs from 'fs' +import path from 'path' + +export const bracket = fs.readFileSync( + path.resolve( + __dirname, + '..', + '..', + '..', + 'public', + 'kcl-samples', + 'bracket', + 'main.kcl' + ), + 'utf8' +) diff --git a/e2e/playwright/fixtures/homePageFixture.ts b/e2e/playwright/fixtures/homePageFixture.ts index 07044ae37..09d77b014 100644 --- a/e2e/playwright/fixtures/homePageFixture.ts +++ b/e2e/playwright/fixtures/homePageFixture.ts @@ -99,7 +99,6 @@ export class HomePageFixture { createAndGoToProject = async (projectTitle = 'untitled') => { await this.projectsLoaded() await this.projectButtonNew.click() - await this.projectTextName.click() await this.projectTextName.fill(projectTitle) await this.projectButtonContinue.click() } diff --git a/e2e/playwright/fixtures/sceneFixture.ts b/e2e/playwright/fixtures/sceneFixture.ts index 81d2c064e..c054e9a08 100644 --- a/e2e/playwright/fixtures/sceneFixture.ts +++ b/e2e/playwright/fixtures/sceneFixture.ts @@ -49,7 +49,9 @@ export class SceneFixture { constructor(page: Page) { this.page = page this.streamWrapper = page.getByTestId('stream') - this.networkToggleConnected = page.getByTestId('network-toggle-ok') + this.networkToggleConnected = page + .getByTestId('network-toggle-ok') + .or(page.getByTestId('network-toggle-other')) this.startEditSketchBtn = page .getByRole('button', { name: 'Start Sketch' }) .or(page.getByRole('button', { name: 'Edit Sketch' })) @@ -231,7 +233,7 @@ export class SceneFixture { settled = async (cmdBar: CmdBarFixture) => { const u = await getUtils(this.page) - await expect(this.startEditSketchBtn).not.toBeDisabled() + await expect(this.startEditSketchBtn).not.toBeDisabled({ timeout: 15_000 }) await expect(this.startEditSketchBtn).toBeVisible() await cmdBar.openCmdBar() diff --git a/e2e/playwright/fixtures/toolbarFixture.ts b/e2e/playwright/fixtures/toolbarFixture.ts index 07b2d8445..8b98af630 100644 --- a/e2e/playwright/fixtures/toolbarFixture.ts +++ b/e2e/playwright/fixtures/toolbarFixture.ts @@ -44,6 +44,7 @@ export class ToolbarFixture { featureTreePane!: Locator gizmo!: Locator gizmoDisabled!: Locator + insertButton!: Locator constructor(page: Page) { this.page = page @@ -78,6 +79,8 @@ export class ToolbarFixture { // element or two different elements can represent these states. this.gizmo = page.getByTestId('gizmo') this.gizmoDisabled = page.getByTestId('gizmo-disabled') + + this.insertButton = page.getByTestId('insert-pane-button') } get logoLink() { @@ -166,7 +169,7 @@ export class ToolbarFixture { } selectCenterRectangle = async () => { await this.page - .getByRole('button', { name: 'caret down Corner rectangle:' }) + .getByRole('button', { name: 'caret down rectangles:' }) .click() await expect( this.page.getByTestId('dropdown-center-rectangle') @@ -175,7 +178,7 @@ export class ToolbarFixture { } selectBoolean = async (operation: 'union' | 'subtract' | 'intersect') => { await this.page - .getByRole('button', { name: 'caret down Union: open menu' }) + .getByRole('button', { name: 'caret down booleans: open menu' }) .click() const operationTestId = `dropdown-boolean-${operation}` await expect(this.page.getByTestId(operationTestId)).toBeVisible() @@ -183,25 +186,19 @@ export class ToolbarFixture { } selectCircleThreePoint = async () => { - await this.page - .getByRole('button', { name: 'caret down Center circle:' }) - .click() + await this.page.getByRole('button', { name: 'caret down circles:' }).click() await expect( this.page.getByTestId('dropdown-circle-three-points') ).toBeVisible() await this.page.getByTestId('dropdown-circle-three-points').click() } selectArc = async () => { - await this.page - .getByRole('button', { name: 'caret down Tangential Arc:' }) - .click() + await this.page.getByRole('button', { name: 'caret down arcs:' }).click() await expect(this.page.getByTestId('dropdown-arc')).toBeVisible() await this.page.getByTestId('dropdown-arc').click() } selectThreePointArc = async () => { - await this.page - .getByRole('button', { name: 'caret down Tangential Arc:' }) - .click() + await this.page.getByRole('button', { name: 'caret down arcs:' }).click() await expect( this.page.getByTestId('dropdown-three-point-arc') ).toBeVisible() diff --git a/e2e/playwright/import-ui.spec.ts b/e2e/playwright/import-ui.spec.ts index b759c3930..56e7bea81 100644 --- a/e2e/playwright/import-ui.spec.ts +++ b/e2e/playwright/import-ui.spec.ts @@ -21,15 +21,9 @@ test.describe('Import UI tests', () => { path.join(projectDir, 'toBeImported.kcl'), `sketch001 = startSketchOn(XZ) profile001 = startProfileAt([281.54, 305.81], sketch001) - |> angledLine([0, 123.43], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 85.99 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 123.43, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 85.99) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude(profile001, length = 100)` @@ -44,20 +38,14 @@ importedCube sketch001 = startSketchOn(XZ) profile001 = startProfileAt([-134.53, -56.17], sketch001) - |> angledLine([0, 79.05], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 76.28 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $seg01) + |> angledLine(angle = 0, length = 79.05, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 76.28) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $seg01) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) |> close() extrude001 = extrude(profile001, length = 100) -sketch003 = startSketchOn(extrude001, seg02) -sketch002 = startSketchOn(extrude001, seg01)` +sketch003 = startSketchOn(extrude001, face = seg02) +sketch002 = startSketchOn(extrude001, face = seg01)` ) }) diff --git a/e2e/playwright/lib/api-reporter.ts b/e2e/playwright/lib/api-reporter.ts new file mode 100644 index 000000000..fab19d0ef --- /dev/null +++ b/e2e/playwright/lib/api-reporter.ts @@ -0,0 +1,63 @@ +import type { Reporter, TestCase, TestResult } from '@playwright/test/reporter' + +class MyAPIReporter implements Reporter { + onTestEnd(test: TestCase, result: TestResult): void { + if (!process.env.TAB_API_URL || !process.env.TAB_API_KEY) { + return + } + + const payload = { + // Required information + project: 'https://github.com/KittyCAD/modeling-app', + branch: process.env.GITHUB_HEAD_REF || process.env.GITHUB_REF_NAME || '', + commit: process.env.CI_COMMIT_SHA || process.env.GITHUB_SHA || '', + test: test.titlePath().slice(2).join(' › '), + status: result.status, + // Optional information + duration: result.duration / 1000, + message: result.error?.stack, + target: process.env.TARGET || null, + platform: process.env.RUNNER_OS || process.platform, + // Extra test and result data + annotations: test.annotations.map((a) => a.type), + retries: result.retry, + // Extra environment variables + CI_COMMIT_SHA: process.env.CI_COMMIT_SHA || null, + CI_PR_NUMBER: process.env.CI_PR_NUMBER || null, + GITHUB_BASE_REF: process.env.GITHUB_BASE_REF || null, + GITHUB_EVENT_NAME: process.env.GITHUB_EVENT_NAME || null, + GITHUB_HEAD_REF: process.env.GITHUB_HEAD_REF || null, + GITHUB_REF_NAME: process.env.GITHUB_REF_NAME || null, + GITHUB_REF: process.env.GITHUB_REF || null, + GITHUB_SHA: process.env.GITHUB_SHA || null, + GITHUB_WORKFLOW: process.env.GITHUB_WORKFLOW || null, + RUNNER_ARCH: process.env.RUNNER_ARCH || null, + } + + void (async () => { + try { + const response = await fetch(`${process.env.TAB_API_URL}/api/results`, { + method: 'POST', + headers: new Headers({ + 'Content-Type': 'application/json', + 'X-API-Key': process.env.TAB_API_KEY || '', + }), + body: JSON.stringify(payload), + }) + + if (!response.ok && !process.env.CI) { + console.error( + 'TAB API - Failed to send test result:', + await response.text() + ) + } + } catch { + if (!process.env.CI) { + console.error('TAB API - Unable to send test result') + } + } + })() + } +} + +export default MyAPIReporter diff --git a/e2e/playwright/named-views.spec.ts b/e2e/playwright/named-views.spec.ts index 1203d54d7..a95028bc6 100644 --- a/e2e/playwright/named-views.spec.ts +++ b/e2e/playwright/named-views.spec.ts @@ -6,7 +6,9 @@ import type { NamedView } from '@rust/kcl-lib/bindings/NamedView' import { createProject, - perProjectsettingsToToml, + orRunWhenFullSuiteEnabled, + perProjectSettingsToToml, + runningOnMac, tomlToPerProjectSettings, } from '@e2e/playwright/test-utils' import { expect, test } from '@e2e/playwright/zoo-test' @@ -57,10 +59,13 @@ function tomlStringOverWriteNamedViewUuids(toml: string): string { settings.settings.app.named_views = remappedNamedViews } } - return perProjectsettingsToToml(settings) + return perProjectSettingsToToml(settings) } test.describe('Named view tests', () => { + if (runningOnMac()) { + test.fixme(orRunWhenFullSuiteEnabled()) + } test('Verify project.toml is not created', async ({ page }, testInfo) => { // Create project and load it const projectName = 'named-views' @@ -104,6 +109,9 @@ test.describe('Named view tests', () => { PROJECT_SETTINGS_FILE_NAME ) + const toastMessage = page.getByText('Named view uuid1 created.') + await expect(toastMessage).toBeInViewport() + // Expect project.toml to be generated on disk since a named view was created await expect(async () => { let exists = await fileExists(tempProjectSettingsFilePath) @@ -129,7 +137,6 @@ test.describe('Named view tests', () => { }, testInfo) => { const projectName = 'named-views' const myNamedView1 = 'uuid1' - const myNamedView2 = 'uuid2' // Create project and go into the project await createProject({ name: projectName, page }) @@ -141,6 +148,9 @@ test.describe('Named view tests', () => { await cmdBar.argumentInput.fill(myNamedView1) await cmdBar.progressCmdBar(false) + let toastMessage = page.getByText('Named view uuid1 created.') + await expect(toastMessage).toBeInViewport() + // Generate file paths for project.toml const projectDirName = testInfo.outputPath('electron-test-projects-dir') const tempProjectSettingsFilePath = join( @@ -169,17 +179,20 @@ test.describe('Named view tests', () => { // Delete a named view await cmdBar.openCmdBar() await cmdBar.chooseCommand('delete named view') - cmdBar.selectOption({ name: myNamedView2 }) + cmdBar.selectOption({ name: myNamedView1 }) await cmdBar.progressCmdBar(false) + toastMessage = page.getByText('Named view uuid1 removed.') + await expect(toastMessage).toBeInViewport() + await expect(async () => { // Read project.toml into memory again since we deleted a named view let tomlString = await fsp.readFile(tempProjectSettingsFilePath, 'utf-8') // Rewrite the uuids in the named views to match snapshot otherwise they will be randomly generated from rust and break tomlString = tomlStringOverWriteNamedViewUuids(tomlString) - // // Write the entire tomlString to a snapshot. - // // There are many key/value pairs to check this is a safer match. + // Write the entire tomlString to a snapshot. + // There are many key/value pairs to check this is a safer match. expect(tomlString).toMatchSnapshot('verify-named-view-gets-deleted') }).toPass() }) @@ -201,6 +214,9 @@ test.describe('Named view tests', () => { await cmdBar.argumentInput.fill(myNamedView) await cmdBar.progressCmdBar(false) + let toastMessage = page.getByText('Named view uuid1 created.') + await expect(toastMessage).toBeInViewport() + // Generate file paths for project.toml const projectDirName = testInfo.outputPath('electron-test-projects-dir') const tempProjectSettingsFilePath = join( @@ -257,26 +273,19 @@ test.describe('Named view tests', () => { await cmdBar.argumentInput.fill(myNamedView1) await cmdBar.progressCmdBar(false) - await page.waitForTimeout(1000) + let toastMessage = page.getByText('Named view uuid1 created.') + await expect(toastMessage).toBeInViewport() - const orbitMouseStart = { x: 800, y: 130 } - const orbitMouseEnd = { x: 0, y: 130 } - await page.mouse.move(orbitMouseStart.x, orbitMouseStart.y) - await page.mouse.down({ button: 'middle' }) - await page.mouse.move(orbitMouseEnd.x, orbitMouseEnd.y, { - steps: 3, - }) - await page.mouse.up({ button: 'middle' }) - - await page.waitForTimeout(1000) + await scene.moveCameraTo({ x: 608, y: 0, z: 0 }, { x: 0, y: 0, z: 0 }) + await page.waitForTimeout(2500) await cmdBar.openCmdBar() await cmdBar.chooseCommand('create named view') await cmdBar.argumentInput.fill(myNamedView2) await cmdBar.progressCmdBar(false) - // Wait a moment for the project.toml to get written to disk with the new view point - await page.waitForTimeout(1000) + toastMessage = page.getByText('Named view uuid2 created.') + await expect(toastMessage).toBeInViewport() // Generate paths for the project.toml const tempProjectSettingsFilePath = join( diff --git a/e2e/playwright/named-views.spec.ts-snapshots/verify-named-view-gets-created-chromium-darwin b/e2e/playwright/named-views.spec.ts-snapshots/verify-named-view-gets-created-chromium-darwin new file mode 100644 index 000000000..04d37214a --- /dev/null +++ b/e2e/playwright/named-views.spec.ts-snapshots/verify-named-view-gets-created-chromium-darwin @@ -0,0 +1,16 @@ +[settings] +modeling = { } +text_editor = { } +command_bar = { } + +[settings.app.named_views.0656fb1a-9640-473e-b334-591dc70c0138] +name = "uuid1" +eye_offset = 1_378.0059 +fov_y = 45 +is_ortho = false +ortho_scale_enabled = true +ortho_scale_factor = 1.6 +pivot_position = [ 0, 0, 0 ] +pivot_rotation = [ 0.5380994, 0.0, 0.0, 0.8428814 ] +world_coord_system = "right_handed_up_z" +version = 1 diff --git a/e2e/playwright/named-views.spec.ts-snapshots/verify-named-view-gets-deleted-chromium-darwin b/e2e/playwright/named-views.spec.ts-snapshots/verify-named-view-gets-deleted-chromium-darwin new file mode 100644 index 000000000..e69de29bb diff --git a/e2e/playwright/named-views.spec.ts-snapshots/verify-named-view-gets-deleted-chromium-linux b/e2e/playwright/named-views.spec.ts-snapshots/verify-named-view-gets-deleted-chromium-linux index 04d37214a..535bdeed1 100644 --- a/e2e/playwright/named-views.spec.ts-snapshots/verify-named-view-gets-deleted-chromium-linux +++ b/e2e/playwright/named-views.spec.ts-snapshots/verify-named-view-gets-deleted-chromium-linux @@ -1,16 +1,5 @@ [settings] +app = { } modeling = { } text_editor = { } command_bar = { } - -[settings.app.named_views.0656fb1a-9640-473e-b334-591dc70c0138] -name = "uuid1" -eye_offset = 1_378.0059 -fov_y = 45 -is_ortho = false -ortho_scale_enabled = true -ortho_scale_factor = 1.6 -pivot_position = [ 0, 0, 0 ] -pivot_rotation = [ 0.5380994, 0.0, 0.0, 0.8428814 ] -world_coord_system = "right_handed_up_z" -version = 1 diff --git a/e2e/playwright/named-views.spec.ts-snapshots/verify-two-named-view-gets-created-chromium-darwin b/e2e/playwright/named-views.spec.ts-snapshots/verify-two-named-view-gets-created-chromium-darwin new file mode 100644 index 000000000..555dbad81 --- /dev/null +++ b/e2e/playwright/named-views.spec.ts-snapshots/verify-two-named-view-gets-created-chromium-darwin @@ -0,0 +1,28 @@ +[settings] +modeling = { } +text_editor = { } +command_bar = { } + +[settings.app.named_views.0656fb1a-9640-473e-b334-591dc70c0138] +name = "uuid1" +eye_offset = 1_378.0059 +fov_y = 45 +is_ortho = false +ortho_scale_enabled = true +ortho_scale_factor = 1.6 +pivot_position = [ 0, 0, 0 ] +pivot_rotation = [ 0.5380994, 0.0, 0.0, 0.8428814 ] +world_coord_system = "right_handed_up_z" +version = 1 + +[settings.app.named_views.c810cf04-c6cc-4a4a-8b11-17bf445dcab7] +name = "uuid2" +eye_offset = 1_378.0059 +fov_y = 45 +is_ortho = false +ortho_scale_enabled = true +ortho_scale_factor = 1.6 +pivot_position = [ 1_826.5239, 0.0, 0.0 ] +pivot_rotation = [ 0.5380994, 0.0, 0.0, 0.8428814 ] +world_coord_system = "right_handed_up_z" +version = 1 diff --git a/e2e/playwright/named-views.spec.ts-snapshots/verify-two-named-view-gets-created-chromium-linux b/e2e/playwright/named-views.spec.ts-snapshots/verify-two-named-view-gets-created-chromium-linux index 555dbad81..5723b4ac9 100644 --- a/e2e/playwright/named-views.spec.ts-snapshots/verify-two-named-view-gets-created-chromium-linux +++ b/e2e/playwright/named-views.spec.ts-snapshots/verify-two-named-view-gets-created-chromium-linux @@ -17,12 +17,12 @@ version = 1 [settings.app.named_views.c810cf04-c6cc-4a4a-8b11-17bf445dcab7] name = "uuid2" -eye_offset = 1_378.0059 +eye_offset = 608 fov_y = 45 is_ortho = false ortho_scale_enabled = true ortho_scale_factor = 1.6 -pivot_position = [ 1_826.5239, 0.0, 0.0 ] -pivot_rotation = [ 0.5380994, 0.0, 0.0, 0.8428814 ] +pivot_position = [ 0, 0, 0 ] +pivot_rotation = [ 0.5, 0.5, 0.5, 0.5 ] world_coord_system = "right_handed_up_z" version = 1 diff --git a/e2e/playwright/native-file-menu.spec.ts b/e2e/playwright/native-file-menu.spec.ts index 5ba57c57d..3b753794b 100644 --- a/e2e/playwright/native-file-menu.spec.ts +++ b/e2e/playwright/native-file-menu.spec.ts @@ -7,6 +7,7 @@ import { expect, test } from '@e2e/playwright/zoo-test' * Test file menu actions that trigger something in the frontend */ test.describe('Native file menu', { tag: ['@electron'] }, () => { + test.skip() // TODO: Reimplement native file menu tests test.describe('Home page', () => { test.describe('File role', () => { test('Home.File.Create project', async ({ tronApp, cmdBar, page }) => { @@ -570,6 +571,43 @@ test.describe('Native file menu', { tag: ['@electron'] }, () => { const expected = 'Open sample' expect(actual).toBe(expected) }) + test('Modeling.File.Insert from project file', async ({ + tronApp, + cmdBar, + page, + homePage, + scene, + }) => { + if (!tronApp) { + throwTronAppMissing() + return + } + await homePage.goToModelingScene() + await scene.settled(cmdBar) + + // Run electron snippet to find the Menu! + await page.waitForTimeout(100) // wait for createModelingPageMenu() to run + await tronApp.electron.evaluate(async ({ app }) => { + if (!app || !app.applicationMenu) { + throw new Error('app or app.applicationMenu is missing') + } + const openProject = app.applicationMenu.getMenuItemById( + 'File.Insert from project file' + ) + if (!openProject) { + throw new Error('File.Insert from project file') + } + openProject.click() + }) + // Check that the command bar is opened + await expect(cmdBar.cmdBarElement).toBeVisible() + // Check the placeholder project name exists + const actual = await cmdBar.cmdBarElement + .getByTestId('command-name') + .textContent() + const expected = 'Insert' + expect(actual).toBe(expected) + }) test('Modeling.File.Export current part', async ({ tronApp, cmdBar, diff --git a/e2e/playwright/onboarding-tests.spec.ts b/e2e/playwright/onboarding-tests.spec.ts index 63963431b..1e397c1ea 100644 --- a/e2e/playwright/onboarding-tests.spec.ts +++ b/e2e/playwright/onboarding-tests.spec.ts @@ -1,4 +1,4 @@ -import { bracket } from '@src/lib/exampleKcl' +import { bracket } from '@e2e/playwright/fixtures/bracket' import { onboardingPaths } from '@src/routes/Onboarding/paths' import fsp from 'fs/promises' import { join } from 'path' @@ -15,6 +15,7 @@ import { executorInputPath, getUtils, orRunWhenFullSuiteEnabled, + runningOnWindows, settingsToToml, } from '@e2e/playwright/test-utils' import { expect, test } from '@e2e/playwright/zoo-test' @@ -279,6 +280,9 @@ test.describe('Onboarding tests', () => { if (!tronApp) { fail() } + if (runningOnWindows()) { + test.fixme(orRunWhenFullSuiteEnabled()) + } await tronApp.cleanProjectDir({ app: { onboarding_status: '/parametric-modeling', diff --git a/e2e/playwright/point-click-assemblies.spec.ts b/e2e/playwright/point-click-assemblies.spec.ts new file mode 100644 index 000000000..0a61fe9c9 --- /dev/null +++ b/e2e/playwright/point-click-assemblies.spec.ts @@ -0,0 +1,292 @@ +import * as fsp from 'fs/promises' +import path from 'path' + +import type { CmdBarFixture } from '@e2e/playwright/fixtures/cmdBarFixture' +import type { ToolbarFixture } from '@e2e/playwright/fixtures/toolbarFixture' +import { + executorInputPath, + getUtils, + testsInputPath, +} from '@e2e/playwright/test-utils' +import { expect, test } from '@e2e/playwright/zoo-test' +import type { Page } from '@playwright/test' + +async function insertPartIntoAssembly( + path: string, + alias: string, + toolbar: ToolbarFixture, + cmdBar: CmdBarFixture, + page: Page +) { + await toolbar.insertButton.click() + await cmdBar.selectOption({ name: path }).click() + await cmdBar.expectState({ + stage: 'arguments', + currentArgKey: 'localName', + currentArgValue: '', + headerArguments: { Path: path, LocalName: '' }, + highlightedHeaderArg: 'localName', + commandName: 'Insert', + }) + await page.keyboard.insertText(alias) + await cmdBar.progressCmdBar() + await cmdBar.expectState({ + stage: 'review', + headerArguments: { Path: path, LocalName: alias }, + commandName: 'Insert', + }) + await cmdBar.progressCmdBar() +} + +// test file is for testing point an click code gen functionality that's assemblies related +test.describe('Point-and-click assemblies tests', () => { + test( + `Insert kcl parts into assembly as whole module import`, + { tag: ['@electron'] }, + async ({ + context, + page, + homePage, + scene, + editor, + toolbar, + cmdBar, + tronApp, + }) => { + if (!tronApp) { + fail() + } + + const midPoint = { x: 500, y: 250 } + const partPoint = { x: midPoint.x + 30, y: midPoint.y - 30 } // mid point, just off top right + const defaultPlanesColor: [number, number, number] = [180, 220, 180] + const partColor: [number, number, number] = [100, 100, 100] + const tolerance = 50 + const u = await getUtils(page) + const gizmo = page.locator('[aria-label*=gizmo]') + const resetCameraButton = page.getByRole('button', { name: 'Reset view' }) + + await test.step('Setup parts and expect empty assembly scene', async () => { + const projectName = 'assembly' + await context.folderSetupFn(async (dir) => { + const bracketDir = path.join(dir, projectName) + await fsp.mkdir(bracketDir, { recursive: true }) + await Promise.all([ + fsp.copyFile( + executorInputPath('cylinder.kcl'), + path.join(bracketDir, 'cylinder.kcl') + ), + fsp.copyFile( + executorInputPath('e2e-can-sketch-on-chamfer.kcl'), + path.join(bracketDir, 'bracket.kcl') + ), + fsp.copyFile( + testsInputPath('cube.step'), + path.join(bracketDir, 'cube.step') + ), + fsp.writeFile(path.join(bracketDir, 'main.kcl'), ''), + ]) + }) + await page.setBodyDimensions({ width: 1000, height: 500 }) + await homePage.openProject(projectName) + await scene.settled(cmdBar) + await toolbar.closePane('code') + await scene.expectPixelColor(defaultPlanesColor, midPoint, tolerance) + }) + + await test.step('Insert kcl as first part as module', async () => { + await insertPartIntoAssembly( + 'cylinder.kcl', + 'cylinder', + toolbar, + cmdBar, + page + ) + await toolbar.openPane('code') + await editor.expectEditor.toContain( + ` + import "cylinder.kcl" as cylinder + cylinder + `, + { shouldNormalise: true } + ) + await scene.settled(cmdBar) + + // Check scene for changes + await toolbar.closePane('code') + await u.doAndWaitForCmd(async () => { + await gizmo.click({ button: 'right' }) + await resetCameraButton.click() + }, 'zoom_to_fit') + await toolbar.closePane('debug') + await scene.expectPixelColor(partColor, partPoint, tolerance) + await toolbar.openPane('code') + }) + + await test.step('Insert kcl second part as module', async () => { + await insertPartIntoAssembly( + 'bracket.kcl', + 'bracket', + toolbar, + cmdBar, + page + ) + await editor.expectEditor.toContain( + ` + import "cylinder.kcl" as cylinder + import "bracket.kcl" as bracket + cylinder + bracket + `, + { shouldNormalise: true } + ) + await scene.settled(cmdBar) + }) + + await test.step('Insert a second time and expect error', async () => { + // TODO: revisit once we have clone with #6209 + await insertPartIntoAssembly( + 'bracket.kcl', + 'bracket', + toolbar, + cmdBar, + page + ) + await editor.expectEditor.toContain( + ` + import "cylinder.kcl" as cylinder + import "bracket.kcl" as bracket + import "bracket.kcl" as bracket + cylinder + bracket + bracket + `, + { shouldNormalise: true } + ) + await scene.settled(cmdBar) + await expect(page.locator('.cm-lint-marker-error')).toBeVisible() + }) + } + ) + + test( + `Insert foreign parts into assembly as whole module import`, + { tag: ['@electron'] }, + async ({ + context, + page, + homePage, + scene, + editor, + toolbar, + cmdBar, + tronApp, + }) => { + if (!tronApp) { + fail() + } + + const midPoint = { x: 500, y: 250 } + const partPoint = { x: midPoint.x + 30, y: midPoint.y - 30 } // mid point, just off top right + const defaultPlanesColor: [number, number, number] = [180, 220, 180] + const partColor: [number, number, number] = [150, 150, 150] + const tolerance = 50 + + const complexPlmFileName = 'cube_Complex-PLM_Name_-001.sldprt' + const camelCasedSolidworksFileName = 'cubeComplexPLMName001' + + await test.step('Setup parts and expect empty assembly scene', async () => { + const projectName = 'assembly' + await context.folderSetupFn(async (dir) => { + const bracketDir = path.join(dir, projectName) + await fsp.mkdir(bracketDir, { recursive: true }) + await Promise.all([ + fsp.copyFile( + testsInputPath('cube.step'), + path.join(bracketDir, 'cube.step') + ), + fsp.copyFile( + testsInputPath('cube.sldprt'), + path.join(bracketDir, complexPlmFileName) + ), + fsp.writeFile(path.join(bracketDir, 'main.kcl'), ''), + ]) + }) + await page.setBodyDimensions({ width: 1000, height: 500 }) + await homePage.openProject(projectName) + await scene.settled(cmdBar) + await toolbar.closePane('code') + await scene.expectPixelColor(defaultPlanesColor, midPoint, tolerance) + }) + + await test.step('Insert step part as module', async () => { + await insertPartIntoAssembly('cube.step', 'cube', toolbar, cmdBar, page) + await toolbar.openPane('code') + await editor.expectEditor.toContain( + ` + import "cube.step" as cube + cube + `, + { shouldNormalise: true } + ) + await scene.settled(cmdBar) + + // TODO: remove this once #5780 is fixed + await page.reload() + + await scene.settled(cmdBar) + await expect(page.locator('.cm-lint-marker-error')).not.toBeVisible() + await toolbar.closePane('code') + await scene.expectPixelColor(partColor, partPoint, tolerance) + }) + + await test.step('Insert second step part by clicking', async () => { + await toolbar.openPane('files') + await toolbar.expectFileTreeState([ + complexPlmFileName, + 'cube.step', + 'main.kcl', + ]) + await toolbar.openFile(complexPlmFileName) + + // Go through the ToastInsert prompt + await page.getByText('Insert into my current file').click() + + // Check getPathFilenameInVariableCase output + const parsedValueFromFile = + await cmdBar.currentArgumentInput.inputValue() + expect(parsedValueFromFile).toEqual(camelCasedSolidworksFileName) + + // Continue on with the flow + await page.keyboard.insertText('cubeSw') + await cmdBar.progressCmdBar() + await cmdBar.expectState({ + stage: 'review', + headerArguments: { Path: complexPlmFileName, LocalName: 'cubeSw' }, + commandName: 'Insert', + }) + await cmdBar.progressCmdBar() + await toolbar.closePane('files') + await toolbar.openPane('code') + await editor.expectEditor.toContain( + ` + import "cube.step" as cube + import "${complexPlmFileName}" as cubeSw + cube + cubeSw + `, + { shouldNormalise: true } + ) + await scene.settled(cmdBar) + + // TODO: remove this once #5780 is fixed + await page.reload() + await scene.settled(cmdBar) + + await expect(page.locator('.cm-lint-marker-error')).not.toBeVisible() + await toolbar.closePane('code') + await scene.expectPixelColor(partColor, partPoint, tolerance) + }) + } + ) +}) diff --git a/e2e/playwright/point-click.spec.ts b/e2e/playwright/point-click.spec.ts index a8e6310b8..f269533b3 100644 --- a/e2e/playwright/point-click.spec.ts +++ b/e2e/playwright/point-click.spec.ts @@ -210,7 +210,7 @@ test.describe('Point-and-click tests', () => { clickCoords: { x: 570, y: 220 }, cameraPos: { x: 16020, y: -2000, z: 10500 }, cameraTarget: { x: -150, y: -4500, z: -80 }, - beforeChamferSnippet: `angledLine([segAng(rectangleSegmentA001)-90,217.26],%,$seg01) + beforeChamferSnippet: `angledLine(angle=segAng(rectangleSegmentA001)-90,length=217.26,tag=$seg01) chamfer(length = 30,tags = [ seg01, getNextAdjacentEdge(yo), @@ -220,12 +220,12 @@ test.describe('Point-and-click tests', () => { )`, afterChamferSelectSnippet: - 'sketch002 = startSketchOn(extrude001, seg03)', + 'sketch002 = startSketchOn(extrude001, face = seg03)', afterRectangle1stClickSnippet: 'startProfileAt([205.96, 254.59], sketch002)', - afterRectangle2ndClickSnippet: `angledLine([0,11.39],%,$rectangleSegmentA002) - |>angledLine([segAng(rectangleSegmentA002)-90,105.26],%) - |>angledLine([segAng(rectangleSegmentA002),-segLen(rectangleSegmentA002)],%) + afterRectangle2ndClickSnippet: `angledLine(angle=0,length=11.39,tag=$rectangleSegmentA002) + |>angledLine(angle=segAng(rectangleSegmentA002)-90,length=105.26) + |>angledLine(angle=segAng(rectangleSegmentA002),length=-segLen(rectangleSegmentA002)) |>line(endAbsolute=[profileStartX(%),profileStartY(%)]) |>close()`, }) @@ -234,10 +234,7 @@ test.describe('Point-and-click tests', () => { clickCoords: { x: 690, y: 250 }, cameraPos: { x: 16020, y: -2000, z: 10500 }, cameraTarget: { x: -150, y: -4500, z: -80 }, - beforeChamferSnippet: `angledLine([ - segAng(rectangleSegmentA001) - 90, - 217.26 - ], %, $seg01)chamfer( + beforeChamferSnippet: `angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01)chamfer( length = 30, tags = [ seg01, @@ -247,12 +244,12 @@ test.describe('Point-and-click tests', () => { )`, afterChamferSelectSnippet: - 'sketch003 = startSketchOn(extrude001, seg04)', + 'sketch003 = startSketchOn(extrude001, face = seg04)', afterRectangle1stClickSnippet: 'startProfileAt([-209.64, 255.28], sketch003)', - afterRectangle2ndClickSnippet: `angledLine([0,11.56],%,$rectangleSegmentA003) - |>angledLine([segAng(rectangleSegmentA003)-90,106.84],%) - |>angledLine([segAng(rectangleSegmentA003),-segLen(rectangleSegmentA003)],%) + afterRectangle2ndClickSnippet: `angledLine(angle=0,length=11.56,tag=$rectangleSegmentA003) + |>angledLine(angle=segAng(rectangleSegmentA003)-90,length=106.84) + |>angledLine(angle=segAng(rectangleSegmentA003),length=-segLen(rectangleSegmentA003)) |>line(endAbsolute=[profileStartX(%),profileStartY(%)]) |>close()`, }) @@ -261,7 +258,7 @@ test.describe('Point-and-click tests', () => { clickCoords: { x: 677, y: 87 }, cameraPos: { x: -6200, y: 1500, z: 6200 }, cameraTarget: { x: 8300, y: 1100, z: 4800 }, - beforeChamferSnippet: `angledLine([0, 268.43], %, $rectangleSegmentA001)chamfer( + beforeChamferSnippet: `angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001)chamfer( length = 30, tags = [ getNextAdjacentEdge(yo), @@ -269,12 +266,12 @@ test.describe('Point-and-click tests', () => { ] )`, afterChamferSelectSnippet: - 'sketch004 = startSketchOn(extrude001, seg05)', + 'sketch004 = startSketchOn(extrude001, face = seg05)', afterRectangle1stClickSnippet: 'startProfileAt([82.57, 322.96], sketch004)', - afterRectangle2ndClickSnippet: `angledLine([0,11.16],%,$rectangleSegmentA004) - |>angledLine([segAng(rectangleSegmentA004)-90,103.07],%) - |>angledLine([segAng(rectangleSegmentA004),-segLen(rectangleSegmentA004)],%) + afterRectangle2ndClickSnippet: `angledLine(angle=0,length=11.16,tag=$rectangleSegmentA004) + |>angledLine(angle=segAng(rectangleSegmentA004)-90,length=103.07) + |>angledLine(angle=segAng(rectangleSegmentA004),length=-segLen(rectangleSegmentA004)) |>line(endAbsolute=[profileStartX(%),profileStartY(%)]) |>close()`, }) @@ -287,12 +284,12 @@ test.describe('Point-and-click tests', () => { beforeChamferSnippetEnd: '|> chamfer(length = 30, tags = [getNextAdjacentEdge(yo)])', afterChamferSelectSnippet: - 'sketch005 = startSketchOn(extrude001, seg06)', + 'sketch005 = startSketchOn(extrude001, face = seg06)', afterRectangle1stClickSnippet: 'startProfileAt([-23.43, 19.69], sketch005)', - afterRectangle2ndClickSnippet: `angledLine([0,9.1],%,$rectangleSegmentA005) - |>angledLine([segAng(rectangleSegmentA005)-90,84.07],%) - |>angledLine([segAng(rectangleSegmentA005),-segLen(rectangleSegmentA005)],%) + afterRectangle2ndClickSnippet: `angledLine(angle=0,length=9.1,tag=$rectangleSegmentA005) + |>angledLine(angle=segAng(rectangleSegmentA005)-90,length=84.07) + |>angledLine(angle=segAng(rectangleSegmentA005),length=-segLen(rectangleSegmentA005)) |>line(endAbsolute=[profileStartX(%),profileStartY(%)]) |>close()`, }) @@ -302,15 +299,9 @@ test.describe('Point-and-click tests', () => { `@settings(defaultLengthUnit = in) sketch001 = startSketchOn(XZ) |> startProfileAt([75.8, 317.2], %) // [$startCapTag, $EndCapTag] - |> angledLine([0, 268.43], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 217.26 - ], %, $seg01) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $yo) + |> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $yo) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) |> close() extrude001 = extrude(sketch001, length = 100) @@ -318,50 +309,32 @@ extrude001 = extrude(sketch001, length = 100) |> chamfer(length = 30, tags = [seg01], tag = $seg04) |> chamfer(length = 30, tags = [getNextAdjacentEdge(seg02)], tag = $seg05) |> chamfer(length = 30, tags = [getNextAdjacentEdge(yo)], tag = $seg06) -sketch005 = startSketchOn(extrude001, seg06) +sketch005 = startSketchOn(extrude001, face = seg06) profile004=startProfileAt([-23.43,19.69], sketch005) - |> angledLine([0, 9.1], %, $rectangleSegmentA005) - |> angledLine([segAng(rectangleSegmentA005) - 90, 84.07], %) - |> angledLine([segAng(rectangleSegmentA005), -segLen(rectangleSegmentA005)], %) + |> angledLine(angle = 0, length = 9.1, tag = $rectangleSegmentA005) + |> angledLine(angle = segAng(rectangleSegmentA005) - 90, length = 84.07) + |> angledLine(angle = segAng(rectangleSegmentA005), length = -segLen(rectangleSegmentA005)) |> line(endAbsolute=[profileStartX(%), profileStartY(%)]) |> close() -sketch004 = startSketchOn(extrude001, seg05) +sketch004 = startSketchOn(extrude001, face = seg05) profile003 = startProfileAt([82.57, 322.96], sketch004) - |> angledLine([0, 11.16], %, $rectangleSegmentA004) - |> angledLine([ - segAng(rectangleSegmentA004) - 90, - 103.07 - ], %) - |> angledLine([ - segAng(rectangleSegmentA004), - -segLen(rectangleSegmentA004) - ], %) + |> angledLine(angle = 0, length = 11.16, tag = $rectangleSegmentA004) + |> angledLine(angle = segAng(rectangleSegmentA004) - 90, length = 103.07) + |> angledLine(angle = segAng(rectangleSegmentA004), length = -segLen(rectangleSegmentA004)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() -sketch003 = startSketchOn(extrude001, seg04) +sketch003 = startSketchOn(extrude001, face = seg04) profile002 = startProfileAt([-209.64, 255.28], sketch003) - |> angledLine([0, 11.56], %, $rectangleSegmentA003) - |> angledLine([ - segAng(rectangleSegmentA003) - 90, - 106.84 - ], %) - |> angledLine([ - segAng(rectangleSegmentA003), - -segLen(rectangleSegmentA003) - ], %) + |> angledLine(angle = 0, length = 11.56, tag = $rectangleSegmentA003) + |> angledLine(angle = segAng(rectangleSegmentA003) - 90, length = 106.84) + |> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() -sketch002 = startSketchOn(extrude001, seg03) +sketch002 = startSketchOn(extrude001, face = seg03) profile001 = startProfileAt([205.96, 254.59], sketch002) - |> angledLine([0, 11.39], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 105.26 - ], %) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %) + |> angledLine(angle = 0, length = 11.39, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 105.26) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() `, @@ -401,7 +374,7 @@ profile001 = startProfileAt([205.96, 254.59], sketch002) clickCoords: { x: 570, y: 220 }, cameraPos: { x: 16020, y: -2000, z: 10500 }, cameraTarget: { x: -150, y: -4500, z: -80 }, - beforeChamferSnippet: `angledLine([segAng(rectangleSegmentA001)-90,217.26],%,$seg01) + beforeChamferSnippet: `angledLine(angle=segAng(rectangleSegmentA001)-90,length=217.26,tag=$seg01) chamfer(extrude001,length=30,tags=[ seg01, getNextAdjacentEdge(yo), @@ -410,12 +383,12 @@ profile001 = startProfileAt([205.96, 254.59], sketch002) ])`, beforeChamferSnippetEnd: ')', afterChamferSelectSnippet: - 'sketch002 = startSketchOn(extrude001, seg03)', + 'sketch002 = startSketchOn(extrude001, face = seg03)', afterRectangle1stClickSnippet: 'startProfileAt([205.96, 254.59], sketch002)', - afterRectangle2ndClickSnippet: `angledLine([0,11.39],%,$rectangleSegmentA002) - |>angledLine([segAng(rectangleSegmentA002)-90,105.26],%) - |>angledLine([segAng(rectangleSegmentA002),-segLen(rectangleSegmentA002)],%) + afterRectangle2ndClickSnippet: `angledLine(angle=0,length=11.39,tag=$rectangleSegmentA002) + |>angledLine(angle=segAng(rectangleSegmentA002)-90,length=105.26) + |>angledLine(angle=segAng(rectangleSegmentA002),length=-segLen(rectangleSegmentA002)) |>line(endAbsolute=[profileStartX(%),profileStartY(%)]) |>close()`, }) @@ -423,15 +396,9 @@ profile001 = startProfileAt([205.96, 254.59], sketch002) `@settings(defaultLengthUnit = in) sketch001 = startSketchOn(XZ) |> startProfileAt([75.8, 317.2], %) - |> angledLine([0, 268.43], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 217.26 - ], %, $seg01) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $yo) + |> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $yo) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) |> close() extrude001 = extrude(sketch001, length = 100) @@ -449,17 +416,11 @@ chamf = chamfer( getNextAdjacentEdge(seg02) ], ) -sketch002 = startSketchOn(extrude001, seg03) +sketch002 = startSketchOn(extrude001, face = seg03) profile001 = startProfileAt([205.96, 254.59], sketch002) - |> angledLine([0, 11.39], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 105.26 - ], %) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %) + |> angledLine(angle = 0, length = 11.39, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 105.26) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() `, @@ -589,7 +550,7 @@ openSketch = startSketchOn(XY) |> startProfileAt([-5, 0], %) |> line(endAbsolute = [0, 5]) |> xLine(length = 5) - |> tangentialArcTo([10, 0], %) + |> tangentialArc(endAbsolute = [10, 0]) ` const viewPortSize = { width: 1000, height: 500 } await page.setBodyDimensions(viewPortSize) @@ -673,8 +634,8 @@ openSketch = startSketchOn(XY) // Wait for enter sketch mode to complete await page.waitForTimeout(500) await editor.expectState({ - activeLines: [`|>tangentialArcTo([10,0],%)`], - highlightedCode: 'tangentialArcTo([10,0],%)', + activeLines: [`|>tangentialArc(endAbsolute=[10,0])`], + highlightedCode: 'tangentialArc(endAbsolute=[10,0])', diagnostics: [], }) }) @@ -1663,7 +1624,7 @@ profile001 = circle(sketch001, center = [0, 0], radius = 500) sketch002 = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> xLine(length = -500) - |> tangentialArcTo([-2000, 500], %)`, + |> tangentialArc(endAbsolute = [-2000, 500])`, }, { targetType: 'rectangle', @@ -1671,21 +1632,15 @@ sketch002 = startSketchOn(XZ) initialCode: `@settings(defaultLengthUnit = in) sketch001 = startSketchOn(YZ) profile001 = startProfileAt([-400, -400], sketch001) - |> angledLine([0, 800], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) + 90, - 800 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 800, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = 800) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() sketch002 = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> xLine(length = -500) - |> tangentialArcTo([-2000, 500], %)`, + |> tangentialArc(endAbsolute = [-2000, 500])`, }, ] sweepCases.map(({ initialCode, targetType, testPoint }) => { @@ -2980,9 +2935,9 @@ extrude001 = extrude(sketch001, length = 30) const testPoint = { x: 575, y: 200 } const [clickOnCap] = scene.makeMouseHelpers(testPoint.x, testPoint.y) const shellDeclaration = - "shell001 = shell(extrude001, faces = ['end'], thickness = 5)" + 'shell001 = shell(extrude001, faces = [END], thickness = 5)' const editedShellDeclaration = - "shell001 = shell(extrude001, faces = ['end'], thickness = 2)" + 'shell001 = shell(extrude001, faces = [END], thickness = 2)' await test.step(`Look for the grey of the shape`, async () => { await scene.expectPixelColor([127, 127, 127], testPoint, 15) @@ -3124,9 +3079,9 @@ extrude001 = extrude(sketch001, length = 40) const [clickOnWall] = scene.makeMouseHelpers(testPoint.x, testPoint.y + 70) const mutatedCode = 'xLine(length = -40, tag = $seg01)' const shellDeclaration = - "shell001 = shell(extrude001, faces = ['end', seg01], thickness = 5)" + 'shell001 = shell(extrude001, faces = [END, seg01], thickness = 5)' const editedShellDeclaration = - "shell001 = shell(extrude001, faces = ['end', seg01], thickness = 1)" + 'shell001 = shell(extrude001, faces = [END, seg01], thickness = 1)' await test.step(`Look for the grey of the shape`, async () => { await scene.expectPixelColor([99, 99, 99], testPoint, 15) @@ -3233,7 +3188,7 @@ sketch001 = startSketchOn(XZ) |> circle(center = [0, 0], radius = 100) |> extrude(length = 100) -sketch002 = startSketchOn(sketch001, 'END') +sketch002 = startSketchOn(sketch001, face = 'END') |> circle(center = [0, 0], radius = 50) |> extrude(length = 50) `, @@ -3242,7 +3197,7 @@ sketch001 = startSketchOn(XZ) |> circle(center = [0, 0], radius = 100) extrude001 = extrude(sketch001, length = 100) -sketch002 = startSketchOn(extrude001, 'END') +sketch002 = startSketchOn(extrude001, face = 'END') |> circle(center = [0, 0], radius = 50) extrude002 = extrude(sketch002, length = 50) `, @@ -3269,7 +3224,7 @@ extrude002 = extrude(sketch002, length = 50) const testPoint = { x: 580, y: 320 } const [clickOnCap] = scene.makeMouseHelpers(testPoint.x, testPoint.y) const shellTarget = hasExtrudesInPipe ? 'sketch002' : 'extrude002' - const shellDeclaration = `shell001 = shell(${shellTarget}, faces = ['end'], thickness = 5)` + const shellDeclaration = `shell001 = shell(${shellTarget}, faces = [END], thickness = 5)` await test.step(`Look for the grey of the shape`, async () => { await scene.expectPixelColor([113, 113, 113], testPoint, 15) @@ -3344,7 +3299,7 @@ profile001 = startProfileAt([-20, 20], sketch001) ` const extrudeCode = `extrude001 = extrude(profile001, length = 40) ` - const shellCode = `shell001 = shell(extrude001, faces = ['end'], thickness = 5) + const shellCode = `shell001 = shell(extrude001, faces = [END], thickness = 5) ` const initialCode = sketchCode + extrudeCode + shellCode await context.addInitScript((initialCode) => { @@ -3482,26 +3437,29 @@ sweep001 = sweep(sketch001, path = sketch002) const initialCode = ` sketch001 = startSketchOn(XZ) |> startProfileAt([-100.0, 100.0], %) -|> angledLine([0, 200.0], %, $rectangleSegmentA001) -|> angledLine([segAng(rectangleSegmentA001) - 90, 200], %, $rectangleSegmentB001) -|> angledLine([ -segAng(rectangleSegmentA001), --segLen(rectangleSegmentA001) -], %, $rectangleSegmentC001) +|> angledLine(angle = 0, length = 200.0, tag = $rectangleSegmentA001) +|> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 200, tag = $rectangleSegmentB001) +|> angledLine( +angle=segAng(rectangleSegmentA001), +length=-segLen(rectangleSegmentA001), +tag=$rectangleSegmentC001, +) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude001 = extrude(sketch001, length = 200) -sketch002 = startSketchOn(extrude001, rectangleSegmentA001) +sketch002 = startSketchOn(extrude001, face = rectangleSegmentA001) |> startProfileAt([-66.77, 84.81], %) -|> angledLine([180, 27.08], %, $rectangleSegmentA002) -|> angledLine([ -segAng(rectangleSegmentA002) - 90, -27.8 -], %, $rectangleSegmentB002) -|> angledLine([ -segAng(rectangleSegmentA002), --segLen(rectangleSegmentA002) -], %, $rectangleSegmentC002) +|> angledLine(angle = 180, length = 27.08, tag = $rectangleSegmentA002) +|> angledLine( +angle=segAng(rectangleSegmentA002) - 90, +length=27.8, +tag=$rectangleSegmentB002, +) +|> angledLine( +angle=segAng(rectangleSegmentA002), +length=-segLen(rectangleSegmentA002), +tag=$rectangleSegmentC002, +) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() ` @@ -3571,20 +3529,15 @@ segAng(rectangleSegmentA002), }) => { const initialCode = `sketch001 = startSketchOn(XZ) |> startProfileAt([-102.57, 101.72], %) - |> angledLine([0, 202.6], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 202.6 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = 202.6, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 202.6, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude001 = extrude(sketch001, length = 50) -sketch002 = startSketchOn(extrude001, rectangleSegmentA001) +sketch002 = startSketchOn(extrude001, face = rectangleSegmentA001) |> circle(center = [-11.34, 10.0], radius = 8.69) + ` await context.addInitScript((initialCode) => { localStorage.setItem('persistCode', initialCode) @@ -3601,7 +3554,7 @@ sketch002 = startSketchOn(extrude001, rectangleSegmentA001) await page.getByText(codeToSelection).click() await toolbar.revolveButton.click() await page.getByText('Edge', { exact: true }).click() - const lineCodeToSelection = `angledLine([0, 202.6], %, $rectangleSegmentA001)` + const lineCodeToSelection = `angledLine(angle = 0, length = 202.6, tag = $rectangleSegmentA001)` await page.getByText(lineCodeToSelection).click() await cmdBar.progressCmdBar() await cmdBar.progressCmdBar() @@ -3658,22 +3611,23 @@ sketch002 = startSketchOn(extrude001, rectangleSegmentA001) toolbar, cmdBar, }) => { - const initialCode = `sketch002 = startSketchOn(XY) - |> startProfileAt([-2.02, 1.79], %) - |> xLine(length = 2.6) -sketch001 = startSketchOn(-XY) - |> startProfileAt([-0.48, 1.25], %) - |> angledLine([0, 2.38], %, $rectangleSegmentA001) - |> angledLine([segAng(rectangleSegmentA001) - 90, 2.4], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) - |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) - |> close() -extrude001 = extrude(sketch001, length = 5) -sketch003 = startSketchOn(extrude001, 'START') - |> circle(center = [-0.69, 0.56], radius = 0.28) + const initialCode = ` + sketch002 = startSketchOn(XY) + |> startProfileAt([-2.02, 1.79], %) + |> xLine(length = 2.6) + sketch001 = startSketchOn('-XY') + |> startProfileAt([-0.48, 1.25], %) + |> angledLine(angle = 0, length = 2.38, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 2.4, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) + |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) + |> close() + extrude001 = extrude(sketch001, length = 5) + sketch003 = startSketchOn(extrude001, face = 'START') + |> circle( + center = [-0.69, 0.56], + radius = 0.28 + ) ` await context.addInitScript((initialCode) => { diff --git a/e2e/playwright/prompt-to-edit-snapshot-tests.spec.ts b/e2e/playwright/prompt-to-edit-snapshot-tests.spec.ts index 84bd40736..14b102ebc 100644 --- a/e2e/playwright/prompt-to-edit-snapshot-tests.spec.ts +++ b/e2e/playwright/prompt-to-edit-snapshot-tests.spec.ts @@ -41,15 +41,13 @@ sketch002 = startSketchOn(XZ) extrude002 = extrude(sketch002, length = 50) sketch003 = startSketchOn(XY) |> startProfileAt([52.92, 157.81], %) - |> angledLine([0, 176.4], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 53.4 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = 176.4, tag = $rectangleSegmentA001) + |> angledLine( + angle = segAng(rectangleSegmentA001) - 90, + length = 53.4, + tag = $rectangleSegmentB001, + ) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude003 = extrude(sketch003, length = 20) @@ -70,13 +68,10 @@ test.describe('edit with AI example snapshots', () => { body1CapCoords.x, body1CapCoords.y ) - const yellow: [number, number, number] = [179, 179, 131] const submittingToast = page.getByText('Submitting to Text-to-CAD API...') await test.step('wait for scene to load select body and check selection came through', async () => { - await scene.expectPixelColor([134, 134, 134], body1CapCoords, 15) await clickBody1Cap() - await scene.expectPixelColor(yellow, body1CapCoords, 20) await editor.expectState({ highlightedCode: '', activeLines: ['|>startProfileAt([-73.64,-42.89],%)'], diff --git a/e2e/playwright/prompt-to-edit.spec.ts b/e2e/playwright/prompt-to-edit.spec.ts index 4e1a58b75..48db835d5 100644 --- a/e2e/playwright/prompt-to-edit.spec.ts +++ b/e2e/playwright/prompt-to-edit.spec.ts @@ -22,15 +22,9 @@ sketch002 = startSketchOn(XZ) extrude002 = extrude(sketch002, length = 50) sketch003 = startSketchOn(XY) |> startProfileAt([52.92, 157.81], %) - |> angledLine([0, 176.4], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 53.4 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = 176.4, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 53.4, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude003 = extrude(sketch003, length = 20) @@ -57,6 +51,7 @@ test.describe('Prompt-to-edit tests', { tag: '@skipWin' }, () => { page, scene, }) => { + test.fixme(orRunWhenFullSuiteEnabled()) await context.addInitScript((file) => { localStorage.setItem('persistCode', file) }, file) @@ -265,6 +260,7 @@ test.describe('Prompt-to-edit tests', { tag: '@skipWin' }, () => { page, scene, }) => { + test.fixme(orRunWhenFullSuiteEnabled()) const body1CapCoords = { x: 571, y: 311 } const body2WallCoords = { x: 620, y: 152 } const [clickBody1Cap] = scene.makeMouseHelpers( diff --git a/e2e/playwright/regression-tests.spec.ts b/e2e/playwright/regression-tests.spec.ts index 445dca2eb..c5deb4b9c 100644 --- a/e2e/playwright/regression-tests.spec.ts +++ b/e2e/playwright/regression-tests.spec.ts @@ -1,5 +1,5 @@ +import { bracket } from '@e2e/playwright/fixtures/bracket' import type { Page } from '@playwright/test' -import { bracket } from '@src/lib/exampleKcl' import { reportRejection } from '@src/lib/trap' import * as fsp from 'fs/promises' import path from 'path' @@ -68,15 +68,9 @@ test.describe('Regression tests', { tag: ['@skipWin'] }, () => { 'persistCode', `sketch001 = startSketchOn(XY) |> startProfileAt([82.33, 238.21], %) - |> angledLine([0, 288.63], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 197.97 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = 288.63, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 197.97, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude001 = extrude(sketch001, length = 50) @@ -257,7 +251,7 @@ extrude001 = extrude(sketch001, length = 50) 'persistCode', `exampleSketch = startSketchOn("XZ") |> startProfileAt([0, 0], %) - |> angledLine({ angle: 50, length: 45 }, %) + |> angledLine(angle = 50, length = 45 ) |> yLine(endAbsolute = 0) |> close() |> @@ -313,7 +307,7 @@ extrude001 = extrude(sketch001, length = 50) await expect(page.locator('.cm-content')) .toContainText(`exampleSketch = startSketchOn("XZ") |> startProfileAt([0, 0], %) - |> angledLine({ angle: 50, length: 45 }, %) + |> angledLine(angle = 50, length = 45 ) |> yLine(endAbsolute = 0) |> close() @@ -334,15 +328,9 @@ extrude001 = extrude(sketch001, length = 50) `@settings(defaultLengthUnit = mm) sketch002 = startSketchOn(XY) profile002 = startProfileAt([72.24, -52.05], sketch002) - |> angledLine([0, 181.26], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 21.54 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 181.26, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 21.54) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude002 = extrude(profile002, length = 150) diff --git a/e2e/playwright/sketch-tests.spec.ts b/e2e/playwright/sketch-tests.spec.ts index abb1f29ba..9f1bff849 100644 --- a/e2e/playwright/sketch-tests.spec.ts +++ b/e2e/playwright/sketch-tests.spec.ts @@ -63,7 +63,7 @@ test.describe('Sketch tests', { tag: ['@skipWin'] }, () => { part002 = startSketchOn(-XZ) ${startProfileAt3} |> xLine(length = width / 4) - |> tangentialArcTo([width / 2, 0], %) + |> tangentialArc(endAbsolute = [width / 2, 0]) |> xLine(length = -width / 4 + wireRadius) |> yLine(length = wireOffset) |> arc({ @@ -119,7 +119,7 @@ test.describe('Sketch tests', { tag: ['@skipWin'] }, () => { sketch001 = startSketchOn(XZ) |> startProfileAt([2.61, -4.01], %) |> xLine(length = 8.73) - |> tangentialArcTo([8.33, -1.31], %)` + |> tangentialArc(endAbsolute = [8.33, -1.31])` ) }) @@ -130,7 +130,7 @@ sketch001 = startSketchOn(XZ) await expect(async () => { await page.mouse.click(700, 200) - await page.getByText('tangentialArcTo([8.33, -1.31], %)').click() + await page.getByText('tangentialArc(endAbsolute = [8.33, -1.31])').click() await expect( page.getByRole('button', { name: 'Edit Sketch' }) ).toBeEnabled({ timeout: 2000 }) @@ -139,7 +139,7 @@ sketch001 = startSketchOn(XZ) await page.waitForTimeout(600) // wait for animation - await page.getByText('tangentialArcTo([8.33, -1.31], %)').click() + await page.getByText('tangentialArc(endAbsolute = [8.33, -1.31])').click() await page.keyboard.press('End') await page.keyboard.down('Shift') await page.keyboard.press('ArrowUp') @@ -212,7 +212,7 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002) `sketch001 = startSketchOn(XZ) |> startProfileAt([4.61, -14.01], %) |> line(end = [12.73, -0.09]) - |> tangentialArcTo([24.95, -5.38], %) + |> tangentialArc(endAbsolute = [24.95, -5.38]) |> arcTo({ interior = [20.18, -1.7], end = [11.82, -1.16] @@ -262,7 +262,7 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002) await expect(u.codeLocator).toHaveText(`sketch001 = startSketchOn(XZ) |> startProfileAt([4.61, -14.01], %) |> line(end = [12.73, -0.09]) - |> tangentialArcTo([24.95, -5.38], %) + |> tangentialArc(endAbsolute = [24.95, -5.38]) |> arcTo({ interior = [20.18, -1.7], end = [11.82, -1.16] @@ -326,7 +326,7 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002) prevContent = await page.locator('.cm-content').innerText() } - // drag tangentialArcTo handle + // drag tangentialArc handle const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]') await page.mouse.move(tangentEnd.x, tangentEnd.y - 5) await page.mouse.down() @@ -407,7 +407,7 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002) .toHaveText(`sketch001 = startSketchOn(XZ) |> startProfileAt([6.44, -12.07], %) |> line(end = [14.72, 1.97]) - |> tangentialArcTo([26.92, -3.32], %) + |> tangentialArc(endAbsolute = [26.92, -3.32]) |> arcTo({ interior = [18.11, -3.73], end = [9.77, -3.19] @@ -577,7 +577,7 @@ sketch001 = startSketchOn(XZ) sketch001 = startSketchOn(XZ) |> startProfileAt([4.61, -10.01], %) |> line(end = [12.73, -0.09]) - |> tangentialArcTo([24.95, -0.38], %) + |> tangentialArc(endAbsolute = [24.95, -0.38]) |> close() |> extrude(length = 5)` ) @@ -646,7 +646,7 @@ sketch001 = startSketchOn(XZ) await expect(page.locator('.cm-content')).not.toHaveText(prevContent) prevContent = await page.locator('.cm-content').innerText() - // drag tangentialArcTo handle + // drag tangentialArc handle const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]') await page.dragAndDrop('#stream', '#stream', { sourcePosition: { x: tangentEnd.x + 10, y: tangentEnd.y - 5 }, @@ -663,7 +663,7 @@ sketch001 = startSketchOn(XZ) `sketch001 = startSketchOn(XZ) |> startProfileAt([7.12, -12.68], %) |> line(end = [12.68, -1.09]) - |> tangentialArcTo([24.89, 0.68], %) + |> tangentialArc(endAbsolute = [24.89, 0.68]) |> close() |> extrude(length = 5)`, { shouldNormalise: true } @@ -685,7 +685,7 @@ sketch001 = startSketchOn(XZ) sketch001 = startSketchOn(XZ) |> startProfileAt([4.61, -14.01], %) |> line(end = [12.73, -0.09]) - |> tangentialArcTo([24.95, -5.38], %) + |> tangentialArc(endAbsolute = [24.95, -5.38]) |> close() |> revolve(axis = X)` ) @@ -757,7 +757,7 @@ sketch001 = startSketchOn(XZ) await expect(page.locator('.cm-content')).not.toHaveText(prevContent) prevContent = await page.locator('.cm-content').innerText() - // drag tangentialArcTo handle + // drag tangentialArc handle const tangentEnd = await u.getBoundingBox('[data-overlay-index="1"]') await page.mouse.move(tangentEnd.x, tangentEnd.y - 5) await page.mouse.down() @@ -771,7 +771,7 @@ sketch001 = startSketchOn(XZ) `sketch001 = startSketchOn(XZ) |> startProfileAt([6.44, -12.07], %) |> line(end = [14.72, 1.97]) - |> tangentialArcTo([24.95, -5.38], %) + |> tangentialArc(endAbsolute = [24.95, -5.38]) |> line(end = [1.97, 2.06]) |> close() |> revolve(axis = X)`, @@ -1077,7 +1077,7 @@ profile001 = startProfileAt([${roundOff(scale * 69.6)}, ${roundOff( // The click should generate a new sketch starting on the end face of extrude001 // signified by the implicit 'END' tag for that solid. await page.waitForTimeout(800) - await page.getByText(`END')`).click() + await page.getByText(`END)`).click() await page.keyboard.press('End') await page.keyboard.press('Enter') await page.keyboard.type(' |>', { delay: 100 }) @@ -1099,7 +1099,7 @@ profile001 = startProfileAt([${roundOff(scale * 69.6)}, ${roundOff( |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude001 = extrude(sketch001, length = 5) - sketch002 = startSketchOn(extrude001, 'END') + sketch002 = startSketchOn(extrude001, face = END) |> `.replace(/\s/g, '') ) @@ -1222,7 +1222,7 @@ profile001 = startProfileAt([${roundOff(scale * 69.6)}, ${roundOff( fn lug = (origin, length, diameter, plane) => { lugSketch = startSketchOn(plane) |> startProfileAt([origin[0] + lugDiameter / 2, origin[1]], %) - |> angledLineOfYLength({ angle = 60, length = lugHeadLength }, %) + |> angledLine(angle = 60, lengthY = lugHeadLength) |> xLine(endAbsolute = 0 + .001) |> yLine(endAbsolute = 0) |> close() @@ -1653,7 +1653,7 @@ profile003 = startProfileAt([206.63, -56.73], sketch001) await page.waitForTimeout(600) }) - const codeFromTangentialArc = ` |> tangentialArcTo([39.49, 88.22], %)` + const codeFromTangentialArc = ` |> tangentialArc(endAbsolute = [39.49, 88.22])` await test.step('check that tangential tool does not snap to other profile starts', async () => { await toolbar.tangentialArcBtn.click() await page.waitForTimeout(1000) @@ -1675,7 +1675,7 @@ profile003 = startProfileAt([206.63, -56.73], sketch001) // check pixel is now gray at tanArcLocation to verify code has executed await scene.expectPixelColor([26, 26, 26], tanArcLocation, 15) await editor.expectEditor.not.toContain( - `tangentialArcTo([39.49, 88.22], %)` + `tangentialArc(endAbsolute = [39.49, 88.22])` ) }) @@ -1876,7 +1876,7 @@ profile003 = startProfileAt([206.63, -56.73], sketch001) await endArcStartLine() await editor.expectEditor.toContain( - `|> tangentialArcTo([16.61, 4.14], %)` + `|> tangentialArc(endAbsolute = [16.61, 4.14])` ) // Add a three-point arc segment @@ -1977,12 +1977,9 @@ profile003 = startProfileAt([206.63, -56.73], sketch001) ) await crnRect1point2() await editor.expectEditor.toContain( - `|> angledLine([0, 2.37], %, $rectangleSegmentA001) - |> angledLine([segAng(rectangleSegmentA001) - 90, 7.8], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + `|> angledLine(angle = 0, length = 2.37, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 7.8) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close()`.replaceAll('\n', '') ) @@ -1995,15 +1992,9 @@ profile003 = startProfileAt([206.63, -56.73], sketch001) await crnRect2point2() await page.waitForTimeout(300) await editor.expectEditor.toContain( - `|> angledLine([0, 5.49], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 4.14 - ], %) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %) + `|> angledLine(angle = 0, length = 5.49, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 4.14) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close()`.replaceAll('\n', '') ) @@ -2020,15 +2011,9 @@ profile003 = startProfileAt([206.63, -56.73], sketch001) await cntrRect1point2() await page.waitForTimeout(300) await editor.expectEditor.toContain( - `|> angledLine([0, 7.06], %, $rectangleSegmentA003) - |> angledLine([ - segAng(rectangleSegmentA003) + 90, - 4.34 - ], %) - |> angledLine([ - segAng(rectangleSegmentA003), - -segLen(rectangleSegmentA003) - ], %) + `|> angledLine(angle = 0, length = 7.06, tag = $rectangleSegmentA003) + |> angledLine(angle = segAng(rectangleSegmentA003) + 90, length = 4.34) + |> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close()`.replaceAll('\n', '') ) @@ -2042,15 +2027,9 @@ profile003 = startProfileAt([206.63, -56.73], sketch001) await cntrRect2point2() await page.waitForTimeout(300) await editor.expectEditor.toContain( - `|> angledLine([0, 3.12], %, $rectangleSegmentA004) - |> angledLine([ - segAng(rectangleSegmentA004) + 90, - 6.24 - ], %) - |> angledLine([ - segAng(rectangleSegmentA004), - -segLen(rectangleSegmentA004) - ], %) + `|> angledLine(angle = 0, length = 3.12, tag = $rectangleSegmentA004) + |> angledLine(angle = segAng(rectangleSegmentA004) + 90, length = 6.24) + |> angledLine(angle = segAng(rectangleSegmentA004), length = -segLen(rectangleSegmentA004)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close()`.replaceAll('\n', '') ) @@ -2204,15 +2183,9 @@ profile001 = startProfileAt([6.24, 4.54], sketch001) |> line(end = [8.61, 0.74]) |> line(end = [10.99, -5.22]) profile002 = startProfileAt([11.19, 5.02], sketch001) - |> angledLine([0, 10.78], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 4.14 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 10.78, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 4.14) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() profile003 = circle(sketch001, center = [6.92, -4.2], radius = 3.16) @@ -2282,7 +2255,7 @@ profile004 = circleThreePoint(sketch001, p1 = [13.44, -6.8], p2 = [13.39, -2.07] await rectDragTo() await page.mouse.up() await editor.expectEditor.toContain( - `angledLine([-7, 10.27], %, $rectangleSegmentA001)` + `angledLine(angle = -7, length = 10.27, tag = $rectangleSegmentA001)` ) }) @@ -2322,15 +2295,9 @@ profile004 = circleThreePoint(sketch001, p1 = [13.44, -6.8], p2 = [13.39, -2.07] await page.waitForTimeout(100) await rectEnd() await editor.expectEditor.toContain( - `|> angledLine([180, 1.97], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) + 90, - 3.89 - ], %) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %) + `|> angledLine(angle = 180, length = 1.97, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) + 90, length = 3.89) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close()`.replaceAll('\n', '') ) @@ -2351,15 +2318,9 @@ profile001 = startProfileAt([6.24, 4.54], sketch001) |> line(end = [8.61, 0.74]) |> line(end = [10.99, -5.22]) profile002 = startProfileAt([11.19, 5.02], sketch001) - |> angledLine([0, 10.78], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 4.14 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 10.78, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 4.14) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() profile003 = circle(sketch001, center = [6.92, -4.2], radius = 3.16) @@ -2455,20 +2416,14 @@ sketch001 = startSketchOn(XZ) profile001 = startProfileAt([-63.43, 193.08], sketch001) |> line(end = [168.52, 149.87]) |> line(end = [190.29, -39.18]) - |> tangentialArcTo([319.63, 129.65], %) + |> tangentialArc(endAbsolute = [319.63, 129.65]) |> line(end = [-217.65, -21.76]) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() profile003 = startProfileAt([16.79, 38.24], sketch001) - |> angledLine([0, 182.82], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 105.71 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 182.82, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 105.71) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() profile004 = circle( @@ -2679,20 +2634,14 @@ profile001 = startProfileAt([6.71, -3.66], sketch001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude001 = extrude(profile001, length = 20) -sketch002 = startSketchOn(extrude001, seg01) +sketch002 = startSketchOn(extrude001, face = seg01) profile002 = startProfileAt([0.75, 13.46], sketch002) |> line(end = [4.52, 3.79]) |> line(end = [5.98, -2.81]) profile003 = startProfileAt([3.19, 13.3], sketch002) - |> angledLine([0, 6.64], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 2.81 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 6.64, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 2.81) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() profile004 = startProfileAt([3.15, 9.39], sketch002) @@ -2732,15 +2681,9 @@ profile010 = circle( radius = 2.67 ) profile011 = startProfileAt([5.07, -6.39], sketch003) - |> angledLine([0, 4.54], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 4.17 - ], %) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %) + |> angledLine(angle = 0, length = 4.54, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 4.17) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude003 = extrude(profile011, length = 2.5) @@ -2889,7 +2832,7 @@ loft([profile001, profile002]) ) await rect1Crn2() await editor.expectEditor.toContain( - `angledLine([0, 113.01], %, $rectangleSegmentA001)` + `angledLine(angle = 0, length = 113.01, tag = $rectangleSegmentA001)` ) } ) @@ -2960,7 +2903,7 @@ loft([profile001, profile002]) ) await rect1Crn2() await editor.expectEditor.toContain( - `angledLine([0, 106.42], %, $rectangleSegmentA001)` + `angledLine(angle = 0, length = 106.42], tag = $rectangleSegmentA001)` ) await page.waitForTimeout(100) }) diff --git a/e2e/playwright/snapshot-tests.spec.ts b/e2e/playwright/snapshot-tests.spec.ts index fdd2ec8ba..4171cc4e0 100644 --- a/e2e/playwright/snapshot-tests.spec.ts +++ b/e2e/playwright/snapshot-tests.spec.ts @@ -70,10 +70,11 @@ part001 = startSketchOn(-XZ) |> startProfileAt([0, 0], %) |> yLine(length = baseHeight) |> xLine(length = baseLen) - |> angledLineToY({ + |> angledLine( angle = topAng, - to = totalHeightHalf, - }, %, $seg04) + endAbsoluteY = totalHeightHalf, + tag = $seg04, + ) |> xLine(endAbsolute = totalLen, tag = $seg03) |> yLine(length = -armThick, tag = $seg01) |> angledLineThatIntersects({ @@ -81,11 +82,12 @@ part001 = startSketchOn(-XZ) offset = -armThick, intersectTag = seg04 }, %) - |> angledLineToY([segAng(seg04, %) + 180, turns::ZERO], %) - |> angledLineToY({ + |> angledLine(angle = segAng(seg04, %) + 180, endAbsoluteY = turns::ZERO) + |> angledLine( angle = -bottomAng, - to = -totalHeightHalf - armThick, - }, %, $seg02) + endAbsoluteY = -totalHeightHalf - armThick, + tag = $seg02, + ) |> xLine(length = endAbsolute = segEndX(seg03) + 0) |> yLine(length = -segLen(seg01, %)) |> angledLineThatIntersects({ @@ -93,7 +95,7 @@ part001 = startSketchOn(-XZ) offset = -armThick, intersectTag = seg02 }, %) - |> angledLineToY([segAng(seg02, %) + 180, -baseHeight], %) + |> angledLine(angle = segAng(seg02, %) + 180, endAbsoluteY = -baseHeight) |> xLine(endAbsolute = turns::ZERO) |> close() |> extrude(length = 4)` @@ -586,6 +588,7 @@ test( 'Draft circle should look right', { tag: '@snapshot' }, async ({ page, context, cmdBar, scene }) => { + test.fixme(orRunWhenFullSuiteEnabled()) const u = await getUtils(page) await page.setViewportSize({ width: 1200, height: 500 }) const PUR = 400 / 37.5 //pixeltoUnitRatio @@ -681,7 +684,7 @@ test.describe( await page.mouse.click(startXPx + PUR * 30, 500 - PUR * 20) code += ` - |> tangentialArcTo([551.2, -62.01], %)` + |> tangentialArc(endAbsolute = [551.2, -62.01])` await expect(u.codeLocator).toHaveText(code) // click tangential arc tool again to unequip it @@ -775,7 +778,7 @@ test.describe( await page.mouse.click(startXPx + PUR * 30, 500 - PUR * 20) code += ` - |> tangentialArcTo([551.2, -62.01], %)` + |> tangentialArc(endAbsolute = [551.2, -62.01])` await expect(u.codeLocator).toHaveText(code) await page @@ -821,7 +824,7 @@ test( |> line(end = [11.91, -10.42]) |> close() |> extrude(length = ${KCL_DEFAULT_LENGTH}) -part002 = startSketchOn(part001, seg01) +part002 = startSketchOn(part001, face = seg01) |> startProfileAt([8, 8], %) |> line(end = [4.68, 3.05]) |> line(end = [0, -7.79]) diff --git a/e2e/playwright/snapshots/prompt-to-edit/prompt-to-edit-snapshot-tests-spec-ts--change-colour.snap.json b/e2e/playwright/snapshots/prompt-to-edit/prompt-to-edit-snapshot-tests-spec-ts--change-colour.snap.json index 00de798d1..9636941ee 100644 --- a/e2e/playwright/snapshots/prompt-to-edit/prompt-to-edit-snapshot-tests-spec-ts--change-colour.snap.json +++ b/e2e/playwright/snapshots/prompt-to-edit/prompt-to-edit-snapshot-tests-spec-ts--change-colour.snap.json @@ -1,5 +1,5 @@ { - "original_source_code": "sketch001 = startSketchOn('XZ')\nprofile001 = startProfileAt([57.81, 250.51], sketch001)\n |> line(end = [121.13, 56.63], tag = $seg02)\n |> line(end = [83.37, -34.61], tag = $seg01)\n |> line(end = [19.66, -116.4])\n |> line(end = [-221.8, -41.69])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\nextrude001 = extrude(profile001, length = 200)\nsketch002 = startSketchOn('XZ')\n |> startProfileAt([-73.64, -42.89], %)\n |> xLine(length = 173.71)\n |> line(end = [-22.12, -94.4])\n |> xLine(length = -156.98)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\nextrude002 = extrude(sketch002, length = 50)\nsketch003 = startSketchOn(XY)\n |> startProfileAt([52.92, 157.81], %)\n |> angledLine([0, 176.4], %, $rectangleSegmentA001)\n |> angledLine([\n segAng(rectangleSegmentA001) - 90,\n 53.4\n ], %, $rectangleSegmentB001)\n |> angledLine([\n segAng(rectangleSegmentA001),\n -segLen(rectangleSegmentA001)\n ], %, $rectangleSegmentC001)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\nextrude003 = extrude(sketch003, length = 20)\n", + "original_source_code": "sketch001 = startSketchOn(XZ)\nprofile001 = startProfileAt([57.81, 250.51], sketch001)\n |> line(end = [121.13, 56.63], tag = $seg02)\n |> line(end = [83.37, -34.61], tag = $seg01)\n |> line(end = [19.66, -116.4])\n |> line(end = [-221.8, -41.69])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\nextrude001 = extrude(profile001, length = 200)\nsketch002 = startSketchOn('XZ')\n |> startProfileAt([-73.64, -42.89], %)\n |> xLine(length = 173.71)\n |> line(end = [-22.12, -94.4])\n |> xLine(length = -156.98)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\nextrude002 = extrude(sketch002, length = 50)\nsketch003 = startSketchOn(XY)\n |> startProfileAt([52.92, 157.81], %)\n |> angledLine(angle = 0, length = 176.4, tag = $rectangleSegmentA001)\n |> angledLine(angle = segAng(rectangleSegmentA001) - 90,\n length = 53.4\n ], tag = $rectangleSegmentB001)\n |> angledLine(angle = segAng(rectangleSegmentA001),\n length = -segLen(rectangleSegmentA001)\n tag = $rectangleSegmentC001)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\nextrude003 = extrude(sketch003, length = 20)\n", "prompt": "make this neon green please, use #39FF14", "source_ranges": [ { diff --git a/e2e/playwright/snapshots/prompt-to-edit/prompt-to-edit-snapshot-tests-spec-ts--edit-with-ai-example-snapshots--change-colour.snap.json b/e2e/playwright/snapshots/prompt-to-edit/prompt-to-edit-snapshot-tests-spec-ts--edit-with-ai-example-snapshots--change-colour.snap.json index 48ab1dfb6..94b3ec8ef 100644 --- a/e2e/playwright/snapshots/prompt-to-edit/prompt-to-edit-snapshot-tests-spec-ts--edit-with-ai-example-snapshots--change-colour.snap.json +++ b/e2e/playwright/snapshots/prompt-to-edit/prompt-to-edit-snapshot-tests-spec-ts--edit-with-ai-example-snapshots--change-colour.snap.json @@ -1,5 +1,5 @@ { - "original_source_code": "sketch001 = startSketchOn(XZ)\nprofile001 = startProfileAt([57.81, 250.51], sketch001)\n |> line(end = [121.13, 56.63], tag = $seg02)\n |> line(end = [83.37, -34.61], tag = $seg01)\n |> line(end = [19.66, -116.4])\n |> line(end = [-221.8, -41.69])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\nextrude001 = extrude(profile001, length = 200)\nsketch002 = startSketchOn(XZ)\n |> startProfileAt([-73.64, -42.89], %)\n |> xLine(length = 173.71)\n |> line(end = [-22.12, -94.4])\n |> xLine(length = -156.98)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\nextrude002 = extrude(sketch002, length = 50)\nsketch003 = startSketchOn(XY)\n |> startProfileAt([52.92, 157.81], %)\n |> angledLine([0, 176.4], %, $rectangleSegmentA001)\n |> angledLine([\n segAng(rectangleSegmentA001) - 90,\n 53.4\n ], %, $rectangleSegmentB001)\n |> angledLine([\n segAng(rectangleSegmentA001),\n -segLen(rectangleSegmentA001)\n ], %, $rectangleSegmentC001)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\nextrude003 = extrude(sketch003, length = 20)\n", + "original_source_code": "sketch001 = startSketchOn(XZ)\nprofile001 = startProfileAt([57.81, 250.51], sketch001)\n |> line(end = [121.13, 56.63], tag = $seg02)\n |> line(end = [83.37, -34.61], tag = $seg01)\n |> line(end = [19.66, -116.4])\n |> line(end = [-221.8, -41.69])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\nextrude001 = extrude(profile001, length = 200)\nsketch002 = startSketchOn(XZ)\n |> startProfileAt([-73.64, -42.89], %)\n |> xLine(length = 173.71)\n |> line(end = [-22.12, -94.4])\n |> xLine(length = -156.98)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\nextrude002 = extrude(sketch002, length = 50)\nsketch003 = startSketchOn(XY)\n |> startProfileAt([52.92, 157.81], %)\n |> angledLine(angle = 0, 176.4], %, $rectangleSegmentA001)\n |> angledLine([\n segAng(rectangleSegmentA001) - 90,\n 53.4\n ], %, length = $rectangleSegmentB001)\n |> angledLine(\n angle = segAng(rectangleSegmentA001),\n length = -segLen(rectangleSegmentA001),\n tag = $rectangleSegmentC001)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\nextrude003 = extrude(sketch003, length = 20)\n", "prompt": "make this neon green please, use #39FF14", "source_ranges": [ { @@ -30,4 +30,4 @@ } ], "kcl_version": "0.2.57" -} \ No newline at end of file +} diff --git a/e2e/playwright/storageStates.ts b/e2e/playwright/storageStates.ts index 06b6f0eae..a27f57067 100644 --- a/e2e/playwright/storageStates.ts +++ b/e2e/playwright/storageStates.ts @@ -84,21 +84,21 @@ export const TEST_CODE_GIZMO = `@settings(defaultLengthUnit = in) part001 = startSketchOn(XZ) |> startProfileAt([20, 0], %) |> line(end = [7.13, 4 + 0]) -|> angledLine({ angle: 3 + 0, length: 3.14 + 0 }, %) +|> angledLine(angle = 3 + 0, length = 3.14 + 0 ) |> line(endAbsolute = [20.14 + 0, -0.14 + 0]) |> xLine(endAbsolute = 29 + 0) |> yLine(length = -3.14 + 0, tag = $a) |> xLine(length = 1.63) -|> angledLineOfXLength({ angle: 3 + 0, length: 3.14 }, %) -|> angledLineOfYLength({ angle: 30, length: 3 + 0 }, %) -|> angledLineToX({ angle: 22.14 + 0, to: 12 }, %) -|> angledLineToY({ angle: 30, to: 11.14 }, %) +|> angledLine(angle = 3 + 0, lengthX = 3.14 ) +|> angledLine(angle = 30, lengthY = 3 + 0 ) +|> angledLine(angle = 22.14 + 0, endAbsoluteX = 12) +|> angledLine(angle = 30, endAbsoluteY = 11.14) |> angledLineThatIntersects({ angle: 3.14, intersectTag: a, offset: 0 }, %) -|> tangentialArcTo([13.14 + 0, 13.14], %) +|> tangentialArc(endAbsolute = [13.14 + 0, 13.14]) |> close() |> extrude(length = 5 + 7) ` @@ -140,7 +140,7 @@ box = startSketchOn(XY) |> close() |> extrude(length = 10) -sketch001 = startSketchOn(box, revolveAxis) +sketch001 = startSketchOn(box, face = revolveAxis) |> startProfileAt([5, 10], %) |> line(end = [0, -10]) |> line(end = [2, 0]) diff --git a/e2e/playwright/stress-test.spec.ts b/e2e/playwright/stress-test.spec.ts new file mode 100644 index 000000000..d0beae607 --- /dev/null +++ b/e2e/playwright/stress-test.spec.ts @@ -0,0 +1,15 @@ +import { createProject } from '@e2e/playwright/test-utils' +import { test } from '@e2e/playwright/zoo-test' + +test.describe('Stress test', () => { + test('Create project and load stress test', async ({ + cmdBar, + scene, + page, + }, testInfo) => { + const projectName = 'stress-test-project' + // Create and load project + await createProject({ name: projectName, page }) + await scene.settled(cmdBar) + }) +}) diff --git a/e2e/playwright/test-utils.ts b/e2e/playwright/test-utils.ts index 3396e38b1..5b539aec1 100644 --- a/e2e/playwright/test-utils.ts +++ b/e2e/playwright/test-utils.ts @@ -1021,6 +1021,10 @@ export function executorInputPath(fileName: string): string { return path.join('rust', 'kcl-lib', 'e2e', 'executor', 'inputs', fileName) } +export function testsInputPath(fileName: string): string { + return path.join('rust', 'kcl-lib', 'tests', 'inputs', fileName) +} + export async function doAndWaitForImageDiff( page: Page, fn: () => Promise, @@ -1136,7 +1140,7 @@ export function tomlToPerProjectSettings( return TOML.parse(toml) } -export function perProjectsettingsToToml( +export function perProjectSettingsToToml( settings: DeepPartial ) { // eslint-disable-next-line no-restricted-syntax diff --git a/e2e/playwright/testing-constraints.spec.ts b/e2e/playwright/testing-constraints.spec.ts index 12755f752..8bda27da3 100644 --- a/e2e/playwright/testing-constraints.spec.ts +++ b/e2e/playwright/testing-constraints.spec.ts @@ -58,7 +58,7 @@ test.describe('Testing constraints', { tag: ['@skipWin'] }, () => { .click() await expect(page.locator('.cm-content')).toHaveText( - `length001 = 20sketch001 = startSketchOn(XY) |> startProfileAt([-10, -10], %) |> line(end = [20, 0]) |> angledLine([90, length001], %) |> xLine(length = -20)` + `length001 = 20sketch001 = startSketchOn(XY) |> startProfileAt([-10, -10], %) |> line(end = [20, 0]) |> angledLine(angle = 90, length = length001) |> xLine(length = -20)` ) // Make sure we didn't pop out of sketch mode. @@ -87,7 +87,7 @@ test.describe('Testing constraints', { tag: ['@skipWin'] }, () => { |> startProfileAt([-7.54, -26.74], %) |> line(end = [74.36, 130.4], tag = $seg01) |> line(end = [78.92, -120.11]) - |> angledLine([segAng(seg01), yo], %) + |> angledLine(angle = segAng(seg01), length = yo) |> line(end = [41.19, 58.97 + 5]) part002 = startSketchOn(XZ) |> startProfileAt([299.05, 120], %) @@ -115,7 +115,7 @@ test.describe('Testing constraints', { tag: ['@skipWin'] }, () => { await page.waitForTimeout(100) // this wait is needed for webkit - not sure why await page .getByRole('button', { - name: 'Length: open menu', + name: 'constraints: open menu', }) .click() await page.getByRole('button', { name: 'remove constraints' }).click() @@ -152,7 +152,7 @@ test.describe('Testing constraints', { tag: ['@skipWin'] }, () => { |> startProfileAt([-7.54, -26.74], %) |> line(end = [74.36, 130.4], tag = $seg01) |> line(end = [78.92, -120.11]) - |> angledLine([segAng(seg01), 78.33], %) + |> angledLine(angle = segAng(seg01), length = 78.33) |> line(end = [51.19, 48.97]) part002 = startSketchOn(XZ) |> startProfileAt([299.05, 231.45], %) @@ -189,7 +189,7 @@ test.describe('Testing constraints', { tag: ['@skipWin'] }, () => { await page.waitForTimeout(100) await page .getByRole('button', { - name: 'Length: open menu', + name: 'constraints: open menu', }) .click() await page @@ -299,7 +299,7 @@ test.describe('Testing constraints', { tag: ['@skipWin'] }, () => { await page.keyboard.up('Shift') await page .getByRole('button', { - name: 'Length: open menu', + name: 'constraints: open menu', }) .click() await page.getByRole('button', { name: constraint }).click() @@ -420,7 +420,7 @@ test.describe('Testing constraints', { tag: ['@skipWin'] }, () => { await page.waitForTimeout(100) await page .getByRole('button', { - name: 'Length: open menu', + name: 'constraints: open menu', }) .click() await page @@ -533,7 +533,7 @@ test.describe('Testing constraints', { tag: ['@skipWin'] }, () => { await page.keyboard.up('Shift') await page .getByRole('button', { - name: 'Length: open menu', + name: 'constraints: open menu', }) .click() await page.getByTestId('dropdown-constraint-angle').click() @@ -552,7 +552,7 @@ test.describe('Testing constraints', { tag: ['@skipWin'] }, () => { // checking activeLines assures the cursors are where they should be const codeAfter = [ '|> line(end = [74.36, 130.4], tag = $seg01)', - `|> angledLine([${value}, 78.33], %)`, + `|> angledLine(angle = ${value}, length = 78.33)`, ] if (axisSelect) codeAfter.shift() @@ -627,7 +627,7 @@ test.describe('Testing constraints', { tag: ['@skipWin'] }, () => { await page.mouse.click(line3.x, line3.y) await page .getByRole('button', { - name: 'Length: open menu', + name: 'constraints: open menu', }) .click() await page.getByTestId('dropdown-constraint-' + constraint).click() @@ -639,7 +639,8 @@ test.describe('Testing constraints', { tag: ['@skipWin'] }, () => { .getByRole('button', { name: 'Add constraining value' }) .click() - const changedCode = `|> angledLine([${value}], %)` + const [ang, len] = value.split(', ') + const changedCode = `|> angledLine(angle = ${ang}, length = ${len})` await expect(page.locator('.cm-content')).toContainText(changedCode) // checking active assures the cursor is where it should be await expect(page.locator('.cm-activeLine')).toHaveText(changedCode) @@ -719,7 +720,7 @@ part002 = startSketchOn(XZ) await page.mouse.click(line3.x, line3.y) await page .getByRole('button', { - name: 'Length: open menu', + name: 'constraints: open menu', }) .click() await page.getByTestId('dropdown-constraint-' + constraint).click() @@ -733,7 +734,8 @@ part002 = startSketchOn(XZ) await expect(cmdBarKclInput).toHaveText('78.33') await cmdBarSubmitButton.click() - const changedCode = `|> angledLine([${value}], %)` + const [ang, len] = value.split(', ') + const changedCode = `|> angledLine(angle = ${ang}, length = ${len})` await expect(page.locator('.cm-content')).toContainText(changedCode) // checking active assures the cursor is where it should be await expect(page.locator('.cm-activeLine')).toHaveText(changedCode) @@ -817,7 +819,7 @@ part002 = startSketchOn(XZ) const activeLinesContent = await page.locator('.cm-activeLine').all() const constraintMenuButton = page.getByRole('button', { - name: 'Length: open menu', + name: 'constraints: open menu', }) const constraintButton = page .getByRole('button', { @@ -848,11 +850,11 @@ part002 = startSketchOn(XZ) test.describe('Two segment - no modal constraints', () => { const cases = [ { - codeAfter: `|> angledLine([83, segLen(seg01)], %)`, + codeAfter: `|> angledLine(angle = 83, length = segLen(seg01))`, constraintName: 'Equal Length', }, { - codeAfter: `|> angledLine([segAng(seg01), 78.33], %)`, + codeAfter: `|> angledLine(angle = segAng(seg01), length = 78.33)`, constraintName: 'Parallel', }, { @@ -905,7 +907,7 @@ part002 = startSketchOn(XZ) await page.mouse.click(line3.x - 3, line3.y + 20) await page.keyboard.up('Shift') const constraintMenuButton = page.getByRole('button', { - name: 'Length: open menu', + name: 'constraints: open menu', }) const constraintButton = page.getByRole('button', { name: constraintName, @@ -990,7 +992,7 @@ part002 = startSketchOn(XZ) await page.keyboard.up('Shift') await page.waitForTimeout(100) const constraintMenuButton = page.getByRole('button', { - name: 'Length: open menu', + name: 'constraints: open menu', }) const constraintButton = page.getByRole('button', { name: constraintName, @@ -1057,7 +1059,7 @@ part002 = startSketchOn(XZ) await page .getByRole('button', { - name: 'Length: open menu', + name: 'constraints: open menu', }) .click() await page.waitForTimeout(500) @@ -1129,7 +1131,7 @@ test.describe('Electron constraint tests', () => { |> line(end = [15.1, 2.48]) |> line(end = [3.15, -9.85], tag = $seg01) |> line(end = [-15.17, -4.1]) - |> angledLine([segAng(seg01), 12.35], %) + |> angledLine(angle = segAng(seg01), length = 12.35) |> line(end = [-13.02, 10.03]) |> close() |> extrude(length = 4)`, @@ -1169,7 +1171,9 @@ test.describe('Electron constraint tests', () => { await clickOnFirstSegmentLabel() await cmdBar.progressCmdBar() await editor.expectEditor.toContain('length001 = 15.3') - await editor.expectEditor.toContain('|> angledLine([9, length001], %)') + await editor.expectEditor.toContain( + '|> angledLine(angle = 9, length = length001)' + ) }) await test.step('Double click again and expect failure', async () => { diff --git a/e2e/playwright/testing-gizmo.spec.ts b/e2e/playwright/testing-gizmo.spec.ts index e6ad1e919..a46467160 100644 --- a/e2e/playwright/testing-gizmo.spec.ts +++ b/e2e/playwright/testing-gizmo.spec.ts @@ -259,15 +259,9 @@ test.describe(`Testing gizmo, fixture-based`, () => { `@settings(defaultLengthUnit = in) const sketch002 = startSketchOn(XZ) |> startProfileAt([-108.83, -57.48], %) - |> angledLine([0, 105.13], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 77.9 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 105.13, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 77.9) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> close() const sketch001 = startSketchOn(XZ) |> circle(center = [818.33, 168.1], radius = 182.8) diff --git a/e2e/playwright/testing-samples-loading.spec.ts b/e2e/playwright/testing-samples-loading.spec.ts index affbf289a..4b54d117c 100644 --- a/e2e/playwright/testing-samples-loading.spec.ts +++ b/e2e/playwright/testing-samples-loading.spec.ts @@ -1,9 +1,13 @@ +import { bracket } from '@e2e/playwright/fixtures/bracket' import { FILE_EXT } from '@src/lib/constants' -import { bracket } from '@src/lib/exampleKcl' import * as fsp from 'fs/promises' import { join } from 'path' -import { getUtils } from '@e2e/playwright/test-utils' +import { + getUtils, + orRunWhenFullSuiteEnabled, + runningOnWindows, +} from '@e2e/playwright/test-utils' import { expect, test } from '@e2e/playwright/zoo-test' test.describe('Testing in-app sample loading', () => { @@ -80,6 +84,9 @@ test.describe('Testing in-app sample loading', () => { 'Desktop: should create new file by default, optionally overwrite', { tag: '@electron' }, async ({ editor, context, page, scene, cmdBar }, testInfo) => { + if (runningOnWindows()) { + test.fixme(orRunWhenFullSuiteEnabled()) + } const { dir } = await context.folderSetupFn(async (dir) => { const bracketDir = join(dir, 'bracket') await fsp.mkdir(bracketDir, { recursive: true }) diff --git a/e2e/playwright/testing-segment-overlays.spec.ts b/e2e/playwright/testing-segment-overlays.spec.ts index d1d02775e..2684e9411 100644 --- a/e2e/playwright/testing-segment-overlays.spec.ts +++ b/e2e/playwright/testing-segment-overlays.spec.ts @@ -214,22 +214,22 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { part001 = startSketchOn(XZ) |> startProfileAt([5 + 0, 20 + 0], %) |> line(end = [0.5, -14 + 0]) - |> angledLine({ angle = 3 + 0, length = 32 + 0 }, %) + |> angledLine(angle = 3 + 0, length = 32 + 0) |> line(endAbsolute = [5 + 33, 20 + 11.5 + 0]) |> xLine(endAbsolute = 5 + 9 - 5) |> yLine(endAbsolute = 20 + -10.77, tag = $a) |> xLine(length = 26.04) |> yLine(length = 21.14 + 0) - |> angledLineOfXLength({ angle = 181 + 0, length = 23.14 }, %) - |> angledLineOfYLength({ angle = -91, length = 19 + 0 }, %) - |> angledLineToX({ angle = 3 + 0, to = 5 + 26 }, %) - |> angledLineToY({ angle = 89, to = 20 + 9.14 + 0 }, %) + |> angledLine(angle = 181 + 0, lengthX = 23.14) + |> angledLine(angle = -91, lengthY = 19 + 0) + |> angledLine(angle = 3 + 0, endAbsoluteX = 5 + 26) + |> angledLine(angle = 89, endAbsoluteY = 20 + 9.14 + 0) |> angledLineThatIntersects({ angle = 4.14, intersectTag = a, offset = 9 }, %) - |> tangentialArcTo([5 + 3.14 + 13, 20 + 3.14], %) + |> tangentialArc(endAbsolute = [5 + 3.14 + 13, 20 + 3.14]) ` ) }) @@ -306,11 +306,9 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { await clickConstrained({ hoverPos: { x: angledLine.x, y: angledLine.y }, constraintType: 'angle', - expectBeforeUnconstrained: - 'angledLine({ angle = 3 + 0, length = 32 + 0 }, %)', - expectAfterUnconstrained: - 'angledLine({ angle = 3, length = 32 + 0 }, %)', - expectFinal: 'angledLine({ angle = angle001, length = 32 + 0 }, %)', + expectBeforeUnconstrained: 'angledLine(angle = 3 + 0, length = 32 + 0)', + expectAfterUnconstrained: 'angledLine(angle = 3, length = 32 + 0)', + expectFinal: 'angledLine(angle = angle001, length = 32 + 0)', ang: ang + 180, locator: '[data-overlay-toolbar-index="1"]', }) @@ -319,10 +317,9 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { hoverPos: { x: angledLine.x, y: angledLine.y }, constraintType: 'length', expectBeforeUnconstrained: - 'angledLine({ angle = angle001, length = 32 + 0 }, %)', - expectAfterUnconstrained: - 'angledLine({ angle = angle001, length = 32 }, %)', - expectFinal: 'angledLine({ angle = angle001, length = len001 }, %)', + 'angledLine(angle = angle001, length = 32 + 0)', + expectAfterUnconstrained: 'angledLine(angle = angle001, length = 32)', + expectFinal: 'angledLine(angle = angle001, length = len001)', ang: ang + 180, locator: '[data-overlay-toolbar-index="1"]', }) @@ -392,13 +389,13 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { part001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [0.5, yRel001]) - |> angledLine({ angle = angle001, length = len001 }, %) + |> angledLine(angle = angle001, length = len001) |> line(endAbsolute = [33, yAbs001]) |> xLine(endAbsolute = xAbs002) |> yLine(endAbsolute = -10.77, tag = $a) |> xLine(length = 26.04) |> yLine(length = 21.14 + 0) - |> angledLineOfXLength({ angle = 181 + 0, length = 23.14 }, %) + |> angledLine(angle = 181 + 0, lengthX = 23.14) ` ) }) @@ -465,22 +462,22 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { part001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [0.5, -14 + 0]) - |> angledLine({ angle = 3 + 0, length = 32 + 0 }, %) + |> angledLine(angle = 3 + 0, length = 32 + 0) |> line(endAbsolute = [33, 11.5 + 0]) |> xLine(endAbsolute = 9 - 5) |> yLine(endAbsolute = -10.77, tag = $a) |> xLine(length = 26.04) |> yLine(length = 21.14 + 0) - |> angledLineOfXLength({ angle = 181 + 0, length = 23.14 }, %) - |> angledLineOfYLength({ angle = -91, length = 19 + 0 }, %) - |> angledLineToX({ angle = 3 + 0, to = 26 }, %) - |> angledLineToY({ angle = 89, to = 9.14 + 0 }, %) + |> angledLine(angle = 181 + 0, lengthX = 23.14) + |> angledLine(angle = -91, lengthY = 19 + 0) + |> angledLine(angle = 3 + 0, endAbsoluteX = 26) + |> angledLine(angle = 89, endAbsoluteY = 9.14 + 0) |> angledLineThatIntersects({ angle = 4.14, intersectTag = a, offset = 9 }, %) - |> tangentialArcTo([3.14 + 13, 3.14], %) + |> tangentialArc(endAbsolute = [3.14 + 13, 3.14]) ` ) localStorage.setItem('disableAxis', 'true') @@ -530,11 +527,9 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { hoverPos: { x: angledLineOfXLength.x, y: angledLineOfXLength.y }, constraintType: 'angle', expectBeforeUnconstrained: - 'angledLineOfXLength({ angle = 181 + 0, length = 23.14 }, %)', - expectAfterUnconstrained: - 'angledLineOfXLength({ angle = -179, length = 23.14 }, %)', - expectFinal: - 'angledLineOfXLength({ angle = angle001, length = 23.14 }, %)', + 'angledLine(angle = 181 + 0, lengthX = 23.14)', + expectAfterUnconstrained: 'angledLine(angle = -179, lengthX = 23.14)', + expectFinal: 'angledLine(angle = angle001, lengthX = 23.14)', ang: ang + 180, locator: '[data-overlay-toolbar-index="7"]', }) @@ -543,11 +538,10 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { hoverPos: { x: angledLineOfXLength.x, y: angledLineOfXLength.y }, constraintType: 'xRelative', expectBeforeUnconstrained: - 'angledLineOfXLength({ angle = angle001, length = 23.14 }, %)', + 'angledLine(angle = angle001, lengthX = 23.14)', expectAfterUnconstrained: - 'angledLineOfXLength({ angle = angle001, length = xRel001 }, %)', - expectFinal: - 'angledLineOfXLength({ angle = angle001, length = 23.14 }, %)', + 'angledLine(angle = angle001, lengthX = xRel001)', + expectFinal: 'angledLine(angle = angle001, lengthX = 23.14)', steps: 7, ang: ang + 180, locator: '[data-overlay-toolbar-index="7"]', @@ -561,11 +555,10 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { await clickUnconstrained({ hoverPos: { x: angledLineOfYLength.x, y: angledLineOfYLength.y }, constraintType: 'angle', - expectBeforeUnconstrained: - 'angledLineOfYLength({ angle = -91, length = 19 + 0 }, %)', + expectBeforeUnconstrained: 'angledLine(angle = -91, lengthY = 19 + 0)', expectAfterUnconstrained: - 'angledLineOfYLength({ angle = angle002, length = 19 + 0 }, %)', - expectFinal: 'angledLineOfYLength({ angle = -91, length = 19 + 0 }, %)', + 'angledLine(angle = angle002, lengthY = 19 + 0)', + expectFinal: 'angledLine(angle = -91, lengthY = 19 + 0)', ang: ang + 180, steps: 6, locator: '[data-overlay-toolbar-index="8"]', @@ -574,12 +567,9 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { await clickConstrained({ hoverPos: { x: angledLineOfYLength.x, y: angledLineOfYLength.y }, constraintType: 'yRelative', - expectBeforeUnconstrained: - 'angledLineOfYLength({ angle = -91, length = 19 + 0 }, %)', - expectAfterUnconstrained: - 'angledLineOfYLength({ angle = -91, length = 19 }, %)', - expectFinal: - 'angledLineOfYLength({ angle = -91, length = yRel002 }, %)', + expectBeforeUnconstrained: 'angledLine(angle = -91, lengthY = 19 + 0)', + expectAfterUnconstrained: 'angledLine(angle = -91, lengthY = 19)', + expectFinal: 'angledLine(angle = -91, lengthY = yRel002)', ang: ang + 180, steps: 7, locator: '[data-overlay-toolbar-index="8"]', @@ -597,22 +587,22 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { part001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [0.5, -14 + 0]) - |> angledLine({ angle = 3 + 0, length = 32 + 0 }, %) + |> angledLine(angle = 3 + 0, length = 32 + 0) |> line(endAbsolute = [33, 11.5 + 0]) |> xLine(endAbsolute = 9 - 5) |> yLine(endAbsolute = -10.77, tag = $a) |> xLine(length = 26.04) |> yLine(length = 21.14 + 0) - |> angledLineOfXLength({ angle = 181 + 0, length = 23.14 }, %) - |> angledLineOfYLength({ angle = -91, length = 19 + 0 }, %) - |> angledLineToX({ angle = 3 + 0, to = 26 }, %) - |> angledLineToY({ angle = 89, to = 9.14 + 0 }, %) + |> angledLine(angle = 181 + 0, lengthX = 23.14) + |> angledLine(angle = -91, lengthY = 19 + 0) + |> angledLine(angle = 3 + 0, endAbsoluteX = 26) + |> angledLine(angle = 89, endAbsoluteY = 9.14 + 0) |> angledLineThatIntersects({ angle = 4.14, intersectTag = a, offset = 9 }, %) - |> tangentialArcTo([3.14 + 13, 1.14], %) + |> tangentialArc(endAbsolute = [3.14 + 13, 1.14]) ` ) localStorage.setItem('disableAxis', 'true') @@ -646,9 +636,9 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { hoverPos: { x: angledLineToX.x, y: angledLineToX.y }, constraintType: 'angle', expectBeforeUnconstrained: - 'angledLineToX({ angle = 3 + 0, to = 26 }, %)', - expectAfterUnconstrained: 'angledLineToX({ angle = 3, to = 26 }, %)', - expectFinal: 'angledLineToX({ angle = angle001, to = 26 }, %)', + 'angledLine(angle = 3 + 0, endAbsoluteX = 26)', + expectAfterUnconstrained: 'angledLine(angle = 3, endAbsoluteX = 26)', + expectFinal: 'angledLine(angle = angle001, endAbsoluteX = 26)', ang: ang + 180, locator: '[data-overlay-toolbar-index="9"]', }) @@ -657,10 +647,10 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { hoverPos: { x: angledLineToX.x, y: angledLineToX.y }, constraintType: 'xAbsolute', expectBeforeUnconstrained: - 'angledLineToX({ angle = angle001, to = 26 }, %)', + 'angledLine(angle = angle001, endAbsoluteX = 26)', expectAfterUnconstrained: - 'angledLineToX({ angle = angle001, to = xAbs001 }, %)', - expectFinal: 'angledLineToX({ angle = angle001, to = 26 }, %)', + 'angledLine(angle = angle001, endAbsoluteX = xAbs001)', + expectFinal: 'angledLine(angle = angle001, endAbsoluteX = 26)', ang: ang + 180, locator: '[data-overlay-toolbar-index="9"]', }) @@ -671,11 +661,9 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { await clickUnconstrained({ hoverPos: { x: angledLineToY.x, y: angledLineToY.y }, constraintType: 'angle', - expectBeforeUnconstrained: - 'angledLineToY({ angle = 89, to = 9.14 + 0 }, %)', - expectAfterUnconstrained: - 'angledLineToY({ angle = angle002, to = 9.14 + 0 }, %)', - expectFinal: 'angledLineToY({ angle = 89, to = 9.14 + 0 }, %)', + expectBeforeUnconstrained: 'angledLine(angle = 89, to = 9.14 + 0)', + expectAfterUnconstrained: 'angledLine(angle = angle002, to = 9.14 + 0)', + expectFinal: 'angledLine(angle = 89, to = 9.14 + 0)', steps: process.platform === 'darwin' ? 8 : 9, ang: ang + 180, locator: '[data-overlay-toolbar-index="10"]', @@ -685,9 +673,9 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { hoverPos: { x: angledLineToY.x, y: angledLineToY.y }, constraintType: 'yAbsolute', expectBeforeUnconstrained: - 'angledLineToY({ angle = 89, to = 9.14 + 0 }, %)', - expectAfterUnconstrained: 'angledLineToY({ angle = 89, to = 9.14 }, %)', - expectFinal: 'angledLineToY({ angle = 89, to = yAbs001 }, %)', + 'angledLine(angle = 89, endAbsoluteY = 9.14 + 0)', + expectAfterUnconstrained: 'angledLine(angle = 89, endAbsoluteY = 9.14)', + expectFinal: 'angledLine(angle = 89, endAbsoluteY = yAbs001)', ang: ang + 180, locator: '[data-overlay-toolbar-index="10"]', }) @@ -747,11 +735,7 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { locator: '[data-overlay-toolbar-index="11"]', }) }) - test('for segment [tangentialArcTo]', async ({ - page, - editor, - homePage, - }) => { + test('for segment [tangentialArc]', async ({ page, editor, homePage }) => { await page.addInitScript(async () => { localStorage.setItem( 'persistCode', @@ -759,22 +743,22 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { part001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [0.5, -14 + 0]) - |> angledLine({ angle = 3 + 0, length = 32 + 0 }, %) + |> angledLine(angle = 3 + 0, length = 32 + 0) |> line(endAbsolute = [33, 11.5 + 0]) |> xLine(endAbsolute = 9 - 5) |> yLine(endAbsolute = -10.77, tag = $a) |> xLine(length = 26.04) |> yLine(length = 21.14 + 0) - |> angledLineOfXLength({ angle = 181 + 0, length = 23.14 }, %) - |> angledLineOfYLength({ angle = -91, length = 19 + 0 }, %) - |> angledLineToX({ angle = 3 + 0, to = 26 }, %) - |> angledLineToY({ angle = 89, to = 9.14 + 0 }, %) + |> angledLine(angle = 181 + 0, lengthX = 23.14) + |> angledLine(angle = -91, lengthY = 19 + 0) + |> angledLine(angle = 3 + 0, endAbsoluteX = 26) + |> angledLine(angle = 89, endAbsoluteY = 9.14 + 0) |> angledLineThatIntersects({ angle = 4.14, intersectTag = a, offset = 9 }, %) - |> tangentialArcTo([3.14 + 13, -3.14], %) + |> tangentialArc(endAbsolute = [3.14 + 13, -3.14]) ` ) localStorage.setItem('disableAxis', 'true') @@ -799,28 +783,29 @@ test.describe('Testing segment overlays', { tag: ['@skipWin'] }, () => { const clickUnconstrained = _clickUnconstrained(page, editor) const clickConstrained = _clickConstrained(page, editor) - const tangentialArcTo = await u.getBoundingBox( - '[data-overlay-index="12"]' - ) + const tangentialArc = await u.getBoundingBox('[data-overlay-index="12"]') let ang = await u.getAngle('[data-overlay-index="12"]') - console.log('tangentialArcTo') + console.log('tangentialArc') await clickConstrained({ - hoverPos: { x: tangentialArcTo.x, y: tangentialArcTo.y }, + hoverPos: { x: tangentialArc.x, y: tangentialArc.y }, constraintType: 'xAbsolute', - expectBeforeUnconstrained: 'tangentialArcTo([3.14 + 13, -3.14], %)', - expectAfterUnconstrained: 'tangentialArcTo([16.14, -3.14], %)', - expectFinal: 'tangentialArcTo([xAbs001, -3.14], %)', + expectBeforeUnconstrained: + 'tangentialArc(endAbsolute = [3.14 + 13, -3.14])', + expectAfterUnconstrained: 'tangentialArc(endAbsolute = [16.14, -3.14])', + expectFinal: 'tangentialArc(endAbsolute = [xAbs001, -3.14])', ang: ang + 180, steps: 6, locator: '[data-overlay-toolbar-index="12"]', }) - console.log('tangentialArcTo2') + console.log('tangentialArc2') await clickUnconstrained({ - hoverPos: { x: tangentialArcTo.x, y: tangentialArcTo.y }, + hoverPos: { x: tangentialArc.x, y: tangentialArc.y }, constraintType: 'yAbsolute', - expectBeforeUnconstrained: 'tangentialArcTo([xAbs001, -3.14], %)', - expectAfterUnconstrained: 'tangentialArcTo([xAbs001, yAbs001], %)', - expectFinal: 'tangentialArcTo([xAbs001, -3.14], %)', + expectBeforeUnconstrained: + 'tangentialArc(endAbsolute = [xAbs001, -3.14])', + expectAfterUnconstrained: + 'tangentialArc(endAbsolute = [xAbs001, yAbs001])', + expectFinal: 'tangentialArc(endAbsolute = [xAbs001, -3.14])', ang: ang + 180, steps: 10, locator: '[data-overlay-toolbar-index="12"]', @@ -1088,22 +1073,22 @@ part001 = startSketchOn(XZ) part001 = startSketchOn(XZ) |>startProfileAt([0, 0], %) |> line(end = [0.5, -14 + 0]) - |> angledLine({ angle = 3 + 0, length = 32 + 0 }, %) + |> angledLine(angle = 3 + 0, length = 32 + 0) |> line(endAbsolute = [33, 11.5 + 0]) |> xLine(endAbsolute = 9 - 5) |> yLine(endAbsolute = -10.77, tag = $a) |> xLine(length = 26.04) |> yLine(length = 21.14 + 0) - |> angledLineOfXLength({ angle = 181 + 0, length = 23.14 }, %) - |> angledLineOfYLength({ angle = -91, length = 19 + 0 }, %) - |> angledLineToX({ angle = 3 + 0, to = 26 }, %) - |> angledLineToY({ angle = 89, to = 9.14 + 0 }, %) + |> angledLine(angle = 181 + 0, lengthX = 23.14) + |> angledLine(angle = -91, lengthY = 19 + 0) + |> angledLine(angle = 3 + 0, endAbsoluteX = 26) + |> angledLine(angle = 89, endAbsoluteY = 9.14 + 0) |> angledLineThatIntersects({ angle = 4.14, intersectTag = a, offset = 9 }, %) - |> tangentialArcTo([3.14 + 13, 1.14], %) + |> tangentialArc(endAbsolute = [3.14 + 13, 1.14]) |> arcTo({ interior = [16.25, 5.12], end = [21.61, 4.15] @@ -1173,8 +1158,8 @@ part001 = startSketchOn(XZ) ang = await u.getAngle('[data-overlay-index="12"]') await deleteSegmentSequence({ hoverPos: { x: segmentToDelete.x, y: segmentToDelete.y }, - codeToBeDeleted: 'tangentialArcTo([3.14 + 13, 1.14], %)', - stdLibFnName: 'tangentialArcTo', + codeToBeDeleted: 'tangentialArc(endAbsolute = [3.14 + 13, 1.14])', + stdLibFnName: 'tangentialArc', ang: ang + 180, steps: 6, locator: '[data-overlay-toolbar-index="12"]', @@ -1199,7 +1184,7 @@ part001 = startSketchOn(XZ) ang = await u.getAngle('[data-overlay-index="10"]') await deleteSegmentSequence({ hoverPos: { x: segmentToDelete.x, y: segmentToDelete.y }, - codeToBeDeleted: 'angledLineToY({ angle = 89, to = 9.14 + 0 }, %)', + codeToBeDeleted: 'angledLine(angle = 89, endAbsoluteY = 9.14 + 0)', stdLibFnName: 'angledLineToY', ang: ang + 180, locator: '[data-overlay-toolbar-index="10"]', @@ -1209,7 +1194,7 @@ part001 = startSketchOn(XZ) ang = await u.getAngle('[data-overlay-index="9"]') await deleteSegmentSequence({ hoverPos: { x: segmentToDelete.x, y: segmentToDelete.y }, - codeToBeDeleted: 'angledLineToX({ angle = 3 + 0, to = 26 }, %)', + codeToBeDeleted: 'angledLine(angle = 3 + 0, endAbsoluteX = 26)', stdLibFnName: 'angledLineToX', ang: ang + 180, locator: '[data-overlay-toolbar-index="9"]', @@ -1219,8 +1204,7 @@ part001 = startSketchOn(XZ) ang = await u.getAngle('[data-overlay-index="8"]') await deleteSegmentSequence({ hoverPos: { x: segmentToDelete.x, y: segmentToDelete.y }, - codeToBeDeleted: - 'angledLineOfYLength({ angle = -91, length = 19 + 0 }, %)', + codeToBeDeleted: 'angledLine(angle = -91, lengthY = 19 + 0)', stdLibFnName: 'angledLineOfYLength', ang: ang + 180, locator: '[data-overlay-toolbar-index="8"]', @@ -1230,8 +1214,7 @@ part001 = startSketchOn(XZ) ang = await u.getAngle('[data-overlay-index="7"]') await deleteSegmentSequence({ hoverPos: { x: segmentToDelete.x, y: segmentToDelete.y }, - codeToBeDeleted: - 'angledLineOfXLength({ angle = 181 + 0, length = 23.14 }, %)', + codeToBeDeleted: 'angledLine(angle = 181 + 0, lengthX = 23.14)', stdLibFnName: 'angledLineOfXLength', ang: ang + 180, locator: '[data-overlay-toolbar-index="7"]', @@ -1314,7 +1297,7 @@ part001 = startSketchOn(XZ) ang = await u.getAngle('[data-overlay-index="1"]') await deleteSegmentSequence({ hoverPos: { x: segmentToDelete.x, y: segmentToDelete.y }, - codeToBeDeleted: 'angledLine({ angle = 3 + 0, length = 32 + 0 }, %)', + codeToBeDeleted: 'angledLine(angle = 3 + 0, length = 32 + 0)', stdLibFnName: 'angledLine', ang: ang + 180, locator: '[data-overlay-toolbar-index="1"]', @@ -1335,24 +1318,20 @@ part001 = startSketchOn(XZ) test.describe('Testing delete with dependent segments', () => { const cases = [ 'line(end = [22, 2], tag = $seg01)', - 'angledLine([5, 23.03], %, $seg01)', + 'angledLine(angle = 5, length = 23.03, tag = $seg01)', 'xLine(length = 23, tag = $seg01)', 'yLine(length = -8, tag = $seg01)', 'xLine(endAbsolute = 30, tag = $seg01)', 'yLine(endAbsolute = -4, tag = $seg01)', - 'angledLineOfXLength([3, 30], %, $seg01)', - 'angledLineOfXLength({ angle = 3, length = 30 }, %, $seg01)', - 'angledLineOfYLength([3, 1.5], %, $seg01)', - 'angledLineOfYLength({ angle = 3, length = 1.5 }, %, $seg01)', - 'angledLineToX([3, 30], %, $seg01)', - 'angledLineToX({ angle = 3, to = 30 }, %, $seg01)', - 'angledLineToY([3, 7], %, $seg01)', - 'angledLineToY({ angle = 3, to = 7 }, %, $seg01)', + 'angledLine(angle = 3, lengthX = 30, tag = $seg01)', + 'angledLine(angle = 3, lengthY = 1.5, tag = $seg01)', + 'angledLine(angle = 3, endAbsoluteX = 30, tag = $seg01)', + 'angledLine(angle = 3, endAbsoluteY = 7, tag = $seg01)', ] for (const doesHaveTagOutsideSketch of [true, false]) { for (const lineOfInterest of cases) { const isObj = lineOfInterest.includes('{ angle = 3,') - test(`${lineOfInterest.split('=')[0]}${isObj ? '-[obj-input]' : ''}${ + test(`${lineOfInterest}${isObj ? '-[obj-input]' : ''}${ doesHaveTagOutsideSketch ? '-[tagOutsideSketch]' : '' }`, async ({ page, editor, homePage }) => { await page.addInitScript( @@ -1364,7 +1343,7 @@ part001 = startSketchOn(XZ) |> startProfileAt([5, 6], %) |> ${lineToBeDeleted} |> line(end = [-10, -15]) - |> angledLine([-176, segLen(seg01)], %) + |> angledLine(angle = -176, length = segLen(seg01)) ${extraLine ? 'myVar = segLen(seg01)' : ''}` ) }, @@ -1477,7 +1456,7 @@ part001 = startSketchOn(XZ) }, { - before: `angledLine([5 + 0, 23.03 + 0], %, $seg01)`, + before: `angledLine(angle = 5 + 0, length = 23.03 + 0, tag = $seg01)`, after: `line(end = [22.94, 2.01], tag = $seg01)`, }, { @@ -1497,32 +1476,25 @@ part001 = startSketchOn(XZ) after: `line(end = [0, -10], tag = $seg01)`, }, { - before: `angledLineOfXLength({ angle = 3 + 0, length = 30 + 0 }, %, $seg01)`, + before: `angledLine(angle = 3 + 0, lengthX = 30 + 0, tag = $seg01)`, after: `line(end = [30, 1.57], tag = $seg01)`, }, { - before: `angledLineOfYLength({ angle = 3 + 0, length = 1.5 + 0 }, %, $seg01)`, + before: `angledLine(angle = 3 + 0, lengthY = 1.5 + 0, tag = $seg01)`, after: `line(end = [28.62, 1.5], tag = $seg01)`, }, { - before: `angledLineToX({ angle = 3 + 0, to = 30 + 0 }, %, $seg01)`, + before: `angledLine(angle = 3 + 0, endAbsoluteX = 30 + 0, tag = $seg01)`, after: `line(end = [25, 1.31], tag = $seg01)`, }, { - before: `angledLineToY({ angle = 3 + 0, to = 7 + 0 }, %, $seg01)`, + before: `angledLine(angle = 3 + 0, endAbsoluteY = 7 + 0, tag = $seg01)`, after: `line(end = [19.08, 1], tag = $seg01)`, }, ] for (const { before, after } of cases) { - const isObj = before.includes('{ angle = 3') - test(`${before.split('=')[0]}${isObj ? '-[obj-input]' : ''}`, async ({ - page, - editor, - homePage, - scene, - cmdBar, - }) => { + test(before, async ({ page, editor, homePage, scene, cmdBar }) => { await page.addInitScript( async ({ lineToBeDeleted }) => { localStorage.setItem( @@ -1532,7 +1504,7 @@ part001 = startSketchOn(XZ) |> startProfileAt([5, 6], %) |> ${lineToBeDeleted} |> line(end = [-10, -15]) - |> angledLine([-176, segLen(seg01)], %)` + |> angledLine(angle = -176, length = segLen(seg01))` ) }, { diff --git a/e2e/playwright/testing-selections.spec.ts b/e2e/playwright/testing-selections.spec.ts index 1b2485dae..a002d936e 100644 --- a/e2e/playwright/testing-selections.spec.ts +++ b/e2e/playwright/testing-selections.spec.ts @@ -124,7 +124,7 @@ test.describe('Testing selections', { tag: ['@skipWin'] }, () => { // click a segment hold shift and click an axis, see that a relevant constraint is enabled const constrainButton = page.getByRole('button', { - name: 'Length: open menu', + name: 'constraints: open menu', }) const absXButton = page.getByRole('button', { name: 'Absolute X' }) @@ -272,27 +272,27 @@ sketch001 = startSketchOn(XZ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude001 = extrude(sketch001, length = 50) -sketch005 = startSketchOn(extrude001, 'END') +sketch005 = startSketchOn(extrude001, face = 'END') |> startProfileAt([23.24, 136.52], %) |> line(end = [-8.44, 36.61]) |> line(end = [49.4, 2.05]) |> line(end = [29.69, -46.95]) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() -sketch003 = startSketchOn(extrude001, seg01) +sketch003 = startSketchOn(extrude001, face = seg01) |> startProfileAt([21.23, 17.81], %) |> line(end = [51.97, 21.32]) |> line(end = [4.07, -22.75]) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() -sketch002 = startSketchOn(extrude001, seg02) +sketch002 = startSketchOn(extrude001, face = seg02) |> startProfileAt([-100.54, 16.99], %) |> line(end = [0, 20.03]) |> line(end = [62.61, 0], tag = $seg03) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude002 = extrude(sketch002, length = 50) -sketch004 = startSketchOn(extrude002, seg03) +sketch004 = startSketchOn(extrude002, face = seg03) |> startProfileAt([57.07, 134.77], %) |> line(end = [-4.72, 22.84]) |> line(end = [28.8, 6.71]) @@ -308,21 +308,15 @@ part009 = startSketchOn(XY) |> startProfileAt([pipeLargeDia - (thickness / 2), 38], %) |> line(end = [thickness, 0]) |> line(end = [0, -1]) - |> angledLineToX({ - angle = 60, - to = pipeSmallDia + thickness - }, %) + |> angledLine(angle = 60, endAbsoluteX = pipeSmallDia + thickness) |> line(end = [0, -pipeLength]) - |> angledLineToX({ - angle = -60, - to = pipeLargeDia + thickness - }, %) + |> angledLine(angle = -60, endAbsoluteX = pipeLargeDia + thickness) |> line(end = [0, -1]) |> line(end = [-thickness, 0]) |> line(end = [0, 1]) - |> angledLineToX({ angle = 120, to = pipeSmallDia }, %) + |> angledLine(angle = 120, endAbsoluteX = pipeSmallDia) |> line(end = [0, pipeLength]) - |> angledLineToX({ angle = 60, to = pipeLargeDia }, %) + |> angledLine(angle = 60, endAbsoluteX = pipeLargeDia) |> close() rev = revolve(part009, axis = Y) sketch006 = startSketchOn(XY) @@ -332,15 +326,9 @@ profile001 = circle( radius = 17.96 ) profile002 = startProfileAt([86.92, -63.81], sketch006) - |> angledLine([0, 63.81], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 17.05 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 63.81, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 17.05) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() profile003 = startProfileAt([40.16, -120.48], sketch006) @@ -403,28 +391,22 @@ profile003 = startProfileAt([40.16, -120.48], sketch006) // `extrude001 = extrude(sketch001, length = 50)` // ) // await expect(u.codeLocator).toContainText(`sketch005 = startSketchOn({ - // plane = { // origin = { x = 0, y = -50, z = 0 }, // xAxis = { x = 1, y = 0, z = 0 }, // yAxis = { x = 0, y = 0, z = 1 }, // zAxis = { x = 0, y = -1, z = 0 } - // } // })`) // await expect(u.codeLocator).toContainText(`sketch003 = startSketchOn({ - // plane = { // origin = { x = 116.53, y = 0, z = 163.25 }, // xAxis = { x = -0.81, y = 0, z = 0.58 }, // yAxis = { x = 0, y = -1, z = 0 }, // zAxis = { x = 0.58, y = 0, z = 0.81 } - // } // })`) // await expect(u.codeLocator).toContainText(`sketch002 = startSketchOn({ - // plane = { // origin = { x = -91.74, y = 0, z = 80.89 }, // xAxis = { x = -0.66, y = 0, z = -0.75 }, // yAxis = { x = 0, y = -1, z = 0 }, // zAxis = { x = -0.75, y = 0, z = 0.66 } - // } // })`) // DELETE SOLID 2D @@ -471,12 +453,12 @@ yo = startProfileAt([4.83, 12.56], part001) |> line(end = [15.1, 2.48]) |> line(end = [3.15, -9.85], tag = $seg01) |> line(end = [-15.17, -4.1]) - |> angledLine([segAng(seg01), 12.35], %, $seg02) + |> angledLine(angle = segAng(seg01), length = 12.35, tag = $seg02) |> line(end = [-13.02, 10.03]) |> close() yoo = extrude(yo, length = 4) -sketch002 = startSketchOn(yoo, seg02) -sketch001 = startSketchOn(yoo, 'END') +sketch002 = startSketchOn(yoo, face = seg02) +sketch001 = startSketchOn(yoo, face = 'END') profile002 = startProfileAt([-11.08, 2.39], sketch002) |> line(end = [4.89, 0.9]) |> line(end = [-0.61, -2.41]) @@ -484,15 +466,9 @@ profile002 = startProfileAt([-11.08, 2.39], sketch002) |> close() extrude001 = extrude(profile002, length = 15) profile001 = startProfileAt([7.49, 9.96], sketch001) - |> angledLine([0, 5.05], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 4.81 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 5.05, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 4.81) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -539,21 +515,21 @@ profile001 = startProfileAt([7.49, 9.96], sketch001) part001 = startSketchOn(XZ) |> startProfileAt([20, 0], %) |> line(end = [7.13, 4 + 0]) - |> angledLine({ angle = 3 + 0, length = 3.14 + 0 }, %) + |> angledLine(angle = 3 + 0, length = 3.14 + 0 ) |> line(endAbsolute = [20.14 + 0, -0.14 + 0]) |> xLine(endAbsolute = 29 + 0) |> yLine(length = -3.14 + 0, tag = $a) |> xLine(length = 1.63) - |> angledLineOfXLength({ angle = 3 + 0, length = 3.14 }, %) - |> angledLineOfYLength({ angle = 30, length = 3 + 0 }, %) - |> angledLineToX({ angle = 22.14 + 0, to = 12 }, %) - |> angledLineToY({ angle = 30, to = 11.14 }, %) + |> angledLine(angle = 3 + 0, lengthX = 3.14) + |> angledLine(angle = 30, lengthY = 3 + 0) + |> angledLine(angle = 22.14 + 0, endAbsoluteX = 12) + |> angledLine(angle = 30, endAbsoluteY = 11.14) |> angledLineThatIntersects({ angle = 3.14, intersectTag = a, offset = 0 }, %) - |> tangentialArcTo([13.14 + 0, 13.14], %) + |> tangentialArc(endAbsolute = [13.14 + 0, 13.14]) |> close() |> extrude(length = 5 + 7) ` @@ -592,7 +568,7 @@ part001 = startSketchOn(XZ) const extrusionTopCap: Coords2d = [800, 240] const flatExtrusionFace: Coords2d = [960, 160] - const tangentialArcTo: Coords2d = [840, 160] + const tangentialArc: Coords2d = [840, 160] const close: Coords2d = [720, 200] const nothing: Coords2d = [600, 200] const closeEdge: Coords2d = [744, 233] @@ -689,28 +665,28 @@ part001 = startSketchOn(XZ) ) await checkCodeAtHoverPosition( - 'tangentialArcTo', - tangentialArcTo, - 'tangentialArcTo([13.14+0,13.14],%)extrude(length=5+7)', - 'tangentialArcTo([13.14 + 0, 13.14], %)' + 'tangentialArc', + tangentialArc, + 'tangentialArc(endAbsolute=[13.14+0,13.14])extrude(length=5+7)', + 'tangentialArc(endAbsolute = [13.14 + 0, 13.14])' ) await checkCodeAtHoverPosition( 'tangentialArcEdge', tangentialArcEdge, - `tangentialArcTo([13.14+0,13.14],%)`, - 'tangentialArcTo([13.14 + 0, 13.14], %)' + `tangentialArc(endAbsolute=[13.14+0,13.14])`, + 'tangentialArc(endAbsolute = [13.14 + 0, 13.14])' ) await checkCodeAtHoverPosition( 'tangentialArcOppositeEdge', tangentialArcOppositeEdge, - `tangentialArcTo([13.14+0,13.14],%)`, - 'tangentialArcTo([13.14 + 0, 13.14], %)' + `tangentialArc(endAbsolute=[13.14+0,13.14])`, + 'tangentialArc(endAbsolute = [13.14 + 0, 13.14])' ) await checkCodeAtHoverPosition( 'tangentialArcAdjacentEdge', tangentialArcAdjacentEdge, - `tangentialArcTo([13.14+0,13.14],%)`, - 'tangentialArcTo([13.14 + 0, 13.14], %)' + `tangentialArc(endAbsolute=[13.14+0,13.14])`, + 'tangentialArc(endAbsolute = [13.14 + 0, 13.14])' ) await checkCodeAtHoverPosition( @@ -736,14 +712,14 @@ part001 = startSketchOn(XZ) await checkCodeAtHoverPosition( 'straightSegmentEdge', straightSegmentEdge, - `angledLineToY({angle=30,to=11.14},%)`, - 'angledLineToY({ angle = 30, to = 11.14 }, %)' + `angledLine(angle=30,endAbsoluteY=11.14)`, + 'angledLine(angle = 30, endAbsoluteY = 11.14)' ) await checkCodeAtHoverPosition( 'straightSegmentOppositeEdge', straightSegmentOppositeEdge, - `angledLineToY({angle=30,to=11.14},%)`, - 'angledLineToY({ angle = 30, to = 11.14 }, %)' + `angledLine(angle=30,endAbsoluteY=11.14)`, + 'angledLine(angle = 30, endAbsoluteY = 11.14)' ) await checkCodeAtHoverPosition( 'straightSegmentAdjacentEdge', @@ -758,15 +734,9 @@ part001 = startSketchOn(XZ) await u.codeLocator.fill(`@settings(defaultLengthUnit = in) sketch001 = startSketchOn(XZ) |> startProfileAt([75.8, 317.2], %) // [$startCapTag, $EndCapTag] - |> angledLine([0, 268.43], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 217.26 - ], %, $seg01) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $yo) + |> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $yo) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) |> close() extrude001 = extrude(sketch001, length = 100) @@ -815,14 +785,14 @@ part001 = startSketchOn(XZ) await checkCodeAtHoverPosition( 'oppositeChamfer', oppositeChamfer, - `angledLine([segAng(rectangleSegmentA001)-90,217.26],%,$seg01)chamfer(length=30,tags=[seg01,getNextAdjacentEdge(yo),getNextAdjacentEdge(seg02),getOppositeEdge(seg01)],)`, + `angledLine(angle=segAng(rectangleSegmentA001)-90,length=217.26,tag=$seg01)chamfer(length=30,tags=[seg01,getNextAdjacentEdge(yo),getNextAdjacentEdge(seg02),getOppositeEdge(seg01)],)`, ' )' ) await checkCodeAtHoverPosition( 'baseChamfer', baseChamfer, - `angledLine([segAng(rectangleSegmentA001)-90,217.26],%,$seg01)chamfer(length=30,tags=[seg01,getNextAdjacentEdge(yo),getNextAdjacentEdge(seg02),getOppositeEdge(seg01)],)`, + `angledLine(angle=segAng(rectangleSegmentA001)-90,length=217.26,tag=$seg01)chamfer(length=30,tags=[seg01,getNextAdjacentEdge(yo),getNextAdjacentEdge(seg02),getOppositeEdge(seg01)],)`, ' )' ) @@ -860,7 +830,7 @@ part001 = startSketchOn(XZ) await checkCodeAtHoverPosition( 'adjacentChamfer2', adjacentChamfer2, - `angledLine([segAng(rectangleSegmentA001),-segLen(rectangleSegmentA001)],%,$yo)chamfer(length=30,tags=[seg01,getNextAdjacentEdge(yo),getNextAdjacentEdge(seg02),getOppositeEdge(seg01)],)`, + `angledLine(angle=segAng(rectangleSegmentA001),length=-segLen(rectangleSegmentA001),tag=$yo)chamfer(length=30,tags=[seg01,getNextAdjacentEdge(yo),getNextAdjacentEdge(seg02),getOppositeEdge(seg01)],)`, ' )' ) }) @@ -917,7 +887,7 @@ part001 = startSketchOn(XZ) await expect(page.locator('.cm-activeLine')).toHaveText('') const codeToAdd = `${await u.codeLocator.allInnerTexts()} - sketch002 = startSketchOn(extrude001, $seg01) + sketch002 = startSketchOn(extrude001, face = $seg01) |> startProfileAt([-12.94, 6.6], %) |> line(end = [2.45, -0.2]) |> line(end = [-2, -1.25]) @@ -960,11 +930,11 @@ part001 = startSketchOn(XZ) }, { pos: [816, 244], - expectedCode: 'angledLine([segAng(seg01), yo], %)', + expectedCode: 'angledLine(angle = segAng(seg01), length = yo)', }, { pos: [1107, 161], - expectedCode: 'tangentialArcTo([167.95, -28.85], %)', + expectedCode: 'tangentialArc(endAbsolute = [167.95, -28.85])', }, ] as const await page.addInitScript( diff --git a/e2e/playwright/testing-selections.spec.ts-snapshots/editor-content-Google-Chrome-darwin b/e2e/playwright/testing-selections.spec.ts-snapshots/editor-content-Google-Chrome-darwin index b7d6fe1c4..efc539430 100644 --- a/e2e/playwright/testing-selections.spec.ts-snapshots/editor-content-Google-Chrome-darwin +++ b/e2e/playwright/testing-selections.spec.ts-snapshots/editor-content-Google-Chrome-darwin @@ -1 +1 @@ -part001 = startSketchOn('XY')yo = startProfileAt([4.83, 12.56], part001) |> line(end = [15.1, 2.48]) |> line(end = [3.15, -9.85], tag = $seg01) |> line(end = [-15.17, -4.1]) |> angledLine([segAng(seg01), 12.35], %, $seg02) |> line(end = [-13.02, 10.03]) |> close()sketch002 = startSketchOn({ plane = { origin = { x = 7.49, y = 2.4, z = 0 }, xAxis = { x = -0.3, y = 0.95, z = 0 }, yAxis = { x = 0, y = 0, z = 1 }, zAxis = { x = 0.95, y = 0.3, z = 0 } }})sketch001 = startSketchOn({ plane = { origin = { x = 0, y = 0, z = 4 }, xAxis = { x = 1, y = 0, z = 0 }, yAxis = { x = 0, y = 1, z = 0 }, zAxis = { x = 0, y = 0, z = 1 } }})profile002 = startProfileAt([-11.08, 2.39], sketch002) |> line(end = [4.89, 0.9]) |> line(end = [-0.61, -2.41]) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close()extrude001 = extrude(profile002, length = 15)profile001 = startProfileAt([7.49, 9.96], sketch001) |> angledLine([0, 5.05], %, $rectangleSegmentA001) |> angledLine([ segAng(rectangleSegmentA001) - 90, 4.81 ], %) |> angledLine([ segAng(rectangleSegmentA001), -segLen(rectangleSegmentA001) ], %) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() \ No newline at end of file +part001 = startSketchOn('XY')yo = startProfileAt([4.83, 12.56], part001) |> line(end = [15.1, 2.48]) |> line(end = [3.15, -9.85], tag = $seg01) |> line(end = [-15.17, -4.1]) |> angledLine(angle = segAng(seg01), 12.35], %, $seg02) |> line(end = [-13.02, 10.03]) |> close()sketch002 = startSketchOn({ plane = { origin = { x = 7.49, y = 2.4, z = 0 }, xAxis = { x = -0.3, y = 0.95, z = 0 }, yAxis = { x = 0, y = 0, z = 1 }, zAxis = { x = 0.95, y = 0.3, z = 0 } }})sketch001 = startSketchOn({ plane = { origin = { x = 0, y = 0, z = 4 }, xAxis = { x = 1, y = 0, z = 0 }, yAxis = { x = 0, y = 1, z = 0 }, zAxis = { x = 0, y = 0, z = 1 } }})profile002 = startProfileAt([-11.08, 2.39], sketch002) |> line(end = [4.89, 0.9]) |> line(end = [-0.61, -2.41]) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close()extrude001 = extrude(profile002, length = 15)profile001 = startProfileAt([7.49, 9.96], sketch001) |> angledLine(angle = 0, length = 5.05, tag = $rectangleSegmentA001) |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 4.81 ) |> angledLine( angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001) ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() diff --git a/e2e/playwright/text-to-cad-tests.spec.ts b/e2e/playwright/text-to-cad-tests.spec.ts index da2406141..1d47915d0 100644 --- a/e2e/playwright/text-to-cad-tests.spec.ts +++ b/e2e/playwright/text-to-cad-tests.spec.ts @@ -37,18 +37,18 @@ test.describe('Text-to-CAD tests', { tag: ['@skipWin'] }, () => { await expect(successToastMessage).toBeVisible({ timeout: 15000 }) // Hit accept. - const copyToClipboardButton = page.getByRole('button', { + const acceptButton = page.getByRole('button', { name: 'Accept', }) - await expect(copyToClipboardButton).toBeVisible() + await expect(acceptButton).toBeVisible() - await copyToClipboardButton.click() + await acceptButton.click() // Click in the code editor. await page.locator('.cm-content').click() // Expect the code to be pasted. - await expect(page.locator('.cm-content')).toContainText(`const`) + await expect(page.locator('.cm-content')).toContainText(`startSketchOn`) // make sure a model renders. // wait for execution done diff --git a/e2e/playwright/various.spec.ts b/e2e/playwright/various.spec.ts index 2488404b4..5703830f2 100644 --- a/e2e/playwright/various.spec.ts +++ b/e2e/playwright/various.spec.ts @@ -59,10 +59,11 @@ part001 = startSketchOn(-XZ) |> startProfileAt([0, 0], %) |> yLine(length = baseHeight) |> xLine(length = baseLen) -|> angledLineToY({ +|> angledLine( angle = topAng, - to = totalHeightHalf, - }, %, $seg04) + endAbsoluteY = totalHeightHalf, + tag = $seg04, + ) |> xLine(endAbsolute = totalLen, tag = $seg03) |> yLine(length = -armThick, tag = $seg01) |> angledLineThatIntersects({ @@ -70,11 +71,12 @@ part001 = startSketchOn(-XZ) offset = -armThick, intersectTag = seg04 }, %) -|> angledLineToY([segAng(seg04) + 180, turns::ZERO], %) -|> angledLineToY({ +|> angledLine(angle = segAng(seg04) + 180, endAbsoluteY = turns::ZERO) +|> angledLine( angle = -bottomAng, - to = -totalHeightHalf - armThick, - }, %, $seg02) + endAbsoluteY = -totalHeightHalf - armThick, + tag = $seg02, + ) |> xLine(endAbsolute = segEndX(seg03) + 0) |> yLine(length = -segLen(seg01)) |> angledLineThatIntersects({ @@ -82,7 +84,7 @@ part001 = startSketchOn(-XZ) offset = -armThick, intersectTag = seg02 }, %) -|> angledLineToY([segAng(seg02) + 180, -baseHeight], %) +|> angledLine(angle = segAng(seg02) + 180, endAbsoluteY = -baseHeight) |> xLine(endAbsolute = turns::ZERO) |> close() |> extrude(length = 4)` @@ -544,7 +546,7 @@ extrude001 = extrude(sketch001, length = 5 + 7)` previousCodeContent = await page.locator('.cm-content').innerText() await expect.poll(u.normalisedEditorCode).toContain( - u.normalisedCode(`sketch002 = startSketchOn(extrude001, seg01) + u.normalisedCode(`sketch002 = startSketchOn(extrude001, face = seg01) profile001 = startProfileAt([-12.34, 12.34], sketch002) |> line(end = [12.34, -12.34]) |> line(end = [-12.34, -12.34]) @@ -581,7 +583,7 @@ profile001 = startProfileAt([-12.34, 12.34], sketch002) await expect(page.locator('.cm-content')).not.toHaveText(previousCodeContent) previousCodeContent = await page.locator('.cm-content').innerText() - const result = makeTemplate`sketch002 = startSketchOn(extrude001, seg01) + const result = makeTemplate`sketch002 = startSketchOn(extrude001, face = seg01) |> startProfileAt([-12.83, 6.7], %) |> line(end = [${[2.28, 2.35]}, -${0.07}]) |> line(end = [-3.05, -1.47]) @@ -612,3 +614,12 @@ profile001 = startProfileAt([-12.34, 12.34], sketch002) const sketch002 = extrude(sketch002, length = ${[5, 5]} + 7)` await expect(page.locator('.cm-content')).toHaveText(result2.regExp) }) + +test.fixme( + `Opening a share link in the web isn't blocked by the web warning banner`, + async () => { + // This test is not able to be run right now since we don't have a web-only setup for Playwright. + // @franknoirot can implement it when that testing infra is set up. It should be a test to cover the fix from + // modeling-app issue #6172. + } +) diff --git a/flake.lock b/flake.lock index 20c3e4946..5f2194b0b 100644 --- a/flake.lock +++ b/flake.lock @@ -1,6 +1,56 @@ { "nodes": { + "naersk": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1743800763, + "narHash": "sha256-YFKV+fxEpMgP5VsUcM6Il28lI0NlpM7+oB1XxbBAYCw=", + "owner": "nix-community", + "repo": "naersk", + "rev": "ed0232117731a4c19d3ee93aa0c382a8fe754b01", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "naersk", + "type": "github" + } + }, "nixpkgs": { + "locked": { + "lastModified": 1744316434, + "narHash": "sha256-lzFCg/1C39pyY2hMB2gcuHV79ozpOz/Vu15hdjiFOfI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d19cf9dfc633816a437204555afeb9e722386b76", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1744316434, + "narHash": "sha256-lzFCg/1C39pyY2hMB2gcuHV79ozpOz/Vu15hdjiFOfI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d19cf9dfc633816a437204555afeb9e722386b76", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1736320768, "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", @@ -16,38 +66,23 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1728538411, - "narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "root": { "inputs": { - "nixpkgs": "nixpkgs", + "naersk": "naersk", + "nixpkgs": "nixpkgs_2", "rust-overlay": "rust-overlay" } }, "rust-overlay": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1736476219, - "narHash": "sha256-+qyv3QqdZCdZ3cSO/cbpEY6tntyYjfe1bB12mdpNFaY=", + "lastModified": 1744338850, + "narHash": "sha256-pwMIVmsb8fjjT92n5XFDqCsplcX70qVMMT7NulumPXs=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "de30cc5963da22e9742bbbbb9a3344570ed237b9", + "rev": "5e64aecc018e6f775572609e7d7485fdba6985a7", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 833b10f12..5efa9191a 100644 --- a/flake.nix +++ b/flake.nix @@ -1,79 +1,95 @@ { - description = "modeling-app development environment"; + description = "zoo.dev modeling-app"; - # Flake inputs inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - rust-overlay.url = "github:oxalica/rust-overlay"; # A helper for Rust + Nix + rust-overlay.url = "github:oxalica/rust-overlay"; + naersk.url = "github:nix-community/naersk"; }; - # Flake outputs - outputs = { self, nixpkgs, rust-overlay }: - let - # Overlays enable you to customize the Nixpkgs attribute set - overlays = [ - # Makes a `rust-bin` attribute available in Nixpkgs - (import rust-overlay) - # Provides a `rustToolchain` attribute for Nixpkgs that we can use to - # create a Rust environment - (self: super: { - rustToolchain = super. rust-bin.stable.latest.default.override { - targets = [ "wasm32-unknown-unknown" ]; - extensions = [ "rustfmt" "llvm-tools-preview" ]; + outputs = { + self, + nixpkgs, + rust-overlay, + naersk, + }: let + overlays = [ + (import rust-overlay) + (self: super: { + rustToolchain = super.rust-bin.stable.latest.default.override { + targets = ["wasm32-unknown-unknown"]; + extensions = ["rustfmt" "llvm-tools-preview" "rust-src"]; + }; + }) + ]; + + allSystems = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + + forAllSystems = f: + nixpkgs.lib.genAttrs allSystems (system: + f { + pkgs = import nixpkgs { + inherit overlays system; }; - }) - ]; - - # Systems supported - allSystems = [ - "x86_64-linux" # 64-bit Intel/AMD Linux - "aarch64-linux" # 64-bit ARM Linux - "x86_64-darwin" # 64-bit Intel macOS - "aarch64-darwin" # 64-bit ARM macOS - ]; - - # Helper to provide system-specific attributes - forAllSystems = f: nixpkgs.lib.genAttrs allSystems (system: f { - pkgs = import nixpkgs { inherit overlays system; }; - }); - - in - { - # Development environment output - devShells = forAllSystems ({ pkgs }: { - default = pkgs.mkShell { - # The Nix packages provided in the environment - packages = (with pkgs; [ - # The package provided by our custom overlay. Includes cargo, Clippy, cargo-fmt, - # rustdoc, rustfmt, and other tools. + system = system; + }); + in { + devShells = forAllSystems ({pkgs, ...}: { + default = pkgs.mkShell { + packages = + (with pkgs; [ rustToolchain - - cargo-llvm-cov cargo-nextest - just postgresql.lib openssl pkg-config - nodejs_22 - yarn - electron playwright-driver.browsers - ]) ++ pkgs.lib.optionals pkgs.stdenv.isDarwin (with pkgs; [ - libiconv + wasm-pack + python3Full + ]) + ++ pkgs.lib.optionals pkgs.stdenv.isDarwin (with pkgs; [ + libiconv darwin.apple_sdk.frameworks.Security ]); - TARGET_CC = "${pkgs.stdenv.cc}/bin/${pkgs.stdenv.cc.targetPrefix}cc"; - LIBCLANG_PATH = "${pkgs.libclang.lib}/lib"; - ELECTRON_OVERRIDE_DIST_PATH = "${pkgs.electron}/bin/"; - PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS = true; - PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH = "${pkgs.playwright-driver.browsers}/chromium-1091/chrome-linux/chrome"; - PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}"; - NODE_ENV = "development"; - }; - }); - }; + TARGET_CC = "${pkgs.stdenv.cc}/bin/${pkgs.stdenv.cc.targetPrefix}cc"; + LIBCLANG_PATH = "${pkgs.libclang.lib}/lib"; + ELECTRON_OVERRIDE_DIST_PATH = "${pkgs.electron}/bin/"; + PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS = true; + PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH = "${pkgs.playwright-driver.browsers}/chromium-1091/chrome-linux/chrome"; + PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}"; + NODE_ENV = "development"; + }; + }); + + packages = forAllSystems ({ + pkgs, + system, + }: let + naersk-lib = pkgs.callPackage naersk { + cargo = pkgs.rustToolchain; + rustc = pkgs.rustToolchain; + }; + in { + kcl-language-server = naersk-lib.buildPackage { + pname = "kcl-language-server"; + version = "0.1.0"; + release = true; + + src = ./rust; + + cargoBuildOptions = opt: opt ++ ["-p" "kcl-language-server"]; + buildInputs = [pkgs.openssl pkgs.pkg-config]; + }; + default = self.packages.${system}.kcl-language-server; + }); + }; } diff --git a/known-circular.txt b/known-circular.txt index ee42b3d6c..a98bc438b 100644 --- a/known-circular.txt +++ b/known-circular.txt @@ -1,4 +1,7 @@ -$ dpdm --no-warning --no-tree -T --skip-dynamic-imports=circular src/index.tsx + +> zoo-modeling-app@0.0.0 circular-deps +> dpdm --no-warning --no-tree -T --skip-dynamic-imports=circular src/index.tsx + • Circular Dependencies 01) src/lang/std/sketch.ts -> src/lang/modifyAst.ts -> src/lang/modifyAst/addEdgeTreatment.ts 02) src/lang/std/sketch.ts -> src/lang/modifyAst.ts diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..7962f34b0 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,21986 @@ +{ + "name": "zoo-modeling-app", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "zoo-modeling-app", + "version": "0.0.0", + "hasInstallScript": true, + "license": "MIT", + "workspaces": [ + "packages/codemirror-lang-kcl", + "packages/codemirror-lsp-client", + "rust/kcl-language-server" + ], + "dependencies": { + "@codemirror/autocomplete": "^6.18.6", + "@codemirror/commands": "^6.8.1", + "@codemirror/language": "^6.11.0", + "@codemirror/lint": "^6.8.5", + "@codemirror/search": "^6.5.10", + "@codemirror/state": "^6.5.2", + "@codemirror/theme-one-dark": "^6.1.2", + "@csstools/postcss-oklab-function": "^4.0.8", + "@fortawesome/fontawesome-svg-core": "^6.7.2", + "@fortawesome/free-brands-svg-icons": "^6.7.2", + "@fortawesome/free-solid-svg-icons": "^6.7.2", + "@fortawesome/react-fontawesome": "^0.2.0", + "@headlessui/react": "^1.7.19", + "@headlessui/tailwindcss": "^0.2.2", + "@kittycad/lib": "2.0.28", + "@lezer/highlight": "^1.2.1", + "@lezer/lr": "^1.4.1", + "@react-hook/resize-observer": "^2.0.1", + "@replit/codemirror-interact": "^6.3.1", + "@ts-stack/markdown": "^1.5.0", + "@tweenjs/tween.js": "^23.1.1", + "@xstate/inspect": "^0.8.0", + "@xstate/react": "^4.1.1", + "bonjour-service": "^1.3.0", + "bson": "^6.10.3", + "chokidar": "^4.0.3", + "codemirror": "^6.0.1", + "decamelize": "^6.0.0", + "diff": "^7.0.0", + "electron-updater": "^6.6.2", + "fuse.js": "^7.1.0", + "html2canvas-pro": "^1.5.8", + "isomorphic-fetch": "^3.0.0", + "json-rpc-2.0": "^1.6.0", + "jszip": "^3.10.1", + "minimist": "^1.2.8", + "openid-client": "^5.6.5", + "re-resizable": "^6.11.2", + "react": "^18.3.1", + "react-dom": "^18.2.0", + "react-hot-toast": "^2.5.2", + "react-hotkeys-hook": "^4.6.1", + "react-json-view": "^1.21.3", + "react-modal": "^3.16.3", + "react-modal-promise": "^1.0.2", + "react-router-dom": "^6.28.0", + "sketch-helpers": "^0.0.4", + "three": "^0.175.0", + "ua-parser-js": "^1.0.37", + "uuid": "^11.1.0", + "vscode-jsonrpc": "^8.2.1", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-uri": "^3.1.0", + "web-vitals": "^3.5.2", + "win-ca": "^3.5.1", + "xstate": "^5.19.2", + "yargs": "^17.7.2" + }, + "devDependencies": { + "@babel/plugin-proposal-private-property-in-object": "^7.21.11", + "@babel/preset-env": "^7.26.9", + "@electron-forge/cli": "^7.8.0", + "@electron-forge/plugin-fuses": "^7.8.0", + "@electron-forge/plugin-vite": "^7.8.0", + "@electron/fuses": "^1.8.0", + "@electron/notarize": "^2.5.0", + "@iarna/toml": "^2.2.5", + "@lezer/generator": "^1.7.3", + "@nabla/vite-plugin-eslint": "^2.0.5", + "@playwright/test": "^1.51.1", + "@testing-library/jest-dom": "^5.14.1", + "@testing-library/react": "^15.0.2", + "@trivago/prettier-plugin-sort-imports": "^5.2.2", + "@types/diff": "^7.0.2", + "@types/electron": "^1.6.10", + "@types/isomorphic-fetch": "^0.0.39", + "@types/minimist": "^1.2.5", + "@types/mocha": "^10.0.10", + "@types/node": "^22.14.0", + "@types/pixelmatch": "^5.2.6", + "@types/pngjs": "^6.0.4", + "@types/react": "^18.3.4", + "@types/react-dom": "^18.3.1", + "@types/react-modal": "^3.16.3", + "@types/three": "^0.175.0", + "@types/ua-parser-js": "^0.7.39", + "@types/uuid": "^9.0.8", + "@types/wicg-file-system-access": "^2023.10.6", + "@types/ws": "^8.18.1", + "@vitejs/plugin-react": "^4.3.4", + "@vitest/web-worker": "^1.5.0", + "@xstate/cli": "^0.5.17", + "autoprefixer": "^10.4.21", + "dpdm": "^3.14.0", + "electron": "^34.1.1", + "electron-builder": "^26.0.12", + "eslint": "^8.0.1", + "eslint-plugin-css-modules": "^2.12.0", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jest": "^28.11.0", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-perf": "^3.3.3", + "eslint-plugin-suggest-no-throw": "^1.0.0", + "eslint-plugin-testing-library": "^7.1.1", + "happy-dom": "^16.3.0", + "http-server": "^14.1.1", + "husky": "^9.1.7", + "kill-port": "^2.0.1", + "node-fetch": "^3.3.2", + "openapi-typescript": "^7.6.1", + "pixelmatch": "^5.3.0", + "pngjs": "^7.0.0", + "postcss": "^8.4.43", + "postinstall-postinstall": "^2.1.0", + "prettier": "^3.5.3", + "prettier-plugin-organize-imports": "^4.1.0", + "setimmediate": "^1.0.5", + "tailwindcss": "^3.4.17", + "ts-node": "^10.0.0", + "typescript": "^5.8.3", + "typescript-eslint": "^8.29.0", + "vite": "^5.4.18", + "vite-plugin-package-version": "^1.1.0", + "vite-plugin-top-level-await": "^1.5.0", + "vite-tsconfig-paths": "^4.3.2", + "vitest": "^1.6.1", + "vitest-webgl-canvas-mock": "^1.1.0", + "ws": "^8.18.1" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", + "integrity": "sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.9.0.tgz", + "integrity": "sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.3.tgz", + "integrity": "sha512-/wGw8fJ4mdpJ1Cum7s1S+VQyXt1ihwKLzfabS1O/RDADnmzVc01dHn44qD0BvGH6KlZNzOMW95tEpKqhkCChPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.19.1.tgz", + "integrity": "sha512-zHeoI3NCs53lLBbWNzQycjnYKsA1CVKlnzSNuSFcUDwBp8HHVObePxrM7HaX+Ha5Ks639H7chNC9HOaIhNS03w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.8.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.2.0.tgz", + "integrity": "sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.11.0.tgz", + "integrity": "sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/identity": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.8.0.tgz", + "integrity": "sha512-l9ALUGHtFB/JfsqmA+9iYAp2a+cCwdNO/cyIr2y7nJLJsz1aae6qVP8XxT7Kbudg0IQRSIMXj0+iivFdbD1xPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.9.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.17.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^4.2.0", + "@azure/msal-node": "^3.2.3", + "events": "^3.0.0", + "jws": "^4.0.0", + "open": "^10.1.0", + "stoppable": "^1.1.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.4.tgz", + "integrity": "sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/msal-browser": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.10.0.tgz", + "integrity": "sha512-48X2VwOtHk8A1CI00E8tAqko0+3qQh53u5bOPySzdojL3T/Ad4GgRnN0c0oLJ1/PcTm4D4QybHYG3LBOX0l3/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "15.5.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "15.5.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.5.0.tgz", + "integrity": "sha512-u97AJ6m4PB24/Plms9e9iydRcOaxxrHWkan1px5GeWGJfakY1D/r1DmY1+Typ8zWC/5JbNzH1GYpXrorPymz5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.5.0.tgz", + "integrity": "sha512-9cLUmcOZ5FODz3uAhS2C9A1U7xDUTCHVcaNQBYpOd5qCKdKM6ft/ydAfw27vEntuaDgnh5jytOAKsEzEbtoQ1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "15.5.0", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@azure/msal-node/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", + "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.8", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz", + "integrity": "sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.27.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.0.tgz", + "integrity": "sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", + "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.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-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", + "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.26.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.0.tgz", + "integrity": "sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", + "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", + "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", + "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.0.tgz", + "integrity": "sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", + "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz", + "integrity": "sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", + "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.8", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.26.8", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.26.5", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.26.3", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.26.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.26.8", + "@babel/plugin-transform-typeof-symbol": "^7.26.7", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.40.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@codemirror/autocomplete": { + "version": "6.18.6", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz", + "integrity": "sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/commands": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.8.1.tgz", + "integrity": "sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.11.0.tgz", + "integrity": "sha512-A7+f++LodNNc1wGgoRDTt78cOwWm9KVezApgjOMp1W4hM0898nsqBXwF+sbePE7ZRcjN7Sa1Z5m2oN27XkmEjQ==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "6.8.5", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.5.tgz", + "integrity": "sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.35.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/search": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.10.tgz", + "integrity": "sha512-RMdPdmsrUf53pb2VwflKGHEe1XVM07hI7vV2ntgw1dmqhimpatSJKva4VA9h4TLUDOD4EIF02201oZurpnEFsg==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz", + "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==", + "license": "MIT", + "dependencies": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "node_modules/@codemirror/theme-one-dark": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz", + "integrity": "sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/highlight": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.36.5", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.36.5.tgz", + "integrity": "sha512-cd+FZEUlu3GQCYnguYm3EkhJ8KJVisqqUsCOKedBoAt/d9c76JUUap6U0UrpElln5k6VyrEOYliMuDAKIeDQLg==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.5.0", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", + "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.2.tgz", + "integrity": "sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.8.tgz", + "integrity": "sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.0.2", + "@csstools/css-calc": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.8.tgz", + "integrity": "sha512-+5aPsNWgxohXoYNS1f+Ys0x3Qnfehgygv3qrPyv+Y25G0yX54/WlVB+IXprqBLOXHM1gsVF+QQSjlArhygna0Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.0.8", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/postcss-progressive-custom-properties": "^4.0.0", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.0.0.tgz", + "integrity": "sha512-XQPtROaQjomnvLUSy/bALTR5VCtTVUFwYs1SblvYgLSeTo2a/bMNwUwo2piXw5rTv/FEYiy5yPSXBqg9OKUx7Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/utilities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz", + "integrity": "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@electron-forge/cli": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/cli/-/cli-7.8.0.tgz", + "integrity": "sha512-XZ+Hg7pxeE9pgrahqcpMlND+VH0l0UTZLyO5wkI+YfanNyBQksB2mw24XeEtCA6x8F2IaEYdIGgijmPF6qpjzA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.electron-forge-cli?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "MIT", + "dependencies": { + "@electron-forge/core": "7.8.0", + "@electron-forge/core-utils": "7.8.0", + "@electron-forge/shared-types": "7.8.0", + "@electron/get": "^3.0.0", + "chalk": "^4.0.0", + "commander": "^11.1.0", + "debug": "^4.3.1", + "fs-extra": "^10.0.0", + "listr2": "^7.0.2", + "log-symbols": "^4.0.0", + "semver": "^7.2.1" + }, + "bin": { + "electron-forge": "dist/electron-forge.js", + "electron-forge-vscode-nix": "script/vscode.sh", + "electron-forge-vscode-win": "script/vscode.cmd" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/cli/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron-forge/core": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-7.8.0.tgz", + "integrity": "sha512-7byf660ECZND+irOhGxvpmRXjk1bMrsTWh5J2AZMEvaXI8tub9OrZY9VSbi5fcDt0lpHPKmgVk7NRf/ZjJ+beQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.electron-forge-core?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "MIT", + "dependencies": { + "@electron-forge/core-utils": "7.8.0", + "@electron-forge/maker-base": "7.8.0", + "@electron-forge/plugin-base": "7.8.0", + "@electron-forge/publisher-base": "7.8.0", + "@electron-forge/shared-types": "7.8.0", + "@electron-forge/template-base": "7.8.0", + "@electron-forge/template-vite": "7.8.0", + "@electron-forge/template-vite-typescript": "7.8.0", + "@electron-forge/template-webpack": "7.8.0", + "@electron-forge/template-webpack-typescript": "7.8.0", + "@electron-forge/tracer": "7.8.0", + "@electron/get": "^3.0.0", + "@electron/packager": "^18.3.5", + "@electron/rebuild": "^3.7.0", + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.3.1", + "fast-glob": "^3.2.7", + "filenamify": "^4.1.0", + "find-up": "^5.0.0", + "fs-extra": "^10.0.0", + "global-dirs": "^3.0.0", + "got": "^11.8.5", + "interpret": "^3.1.1", + "listr2": "^7.0.2", + "lodash": "^4.17.20", + "log-symbols": "^4.0.0", + "node-fetch": "^2.6.7", + "rechoir": "^0.8.0", + "semver": "^7.2.1", + "source-map-support": "^0.5.13", + "sudo-prompt": "^9.1.1", + "username": "^5.1.0" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/core-utils": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/core-utils/-/core-utils-7.8.0.tgz", + "integrity": "sha512-ZioRzqkXVOGuwkfvXN/FPZxcssJ9AkOZx6RvxomQn90F77G2KfEbw4ZwAxVTQ+jWNUzydTic5qavWle++Y5IeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.0", + "@electron/rebuild": "^3.7.0", + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.3.1", + "find-up": "^5.0.0", + "fs-extra": "^10.0.0", + "log-symbols": "^4.0.0", + "semver": "^7.2.1" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/core-utils/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron-forge/core/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@electron-forge/core/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron-forge/maker-base": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-7.8.0.tgz", + "integrity": "sha512-yGRvz70w+NnKO7PhzNFRgYM+x6kxYFgpbChJIQBs3WChd9bGjL+MZLrwYqmxOFLpWNwRAJ6PEi4E/8U5GgV6AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.0", + "fs-extra": "^10.0.0", + "which": "^2.0.2" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/plugin-base": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-7.8.0.tgz", + "integrity": "sha512-rDeeChRWIp5rQVo3Uc1q0ncUvA+kWWURW7tMuQjPvy2qVSgX+jIf5krk+T1Dp06+D4YZzEIrkibRaamAaIcR1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.0" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/plugin-fuses": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-fuses/-/plugin-fuses-7.8.0.tgz", + "integrity": "sha512-ZxFtol3aHNY+oYrZWa7EDBLl4uk/+NlOCJmqC7C32R/3S/Kn2ebVRxpLwrFM12KtHeD+Z3gmZNBhwOe0TECgOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/plugin-base": "7.8.0", + "@electron-forge/shared-types": "7.8.0" + }, + "engines": { + "node": ">= 16.4.0" + }, + "peerDependencies": { + "@electron/fuses": ">=1.0.0" + } + }, + "node_modules/@electron-forge/plugin-vite": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-vite/-/plugin-vite-7.8.0.tgz", + "integrity": "sha512-qopX6DU51mUD4bnGYklo5nr0U+hmwATKQavUpncg1i+R0pyYSUrYSVYu2HVFNj8F9QXDyXhf1I2AwwZe9STYug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/core-utils": "7.8.0", + "@electron-forge/plugin-base": "7.8.0", + "@electron-forge/shared-types": "7.8.0", + "@electron-forge/web-multi-logger": "7.8.0", + "chalk": "^4.0.0", + "debug": "^4.3.1", + "fs-extra": "^10.0.0", + "listr2": "^7.0.2" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/publisher-base": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-7.8.0.tgz", + "integrity": "sha512-wrZyptJ0Uqvlh2wYzDZfIu2HgCQ+kdGiBlcucmLY4W+GUqf043O8cbYso3D9NXQxOow55QC/1saCQkgLphprPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.0" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/shared-types": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-7.8.0.tgz", + "integrity": "sha512-Ul+7HPvAZiAirqpZm0vc9YvlkAE+2bcrI10p3t50mEtuxn5VO/mB72NXiEKfWzHm8F31JySIe9bUV6s1MHQcCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/tracer": "7.8.0", + "@electron/packager": "^18.3.5", + "@electron/rebuild": "^3.7.0", + "listr2": "^7.0.2" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/template-base": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-7.8.0.tgz", + "integrity": "sha512-hc8NwoDqEEmZFH/p0p3MK/7xygMmI+cm8Gavoj2Mr2xS7VUUu4r3b5PwIGKvkLfPG34uwsiVwtid2t1rWGF4UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/core-utils": "7.8.0", + "@electron-forge/shared-types": "7.8.0", + "@malept/cross-spawn-promise": "^2.0.0", + "debug": "^4.3.1", + "fs-extra": "^10.0.0", + "username": "^5.1.0" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/template-vite": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-7.8.0.tgz", + "integrity": "sha512-bf/jd8WzD0gU7Jet+WSi0Lm0SQmseb08WY27ZfJYEs2EVNMiwDfPicgQnOaqP++2yTrXhj1OY/rolZCP9CUyVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.0", + "@electron-forge/template-base": "7.8.0", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/template-vite-typescript": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/template-vite-typescript/-/template-vite-typescript-7.8.0.tgz", + "integrity": "sha512-kW3CaVxKHUYuVfY+rT3iepeZ69frBRGh3YZOngLY2buCvGIqNEx+VCgrFBRDDbOKGmwQtwO1E9wp2rtC8q6Ztg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.0", + "@electron-forge/template-base": "7.8.0", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/template-webpack": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-7.8.0.tgz", + "integrity": "sha512-AdLGC6NVgrd7Q0SaaeiwJKmSBjN6C2EHxZgLMy1yxNSpazU9m3DtYQilDjXqmCWfxkeNzdke0NaeDvLgdJSw5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.0", + "@electron-forge/template-base": "7.8.0", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/template-webpack-typescript": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-7.8.0.tgz", + "integrity": "sha512-Pl8l+gv3HzqCfFIMLxlEsoAkNd0VEWeZZ675SYyqs0/kBQUifn0bKNhVE4gUZwKGgQCcG1Gvb23KdVGD3H3XmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.0", + "@electron-forge/template-base": "7.8.0", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/tracer": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/tracer/-/tracer-7.8.0.tgz", + "integrity": "sha512-t4fIATZEX6/7PJNfyh6tLzKEsNMpO01Nz/rgHWBxeRvjCw5UNul9OOxoM7b43vfFAO9Jv++34oI3VJ09LeVQ2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "chrome-trace-event": "^1.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron-forge/web-multi-logger": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@electron-forge/web-multi-logger/-/web-multi-logger-7.8.0.tgz", + "integrity": "sha512-2nUP7O9auXDsoa185AsZPlIbpargj1lNFweNH1Lch1MCwLlJOI9ZJHiCTAB4qviS4usRs00WeebWg/uN/zOWvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "express": "^4.17.1", + "express-ws": "^5.0.2", + "xterm": "^4.9.0", + "xterm-addon-fit": "^0.5.0", + "xterm-addon-search": "^0.8.0" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron/asar": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.4.1.tgz", + "integrity": "sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@electron/asar/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@electron/fuses": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@electron/fuses/-/fuses-1.8.0.tgz", + "integrity": "sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.1", + "fs-extra": "^9.0.1", + "minimist": "^1.2.5" + }, + "bin": { + "electron-fuses": "dist/bin.js" + } + }, + "node_modules/@electron/fuses/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/get": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-3.1.0.tgz", + "integrity": "sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/@electron/get/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@electron/get/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/get/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@electron/node-gyp": { + "version": "10.2.0-electron.1", + "resolved": "git+ssh://git@github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2", + "integrity": "sha512-CrYo6TntjpoMO1SHjl5Pa/JoUsECNqNdB7Kx49WLQpWzPw53eEITJ2Hs9fh/ryUYDn4pxZz11StaBYBrLFJdqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^8.1.0", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.2.1", + "nopt": "^6.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "tar": "^6.2.1", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/@electron/node-gyp/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@electron/node-gyp/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@electron/node-gyp/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/node-gyp/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/notarize": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.5.0.tgz", + "integrity": "sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/osx-sign": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.3.tgz", + "integrity": "sha512-KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "compare-version": "^0.1.2", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "isbinaryfile": "^4.0.8", + "minimist": "^1.2.6", + "plist": "^3.0.5" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@electron/packager": { + "version": "18.3.6", + "resolved": "https://registry.npmjs.org/@electron/packager/-/packager-18.3.6.tgz", + "integrity": "sha512-1eXHB5t+SQKvUiDpWGpvr90ZSSbXj+isrh3YbjCTjKT4bE4SQrKSBfukEAaBvp67+GXHFtCHjQgN9qSTFIge+Q==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@electron/asar": "^3.2.13", + "@electron/get": "^3.0.0", + "@electron/notarize": "^2.1.0", + "@electron/osx-sign": "^1.0.5", + "@electron/universal": "^2.0.1", + "@electron/windows-sign": "^1.0.0", + "debug": "^4.0.1", + "extract-zip": "^2.0.0", + "filenamify": "^4.1.0", + "fs-extra": "^11.1.0", + "galactus": "^1.0.0", + "get-package-info": "^1.0.0", + "junk": "^3.1.0", + "parse-author": "^2.0.0", + "plist": "^3.0.0", + "resedit": "^2.0.0", + "resolve": "^1.1.6", + "semver": "^7.1.3", + "yargs-parser": "^21.1.1" + }, + "bin": { + "electron-packager": "bin/electron-packager.js" + }, + "engines": { + "node": ">= 16.13.0" + }, + "funding": { + "url": "https://github.com/electron/packager?sponsor=1" + } + }, + "node_modules/@electron/packager/node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/packager/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/rebuild": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.7.2.tgz", + "integrity": "sha512-19/KbIR/DAxbsCkiaGMXIdPnMCJLkcf8AvGnduJtWBs/CBwiAjY1apCqOLVxrXg+rtXFCngbXhBanWjxLUt1Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron/node-gyp": "git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2", + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.1.1", + "detect-libc": "^2.0.1", + "fs-extra": "^10.0.0", + "got": "^11.7.0", + "node-abi": "^3.45.0", + "node-api-version": "^0.2.0", + "ora": "^5.1.0", + "read-binary-file-arch": "^1.0.6", + "semver": "^7.3.5", + "tar": "^6.0.5", + "yargs": "^17.0.1" + }, + "bin": { + "electron-rebuild": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/@electron/rebuild/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/universal": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.2.tgz", + "integrity": "sha512-mqY1szx5/d5YLvfCDWWoJdkSIjIz+NdWN4pN0r78lYiE7De+slLpuF3lVxIT+hlJnwk5sH2wFRMl6/oUgUVO3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron/asar": "^3.3.1", + "@malept/cross-spawn-promise": "^2.0.0", + "debug": "^4.3.1", + "dir-compare": "^4.2.0", + "fs-extra": "^11.1.1", + "minimatch": "^9.0.3", + "plist": "^3.1.0" + }, + "engines": { + "node": ">=16.4" + } + }, + "node_modules/@electron/universal/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@electron/universal/node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/universal/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@electron/windows-sign": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.1.tgz", + "integrity": "sha512-YfASnrhJ+ve6Q43ZiDwmpBgYgi2u0bYjeAVi2tDfN7YWAKO8X9EEOuPGtqbJpPLM6TfAHimghICjWe2eaJ8BAg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "cross-dirname": "^0.1.0", + "debug": "^4.3.4", + "fs-extra": "^11.1.1", + "minimist": "^1.2.8", + "postject": "^1.0.0-alpha.6" + }, + "bin": { + "electron-windows-sign": "bin/electron-windows-sign.js" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/windows-sign/node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", + "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", + "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", + "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz", + "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.2.tgz", + "integrity": "sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-brands-svg-icons": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.7.2.tgz", + "integrity": "sha512-zu0evbcRTgjKfrr77/2XX+bU+kuGfjm0LbajJHVIgBWNIDzrhpRxiCPNT8DW5AdmSsq7Mcf9D1bH0aSeSUSM+Q==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.2.tgz", + "integrity": "sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/react-fontawesome": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.2.tgz", + "integrity": "sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "react": ">=16.3" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@headlessui/react": { + "version": "1.7.19", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.19.tgz", + "integrity": "sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==", + "license": "MIT", + "dependencies": { + "@tanstack/react-virtual": "^3.0.0-beta.60", + "client-only": "^0.0.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18" + } + }, + "node_modules/@headlessui/tailwindcss": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@headlessui/tailwindcss/-/tailwindcss-0.2.2.tgz", + "integrity": "sha512-xNe42KjdyA4kfUKLLPGzME9zkH7Q3rOZ5huFihWNWOQFxnItxPB3/67yBI8/qBfY8nwBRx5GHn4VprsoluVMGw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "tailwindcss": "^3.0 || ^4.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true, + "license": "ISC" + }, + "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/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "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/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kittycad/codemirror-lang-kcl": { + "resolved": "packages/codemirror-lang-kcl", + "link": true + }, + "node_modules/@kittycad/codemirror-lsp-client": { + "resolved": "packages/codemirror-lsp-client", + "link": true + }, + "node_modules/@kittycad/lib": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/@kittycad/lib/-/lib-2.0.28.tgz", + "integrity": "sha512-DTxUJgrTWk/IB8xSAPsaT3U34PVlWR3Mh/HwVIGWWpd8v/TKebO2vMdfkfn5XcsW1GwMawH/xZo9Su6OCuLXHg==", + "license": "MIT", + "dependencies": { + "openapi-types": "^12.0.0", + "ts-node": "^10.9.1", + "tslib": "~2.8" + }, + "engines": { + "node": ">= 16.13" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" + }, + "node_modules/@lezer/common": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz", + "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==", + "license": "MIT" + }, + "node_modules/@lezer/generator": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@lezer/generator/-/generator-1.7.3.tgz", + "integrity": "sha512-vAI2O1tPF8QMMgp+bdUeeJCneJNkOZvqsrtyb4ohnFVFdboSqPwBEacnt0HH4E+5h+qsIwTHUSAhffU4hzKl1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.1.0", + "@lezer/lr": "^1.3.0" + }, + "bin": { + "lezer-generator": "src/lezer-generator.cjs" + } + }, + "node_modules/@lezer/highlight": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.1.tgz", + "integrity": "sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz", + "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@malept/cross-spawn-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@marijn/find-cluster-break": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", + "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", + "license": "MIT" + }, + "node_modules/@nabla/vite-plugin-eslint": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nabla/vite-plugin-eslint/-/vite-plugin-eslint-2.0.5.tgz", + "integrity": "sha512-m6Q8ZVM0ASZfYyfFbG661mDklhZQZEeBMQgtB26NhdadxPSctHzHsUbF87msdSb0V4Z8R1p/vRkB5SHNOpANAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "chalk": "^4", + "debug": "^4" + }, + "peerDependencies": { + "eslint": "^8.45 || ^9", + "vite": "^4 || ^5 || ^6" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.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/@playwright/test": { + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.51.1.tgz", + "integrity": "sha512-nM+kEaTSAoVlXmMPH10017vn3FSiFqr/bh4fKg9vmAdMfd9SDqRZNvPSiAHADc/itWak+qPvMPZQOPwCBW7k7Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.51.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-hook/latest": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@react-hook/latest/-/latest-1.0.3.tgz", + "integrity": "sha512-dy6duzl+JnAZcDbNTfmaP3xHiKtbXYOaz3G51MGVljh548Y8MWzTr+PHLOfvpypEVW9zwvl+VyKjbWKEVbV1Rg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@react-hook/passive-layout-effect": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz", + "integrity": "sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@react-hook/resize-observer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@react-hook/resize-observer/-/resize-observer-2.0.2.tgz", + "integrity": "sha512-tzKKzxNpfE5TWmxuv+5Ae3IF58n0FQgQaWJmcbYkjXTRZATXxClnTprQ2uuYygYTpu1pqbBskpwMpj6jpT1djA==", + "license": "MIT", + "dependencies": { + "@react-hook/latest": "^1.0.2", + "@react-hook/passive-layout-effect": "^1.2.0" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@redocly/ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js-replace": "^1.0.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@redocly/ajv/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@redocly/config": { + "version": "0.22.2", + "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.22.2.tgz", + "integrity": "sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@redocly/openapi-core": { + "version": "1.34.2", + "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.34.2.tgz", + "integrity": "sha512-glfkQFJizLdq2fBkNvc2FJW0sxDb5exd0wIXhFk+WHaFLMREBC3CxRo2Zq7uJIdfV9U3YTceMbXJklpDfmmwFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@redocly/ajv": "^8.11.2", + "@redocly/config": "^0.22.0", + "colorette": "^1.2.0", + "https-proxy-agent": "^7.0.5", + "js-levenshtein": "^1.1.6", + "js-yaml": "^4.1.0", + "minimatch": "^5.0.1", + "pluralize": "^8.0.0", + "yaml-ast-parser": "0.0.43" + }, + "engines": { + "node": ">=18.17.0", + "npm": ">=9.5.0" + } + }, + "node_modules/@redocly/openapi-core/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@redocly/openapi-core/node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@redocly/openapi-core/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@remix-run/router": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz", + "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@replit/codemirror-interact": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@replit/codemirror-interact/-/codemirror-interact-6.3.1.tgz", + "integrity": "sha512-3kGCrOSo7tRGrmvThRdMRCjrUo0BqFilC+MiucSznFD6W4snyxaqElZTNWMEfFsj/rWHykcUHlyfLOoxNWjvAw==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.2.1" + }, + "peerDependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "node_modules/@rollup/plugin-typescript": { + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.1.2.tgz", + "integrity": "sha512-cdtSp154H5sv637uMr1a8OTWB0L1SWDSm1rDGiyfcGcvQ6cuTs4MDk2BVEBGysUWago4OJN4EQZqOTl/QY3Jgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.1.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.14.0||^3.0.0||^4.0.0", + "tslib": "*", + "typescript": ">=3.7.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + }, + "tslib": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-virtual": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz", + "integrity": "sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz", + "integrity": "sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.39.0.tgz", + "integrity": "sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.39.0.tgz", + "integrity": "sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.39.0.tgz", + "integrity": "sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.39.0.tgz", + "integrity": "sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.39.0.tgz", + "integrity": "sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.39.0.tgz", + "integrity": "sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.39.0.tgz", + "integrity": "sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.39.0.tgz", + "integrity": "sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.39.0.tgz", + "integrity": "sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.39.0.tgz", + "integrity": "sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.39.0.tgz", + "integrity": "sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.39.0.tgz", + "integrity": "sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.39.0.tgz", + "integrity": "sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.39.0.tgz", + "integrity": "sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.39.0.tgz", + "integrity": "sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.39.0.tgz", + "integrity": "sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.39.0.tgz", + "integrity": "sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.39.0.tgz", + "integrity": "sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.39.0.tgz", + "integrity": "sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@swc/core": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.20.tgz", + "integrity": "sha512-2F0+bQs7+pwbudsxRffLdfpGCQX4Ih5k88f7LqTfj2oC7aTrv7FssduOvcAvfVY/InZmyYEblKl1rqg8bvzrZQ==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.21" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.11.20", + "@swc/core-darwin-x64": "1.11.20", + "@swc/core-linux-arm-gnueabihf": "1.11.20", + "@swc/core-linux-arm64-gnu": "1.11.20", + "@swc/core-linux-arm64-musl": "1.11.20", + "@swc/core-linux-x64-gnu": "1.11.20", + "@swc/core-linux-x64-musl": "1.11.20", + "@swc/core-win32-arm64-msvc": "1.11.20", + "@swc/core-win32-ia32-msvc": "1.11.20", + "@swc/core-win32-x64-msvc": "1.11.20" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.20.tgz", + "integrity": "sha512-Sc06h6pwMhQagU7vz92b7wwQTIibTiqRE4y/XjkvurSbjSarrtSZR4OKkrdNwUkSy1HlQE4NhKQf7tmLeQ7PhQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.20.tgz", + "integrity": "sha512-kHANJrgbqaGzUyTectNfLyhnHAeDGGVSRXYyPVAx6x0nuLOnRhKbuSyZY42UEN1IgHauaADCzcd+HiiMv/rgRw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.20.tgz", + "integrity": "sha512-FXllEBeAwU6FNIZzo+u1LmHGaHzwAKzz7tWRkUOqBKjKr20Ot4KGS3xlz2qgV2NESFHAisdHja2P2rcQWqtZRg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.20.tgz", + "integrity": "sha512-OsYMFyJzUM0K8a97tu6KxZaCob3vr+UknVqHO09QwechX+rdX4euWm7Lte4d1B+7SBfokhw7ghLZsNTQfRw9pA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.20.tgz", + "integrity": "sha512-fbSWOQ5ZZ7sWodoC6GnzV9RhbImdxoH8b14K1tnHCWJXolzTH40/4JKf/koJ3r24nm1PtsqX9OUxRsOXYAy5dg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.20.tgz", + "integrity": "sha512-OFU53idbY8KA1RkNzZBi0FpoRPSn/anv4N7ZzGZGk664UoFwMbSL+XHGocJzhV9G/VNGH7bMBmgoVWk72nn5hw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.20.tgz", + "integrity": "sha512-GZbqXEc09nIarkGMXc2P4Hf2ONb1vre22X7Se9CCeU/QtWYRU/H1a2TFnYgBKzNVOH65Dd/XYXcuy+tM1aw1iw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.20.tgz", + "integrity": "sha512-i0H2MeK8krEd/YeiGz0GHtNL9wSGfAPXiouh8aRNV/u+w4vPaaRqnXwv/yzAW+D2vPpKJBhOwmNFFzdgTJ5mWw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.20.tgz", + "integrity": "sha512-/7e3X7EGO8uOvAUP+YKJTdoR2JR5vdiewDOnDS9FFXj8yr9x6/oDFLd92Sp9NglF+aXuqAo33IfH2OTz1MR+Ww==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.20.tgz", + "integrity": "sha512-rcZpt5uiVNTs/Se+CYBoaDphafFJcsqXo3DNmfkJZoDZUb4PZqxu61p4Qa+lvFDQlRragrlLRpGQM9qnLNd4iQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/types": { + "version": "0.1.21", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.21.tgz", + "integrity": "sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tanstack/react-virtual": { + "version": "3.13.6", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.6.tgz", + "integrity": "sha512-WT7nWs8ximoQ0CDx/ngoFP7HbQF9Q2wQe4nh2NB+u2486eX3nZRE40P9g6ccCVq7ZfTSH5gFOuCoVH5DLNS/aA==", + "license": "MIT", + "dependencies": { + "@tanstack/virtual-core": "3.13.6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@tanstack/virtual-core": { + "version": "3.13.6", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.6.tgz", + "integrity": "sha512-cnQUeWnhNP8tJ4WsGcYiX24Gjkc9ALstLbHcBj1t3E7EimN6n6kHH+DPV4PpDnuw00NApQp+ViojMj1GRdwYQg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@testing-library/dom": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", + "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=8", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/react": { + "version": "15.0.7", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-15.0.7.tgz", + "integrity": "sha512-cg0RvEdD1TIhhkm1IeYMQxrzy0MtUNfa3minv4MjbgcYzJAZ7yD0i0lwoPOTPr+INtiXFezt2o8xMSnyHhEn2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^10.0.0", + "@types/react-dom": "^18.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^18.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-5.2.2.tgz", + "integrity": "sha512-fYDQA9e6yTNmA13TLVSA+WMQRc5Bn/c0EUBditUHNfMMxN7M82c38b1kEggVE3pLpZ0FwkwJkUEKMiOi52JXFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/generator": "^7.26.5", + "@babel/parser": "^7.26.7", + "@babel/traverse": "^7.26.7", + "@babel/types": "^7.26.7", + "javascript-natural-sort": "^0.7.1", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">18.12" + }, + "peerDependencies": { + "@vue/compiler-sfc": "3.x", + "prettier": "2.x - 3.x", + "prettier-plugin-svelte": "3.x", + "svelte": "4.x || 5.x" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + }, + "svelte": { + "optional": true + } + } + }, + "node_modules/@ts-stack/markdown": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@ts-stack/markdown/-/markdown-1.5.0.tgz", + "integrity": "sha512-ntVX2Kmb2jyTdH94plJohokvDVPvp6CwXHqsa9NVZTK8cOmHDCYNW0j6thIadUVRTStJhxhfdeovLd0owqDxLw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "license": "MIT" + }, + "node_modules/@tsconfig/strictest": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@tsconfig/strictest/-/strictest-2.0.5.tgz", + "integrity": "sha512-ec4tjL2Rr0pkZ5hww65c+EEPYwxOi4Ryv+0MtjeaSQRJyq322Q27eOQiFbuNgw2hpL4hB1/W/HBGk3VKS43osg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tweenjs/tween.js": { + "version": "23.1.3", + "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.3.tgz", + "integrity": "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==", + "license": "MIT" + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT" + }, + "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.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/diff": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/diff/-/diff-7.0.2.tgz", + "integrity": "sha512-JSWRMozjFKsGlEjiiKajUjIJVKuKdE3oVy2DNtK+fUo8q82nhFZ2CPQwicAIkXrofahDXrWJ7mjelvZphMS98Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/electron": { + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/@types/electron/-/electron-1.6.12.tgz", + "integrity": "sha512-NIJokDkGv9h+MStCL1IuiL1FOHYVkszoWeNxJtSI5dcEKRGbX83JcVYNAgk019qOQgJkHtz9WdP0CDXvrArrGg==", + "deprecated": "This is a stub types definition. electron provides its own type definitions, so you do not need this installed.", + "dev": true, + "license": "MIT", + "dependencies": { + "electron": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimatch": "^5.1.2", + "@types/node": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/isomorphic-fetch": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/isomorphic-fetch/-/isomorphic-fetch-0.0.39.tgz", + "integrity": "sha512-I0gou/ZdA1vMG7t7gMzL7VYu2xAKU78rW9U1l10MI0nn77pEHq3tQqHQ8hMmXdMpBlkxZOorjI4sO594Z3kKJw==", + "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": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/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/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/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/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mocha": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", + "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/pixelmatch": { + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@types/pixelmatch/-/pixelmatch-5.2.6.tgz", + "integrity": "sha512-wC83uexE5KGuUODn6zkm9gMzTwdY5L0chiK+VrKcDfEjzxh1uadlWTvOmAbCpnM9zx/Ww3f8uKlYQVnO/TrqVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/plist": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*", + "xmlbuilder": ">=11.0.1" + } + }, + "node_modules/@types/pngjs": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@types/pngjs/-/pngjs-6.0.5.tgz", + "integrity": "sha512-0k5eKfrA83JOZPppLtS2C7OUtyNAl2wKNxfyYl9Q5g9lPkgBl/9hNyAu6HuEH2J4XmIv2znEpkDd0SaZVxW6iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.20", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.20.tgz", + "integrity": "sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.6.tgz", + "integrity": "sha512-nf22//wEbKXusP6E9pfOCDwFdHAX4u172eaJI4YkDRQEZiorm6KfYnSC2SWLDMVWUOWPERmJnN0ujeAfTBLvrw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@types/react-modal": { + "version": "3.16.3", + "resolved": "https://registry.npmjs.org/@types/react-modal/-/react-modal-3.16.3.tgz", + "integrity": "sha512-xXuGavyEGaFQDgBv4UVm8/ZsG+qxeQ7f77yNrW3n+1J6XAstUy5rYHeIHPh1KzsGc6IkCIdu6lQ2xWzu1jBTLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "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/stats.js": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz", + "integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/testing-library__jest-dom": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", + "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/jest": "*" + } + }, + "node_modules/@types/three": { + "version": "0.175.0", + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.175.0.tgz", + "integrity": "sha512-ldMSBgtZOZ3g9kJ3kOZSEtZIEITmJOzu8eKVpkhf036GuNkM4mt0NXecrjCn5tMm1OblOF7dZehlaDypBfNokw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tweenjs/tween.js": "~23.1.3", + "@types/stats.js": "*", + "@types/webxr": "*", + "@webgpu/types": "*", + "fflate": "~0.8.2", + "meshoptimizer": "~0.18.1" + } + }, + "node_modules/@types/ua-parser-js": { + "version": "0.7.39", + "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.39.tgz", + "integrity": "sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/verror": { + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.11.tgz", + "integrity": "sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/@types/vscode": { + "version": "1.99.1", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.99.1.tgz", + "integrity": "sha512-cQlqxHZ040ta6ovZXnXRxs3fJiTmlurkIWOfZVcLSZPcm9J4ikFpXuB7gihofGn5ng+kDVma5EmJIclfk0trPQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/webxr": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.21.tgz", + "integrity": "sha512-geZIAtLzjGmgY2JUi6VxXdCrTb99A7yP49lxLr2Nm/uIK0PkkxcEi4OGhoGDO4pxCf3JwGz2GiJL2Ej4K2bKaA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/wicg-file-system-access": { + "version": "2023.10.6", + "resolved": "https://registry.npmjs.org/@types/wicg-file-system-access/-/wicg-file-system-access-2023.10.6.tgz", + "integrity": "sha512-YO/183gNRzZFSdKu+ikkD7ambAj4PhgjFAF2A/Mw/7wroSF6ne8r804RkpZzqrJ/F6DO2/IYlQF/ULOZ/bhKyA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "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/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.1.tgz", + "integrity": "sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.29.1", + "@typescript-eslint/type-utils": "8.29.1", + "@typescript-eslint/utils": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.1.tgz", + "integrity": "sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.29.1", + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/typescript-estree": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.1.tgz", + "integrity": "sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.1.tgz", + "integrity": "sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.29.1", + "@typescript-eslint/utils": "8.29.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.1.tgz", + "integrity": "sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.1.tgz", + "integrity": "sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.1.tgz", + "integrity": "sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.29.1", + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/typescript-estree": "8.29.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.1.tgz", + "integrity": "sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.29.1", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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/@vitejs/plugin-react": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", + "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.26.0", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, + "node_modules/@vitest/expect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz", + "integrity": "sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "1.6.1", + "@vitest/utils": "1.6.1", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.1.tgz", + "integrity": "sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.1.1", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/mocker/node_modules/@vitest/spy": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.1.tgz", + "integrity": "sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker/node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.1.tgz", + "integrity": "sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.1.tgz", + "integrity": "sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "1.6.1", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/snapshot": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz", + "integrity": "sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot/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/@vitest/snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@vitest/snapshot/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/@vitest/spy": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.1.tgz", + "integrity": "sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.1.tgz", + "integrity": "sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils/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/@vitest/utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@vitest/utils/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/@vitest/web-worker": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/web-worker/-/web-worker-1.6.1.tgz", + "integrity": "sha512-T3zLS/sga4z8ZqgA+iDKyiKOcL7OGG3EJ8xqXEEDuvtQELxCITehwPbDe7cGKQ+YspFsLqdNC9td30uQ1uStFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": "^1.0.0" + } + }, + "node_modules/@vscode/test-electron": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.5.2.tgz", + "integrity": "sha512-8ukpxv4wYe0iWMRQU18jhzJOHkeGKbnw7xWRX3Zw1WJA4cEKbHcmmLPdPrPtL6rhDcrlCZN+xKRpv09n4gRHYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "jszip": "^3.10.1", + "ora": "^8.1.0", + "semver": "^7.6.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@vscode/test-electron/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@vscode/test-electron/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@vscode/test-electron/node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vscode/test-electron/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vscode/test-electron/node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vscode/test-electron/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vscode/test-electron/node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vscode/test-electron/node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vscode/test-electron/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vscode/test-electron/node_modules/ora": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vscode/test-electron/node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vscode/test-electron/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vscode/test-electron/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/@vscode/test-electron/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vscode/test-electron/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@vscode/vsce": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.3.2.tgz", + "integrity": "sha512-XQ4IhctYalSTMwLnMS8+nUaGbU7v99Qm2sOoGfIEf2QC7jpiLXZZMh7NwArEFsKX4gHTJLx0/GqAUlCdC3gKCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/identity": "^4.1.0", + "@vscode/vsce-sign": "^2.0.0", + "azure-devops-node-api": "^12.5.0", + "chalk": "^2.4.2", + "cheerio": "^1.0.0-rc.9", + "cockatiel": "^3.1.2", + "commander": "^12.1.0", + "form-data": "^4.0.0", + "glob": "^11.0.0", + "hosted-git-info": "^4.0.2", + "jsonc-parser": "^3.2.0", + "leven": "^3.1.0", + "markdown-it": "^14.1.0", + "mime": "^1.3.4", + "minimatch": "^3.0.3", + "parse-semver": "^1.1.1", + "read": "^1.0.7", + "semver": "^7.5.2", + "tmp": "^0.2.3", + "typed-rest-client": "^1.8.4", + "url-join": "^4.0.1", + "xml2js": "^0.5.0", + "yauzl": "^2.3.1", + "yazl": "^2.2.2" + }, + "bin": { + "vsce": "vsce" + }, + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "keytar": "^7.7.0" + } + }, + "node_modules/@vscode/vsce-sign": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.5.tgz", + "integrity": "sha512-GfYWrsT/vypTMDMgWDm75iDmAOMe7F71sZECJ+Ws6/xyIfmB3ELVnVN+LwMFAvmXY+e6eWhR2EzNGF/zAhWY3Q==", + "dev": true, + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optionalDependencies": { + "@vscode/vsce-sign-alpine-arm64": "2.0.2", + "@vscode/vsce-sign-alpine-x64": "2.0.2", + "@vscode/vsce-sign-darwin-arm64": "2.0.2", + "@vscode/vsce-sign-darwin-x64": "2.0.2", + "@vscode/vsce-sign-linux-arm": "2.0.2", + "@vscode/vsce-sign-linux-arm64": "2.0.2", + "@vscode/vsce-sign-linux-x64": "2.0.2", + "@vscode/vsce-sign-win32-arm64": "2.0.2", + "@vscode/vsce-sign-win32-x64": "2.0.2" + } + }, + "node_modules/@vscode/vsce-sign-alpine-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.2.tgz", + "integrity": "sha512-E80YvqhtZCLUv3YAf9+tIbbqoinWLCO/B3j03yQPbjT3ZIHCliKZlsy1peNc4XNZ5uIb87Jn0HWx/ZbPXviuAQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] + }, + "node_modules/@vscode/vsce-sign-alpine-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.2.tgz", + "integrity": "sha512-n1WC15MSMvTaeJ5KjWCzo0nzjydwxLyoHiMJHu1Ov0VWTZiddasmOQHekA47tFRycnt4FsQrlkSCTdgHppn6bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz", + "integrity": "sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz", + "integrity": "sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.2.tgz", + "integrity": "sha512-Fkb5jpbfhZKVw3xwR6t7WYfwKZktVGNXdg1m08uEx1anO0oUPUkoQRsNm4QniL3hmfw0ijg00YA6TrxCRkPVOQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.2.tgz", + "integrity": "sha512-Ybeu7cA6+/koxszsORXX0OJk9N0GgfHq70Wqi4vv2iJCZvBrOWwcIrxKjvFtwyDgdeQzgPheH5nhLVl5eQy7WA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.2.tgz", + "integrity": "sha512-NsPPFVtLaTlVJKOiTnO8Cl78LZNWy0Q8iAg+LlBiCDEgC12Gt4WXOSs2pmcIjDYzj2kY4NwdeN1mBTaujYZaPg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-win32-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.2.tgz", + "integrity": "sha512-wPs848ymZ3Ny+Y1Qlyi7mcT6VSigG89FWQnp2qRYCyMhdJxOpA4lDwxzlpL8fG6xC8GjQjGDkwbkWUcCobvksQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce-sign-win32-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.2.tgz", + "integrity": "sha512-pAiRN6qSAhDM5SVOIxgx+2xnoVUePHbRNC7OD2aOR3WltTKxxF25OfpK8h8UQ7A0BuRkSgREbB59DBlFk4iAeg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vscode/vsce/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@vscode/vsce/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vscode/vsce/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@vscode/vsce/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vscode/vsce/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@vscode/vsce/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@vscode/vsce/node_modules/glob": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/vsce/node_modules/glob/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/vsce/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@vscode/vsce/node_modules/jackspeak": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz", + "integrity": "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/vsce/node_modules/lru-cache": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@vscode/vsce/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vscode/vsce/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@vscode/vsce/node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/vsce/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vscode/vsce/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@webgpu/types": { + "version": "0.1.60", + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.60.tgz", + "integrity": "sha512-8B/tdfRFKdrnejqmvq95ogp8tf52oZ51p3f4QD5m5Paey/qlX4Rhhy5Y8tgFMi7Ms70HzcMMw3EQjH/jdhTwlA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@xstate/cli": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@xstate/cli/-/cli-0.5.17.tgz", + "integrity": "sha512-t/R0PeKamiyshT4SYlo4RwBRpuwzYlUuVesMeIxLZ01C2wfbB1mtFb5kMMN35opkDpyYh72fxi8Pt8HxpLZm+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.21.4", + "@xstate/machine-extractor": "^0.16.0", + "@xstate/tools-shared": "^4.1.0", + "chokidar": "^3.5.3", + "commander": "^8.0.0", + "dotenv": "^16.0.3", + "isomorphic-fetch": "^3.0.0", + "prettier": "^2.8.8", + "xstate": "^4.33.4", + "xstate-beta": "npm:xstate@beta" + }, + "bin": { + "xstate": "bin/bin.js" + } + }, + "node_modules/@xstate/cli/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/@xstate/cli/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/@xstate/cli/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@xstate/cli/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/@xstate/cli/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/@xstate/cli/node_modules/xstate": { + "version": "4.38.3", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.38.3.tgz", + "integrity": "sha512-SH7nAaaPQx57dx6qvfcIgqKRXIh4L0A1iYEqim4s1u7c9VoCgzZc+63FY90AKU4ZzOC2cfJzTnpO4zK7fCUzzw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/xstate" + } + }, + "node_modules/@xstate/inspect": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@xstate/inspect/-/inspect-0.8.0.tgz", + "integrity": "sha512-wSkFeOnp+7dhn+zTThO0M4D2FEqZN9lGIWowJu5JLa2ojjtlzRwK8SkjcHZ4rLX8VnMev7kGjgQLrGs8kxy+hw==", + "license": "MIT", + "dependencies": { + "fast-safe-stringify": "^2.1.1" + }, + "peerDependencies": { + "@types/ws": "^8.0.0", + "ws": "^8.0.0", + "xstate": "^4.37.0" + }, + "peerDependenciesMeta": { + "@types/ws": { + "optional": true + } + } + }, + "node_modules/@xstate/machine-extractor": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@xstate/machine-extractor/-/machine-extractor-0.16.0.tgz", + "integrity": "sha512-oYtHWSH/4jSZ46o2qBy2EJqZE6uaP+VYx9mdYYdzw6JT0uMY1PLePWaWAuh3jhi1qupXatNpbfbGeJtetZJCFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.21.4", + "@babel/traverse": "^7.21.4", + "@babel/types": "^7.21.4", + "recast": "^0.23.1" + }, + "peerDependencies": { + "xstate": "^4" + } + }, + "node_modules/@xstate/react": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@xstate/react/-/react-4.1.3.tgz", + "integrity": "sha512-zhE+ZfrcCR87bu71Rkh5Z5ruZBivR/7uD/dkelzJqjQdI45IZc9DqTI8lL4Cg5+VN2p5k86KxDsusqW1kW11Tg==", + "license": "MIT", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.2", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "xstate": "^5.18.2" + }, + "peerDependenciesMeta": { + "xstate": { + "optional": true + } + } + }, + "node_modules/@xstate/tools-shared": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@xstate/tools-shared/-/tools-shared-4.1.0.tgz", + "integrity": "sha512-AVqlHFlGjoceexIK33D8CDm8zev17gdRFqGRPiDLE9yvjCSzlzPcc65/VlWCV2EvQt99gUHR1bLMw6ONafkF6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xstate/machine-extractor": "^0.16.0" + }, + "peerDependencies": { + "prettier": "^2", + "xstate": "^4" + } + }, + "node_modules/7zip-bin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", + "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/agentkeepalive": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^1.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "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/app-builder-bin": { + "version": "5.0.0-alpha.12", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-5.0.0-alpha.12.tgz", + "integrity": "sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/app-builder-lib": { + "version": "26.0.12", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-26.0.12.tgz", + "integrity": "sha512-+/CEPH1fVKf6HowBUs6LcAIoRcjeqgvAeoSE+cl7Y7LndyQ9ViGPYibNk7wmhMHzNgHIuIbw4nWADPO+4mjgWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@develar/schema-utils": "~2.6.5", + "@electron/asar": "3.2.18", + "@electron/fuses": "^1.8.0", + "@electron/notarize": "2.5.0", + "@electron/osx-sign": "1.3.1", + "@electron/rebuild": "3.7.0", + "@electron/universal": "2.0.1", + "@malept/flatpak-bundler": "^0.4.0", + "@types/fs-extra": "9.0.13", + "async-exit-hook": "^2.0.1", + "builder-util": "26.0.11", + "builder-util-runtime": "9.3.1", + "chromium-pickle-js": "^0.2.0", + "config-file-ts": "0.2.8-rc1", + "debug": "^4.3.4", + "dotenv": "^16.4.5", + "dotenv-expand": "^11.0.6", + "ejs": "^3.1.8", + "electron-publish": "26.0.11", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^5.0.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.3", + "lazy-val": "^1.0.5", + "minimatch": "^10.0.0", + "plist": "3.1.0", + "resedit": "^1.7.0", + "semver": "^7.3.8", + "tar": "^6.1.12", + "temp-file": "^3.4.0", + "tiny-async-pool": "1.3.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "dmg-builder": "26.0.12", + "electron-builder-squirrel-windows": "26.0.12" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/asar": { + "version": "3.2.18", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.18.tgz", + "integrity": "sha512-2XyvMe3N3Nrs8cV39IKELRHTYUWFKrmqqSY1U+GMlc0jvqjIVnoxhNd2H4JolWQncbJi1DCvb5TNxZuI2fEjWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/asar/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/osx-sign": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.1.tgz", + "integrity": "sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "compare-version": "^0.1.2", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "isbinaryfile": "^4.0.8", + "minimist": "^1.2.6", + "plist": "^3.0.5" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/osx-sign/node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/rebuild": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.7.0.tgz", + "integrity": "sha512-VW++CNSlZwMYP7MyXEbrKjpzEwhB5kDNbzGtiPEjwYysqyTCF+YbNJ210Dj3AjWsGSV4iEEwNkmJN9yGZmVvmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron/node-gyp": "git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2", + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.1.1", + "detect-libc": "^2.0.1", + "fs-extra": "^10.0.0", + "got": "^11.7.0", + "node-abi": "^3.45.0", + "node-api-version": "^0.2.0", + "ora": "^5.1.0", + "read-binary-file-arch": "^1.0.6", + "semver": "^7.3.5", + "tar": "^6.0.5", + "yargs": "^17.0.1" + }, + "bin": { + "electron-rebuild": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/universal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.1.tgz", + "integrity": "sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron/asar": "^3.2.7", + "@malept/cross-spawn-promise": "^2.0.0", + "debug": "^4.3.1", + "dir-compare": "^4.2.0", + "fs-extra": "^11.1.1", + "minimatch": "^9.0.3", + "plist": "^3.1.0" + }, + "engines": { + "node": ">=16.4" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/universal/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/universal/node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/universal/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/app-builder-lib/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/app-builder-lib/node_modules/isbinaryfile": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.4.tgz", + "integrity": "sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/app-builder-lib/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/app-builder-lib/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/app-builder-lib/node_modules/pe-library": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pe-library/-/pe-library-0.4.1.tgz", + "integrity": "sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jet2jet" + } + }, + "node_modules/app-builder-lib/node_modules/resedit": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/resedit/-/resedit-1.7.2.tgz", + "integrity": "sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pe-library": "^0.4.1" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jet2jet" + } + }, + "node_modules/app-builder-lib/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/author-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz", + "integrity": "sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/azure-devops-node-api": { + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz", + "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==", + "dev": true, + "license": "MIT", + "dependencies": { + "tunnel": "0.0.6", + "typed-rest-client": "^1.8.4" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", + "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.4", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", + "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.4" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base16": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==", + "license": "MIT" + }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, + "license": "ISC" + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bson": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.3.tgz", + "integrity": "sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.20.1" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/builder-util": { + "version": "26.0.11", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-26.0.11.tgz", + "integrity": "sha512-xNjXfsldUEe153h1DraD0XvDOpqGR0L5eKFkdReB7eFW5HqysDZFfly4rckda6y9dF39N3pkPlOblcfHKGw+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/debug": "^4.1.6", + "7zip-bin": "~5.2.0", + "app-builder-bin": "5.0.0-alpha.12", + "builder-util-runtime": "9.3.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.6", + "debug": "^4.3.4", + "fs-extra": "^10.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "sanitize-filename": "^1.6.3", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0", + "tiny-async-pool": "1.3.0" + } + }, + "node_modules/builder-util-runtime": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.3.1.tgz", + "integrity": "sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001713", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001713.tgz", + "integrity": "sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/cheerio": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", + "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^9.1.0", + "parse5": "^7.1.2", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^6.19.5", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=18.17" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cheerio/node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "license": "ISC", + "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", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "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==", + "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/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==", + "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": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cockatiel": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz", + "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/codemirror": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", + "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/config-file-ts": { + "version": "0.2.8-rc1", + "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.8-rc1.tgz", + "integrity": "sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^10.3.12", + "typescript": "^5.4.3" + } + }, + "node_modules/config-file-ts/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/config-file-ts/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "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/config-file-ts/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/config-file-ts/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", + "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "license": "MIT" + }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "license": "MIT" + }, + "node_modules/cross-dirname": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz", + "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "license": "MIT", + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssfontparser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cssfontparser/-/cssfontparser-1.2.1.tgz", + "integrity": "sha512-6tun4LoZnj7VN6YeegOVb67KBX/7JJsqvj+pv3ZA7F878/eN33AbGa5b/S/wXxS/tcp8nc40xRUrsPlxIyNUPg==", + "dev": true, + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-compare": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz", + "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.5", + "p-limit": "^3.1.0 " + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/dmg-builder": { + "version": "26.0.12", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-26.0.12.tgz", + "integrity": "sha512-59CAAjAhTaIMCN8y9kD573vDkxbs1uhDcrFLHSgutYdPcGOU35Rf95725snvzEOy4BFB7+eLJ8djCNPmGwG67w==", + "dev": true, + "license": "MIT", + "dependencies": { + "app-builder-lib": "26.0.12", + "builder-util": "26.0.11", + "builder-util-runtime": "9.3.1", + "fs-extra": "^10.1.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "optionalDependencies": { + "dmg-license": "^1.0.11" + } + }, + "node_modules/dmg-license": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.7", + "plist": "^3.0.4", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" + }, + "bin": { + "dmg-license": "bin/dmg-license.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dotenv": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dotenv": "^16.4.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dpdm": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/dpdm/-/dpdm-3.14.0.tgz", + "integrity": "sha512-YJzsFSyEtj88q5eTELg3UWU7TVZkG1dpbF4JDQ3t1b07xuzXmdoGeSz9TKOke1mUuOpWlk4q+pBh+aHzD6GBTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "fs-extra": "^11.1.1", + "glob": "^10.3.4", + "ora": "^5.4.1", + "tslib": "^2.6.2", + "typescript": "^5.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "dpdm": "lib/bin/dpdm.js" + } + }, + "node_modules/dpdm/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/dpdm/node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/dpdm/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "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/dpdm/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/dpdm/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron": { + "version": "34.5.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-34.5.1.tgz", + "integrity": "sha512-z2Wm7QjhnJ5592fLITynj8UwIk1mBiT402mOakxSYiADrERIci3IOPk7xWHAFOMvt/eoG5RW16PPhgJiedZcGA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@electron/get": "^2.0.0", + "@types/node": "^20.9.0", + "extract-zip": "^2.0.1" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 12.20.55" + } + }, + "node_modules/electron-builder": { + "version": "26.0.12", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-26.0.12.tgz", + "integrity": "sha512-cD1kz5g2sgPTMFHjLxfMjUK5JABq3//J4jPswi93tOPFz6btzXYtK5NrDt717NRbukCUDOrrvmYVOWERlqoiXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "app-builder-lib": "26.0.12", + "builder-util": "26.0.11", + "builder-util-runtime": "9.3.1", + "chalk": "^4.1.2", + "dmg-builder": "26.0.12", + "fs-extra": "^10.1.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "simple-update-notifier": "2.0.0", + "yargs": "^17.6.2" + }, + "bin": { + "electron-builder": "cli.js", + "install-app-deps": "install-app-deps.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/electron-publish": { + "version": "26.0.11", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-26.0.11.tgz", + "integrity": "sha512-a8QRH0rAPIWH9WyyS5LbNvW9Ark6qe63/LqDB7vu2JXYpi0Gma5Q60Dh4tmTqhOBQt0xsrzD8qE7C+D7j+B24A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/fs-extra": "^9.0.11", + "builder-util": "26.0.11", + "builder-util-runtime": "9.3.1", + "chalk": "^4.1.2", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.136", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.136.tgz", + "integrity": "sha512-kL4+wUTD7RSA5FHx5YwWtjDnEEkIIikFgWHR4P6fqjw1PPLlqYkxeOb++wAauAssat0YClCy8Y3C5SxgSkjibQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/electron-updater": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.6.2.tgz", + "integrity": "sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==", + "license": "MIT", + "dependencies": { + "builder-util-runtime": "9.3.1", + "fs-extra": "^10.1.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "lodash.escaperegexp": "^4.1.2", + "lodash.isequal": "^4.5.0", + "semver": "^7.6.3", + "tiny-typed-emitter": "^2.1.0" + } + }, + "node_modules/electron-updater/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron/node_modules/@electron/get": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", + "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/electron/node_modules/@types/node": { + "version": "20.17.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.30.tgz", + "integrity": "sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/electron/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/electron/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron/node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "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/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding-sniffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", + "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/encoding-sniffer/node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-css-modules": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-css-modules/-/eslint-plugin-css-modules-2.12.0.tgz", + "integrity": "sha512-ruFBdad69ABrbCDCh5mXj7UzNmrvytfzPACjyvZWIAjFZAG8BXpYSbqmE8gU5wF+pIzV3jU2CWhLvfekXT/IgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "gonzales-pe": "^4.3.0", + "lodash": "^4.17.2" + }, + "engines": { + "node": ">=4.0.0" + }, + "peerDependencies": { + "eslint": ">=2.0.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "28.11.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.11.0.tgz", + "integrity": "sha512-QAfipLcNCWLVocVbZW8GimKn5p5iiMcgGbRzz8z/P5q7xw+cNEpYqyzFMtIF/ZgF2HLOyy+dYBut+DoYolvqig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "engines": { + "node": "^16.10.0 || ^18.12.0 || >=20.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0 || ^8.0.0", + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-perf": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-perf/-/eslint-plugin-react-perf-3.3.3.tgz", + "integrity": "sha512-EzPdxsRJg5IllCAH9ny/3nK7sv9251tvKmi/d3Ouv5KzI8TB3zNhzScxL9wnh9Hvv8GYC5LEtzTauynfOEYiAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.1" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-suggest-no-throw": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-suggest-no-throw/-/eslint-plugin-suggest-no-throw-1.0.0.tgz", + "integrity": "sha512-IoSDNVeH9WRC9T4Nm3HResFthgiPEW8e6YkKzichJ4fZwac0T8qBQ/8qjmv9NeRSEw8q2EbN/THLE/UU38J46g==", + "dev": true, + "license": "ISC" + }, + "node_modules/eslint-plugin-testing-library": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-7.1.1.tgz", + "integrity": "sha512-nszC833aZPwB6tik1nMkbFqmtgIXTT0sfJEYs0zMBKMlkQ4to2079yUV96SvmLh00ovSBJI4pgcBC1TiIP8mXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "^8.15.0", + "@typescript-eslint/utils": "^8.15.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0", + "pnpm": "^9.14.0" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==", + "license": "BSD-3-Clause" + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "license": "(MIT OR WTFPL)", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expect-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", + "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", + "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-ws": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/express-ws/-/express-ws-5.0.2.tgz", + "integrity": "sha512-0uvmuk61O9HXgLhGl3QhNSEtRsQevtmbL94/eILaliEADZBHZOQUAiHFrGPrgsjikohyrmSG5g+sCfASTt0lkQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "ws": "^7.4.6" + }, + "engines": { + "node": ">=4.5.0" + }, + "peerDependencies": { + "express": "^4.0.0 || ^5.0.0-alpha.1" + } + }, + "node_modules/express-ws/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "optional": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "license": "BSD-3-Clause", + "dependencies": { + "fbjs": "^3.0.0" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "license": "MIT", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "license": "MIT" + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "dev": true, + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/flora-colossus": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-2.0.0.tgz", + "integrity": "sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "fs-extra": "^10.1.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/flux": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz", + "integrity": "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==", + "license": "BSD-3-Clause", + "dependencies": { + "fbemitter": "^3.0.0", + "fbjs": "^3.0.1" + }, + "peerDependencies": { + "react": "^15.0.2 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/foreground-child/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/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "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", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fuse.js": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz", + "integrity": "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/galactus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/galactus/-/galactus-1.0.0.tgz", + "integrity": "sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "flora-colossus": "^2.0.0", + "fs-extra": "^10.1.0" + }, + "engines": { + "node": ">= 12" + } + }, + "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==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-info": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz", + "integrity": "sha512-SCbprXGAPdIhKAXiG+Mk6yeoFH61JlYunqdFQFHDtLjJlDjFf6x07dsS8acO+xWt52jpdVo49AlVDnUVK1sDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "^3.1.1", + "debug": "^2.2.0", + "lodash.get": "^4.0.0", + "read-pkg-up": "^2.0.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/get-package-info/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/get-package-info/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-them-args": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/get-them-args/-/get-them-args-1.3.2.tgz", + "integrity": "sha512-LRn8Jlk+DwZE4GTlDbT3Hikd1wSHgLMme/+7ddlqKd7ldwR6LjJgTVWzBnR01wnYGe4KgrXjg287RaI22UHmAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/global-agent/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "gonzales": "bin/gonzales.js" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/goober": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.16.tgz", + "integrity": "sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g==", + "license": "MIT", + "peerDependencies": { + "csstype": "^3.0.10" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/happy-dom": { + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-16.8.1.tgz", + "integrity": "sha512-n0QrmT9lD81rbpKsyhnlz3DgnMZlaOkJPpgi746doA+HvaMC79bdWkwjrNnGJRvDrWTI8iOcJiVTJ5CdT/AZRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "webidl-conversions": "^7.0.0", + "whatwg-mimetype": "^3.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html2canvas-pro": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/html2canvas-pro/-/html2canvas-pro-1.5.8.tgz", + "integrity": "sha512-bVGAU7IvhBwBlRAmX6QhekX8lsaxmYoF6zIwf/HNlHscjx+KN8jw/U4PQRYqeEVm9+m13hcS1l5ChJB9/e29Lw==", + "license": "MIT", + "dependencies": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, + "bin": { + "http-server": "bin/http-server" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-server/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-corefoundation": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "cli-truncate": "^2.1.0", + "node-addon-api": "^1.6.3" + }, + "engines": { + "node": "^8.11.2 || >=10" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "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/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/index-to-position": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.1.0.tgz", + "integrity": "sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true, + "license": "ISC" + }, + "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==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-electron": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz", + "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==", + "license": "MIT" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, + "node_modules/isomorphic-fetch/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/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/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/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/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/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/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/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/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/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/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/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/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/jose": { + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true, + "license": "MIT" + }, + "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-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-rpc-2.0": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/json-rpc-2.0/-/json-rpc-2.0-1.7.0.tgz", + "integrity": "sha512-asnLgC1qD5ytP+fvBP8uL0rvj+l8P6iYICbzZ8dVxCpESffVjzA7KkYkbKCIbavs7cllwH1ZUaNtJwphdeRqpg==", + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsonwebtoken/node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/kcl-language-server": { + "resolved": "rust/kcl-language-server", + "link": true + }, + "node_modules/keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" + } + }, + "node_modules/keytar/node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kill-port": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kill-port/-/kill-port-2.0.1.tgz", + "integrity": "sha512-e0SVOV5jFo0mx8r7bS29maVWp17qGqLBZ5ricNSajON6//kmb7qqqNnml4twNE8Dtj97UQD+gNFOaipS/q1zzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-them-args": "1.3.2", + "shell-exec": "1.0.2" + }, + "bin": { + "kill-port": "cli.js" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", + "license": "MIT" + }, + "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/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "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/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/listr2": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-7.0.2.tgz", + "integrity": "sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^5.0.1", + "rfdc": "^1.3.0", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/listr2/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/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/local-pkg": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", + "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.7.3", + "pkg-types": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "license": "MIT" + }, + "node_modules/lodash.flow": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", + "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==", + "license": "MIT" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", + "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^5.0.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^5.0.0", + "strip-ansi": "^7.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/make-dir/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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==", + "license": "ISC" + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/meshoptimizer": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz", + "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/mlly": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", + "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "pathe": "^2.0.1", + "pkg-types": "^1.3.0", + "ufo": "^1.5.4" + } + }, + "node_modules/mlly/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mocha": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", + "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/mocha/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "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/mocha/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mocha/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/mocha/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/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "license": "ISC" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-abi": { + "version": "3.74.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz", + "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-abi/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/node-api-version": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.1.tgz", + "integrity": "sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + } + }, + "node_modules/node-api-version/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "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/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/oidc-token-hash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.1.0.tgz", + "integrity": "sha512-y0W+X7Ppo7oZX6eovsRkuzcSM40Bicg2JEJkDJ4irIt1wsYAP5MLSNv+QAogO8xivMffw/9OvV3um1pxXgt1uA==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || >=12.0.0" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.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/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openapi-types": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", + "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", + "license": "MIT" + }, + "node_modules/openapi-typescript": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-7.6.1.tgz", + "integrity": "sha512-F7RXEeo/heF3O9lOXo2bNjCOtfp7u+D6W3a3VNEH2xE6v+fxLtn5nq0uvUcA1F5aT+CMhNeC5Uqtg5tlXFX/ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@redocly/openapi-core": "^1.28.0", + "ansi-colors": "^4.1.3", + "change-case": "^5.4.4", + "parse-json": "^8.1.0", + "supports-color": "^9.4.0", + "yargs-parser": "^21.1.1" + }, + "bin": { + "openapi-typescript": "bin/cli.js" + }, + "peerDependencies": { + "typescript": "^5.x" + } + }, + "node_modules/openapi-typescript/node_modules/parse-json": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", + "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "index-to-position": "^1.1.0", + "type-fest": "^4.39.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openapi-typescript/node_modules/supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/openapi-typescript/node_modules/type-fest": { + "version": "4.39.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.39.1.tgz", + "integrity": "sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/openid-client": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.7.1.tgz", + "integrity": "sha512-jDBPgSVfTnkIh71Hg9pRvtJc6wTwqjRkN88+gCFtYWrlP4Yx2Dsrow8uPi3qLr/aeymPF3o2+dS+wOpglK04ew==", + "license": "MIT", + "dependencies": { + "jose": "^4.15.9", + "lru-cache": "^6.0.0", + "object-hash": "^2.2.0", + "oidc-token-hash": "^5.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/openid-client/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/openid-client/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-author": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz", + "integrity": "sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "author-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-color": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz", + "integrity": "sha512-fuDHYgFHJGbpGMgw9skY/bj3HL/Jrn4l/5rSspy00DoT4RyLnDcRvPxdZ+r6OFwIsgAuhDh4I09tAId4mI12bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "~0.5.0" + } + }, + "node_modules/parse-color/node_modules/color-convert": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", + "integrity": "sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling==", + "dev": true + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-semver": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", + "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^5.1.0" + } + }, + "node_modules/parse-semver/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/parse5": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^4.5.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "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", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "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/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/pe-library": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pe-library/-/pe-library-1.0.1.tgz", + "integrity": "sha512-nh39Mo1eGWmZS7y+mK/dQIqg7S1lp38DpRxkyoHf0ZcUs/HDc+yyTjuOtTvSMZHmfSLuSQaX945u05Y2Q6UWZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14", + "npm": ">=7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jet2jet" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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/pixelmatch": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", + "integrity": "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "pngjs": "^6.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pixelmatch/node_modules/pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/pkg-types/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/playwright": { + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.51.1.tgz", + "integrity": "sha512-kkx+MB2KQRkyxjYPc3a0wLZZoDczmppyGJIvQ43l+aZihkaVvmu/21kiyaHeHjiFxjxNNFnUncKmcGIyOojsaw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.51.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.51.1.tgz", + "integrity": "sha512-/crRMj8+j/Nq5s8QcvegseuyeZPxpQCZb6HNk3Sos3BlZyAknRjoyJPFWkpNn8v0+P3WiwqFF8P+zQo4eqiNuw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pngjs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", + "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.19.0" + } + }, + "node_modules/portfinder": { + "version": "1.0.35", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.35.tgz", + "integrity": "sha512-73JaFg4NwYNAufDtS5FsFu/PdM49ahJrO1i44aCRsDWju1z5wuGDaqyFUQWR6aJoK2JPDWlaYYAGFNIGTSUHSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.6", + "debug": "^4.3.6" + }, + "engines": { + "node": ">= 10.12" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/postinstall-postinstall": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz", + "integrity": "sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/postject": { + "version": "1.0.0-alpha.6", + "resolved": "https://registry.npmjs.org/postject/-/postject-1.0.0-alpha.6.tgz", + "integrity": "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^9.4.0" + }, + "bin": { + "postject": "dist/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/postject/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-organize-imports": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.1.0.tgz", + "integrity": "sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "prettier": ">=2.0", + "typescript": ">=2.9", + "vue-tsc": "^2.1.0" + }, + "peerDependenciesMeta": { + "vue-tsc": { + "optional": true + } + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.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/proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "license": "MIT", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-color": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", + "integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==", + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/re-resizable": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.11.2.tgz", + "integrity": "sha512-2xI2P3OHs5qw7K0Ud1aLILK6MQxW50TcO+DetD9eIV58j84TqYeHoZcL9H4GXFXXIh7afhH8mv5iUCXII7OW7A==", + "license": "MIT", + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-base16-styling": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", + "integrity": "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==", + "license": "MIT", + "dependencies": { + "base16": "^1.0.0", + "lodash.curry": "^4.0.1", + "lodash.flow": "^3.3.0", + "pure-color": "^1.2.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-hot-toast": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.5.2.tgz", + "integrity": "sha512-Tun3BbCxzmXXM7C+NI4qiv6lT0uwGh4oAfeJyNOjYUejTsm35mK9iCaYLGv8cBz9L5YxZLx/2ii7zsIwPtPUdw==", + "license": "MIT", + "dependencies": { + "csstype": "^3.1.3", + "goober": "^2.1.16" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, + "node_modules/react-hotkeys-hook": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-4.6.2.tgz", + "integrity": "sha512-FmP+ZriY3EG59Ug/lxNfrObCnW9xQShgk7Nb83+CkpfkcCpfS95ydv+E9JuXA5cp8KtskU7LGlIARpkc92X22Q==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.1", + "react-dom": ">=16.8.1" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-json-view": { + "version": "1.21.3", + "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", + "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", + "license": "MIT", + "dependencies": { + "flux": "^4.0.1", + "react-base16-styling": "^0.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-textarea-autosize": "^8.3.2" + }, + "peerDependencies": { + "react": "^17.0.0 || ^16.3.0 || ^15.5.4", + "react-dom": "^17.0.0 || ^16.3.0 || ^15.5.4" + } + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "license": "MIT" + }, + "node_modules/react-modal": { + "version": "3.16.3", + "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.3.tgz", + "integrity": "sha512-yCYRJB5YkeQDQlTt17WGAgFJ7jr2QYcWa1SHqZ3PluDmnKJ/7+tVU+E6uKyZ0nODaeEj+xCpK4LcSnKXLMC0Nw==", + "license": "MIT", + "dependencies": { + "exenv": "^1.2.0", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.0", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19", + "react-dom": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19" + } + }, + "node_modules/react-modal-promise": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/react-modal-promise/-/react-modal-promise-1.0.2.tgz", + "integrity": "sha512-dqT618ROhG8qh1+O6EZkia5ELw3zaZWGpMX2YfEH4bgwYENPuFonqKw1W70LFx3K/SCZvVBcD6UYEI12yzYXzg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.30.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.0.tgz", + "integrity": "sha512-D3X8FyH9nBcTSHGdEKurK7r8OYE1kKFn3d/CF+CoxbSHkxU7o37+Uh7eAHRXr6k2tSExXYO++07PeXJtA/dEhQ==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.30.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.0.tgz", + "integrity": "sha512-x30B78HV5tFk8ex0ITwzC9TTZMua4jGyA9IUlH1JLQYQTFyxr/ZxwOJq7evg1JX1qGVUcvhsmQSKdPncQrjTgA==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.23.0", + "react-router": "6.30.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.9.tgz", + "integrity": "sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/read-binary-file-arch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", + "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "bin": { + "read-binary-file-arch": "cli.js" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/recast": { + "version": "0.23.11", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", + "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "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==", + "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", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/resedit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resedit/-/resedit-2.0.3.tgz", + "integrity": "sha512-oTeemxwoMuxxTYxXUwjkrOPfngTQehlv0/HoYFNkB4uzsP1Un1A9nI8JQKGOFkxpqkC7qkMs0lUsGrvUlbLNUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pe-library": "^1.0.1" + }, + "engines": { + "node": ">=14", + "npm": ">=7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jet2jet" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/rollup": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.39.0.tgz", + "integrity": "sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.39.0", + "@rollup/rollup-android-arm64": "4.39.0", + "@rollup/rollup-darwin-arm64": "4.39.0", + "@rollup/rollup-darwin-x64": "4.39.0", + "@rollup/rollup-freebsd-arm64": "4.39.0", + "@rollup/rollup-freebsd-x64": "4.39.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.39.0", + "@rollup/rollup-linux-arm-musleabihf": "4.39.0", + "@rollup/rollup-linux-arm64-gnu": "4.39.0", + "@rollup/rollup-linux-arm64-musl": "4.39.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.39.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.39.0", + "@rollup/rollup-linux-riscv64-gnu": "4.39.0", + "@rollup/rollup-linux-riscv64-musl": "4.39.0", + "@rollup/rollup-linux-s390x-gnu": "4.39.0", + "@rollup/rollup-linux-x64-gnu": "4.39.0", + "@rollup/rollup-linux-x64-musl": "4.39.0", + "@rollup/rollup-win32-arm64-msvc": "4.39.0", + "@rollup/rollup-win32-ia32-msvc": "4.39.0", + "@rollup/rollup-win32-x64-msvc": "4.39.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-dts": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-6.2.1.tgz", + "integrity": "sha512-sR3CxYUl7i2CHa0O7bA45mCrgADyAQ0tVtGSqi3yvH28M+eg1+g5d7kQ9hLvEz5dorK3XVsH5L2jwHLQf72DzA==", + "dev": true, + "license": "LGPL-3.0-only", + "dependencies": { + "magic-string": "^0.30.17" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/Swatinem" + }, + "optionalDependencies": { + "@babel/code-frame": "^7.26.2" + }, + "peerDependencies": { + "rollup": "^3.29.4 || ^4", + "typescript": "^4.5 || ^5.0" + } + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "license": "WTFPL OR ISC", + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "dev": true, + "license": "MIT" + }, + "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/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-exec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shell-exec/-/shell-exec-1.0.2.tgz", + "integrity": "sha512-jyVd+kU2X+mWKMmGhx4fpWbPsjvD53k9ivqetutVW/BQ+WIZoDoP4d8vUMGezV6saZsiNoW2f9GIhg9Dondohg==", + "dev": true, + "license": "MIT" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "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/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sketch-helpers": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/sketch-helpers/-/sketch-helpers-0.0.4.tgz", + "integrity": "sha512-xSt+Ku4VFDk4fBW3kRj+raZ49fFSJ32q1ph05GKQvZ9mIUI+W2/3iJJSBfBWwIdxlNiMx6RoUe2O+5vwtkPT3A==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "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/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", + "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "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/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "license": "MIT", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "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/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", + "dev": true, + "license": "MIT" + }, + "node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "npm": ">=6" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "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==", + "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": { + "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/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/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==", + "license": "MIT" + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/strip-literal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz", + "integrity": "sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-outer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/style-mod": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", + "license": "MIT" + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "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/sucrase/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MIT" + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/tailwindcss/node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tailwindcss/node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/tailwindcss/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", + "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/temp-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^10.0.0" + } + }, + "node_modules/text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "license": "MIT", + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/three": { + "version": "0.175.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.175.0.tgz", + "integrity": "sha512-nNE3pnTHxXN/Phw768u0Grr7W4+rumGg/H6PgeseNJojkJtmeHJfZWi41Gp2mpXl1pg1pf1zjwR4McM1jTqkpg==", + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "license": "MIT" + }, + "node_modules/tiny-async-pool": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tiny-async-pool/-/tiny-async-pool-1.3.0.tgz", + "integrity": "sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^5.5.0" + } + }, + "node_modules/tiny-async-pool/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tiny-typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", + "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==", + "license": "MIT" + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinypool": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dev": true, + "license": "WTFPL", + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "license": "MIT" + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tsconfck": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.5.tgz", + "integrity": "sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==", + "dev": true, + "license": "MIT", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "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==", + "license": "0BSD" + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-rest-client": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.29.1.tgz", + "integrity": "sha512-f8cDkvndhbQMPcysk6CUSGBWV+g1utqdn71P5YKwMumVMOG/5k7cHq0KyG4O52nB0oKS4aN2Tp5+wB4APJGC+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.29.1", + "@typescript-eslint/parser": "8.29.1", + "@typescript-eslint/utils": "8.29.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.40", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.40.tgz", + "integrity": "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/ufo": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici": { + "version": "6.21.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.2.tgz", + "integrity": "sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dev": true, + "dependencies": { + "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js-replace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uri-js-replace/-/uri-js-replace-1.0.1.tgz", + "integrity": "sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/use-composed-ref": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.4.0.tgz", + "integrity": "sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.0.tgz", + "integrity": "sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.3.0.tgz", + "integrity": "sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==", + "license": "MIT", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/username": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/username/-/username-5.1.0.tgz", + "integrity": "sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^1.0.0", + "mem": "^4.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", + "dev": true, + "license": "(WTFPL OR MIT)" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "license": "MIT", + "dependencies": { + "base64-arraybuffer": "^1.0.2" + } + }, + "node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "license": "MIT" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/vite": { + "version": "5.4.18", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.18.tgz", + "integrity": "sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.1.tgz", + "integrity": "sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-plugin-package-version": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vite-plugin-package-version/-/vite-plugin-package-version-1.1.0.tgz", + "integrity": "sha512-TPoFZXNanzcaKCIrC3e2L/TVRkkRLB6l4RPN/S7KbG7rWfyLcCEGsnXvxn6qR7fyZwXalnnSN/I9d6pSFjHpEA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "vite": ">=2.0.0-beta.69" + } + }, + "node_modules/vite-plugin-top-level-await": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.5.0.tgz", + "integrity": "sha512-r/DtuvHrSqUVk23XpG2cl8gjt1aATMG5cjExXL1BUTcSNab6CzkcPua9BPEc9fuTP5UpwClCxUe3+dNGL0yrgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/plugin-virtual": "^3.0.2", + "@swc/core": "^1.10.16", + "uuid": "^10.0.0" + }, + "peerDependencies": { + "vite": ">=2.8" + } + }, + "node_modules/vite-plugin-top-level-await/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vite-tsconfig-paths": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz", + "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "globrex": "^0.1.2", + "tsconfck": "^3.0.3" + }, + "peerDependencies": { + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vite/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/vitest": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.1.tgz", + "integrity": "sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "1.6.1", + "@vitest/runner": "1.6.1", + "@vitest/snapshot": "1.6.1", + "@vitest/spy": "1.6.1", + "@vitest/utils": "1.6.1", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.3", + "vite": "^5.0.0", + "vite-node": "1.6.1", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.6.1", + "@vitest/ui": "1.6.1", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest-webgl-canvas-mock": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vitest-webgl-canvas-mock/-/vitest-webgl-canvas-mock-1.1.0.tgz", + "integrity": "sha512-F/5+XvBs7cSZPe41IGQTbSjNimB4NntPnRqv4eWb42voFKQINH8y2xZkibNUxYJCGIuDFsYp1lDQgTvWLahSzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssfontparser": "^1.2.1", + "parse-color": "^1.0.0" + } + }, + "node_modules/vitest/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/vitest/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/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/vscode-jsonrpc": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.1.tgz", + "integrity": "sha512-kdjOSJ2lLIn7r1rtrMbbNCHjyMPfRnowdKjBQ+mGq6NAW5QY2bEZC/khaC5OR8svbbjvLEaIXkOq45e2X9BIbQ==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageclient": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz", + "integrity": "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==", + "license": "MIT", + "dependencies": { + "minimatch": "^5.1.0", + "semver": "^7.3.7", + "vscode-languageserver-protocol": "3.17.5" + }, + "engines": { + "vscode": "^1.82.0" + } + }, + "node_modules/vscode-languageclient/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/vscode-languageclient/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vscode-languageclient/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "license": "MIT" + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/web-vitals": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.5.2.tgz", + "integrity": "sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==", + "license": "Apache-2.0" + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "license": "MIT" + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/whatwg-url/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/win-ca": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/win-ca/-/win-ca-3.5.1.tgz", + "integrity": "sha512-RNy9gpBS6cxWHjfbqwBA7odaHyT+YQNhtdpJZwYCFoxB/Dq22oeOZ9YCXMwjhLytKpo7JJMnKdJ/ve7N12zzfQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "is-electron": "^2.2.0", + "make-dir": "^1.3.0", + "node-forge": "^1.2.1", + "split": "^1.0.1" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true, + "license": "Apache-2.0" + }, + "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/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/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/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?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/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xstate": { + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-5.19.2.tgz", + "integrity": "sha512-B8fL2aP0ogn5aviAXFzI5oZseAMqN00fg/TeDa3ZtatyDcViYLIfuQl4y8qmHCiKZgGEzmnTyNtNQL9oeJE2gw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/xstate" + } + }, + "node_modules/xstate-beta": { + "name": "xstate", + "version": "5.0.0-beta.54", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-5.0.0-beta.54.tgz", + "integrity": "sha512-BTnCPBQ2iTKe4uCnHEe1hNx6VTbXU+5mQGybSQHOjTLiBi4Ryi+tL9T6N1tmqagvM8rfl4XRfvndogfWCWcdpw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/xstate" + } + }, + "node_modules/xterm": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/xterm/-/xterm-4.19.0.tgz", + "integrity": "sha512-c3Cp4eOVsYY5Q839dR5IejghRPpxciGmLWWaP9g+ppfMeBChMeLa1DCA+pmX/jyDZ+zxFOmlJL/82qVdayVoGQ==", + "deprecated": "This package is now deprecated. Move to @xterm/xterm instead.", + "dev": true, + "license": "MIT" + }, + "node_modules/xterm-addon-fit": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xterm-addon-fit/-/xterm-addon-fit-0.5.0.tgz", + "integrity": "sha512-DsS9fqhXHacEmsPxBJZvfj2la30Iz9xk+UKjhQgnYNkrUIN5CYLbw7WEfz117c7+S86S/tpHPfvNxJsF5/G8wQ==", + "deprecated": "This package is now deprecated. Move to @xterm/addon-fit instead.", + "dev": true, + "license": "MIT", + "peerDependencies": { + "xterm": "^4.0.0" + } + }, + "node_modules/xterm-addon-search": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/xterm-addon-search/-/xterm-addon-search-0.8.2.tgz", + "integrity": "sha512-I1863mjn8P6uVrqm/X+btalVsqjAKLhnhpbP7SavAOpEkI1jJhbHU2UTp7NjeRtcKTks6UWk/ycgds5snDSejg==", + "deprecated": "This package is now deprecated. Move to @xterm/addon-search instead.", + "dev": true, + "license": "MIT", + "peerDependencies": { + "xterm": "^4.0.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==", + "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/yaml": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", + "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yaml-ast-parser": { + "version": "0.0.43", + "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", + "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "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==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/codemirror-lang-kcl": { + "name": "@kittycad/codemirror-lang-kcl", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.10.3", + "@codemirror/state": "^6.5.2", + "@lezer/highlight": "^1.2.1", + "typescript": "^5.7.2" + }, + "devDependencies": { + "@lezer/generator": "^1.7.3", + "@rollup/plugin-typescript": "^12.1.2", + "rollup": "^4.29.1", + "rollup-plugin-dts": "^6.1.1", + "vite-tsconfig-paths": "^5.1.4", + "vitest": "^3.1.1" + } + }, + "packages/codemirror-lang-kcl/node_modules/@vitest/expect": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.1.tgz", + "integrity": "sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/codemirror-lang-kcl/node_modules/@vitest/runner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.1.tgz", + "integrity": "sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.1.1", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/codemirror-lang-kcl/node_modules/@vitest/snapshot": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.1.tgz", + "integrity": "sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.1.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/codemirror-lang-kcl/node_modules/@vitest/spy": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.1.tgz", + "integrity": "sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/codemirror-lang-kcl/node_modules/@vitest/utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.1.tgz", + "integrity": "sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.1.1", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/codemirror-lang-kcl/node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "packages/codemirror-lang-kcl/node_modules/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "packages/codemirror-lang-kcl/node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "packages/codemirror-lang-kcl/node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "packages/codemirror-lang-kcl/node_modules/loupe": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", + "dev": true, + "license": "MIT" + }, + "packages/codemirror-lang-kcl/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "packages/codemirror-lang-kcl/node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "packages/codemirror-lang-kcl/node_modules/tinypool": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", + "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "packages/codemirror-lang-kcl/node_modules/tinyspy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "packages/codemirror-lang-kcl/node_modules/vite-node": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.1.tgz", + "integrity": "sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.0", + "es-module-lexer": "^1.6.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "packages/codemirror-lang-kcl/node_modules/vite-tsconfig-paths": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-5.1.4.tgz", + "integrity": "sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "globrex": "^0.1.2", + "tsconfck": "^3.0.3" + }, + "peerDependencies": { + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "packages/codemirror-lang-kcl/node_modules/vitest": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.1.tgz", + "integrity": "sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "3.1.1", + "@vitest/mocker": "3.1.1", + "@vitest/pretty-format": "^3.1.1", + "@vitest/runner": "3.1.1", + "@vitest/snapshot": "3.1.1", + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", + "chai": "^5.2.0", + "debug": "^4.4.0", + "expect-type": "^1.2.0", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "std-env": "^3.8.1", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinypool": "^1.0.2", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0", + "vite-node": "3.1.1", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.1.1", + "@vitest/ui": "3.1.1", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "packages/codemirror-lsp-client": { + "name": "@kittycad/codemirror-lsp-client", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "6.18.6", + "@codemirror/language": "^6.11.0", + "@codemirror/state": "^6.5.2", + "@lezer/highlight": "^1.2.1", + "@ts-stack/markdown": "^1.5.0", + "json-rpc-2.0": "^1.7.0", + "typescript": "^5.8.3", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-uri": "^3.1.0" + }, + "devDependencies": { + "@types/node": "^22.14.0", + "ts-node": "^10.9.2" + } + }, + "rust/kcl-language-server": { + "version": "0.0.0", + "license": "MIT", + "dependencies": { + "vscode-languageclient": "^9.0.1" + }, + "devDependencies": { + "@tsconfig/strictest": "^2.0.5", + "@types/glob": "^8.1.0", + "@types/mocha": "^10.0.10", + "@types/node": "^22.13.10", + "@types/vscode": "^1.97.0", + "@typescript-eslint/eslint-plugin": "^8.27.0", + "@typescript-eslint/parser": "^8.27.0", + "@vscode/test-electron": "^2.4.1", + "@vscode/vsce": "^3.3.2", + "cross-env": "^7.0.3", + "esbuild": "^0.25.2", + "glob": "^11.0.1", + "mocha": "^11.1.0", + "typescript": "^5.8.3" + }, + "engines": { + "vscode": "^1.97.0" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/android-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/android-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/android-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", + "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/darwin-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/linux-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/linux-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/linux-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/linux-loong64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/linux-s390x": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/linux-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/sunos-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/win32-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/win32-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/@esbuild/win32-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "rust/kcl-language-server/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "rust/kcl-language-server/node_modules/esbuild": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" + } + }, + "rust/kcl-language-server/node_modules/glob": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "rust/kcl-language-server/node_modules/jackspeak": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz", + "integrity": "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "rust/kcl-language-server/node_modules/lru-cache": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "rust/kcl-language-server/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "rust/kcl-language-server/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "rust/kcl-language-server/node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + } + } +} diff --git a/package.json b/package.json index 0be805807..d36ca9651 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,11 @@ "description": "Zoo Design Studio", "main": ".vite/build/main.js", "license": "MIT", + "workspaces": [ + "packages/codemirror-lang-kcl", + "packages/codemirror-lsp-client", + "rust/kcl-language-server" + ], "dependencies": { "@codemirror/autocomplete": "^6.18.6", "@codemirror/commands": "^6.8.1", @@ -26,7 +31,7 @@ "@fortawesome/react-fontawesome": "^0.2.0", "@headlessui/react": "^1.7.19", "@headlessui/tailwindcss": "^0.2.2", - "@kittycad/lib": "2.0.26", + "@kittycad/lib": "2.0.28", "@lezer/highlight": "^1.2.1", "@lezer/lr": "^1.4.1", "@react-hook/resize-observer": "^2.0.1", @@ -59,7 +64,7 @@ "react-modal-promise": "^1.0.2", "react-router-dom": "^6.28.0", "sketch-helpers": "^0.0.4", - "three": "^0.174.0", + "three": "^0.175.0", "ua-parser-js": "^1.0.37", "uuid": "^11.1.0", "vscode-jsonrpc": "^8.2.1", @@ -79,16 +84,18 @@ "start": "vite --port=3000 --host=0.0.0.0", "start:prod": "vite preview --port=3000", "serve": "vite serve --port=3000", - "build": "yarn install:rust && . $HOME/.cargo/env && yarn install:wasm-pack:sh && yarn build:wasm && vite build", + "build": "npm run install:rust && . $HOME/.cargo/env && npm run install:wasm-pack:sh && npm run build:wasm && vite build", "build:local": "vite build", "build:both": "vite build", - "build:both:local": "yarn build:wasm && vite build", - "pretest": "yarn remove-importmeta", + "build:both:local": "npm run build:wasm && vite build", + "pretest": "npm run remove-importmeta", "test:rust": "(cd rust && just test && just lint)", - "simpleserver": "yarn pretest && http-server ./public --cors -p 3000", - "simpleserver:ci": "yarn pretest && http-server ./public --cors -p 3000 &", - "simpleserver:bg": "yarn pretest && http-server ./public --cors -p 3000 &", + "simpleserver": "npm run pretest && http-server ./public --cors -p 3000", + "simpleserver:ci": "npm run pretest && http-server ./public --cors -p 3000 &", + "simpleserver:bg": "npm run pretest && http-server ./public --cors -p 3000 &", "simpleserver:stop": "kill-port 3000", + "tsc": "tsc", + "playwright": "playwright", "fmt": "prettier --write .eslintrc.json ./src *.ts *.json *.js ./e2e ./packages ./rust/kcl-language-server ./rust/kcl-lib/bindings ./rust/kcl-wasm-lib/pkg", "fmt:generated": "prettier --write .eslintrc.json *.ts *.json *.js ./rust/kcl-lib/bindings ./rust/kcl-wasm-lib/pkg", "fmt-check": "prettier --check .eslintrc.json ./src *.ts *.json *.js ./e2e ./packages ./rust/kcl-language-server", @@ -97,14 +104,14 @@ "fetch:samples": "rm -rf public/kcl-samples* && curl -L -o public/kcl-samples.zip https://github.com/KittyCAD/kcl-samples/archive/refs/heads/achalmers/kw-args-xylineto.zip && unzip -o public/kcl-samples.zip -d public && mv public/kcl-samples-* public/kcl-samples", "build:wasm": "./scripts/build-wasm.sh", "build:wasm:windows": "powershell -ExecutionPolicy Bypass -File ./scripts/build-wasm.ps1", - "build:wasm-dev": "yarn build:wasm:dev", + "build:wasm-dev": "npm run build:wasm:dev", "build:wasm:dev": "./scripts/build-wasm-dev.sh", "build:wasm:dev:windows": "powershell -ExecutionPolicy Bypass -File ./scripts/build-wasm-dev.ps1", "remove-importmeta": "sed -i 's/import.meta.url/window.location.origin/g' \"./rust/kcl-wasm-lib/pkg/kcl_wasm_lib.js\"; sed -i '' 's/import.meta.url/window.location.origin/g' \"./rust/kcl-wasm-lib/pkg/kcl_wasm_lib.js\" || echo \"sed for both mac and linux\"", "lint-fix": "eslint --fix --ext .ts --ext .tsx src e2e packages/codemirror-lsp-client/src rust/kcl-language-server/client/src", "lint": "eslint --max-warnings 0 --ext .ts --ext .tsx src e2e packages/codemirror-lsp-client/src rust/kcl-language-server/client/src", "circular-deps": "dpdm --no-warning --no-tree -T --skip-dynamic-imports=circular src/index.tsx", - "circular-deps:overwrite": "yarn circular-deps | sed '$d' | grep -v '^yarn run' > known-circular.txt", + "circular-deps:overwrite": "npm run circular-deps | sed '$d' | grep -v '^npm run' > known-circular.txt", "circular-deps:diff": "./scripts/diff-circular-deps.sh", "files:set-version": "echo \"$(jq --arg v \"$VERSION\" '.version=$v' package.json --indent 2)\" > package.json", "files:set-notes": "./scripts/set-files-notes.sh", @@ -112,32 +119,32 @@ "files:flip-to-nightly:windows": "powershell -ExecutionPolicy Bypass -File ./scripts/flip-files-to-nightly.ps1", "files:invalidate-bucket": "./scripts/invalidate-files-bucket.sh", "files:invalidate-bucket:nightly": "./scripts/invalidate-files-bucket.sh --nightly", - "postinstall": "yarn --cwd ./rust/kcl-language-server --modules-folder node_modules install && ./node_modules/.bin/electron-rebuild", + "postinstall": "electron-rebuild", "make:dev": "make dev", "generate:machine-api": "npx openapi-typescript ./openapi/machine-api.json -o src/lib/machine-api.d.ts", "generate:samples-manifest": "cd public/kcl-samples && node generate-manifest.js", "tron:start": "electron-forge start", - "chrome:test": "PLATFORM=web NODE_ENV=development yarn playwright test --config=playwright.config.ts --project='Google Chrome' --grep-invert='@snapshot'", + "chrome:test": "PLATFORM=web NODE_ENV=development playwright test --config=playwright.config.ts --project='Google Chrome' --grep-invert='@snapshot'", "tronb:vite:dev": "vite build -c vite.main.config.ts -m development && vite build -c vite.preload.config.ts -m development && vite build -c vite.renderer.config.ts -m development", "tronb:vite:prod": "vite build -c vite.main.config.ts && vite build -c vite.preload.config.ts && vite build -c vite.renderer.config.ts", - "tronb:package:dev": "yarn tronb:vite:dev && electron-builder --config electron-builder.yml", - "tronb:package:prod": "yarn tronb:vite:prod && electron-builder --config electron-builder.yml --publish always", - "test-setup": "yarn install && yarn build:wasm", + "tronb:package:dev": "npm run tronb:vite:dev && electron-builder --config electron-builder.yml", + "tronb:package:prod": "npm run tronb:vite:prod && electron-builder --config electron-builder.yml --publish always", + "test-setup": "npm install && npm run build:wasm", "test": "vitest --mode development", - "test:snapshots": "PLATFORM=web NODE_ENV=development yarn playwright test --config=playwright.config.ts --update-snapshots --grep=@snapshot --trace=on --shard=1/1", + "test:snapshots": "PLATFORM=web NODE_ENV=development playwright test --config=playwright.config.ts --update-snapshots --grep=@snapshot --trace=on --shard=1/1", "test:unit": "vitest run --mode development --exclude **/kclSamples.test.ts", "test:unit:kcl-samples": "vitest run --mode development ./src/lang/kclSamples.test.ts", "test:playwright:electron": "playwright test --config=playwright.electron.config.ts --grep-invert='@snapshot'", "test:playwright:electron:windows": "playwright test --config=playwright.electron.config.ts --grep-invert=\"@skipWin|@snapshot\" --quiet", "test:playwright:electron:macos": "playwright test --config=playwright.electron.config.ts --grep-invert='@skipMacos|@snapshot' --quiet", "test:playwright:electron:ubuntu": "playwright test --config=playwright.electron.config.ts --grep-invert='@skipLinux|@snapshot' --quiet", - "test:playwright:electron:local": "yarn tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@snapshot'", - "test:playwright:electron:windows:local": "yarn tronb:vite:dev && set NODE_ENV='development' && playwright test --config=playwright.electron.config.ts --grep-invert=\"@skipWin|@snapshot\"", - "test:playwright:electron:macos:local": "yarn tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipMacos|@snapshot'", - "test:playwright:electron:ubuntu:local": "yarn tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipLinux|@snapshot'", - "test:playwright:electron:ubuntu:engine:local": "yarn tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipLinux|@snapshot|@skipLocalEngine'", - "test:unit:local": "yarn simpleserver:bg && yarn test:unit; kill-port 3000", - "test:unit:kcl-samples:local": "yarn simpleserver:bg && yarn test:unit:kcl-samples; kill-port 3000" + "test:playwright:electron:local": "npm run tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@snapshot'", + "test:playwright:electron:windows:local": "npm run tronb:vite:dev && set NODE_ENV='development' && playwright test --config=playwright.electron.config.ts --grep-invert=\"@skipWin|@snapshot\"", + "test:playwright:electron:macos:local": "npm run tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipMacos|@snapshot'", + "test:playwright:electron:ubuntu:local": "npm run tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipLinux|@snapshot'", + "test:playwright:electron:ubuntu:engine:local": "npm run tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipLinux|@snapshot|@skipLocalEngine'", + "test:unit:local": "npm run simpleserver:bg && npm run test:unit; kill-port 3000", + "test:unit:kcl-samples:local": "npm run simpleserver:bg && npm run test:unit:kcl-samples; kill-port 3000" }, "prettier": { "trailingComma": "es5", @@ -147,6 +154,7 @@ "importOrder": [ "", "^@rust/(.*)$", + "^@public/(.*)$", "^@e2e/(.*)$", "^@src/(.*)$", "^[./]" @@ -173,13 +181,13 @@ "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@babel/preset-env": "^7.26.9", - "@electron-forge/cli": "^7.7.0", - "@electron-forge/plugin-fuses": "^7.7.0", - "@electron-forge/plugin-vite": "^7.7.0", + "@electron-forge/cli": "^7.8.0", + "@electron-forge/plugin-fuses": "^7.8.0", + "@electron-forge/plugin-vite": "^7.8.0", "@electron/fuses": "^1.8.0", "@electron/notarize": "^2.5.0", "@iarna/toml": "^2.2.5", - "@lezer/generator": "^1.7.2", + "@lezer/generator": "^1.7.3", "@nabla/vite-plugin-eslint": "^2.0.5", "@playwright/test": "^1.51.1", "@testing-library/jest-dom": "^5.14.1", @@ -190,17 +198,17 @@ "@types/isomorphic-fetch": "^0.0.39", "@types/minimist": "^1.2.5", "@types/mocha": "^10.0.10", - "@types/node": "^22.13.14", + "@types/node": "^22.14.0", "@types/pixelmatch": "^5.2.6", "@types/pngjs": "^6.0.4", "@types/react": "^18.3.4", "@types/react-dom": "^18.3.1", "@types/react-modal": "^3.16.3", - "@types/three": "^0.174.0", + "@types/three": "^0.175.0", "@types/ua-parser-js": "^0.7.39", "@types/uuid": "^9.0.8", - "@types/wicg-file-system-access": "^2023.10.5", - "@types/ws": "^8.18.0", + "@types/wicg-file-system-access": "^2023.10.6", + "@types/ws": "^8.18.1", "@vitejs/plugin-react": "^4.3.4", "@vitest/web-worker": "^1.5.0", "@xstate/cli": "^0.5.17", @@ -213,7 +221,7 @@ "eslint-plugin-import": "^2.31.0", "eslint-plugin-jest": "^28.11.0", "eslint-plugin-jsx-a11y": "^6.10.2", - "eslint-plugin-react": "^7.37.4", + "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-perf": "^3.3.3", "eslint-plugin-suggest-no-throw": "^1.0.0", @@ -223,6 +231,7 @@ "husky": "^9.1.7", "kill-port": "^2.0.1", "node-fetch": "^3.3.2", + "openapi-typescript": "^7.6.1", "pixelmatch": "^5.3.0", "pngjs": "^7.0.0", "postcss": "^8.4.43", @@ -232,16 +241,14 @@ "setimmediate": "^1.0.5", "tailwindcss": "^3.4.17", "ts-node": "^10.0.0", - "typescript": "^5.8.2", - "typescript-eslint": "^8.26.1", - "vite": "^5.4.17", + "typescript": "^5.8.3", + "typescript-eslint": "^8.29.0", + "vite": "^5.4.18", "vite-plugin-package-version": "^1.1.0", "vite-plugin-top-level-await": "^1.5.0", "vite-tsconfig-paths": "^4.3.2", "vitest": "^1.6.1", "vitest-webgl-canvas-mock": "^1.1.0", - "ws": "^8.18.1", - "yarn": "^1.22.22" - }, - "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" + "ws": "^8.18.1" + } } diff --git a/packages/codemirror-lang-kcl/package.json b/packages/codemirror-lang-kcl/package.json index e0b05867d..f7225b8c3 100644 --- a/packages/codemirror-lang-kcl/package.json +++ b/packages/codemirror-lang-kcl/package.json @@ -5,6 +5,7 @@ "main": "src/index.ts", "scripts": { "build": "rollup -c", + "tsc": "tsc", "test": "vitest --config vitest.main.config.ts run" }, "type": "module", @@ -19,17 +20,17 @@ "types": "dist/index.d.ts", "dependencies": { "@codemirror/language": "^6.10.3", - "@codemirror/state": "^6.4.1", + "@codemirror/state": "^6.5.2", "@lezer/highlight": "^1.2.1", "typescript": "^5.7.2" }, "devDependencies": { - "@lezer/generator": "^1.7.2", + "@lezer/generator": "^1.7.3", "@rollup/plugin-typescript": "^12.1.2", "rollup": "^4.29.1", "rollup-plugin-dts": "^6.1.1", - "vite-tsconfig-paths": "^4.3.2", - "vitest": "^2.1.9" + "vite-tsconfig-paths": "^5.1.4", + "vitest": "^3.1.1" }, "files": [ "dist/" diff --git a/packages/codemirror-lang-kcl/yarn.lock b/packages/codemirror-lang-kcl/yarn.lock deleted file mode 100644 index feaa597a3..000000000 --- a/packages/codemirror-lang-kcl/yarn.lock +++ /dev/null @@ -1,733 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.24.2": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" - integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== - dependencies: - "@babel/helper-validator-identifier" "^7.25.9" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/helper-validator-identifier@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" - integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== - -"@codemirror/language@^6.10.3": - version "6.10.8" - resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.10.8.tgz#3e3a346a2b0a8cf63ee1cfe03349eb1965dce5f9" - integrity sha512-wcP8XPPhDH2vTqf181U8MbZnW+tDyPYy0UzVOa+oHORjyT+mhhom9vBd7dApJwoDz9Nb/a8kHjJIsuA/t8vNFw== - dependencies: - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.23.0" - "@lezer/common" "^1.1.0" - "@lezer/highlight" "^1.0.0" - "@lezer/lr" "^1.0.0" - style-mod "^4.0.0" - -"@codemirror/state@^6.0.0", "@codemirror/state@^6.4.1", "@codemirror/state@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.5.0.tgz#e98dde85620618651543152fe1c2483300a0ccc9" - integrity sha512-MwBHVK60IiIHDcoMet78lxt6iw5gJOGSbNbOIVBHWVXIH4/Nq1+GQgLLGgI1KlnN86WDXsPudVaqYHKBIx7Eyw== - dependencies: - "@marijn/find-cluster-break" "^1.0.0" - -"@codemirror/view@^6.23.0": - version "6.36.1" - resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.36.1.tgz#3c543b8fd72c96b30c4b2b1464d1ebce7e0c5c4b" - integrity sha512-miD1nyT4m4uopZaDdO2uXU/LLHliKNYL9kB1C1wJHrunHLm/rpkb5QVSokqgw9hFqEZakrdlb/VGWX8aYZTslQ== - dependencies: - "@codemirror/state" "^6.5.0" - style-mod "^4.1.0" - w3c-keyname "^2.2.4" - -"@esbuild/aix-ppc64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" - integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== - -"@esbuild/android-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" - integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== - -"@esbuild/android-arm@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" - integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== - -"@esbuild/android-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" - integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== - -"@esbuild/darwin-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" - integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== - -"@esbuild/darwin-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" - integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== - -"@esbuild/freebsd-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" - integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== - -"@esbuild/freebsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" - integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== - -"@esbuild/linux-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" - integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== - -"@esbuild/linux-arm@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" - integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== - -"@esbuild/linux-ia32@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" - integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== - -"@esbuild/linux-loong64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" - integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== - -"@esbuild/linux-mips64el@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" - integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== - -"@esbuild/linux-ppc64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" - integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== - -"@esbuild/linux-riscv64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" - integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== - -"@esbuild/linux-s390x@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" - integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== - -"@esbuild/linux-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" - integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== - -"@esbuild/netbsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" - integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== - -"@esbuild/openbsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" - integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== - -"@esbuild/sunos-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" - integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== - -"@esbuild/win32-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" - integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== - -"@esbuild/win32-ia32@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" - integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== - -"@esbuild/win32-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" - integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== - -"@jridgewell/sourcemap-codec@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== - -"@lezer/common@^1.0.0", "@lezer/common@^1.1.0": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.3.tgz#138fcddab157d83da557554851017c6c1e5667fd" - integrity sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA== - -"@lezer/generator@^1.7.2": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@lezer/generator/-/generator-1.7.2.tgz#a491c91eb9f117ea803e748fa97574514156a2a3" - integrity sha512-CwgULPOPPmH54tv4gki18bElLCdJ1+FBC+nGVSVD08vFWDsMjS7KEjNTph9JOypDnet90ujN3LzQiW3CyVODNQ== - dependencies: - "@lezer/common" "^1.1.0" - "@lezer/lr" "^1.3.0" - -"@lezer/highlight@^1.0.0", "@lezer/highlight@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.2.1.tgz#596fa8f9aeb58a608be0a563e960c373cbf23f8b" - integrity sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA== - dependencies: - "@lezer/common" "^1.0.0" - -"@lezer/lr@^1.0.0", "@lezer/lr@^1.3.0": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.2.tgz#931ea3dea8e9de84e90781001dae30dea9ff1727" - integrity sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA== - dependencies: - "@lezer/common" "^1.0.0" - -"@marijn/find-cluster-break@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz#775374306116d51c0c500b8c4face0f9a04752d8" - integrity sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g== - -"@rollup/plugin-typescript@^12.1.2": - version "12.1.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-12.1.2.tgz#ebaeec2e7376faa889030ccd7cb485a649e63118" - integrity sha512-cdtSp154H5sv637uMr1a8OTWB0L1SWDSm1rDGiyfcGcvQ6cuTs4MDk2BVEBGysUWago4OJN4EQZqOTl/QY3Jgg== - dependencies: - "@rollup/pluginutils" "^5.1.0" - resolve "^1.22.1" - -"@rollup/pluginutils@^5.1.0": - version "5.1.4" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.4.tgz#bb94f1f9eaaac944da237767cdfee6c5b2262d4a" - integrity sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ== - dependencies: - "@types/estree" "^1.0.0" - estree-walker "^2.0.2" - picomatch "^4.0.2" - -"@rollup/rollup-android-arm-eabi@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz#9bd38df6a29afb7f0336d988bc8112af0c8816c0" - integrity sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw== - -"@rollup/rollup-android-arm64@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz#bd1a98390e15b76eeef907175a37c5f0f9e4d214" - integrity sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew== - -"@rollup/rollup-darwin-arm64@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz#bc6fa8a2cc77b5f367424e5e994e3537524e6879" - integrity sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw== - -"@rollup/rollup-darwin-x64@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz#76059c91f06b17406347b127df10f065283b2e61" - integrity sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng== - -"@rollup/rollup-freebsd-arm64@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz#83178315c0be4b4c8c1fd835e1952d2dc1eb4e6e" - integrity sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw== - -"@rollup/rollup-freebsd-x64@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz#1ef24fa0576bf7899a0a0a649156606dbd7a0d46" - integrity sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w== - -"@rollup/rollup-linux-arm-gnueabihf@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz#443a6f5681bf4611caae42988994a6d8ee676216" - integrity sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A== - -"@rollup/rollup-linux-arm-musleabihf@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz#9738b27184102228637a683e5f35b22ea352394f" - integrity sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ== - -"@rollup/rollup-linux-arm64-gnu@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz#b5e9d5e30ff36a19bedd29c715ba18a1889ff269" - integrity sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA== - -"@rollup/rollup-linux-arm64-musl@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz#1d8f68f0829b57f746ec03432ad046f1af014a98" - integrity sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA== - -"@rollup/rollup-linux-loongarch64-gnu@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz#07027feb883408e74a3002c8e50caaedd288ae38" - integrity sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw== - -"@rollup/rollup-linux-powerpc64le-gnu@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz#544ce1b0847a9c1240425e86f33daceac7ec4e12" - integrity sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w== - -"@rollup/rollup-linux-riscv64-gnu@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz#64be13d51852ec1e2dfbd25d997ed5f42f35ea6d" - integrity sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ== - -"@rollup/rollup-linux-s390x-gnu@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz#31f51e1e05c6264552d03875d9e2e673f0fd86e3" - integrity sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g== - -"@rollup/rollup-linux-x64-gnu@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz#f4c95b26f4ad69ebdb64b42f0ae4da2a0f617958" - integrity sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ== - -"@rollup/rollup-linux-x64-musl@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz#ab7be89192f72beb9ea6e2386186fefde4f69d82" - integrity sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA== - -"@rollup/rollup-win32-arm64-msvc@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz#7f12efb8240b238346951559998802722944421e" - integrity sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig== - -"@rollup/rollup-win32-ia32-msvc@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz#353d14d6eee943004d129796e4feddd3aa260921" - integrity sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng== - -"@rollup/rollup-win32-x64-msvc@4.29.1": - version "4.29.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz#c82f04a09ba481e13857d6f2516e072aaa51b7f4" - integrity sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg== - -"@types/estree@1.0.6", "@types/estree@^1.0.0": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== - -"@vitest/expect@2.1.9": - version "2.1.9" - resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-2.1.9.tgz#b566ea20d58ea6578d8dc37040d6c1a47ebe5ff8" - integrity sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw== - dependencies: - "@vitest/spy" "2.1.9" - "@vitest/utils" "2.1.9" - chai "^5.1.2" - tinyrainbow "^1.2.0" - -"@vitest/mocker@2.1.9": - version "2.1.9" - resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-2.1.9.tgz#36243b27351ca8f4d0bbc4ef91594ffd2dc25ef5" - integrity sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg== - dependencies: - "@vitest/spy" "2.1.9" - estree-walker "^3.0.3" - magic-string "^0.30.12" - -"@vitest/pretty-format@2.1.9", "@vitest/pretty-format@^2.1.9": - version "2.1.9" - resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.1.9.tgz#434ff2f7611689f9ce70cd7d567eceb883653fdf" - integrity sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ== - dependencies: - tinyrainbow "^1.2.0" - -"@vitest/runner@2.1.9": - version "2.1.9" - resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-2.1.9.tgz#cc18148d2d797fd1fd5908d1f1851d01459be2f6" - integrity sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g== - dependencies: - "@vitest/utils" "2.1.9" - pathe "^1.1.2" - -"@vitest/snapshot@2.1.9": - version "2.1.9" - resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-2.1.9.tgz#24260b93f798afb102e2dcbd7e61c6dfa118df91" - integrity sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ== - dependencies: - "@vitest/pretty-format" "2.1.9" - magic-string "^0.30.12" - pathe "^1.1.2" - -"@vitest/spy@2.1.9": - version "2.1.9" - resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-2.1.9.tgz#cb28538c5039d09818b8bfa8edb4043c94727c60" - integrity sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ== - dependencies: - tinyspy "^3.0.2" - -"@vitest/utils@2.1.9": - version "2.1.9" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.1.9.tgz#4f2486de8a54acf7ecbf2c5c24ad7994a680a6c1" - integrity sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ== - dependencies: - "@vitest/pretty-format" "2.1.9" - loupe "^3.1.2" - tinyrainbow "^1.2.0" - -assertion-error@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" - integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== - -cac@^6.7.14: - version "6.7.14" - resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" - integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== - -chai@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.2.tgz#3afbc340b994ae3610ca519a6c70ace77ad4378d" - integrity sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw== - dependencies: - assertion-error "^2.0.1" - check-error "^2.1.1" - deep-eql "^5.0.1" - loupe "^3.1.0" - pathval "^2.0.0" - -check-error@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" - integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== - -debug@^4.1.1, debug@^4.3.7: - version "4.4.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" - integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== - dependencies: - ms "^2.1.3" - -deep-eql@^5.0.1: - version "5.0.2" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" - integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== - -es-module-lexer@^1.5.4: - version "1.6.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.6.0.tgz#da49f587fd9e68ee2404fe4e256c0c7d3a81be21" - integrity sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ== - -esbuild@^0.21.3: - version "0.21.5" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" - integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== - optionalDependencies: - "@esbuild/aix-ppc64" "0.21.5" - "@esbuild/android-arm" "0.21.5" - "@esbuild/android-arm64" "0.21.5" - "@esbuild/android-x64" "0.21.5" - "@esbuild/darwin-arm64" "0.21.5" - "@esbuild/darwin-x64" "0.21.5" - "@esbuild/freebsd-arm64" "0.21.5" - "@esbuild/freebsd-x64" "0.21.5" - "@esbuild/linux-arm" "0.21.5" - "@esbuild/linux-arm64" "0.21.5" - "@esbuild/linux-ia32" "0.21.5" - "@esbuild/linux-loong64" "0.21.5" - "@esbuild/linux-mips64el" "0.21.5" - "@esbuild/linux-ppc64" "0.21.5" - "@esbuild/linux-riscv64" "0.21.5" - "@esbuild/linux-s390x" "0.21.5" - "@esbuild/linux-x64" "0.21.5" - "@esbuild/netbsd-x64" "0.21.5" - "@esbuild/openbsd-x64" "0.21.5" - "@esbuild/sunos-x64" "0.21.5" - "@esbuild/win32-arm64" "0.21.5" - "@esbuild/win32-ia32" "0.21.5" - "@esbuild/win32-x64" "0.21.5" - -estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -estree-walker@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" - integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== - dependencies: - "@types/estree" "^1.0.0" - -expect-type@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-1.1.0.tgz#a146e414250d13dfc49eafcfd1344a4060fa4c75" - integrity sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA== - -fsevents@~2.3.2, fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -is-core-module@^2.16.0: - version "2.16.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" - integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== - dependencies: - hasown "^2.0.2" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -loupe@^3.1.0, loupe@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.2.tgz#c86e0696804a02218f2206124c45d8b15291a240" - integrity sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg== - -magic-string@^0.30.10, magic-string@^0.30.12: - version "0.30.17" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" - integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.5.0" - -ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -nanoid@^3.3.7: - version "3.3.8" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" - integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -pathe@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" - integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== - -pathval@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" - integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== - -picocolors@^1.0.0, picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - -picomatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" - integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== - -postcss@^8.4.43: - version "8.4.49" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" - integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== - dependencies: - nanoid "^3.3.7" - picocolors "^1.1.1" - source-map-js "^1.2.1" - -resolve@^1.22.1: - version "1.22.10" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== - dependencies: - is-core-module "^2.16.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -rollup-plugin-dts@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-dts/-/rollup-plugin-dts-6.1.1.tgz#46b33f4d1d7f4e66f1171ced9b282ac11a15a254" - integrity sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA== - dependencies: - magic-string "^0.30.10" - optionalDependencies: - "@babel/code-frame" "^7.24.2" - -rollup@^4.20.0, rollup@^4.29.1: - version "4.29.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.29.1.tgz#a9aaaece817e5f778489e5bf82e379cc8a5c05bc" - integrity sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw== - dependencies: - "@types/estree" "1.0.6" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.29.1" - "@rollup/rollup-android-arm64" "4.29.1" - "@rollup/rollup-darwin-arm64" "4.29.1" - "@rollup/rollup-darwin-x64" "4.29.1" - "@rollup/rollup-freebsd-arm64" "4.29.1" - "@rollup/rollup-freebsd-x64" "4.29.1" - "@rollup/rollup-linux-arm-gnueabihf" "4.29.1" - "@rollup/rollup-linux-arm-musleabihf" "4.29.1" - "@rollup/rollup-linux-arm64-gnu" "4.29.1" - "@rollup/rollup-linux-arm64-musl" "4.29.1" - "@rollup/rollup-linux-loongarch64-gnu" "4.29.1" - "@rollup/rollup-linux-powerpc64le-gnu" "4.29.1" - "@rollup/rollup-linux-riscv64-gnu" "4.29.1" - "@rollup/rollup-linux-s390x-gnu" "4.29.1" - "@rollup/rollup-linux-x64-gnu" "4.29.1" - "@rollup/rollup-linux-x64-musl" "4.29.1" - "@rollup/rollup-win32-arm64-msvc" "4.29.1" - "@rollup/rollup-win32-ia32-msvc" "4.29.1" - "@rollup/rollup-win32-x64-msvc" "4.29.1" - fsevents "~2.3.2" - -siginfo@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" - integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== - -source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== - -stackback@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" - integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== - -std-env@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.8.0.tgz#b56ffc1baf1a29dcc80a3bdf11d7fca7c315e7d5" - integrity sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w== - -style-mod@^4.0.0, style-mod@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.1.2.tgz#ca238a1ad4786520f7515a8539d5a63691d7bf67" - integrity sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw== - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -tinybench@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" - integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== - -tinyexec@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.2.tgz#941794e657a85e496577995c6eef66f53f42b3d2" - integrity sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA== - -tinypool@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.0.2.tgz#706193cc532f4c100f66aa00b01c42173d9051b2" - integrity sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA== - -tinyrainbow@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-1.2.0.tgz#5c57d2fc0fb3d1afd78465c33ca885d04f02abb5" - integrity sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ== - -tinyspy@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a" - integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q== - -tsconfck@^3.0.3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-3.1.4.tgz#de01a15334962e2feb526824339b51be26712229" - integrity sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ== - -typescript@^5.7.2: - version "5.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" - integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== - -vite-node@2.1.9: - version "2.1.9" - resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-2.1.9.tgz#549710f76a643f1c39ef34bdb5493a944e4f895f" - integrity sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA== - dependencies: - cac "^6.7.14" - debug "^4.3.7" - es-module-lexer "^1.5.4" - pathe "^1.1.2" - vite "^5.0.0" - -vite-tsconfig-paths@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz#321f02e4b736a90ff62f9086467faf4e2da857a9" - integrity sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA== - dependencies: - debug "^4.1.1" - globrex "^0.1.2" - tsconfck "^3.0.3" - -vite@^5.0.0: - version "5.4.17" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.17.tgz#4bf61dd4cdbf64b0d6661f5dba76954cc81d5082" - integrity sha512-5+VqZryDj4wgCs55o9Lp+p8GE78TLVg0lasCH5xFZ4jacZjtqZa6JUw9/p0WeAojaOfncSM6v77InkFPGnvPvg== - dependencies: - esbuild "^0.21.3" - postcss "^8.4.43" - rollup "^4.20.0" - optionalDependencies: - fsevents "~2.3.3" - -vitest@^2.1.9: - version "2.1.9" - resolved "https://registry.yarnpkg.com/vitest/-/vitest-2.1.9.tgz#7d01ffd07a553a51c87170b5e80fea3da7fb41e7" - integrity sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q== - dependencies: - "@vitest/expect" "2.1.9" - "@vitest/mocker" "2.1.9" - "@vitest/pretty-format" "^2.1.9" - "@vitest/runner" "2.1.9" - "@vitest/snapshot" "2.1.9" - "@vitest/spy" "2.1.9" - "@vitest/utils" "2.1.9" - chai "^5.1.2" - debug "^4.3.7" - expect-type "^1.1.0" - magic-string "^0.30.12" - pathe "^1.1.2" - std-env "^3.8.0" - tinybench "^2.9.0" - tinyexec "^0.3.1" - tinypool "^1.0.1" - tinyrainbow "^1.2.0" - vite "^5.0.0" - vite-node "2.1.9" - why-is-node-running "^2.3.0" - -w3c-keyname@^2.2.4: - version "2.2.8" - resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5" - integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ== - -why-is-node-running@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04" - integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== - dependencies: - siginfo "^2.0.0" - stackback "0.0.2" diff --git a/packages/codemirror-lsp-client/package.json b/packages/codemirror-lsp-client/package.json index 2a02fb7d7..f145c3305 100644 --- a/packages/codemirror-lsp-client/package.json +++ b/packages/codemirror-lsp-client/package.json @@ -24,12 +24,12 @@ "@lezer/highlight": "^1.2.1", "@ts-stack/markdown": "^1.5.0", "json-rpc-2.0": "^1.7.0", - "typescript": "^5.8.2", + "typescript": "^5.8.3", "vscode-languageserver-protocol": "^3.17.5", "vscode-uri": "^3.1.0" }, "devDependencies": { - "@types/node": "^22.13.13", + "@types/node": "^22.14.0", "ts-node": "^10.9.2" } } diff --git a/packages/codemirror-lsp-client/src/plugin/lsp.ts b/packages/codemirror-lsp-client/src/plugin/lsp.ts index b68c8a783..12079d9e5 100644 --- a/packages/codemirror-lsp-client/src/plugin/lsp.ts +++ b/packages/codemirror-lsp-client/src/plugin/lsp.ts @@ -389,6 +389,13 @@ export class LanguageServerPlugin implements PluginValue { } if (insertText && insertTextFormat === 2) { + // We end with ${} so you can jump to the end of the snippet. + // After the last argument. + // This is not standard from the lsp so we add it here. + if (insertText.endsWith(')')) { + // We have a function its safe to insert the ${} at the end. + insertText = insertText + '${}' + } return snippetCompletion(insertText, completion) } diff --git a/packages/codemirror-lsp-client/yarn.lock b/packages/codemirror-lsp-client/yarn.lock deleted file mode 100644 index 47563f20e..000000000 --- a/packages/codemirror-lsp-client/yarn.lock +++ /dev/null @@ -1,238 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@codemirror/autocomplete@6.18.6": - version "6.18.6" - resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz#de26e864a1ec8192a1b241eb86addbb612964ddb" - integrity sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg== - dependencies: - "@codemirror/language" "^6.0.0" - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.17.0" - "@lezer/common" "^1.0.0" - -"@codemirror/language@^6.0.0", "@codemirror/language@^6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.11.0.tgz#5ae90972601497f4575f30811519d720bf7232c9" - integrity sha512-A7+f++LodNNc1wGgoRDTt78cOwWm9KVezApgjOMp1W4hM0898nsqBXwF+sbePE7ZRcjN7Sa1Z5m2oN27XkmEjQ== - dependencies: - "@codemirror/state" "^6.0.0" - "@codemirror/view" "^6.23.0" - "@lezer/common" "^1.1.0" - "@lezer/highlight" "^1.0.0" - "@lezer/lr" "^1.0.0" - style-mod "^4.0.0" - -"@codemirror/state@^6.0.0", "@codemirror/state@^6.4.0", "@codemirror/state@^6.5.2": - version "6.5.2" - resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.5.2.tgz#8eca3a64212a83367dc85475b7d78d5c9b7076c6" - integrity sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA== - dependencies: - "@marijn/find-cluster-break" "^1.0.0" - -"@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0": - version "6.28.2" - resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.28.2.tgz#026d5d2bd315aa015c1a1573b6358eeba7acd004" - integrity sha512-A3DmyVfjgPsGIjiJqM/zvODUAPQdQl3ci0ghehYNnbt5x+o76xq+dL5+mMBuysDXnI3kapgOkoeJ0sbtL/3qPw== - dependencies: - "@codemirror/state" "^6.4.0" - style-mod "^4.1.0" - w3c-keyname "^2.2.4" - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@lezer/common@^1.0.0", "@lezer/common@^1.1.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.1.tgz#198b278b7869668e1bebbe687586e12a42731049" - integrity sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ== - -"@lezer/highlight@^1.0.0", "@lezer/highlight@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.2.1.tgz#596fa8f9aeb58a608be0a563e960c373cbf23f8b" - integrity sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA== - dependencies: - "@lezer/common" "^1.0.0" - -"@lezer/lr@^1.0.0": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.1.tgz#fe25f051880a754e820b28148d90aa2a96b8bdd2" - integrity sha512-CHsKq8DMKBf9b3yXPDIU4DbH+ZJd/sJdYOW2llbW/HudP5u0VS6Bfq1hLYfgU7uAYGFIyGGQIsSOXGPEErZiJw== - dependencies: - "@lezer/common" "^1.0.0" - -"@marijn/find-cluster-break@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz#775374306116d51c0c500b8c4face0f9a04752d8" - integrity sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g== - -"@ts-stack/markdown@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@ts-stack/markdown/-/markdown-1.5.0.tgz#5dc298a20dc3dc040143c5a5948201eb6bf5419d" - integrity sha512-ntVX2Kmb2jyTdH94plJohokvDVPvp6CwXHqsa9NVZTK8cOmHDCYNW0j6thIadUVRTStJhxhfdeovLd0owqDxLw== - dependencies: - tslib "^2.3.0" - -"@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - -"@types/node@^22.13.13": - version "22.13.13" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.13.tgz#5e7d110fb509b0d4a43fbf48fa9d6e0f83e1b1e7" - integrity sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ== - dependencies: - undici-types "~6.20.0" - -acorn-walk@^8.1.1: - version "8.3.3" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" - integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== - dependencies: - acorn "^8.11.0" - -acorn@^8.11.0, acorn@^8.4.1: - version "8.12.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.0.tgz#1627bfa2e058148036133b8d9b51a700663c294c" - integrity sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw== - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -json-rpc-2.0@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/json-rpc-2.0/-/json-rpc-2.0-1.7.0.tgz#840deb0bc168463e12bceb462f7fe225e793fc17" - integrity sha512-asnLgC1qD5ytP+fvBP8uL0rvj+l8P6iYICbzZ8dVxCpESffVjzA7KkYkbKCIbavs7cllwH1ZUaNtJwphdeRqpg== - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -style-mod@^4.0.0, style-mod@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.1.2.tgz#ca238a1ad4786520f7515a8539d5a63691d7bf67" - integrity sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw== - -ts-node@^10.9.2: - version "10.9.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -tslib@^2.3.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" - integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== - -typescript@^5.8.2: - version "5.8.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4" - integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ== - -undici-types@~6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" - integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -vscode-jsonrpc@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz#f43dfa35fb51e763d17cd94dcca0c9458f35abf9" - integrity sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA== - -vscode-languageserver-protocol@^3.17.5: - version "3.17.5" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz#864a8b8f390835572f4e13bd9f8313d0e3ac4bea" - integrity sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg== - dependencies: - vscode-jsonrpc "8.2.0" - vscode-languageserver-types "3.17.5" - -vscode-languageserver-types@3.17.5: - version "3.17.5" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz#3273676f0cf2eab40b3f44d085acbb7f08a39d8a" - integrity sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg== - -vscode-uri@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.1.0.tgz#dd09ec5a66a38b5c3fffc774015713496d14e09c" - integrity sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ== - -w3c-keyname@^2.2.4: - version "2.2.8" - resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5" - integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ== - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== diff --git a/playwright.config.ts b/playwright.config.ts index 5d2b0e9ab..c2bae8bab 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -45,6 +45,7 @@ export default defineConfig({ [process.env.CI ? 'dot' : 'list'], ['json', { outputFile: './test-results/report.json' }], ['html'], + ['./e2e/playwright/lib/api-reporter.ts'], ], /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ use: { @@ -113,7 +114,7 @@ export default defineConfig({ /* Run your local dev server before starting the tests */ webServer: { - command: 'yarn start', + command: 'npm start', // url: 'http://127.0.0.1:3000', reuseExistingServer: !process.env.CI, }, diff --git a/playwright.electron.config.ts b/playwright.electron.config.ts index 271ee410a..471955871 100644 --- a/playwright.electron.config.ts +++ b/playwright.electron.config.ts @@ -45,6 +45,7 @@ export default defineConfig({ ['dot'], ['json', { outputFile: './test-results/report.json' }], ['html'], + ['./e2e/playwright/lib/api-reporter.ts'], ], /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ use: { diff --git a/public/kcl-samples/80-20-rail/main.kcl b/public/kcl-samples/80-20-rail/main.kcl index 255a807b5..0feac4b73 100644 --- a/public/kcl-samples/80-20-rail/main.kcl +++ b/public/kcl-samples/80-20-rail/main.kcl @@ -31,15 +31,9 @@ fn rail8020(originStart, railHeight, railLength) { |> xLine(length = 0.06 * railHeight, tag = $edge1) |> yLine(length = 0.087 * railHeight, tag = $edge2) |> xLine(length = -0.183 * railHeight, tag = $edge3) - |> angledLineToY({ - angle = 45, - to = (1 - 0.356) / 2 * railHeight + originStart[1] - }, %, $edge4) + |> angledLine(angle = 45, endAbsoluteY = (1 - 0.356) / 2 * railHeight + originStart[1], tag = $edge4) |> xLine(length = 0.232 * railHeight, tag = $edge5) - |> angledLineToY({ - angle = -45, - to = 0.087 * railHeight + originStart[1] - }, %, $edge6) + |> angledLine(angle = -45, endAbsoluteY = 0.087 * railHeight + originStart[1], tag = $edge6) |> xLine(length = -0.183 * railHeight, tag = $edge7) |> yLine(length = -0.087 * railHeight, tag = $edge8) |> xLine(length = 0.06 * railHeight) @@ -75,15 +69,9 @@ fn rail8020(originStart, railHeight, railLength) { |> yLine(length = 0.06 * railHeight, tag = $edge9) |> xLine(length = -0.087 * railHeight, tag = $edge10) |> yLine(length = -0.183 * railHeight, tag = $edge11) // edge11 - |> angledLineToX({ - angle = 135, - to = ((1 - 0.356) / 2 + 0.356) * railHeight + originStart[0] - }, %, $edge12) // edge12 + |> angledLine(angle = 135, endAbsoluteX = ((1 - 0.356) / 2 + 0.356) * railHeight + originStart[0], tag = $edge12) // edge12 |> yLine(length = 0.232 * railHeight, tag = $edge13) // 13 - |> angledLineToX({ - angle = 45, - to = (1 - 0.087) * railHeight + originStart[0] - }, %, $edge14) // 14 + |> angledLine(angle = 45, endAbsoluteX = (1 - 0.087) * railHeight + originStart[0], tag = $edge14) // 14 |> yLine(length = -0.183 * railHeight, tag = $edge15) // 15 |> xLine(length = 0.087 * railHeight, tag = $edge16) |> yLine(length = 0.06 * railHeight) @@ -119,15 +107,9 @@ fn rail8020(originStart, railHeight, railLength) { |> xLine(length = -0.06 * railHeight, tag = $edge17) |> yLine(length = -0.087 * railHeight, tag = $edge18) |> xLine(length = 0.183 * railHeight, tag = $edge19) - |> angledLineToY({ - angle = 45, - to = ((1 - 0.356) / 2 + 0.356) * railHeight + originStart[1] - }, %, $edge20) + |> angledLine(angle = 45, endAbsoluteY = ((1 - 0.356) / 2 + 0.356) * railHeight + originStart[1], tag = $edge20) |> xLine(length = -0.232 * railHeight, tag = $edge21) - |> angledLineToY({ - angle = 135, - to = (1 - 0.087) * railHeight + originStart[1] - }, %, $edge22) + |> angledLine(angle = 135, endAbsoluteY = (1 - 0.087) * railHeight + originStart[1], tag = $edge22) |> xLine(length = 0.183 * railHeight, tag = $edge23) |> yLine(length = 0.087 * railHeight, tag = $edge24) |> xLine(length = -0.06 * railHeight) @@ -163,15 +145,9 @@ fn rail8020(originStart, railHeight, railLength) { |> yLine(length = -0.06 * railHeight, tag = $edge25) |> xLine(length = 0.087 * railHeight, tag = $edge26) |> yLine(length = 0.183 * railHeight, tag = $edge27) - |> angledLineToX({ - angle = 135, - to = (1 - 0.356) / 2 * railHeight + originStart[0] - }, %, $edge28) + |> angledLine(angle = 135, endAbsoluteX = (1 - 0.356) / 2 * railHeight + originStart[0], tag = $edge28) |> yLine(length = -0.232 * railHeight, tag = $edge29) - |> angledLineToX({ - angle = 45, - to = 0.087 * railHeight + originStart[0] - }, %, $edge30) + |> angledLine(angle = 45, endAbsoluteX = 0.087 * railHeight + originStart[0], tag = $edge30) |> yLine(length = 0.183 * railHeight, tag = $edge31) |> xLine(length = -0.087 * railHeight, tag = $edge32) |> yLine(length = -0.06 * railHeight) diff --git a/public/kcl-samples/bench/bench-parts.kcl b/public/kcl-samples/bench/bench-parts.kcl index d294dd2d7..c17ea79f6 100644 --- a/public/kcl-samples/bench/bench-parts.kcl +++ b/public/kcl-samples/bench/bench-parts.kcl @@ -10,25 +10,25 @@ fn dividerSketch(plane) { sketch000 = startSketchOn(plane) |> startProfileAt([-16.82, 21.2], %) |> line(end = [-0.13, -1.27]) - |> tangentialArcTo([-15.94, profileStartY(%) - 7.73], %) - |> tangentialArcTo([-16.6, profileStartY(%) - 15.52], %) - |> tangentialArcTo([-18.38, profileStartY(%) - 18.63], %) + |> tangentialArc(endAbsolute = [-15.94, profileStartY(%) - 7.73]) + |> tangentialArc(endAbsolute = [-16.6, profileStartY(%) - 15.52]) + |> tangentialArc(endAbsolute = [-18.38, profileStartY(%) - 18.63]) |> line(end = [-1.25, -2.6]) |> xLine(length = 6.04) |> line(end = [6.68, 7.87]) - |> tangentialArcTo([10.06, profileStartY(%) - 12.69], %) + |> tangentialArc(endAbsolute = [10.06, profileStartY(%) - 12.69]) |> line(end = [7.28, -8.47]) |> xLine(length = 5.98) |> line(end = [-1.3, 3.01]) - |> tangentialArcTo([22.45, profileStartY(%) - 2.84], %) - |> tangentialArcTo([25.08, profileStartY(%) + 6.42], %) + |> tangentialArc(endAbsolute = [22.45, profileStartY(%) - 2.84]) + |> tangentialArc(endAbsolute = [25.08, profileStartY(%) + 6.42]) |> line(end = [2.35, 16.36]) |> line(end = [1.78, 1.15]) - |> tangentialArcTo([23.93, profileStartY(%) + 27.29], %) + |> tangentialArc(endAbsolute = [23.93, profileStartY(%) + 27.29]) |> line(end = [-1.92, 0.21]) |> line(end = [-3.74, -26.54]) - |> tangentialArcTo([15.13, profileStartY(%) - 1.72], %) - |> tangentialArcTo(profileStart(%), %) + |> tangentialArc(endAbsolute = [15.13, profileStartY(%) - 1.72]) + |> tangentialArc(endAbsolute = profileStart(%)) |> close() return sketch000 } @@ -38,8 +38,8 @@ export fn divider(plane) { |> extrude(length = dividerThickness / 2) left = dividerSketch(plane) |> extrude(length = -dividerThickness / 2) - shell(right, thickness = 1.5, faces = ["end"]) - shell(left, thickness = 1.5, faces = ["start"]) + shell(right, thickness = 1.5, faces = [END]) + shell(left, thickness = 1.5, faces = [START]) return 0 } @@ -86,11 +86,11 @@ export fn seatSlats(plane, length) { fn backSlatsSketch(plane) { sketch004 = startSketchOn(plane) |> startProfileAt([22, 38.5], %) - |> angledLine([173, 2], %) + |> angledLine(angle = 173, length = 2) |> line(end = [-1.74, 2.03]) - |> angledLine([82, 6.6], %) + |> angledLine(angle = 82, length = 6.6) |> line(end = [2.23, 1.42]) - |> angledLine([-7, 2], %) + |> angledLine(angle = -7, length = 2) |> line(endAbsolute = profileStart(%)) |> close() |> patternLinear2d(instances = 2, distance = 11, axis = [-0.137, -1]) diff --git a/public/kcl-samples/bracket/main.kcl b/public/kcl-samples/bracket/main.kcl index 60cf0a172..7c5b93e7f 100644 --- a/public/kcl-samples/bracket/main.kcl +++ b/public/kcl-samples/bracket/main.kcl @@ -1,47 +1,84 @@ // Shelf Bracket // This is a bracket that holds a shelf. It is made of aluminum and is designed to hold a force of 300 lbs. The bracket is 6 inches wide and the force is applied at the end of the shelf, 12 inches from the wall. The bracket has a factor of safety of 1.2. The legs of the bracket are 5 inches and 2 inches long. The thickness of the bracket is calculated from the constraints provided. -// Define constants +// Set units +@settings(defaultLengthUnit = in) + +// Define parameters sigmaAllow = 35000 // psi (6061-T6 aluminum) -width = 6 // inch +width = 5.0 p = 300 // Force on shelf - lbs -factorOfSafety = 1.2 // FOS of 1.2 -shelfMountL = 5 // inches -wallMountL = 2 // inches -shelfDepth = 12 // Shelf is 12 inches in depth from the wall -moment = shelfDepth * p // assume the force is applied at the end of the shelf to be conservative (lb-in) +fos = 1.2 // Factor of safety of 1.2 +shelfMountLength = 5.0 +wallMountLength = 2.25 +shelfDepth = 12 // Shelf is 12 inches deep from the wall +shelfMountingHoleDiameter = .50 +wallMountingHoleDiameter = .625 +// Calculated parameters +moment = shelfDepth * p // assume the force is applied at the end of the shelf +thickness = sqrt(moment * fos * 6 / (sigmaAllow * width)) // required thickness for two brackets to hold up the shelf +bendRadius = 0.25 +extBendRadius = bendRadius + thickness +filletRadius = .5 +shelfMountingHolePlacementOffset = shelfMountingHoleDiameter * 1.5 +wallMountingHolePlacementOffset = wallMountingHoleDiameter * 1.5 -// Calculate required thickness of bracket -thickness = sqrt(moment * factorOfSafety * 6 / (sigmaAllow * width)) // this is the calculation of two brackets holding up the shelf (inches) +// Add checks to ensure bracket is possible. These make sure that there is adequate distance between holes and edges. +assertGreaterThanOrEq(wallMountLength, wallMountingHoleDiameter * 3, "Holes not possible. Either decrease hole diameter or increase wallMountLength") +assertGreaterThanOrEq(shelfMountLength, shelfMountingHoleDiameter * 5.5, "wallMountLength must be longer for hole sizes to work. Either decrease mounting hole diameters or increase shelfMountLength") +assertGreaterThanOrEq(width, shelfMountingHoleDiameter * 5.5, "Holes not possible. Either decrease hole diameter or increase width") +assertGreaterThanOrEq(width, wallMountingHoleDiameter * 5.5, "Holes not possible. Either decrease hole diameter or increase width") - -filletRadius = .25 -extFilletRadius = filletRadius + thickness -mountingHoleDiameter = 0.5 - -sketch001 = startSketchOn(XZ) +// Create the body of the bracket +bracketBody = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> xLine(length = shelfMountL - thickness, tag = $seg01) + |> xLine(length = shelfMountLength - thickness, tag = $seg01) |> yLine(length = thickness, tag = $seg02) - |> xLine(length = -shelfMountL, tag = $seg03) - |> yLine(length = -wallMountL, tag = $seg04) + |> xLine(length = -shelfMountLength, tag = $seg03) + |> yLine(length = -wallMountLength, tag = $seg04) |> xLine(length = thickness, tag = $seg05) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg06) |> close() |> extrude(%, length = width) - |> fillet(radius = extFilletRadius, tags = [getNextAdjacentEdge(seg03)]) - |> fillet(radius = filletRadius, tags = [getNextAdjacentEdge(seg06)]) - |> fillet(radius = filletRadius, tags = [seg02, getOppositeEdge(seg02)]) - |> fillet(radius = filletRadius, tags = [seg05, getOppositeEdge(seg05)]) -sketch002 = startSketchOn(sketch001, seg03) - |> circle(center = [-1.25, 1], radius = mountingHoleDiameter / 2) - |> patternLinear2d(instances = 2, distance = 2.5, axis = [-1, 0]) - |> patternLinear2d(instances = 2, distance = 4, axis = [0, 1]) +// Add mounting holes to mount to the shelf +shelfMountingHoles = startSketchOn(bracketBody, face = seg03) + |> circle( + center = [ + -(bendRadius + shelfMountingHolePlacementOffset), + shelfMountingHolePlacementOffset + ], + radius = shelfMountingHoleDiameter / 2, + ) + |> patternLinear2d(instances = 2, distance = -(extBendRadius + shelfMountingHolePlacementOffset) + shelfMountLength - shelfMountingHolePlacementOffset, axis = [-1, 0]) + |> patternLinear2d(instances = 2, distance = width - (shelfMountingHolePlacementOffset * 2), axis = [0, 1]) |> extrude(%, length = -thickness - .01) -sketch003 = startSketchOn(sketch001, seg04) - |> circle(center = [1, -1], radius = mountingHoleDiameter / 2) - |> patternLinear2d(instances = 2, distance = 4, axis = [1, 0]) +// Add mounting holes to mount to the wall +wallMountingHoles = startSketchOn(bracketBody, face = seg04) + |> circle( + center = [ + wallMountLength - wallMountingHolePlacementOffset - bendRadius, + wallMountingHolePlacementOffset + ], + radius = wallMountingHoleDiameter / 2, + ) + |> patternLinear2d(instances = 2, distance = width - (wallMountingHolePlacementOffset * 2), axis = [0, 1]) |> extrude(%, length = -thickness - 0.1) + +// Apply bends +fillet(bracketBody, radius = extBendRadius, tags = [getNextAdjacentEdge(seg03)]) +fillet(bracketBody, radius = bendRadius, tags = [getNextAdjacentEdge(seg06)]) + +// Apply corner fillets +fillet( + bracketBody, + radius = filletRadius, + tags = [ + seg02, + getOppositeEdge(seg02), + seg05, + getOppositeEdge(seg05) + ], +) diff --git a/public/kcl-samples/car-wheel-assembly/brake-caliper.kcl b/public/kcl-samples/car-wheel-assembly/brake-caliper.kcl index bc7306ecf..15ce94f51 100644 --- a/public/kcl-samples/car-wheel-assembly/brake-caliper.kcl +++ b/public/kcl-samples/car-wheel-assembly/brake-caliper.kcl @@ -17,66 +17,42 @@ brakeCaliperSketch = startSketchOn(XY) 0, rotorTotalThickness + caliperTolerance - caliperInnerEdgeRadius ]) - |> tangentialArc({ - offset = 90, - radius = caliperInnerEdgeRadius - }, %) + |> tangentialArc(angle = 90, radius = caliperInnerEdgeRadius) |> line(end = [ -caliperPadLength + 2 * caliperInnerEdgeRadius, 0 ]) - |> tangentialArc({ - offset = -90, - radius = caliperInnerEdgeRadius - }, %) + |> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius) |> line(end = [ 0, caliperThickness - (caliperInnerEdgeRadius * 2) ]) - |> tangentialArc({ - offset = -90, - radius = caliperInnerEdgeRadius - }, %) + |> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius) |> line(end = [ caliperPadLength + caliperThickness - caliperOuterEdgeRadius - caliperInnerEdgeRadius, 0 ]) - |> tangentialArc({ - offset = -90, - radius = caliperOuterEdgeRadius - }, %) + |> tangentialArc(angle = -90, radius = caliperOuterEdgeRadius) |> line(end = [ 0, -2 * caliperTolerance - (2 * caliperThickness) - rotorTotalThickness + 2 * caliperOuterEdgeRadius ]) - |> tangentialArc({ - offset = -90, - radius = caliperOuterEdgeRadius - }, %) + |> tangentialArc(angle = -90, radius = caliperOuterEdgeRadius) |> line(end = [ -caliperPadLength - caliperThickness + caliperOuterEdgeRadius + caliperInnerEdgeRadius, 0 ]) - |> tangentialArc({ - offset = -90, - radius = caliperInnerEdgeRadius - }, %) + |> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius) |> line(end = [ 0, caliperThickness - (2 * caliperInnerEdgeRadius) ]) - |> tangentialArc({ - offset = -90, - radius = caliperInnerEdgeRadius - }, %) + |> tangentialArc(angle = -90, radius = caliperInnerEdgeRadius) |> line(end = [ caliperPadLength - (2 * caliperInnerEdgeRadius), 0 ]) - |> tangentialArc({ - offset = 90, - radius = caliperInnerEdgeRadius - }, %) + |> tangentialArc(angle = 90, radius = caliperInnerEdgeRadius) |> close() // Revolve the brake caliper sketch diff --git a/public/kcl-samples/car-wheel-assembly/car-rotor.kcl b/public/kcl-samples/car-wheel-assembly/car-rotor.kcl index 3a376691f..96b389f48 100644 --- a/public/kcl-samples/car-wheel-assembly/car-rotor.kcl +++ b/public/kcl-samples/car-wheel-assembly/car-rotor.kcl @@ -12,11 +12,11 @@ rotorSketch = startSketchOn(XZ) rotor = extrude(rotorSketch, length = rotorSinglePlateThickness) |> appearance(color = "#dbcd70", roughness = 90, metalness = 90) -rotorBumpSketch = startSketchOn(rotor, 'end') +rotorBumpSketch = startSketchOn(rotor, face = END) |> circle(center = [0, 0], radius = rotorInnerDiameter / 2) rotorBump = extrude(rotorBumpSketch, length = rotorInnerDiameterThickness) -lugHoles = startSketchOn(rotorBump, 'end') +lugHoles = startSketchOn(rotorBump, face = END) |> circle(center = [-lugSpacing / 2, 0], radius = 0.315) |> patternCircular2d( arcDegrees = 360, @@ -28,15 +28,15 @@ lugHoles = startSketchOn(rotorBump, 'end') |> appearance(color = "#dbcd70", roughness = 90, metalness = 90) // (update when boolean is available) -centerSpacer = startSketchOn(rotor, 'start') +centerSpacer = startSketchOn(rotor, face = START) |> circle(%, center = [0, 0], radius = .25) |> extrude(%, length = spacerLength) -secondaryRotorSketch = startSketchOn(centerSpacer, 'end') +secondaryRotorSketch = startSketchOn(centerSpacer, face = END) |> circle(center = [0, 0], radius = rotorDiameter / 2) secondRotor = extrude(secondaryRotorSketch, length = rotorSinglePlateThickness) -lugHoles2 = startSketchOn(secondRotor, 'end') +lugHoles2 = startSketchOn(secondRotor, face = END) |> circle(center = [-lugSpacing / 2, 0], radius = 0.315) |> patternCircular2d( arcDegrees = 360, @@ -46,7 +46,7 @@ lugHoles2 = startSketchOn(secondRotor, 'end') ) |> extrude(length = -rotorSinglePlateThickness) -spacerSketch = startSketchOn(rotor, 'start') +spacerSketch = startSketchOn(rotor, face = START) |> circle(center = [spacerPatternDiameter / 2, 0], radius = spacerDiameter) |> patternCircular2d( arcDegrees = 360, @@ -56,7 +56,7 @@ spacerSketch = startSketchOn(rotor, 'start') ) spacers = extrude(spacerSketch, length = spacerLength) -rotorSlottedSketch = startSketchOn(rotor, 'START') +rotorSlottedSketch = startSketchOn(rotor, face = START) |> startProfileAt([2.17, 2.56], %) |> xLine(length = 0.12) |> yLine(length = 2.56) @@ -71,7 +71,7 @@ rotorSlottedSketch = startSketchOn(rotor, 'START') ) rotorSlotted = extrude(rotorSlottedSketch, length = -rotorSinglePlateThickness / 2) -secondRotorSlottedSketch = startSketchOn(secondRotor, 'END') +secondRotorSlottedSketch = startSketchOn(secondRotor, face = END) |> startProfileAt([-2.17, 2.56], %) |> xLine(length = -0.12) |> yLine(length = 2.56) diff --git a/public/kcl-samples/car-wheel-assembly/car-tire.kcl b/public/kcl-samples/car-wheel-assembly/car-tire.kcl index 0f8017d1f..1c20b1ea9 100644 --- a/public/kcl-samples/car-wheel-assembly/car-tire.kcl +++ b/public/kcl-samples/car-wheel-assembly/car-tire.kcl @@ -17,7 +17,7 @@ tireSketch = startSketchOn(XY) ], tag = $edge1, ) - |> tangentialArc({ offset = -90, radius = bendRadius }, %) + |> tangentialArc(angle = -90, radius = bendRadius) |> line(endAbsolute = [ tireOuterDiameter / 2, tireDepth / 2 - tireTreadOffset @@ -36,7 +36,7 @@ tireSketch = startSketchOn(XY) tireOuterDiameter / 2, -tireDepth / 2 + bendRadius ]) - |> tangentialArc({ offset = -90, radius = bendRadius }, %) + |> tangentialArc(angle = -90, radius = bendRadius) |> line(endAbsolute = [tireInnerDiameter / 2, -tireDepth / 2], tag = $edge2) |> close() diff --git a/public/kcl-samples/car-wheel-assembly/car-wheel.kcl b/public/kcl-samples/car-wheel-assembly/car-wheel.kcl index 3719c91a1..fc9c34bb8 100644 --- a/public/kcl-samples/car-wheel-assembly/car-wheel.kcl +++ b/public/kcl-samples/car-wheel-assembly/car-wheel.kcl @@ -14,13 +14,13 @@ lugBase = startSketchOn(XZ) |> extrude(length = wheelWidth / 20) // Extend the wheel center and bore holes to accomidate the lug heads -lugExtrusion = startSketchOn(lugBase, 'END') +lugExtrusion = startSketchOn(lugBase, face = END) |> circle(center = [0, 0], radius = (lugSpacing + 1.5) / 2) |> hole(circle(center = [0, 0], radius = (lugSpacing - 1.5) / 2), %) |> extrude(length = wheelWidth / 10) // Create the circular pattern for the lugs -lugClearance = startSketchOn(lugExtrusion, 'END') +lugClearance = startSketchOn(lugExtrusion, face = END) |> circle(center = [lugSpacing / 2, 0], radius = 1.2 / 2) |> patternCircular2d( arcDegrees = 360, @@ -31,8 +31,8 @@ lugClearance = startSketchOn(lugExtrusion, 'END') |> extrude(length = -wheelWidth / 10) // Create the circular pattern for the lug holes -lugHoles = startSketchOn(lugBase, 'END') - |> circle(center = [lugSpacing / 2, 0], radius = 16 * mm() / 2) +lugHoles = startSketchOn(lugBase, face = END) + |> circle(center = [lugSpacing / 2, 0], radius = fromMm(16) / 2) |> patternCircular2d( arcDegrees = 360, center = [0, 0], @@ -75,12 +75,10 @@ wheelCenterOuter = startSketchOn(XY) fn spoke(spokeGap, spokeAngle, spokeThickness) { // Seperating the spoke base planes plane001 = { - plane = { - origin = [0.0, 0.0, spokeGap / 2], - xAxis = [1.0, 0.0, spokeAngle], - yAxis = [0.0, 1.0, 0.0], - zAxis = [0.0, 0.0, 1.0] - } + origin = [0.0, 0.0, spokeGap / 2], + xAxis = [1.0, 0.0, spokeAngle], + yAxis = [0.0, 1.0, 0.0], + zAxis = [0.0, 0.0, 1.0] } // Spoke cross sections diff --git a/public/kcl-samples/car-wheel-assembly/lug-nut.kcl b/public/kcl-samples/car-wheel-assembly/lug-nut.kcl index cd54c3e24..e424dfe2b 100644 --- a/public/kcl-samples/car-wheel-assembly/lug-nut.kcl +++ b/public/kcl-samples/car-wheel-assembly/lug-nut.kcl @@ -8,25 +8,23 @@ import lugDiameter, lugHeadLength, lugThreadDiameter, lugLength, lugThreadDepth, lugSpacing from "parameters.kcl" customPlane = { - plane = { - origin = { - x = lugSpacing / 2, - y = -30 * mm(), - z = 0 - }, - xAxis = { x = 1, y = 0, z = 0 }, - yAxis = { x = 0, y = -1, z = 0 }, - zAxis = { x = 0, y = 0, z = 1 } - } + origin = { + x = lugSpacing / 2, + y = fromMm(-30), + z = 0 + }, + xAxis = { x = 1, y = 0, z = 0 }, + yAxis = { x = 0, y = -1, z = 0 }, + zAxis = { x = 0, y = 0, z = 1 } } fn lug(plane, length, diameter) { lugSketch = startSketchOn(customPlane) |> startProfileAt([0 + diameter / 2, 0], %) - |> angledLineOfYLength({ angle = 70, length = lugHeadLength }, %) + |> angledLine(angle = 70, lengthY = lugHeadLength) |> xLine(endAbsolute = lugDiameter / 2) |> yLine(endAbsolute = lugLength) - |> tangentialArc({ offset = 90, radius = 3 * mm() }, %) + |> tangentialArc(angle = 90, radius = fromMm(3)) |> xLine(endAbsolute = 0 + .001, tag = $c1) |> yLine(endAbsolute = lugThreadDepth) |> xLine(endAbsolute = lugThreadDiameter) diff --git a/public/kcl-samples/car-wheel-assembly/parameters.kcl b/public/kcl-samples/car-wheel-assembly/parameters.kcl index 8a4ecf462..d1d300cbf 100644 --- a/public/kcl-samples/car-wheel-assembly/parameters.kcl +++ b/public/kcl-samples/car-wheel-assembly/parameters.kcl @@ -5,8 +5,8 @@ // Car wheel export lugCount = 5 -export lugSpacing = 114.3 * mm() -export offset = -35 * mm() +export lugSpacing = fromMm(114.3) +export offset = fromMm(-35) export backSpacing = 6.38 export wheelWidth = 9.5 export wheelDiameter = 19 @@ -16,11 +16,11 @@ export spokeAngle = 0.02 export spokeThickness = 0.95 // Lug Nut -export lugDiameter = 24 * mm() +export lugDiameter = fromMm(24) export lugHeadLength = lugDiameter * .5 export lugThreadDiameter = lugDiameter / 2 * .85 -export lugLength = 30 * mm() -export lugThreadDepth = lugLength - (12.7 * mm()) +export lugLength = fromMm(30) +export lugThreadDepth = lugLength - fromMm(12.7) // Car rotor export rotorDiameter = 12 diff --git a/public/kcl-samples/color-cube/main.kcl b/public/kcl-samples/color-cube/main.kcl index 92445bb70..a05d71de1 100644 --- a/public/kcl-samples/color-cube/main.kcl +++ b/public/kcl-samples/color-cube/main.kcl @@ -23,18 +23,12 @@ tealPlane = offsetPlane(YZ, offset = -halfSize) fn sketchRectangle(profile, color) { return profile |> startProfileAt([-halfSize, halfSize], %) - |> angledLine([0, size], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - size - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = size, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = size, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() - |> extrude(%, length = extrudeLength) + |> extrude(length = extrudeLength) |> appearance(color = color, metalness = metalConstant, roughness = roughnessConstant) } diff --git a/public/kcl-samples/cycloidal-gear/main.kcl b/public/kcl-samples/cycloidal-gear/main.kcl index 241ab23f3..7644e75d5 100644 --- a/public/kcl-samples/cycloidal-gear/main.kcl +++ b/public/kcl-samples/cycloidal-gear/main.kcl @@ -19,17 +19,11 @@ fn cycloidalGear(gearPitch, gearHeight, holeDiameter, helixAngle) { angleEnd = -90 + helixAngleP, radius = gearPitch }, %) - |> tangentialArc({ - radius = gearPitch * 1.67, - offset = 60 - }, %) - |> tangentialArc({ radius = gearPitch, offset = -180 }, %) - |> tangentialArc({ - radius = gearPitch * 1.67, - offset = 60 - }, %) - |> tangentialArc({ radius = gearPitch, offset = -180 }, %) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(radius = gearPitch * 1.67, angle = 60) + |> tangentialArc(radius = gearPitch, angle = -180) + |> tangentialArc(radius = gearPitch * 1.67, angle = 60) + |> tangentialArc(radius = gearPitch, angle = -180) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close(%) |> hole(circle(center = [0, 0], radius = holeDiameter / 2), %) return gearProfile diff --git a/public/kcl-samples/dodecahedron/main.kcl b/public/kcl-samples/dodecahedron/main.kcl index 8986e70a3..44522172e 100644 --- a/public/kcl-samples/dodecahedron/main.kcl +++ b/public/kcl-samples/dodecahedron/main.kcl @@ -26,16 +26,14 @@ pentR = edgeL / 2 / sin(toRadians(36)) // Define a plane for the bottom angled face plane = { - plane = { - origin = [ - -inscR * cos(toRadians(toDegrees(dihedral) - 90)), - 0, - inscR - (inscR * sin(toRadians(toDegrees(dihedral) - 90))) - ], - xAxis = [cos(dihedral), 0.0, sin(dihedral)], - yAxis = [0, 1, 0], - zAxis = [sin(dihedral), 0, -cos(dihedral)] - } + origin = [ + -inscR * cos(toRadians(toDegrees(dihedral) - 90)), + 0, + inscR - (inscR * sin(toRadians(toDegrees(dihedral) - 90))) + ], + xAxis = [cos(dihedral), 0.0, sin(dihedral)], + yAxis = [0, 1, 0], + zAxis = [sin(dihedral), 0, -cos(dihedral)] } // Create a regular pentagon inscribed in a circle of radius pentR diff --git a/public/kcl-samples/dual-basin-utility-sink/main.kcl b/public/kcl-samples/dual-basin-utility-sink/main.kcl index ab8f15daf..4048cea9e 100644 --- a/public/kcl-samples/dual-basin-utility-sink/main.kcl +++ b/public/kcl-samples/dual-basin-utility-sink/main.kcl @@ -117,7 +117,7 @@ sinkOffsetFront = 40 sinkOffsetLeft = 350 sinkSpacing = tableWidth - sinkWidth - (sinkOffsetLeft * 2) -sinkPlaneOutside = startSketchOn(tableTopBody, 'START') +sinkPlaneOutside = startSketchOn(tableTopBody, face = START) sinkBodyOutside = startProfileAt([-sinkOffsetLeft, sinkOffsetFront], sinkPlaneOutside) |> yLine(length = sinkLength) |> xLine(length = -sinkWidth) @@ -127,7 +127,7 @@ sinkBodyOutside = startProfileAt([-sinkOffsetLeft, sinkOffsetFront], sinkPlaneOu |> patternLinear2d(axis = [-1, 0], instances = sinkCount, distance = sinkSpacing) |> extrude(length = sinkDepth) -sinkPlaneInside = startSketchOn(tableTopBody, 'END') +sinkPlaneInside = startSketchOn(tableTopBody, face = END) sinkBodyInside = startProfileAt([ sinkOffsetLeft + metalThickness, sinkOffsetFront + metalThickness @@ -184,15 +184,15 @@ handlePlane = startSketchOn(offsetPlane(XY, offset = handleHeightAboveTheFloor)) handleProfilePath = startProfileAt([0 + handleOffset, 0], handlePlane) |> yLine(length = -handleLengthSegmentA) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ handleFillet + handleOffset, -handleDepth - ], %) + ]) |> xLine(length = handleLengthSegmentB) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ handleOffset + handleWidth, -handleLengthSegmentA - ], %) + ]) |> yLine(length = handleLengthSegmentA) handleSectionPlane = startSketchOn(XZ) handleProfileSection = circle( diff --git a/public/kcl-samples/enclosure/main.kcl b/public/kcl-samples/enclosure/main.kcl index 125d80b28..e24fe76cb 100644 --- a/public/kcl-samples/enclosure/main.kcl +++ b/public/kcl-samples/enclosure/main.kcl @@ -14,15 +14,9 @@ holeDia = 4 // Model a box with base enclosure dimensions sketch001 = startSketchOn(XY) |> startProfileAt([0, 0], %) - |> angledLine([0, width], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) + 90, - length - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = width, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = length, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001) |> close() extrude001 = extrude(sketch001, length = height) @@ -37,18 +31,16 @@ extrude001 = extrude(sketch001, length = height) ) // Apply a shell to the enclosure base to create the internal storage - |> shell(faces = ["end"], thickness = wallThickness) + |> shell(faces = [END], thickness = wallThickness) // Define a function to create the internal structure to secure a fastener at each corner fn function001(originStart) { // Create a plane to sketch on shell interior plane001 = { - plane = { - origin = [0.0, 0.0, wallThickness], - xAxis = [1.0, 0.0, 0.0], - yAxis = [0.0, 1.0, 0.0], - zAxis = [0.0, 0.0, 1.0] - } + origin = [0.0, 0.0, wallThickness], + xAxis = [1.0, 0.0, 0.0], + yAxis = [0.0, 1.0, 0.0], + zAxis = [0.0, 0.0, 1.0] } // Create a pillar with a fasterner hole at the center @@ -81,15 +73,9 @@ function001([ // Define lid position and outer surface sketch003 = startSketchOn(XY) |> startProfileAt([width * 1.2, 0], %) - |> angledLine([0, width], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA001) + 90, - length - ], %, $rectangleSegmentB002) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC002) + |> angledLine(angle = 0, length = width, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = length, tag = $rectangleSegmentB002) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC002) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD002) |> close() |> hole(circle( @@ -132,20 +118,14 @@ extrude003 = extrude(sketch003, length = wallThickness) ) // Define lid inner and sealing surfaces -sketch004 = startSketchOn(extrude003, 'END') +sketch004 = startSketchOn(extrude003, face = END) |> startProfileAt([ width * 1.2 + wallThickness, wallThickness ], %) - |> angledLine([0, width - (2 * wallThickness)], %, $rectangleSegmentA003) - |> angledLine([ - segAng(rectangleSegmentA003) + 90, - length - (2 * wallThickness) - ], %, $rectangleSegmentB003) - |> angledLine([ - segAng(rectangleSegmentA003), - -segLen(rectangleSegmentA003) - ], %, $rectangleSegmentC003) + |> angledLine(angle = 0, length = width - (2 * wallThickness), tag = $rectangleSegmentA003) + |> angledLine(angle = segAng(rectangleSegmentA003) + 90, length = length - (2 * wallThickness), tag = $rectangleSegmentB003) + |> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003), tag = $rectangleSegmentC003) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD003) |> close() |> hole(circle( diff --git a/public/kcl-samples/exhaust-manifold/main.kcl b/public/kcl-samples/exhaust-manifold/main.kcl index f7222bf7b..c1baec09e 100644 --- a/public/kcl-samples/exhaust-manifold/main.kcl +++ b/public/kcl-samples/exhaust-manifold/main.kcl @@ -17,32 +17,24 @@ fn primaryTube(n, angle001, length001, length002, length003) { // Define a plane for each sweep path defined by an angle sweepPlane = { - plane = { - origin = [pos001, 0.0, 0], - xAxis = [ - sin(toRadians(-angle001)), - cos(toRadians(-angle001)), - 0.0 - ], - yAxis = [0.0, 0.0, 1.0], - zAxis = [1.0, 0.0, 0.0] - } + origin = [pos001, 0.0, 0], + xAxis = [ + sin(toRadians(-angle001)), + cos(toRadians(-angle001)), + 0.0 + ], + yAxis = [0.0, 0.0, 1.0], + zAxis = [1.0, 0.0, 0.0] } // Draw a path for each sweep sweepPath = startSketchOn(sweepPlane) |> startProfileAt([0, plateHeight], %) |> line(end = [0, length001]) - |> tangentialArc({ offset = -80, radius = bendRadius }, %, $arc01) - |> angledLine({ - angle = tangentToEnd(arc01), - length = length002 - }, %) - |> tangentialArc({ offset = 85, radius = bendRadius }, %, $arc02) - |> angledLine({ - angle = tangentToEnd(arc02), - length = length003 - }, %) + |> tangentialArc(angle = -80, radius = bendRadius, tag = $arc01) + |> angledLine(angle = tangentToEnd(arc01), length = length002) + |> tangentialArc(angle = 85, radius = bendRadius, tag = $arc02) + |> angledLine(angle = tangentToEnd(arc02), length = length003) // Create the cross section of each tube and sweep them sweepProfile = startSketchOn(XY) @@ -63,21 +55,21 @@ primaryTube(3, 25.2, 5, 5, 3) flangeSketch = startSketchOn(XY) |> startProfileAt([3 + 1.3, -1.25], %) |> xLine(length = -2.6, tag = $seg01) - |> tangentialArc({ radius = .3, offset = -40 }, %) - |> tangentialArc({ radius = .9, offset = 80 }, %) - |> tangentialArc({ radius = .3, offset = -40 }, %) + |> tangentialArc(radius = .3, angle = -40) + |> tangentialArc(radius = .9, angle = 80) + |> tangentialArc(radius = .3, angle = -40) |> xLine(length = -1.4, tag = $seg03) |> yLine(length = segLen(seg01), tag = $seg04) |> xLine(length = 3.1, tag = $seg05) - |> tangentialArc({ radius = .3, offset = -40 }, %) - |> tangentialArc({ radius = 1.5, offset = 80 }, %) - |> tangentialArc({ radius = .3, offset = -40 }, %) + |> tangentialArc(radius = .3, angle = -40) + |> tangentialArc(radius = 1.5, angle = 80) + |> tangentialArc(radius = .3, angle = -40) |> xLine(length = segLen(seg05), tag = $seg07) |> yLine(endAbsolute = profileStartY(%), tag = $seg08) |> xLine(length = -segLen(seg03), tag = $seg09) - |> tangentialArc({ radius = .3, offset = -40 }, %) - |> tangentialArc({ radius = .9, offset = 80 }, %) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(radius = .3, angle = -40) + |> tangentialArc(radius = .9, angle = 80) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() // Create openings in the flange to accommodate each tube diff --git a/public/kcl-samples/flange/main.kcl b/public/kcl-samples/flange/main.kcl index ea52daf78..a6880d7a6 100644 --- a/public/kcl-samples/flange/main.kcl +++ b/public/kcl-samples/flange/main.kcl @@ -37,16 +37,16 @@ flangeBase = startSketchOn(XY) |> extrude(length = baseThickness) // Create the extrusion on the top of the flange base -topExtrusion = startSketchOn(flangeBase, 'end') +topExtrusion = startSketchOn(flangeBase, face = END) |> circle(center = [0, 0], radius = topTotalDiameter / 2) |> extrude(length = topTotalThickness) // Create the extrusion on the bottom of the flange base -bottomExtrusion = startSketchOn(flangeBase, 'start') +bottomExtrusion = startSketchOn(flangeBase, face = START) |> circle(center = [0, 0], radius = bottomTotalDiameter / 2) |> extrude(length = bottomThickness) // Cut a hole through the entire body -pipeHole = startSketchOn(topExtrusion, 'end') +pipeHole = startSketchOn(topExtrusion, face = END) |> circle(center = [0, 0], radius = pipeDia / 2) |> extrude(%, length = -(topTotalThickness + baseThickness + bottomThickness)) diff --git a/public/kcl-samples/focusrite-scarlett-mounting-bracket/main.kcl b/public/kcl-samples/focusrite-scarlett-mounting-bracket/main.kcl index 7f4336907..9b6a91e11 100644 --- a/public/kcl-samples/focusrite-scarlett-mounting-bracket/main.kcl +++ b/public/kcl-samples/focusrite-scarlett-mounting-bracket/main.kcl @@ -17,7 +17,7 @@ tabThk = 4 // Define a rectangular shape func fn rectShape(pos, w, l) { - rr = startSketchOn('xy') + rr = startSketchOn(XY) |> startProfileAt([pos[0] - (w / 2), pos[1] - (l / 2)], %) |> line(endAbsolute = [pos[0] + w / 2, pos[1] - (l / 2)], tag = $edge01) |> line(endAbsolute = [pos[0] + w / 2, pos[1] + l / 2], tag = $edge02) @@ -28,12 +28,10 @@ fn rectShape(pos, w, l) { // Define the bracket plane bracketPlane = { - plane = { - origin = { x = 0, y = length / 2 + thk, z = 0 }, - xAxis = { x = 1, y = 0, z = 0 }, - yAxis = { x = 0, y = 0, z = 1 }, - zAxis = { x = 0, y = -1, z = 0 } - } + origin = { x = 0, y = length / 2 + thk, z = 0 }, + xAxis = { x = 1, y = 0, z = 0 }, + yAxis = { x = 0, y = 0, z = 1 }, + zAxis = { x = 0, y = -1, z = 0 } } // Build the bracket sketch around the body @@ -67,12 +65,10 @@ bracketBody = bs // Define the tab plane tabPlane = { - plane = { - origin = { x = 0, y = 0, z = depth + thk }, - xAxis = { x = 1, y = 0, z = 0 }, - yAxis = { x = 0, y = 1, z = 0 }, - zAxis = { x = 0, y = 0, z = 1 } - } + origin = { x = 0, y = 0, z = depth + thk }, + xAxis = { x = 1, y = 0, z = 0 }, + yAxis = { x = 0, y = 1, z = 0 }, + zAxis = { x = 0, y = 0, z = 1 } } // Build the tabs of the mounting bracket (right side) @@ -125,12 +121,10 @@ tabsL = startSketchOn(tabPlane) // Define a plane for retention bumps retPlane = { - plane = { - origin = { x = -width / 2 + 20, y = 0, z = 0 }, - xAxis = { x = 0, y = 1, z = 0 }, - yAxis = { x = 0, y = 0, z = 1 }, - zAxis = { x = 1, y = 0, z = 0 } - } + origin = { x = -width / 2 + 20, y = 0, z = 0 }, + xAxis = { x = 0, y = 1, z = 0 }, + yAxis = { x = 0, y = 0, z = 1 }, + zAxis = { x = 1, y = 0, z = 0 } } // Build the retention bump in the front diff --git a/public/kcl-samples/food-service-spatula/main.kcl b/public/kcl-samples/food-service-spatula/main.kcl index c135ec052..5f71a98b0 100644 --- a/public/kcl-samples/food-service-spatula/main.kcl +++ b/public/kcl-samples/food-service-spatula/main.kcl @@ -35,19 +35,19 @@ fn slot(sketch1, start, end, width) { xstart = width / 2 * cos(toRadians(angle - 90)) + start[0] ystart = width / 2 * sin(toRadians(angle - 90)) + start[1] slotSketch = startProfileAt([xstart, ystart], sketch1) - |> angledLine({ angle = angle, length = dist }, %, $line000) - |> tangentialArc({ radius = width / 2, offset = 180 }, %, $arc000) - |> angledLine({ angle = angle, length = -dist }, %, $line001) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %, $arc001) + |> angledLine(angle = angle, length = dist) + |> tangentialArc(radius = width / 2, angle = 180) + |> angledLine(angle = angle, length = -dist) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() return slotSketch } -// Create a sketch on the "XY" plane -sketch000 = startSketchOn(XY) +// Create a sketch on the "XY" plane for the flipper +flipperSketch = startSketchOn(XY) // Create a profile of the flipper -flipperProfile = startProfileAt([-flipperLength, -32.0], sketch000) +flipperProfile = startProfileAt([-flipperLength, -32.0], flipperSketch) |> line(end = [flipperLength, 2.0]) |> yLine(length = 60.0, tag = $backEdge) |> line(end = [-flipperLength, 2.0]) @@ -59,13 +59,13 @@ flipperProfile = startProfileAt([-flipperLength, -32.0], sketch000) |> close() // Create a profile of the middle -slotProfile000 = slot(sketch000, [-25, 0], [-55, 0], flipperSlotWidth) +slotProfile000 = slot(flipperSketch, [-25, 0], [-55, 0], flipperSlotWidth) // Create a profile of the top slot -slotProfile001 = slot(sketch000, [-25, 18], [-55, 19], flipperSlotWidth) +slotProfile001 = slot(flipperSketch, [-25, 18], [-55, 19], flipperSlotWidth) // Create a profile of the bottom slot -slotProfile002 = slot(sketch000, [-25, -18], [-55, -19], flipperSlotWidth) +slotProfile002 = slot(flipperSketch, [-25, -18], [-55, -19], flipperSlotWidth) // Create a profile with slots for the spatula spatulaProfile = flipperProfile @@ -87,10 +87,10 @@ fillet( ) // Create a sketch on the "XZ" plane offset by half the thickness -sketch001 = startSketchOn(offsetPlane(XZ, offset = -handleWidth / 2)) +handleSketch = startSketchOn(offsetPlane(XZ, offset = -handleWidth / 2)) // Create a profile of the spatula handle -handleProfile = startProfileAt([0.0, flipperThickness], sketch001) +handleProfile = startProfileAt([0.0, flipperThickness], handleSketch) |> line(end = [31.819805, 31.819805], tag = $handleBottomEdge) |> line(end = [140.953893, 51.303021]) |> line(end = [-1.710101, 4.698463]) @@ -99,7 +99,7 @@ handleProfile = startProfileAt([0.0, flipperThickness], sketch001) |> xLine(length = 7.071068) |> close() -// Create an extrusion extrude001 +// Create an extrusion handle = extrude(handleProfile, length = handleWidth) // Fillet the bend of the spatula handle @@ -114,19 +114,17 @@ fillet( // Define a plane which is at the end of the handle handlePlane = { - plane = { - origin = [208.593833, 0.0, 75.921946], - xAxis = [0.342020, -0.0, -0.939693], - yAxis = [0.0, 1.0, 0.0], - zAxis = [0.939693, -0.0, 0.342020] - } + origin = [208.593833, 0.0, 75.921946], + xAxis = [0.342020, -0.0, -0.939693], + yAxis = [0.0, 1.0, 0.0], + zAxis = [0.939693, -0.0, 0.342020] } // Create a sketch on the handle plane -sketch002 = startSketchOn(handlePlane) +gripSketch = startSketchOn(handlePlane) // Create a profile of the grip -gripProfile = startProfileAt([-26.806746, -10.0], sketch002) +gripProfile = startProfileAt([-26.806746, -10.0], gripSketch) |> xLine(length = gripWidth - (2 * gripFilletRadius)) |> arc({ angleStart = -90.0, @@ -157,10 +155,10 @@ gripProfile = startProfileAt([-26.806746, -10.0], sketch002) grip = extrude(gripProfile, length = -gripLength) // Create a sketch on the grip for the hole -sketch003 = startSketchOn(grip, gripEdgeTop) +holeSketch = startSketchOn(grip, face = gripEdgeTop) // Create a profile for the grip hole -gripHoleProfile = slot(sketch003, [0, 200], [0, 210], gripSlotWidth) +gripHoleProfile = slot(holeSketch, [0, 200], [0, 210], gripSlotWidth) // Cut a hole in the grip extrude(gripHoleProfile, length = -gripWidth - 20) diff --git a/public/kcl-samples/french-press/main.kcl b/public/kcl-samples/french-press/main.kcl index d4d290f9a..7fcfbb950 100644 --- a/public/kcl-samples/french-press/main.kcl +++ b/public/kcl-samples/french-press/main.kcl @@ -12,27 +12,19 @@ handleThickness = 0.65 // Upper ring of the metal structure sketch001 = startSketchOn(XZ) |> startProfileAt([carafeDiameter / 2, 5.7], %) - |> angledLine([0, 0.1], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - -0.75 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = 0.1, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = -0.75, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> revolve(angle = 360, axis = Y) // Create an angled plane to sketch the supports plane001 = { - plane = { - origin = [-0.26, 0.26, 0.0], - xAxis = [1, 1, 0.0], - yAxis = [0.0, 0.0, 1.0], - zAxis = [1.0, 0.0, 0.0] - } + origin = [-0.26, 0.26, 0.0], + xAxis = [1, 1, 0.0], + yAxis = [0.0, 0.0, 1.0], + zAxis = [1.0, 0.0, 0.0] } // Cross section of the metal supports @@ -45,13 +37,13 @@ sketch002 = startSketchOn(plane001) angleEnd = 205, radius = 0.3 }, %) - |> angledLine({ angle = -60, length = 0.6 }, %, $edge2) + |> angledLine(angle = -60, length = 0.6, tag = $edge2) |> arc({ angleStart = 30, angleEnd = -120, radius = 0.6 }, %) - |> angledLineToY({ angle = 150, to = -0.2 }, %, $edge3) + |> angledLine(angle = 150, endAbsoluteY = -0.2, tag = $edge3) |> arc({ angleStart = 60, angleEnd = 90, @@ -65,19 +57,13 @@ sketch002 = startSketchOn(plane001) angleEnd = 60, radius = 0.6 }, %) - |> angledLine({ - angle = 150, - length = -segLen(edge3) + 0.035 - }, %, $edge5) + |> angledLine(angle = 150, length = -segLen(edge3) + 0.035, tag = $edge5) |> arc({ angleStart = -120, angleEnd = 30, radius = 0.5 }, %) - |> angledLine({ - angle = -60, - length = -segLen(edge2) + 0.035 - }, %, $edge6) + |> angledLine(angle = -60, length = -segLen(edge2) + 0.035, tag = $edge6) |> arc({ angleStart = 205, angleEnd = 180, @@ -100,7 +86,7 @@ sketch003 = startSketchOn(offsetPlane(XY, offset = 1)) extrude001 = extrude(sketch003, length = 0.050) -sketch004 = startSketchOn(extrude001, 'END') +sketch004 = startSketchOn(extrude001, face = END) |> startProfileAt([0.3, 0.17], %) |> yLine(length = 1.2) |> arc({ @@ -123,12 +109,9 @@ extrude002 = extrude(sketch004, length = -0.050) sketch005 = startSketchOn(XZ) |> startProfileAt([0.15, 1.11], %) |> xLine(endAbsolute = carafeDiameter / 2 - 0.2) - |> angledLineToX({ - angle = 30, - to = carafeDiameter / 2 - 0.07 - }, %, $seg1) - |> angledLine({ angle = -60, length = 0.050 }, %) - |> angledLine({ angle = 30, length = -segLen(seg1) }, %) + |> angledLine(angle = 30, endAbsoluteX = carafeDiameter / 2 - 0.07, tag = $seg1) + |> angledLine(angle = -60, length = 0.050) + |> angledLine(angle = 30, length = -segLen(seg1)) |> xLine(endAbsolute = 0.15) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -138,11 +121,11 @@ sketch005 = startSketchOn(XZ) sketch006 = startSketchOn(XZ) |> startProfileAt([0.1, 1], %) |> line(end = [0.1, 0]) - |> angledLineToX({ angle = 10, to = 0.05 }, %) + |> angledLine(angle = 10, endAbsoluteX = 0.05) |> yLine(length = 10) |> line(end = [0.6, 0]) |> yLine(length = -.05) - |> tangentialArc({ radius = 0.6, offset = -90 }, %) + |> tangentialArc(radius = 0.6, angle = -90) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> revolve(axis = Y) @@ -155,7 +138,7 @@ sketch007 = startSketchOn(offsetPlane(XY, offset = 1.12)) extrude003 = extrude(sketch007, length = 0.050) // Pattern holes in the spiral plate -sketch008 = startSketchOn(extrude003, 'END') +sketch008 = startSketchOn(extrude003, face = END) |> circle(center = [1.4, 0], radius = .3) |> patternCircular2d( center = [0, 0], @@ -167,7 +150,7 @@ sketch008 = startSketchOn(extrude003, 'END') extrude004 = extrude(sketch008, length = -0.050) // Pattern holes in the spiral plate -sketch009 = startSketchOn(extrude003, 'END') +sketch009 = startSketchOn(extrude003, face = END) |> circle(center = [0.6, 0], radius = .2) |> patternCircular2d( center = [0, 0], @@ -184,7 +167,7 @@ sketch010 = startSketchOn(XY) // Perform a shell operation to hollow the carafe body with the top face removed extrude006 = extrude(sketch010, length = carafeHeight) - |> shell(faces = ["end"], thickness = .07) + |> shell(faces = [END], thickness = .07) // Draw and revolve the lid sketch011 = startSketchOn(XZ) @@ -207,15 +190,15 @@ sketch011 = startSketchOn(XZ) sketch012 = startSketchOn(offsetPlane(XZ, offset = handleThickness / 2)) |> startProfileAt([2.3, 6.4], %) |> line(end = [0.56, 0]) - |> tangentialArcTo([4.1, 5.26], %) - |> tangentialArcTo([4.17, 1.6], %) - |> tangentialArcTo([3.13, 0.61], %) + |> tangentialArc(endAbsolute = [4.1, 5.26]) + |> tangentialArc(endAbsolute = [4.17, 1.6]) + |> tangentialArc(endAbsolute = [3.13, 0.61]) |> line(end = [-1.09, 0]) |> line(end = [0, 0.43]) |> line(end = [0.99, -0.02]) - |> tangentialArcTo([3.63, 1.6], %) - |> tangentialArcTo([3.56, 5.15], %) - |> tangentialArcTo([2.72, 5.88], %) + |> tangentialArc(endAbsolute = [3.63, 1.6]) + |> tangentialArc(endAbsolute = [3.56, 5.15]) + |> tangentialArc(endAbsolute = [2.72, 5.88]) |> line(end = [-0.4, 0]) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() diff --git a/public/kcl-samples/gear-rack/main.kcl b/public/kcl-samples/gear-rack/main.kcl index b87478778..972e943ff 100644 --- a/public/kcl-samples/gear-rack/main.kcl +++ b/public/kcl-samples/gear-rack/main.kcl @@ -24,13 +24,13 @@ rackBody = startSketchOn(XY) fn tooth() { toothSketch = startSketchOn(XY) |> startProfileAt([-length / 2 + 0.567672, minHeight], %) - |> tangentialArcToRelative([0.157636, 0.110378], %) + |> tangentialArc(end = [0.157636, 0.110378]) |> line(end = [0.329118, 0.904244]) - |> tangentialArcToRelative([0.157636, 0.110378], %) + |> tangentialArc(end = [0.157636, 0.110378]) |> line(end = [0.186505, 0]) - |> tangentialArcToRelative([0.157636, -0.110378], %) + |> tangentialArc(end = [0.157636, -0.110378]) |> line(end = [0.329118, -0.904244]) - |> tangentialArcToRelative([0.157636, -0.110378], %) + |> tangentialArc(end = [0.157636, -0.110378]) |> close() |> extrude(length = width) return toothSketch @@ -44,7 +44,7 @@ teeth = tooth() endCapTooth = startSketchOn(XY) |> startProfileAt([-length / 2, 11.849525], %) |> line(end = [0.314524, -0.864147]) - |> tangentialArcToRelative([0.157636, -0.110378], %) + |> tangentialArc(end = [0.157636, -0.110378]) |> line(endAbsolute = [-length / 2, minHeight]) |> close() |> extrude(length = width) @@ -53,7 +53,7 @@ endCapTooth = startSketchOn(XY) endCapTooth2 = startSketchOn(XY) |> startProfileAt([length / 2, 11.849525], %) |> line(end = [-0.314524, -0.864147]) - |> tangentialArcToRelative([-0.157636, -0.110378], %) + |> tangentialArc(end = [-0.157636, -0.110378]) |> line(endAbsolute = [length / 2, minHeight]) |> close() |> extrude(length = width) diff --git a/public/kcl-samples/gear/main.kcl b/public/kcl-samples/gear/main.kcl index e6cc64902..d61366e2a 100644 --- a/public/kcl-samples/gear/main.kcl +++ b/public/kcl-samples/gear/main.kcl @@ -87,7 +87,7 @@ holeRadius = 1 startAngle = asin(keywayWidth / 2 / holeRadius) // Sketch the keyway and center hole and extrude -keyWay = startSketchOn(body, 'END') +keyWay = startSketchOn(body, face = END) |> startProfileAt([ holeRadius * cos(startAngle), holeRadius * sin(startAngle) @@ -97,11 +97,11 @@ keyWay = startSketchOn(body, 'END') |> xLine(length = -keywayDepth) |> arc({ angleEnd = 180, - angleStart = -1 * 180 / PI * startAngle + 360, + angleStart = -1 * toDegrees(startAngle) + 360, radius = holeRadius }, %) |> arc({ - angleEnd = 180 / PI * startAngle, + angleEnd = toDegrees(startAngle), angleStart = 180, radius = holeRadius }, %) diff --git a/public/kcl-samples/gridfinity-baseplate-magnets/main.kcl b/public/kcl-samples/gridfinity-baseplate-magnets/main.kcl index 8debb8dfe..488531d6d 100644 --- a/public/kcl-samples/gridfinity-baseplate-magnets/main.kcl +++ b/public/kcl-samples/gridfinity-baseplate-magnets/main.kcl @@ -26,9 +26,9 @@ fn face(plane) { faceSketch = startSketchOn(plane) |> startProfileAt([0, 0], %) |> yLine(length = height) - |> angledLineOfYLength({ angle = -45, length = thirdStep }, %) + |> angledLine(angle = -45, lengthY = thirdStep) |> yLine(length = -secondStep) - |> angledLineOfYLength({ angle = -45, length = firstStep }, %) + |> angledLine(angle = -45, lengthY = firstStep) |> close() return faceSketch } diff --git a/public/kcl-samples/gridfinity-baseplate/main.kcl b/public/kcl-samples/gridfinity-baseplate/main.kcl index 56054aee5..4f03353aa 100644 --- a/public/kcl-samples/gridfinity-baseplate/main.kcl +++ b/public/kcl-samples/gridfinity-baseplate/main.kcl @@ -23,9 +23,9 @@ fn face(plane) { faceSketch = startSketchOn(plane) |> startProfileAt([0, 0], %) |> yLine(length = height) - |> angledLineOfYLength({ angle = -45, length = thirdStep }, %) + |> angledLine(angle = -45, lengthY = thirdStep) |> yLine(length = -secondStep) - |> angledLineOfYLength({ angle = -45, length = firstStep }, %) + |> angledLine(angle = -45, lengthY = firstStep) |> close() return faceSketch } diff --git a/public/kcl-samples/gridfinity-bins-stacking-lip/main.kcl b/public/kcl-samples/gridfinity-bins-stacking-lip/main.kcl index ef51b3dfc..b8aea8f2d 100644 --- a/public/kcl-samples/gridfinity-bins-stacking-lip/main.kcl +++ b/public/kcl-samples/gridfinity-bins-stacking-lip/main.kcl @@ -39,9 +39,9 @@ fn face(plane) { |> startProfileAt([binBaseLength + binTol, 0], %) |> yLine(length = height) |> xLine(length = -binBaseLength) - |> angledLineOfYLength({ angle = -45, length = thirdStep }, %) + |> angledLine(angle = -45, lengthY = thirdStep) |> yLine(length = -secondStep) - |> angledLineOfYLength({ angle = -45, length = firstStep }, %) + |> angledLine(angle = -45, lengthY = firstStep) |> close() return faceSketch } @@ -109,7 +109,7 @@ singleBinFill = startSketchOn(XY) ], ) -magCutout000 = startSketchOn(singleBinFill, "start") +magCutout000 = startSketchOn(singleBinFill, face = START) |> circle( center = [ -magOffset - binBaseLength - binTol, @@ -171,7 +171,7 @@ binTop = startSketchOn(offsetPlane(XY, offset = height)) getPreviousAdjacentEdge(line012) ], ) - |> shell(faces = ["end"], thickness = binThk) + |> shell(faces = [END], thickness = binThk) // Define a function which builds the profile of the baseplate bin fn lipFace(plane) { @@ -184,53 +184,47 @@ fn lipFace(plane) { angleEnd = 45.0, radius = 0.500000 }, %, $arc000) - // |> angledLineOfYLength({ angle: -45, length: lipStep5 }, %) + // |> angledLine(angle = -45, lengthY = lipStep5 ) |> line(end = [1.046447, -1.046447], tag = $line001) |> yLine(length = -lipStep4) - |> angledLineOfYLength({ angle = -45, length = lipStep3 }, %) + |> angledLine(angle = -45, lengthY = lipStep3) |> yLine(length = -lipStep2) - |> angledLineOfYLength({ angle = -135, length = lipStep1 }, %) + |> angledLine(angle = -135, lengthY = lipStep1) |> close() return faceSketch } plane000 = { - plane = { - origin = [ - cornerRadius, - 0.0, - height + binHeight * countBinHeight - ], - xAxis = [0.0, 1.0, 0.0], - yAxis = [0.0, 0.0, 1.0], - zAxis = [1.0, 0.0, 0.0] - } + origin = [ + cornerRadius, + 0.0, + height + binHeight * countBinHeight + ], + xAxis = [0.0, 1.0, 0.0], + yAxis = [0.0, 0.0, 1.0], + zAxis = [1.0, 0.0, 0.0] } plane001 = { - plane = { - origin = [ - 0.0, - cornerRadius, - height + binHeight * countBinHeight - ], - xAxis = [1.0, 0.0, 0.0], - yAxis = [0.0, 0.0, 1.0], - zAxis = [0.0, 1.0, 0.0] - } + origin = [ + 0.0, + cornerRadius, + height + binHeight * countBinHeight + ], + xAxis = [1.0, 0.0, 0.0], + yAxis = [0.0, 0.0, 1.0], + zAxis = [0.0, 1.0, 0.0] } plane002 = { - plane = { - origin = [ - countBinWidth * (binLength + 2 * binTol) - cornerRadius, - 0.0, - height + binHeight * countBinHeight - ], - xAxis = [0.0, 1.0, 0.0], - yAxis = [0.0, 0.0, 1.0], - zAxis = [1.0, 0.0, 0.0] - } + origin = [ + countBinWidth * (binLength + 2 * binTol) - cornerRadius, + 0.0, + height + binHeight * countBinHeight + ], + xAxis = [0.0, 1.0, 0.0], + yAxis = [0.0, 0.0, 1.0], + zAxis = [1.0, 0.0, 0.0] } // Extrude a single side of the lip of the bin diff --git a/public/kcl-samples/gridfinity-bins/main.kcl b/public/kcl-samples/gridfinity-bins/main.kcl index ef06cafa1..2be98afa6 100644 --- a/public/kcl-samples/gridfinity-bins/main.kcl +++ b/public/kcl-samples/gridfinity-bins/main.kcl @@ -32,9 +32,9 @@ fn face(plane) { |> startProfileAt([binBaseLength + binTol, 0], %) |> yLine(length = height) |> xLine(length = -binBaseLength) - |> angledLineOfYLength({ angle = -45, length = thirdStep }, %) + |> angledLine(angle = -45, lengthY = thirdStep) |> yLine(length = -secondStep) - |> angledLineOfYLength({ angle = -45, length = firstStep }, %) + |> angledLine(angle = -45, lengthY = firstStep) |> close() return faceSketch } @@ -102,7 +102,7 @@ singleBinFill = startSketchOn(XY) ], ) -magCutout000 = startSketchOn(singleBinFill, "start") +magCutout000 = startSketchOn(singleBinFill, face = START) |> circle( center = [ -magOffset - binBaseLength - binTol, @@ -165,4 +165,4 @@ binTop = startSketchOn(offsetPlane(XY, offset = height)) getPreviousAdjacentEdge(line012) ], ) - |> shell(faces = ["end"], thickness = binThk) + |> shell(faces = [END], thickness = binThk) diff --git a/public/kcl-samples/hex-nut/main.kcl b/public/kcl-samples/hex-nut/main.kcl index 9ef26647c..29197c874 100644 --- a/public/kcl-samples/hex-nut/main.kcl +++ b/public/kcl-samples/hex-nut/main.kcl @@ -13,11 +13,11 @@ diameter = 0.3125 fn hexNut(start, thk, innerDia) { hexNutSketch = startSketchOn(-XZ) |> startProfileAt([start[0] + innerDia, start[1]], %) - |> angledLine({ angle = 240, length = innerDia }, %) - |> angledLine({ angle = 180, length = innerDia }, %) - |> angledLine({ angle = 120, length = innerDia }, %) - |> angledLine({ angle = 60, length = innerDia }, %) - |> angledLine({ angle = 0, length = innerDia * .90 }, %) + |> angledLine(angle = 240, length = innerDia) + |> angledLine(angle = 180, length = innerDia) + |> angledLine(angle = 120, length = innerDia) + |> angledLine(angle = 60, length = innerDia) + |> angledLine(angle = 0, length = innerDia * .90) |> close() |> hole(circle(center = [start[0], start[1]], radius = innerDia / 2), %) |> extrude(length = thk) diff --git a/public/kcl-samples/i-beam/main.kcl b/public/kcl-samples/i-beam/main.kcl index e59a5e80b..544a43b18 100644 --- a/public/kcl-samples/i-beam/main.kcl +++ b/public/kcl-samples/i-beam/main.kcl @@ -5,7 +5,7 @@ @settings(defaultLengthUnit = in) // Define parameters -beamLength = 6 * ft() +beamLength = fromFt(6) beamHeight = 4 flangeWidth = 2.663 flangeThickness = 0.293 @@ -18,7 +18,7 @@ iBeam = startSketchOn(-XZ) |> xLine(length = flangeWidth / 2) |> yLine(length = -flangeThickness) |> xLine(endAbsolute = webThickness / 2 + rootRadius) - |> tangentialArc({ radius = rootRadius, offset = 90 }, %) + |> tangentialArc(radius = rootRadius, angle = 90) |> yLine(endAbsolute = 0) |> mirror2d(axis = X) |> mirror2d(axis = Y) diff --git a/public/kcl-samples/keyboard/main.kcl b/public/kcl-samples/keyboard/main.kcl index 2a9d62440..8efc60db0 100644 --- a/public/kcl-samples/keyboard/main.kcl +++ b/public/kcl-samples/keyboard/main.kcl @@ -22,7 +22,7 @@ row6 = row5 + keyHeight + spacing sketch001 = startSketchOn(YZ) |> startProfileAt([0, 0], %) |> line(end = [-0.14, 0.68], tag = $seg01) - |> angledLine([7, row6 + 3 * spacing + keyHeight], %, $seg02) + |> angledLine(angle = 7, length = row6 + 3 * spacing + keyHeight, tag = $seg02) |> line(endAbsolute = [5.13, 0], tag = $seg03) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg04) |> close() @@ -39,7 +39,7 @@ sketch001 = startSketchOn(YZ) ) // Create a short cylindrical foot at each corner of the keyboard -sketch003 = startSketchOn(sketch001, seg04) +sketch003 = startSketchOn(sketch001, face = seg04) profile001 = circle(sketch003, center = [0.75, 0.75], radius = 0.4) profile003 = circle(sketch003, center = [4.4, 0.75], radius = 0.4) profile004 = circle(sketch003, center = [0.73, 13.6 - .75], radius = 0.4) @@ -56,12 +56,10 @@ extrude( // Define the plane to sketch keyboard keys on plane001 = { - plane = { - origin = [0.0, 0.0, 0.7], - xAxis = [1.0, 0.0, 0.0], - yAxis = [0.0, 1.0, sin(toRadians(7))], - zAxis = [0.0, 0.0, 1.0] - } + origin = [0.0, 0.0, 0.7], + xAxis = [1.0, 0.0, 0.0], + yAxis = [0.0, 1.0, sin(toRadians(7))], + zAxis = [0.0, 0.0, 1.0] } // Create a function to build a key. Parameterize for position, width, height, number of instances, and appearance color. @@ -73,18 +71,12 @@ fn keyFn(originStart, keyWidth, keyHeight, repeats, color) { angleEnd = 270, radius = 0.1 }, %) - |> angledLine([0, keyWidth - .2], %, $rectangleSegmentA001) - |> tangentialArc({ radius = 0.1, offset = 90 }, %) - |> angledLine([ - segAng(rectangleSegmentA001) + 90, - keyHeight - .2 - ], %, $rectangleSegmentB001) - |> tangentialArc({ radius = 0.1, offset = 90 }, %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) - |> tangentialArc({ radius = 0.1, offset = 90 }, %) + |> angledLine(angle = 0, length = keyWidth - .2, tag = $rectangleSegmentA001) + |> tangentialArc(radius = 0.1, angle = 90) + |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = keyHeight - .2, tag = $rectangleSegmentB001) + |> tangentialArc(radius = 0.1, angle = 90) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) + |> tangentialArc(radius = 0.1, angle = 90) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001) |> close() |> extrude(length = keyDepth) @@ -134,12 +126,10 @@ keyFn([spacing * 3 + 12, row6], 1, keyHeight * .6, 0, highlightColor2) // Create a plane to sketch ZOO brand letters on plane002 = { - plane = { - origin = [0.0, 0.0, .81], - xAxis = [1.0, 0.0, 0.0], - yAxis = [0.0, 1.0, sin(toRadians(7))], - zAxis = [0.0, 0.0, 1.0] - } + origin = [0.0, 0.0, .81], + xAxis = [1.0, 0.0, 0.0], + yAxis = [0.0, 1.0, sin(toRadians(7))], + zAxis = [0.0, 0.0, 1.0] } // Define a function to draw the ZOO 'Z' @@ -151,24 +141,15 @@ fn z(origin, scale, depth) { ], %) |> yLine(length = -0.15 * scale) |> xLine(length = 0.15 * scale) - |> angledLineToX({ - angle = 47.15, - to = 0.3 * scale + origin[0] - }, %, $seg1) + |> angledLine(angle = 47.15, endAbsoluteX = 0.3 * scale + origin[0], tag = $seg1) |> yLine(endAbsolute = 0 + origin[1], tag = $seg3) |> xLine(length = 0.63 * scale) |> yLine(length = 0.225 * scale) |> xLine(length = -0.57 * scale) - |> angledLineToX({ - angle = 47.15, - to = 0.93 * scale + origin[0] - }, %) + |> angledLine(angle = 47.15, endAbsoluteX = 0.93 * scale + origin[0]) |> yLine(length = 0.15 * scale) |> xLine(length = -0.15 * scale) - |> angledLine({ - angle = 47.15, - length = -segLen(seg1) - }, %, $seg2) + |> angledLine(angle = 47.15, length = -segLen(seg1), tag = $seg2) |> yLine(length = segLen(seg3)) |> xLine(endAbsolute = 0 + origin[0]) |> yLine(length = -0.225 * scale) @@ -195,7 +176,7 @@ fn o(origin, scale, depth) { angleEnd = 47.15 - 6 + 180, radius = .525 * scale }, %) - |> angledLine({ angle = 47.15, length = .24 * scale }, %) + |> angledLine(angle = 47.15, length = .24 * scale) |> arc({ angleStart = 47.15 - 11 + 180, angleEnd = 47.15 + 11, @@ -215,7 +196,7 @@ fn o(origin, scale, depth) { angleEnd = 47.15 - 6, radius = .525 * scale }, %) - |> angledLine({ angle = 47.15, length = -.24 * scale }, %) + |> angledLine(angle = 47.15, length = -.24 * scale) |> arc({ angleStart = 47.15 - 11, angleEnd = 47.15 + 11 - 180, diff --git a/public/kcl-samples/kitt/main.kcl b/public/kcl-samples/kitt/main.kcl index 06f64de7b..3425cee48 100644 --- a/public/kcl-samples/kitt/main.kcl +++ b/public/kcl-samples/kitt/main.kcl @@ -3,7 +3,7 @@ // Pixel box function fn pixelBox(kitExtrude, extrudeTag, positionY, positionZ, width, height, depth) { - pixelBoxBody = startSketchOn(kitExtrude, extrudeTag) + pixelBoxBody = startSketchOn(kitExtrude, face = extrudeTag) |> startProfileAt([positionY, positionZ], %) |> line(end = [0, height]) |> line(end = [width, 0]) @@ -37,7 +37,7 @@ kitHeadElevation = kitBodyElevation + kitBodyHeight - kitHeadOffset - kitHeadHei kitHeadWidth = kitBodyWidth - (kitHeadOffset * 2) kitHeadDepth = 3 -kitHead = pixelBox(kitBody, 'END', -kitHeadWidth / 2, kitHeadElevation, kitHeadWidth, kitHeadHeight, kitHeadDepth) +kitHead = pixelBox(kitBody, END, -kitHeadWidth / 2, kitHeadElevation, kitHeadWidth, kitHeadHeight, kitHeadDepth) kitFaceElevation = kitHeadElevation + 2 // 3. Kitty Face @@ -45,7 +45,7 @@ kitFaceWidth = kitHeadWidth - 4 kitFaceHeight = kitHeadElevation + kitHeadHeight - kitFaceElevation - 3 kitFaceDepth = 2 -kitFace = startSketchOn(kitHead, 'END') +kitFace = startSketchOn(kitHead, face = END) |> startProfileAt([-kitFaceWidth / 2, kitFaceElevation], %) |> line(end = [0, 1]) // left lower corner up |> line(end = [-1, 0]) // left lower corner left @@ -71,14 +71,14 @@ kitEyeHeihgt = kitFaceElevation + 7 kitEyeOffset = 7 // 3.1.2 Kitty Right Eye -kitLeftEye1 = pixelBox(kitFace, 'START', -kitEyeOffset, kitEyeHeihgt, 1, 1, kitEyeDepth) +kitLeftEye1 = pixelBox(kitFace, START, -kitEyeOffset, kitEyeHeihgt, 1, 1, kitEyeDepth) // 3.2 Kitty Nose -kitLeftEye2 = pixelBox(kitFace, 'START', -kitEyeOffset + 1, kitEyeHeihgt + 1, 3, 1, kitEyeDepth) -kitLeftEye3 = pixelBox(kitFace, 'START', -kitEyeOffset + 4, kitEyeHeihgt, 1, 1, kitEyeDepth) -kitRightEye = pixelBox(kitFace, 'START', kitEyeOffset - 3, kitEyeHeihgt - 1, 2, 4, kitEyeDepth) +kitLeftEye2 = pixelBox(kitFace, START, -kitEyeOffset + 1, kitEyeHeihgt + 1, 3, 1, kitEyeDepth) +kitLeftEye3 = pixelBox(kitFace, START, -kitEyeOffset + 4, kitEyeHeihgt, 1, 1, kitEyeDepth) +kitRightEye = pixelBox(kitFace, START, kitEyeOffset - 3, kitEyeHeihgt - 1, 2, 4, kitEyeDepth) kitNoseElevation = kitEyeHeihgt - 5 -kitNose = startSketchOn(kitFace, 'START') +kitNose = startSketchOn(kitFace, face = START) |> startProfileAt([-2, kitNoseElevation], %) // H V |> line(end = [0, 1]) // lower-left up |> line(end = [2, 0]) // lower-left right @@ -98,12 +98,12 @@ kitNose = startSketchOn(kitFace, 'START') // 3.3 Kitty Mouth kitMouthOffset = 4 kitMouthHeight = kitEyeHeihgt - 3 -kitMouthUpLeft = pixelBox(kitFace, 'START', -kitMouthOffset, kitMouthHeight, 1, 1, kitEyeDepth) +kitMouthUpLeft = pixelBox(kitFace, START, -kitMouthOffset, kitMouthHeight, 1, 1, kitEyeDepth) // 4. Kitty Belly -kitMouthDownLeft = pixelBox(kitFace, 'START', -kitMouthOffset + 1, kitMouthHeight - 1, 1, 1, kitEyeDepth) -kitMouthUpRight = pixelBox(kitFace, 'START', kitMouthOffset, kitMouthHeight, 1, 1, kitEyeDepth) -kitMouthDownRight = pixelBox(kitFace, 'START', kitMouthOffset - 1, kitMouthHeight - 1, 1, 1, kitEyeDepth) +kitMouthDownLeft = pixelBox(kitFace, START, -kitMouthOffset + 1, kitMouthHeight - 1, 1, 1, kitEyeDepth) +kitMouthUpRight = pixelBox(kitFace, START, kitMouthOffset, kitMouthHeight, 1, 1, kitEyeDepth) +kitMouthDownRight = pixelBox(kitFace, START, kitMouthOffset - 1, kitMouthHeight - 1, 1, 1, kitEyeDepth) kitBellyElevation = kitBodyElevation + 1 kitBellyHeight = kitHeadElevation - kitBellyElevation - 1 @@ -111,7 +111,7 @@ kitBellyHeight = kitHeadElevation - kitBellyElevation - 1 // 4.1 Kitty VHS kitBellyWidth = kitHeadWidth kitBellyDepth = kitHeadDepth -kitBelly = pixelBox(kitBody, 'END', -kitBellyWidth / 2, kitBellyElevation, kitBellyWidth, kitBellyHeight, kitBellyDepth) +kitBelly = pixelBox(kitBody, END, -kitBellyWidth / 2, kitBellyElevation, kitBellyWidth, kitBellyHeight, kitBellyDepth) kitVHSelevation = kitBellyElevation + 1 kitVHSheight = 2 @@ -119,7 +119,7 @@ kitVHSheight = 2 // 4.2 Kitty Floppy kitVHSwidth = 8 kitVHSdepth = 1 -kitVHS = pixelBox(kitBelly, 'END', -kitVHSwidth / 2, kitVHSelevation, kitVHSwidth, kitVHSheight, kitVHSdepth) +kitVHS = pixelBox(kitBelly, END, -kitVHSwidth / 2, kitVHSelevation, kitVHSwidth, kitVHSheight, kitVHSdepth) kitFloppyElevation = kitBellyElevation + 1 kitFloppyHeight = 1 @@ -128,9 +128,9 @@ kitFloppyOffset = kitBellyWidth / 2 - 1 kitFloppyDepth = 2 // 4.3 Kitty Belly Button -kitFloppy1 = pixelBox(kitBelly, 'END', -kitFloppyOffset, kitFloppyElevation, kitFloppyWidth, kitFloppyHeight, -kitFloppyDepth) -kitFloppy2 = pixelBox(kitBelly, 'END', -kitFloppyOffset, kitFloppyElevation + 2, kitFloppyWidth, kitFloppyHeight, -kitFloppyDepth) -kitFloppy3 = pixelBox(kitBelly, 'END', kitFloppyOffset, kitFloppyElevation, -kitFloppyWidth, kitFloppyHeight, -kitFloppyDepth) +kitFloppy1 = pixelBox(kitBelly, END, -kitFloppyOffset, kitFloppyElevation, kitFloppyWidth, kitFloppyHeight, -kitFloppyDepth) +kitFloppy2 = pixelBox(kitBelly, END, -kitFloppyOffset, kitFloppyElevation + 2, kitFloppyWidth, kitFloppyHeight, -kitFloppyDepth) +kitFloppy3 = pixelBox(kitBelly, END, kitFloppyOffset, kitFloppyElevation, -kitFloppyWidth, kitFloppyHeight, -kitFloppyDepth) kitBellyButtonOffset = kitHeadWidth / 2 - 3 kitBellyButtonElevation = kitHeadElevation - 1 @@ -139,18 +139,18 @@ kitBellyButtonWidth = 2 // 4.4 Kitty Buttons kitBellyButtonHeight = 1 kitBellyButtonDepth = kitHeadDepth + 1 -kitBellyButton = pixelBox(kitBody, 'END', -kitBellyButtonOffset, kitBellyButtonElevation, kitBellyButtonWidth, kitBellyButtonHeight, kitBellyButtonDepth) +kitBellyButton = pixelBox(kitBody, END, -kitBellyButtonOffset, kitBellyButtonElevation, kitBellyButtonWidth, kitBellyButtonHeight, kitBellyButtonDepth) kitButtonWidth = 1 kitButtonHeight = 2 kitButtonDepth = kitFloppyDepth kitButtonElevation = kitFloppyElevation + 2 -kitButton1 = pixelBox(kitBelly, 'END', kitFloppyOffset, kitFloppyElevation + 2, -kitButtonWidth, kitButtonHeight, -kitButtonDepth) +kitButton1 = pixelBox(kitBelly, END, kitFloppyOffset, kitFloppyElevation + 2, -kitButtonWidth, kitButtonHeight, -kitButtonDepth) // 5. Kitty Legs -kitButton2 = pixelBox(kitBelly, 'END', kitFloppyOffset - kitButtonWidth - 1, kitFloppyElevation + 2, -kitButtonWidth, kitButtonHeight, -kitButtonDepth) -kitButton3 = pixelBox(kitBelly, 'END', kitFloppyOffset - (2 * (kitButtonWidth + 1)), kitFloppyElevation + 2, -kitButtonWidth, kitButtonHeight, -kitButtonDepth) +kitButton2 = pixelBox(kitBelly, END, kitFloppyOffset - kitButtonWidth - 1, kitFloppyElevation + 2, -kitButtonWidth, kitButtonHeight, -kitButtonDepth) +kitButton3 = pixelBox(kitBelly, END, kitFloppyOffset - (2 * (kitButtonWidth + 1)), kitFloppyElevation + 2, -kitButtonWidth, kitButtonHeight, -kitButtonDepth) kitShoeWidth = 7 kitShoeLength = 10 @@ -175,7 +175,7 @@ fn kitLeg(offsetFront, offsetSide) { kitPantsFrontWidth = kitPantsWidth kitPantsHeight = kitBodyElevation - kitShoeHeight - kitPants = pixelBox(kitShoe, 'END', kitPantsOffsetSide, kitPantsOffsetFront, kitPantsFrontWidth, kitPantsWidth, kitPantsHeight) + kitPants = pixelBox(kitShoe, END, kitPantsOffsetSide, kitPantsOffsetFront, kitPantsFrontWidth, kitPantsWidth, kitPantsHeight) return kitShoe } @@ -195,13 +195,13 @@ fn kitEar(earOffsetFront, earOffsetSide) { baseVolume = pixelBox(kitBody, seg01, kitNewEarOffsetSide, kitNewEarOffsetFront, kitEarWidth, -kitEarDepth, kitEarHeight) secondOffset = 1 - secondLevel = pixelBox(baseVolume, 'END', kitNewEarOffsetSide + secondOffset, kitNewEarOffsetFront - 0.01, kitEarWidth - (secondOffset * 2), -kitEarDepth + secondOffset * 2, kitEarHeight) + secondLevel = pixelBox(baseVolume, END, kitNewEarOffsetSide + secondOffset, kitNewEarOffsetFront - 0.01, kitEarWidth - (secondOffset * 2), -kitEarDepth + secondOffset * 2, kitEarHeight) thirdOffset = 2 - thirdLevel = pixelBox(secondLevel, 'END', kitNewEarOffsetSide + thirdOffset, kitNewEarOffsetFront - 0.02, kitEarWidth - (thirdOffset * 2), -kitEarDepth + thirdOffset * 2, kitEarHeight) + thirdLevel = pixelBox(secondLevel, END, kitNewEarOffsetSide + thirdOffset, kitNewEarOffsetFront - 0.02, kitEarWidth - (thirdOffset * 2), -kitEarDepth + thirdOffset * 2, kitEarHeight) fourthOffset = 3 - fourthLevel = pixelBox(thirdLevel, 'END', kitNewEarOffsetSide + fourthOffset, kitNewEarOffsetFront - 0.03, kitEarWidth - (fourthOffset * 2), -kitEarDepth + fourthOffset * 2, kitEarHeight) + fourthLevel = pixelBox(thirdLevel, END, kitNewEarOffsetSide + fourthOffset, kitNewEarOffsetFront - 0.03, kitEarWidth - (fourthOffset * 2), -kitEarDepth + fourthOffset * 2, kitEarHeight) return baseVolume } diff --git a/public/kcl-samples/lego/main.kcl b/public/kcl-samples/lego/main.kcl index c2fba5936..578ce4ff2 100644 --- a/public/kcl-samples/lego/main.kcl +++ b/public/kcl-samples/lego/main.kcl @@ -35,7 +35,7 @@ base = startSketchOn(XY) |> extrude(length = height) // Sketch and extrude a rectangular shape to create the shell underneath the lego. Will replace with shell function when able to call a face created from shell. -shellExtrude = startSketchOn(base, "start") +shellExtrude = startSketchOn(base, face = START) |> startProfileAt([ -(totalWidth / 2 - t), -(totalLength / 2 - t) @@ -47,7 +47,7 @@ shellExtrude = startSketchOn(base, "start") |> extrude(length = -(height - t)) // Create the pegs on the top of the base -peg = startSketchOn(base, 'end') +peg = startSketchOn(base, face = END) |> circle( center = [ -(pitch * (wbumps - 1) / 2), @@ -60,7 +60,7 @@ peg = startSketchOn(base, 'end') |> extrude(length = bumpHeight) // Create the pegs on the bottom of the base -tubePattern = startSketchOn(shellExtrude, 'start') +tubePattern = startSketchOn(shellExtrude, face = START) |> circle( center = [ -(pitch * (wbumps - 1) / 2 - (pitch / 2)), diff --git a/public/kcl-samples/multi-axis-robot/globals.kcl b/public/kcl-samples/multi-axis-robot/globals.kcl index 9ec44a0a6..47169ba2d 100644 --- a/public/kcl-samples/multi-axis-robot/globals.kcl +++ b/public/kcl-samples/multi-axis-robot/globals.kcl @@ -28,37 +28,31 @@ export axisJ3CArmThickness = 2.5 // Planes export plane001 = { - plane = { - origin = [0.0, 0.0, baseHeight - 1.5 + 0.1], - xAxis = [1.0, 0.0, 0.0], - yAxis = [0.0, 1.0, 0.0], - zAxis = [0.0, 0.0, 1.0] - } + origin = [0.0, 0.0, baseHeight - 1.5 + 0.1], + xAxis = [1.0, 0.0, 0.0], + yAxis = [0.0, 1.0, 0.0], + zAxis = [0.0, 0.0, 1.0] } export plane002 = { - plane = { - origin = [0.0, 0.0, 0.0], - xAxis = [ - sin(toRadians(axisJ1)), - cos(toRadians(axisJ1)), - 0.0 - ], - yAxis = [0.0, 0.0, 1.0], - zAxis = [1.0, 0.0, 0.0] - } + origin = [0.0, 0.0, 0.0], + xAxis = [ + sin(toRadians(axisJ1)), + cos(toRadians(axisJ1)), + 0.0 + ], + yAxis = [0.0, 0.0, 1.0], + zAxis = [1.0, 0.0, 0.0] } // Define Plane to Move J2 Axis Robot Arm export plane003 = { - plane = { - origin = [-0.1, 0.0, 0.0], - xAxis = [ - sin(toRadians(axisJ1)), - cos(toRadians(axisJ1)), - 0.0 - ], - yAxis = [0.0, 0.0, 1.0], - zAxis = [1.0, 0.0, 0.0] - } + origin = [-0.1, 0.0, 0.0], + xAxis = [ + sin(toRadians(axisJ1)), + cos(toRadians(axisJ1)), + 0.0 + ], + yAxis = [0.0, 0.0, 1.0], + zAxis = [1.0, 0.0, 0.0] } diff --git a/public/kcl-samples/multi-axis-robot/robot-arm-base.kcl b/public/kcl-samples/multi-axis-robot/robot-arm-base.kcl index b085417ed..fe598370e 100644 --- a/public/kcl-samples/multi-axis-robot/robot-arm-base.kcl +++ b/public/kcl-samples/multi-axis-robot/robot-arm-base.kcl @@ -9,15 +9,9 @@ import basePlateRadius, basePlateThickness, baseChamfer, baseHeight from "global // Base Plate sketch001 = startSketchOn(XY) |> startProfileAt([-basePlateRadius, -basePlateRadius], %) - |> angledLine([0, 2 * basePlateRadius], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) + 90, - 2 * basePlateRadius - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = 2 * basePlateRadius, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = 2 * basePlateRadius, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001) |> close() extrude001 = extrude(sketch001, length = basePlateThickness) @@ -32,16 +26,16 @@ extrude001 = extrude(sketch001, length = basePlateThickness) ) // Base Motor for actuating first joint -sketch002 = startSketchOn(extrude001, 'END') +sketch002 = startSketchOn(extrude001, face = END) |> circle(center = [0, 0], radius = 4, tag = $referenceEdge) extrude002 = extrude(sketch002, length = baseHeight - basePlateThickness - 1.5) |> fillet(radius = 0.1, tags = [getOppositeEdge(referenceEdge)]) -sketch003 = startSketchOn(extrude002, 'END') +sketch003 = startSketchOn(extrude002, face = END) |> circle(center = [0, 0], radius = 0.5) extrude003 = extrude(sketch003, length = 1) // Pattern M8 mounting bolts in base -sketch4A = startSketchOn(extrude001, 'END') +sketch4A = startSketchOn(extrude001, face = END) |> circle( center = [ -basePlateRadius + 1, @@ -58,7 +52,7 @@ sketch4A = startSketchOn(extrude001, 'END') extrude4A = extrude(sketch4A, length = -basePlateThickness) -sketch4B = startSketchOn(extrude001, 'END') +sketch4B = startSketchOn(extrude001, face = END) |> circle( center = [ -basePlateRadius + 0.5 + baseChamfer, diff --git a/public/kcl-samples/multi-axis-robot/robot-arm-j2.kcl b/public/kcl-samples/multi-axis-robot/robot-arm-j2.kcl index 0ab356c72..c3fa2db68 100644 --- a/public/kcl-samples/multi-axis-robot/robot-arm-j2.kcl +++ b/public/kcl-samples/multi-axis-robot/robot-arm-j2.kcl @@ -16,10 +16,7 @@ sketch011 = startSketchOn(plane003) angleEnd = 270 + axisJ2, radius = axisJ2ArmWidth / 2 }, %) - |> angledLine({ - angle = axisJ2, - length = axisJ2ArmLength - }, %) + |> angledLine(angle = axisJ2, length = axisJ2ArmLength) |> arc({ angleStart = -90 + axisJ2, angleEnd = 90 + axisJ2, @@ -29,12 +26,12 @@ sketch011 = startSketchOn(plane003) |> close() extrude011 = extrude(sketch011, length = -axisJ2ArmThickness) -sketch012 = startSketchOn(extrude011, 'START') +sketch012 = startSketchOn(extrude011, face = START) |> circle(center = [-1.75, 8], radius = 1.9, tag = $referenceEdge4) extrude012 = extrude(sketch012, length = 0.15) |> fillet(radius = 0.1, tags = [getOppositeEdge(referenceEdge4)]) -sketch013 = startSketchOn(extrude011, 'START') +sketch013 = startSketchOn(extrude011, face = START) |> circle( center = [ -1.75 - (axisJ2ArmLength * cos(toRadians(axisJ2))), @@ -48,7 +45,7 @@ extrude013 = extrude(sketch013, length = 1) |> fillet(radius = 0.1, tags = [getOppositeEdge(referenceEdge5)]) // Draw Bolt Patterns on J2 Robot Arm -sketch014 = startSketchOn(extrude012, 'END') +sketch014 = startSketchOn(extrude012, face = END) |> circle(center = [-1.75, 6.75], radius = 0.2) |> patternCircular2d( center = [-1.75, 8], @@ -59,7 +56,7 @@ sketch014 = startSketchOn(extrude012, 'END') extrude014 = extrude(sketch014, length = 0.15) -sketch015 = startSketchOn(extrude013, 'END') +sketch015 = startSketchOn(extrude013, face = END) |> circle( center = [ -1.75 - ((axisJ2ArmLength - 1) * cos(toRadians(axisJ2))), @@ -79,7 +76,7 @@ sketch015 = startSketchOn(extrude013, 'END') extrude015 = extrude(sketch015, length = 0.15) -sketch016 = startSketchOn(extrude011, 'END') +sketch016 = startSketchOn(extrude011, face = END) |> circle( center = [ 1.75 + axisJ2ArmLength * cos(toRadians(axisJ2)), diff --git a/public/kcl-samples/multi-axis-robot/robot-arm-j3.kcl b/public/kcl-samples/multi-axis-robot/robot-arm-j3.kcl index 464936ba6..bbaf30b94 100644 --- a/public/kcl-samples/multi-axis-robot/robot-arm-j3.kcl +++ b/public/kcl-samples/multi-axis-robot/robot-arm-j3.kcl @@ -16,10 +16,7 @@ sketch017 = startSketchOn(plane002) angleEnd = 270 + axisJ3C, radius = axisJ3CArmWidth / 2 }, %) - |> angledLine({ - angle = axisJ3C, - length = axisJ3CArmLength - }, %) + |> angledLine(angle = axisJ3C, length = axisJ3CArmLength) |> arc({ angleStart = 270 + axisJ3C, angleEnd = 90 + axisJ3C, @@ -29,7 +26,7 @@ sketch017 = startSketchOn(plane002) |> close() extrude017 = extrude(sketch017, length = axisJ3CArmThickness) -sketch018 = startSketchOn(extrude017, 'END') +sketch018 = startSketchOn(extrude017, face = END) |> circle( center = [ 1.75 + axisJ2ArmLength * cos(toRadians(axisJ2)), @@ -43,7 +40,7 @@ extrude018 = extrude(sketch018, length = 0.15) |> fillet(radius = 0.1, tags = [getOppositeEdge(referenceEdge6)]) // Draw Bolt Pattern on J3 Robot Arm -sketch019 = startSketchOn(extrude018, 'END') +sketch019 = startSketchOn(extrude018, face = END) |> circle( center = [ 1.75 + (axisJ2ArmLength - 1) * cos(toRadians(axisJ2)), @@ -64,7 +61,7 @@ sketch019 = startSketchOn(extrude018, 'END') extrude019 = extrude(sketch019, length = 0.15) // On the J3 Robot Arm Body, Create Mounting Clevis for Grabber Claw -sketch020 = startSketchOn(extrude017, 'START') +sketch020 = startSketchOn(extrude017, face = START) |> circle( center = [ -1.75 - (axisJ2ArmLength * cos(toRadians(axisJ2))) - (axisJ3CArmLength * cos(toRadians(axisJ3C))), @@ -74,7 +71,7 @@ sketch020 = startSketchOn(extrude017, 'START') ) extrude020 = extrude(sketch020, length = -0.5) -sketch021 = startSketchOn(extrude017, 'END') +sketch021 = startSketchOn(extrude017, face = END) |> circle( center = [ 1.75 + axisJ2ArmLength * cos(toRadians(axisJ2)) + axisJ3CArmLength * cos(toRadians(axisJ3C)), @@ -88,78 +85,48 @@ extrude021 = extrude(sketch021, length = -0.5) // Define Grabber Claw Constants grabberLength = 7 -sketch022 = startSketchOn(extrude021, 'START') +sketch022 = startSketchOn(extrude021, face = START) |> circle(center = [0, 0], radius = 0.10) extrude022 = extrude(sketch022, length = -0.01) // Build Upper Claw Finger -sketch023 = startSketchOn(extrude022, 'START') +sketch023 = startSketchOn(extrude022, face = START) |> startProfileAt([ 1.75 + axisJ2ArmLength * cos(toRadians(axisJ2)) + axisJ3CArmLength * cos(toRadians(axisJ3C)), 8 + axisJ2ArmLength * sin(toRadians(axisJ2)) + axisJ3CArmLength * sin(toRadians(axisJ3C)) ], %) - |> angledLine({ - angle = axisJ3C + axisJ4 / 2, - length = grabberLength / 4 - }, %) + |> angledLine(angle = axisJ3C + axisJ4 / 2, length = grabberLength / 4) |> arc({ angleStart = 150 + axisJ3C + axisJ4 / 2, angleEnd = 30 + axisJ3C + axisJ4 / 2, radius = grabberLength / 3 }, %) - |> angledLine({ - angle = axisJ3C + axisJ4 / 2, - length = grabberLength / 6 - }, %) - |> angledLine({ - angle = axisJ3C + axisJ4 / 2 + 132, - length = grabberLength / 3.5 - }, %) - |> angledLine({ - angle = axisJ3C + axisJ4 / 2 + 160, - length = grabberLength / 3.5 - }, %) - |> angledLine({ - angle = axisJ3C + axisJ4 / 2 + 200, - length = grabberLength / 3 - }, %) + |> angledLine(angle = axisJ3C + axisJ4 / 2, length = grabberLength / 6) + |> angledLine(angle = axisJ3C + axisJ4 / 2 + 132, length = grabberLength / 3.5) + |> angledLine(angle = axisJ3C + axisJ4 / 2 + 160, length = grabberLength / 3.5) + |> angledLine(angle = axisJ3C + axisJ4 / 2 + 200, length = grabberLength / 3) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude023 = extrude(sketch023, length = -1.5) // Build Lower Claw Finger -sketch024 = startSketchOn(extrude022, 'START') +sketch024 = startSketchOn(extrude022, face = START) |> startProfileAt([ 1.75 + axisJ2ArmLength * cos(toRadians(axisJ2)) + axisJ3CArmLength * cos(toRadians(axisJ3C)), 8 + axisJ2ArmLength * sin(toRadians(axisJ2)) + axisJ3CArmLength * sin(toRadians(axisJ3C)) ], %) - |> angledLine({ - angle = axisJ3C - (axisJ4 / 2), - length = grabberLength / 4 - }, %) + |> angledLine(angle = axisJ3C - (axisJ4 / 2), length = grabberLength / 4) |> arc({ angleStart = 210 + axisJ3C - (axisJ4 / 2), angleEnd = 330 + axisJ3C - (axisJ4 / 2), radius = grabberLength / 3 }, %) - |> angledLine({ - angle = axisJ3C - (axisJ4 / 2), - length = grabberLength / 6 - }, %) - |> angledLine({ - angle = axisJ3C - (axisJ4 / 2) - 132, - length = grabberLength / 3.5 - }, %) - |> angledLine({ - angle = axisJ3C - (axisJ4 / 2) - 160, - length = grabberLength / 3.5 - }, %) - |> angledLine({ - angle = axisJ3C - (axisJ4 / 2) - 200, - length = grabberLength / 3 - }, %) + |> angledLine(angle = axisJ3C - (axisJ4 / 2), length = grabberLength / 6) + |> angledLine(angle = axisJ3C - (axisJ4 / 2) - 132, length = grabberLength / 3.5) + |> angledLine(angle = axisJ3C - (axisJ4 / 2) - 160, length = grabberLength / 3.5) + |> angledLine(angle = axisJ3C - (axisJ4 / 2) - 200, length = grabberLength / 3) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() diff --git a/public/kcl-samples/multi-axis-robot/robot-rotating-base.kcl b/public/kcl-samples/multi-axis-robot/robot-rotating-base.kcl index 4bb44c17e..0713b318d 100644 --- a/public/kcl-samples/multi-axis-robot/robot-rotating-base.kcl +++ b/public/kcl-samples/multi-axis-robot/robot-rotating-base.kcl @@ -14,19 +14,19 @@ extrude005 = extrude(sketch005, length = 1.5 - 0.1) sketch006 = startSketchOn(plane002) |> startProfileAt([3.5, baseHeight], %) - |> angledLine({ angle = 60, length = 1.75 }, %) + |> angledLine(angle = 60, length = 1.75) |> arc({ angleStart = -30, angleEnd = -30 + 180, radius = 3 }, %) - |> angledLineToY({ angle = 60, to = baseHeight }, %) + |> angledLine(angle = 60, endAbsoluteY = baseHeight) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude006 = extrude(sketch006, length = 1) -sketch007 = startSketchOn(extrude006, 'END') +sketch007 = startSketchOn(extrude006, face = END) |> circle( center = [ 1.75 * cos(toRadians(axisJ1)) / abs(cos(toRadians(axisJ1))), @@ -39,7 +39,7 @@ extrude007 = extrude(sketch007, length = 1.5) |> fillet(radius = 0.1, tags = [getOppositeEdge(referenceEdge2)]) // Draw Bolt Pattern on Rotating Base -sketch008 = startSketchOn(extrude007, 'END') +sketch008 = startSketchOn(extrude007, face = END) |> circle( center = [ 1.75 * cos(toRadians(axisJ1)) / abs(cos(toRadians(axisJ1))), @@ -58,7 +58,7 @@ sketch008 = startSketchOn(extrude007, 'END') ) extrude008 = extrude(sketch008, length = 0.2) -sketch009 = startSketchOn(extrude007, 'END') +sketch009 = startSketchOn(extrude007, face = END) |> circle( center = [ 1.75 * cos(toRadians(axisJ1)) / abs(cos(toRadians(axisJ1))), diff --git a/public/kcl-samples/parametric-bearing-pillow-block/main.kcl b/public/kcl-samples/parametric-bearing-pillow-block/main.kcl index 6e53c6e47..98effaabd 100644 --- a/public/kcl-samples/parametric-bearing-pillow-block/main.kcl +++ b/public/kcl-samples/parametric-bearing-pillow-block/main.kcl @@ -22,7 +22,7 @@ body = startSketchOn(XY) |> line(endAbsolute = [-width / 2, length / 2]) |> close() |> extrude(length = height) -counterBoreHoles = startSketchOn(body, 'end') +counterBoreHoles = startSketchOn(body, face = END) |> circle( center = [ -(width / 2 - (padding / 2)), @@ -34,7 +34,7 @@ counterBoreHoles = startSketchOn(body, 'end') |> patternLinear2d(instances = 2, distance = width - padding, axis = [1, 0]) |> extrude(%, length = -cbDepth) -boltHoles = startSketchOn(body, 'start') +boltHoles = startSketchOn(body, face = START) |> circle( center = [ -(width / 2 - (padding / 2)), @@ -46,6 +46,6 @@ boltHoles = startSketchOn(body, 'start') |> patternLinear2d(instances = 2, distance = width - padding, axis = [1, 0]) |> extrude(length = -height + cbDepth) -centerHole = startSketchOn(body, 'end') +centerHole = startSketchOn(body, face = END) |> circle(center = [0, 0], radius = bearingDia / 2) |> extrude(length = -height) diff --git a/public/kcl-samples/pipe-flange-assembly/1120t74-pipe.kcl b/public/kcl-samples/pipe-flange-assembly/1120t74-pipe.kcl index 8871155d6..47425b743 100644 --- a/public/kcl-samples/pipe-flange-assembly/1120t74-pipe.kcl +++ b/public/kcl-samples/pipe-flange-assembly/1120t74-pipe.kcl @@ -15,7 +15,7 @@ export fn pipe() { |> extrude(%, length = pipeLength) // Extrude a hole through the length of the pipe - pipe = startSketchOn(pipeBase, 'end') + pipe = startSketchOn(pipeBase, face = END) |> circle(center = [0, 0], radius = pipeInnerDiameter / 2) |> extrude(%, length = -pipeLength) |> appearance(color = "#a24ed0") diff --git a/public/kcl-samples/pipe-flange-assembly/68095k348-flange.kcl b/public/kcl-samples/pipe-flange-assembly/68095k348-flange.kcl index fc99d12f8..4e4d3afbe 100644 --- a/public/kcl-samples/pipe-flange-assembly/68095k348-flange.kcl +++ b/public/kcl-samples/pipe-flange-assembly/68095k348-flange.kcl @@ -27,15 +27,15 @@ export fn flange() { |> extrude(%, length = flangeBaseThickness) // Create both the raised portions on the front and back of the flange base - flangeBack = startSketchOn(flangeBase, 'start') + flangeBack = startSketchOn(flangeBase, face = START) |> circle(%, center = [0, 0], radius = flangeBackDiameter / 2) |> extrude(%, length = flangeBackHeight) - flangeFront = startSketchOn(flangeBase, 'end') + flangeFront = startSketchOn(flangeBase, face = END) |> circle(%, center = [0, 0], radius = flangeFrontDiameter / 2) |> extrude(%, length = flangeFrontHeight) // Create the circular cut in the center for the pipe - pipeCut = startSketchOn(flangeFront, 'end') + pipeCut = startSketchOn(flangeFront, face = END) |> circle(%, center = [0, 0], radius = pipeDiameter / 2) |> extrude(%, length = -flangeTotalThickness) |> appearance(%, color = "#bab0b0") diff --git a/public/kcl-samples/pipe-flange-assembly/91251a404-bolt.kcl b/public/kcl-samples/pipe-flange-assembly/91251a404-bolt.kcl index cb3655e66..779e2dbf2 100644 --- a/public/kcl-samples/pipe-flange-assembly/91251a404-bolt.kcl +++ b/public/kcl-samples/pipe-flange-assembly/91251a404-bolt.kcl @@ -16,36 +16,21 @@ export fn bolt() { |> fillet(radius = 0.020, tags = [topEdge, getOppositeEdge(topEdge)]) // Define the sketch of the hex pattern on the screw head and extrude into the head - hexPatternSketch = startSketchOn(boltHead, 'start') + hexPatternSketch = startSketchOn(boltHead, face = START) |> startProfileAt([ boltHexDrive / 2, boltHexFlatLength / 2 ], %) - |> angledLine({ - angle = 270, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 210, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 150, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 90, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 30, - length = boltHexFlatLength - }, %) + |> angledLine(angle = 270, length = boltHexFlatLength) + |> angledLine(angle = 210, length = boltHexFlatLength) + |> angledLine(angle = 150, length = boltHexFlatLength) + |> angledLine(angle = 90, length = boltHexFlatLength) + |> angledLine(angle = 30, length = boltHexFlatLength) |> close() |> extrude(length = -boltHeadLength * 0.75) // create the body of the bolt - boltBody = startSketchOn(boltHead, 'end') + boltBody = startSketchOn(boltHead, face = END) |> circle(center = [0, 0], radius = boltDiameter / 2, tag = $filletEdge) |> extrude(length = boltLength) |> appearance(color = "#4dd043", metalness = 90, roughness = 90) diff --git a/public/kcl-samples/pipe-flange-assembly/9472k188-gasket.kcl b/public/kcl-samples/pipe-flange-assembly/9472k188-gasket.kcl index db777f76f..4f7898172 100644 --- a/public/kcl-samples/pipe-flange-assembly/9472k188-gasket.kcl +++ b/public/kcl-samples/pipe-flange-assembly/9472k188-gasket.kcl @@ -13,7 +13,7 @@ gasketBase = startSketchOn(XY) |> extrude(%, length = gasketThickness) // Extrude a circular hole through the gasket base -startSketchOn(gasketBase, 'end') +startSketchOn(gasketBase, face = END) |> circle(%, center = [0, 0], radius = gasketInnerDiameter / 2) |> extrude(%, length = -gasketThickness) |> appearance(%, color = "#d0cb3e") diff --git a/public/kcl-samples/pipe-flange-assembly/95479a127-hex-nut.kcl b/public/kcl-samples/pipe-flange-assembly/95479a127-hex-nut.kcl index c6d8bf5aa..4e089d996 100644 --- a/public/kcl-samples/pipe-flange-assembly/95479a127-hex-nut.kcl +++ b/public/kcl-samples/pipe-flange-assembly/95479a127-hex-nut.kcl @@ -15,31 +15,16 @@ export fn hexNut() { hexNutFlatToFlat / 2, hexNutFlatLength / 2 ], %) - |> angledLine({ - angle = 270, - length = hexNutFlatLength - }, %) - |> angledLine({ - angle = 210, - length = hexNutFlatLength - }, %) - |> angledLine({ - angle = 150, - length = hexNutFlatLength - }, %) - |> angledLine({ - angle = 90, - length = hexNutFlatLength - }, %) - |> angledLine({ - angle = 30, - length = hexNutFlatLength - }, %) + |> angledLine(angle = 270, length = hexNutFlatLength) + |> angledLine(angle = 210, length = hexNutFlatLength) + |> angledLine(angle = 150, length = hexNutFlatLength) + |> angledLine(angle = 90, length = hexNutFlatLength) + |> angledLine(angle = 30, length = hexNutFlatLength) |> close() |> extrude(length = hexNutThickness) // Create the hole in the center of the hex nut - hexNut = startSketchOn(hexNutBase, 'end') + hexNut = startSketchOn(hexNutBase, face = END) |> circle(center = [0, 0], radius = hexNutDiameter / 2) |> extrude(%, length = -hexNutThickness) |> appearance(%, color = "#4edfd5") diff --git a/public/kcl-samples/pipe-flange-assembly/98017a257-washer.kcl b/public/kcl-samples/pipe-flange-assembly/98017a257-washer.kcl index b00541af6..092cf8513 100644 --- a/public/kcl-samples/pipe-flange-assembly/98017a257-washer.kcl +++ b/public/kcl-samples/pipe-flange-assembly/98017a257-washer.kcl @@ -15,7 +15,7 @@ export fn washer() { |> extrude(length = washerThickness) // Extrude a hole through the washer - washer = startSketchOn(washerBase, 'end') + washer = startSketchOn(washerBase, face = END) |> circle(center = [0, 0], radius = washerInnerDia / 2) |> extrude(%, length = -washerThickness) |> appearance(%, color = "#ee4f4f") diff --git a/public/kcl-samples/pipe/main.kcl b/public/kcl-samples/pipe/main.kcl index f948826f1..df7d8f68b 100644 --- a/public/kcl-samples/pipe/main.kcl +++ b/public/kcl-samples/pipe/main.kcl @@ -15,7 +15,7 @@ pipeBase = startSketchOn(XZ) |> extrude(%, length = pipeLength) // Extrude a hole through the length of the pipe -pipe = startSketchOn(pipeBase, 'end') +pipe = startSketchOn(pipeBase, face = END) |> circle(center = [0, 0], radius = pipeInnerDiameter / 2) |> extrude(%, length = -pipeLength) |> appearance(color = "#a24ed0") diff --git a/public/kcl-samples/poopy-shoe/main.kcl b/public/kcl-samples/poopy-shoe/main.kcl index cdd46f12f..05d1b68bc 100644 --- a/public/kcl-samples/poopy-shoe/main.kcl +++ b/public/kcl-samples/poopy-shoe/main.kcl @@ -17,20 +17,17 @@ frontLength = 7 sketch001 = startSketchOn(-YZ) |> startProfileAt([wallsWidth / 2, 0], %) |> xLine(length = wallThickness / 2) - |> angledLineToX({ angle = 60, to = wallsWidth }, %, $seg01) + |> angledLine(angle = 60, endAbsoluteX = wallsWidth, tag = $seg01) |> yLine(endAbsolute = height) |> xLine(length = -wallThickness) |> yLine(endAbsolute = segEndY(seg01)) - |> angledLineToX({ - angle = 60, - to = wallsWidth / 2 + wallThickness / 2 - }, %) + |> angledLine(angle = 60, endAbsoluteX = wallsWidth / 2 + wallThickness / 2) |> xLine(length = -wallThickness) - |> angledLineToX({ angle = 180 - 60, to = wallThickness }, %) + |> angledLine(angle = 180 - 60, endAbsoluteX = wallThickness) |> yLine(endAbsolute = height) |> xLine(endAbsolute = 0) |> yLine(endAbsolute = segEndY(seg01)) - |> angledLineToY({ angle = 180 - 60, to = 0 }, %) + |> angledLine(angle = 180 - 60, endAbsoluteY = 0) |> close() part001 = revolve( sketch001, @@ -44,91 +41,81 @@ part001 = revolve( sketch002 = startSketchOn(-YZ) |> startProfileAt([wallsWidth / 2, 0], %) |> xLine(length = wallThickness / 2) - |> angledLineToX({ angle = 60, to = wallsWidth }, %, $seg02) + |> angledLine(angle = 60, endAbsoluteX = wallsWidth, tag = $seg02) |> yLine(endAbsolute = height) |> xLine(length = -wallThickness) |> yLine(endAbsolute = segEndY(seg01)) - |> angledLineToX({ - angle = 60, - to = wallsWidth / 2 + wallThickness / 2 - }, %) + |> angledLine(angle = 60, endAbsoluteX = wallsWidth / 2 + wallThickness / 2) |> xLine(length = -wallThickness) - |> angledLineToX({ angle = 180 - 60, to = wallThickness }, %) + |> angledLine(angle = 180 - 60, endAbsoluteX = wallThickness) |> yLine(endAbsolute = height) |> xLine(endAbsolute = 0) |> yLine(endAbsolute = segEndY(seg02)) - |> angledLineToY({ angle = 180 - 60, to = 0 }, %) + |> angledLine(angle = 180 - 60, endAbsoluteY = 0) |> close() |> extrude(length = backLength - height) customPlane = { - plane = { - origin = { - x = 0, - y = -(wallsWidth / 2 - (wallThickness / 2)), - z = 0 - }, - xAxis = { x = 1, y = 0, z = 0 }, - yAxis = { x = 0, y = 0, z = 1 }, - zAxis = { x = 0, y = -1, z = 0 } - } + origin = { + x = 0, + y = -(wallsWidth / 2 - (wallThickness / 2)), + z = 0 + }, + xAxis = { x = 1, y = 0, z = 0 }, + yAxis = { x = 0, y = 0, z = 1 }, + zAxis = { x = 0, y = -1, z = 0 } } sketch003 = startSketchOn(customPlane) |> startProfileAt([0, 0], %) - |> tangentialArc({ offset = 60, radius = height }, %) - |> angledLineToY({ angle = 60, to = 0 }, %) + |> tangentialArc(angle = 60, radius = height) + |> angledLine(angle = 60, endAbsoluteY = 0) |> close() |> extrude(length = wallThickness) // Create the right side wall of the tub -sketch004 = startSketchOn(sketch002, 'END') +sketch004 = startSketchOn(sketch002, face = END) |> startProfileAt([0, 0], %) |> yLine(endAbsolute = height) |> xLine(endAbsolute = wallThickness) |> yLine(endAbsolute = segEndY(seg01)) - |> angledLineToX({ - angle = 180 - 60, - to = wallsWidth / 2 - (wallThickness / 2) - }, %) + |> angledLine(angle = 180 - 60, endAbsoluteX = wallsWidth / 2 - (wallThickness / 2)) |> xLine(length = wallThickness) - |> angledLineToY({ angle = 60, to = segEndY(seg01) }, %) + |> angledLine(angle = 60, endAbsoluteY = segEndY(seg01)) |> yLine(endAbsolute = height) |> xLine(length = wallThickness) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ (frontLength - wallsWidth) / 2 + wallsWidth, height - ((height - exitHeight) / 2) - ], %) - |> tangentialArcTo([frontLength, exitHeight], %) + ]) + |> tangentialArc(endAbsolute = [frontLength, exitHeight]) |> yLine(endAbsolute = 0) |> close(tag = $seg04) |> extrude(length = wallThickness) customPlane2 = { - plane = { - origin = { - x = -1 * (backLength - height + wallsWidth), - y = 0, - z = 0 - }, - xAxis = { x = 0, y = -1, z = 0 }, - yAxis = { x = 0, y = 0, z = 1 }, - zAxis = { x = 1, y = 0, z = 0 } - } + origin = { + x = -1 * (backLength - height + wallsWidth), + y = 0, + z = 0 + }, + xAxis = { x = 0, y = -1, z = 0 }, + yAxis = { x = 0, y = 0, z = 1 }, + zAxis = { x = 1, y = 0, z = 0 } } sketch005 = startSketchOn(customPlane2) |> startProfileAt([0, 0], %) |> yLine(endAbsolute = height) |> xLine(endAbsolute = wallsWidth) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ (frontLength - wallsWidth) / 2 + wallsWidth, height - ((height - exitHeight) / 2) - ], %) - |> tangentialArcTo([frontLength, exitHeight], %) + ]) + |> tangentialArc(endAbsolute = [frontLength, exitHeight]) |> yLine(endAbsolute = 0, tag = $seg03) |> close() |> extrude(length = wallThickness) -sketch006 = startSketchOn(sketch005, seg03) +sketch006 = startSketchOn(sketch005, face = seg03) |> startProfileAt([0, -1 * (backLength - height)], %) |> xLine(endAbsolute = -exitHeight) |> yLine(length = -wallsWidth) @@ -136,7 +123,7 @@ sketch006 = startSketchOn(sketch005, seg03) |> close() |> extrude(length = wallThickness) -sketch007 = startSketchOn(sketch004, 'END') +sketch007 = startSketchOn(sketch004, face = END) |> startProfileAt([0, 0], %) |> xLine(endAbsolute = wallThickness) |> yLine(endAbsolute = height) @@ -145,16 +132,14 @@ sketch007 = startSketchOn(sketch004, 'END') |> extrude(length = wallsWidth - (2 * wallThickness)) customPlane3 = { - plane = { - origin = { - x = -1 * (backLength - height + wallsWidth), - y = 0, - z = wallThickness - }, - xAxis = { x = 0, y = -1, z = 0 }, - yAxis = { x = 1, y = 0, z = 0 }, - zAxis = { x = 0, y = 0, z = 1 } - } + origin = { + x = -1 * (backLength - height + wallsWidth), + y = 0, + z = wallThickness + }, + xAxis = { x = 0, y = -1, z = 0 }, + yAxis = { x = 1, y = 0, z = 0 }, + zAxis = { x = 0, y = 0, z = 1 } } sketch008 = startSketchOn(customPlane3) diff --git a/public/kcl-samples/router-template-cross-bar/main.kcl b/public/kcl-samples/router-template-cross-bar/main.kcl index e3f57794d..4eb23fc4e 100644 --- a/public/kcl-samples/router-template-cross-bar/main.kcl +++ b/public/kcl-samples/router-template-cross-bar/main.kcl @@ -6,7 +6,7 @@ // Define parameters routerDiameter = 12.7 -templateDiameter = 11 / 16 * inch() +templateDiameter = fromInches(11 / 16) slateWidthHalf = 41.5 / 2 minClampingDistance = 50 + 30 templateThickness = 10 @@ -54,17 +54,11 @@ sketch001 = startSketchOn(XZ) extrude001 = extrude(sketch001, length = 5) // Create the second sketch -sketch002 = startSketchOn(extrude001, 'START') +sketch002 = startSketchOn(extrude001, face = START) |> startProfileAt([distanceToInsideEdge, 0], %) - |> angledLine([180, templateThickness], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) + 90, - templateThickness - ], %, $rectangleSegmentB002) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %, $rectangleSegmentC002) + |> angledLine(angle = 180, length = templateThickness, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) + 90, length = templateThickness, tag = $rectangleSegmentB002) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002), tag = $rectangleSegmentC002) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -72,17 +66,11 @@ sketch002 = startSketchOn(extrude001, 'START') extrude002 = extrude(sketch002, length = 13) // Create the third sketch -sketch003 = startSketchOn(extrude001, 'START') +sketch003 = startSketchOn(extrude001, face = START) |> startProfileAt([-distanceToInsideEdge, 0], %) - |> angledLine([0, templateThickness], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - templateThickness - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = templateThickness, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = templateThickness, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -90,17 +78,11 @@ sketch003 = startSketchOn(extrude001, 'START') extrude003 = extrude(sketch003, length = 13) // Create the fourth sketch -sketch004 = startSketchOn(extrude002, 'END') +sketch004 = startSketchOn(extrude002, face = END) |> startProfileAt([-distanceToInsideEdge, 0], %) - |> angledLine([0, distanceToInsideEdge * 2], %, $rectangleSegmentA003) - |> angledLine([ - segAng(rectangleSegmentA003) - 90, - templateThickness - ], %, $rectangleSegmentB003) - |> angledLine([ - segAng(rectangleSegmentA003), - -segLen(rectangleSegmentA003) - ], %, $rectangleSegmentC003) + |> angledLine(angle = 0, length = distanceToInsideEdge * 2, tag = $rectangleSegmentA003) + |> angledLine(angle = segAng(rectangleSegmentA003) - 90, length = templateThickness, tag = $rectangleSegmentB003) + |> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003), tag = $rectangleSegmentC003) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() diff --git a/public/kcl-samples/router-template-slate/main.kcl b/public/kcl-samples/router-template-slate/main.kcl index b1c0ebf6a..cc73ab695 100644 --- a/public/kcl-samples/router-template-slate/main.kcl +++ b/public/kcl-samples/router-template-slate/main.kcl @@ -6,7 +6,7 @@ // Define parameters routerDiameter = 12.7 -templateDiameter = 11 / 16 * inch() +templateDiameter = fromInches(11 / 16) slateWidthHalf = 41.5 / 2 minClampingDistance = 50 + 30 templateThickness = 10 @@ -48,20 +48,14 @@ sketch001 = startSketchOn(XZ) extrude001 = extrude(sketch001, length = 5) // Create the second sketch -sketch002 = startSketchOn(extrude001, 'START') +sketch002 = startSketchOn(extrude001, face = START) |> startProfileAt([ -slateWidthHalf, -templateGap * 2 - (templateDiameter / 2) ], %) |> xLine(length = -7, tag = $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) + 90, - minClampingDistance - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = minClampingDistance, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -69,20 +63,14 @@ sketch002 = startSketchOn(extrude001, 'START') extrude002 = extrude(sketch002, length = 7.5) // Create the third sketch -sketch003 = startSketchOn(extrude001, 'START') +sketch003 = startSketchOn(extrude001, face = START) |> startProfileAt([ slateWidthHalf, -templateGap * 2 - (templateDiameter / 2) ], %) |> xLine(length = 7, tag = $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - minClampingDistance - ], %) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %) + |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = minClampingDistance) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() diff --git a/public/kcl-samples/screenshots/bracket.png b/public/kcl-samples/screenshots/bracket.png index 9623aaddf..cbb37657c 100644 Binary files a/public/kcl-samples/screenshots/bracket.png and b/public/kcl-samples/screenshots/bracket.png differ diff --git a/public/kcl-samples/screenshots/dual-basin-utility-sink.png b/public/kcl-samples/screenshots/dual-basin-utility-sink.png index 90e6bab66..ac38d909f 100644 Binary files a/public/kcl-samples/screenshots/dual-basin-utility-sink.png and b/public/kcl-samples/screenshots/dual-basin-utility-sink.png differ diff --git a/public/kcl-samples/screenshots/exhaust-manifold.png b/public/kcl-samples/screenshots/exhaust-manifold.png index 7a1cd7643..1118d4f26 100644 Binary files a/public/kcl-samples/screenshots/exhaust-manifold.png and b/public/kcl-samples/screenshots/exhaust-manifold.png differ diff --git a/public/kcl-samples/sheet-metal-bracket/main.kcl b/public/kcl-samples/sheet-metal-bracket/main.kcl index 8995901b1..367bf15e1 100644 --- a/public/kcl-samples/sheet-metal-bracket/main.kcl +++ b/public/kcl-samples/sheet-metal-bracket/main.kcl @@ -37,49 +37,25 @@ bracketProfile = startSketchOn(XZ) 0 ], %) |> xLine(length = flangeLength) - |> tangentialArc({ - radius = exteriorBendRadius, - offset = bendAngle - }, %) - |> angledLineToY([bendAngle, hatHeight - thickness], %, $seg01) - |> tangentialArc({ - radius = interiorBendRadius, - offset = -bendAngle - }, %) + |> tangentialArc(radius = exteriorBendRadius, angle = bendAngle) + |> angledLine(angle = bendAngle, endAbsoluteY = hatHeight - thickness, tag = $seg01) + |> tangentialArc(radius = interiorBendRadius, angle = -bendAngle) |> xLine(endAbsolute = 0, tag = $seg02) |> xLine(length = segLen(seg02)) - |> tangentialArc({ - radius = interiorBendRadius, - offset = -bendAngle - }, %) - |> angledLine([-bendAngle, segLen(seg01)], %) - |> tangentialArc({ - radius = exteriorBendRadius, - offset = bendAngle - }, %) + |> tangentialArc(radius = interiorBendRadius, angle = -bendAngle) + |> angledLine(angle = -bendAngle, length = segLen(seg01)) + |> tangentialArc(radius = exteriorBendRadius, angle = bendAngle) |> xLine(length = flangeLength) |> yLine(length = thickness, tag = $seg03) |> xLine(length = -flangeLength, tag = $seg04) - |> tangentialArc({ - radius = interiorBendRadius, - offset = -bendAngle - }, %) - |> angledLine([180 - bendAngle, segLen(seg01)], %) - |> tangentialArc({ - radius = exteriorBendRadius, - offset = bendAngle - }, %) + |> tangentialArc(radius = interiorBendRadius, angle = -bendAngle) + |> angledLine(angle = 180 - bendAngle, length = segLen(seg01)) + |> tangentialArc(radius = exteriorBendRadius, angle = bendAngle) |> xLine(endAbsolute = 0, tag = $seg05) |> xLine(length = -segLen(seg05)) - |> tangentialArc({ - radius = exteriorBendRadius, - offset = bendAngle - }, %) - |> angledLine([bendAngle - 180, segLen(seg01)], %) - |> tangentialArc({ - radius = interiorBendRadius, - offset = -bendAngle - }, %) + |> tangentialArc(radius = exteriorBendRadius, angle = bendAngle) + |> angledLine(angle = bendAngle - 180, length = segLen(seg01)) + |> tangentialArc(radius = interiorBendRadius, angle = -bendAngle) |> xLine(length = -flangeLength, tag = $seg06) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg07) |> close() @@ -95,7 +71,7 @@ bracketProfile = startSketchOn(XZ) ) // Cut the bolt pattern in the left base flange -leftFlangeBoltPattern = startSketchOn(bracketProfile, seg04) +leftFlangeBoltPattern = startSketchOn(bracketProfile, face = seg04) |> circle(center = [-mountingBoltPatternX / 2, overhang], radius = mountingBoltDiameter / 2) |> patternLinear2d( %, @@ -106,7 +82,7 @@ leftFlangeBoltPattern = startSketchOn(bracketProfile, seg04) |> extrude(length = -thickness) // Cut the bolt pattern in the right base flange -rightFlangeBoltPattern = startSketchOn(bracketProfile, seg06) +rightFlangeBoltPattern = startSketchOn(bracketProfile, face = seg06) |> circle(center = [mountingBoltPatternX / 2, overhang], radius = mountingBoltDiameter / 2) |> patternLinear2d( %, @@ -117,7 +93,7 @@ rightFlangeBoltPattern = startSketchOn(bracketProfile, seg06) |> extrude(length = -thickness) // Provision the top flange with holes to mount an object -topFlangeBoltPattern = startSketchOn(bracketProfile, seg05) +topFlangeBoltPattern = startSketchOn(bracketProfile, face = seg05) |> circle( center = [ -componentBoltPatternX / 2, @@ -140,6 +116,6 @@ topFlangeBoltPattern = startSketchOn(bracketProfile, seg05) |> extrude(length = -thickness) // Place a hole at the center of the component bolt pattern to reduce mass -centeredHole = startSketchOn(bracketProfile, seg05) +centeredHole = startSketchOn(bracketProfile, face = seg05) |> circle(center = [0, flangeExtrusion / 2], radius = 0.75) |> extrude(length = -thickness) diff --git a/public/kcl-samples/socket-head-cap-screw/main.kcl b/public/kcl-samples/socket-head-cap-screw/main.kcl index 921d89a43..d805f844d 100644 --- a/public/kcl-samples/socket-head-cap-screw/main.kcl +++ b/public/kcl-samples/socket-head-cap-screw/main.kcl @@ -19,34 +19,19 @@ boltHead = startSketchOn(XZ) |> fillet(radius = 0.020, tags = [topEdge, getOppositeEdge(topEdge)]) // Define the sketch of the hex pattern on the screw head -hexPatternSketch = startSketchOn(boltHead, 'start') +hexPatternSketch = startSketchOn(boltHead, face = START) |> startProfileAt([ boltHexDrive / 2, boltHexFlatLength / 2 ], %) - |> angledLine({ - angle = 270, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 210, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 150, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 90, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 30, - length = boltHexFlatLength - }, %) + |> angledLine(angle = 270, length = boltHexFlatLength) + |> angledLine(angle = 210, length = boltHexFlatLength) + |> angledLine(angle = 150, length = boltHexFlatLength) + |> angledLine(angle = 90, length = boltHexFlatLength) + |> angledLine(angle = 30, length = boltHexFlatLength) |> close() |> extrude(length = -boltHeadLength * 0.75) -boltBody = startSketchOn(boltHead, 'end') +boltBody = startSketchOn(boltHead, face = END) |> circle(center = [0, 0], radius = boltDiameter / 2, tag = $filletEdge) |> extrude(length = boltLength) |> fillet(radius = .020, tags = [getOppositeEdge(filletEdge)]) diff --git a/public/kcl-samples/walkie-talkie/body.kcl b/public/kcl-samples/walkie-talkie/body.kcl index 5a58a3870..c598904c1 100644 --- a/public/kcl-samples/walkie-talkie/body.kcl +++ b/public/kcl-samples/walkie-talkie/body.kcl @@ -26,38 +26,32 @@ body = startSketchOn(XZ) ) // Cut out the indentation for the case -caseIndentSketch = startSketchOn(body, 'END') +caseIndentSketch = startSketchOn(body, face = END) |> startProfileAt([ -width / 2 + offset, height / 2 - (chamferLength + offset / 2 * cos(toRadians(45))) ], %) - |> angledLineToY({ angle = 45, to = height / 2 - offset }, %) + |> angledLine(angle = 45, endAbsoluteY = height / 2 - offset) |> line(endAbsolute = [ width / 2 - (chamferLength + offset / 2 * cos(toRadians(45))), height / 2 - offset ]) - |> angledLineToX({ angle = -45, to = width / 2 - offset }, %) + |> angledLine(angle = -45, endAbsoluteX = width / 2 - offset) |> line(endAbsolute = [ width / 2 - offset, -(height / 2 - (chamferLength + offset / 2 * cos(toRadians(45)))) ]) - |> angledLineToY({ - angle = -135, - to = -height / 2 + offset - }, %) + |> angledLine(angle = -135, endAbsoluteY = -height / 2 + offset) |> line(endAbsolute = [ -(width / 2 - (chamferLength + offset / 2 * cos(toRadians(45)))), -height / 2 + offset ]) - |> angledLineToX({ - angle = -225, - to = -width / 2 + offset - }, %) + |> angledLine(angle = -225, endAbsoluteX = -width / 2 + offset) |> close() extrude002 = extrude(caseIndentSketch, length = -0.0625) // Create the pocket for the screen -screenCutout = startSketchOn(extrude002, 'start') +screenCutout = startSketchOn(extrude002, face = START) |> startProfileAt([-screenWidth / 2, screenYPosition], %) |> xLine(length = screenWidth, tag = $seg01) |> yLine(length = -screenHeight) @@ -67,7 +61,7 @@ screenCutout = startSketchOn(extrude002, 'start') extrude003 = extrude(screenCutout, length = screenDepth) // Create the speaker box -speakerBox = startSketchOn(extrude002, 'start') +speakerBox = startSketchOn(extrude002, face = START) |> startProfileAt([-1.25 / 2, -.125], %) |> xLine(length = speakerBoxWidth) |> yLine(length = -speakerBoxHeight) diff --git a/public/kcl-samples/walkie-talkie/button.kcl b/public/kcl-samples/walkie-talkie/button.kcl index 64128159b..c266c4525 100644 --- a/public/kcl-samples/walkie-talkie/button.kcl +++ b/public/kcl-samples/walkie-talkie/button.kcl @@ -14,9 +14,9 @@ export fn button() { // Sketch the button profile and extrude buttonSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLine({ angle = 180, length = buttonWidth }, %, $tag1) - |> angledLine({ angle = 270, length = buttonHeight }, %, $tag2) - |> angledLine({ angle = 0, length = buttonWidth }, %) + |> angledLine(angle = 180, length = buttonWidth, tag = $tag1) + |> angledLine(angle = 270, length = buttonHeight, tag = $tag2) + |> angledLine(angle = 0, length = buttonWidth) |> close() button = extrude(buttonSketch, length = buttonThickness) |> chamfer( diff --git a/public/kcl-samples/walkie-talkie/case.kcl b/public/kcl-samples/walkie-talkie/case.kcl index 3c71d891d..488f66783 100644 --- a/public/kcl-samples/walkie-talkie/case.kcl +++ b/public/kcl-samples/walkie-talkie/case.kcl @@ -41,34 +41,22 @@ case = startSketchOn(XZ) -width / 2 + offset + caseTolerance, height / 2 - (chamferLength + (offset + caseTolerance) / 2 * cos(toRadians(45))) ], %) - |> angledLineToY({ - angle = 45, - to = height / 2 - (offset + caseTolerance) - }, %) + |> angledLine(angle = 45, endAbsoluteY = height / 2 - (offset + caseTolerance)) |> line(endAbsolute = [ width / 2 - (chamferLength + (offset + caseTolerance) / 2 * cos(toRadians(45))), height / 2 - (offset + caseTolerance) ]) - |> angledLineToX({ - angle = -45, - to = width / 2 - (offset + caseTolerance) - }, %) + |> angledLine(angle = -45, endAbsoluteX = width / 2 - (offset + caseTolerance)) |> line(endAbsolute = [ width / 2 - (offset + caseTolerance), -(height / 2 - (chamferLength + (offset + caseTolerance) / 2 * cos(toRadians(45)))) ]) - |> angledLineToY({ - angle = -135, - to = -height / 2 + offset + caseTolerance - }, %) + |> angledLine(angle = -135, endAbsoluteY = -height / 2 + offset + caseTolerance) |> line(endAbsolute = [ -(width / 2 - (chamferLength + (offset + caseTolerance) / 2 * cos(toRadians(45)))), -height / 2 + offset + caseTolerance ]) - |> angledLineToX({ - angle = -225, - to = -width / 2 + offset + caseTolerance - }, %) + |> angledLine(angle = -225, endAbsoluteX = -width / 2 + offset + caseTolerance) |> close() |> hole(screenSketch, %) |> hole(squareHolePatternSketch, %) diff --git a/public/kcl-samples/walkie-talkie/zoo-logo.kcl b/public/kcl-samples/walkie-talkie/zoo-logo.kcl index 2f0e35817..d4d2382d9 100644 --- a/public/kcl-samples/walkie-talkie/zoo-logo.kcl +++ b/public/kcl-samples/walkie-talkie/zoo-logo.kcl @@ -9,24 +9,15 @@ export fn zLogo(surface, origin, scale) { ], %) |> yLine(length = -0.15 * scale) |> xLine(length = 0.15 * scale) - |> angledLineToX({ - angle = 47.15, - to = 0.3 * scale + origin[0] - }, %, $seg1) + |> angledLine(angle = 47.15, endAbsoluteX = 0.3 * scale + origin[0], tag = $seg1) |> yLine(endAbsolute = 0 + origin[1], tag = $seg3) |> xLine(length = 0.63 * scale) |> yLine(length = 0.225 * scale) |> xLine(length = -0.57 * scale) - |> angledLineToX({ - angle = 47.15, - to = 0.93 * scale + origin[0] - }, %) + |> angledLine(angle = 47.15, endAbsoluteX = 0.93 * scale + origin[0]) |> yLine(length = 0.15 * scale) |> xLine(length = -0.15 * scale) - |> angledLine({ - angle = 47.15, - length = -segLen(seg1) - }, %, $seg2) + |> angledLine(angle = 47.15, length = -segLen(seg1), tag = $seg2) |> yLine(length = segLen(seg3)) |> xLine(endAbsolute = 0 + origin[0]) |> yLine(length = -0.225 * scale) @@ -51,7 +42,7 @@ export fn oLogo(surface, origin, scale) { angleEnd = 47.15 - 6 + 180, radius = .525 * scale }, %) - |> angledLine({ angle = 47.15, length = .24 * scale }, %) + |> angledLine(angle = 47.15, length = .24 * scale) |> arc({ angleStart = 47.15 - 11 + 180, angleEnd = 47.15 + 11, @@ -72,7 +63,7 @@ export fn oLogo2(surface, origin, scale) { angleEnd = 47.15 - 6, radius = .525 * scale }, %) - |> angledLine({ angle = 47.15, length = -.24 * scale }, %) + |> angledLine(angle = 47.15, length = -.24 * scale) |> arc({ angleStart = 47.15 - 11, angleEnd = 47.15 + 11 - 180, diff --git a/rust/Cargo.lock b/rust/Cargo.lock index df3041815..fd7a558a8 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -1780,7 +1780,7 @@ dependencies = [ [[package]] name = "kcl-bumper" -version = "0.1.58" +version = "0.1.61" dependencies = [ "anyhow", "clap", @@ -1791,7 +1791,7 @@ dependencies = [ [[package]] name = "kcl-derive-docs" -version = "0.1.58" +version = "0.1.61" dependencies = [ "Inflector", "anyhow", @@ -1810,7 +1810,7 @@ dependencies = [ [[package]] name = "kcl-directory-test-macro" -version = "0.1.58" +version = "0.1.61" dependencies = [ "proc-macro2", "quote", @@ -1819,7 +1819,7 @@ dependencies = [ [[package]] name = "kcl-language-server" -version = "0.2.58" +version = "0.2.61" dependencies = [ "anyhow", "clap", @@ -1840,7 +1840,7 @@ dependencies = [ [[package]] name = "kcl-language-server-release" -version = "0.1.58" +version = "0.1.61" dependencies = [ "anyhow", "clap", @@ -1860,7 +1860,7 @@ dependencies = [ [[package]] name = "kcl-lib" -version = "0.2.58" +version = "0.2.61" dependencies = [ "anyhow", "approx 0.5.1", @@ -1928,7 +1928,7 @@ dependencies = [ [[package]] name = "kcl-python-bindings" -version = "0.3.58" +version = "0.3.61" dependencies = [ "anyhow", "kcl-lib", @@ -1943,7 +1943,7 @@ dependencies = [ [[package]] name = "kcl-test-server" -version = "0.1.58" +version = "0.1.61" dependencies = [ "anyhow", "hyper 0.14.32", @@ -1956,7 +1956,7 @@ dependencies = [ [[package]] name = "kcl-to-core" -version = "0.1.58" +version = "0.1.61" dependencies = [ "anyhow", "async-trait", @@ -1970,7 +1970,7 @@ dependencies = [ [[package]] name = "kcl-wasm-lib" -version = "0.1.58" +version = "0.1.61" dependencies = [ "bson", "console_error_panic_hook", @@ -2033,9 +2033,9 @@ dependencies = [ [[package]] name = "kittycad-modeling-cmds" -version = "0.2.108" +version = "0.2.113" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f5fbcfb0fe3384592829cd1a5109aa45fb6a3ffc5ff2d164d2fd528ffd4641" +checksum = "fa1c927569925425a1b03711617c384a30cb7554394e8a6a01266910b22421de" dependencies = [ "anyhow", "chrono", @@ -2762,9 +2762,9 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f1c6c3591120564d64db2261bec5f910ae454f01def849b9c22835a84695e86" +checksum = "17da310086b068fbdcefbba30aeb3721d5bb9af8db4987d6735b2183ca567229" dependencies = [ "cfg-if", "indoc", @@ -2781,9 +2781,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9b6c2b34cf71427ea37c7001aefbaeb85886a074795e35f161f5aecc7620a7a" +checksum = "e27165889bd793000a098bb966adc4300c312497ea25cf7a690a9f0ac5aa5fc1" dependencies = [ "once_cell", "target-lexicon", @@ -2791,9 +2791,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5507651906a46432cdda02cd02dd0319f6064f1374c9147c45b978621d2c3a9c" +checksum = "05280526e1dbf6b420062f3ef228b78c0c54ba94e157f5cb724a609d0f2faabc" dependencies = [ "libc", "pyo3-build-config", @@ -2801,9 +2801,9 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0d394b5b4fd8d97d48336bb0dd2aebabad39f1d294edd6bcd2cccf2eefe6f42" +checksum = "5c3ce5686aa4d3f63359a5100c62a127c9f15e8398e5fdeb5deef1fed5cd5f44" dependencies = [ "proc-macro2", "pyo3-macros-backend", @@ -2813,9 +2813,9 @@ dependencies = [ [[package]] name = "pyo3-macros-backend" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd72da09cfa943b1080f621f024d2ef7e2773df7badd51aa30a2be1f8caa7c8e" +checksum = "f4cf6faa0cbfb0ed08e89beb8103ae9724eb4750e3a78084ba4017cbe94f3855" dependencies = [ "heck", "proc-macro2", @@ -3956,9 +3956,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.44.1" +version = "1.44.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a" +checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" dependencies = [ "backtrace", "bytes", diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 30ade99f4..cb5b26e57 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -36,10 +36,10 @@ dashmap = { version = "6.1.0" } http = "1" indexmap = "2.7.0" kittycad = { version = "0.3.36", default-features = false, features = ["js", "requests"] } -kittycad-modeling-cmds = { version = "0.2.108", features = ["ts-rs", "websocket"] } +kittycad-modeling-cmds = { version = "0.2.113", features = ["ts-rs", "websocket"] } lazy_static = "1.5.0" miette = "7.5.0" -pyo3 = { version = "0.24.0" } +pyo3 = { version = "0.24.1" } serde = { version = "1", features = ["derive"] } serde_json = { version = "1" } slog = "2.7.0" diff --git a/rust/justfile b/rust/justfile index 22a105947..b33c9d666 100644 --- a/rust/justfile +++ b/rust/justfile @@ -13,7 +13,9 @@ redo-kcl-stdlib-docs-no-imgs: # Then run the stdlib docs generation redo-kcl-stdlib-docs: TWENTY_TWENTY=overwrite {{cnr}} -p kcl-lib --no-fail-fast -- kcl_test_example + TWENTY_TWENTY=overwrite {{cnr}} --workspace --no-fail-fast docs::kcl_doc::test::test_examples EXPECTORATE=overwrite {{cnr}} -p kcl-lib --no-fail-fast -- docs::gen_std_tests::test_generate_stdlib + EXPECTORATE=overwrite {{cnr}} -p kcl-lib --no-fail-fast -- generate_settings_docs # Copy a test KCL file from executor tests into a new simulation test. copy-exec-test-into-sim-test test_name: @@ -30,25 +32,18 @@ new-sim-test test_name render_to_png="true": cat kcl-lib/tests/simtest.tmpl | sed "s/TEST_NAME_HERE/{{test_name}}/" | sed "s/RENDER_TO_PNG/{{render_to_png}}/" >> kcl-lib/src/simulation_tests.rs # Run a KCL deterministic simulation test case and accept output. -run-sim-test test_name: - # Run all the tests for the first time, in the right order. - {{cita}} -p kcl-lib -- simulation_tests::{{test_name}}::parse - {{cita}} -p kcl-lib -- simulation_tests::{{test_name}}::unparse - {{cita}} -p kcl-lib -- tests::{{test_name}}::kcl_test_execute - {{cita}} -p kcl-lib -- simulation_tests::{{test_name}}::test_after_engine +overwrite-sim-test-sample test_name: + EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} -p kcl-lib --no-quiet -- simulation_tests::kcl_samples::kcl_test_execute_{{test_name}} overwrite-sim-test test_name: - EXPECTORATE=overwrite {{cita}} -p kcl-lib --no-quiet -- simulation_tests::{{test_name}}::parse - EXPECTORATE=overwrite {{cita}} -p kcl-lib --no-quiet -- simulation_tests::{{test_name}}::unparse - EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} -p kcl-lib --no-quiet -- tests::{{test_name}}::kcl_test_execute - EXPECTORATE=overwrite {{cita}} -p kcl-lib --no-quiet -- simulation_tests::{{test_name}}::test_after_engine + EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} -p kcl-lib --no-quiet -- simulation_tests::{{test_name}}::kcl_test_execute # Regenerate all the simulation test output. redo-sim-tests: EXPECTORATE=overwrite TWENTY_TWENTY=overwrite {{cita}} -p kcl-lib --no-quiet -- simulation_tests test: - export RUST_BRACKTRACE="full" && cargo nextest run --workspace --no-fail-fast + export RUST_BRACKTRACE="full" && {{cnr}} --workspace --no-fail-fast bump-kcl-crate-versions bump='patch': # First build the kcl-bumper tool. @@ -56,7 +51,7 @@ bump-kcl-crate-versions bump='patch': ./target/debug/kcl-bumper --bump {{bump}} publish-kcl version: - git tag kcl-{{version}} + git tag kcl-{{version}} -m "Release kcl-{{version}}" cargo publish -p kcl-derive-docs cargo publish -p kcl-directory-test-macro cargo publish -p kcl-lib diff --git a/rust/kcl-bumper/Cargo.toml b/rust/kcl-bumper/Cargo.toml index 5b8320ce4..b131be633 100644 --- a/rust/kcl-bumper/Cargo.toml +++ b/rust/kcl-bumper/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "kcl-bumper" -version = "0.1.58" +version = "0.1.61" edition = "2021" repository = "https://github.com/KittyCAD/modeling-api" rust-version = "1.76" diff --git a/rust/kcl-derive-docs/Cargo.toml b/rust/kcl-derive-docs/Cargo.toml index 97fae7b3a..7b8927616 100644 --- a/rust/kcl-derive-docs/Cargo.toml +++ b/rust/kcl-derive-docs/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "kcl-derive-docs" description = "A tool for generating documentation from Rust derive macros" -version = "0.1.58" +version = "0.1.61" edition = "2021" license = "MIT" repository = "https://github.com/KittyCAD/modeling-app" diff --git a/rust/kcl-derive-docs/src/lib.rs b/rust/kcl-derive-docs/src/lib.rs index 58c101326..3502273c4 100644 --- a/rust/kcl-derive-docs/src/lib.rs +++ b/rust/kcl-derive-docs/src/lib.rs @@ -764,14 +764,14 @@ fn rust_type_to_openapi_type(t: &str) -> String { t = format!("[{inner_type}]") } - if t == "f64" { + if t == "f64" || t == "TyF64" { return "number".to_string(); } else if t == "u32" { return "integer".to_string(); } else if t == "str" { return "string".to_string(); } else { - return t.replace("f64", "number").to_string(); + return t.replace("f64", "number").replace("TyF64", "number").to_string(); } } diff --git a/rust/kcl-directory-test-macro/Cargo.toml b/rust/kcl-directory-test-macro/Cargo.toml index 64e0a5e81..ff40a45cd 100644 --- a/rust/kcl-directory-test-macro/Cargo.toml +++ b/rust/kcl-directory-test-macro/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "kcl-directory-test-macro" description = "A tool for generating tests from a directory of kcl files" -version = "0.1.58" +version = "0.1.61" edition = "2021" license = "MIT" repository = "https://github.com/KittyCAD/modeling-app" diff --git a/rust/kcl-language-server-release/Cargo.toml b/rust/kcl-language-server-release/Cargo.toml index 4b20b6716..7aa9b198b 100644 --- a/rust/kcl-language-server-release/Cargo.toml +++ b/rust/kcl-language-server-release/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "kcl-language-server-release" -version = "0.1.58" +version = "0.1.61" edition = "2021" authors = ["KittyCAD Inc "] publish = false diff --git a/rust/kcl-language-server/Cargo.toml b/rust/kcl-language-server/Cargo.toml index f3443c1ad..929d17434 100644 --- a/rust/kcl-language-server/Cargo.toml +++ b/rust/kcl-language-server/Cargo.toml @@ -2,7 +2,7 @@ name = "kcl-language-server" description = "A language server for KCL." authors = ["KittyCAD Inc "] -version = "0.2.58" +version = "0.2.61" edition = "2021" license = "MIT" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -32,7 +32,7 @@ tracing-subscriber = { workspace = true } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] signal-hook = "0.3.17" -tokio = { version = "1.43.0", features = ["full"] } +tokio = { version = "1.44.2", features = ["full"] } tower-lsp = { version = "0.20.0", features = ["proposed"] } [target.'cfg(target_arch = "wasm32")'.dependencies] diff --git a/rust/kcl-language-server/README.md b/rust/kcl-language-server/README.md index c5a92ff78..5117e9651 100644 --- a/rust/kcl-language-server/README.md +++ b/rust/kcl-language-server/README.md @@ -85,7 +85,7 @@ args = ["server", "--stdio"] ## Development ```bash -$ yarn install +$ npm install $ cargo build $ code . ``` diff --git a/rust/kcl-language-server/client/src/client.ts b/rust/kcl-language-server/client/src/client.ts index 772103c34..65c3b2dfd 100644 --- a/rust/kcl-language-server/client/src/client.ts +++ b/rust/kcl-language-server/client/src/client.ts @@ -9,7 +9,10 @@ export async function createClient( serverOptions: lc.ServerOptions ): Promise { const clientOptions: lc.LanguageClientOptions = { - documentSelector: [{ scheme: 'file', language: 'kcl' }], + documentSelector: [ + { scheme: 'file', language: 'kcl' }, + { scheme: 'untitled', language: 'kcl' }, + ], initializationOptions, traceOutputChannel, outputChannel, diff --git a/rust/kcl-language-server/package.json b/rust/kcl-language-server/package.json index ed2f6aa4f..2f4ef6172 100644 --- a/rust/kcl-language-server/package.json +++ b/rust/kcl-language-server/package.json @@ -118,14 +118,14 @@ } }, "scripts": { - "vscode:prepublish": "yarn run build-base -- --minify", - "deploy": "vsce publish --yarn", + "vscode:prepublish": "npm run build-base -- --minify", + "deploy": "vsce publish --npm", "build-base": "esbuild ./client/src/main.ts --bundle --outfile=dist/main.js --external:vscode --format=cjs --platform=node --target=node16", "test-compile": "tsc -p ./", "compile": "cross-env NODE_ENV=production tsc -b", - "build": "yarn run build-base -- --sourcemap", - "watch": "yarn run build-base -- --sourcemap --watch", - "pretest": "yarn run build && yarn test-compile", + "build": "npm run build-base -- --sourcemap", + "watch": "npm run build-base -- --sourcemap --watch", + "pretest": "npm run build && npm run test-compile", "test": "node ./dist/client/src/test/runTest.js", "package": "vsce package -o kcl-language-server.vsix" }, @@ -138,12 +138,12 @@ "@typescript-eslint/eslint-plugin": "^8.27.0", "@typescript-eslint/parser": "^8.27.0", "@vscode/test-electron": "^2.4.1", - "@vscode/vsce": "^3.3.0", + "@vscode/vsce": "^3.3.2", "cross-env": "^7.0.3", - "esbuild": "^0.25.1", + "esbuild": "^0.25.2", "glob": "^11.0.1", "mocha": "^11.1.0", - "typescript": "^5.8.2" + "typescript": "^5.8.3" }, "dependencies": { "vscode-languageclient": "^9.0.1" diff --git a/rust/kcl-language-server/yarn.lock b/rust/kcl-language-server/yarn.lock deleted file mode 100644 index 2d232da91..000000000 --- a/rust/kcl-language-server/yarn.lock +++ /dev/null @@ -1,2435 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@azure/abort-controller@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.1.0.tgz#788ee78457a55af8a1ad342acb182383d2119249" - integrity sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw== - dependencies: - tslib "^2.2.0" - -"@azure/abort-controller@^2.0.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-2.1.2.tgz#42fe0ccab23841d9905812c58f1082d27784566d" - integrity sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA== - dependencies: - tslib "^2.6.2" - -"@azure/core-auth@^1.4.0", "@azure/core-auth@^1.5.0": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.7.2.tgz#558b7cb7dd12b00beec07ae5df5907d74df1ebd9" - integrity sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g== - dependencies: - "@azure/abort-controller" "^2.0.0" - "@azure/core-util" "^1.1.0" - tslib "^2.6.2" - -"@azure/core-client@^1.4.0": - version "1.9.2" - resolved "https://registry.yarnpkg.com/@azure/core-client/-/core-client-1.9.2.tgz#6fc69cee2816883ab6c5cdd653ee4f2ff9774f74" - integrity sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w== - dependencies: - "@azure/abort-controller" "^2.0.0" - "@azure/core-auth" "^1.4.0" - "@azure/core-rest-pipeline" "^1.9.1" - "@azure/core-tracing" "^1.0.0" - "@azure/core-util" "^1.6.1" - "@azure/logger" "^1.0.0" - tslib "^2.6.2" - -"@azure/core-rest-pipeline@^1.1.0", "@azure/core-rest-pipeline@^1.9.1": - version "1.16.0" - resolved "https://registry.yarnpkg.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.0.tgz#631172e2fe0346cf4410d1c8e01ad98d849738e2" - integrity sha512-CeuTvsXxCUmEuxH5g/aceuSl6w2EugvNHKAtKKVdiX915EjJJxAwfzNNWZreNnbxHZ2fi0zaM6wwS23x2JVqSQ== - dependencies: - "@azure/abort-controller" "^2.0.0" - "@azure/core-auth" "^1.4.0" - "@azure/core-tracing" "^1.0.1" - "@azure/core-util" "^1.9.0" - "@azure/logger" "^1.0.0" - http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.0" - tslib "^2.6.2" - -"@azure/core-tracing@^1.0.0", "@azure/core-tracing@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.1.2.tgz#065dab4e093fb61899988a1cdbc827d9ad90b4ee" - integrity sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA== - dependencies: - tslib "^2.6.2" - -"@azure/core-util@^1.1.0", "@azure/core-util@^1.3.0", "@azure/core-util@^1.6.1", "@azure/core-util@^1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.9.0.tgz#469afd7e6452d5388b189f90d33f7756b0b210d1" - integrity sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw== - dependencies: - "@azure/abort-controller" "^2.0.0" - tslib "^2.6.2" - -"@azure/identity@^4.1.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@azure/identity/-/identity-4.2.1.tgz#22b366201e989b7b41c0e1690e103bd579c31e4c" - integrity sha512-U8hsyC9YPcEIzoaObJlRDvp7KiF0MGS7xcWbyJSVvXRkC/HXo1f0oYeBYmEvVgRfacw7GHf6D6yAoh9JHz6A5Q== - dependencies: - "@azure/abort-controller" "^1.0.0" - "@azure/core-auth" "^1.5.0" - "@azure/core-client" "^1.4.0" - "@azure/core-rest-pipeline" "^1.1.0" - "@azure/core-tracing" "^1.0.0" - "@azure/core-util" "^1.3.0" - "@azure/logger" "^1.0.0" - "@azure/msal-browser" "^3.11.1" - "@azure/msal-node" "^2.9.2" - events "^3.0.0" - jws "^4.0.0" - open "^8.0.0" - stoppable "^1.1.0" - tslib "^2.2.0" - -"@azure/logger@^1.0.0": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.1.2.tgz#3f4b876cefad328dc14aff8b850d63b611e249dc" - integrity sha512-l170uE7bsKpIU6B/giRc9i4NI0Mj+tANMMMxf7Zi/5cKzEqPayP7+X1WPrG7e+91JgY8N+7K7nF2WOi7iVhXvg== - dependencies: - tslib "^2.6.2" - -"@azure/msal-browser@^3.11.1": - version "3.14.0" - resolved "https://registry.yarnpkg.com/@azure/msal-browser/-/msal-browser-3.14.0.tgz#1cb5cab438a9943212aa50c403d11f775c787b21" - integrity sha512-Un85LhOoecJ3HDTS3Uv3UWnXC9/43ZSO+Kc+anSqpZvcEt58SiO/3DuVCAe1A3I5UIBYJNMgTmZPGXQ0MVYrwA== - dependencies: - "@azure/msal-common" "14.10.0" - -"@azure/msal-common@14.10.0": - version "14.10.0" - resolved "https://registry.yarnpkg.com/@azure/msal-common/-/msal-common-14.10.0.tgz#215449726717b53d549953db77562cad6cb8421c" - integrity sha512-Zk6DPDz7e1wPgLoLgAp0349Yay9RvcjPM5We/ehuenDNsz/t9QEFI7tRoHpp/e47I4p20XE3FiDlhKwAo3utDA== - -"@azure/msal-common@14.12.0": - version "14.12.0" - resolved "https://registry.yarnpkg.com/@azure/msal-common/-/msal-common-14.12.0.tgz#844abe269b071f8fa8949dadc2a7b65bbb147588" - integrity sha512-IDDXmzfdwmDkv4SSmMEyAniJf6fDu3FJ7ncOjlxkDuT85uSnLEhZi3fGZpoR7T4XZpOMx9teM9GXBgrfJgyeBw== - -"@azure/msal-node@^2.9.2": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@azure/msal-node/-/msal-node-2.9.2.tgz#e6d3c1661012c1bd0ef68e328f73a2fdede52931" - integrity sha512-8tvi6Cos3m+0KmRbPjgkySXi+UQU/QiuVRFnrxIwt5xZlEEFa69O04RTaNESGgImyBBlYbo2mfE8/U8Bbdk1WQ== - dependencies: - "@azure/msal-common" "14.12.0" - jsonwebtoken "^9.0.0" - uuid "^8.3.0" - -"@esbuild/aix-ppc64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz#c33cf6bbee34975626b01b80451cbb72b4c6c91d" - integrity sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ== - -"@esbuild/android-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz#ea766015c7d2655164f22100d33d7f0308a28d6d" - integrity sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA== - -"@esbuild/android-arm@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.1.tgz#e84d2bf2fe2e6177a0facda3a575b2139fd3cb9c" - integrity sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q== - -"@esbuild/android-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.1.tgz#58337bee3bc6d78d10425e5500bd11370cfdfbed" - integrity sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw== - -"@esbuild/darwin-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz#a46805c1c585d451aa83be72500bd6e8495dd591" - integrity sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ== - -"@esbuild/darwin-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz#0643e003bb238c63fc93ddbee7d26a003be3cd98" - integrity sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA== - -"@esbuild/freebsd-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz#cff18da5469c09986b93e87979de5d6872fe8f8e" - integrity sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A== - -"@esbuild/freebsd-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz#362fc09c2de14987621c1878af19203c46365dde" - integrity sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww== - -"@esbuild/linux-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz#aa90d5b02efc97a271e124e6d1cea490634f7498" - integrity sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ== - -"@esbuild/linux-arm@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz#dfcefcbac60a20918b19569b4b657844d39db35a" - integrity sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ== - -"@esbuild/linux-ia32@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz#6f9527077ccb7953ed2af02e013d4bac69f13754" - integrity sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ== - -"@esbuild/linux-loong64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz#287d2412a5456e5860c2839d42a4b51284d1697c" - integrity sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg== - -"@esbuild/linux-mips64el@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz#530574b9e1bc5d20f7a4f44c5f045e26f3783d57" - integrity sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg== - -"@esbuild/linux-ppc64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz#5d7e6b283a0b321ea42c6bc0abeb9eb99c1f5589" - integrity sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg== - -"@esbuild/linux-riscv64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz#14fa0cd073c26b4ee2465d18cd1e18eea7859fa8" - integrity sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ== - -"@esbuild/linux-s390x@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz#e677b4b9d1b384098752266ccaa0d52a420dc1aa" - integrity sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ== - -"@esbuild/linux-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz#f1c796b78fff5ce393658313e8c58613198d9954" - integrity sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA== - -"@esbuild/netbsd-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz#0d280b7dfe3973f111b02d5fe9f3063b92796d29" - integrity sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g== - -"@esbuild/netbsd-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz#be663893931a4bb3f3a009c5cc24fa9681cc71c0" - integrity sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA== - -"@esbuild/openbsd-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz#d9021b884233673a05dc1cc26de0bf325d824217" - integrity sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg== - -"@esbuild/openbsd-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz#9f1dc1786ed2e2938c404b06bcc48be9a13250de" - integrity sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw== - -"@esbuild/sunos-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz#89aac24a4b4115959b3f790192cf130396696c27" - integrity sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg== - -"@esbuild/win32-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz#354358647a6ea98ea6d243bf48bdd7a434999582" - integrity sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ== - -"@esbuild/win32-ia32@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz#8cea7340f2647eba951a041dc95651e3908cd4cb" - integrity sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A== - -"@esbuild/win32-x64@0.25.1": - version "0.25.1" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz#7d79922cb2d88f9048f06393dbf62d2e4accb584" - integrity sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg== - -"@eslint-community/eslint-utils@^4.4.0": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" - integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== - dependencies: - eslint-visitor-keys "^3.4.3" - -"@eslint-community/regexpp@^4.10.0": - version "4.12.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" - integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - 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" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@tsconfig/strictest@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@tsconfig/strictest/-/strictest-2.0.5.tgz#2cbc67f207ba87fdec2a84ad79b1708cf4edd93b" - integrity sha512-ec4tjL2Rr0pkZ5hww65c+EEPYwxOi4Ryv+0MtjeaSQRJyq322Q27eOQiFbuNgw2hpL4hB1/W/HBGk3VKS43osg== - -"@types/glob@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" - integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== - dependencies: - "@types/minimatch" "^5.1.2" - "@types/node" "*" - -"@types/minimatch@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - -"@types/mocha@^10.0.10": - version "10.0.10" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.10.tgz#91f62905e8d23cbd66225312f239454a23bebfa0" - integrity sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q== - -"@types/node@*", "@types/node@^22.13.10": - version "22.13.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.10.tgz#df9ea358c5ed991266becc3109dc2dc9125d77e4" - integrity sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw== - dependencies: - undici-types "~6.20.0" - -"@types/vscode@^1.97.0": - version "1.97.0" - resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.97.0.tgz#62ce3a32243019aaa4fc20cee2a3de06bc71af4f" - integrity sha512-ueE73loeOTe7olaVyqP9mrRI54kVPJifUPjblZo9fYcv1CuVLPOEKEkqW0GkqPC454+nCEoigLWnC2Pp7prZ9w== - -"@typescript-eslint/eslint-plugin@^8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.27.0.tgz#fbef10802365832ee1d1bd5d2117dcec82727a72" - integrity sha512-4henw4zkePi5p252c8ncBLzLce52SEUz2Ebj8faDnuUXz2UuHEONYcJ+G0oaCF+bYCWVZtrGzq3FD7YXetmnSA== - dependencies: - "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.27.0" - "@typescript-eslint/type-utils" "8.27.0" - "@typescript-eslint/utils" "8.27.0" - "@typescript-eslint/visitor-keys" "8.27.0" - graphemer "^1.4.0" - ignore "^5.3.1" - natural-compare "^1.4.0" - ts-api-utils "^2.0.1" - -"@typescript-eslint/parser@^8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.27.0.tgz#3f6beaa83934467eda34ae82ef04090014df8227" - integrity sha512-XGwIabPallYipmcOk45DpsBSgLC64A0yvdAkrwEzwZ2viqGqRUJ8eEYoPz0CWnutgAFbNMPdsGGvzjSmcWVlEA== - dependencies: - "@typescript-eslint/scope-manager" "8.27.0" - "@typescript-eslint/types" "8.27.0" - "@typescript-eslint/typescript-estree" "8.27.0" - "@typescript-eslint/visitor-keys" "8.27.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.27.0.tgz#b51042927067d677fbfc471605cf40d1ffaee482" - integrity sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw== - dependencies: - "@typescript-eslint/types" "8.27.0" - "@typescript-eslint/visitor-keys" "8.27.0" - -"@typescript-eslint/type-utils@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.27.0.tgz#af3c4eefcb64455ee50aae2d7069918467af085c" - integrity sha512-wVArTVcz1oJOIEJxui/nRhV0TXzD/zMSOYi/ggCfNq78EIszddXcJb7r4RCp/oBrjt8n9A0BSxRMKxHftpDxDA== - dependencies: - "@typescript-eslint/typescript-estree" "8.27.0" - "@typescript-eslint/utils" "8.27.0" - debug "^4.3.4" - ts-api-utils "^2.0.1" - -"@typescript-eslint/types@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.27.0.tgz#3dd01ced4c81e798d1106fda0904f8d5c91051aa" - integrity sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A== - -"@typescript-eslint/typescript-estree@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.27.0.tgz#4e02a1056454a84418cc9bce7c00b1c08b03567a" - integrity sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A== - dependencies: - "@typescript-eslint/types" "8.27.0" - "@typescript-eslint/visitor-keys" "8.27.0" - debug "^4.3.4" - fast-glob "^3.3.2" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^2.0.1" - -"@typescript-eslint/utils@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.27.0.tgz#d9c2a4891c6a85b952a9d5f9656c379ab111cf6d" - integrity sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.27.0" - "@typescript-eslint/types" "8.27.0" - "@typescript-eslint/typescript-estree" "8.27.0" - -"@typescript-eslint/visitor-keys@8.27.0": - version "8.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.27.0.tgz#4a13e9d7ad7e311a07ea1b178b4c9f848ce11334" - integrity sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ== - dependencies: - "@typescript-eslint/types" "8.27.0" - eslint-visitor-keys "^4.2.0" - -"@vscode/test-electron@^2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@vscode/test-electron/-/test-electron-2.4.1.tgz#5c2760640bf692efbdaa18bafcd35fb519688941" - integrity sha512-Gc6EdaLANdktQ1t+zozoBVRynfIsMKMc94Svu1QreOBC8y76x4tvaK32TljrLi1LI2+PK58sDVbL7ALdqf3VRQ== - dependencies: - http-proxy-agent "^7.0.2" - https-proxy-agent "^7.0.5" - jszip "^3.10.1" - ora "^7.0.1" - semver "^7.6.2" - -"@vscode/vsce-sign-alpine-arm64@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.2.tgz#4accc485e55aa6ff04b195b47f722ead57daa58e" - integrity sha512-E80YvqhtZCLUv3YAf9+tIbbqoinWLCO/B3j03yQPbjT3ZIHCliKZlsy1peNc4XNZ5uIb87Jn0HWx/ZbPXviuAQ== - -"@vscode/vsce-sign-alpine-x64@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.2.tgz#4a4b7b505b4cc0f58596394897c49a0bce0e540c" - integrity sha512-n1WC15MSMvTaeJ5KjWCzo0nzjydwxLyoHiMJHu1Ov0VWTZiddasmOQHekA47tFRycnt4FsQrlkSCTdgHppn6bw== - -"@vscode/vsce-sign-darwin-arm64@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz#10aa69feb7f81a3dc68c242038ca03eaff19c12e" - integrity sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ== - -"@vscode/vsce-sign-darwin-x64@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz#3315528f3ea1007a648b3320bff36a33a9e07aa5" - integrity sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw== - -"@vscode/vsce-sign-linux-arm64@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.2.tgz#ce5c5cfc99e3454b4fb770405812b46bd6dca870" - integrity sha512-Ybeu7cA6+/koxszsORXX0OJk9N0GgfHq70Wqi4vv2iJCZvBrOWwcIrxKjvFtwyDgdeQzgPheH5nhLVl5eQy7WA== - -"@vscode/vsce-sign-linux-arm@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.2.tgz#4142fda83e7130b31aedd8aa81e4daa6334323c2" - integrity sha512-Fkb5jpbfhZKVw3xwR6t7WYfwKZktVGNXdg1m08uEx1anO0oUPUkoQRsNm4QniL3hmfw0ijg00YA6TrxCRkPVOQ== - -"@vscode/vsce-sign-linux-x64@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.2.tgz#59ab93f322efb3cf49166d4e2e812789c3117428" - integrity sha512-NsPPFVtLaTlVJKOiTnO8Cl78LZNWy0Q8iAg+LlBiCDEgC12Gt4WXOSs2pmcIjDYzj2kY4NwdeN1mBTaujYZaPg== - -"@vscode/vsce-sign-win32-arm64@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.2.tgz#d095704a14b0404c0b6f696e9889e9a51b31a86c" - integrity sha512-wPs848ymZ3Ny+Y1Qlyi7mcT6VSigG89FWQnp2qRYCyMhdJxOpA4lDwxzlpL8fG6xC8GjQjGDkwbkWUcCobvksQ== - -"@vscode/vsce-sign-win32-x64@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.2.tgz#294ea72b44fedd694d49f5cef4c55bf3876dc257" - integrity sha512-pAiRN6qSAhDM5SVOIxgx+2xnoVUePHbRNC7OD2aOR3WltTKxxF25OfpK8h8UQ7A0BuRkSgREbB59DBlFk4iAeg== - -"@vscode/vsce-sign@^2.0.0": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@vscode/vsce-sign/-/vsce-sign-2.0.4.tgz#b4bf155d16f2a4badc069df850dc86f756124842" - integrity sha512-0uL32egStKYfy60IqnynAChMTbL0oqpqk0Ew0YHiIb+fayuGZWADuIPHWUcY1GCnAA+VgchOPDMxnc2R3XGWEA== - optionalDependencies: - "@vscode/vsce-sign-alpine-arm64" "2.0.2" - "@vscode/vsce-sign-alpine-x64" "2.0.2" - "@vscode/vsce-sign-darwin-arm64" "2.0.2" - "@vscode/vsce-sign-darwin-x64" "2.0.2" - "@vscode/vsce-sign-linux-arm" "2.0.2" - "@vscode/vsce-sign-linux-arm64" "2.0.2" - "@vscode/vsce-sign-linux-x64" "2.0.2" - "@vscode/vsce-sign-win32-arm64" "2.0.2" - "@vscode/vsce-sign-win32-x64" "2.0.2" - -"@vscode/vsce@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@vscode/vsce/-/vsce-3.3.0.tgz#803e41368a95d35693ce049076503f34f89fde09" - integrity sha512-HA/pUyvh/TQWkc4wG7AudPIWUvsR8i4jiWZZgM/a69ncPi9Nm5FDogf/wVEk4EWJs4/UdxU7J6X18dfAwfPbxA== - dependencies: - "@azure/identity" "^4.1.0" - "@vscode/vsce-sign" "^2.0.0" - azure-devops-node-api "^12.5.0" - chalk "^2.4.2" - cheerio "^1.0.0-rc.9" - cockatiel "^3.1.2" - commander "^12.1.0" - form-data "^4.0.0" - glob "^11.0.0" - hosted-git-info "^4.0.2" - jsonc-parser "^3.2.0" - leven "^3.1.0" - markdown-it "^14.1.0" - mime "^1.3.4" - minimatch "^3.0.3" - parse-semver "^1.1.1" - read "^1.0.7" - semver "^7.5.2" - tmp "^0.2.3" - typed-rest-client "^1.8.4" - url-join "^4.0.1" - xml2js "^0.5.0" - yauzl "^2.3.1" - yazl "^2.2.2" - optionalDependencies: - keytar "^7.7.0" - -agent-base@^7.0.2, agent-base@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" - integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== - dependencies: - debug "^4.3.4" - -ansi-colors@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -azure-devops-node-api@^12.5.0: - version "12.5.0" - resolved "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz#38b9efd7c5ac74354fe4e8dbe42697db0b8e85a5" - integrity sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og== - dependencies: - tunnel "0.0.6" - typed-rest-client "^1.8.4" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bl@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" - integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== - dependencies: - buffer "^6.0.3" - inherits "^2.0.4" - readable-stream "^3.4.0" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -browser-stdout@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== - -buffer-equal-constant-time@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" - integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" - -camelcase@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^5.0.0, chalk@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" - integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== - -cheerio-select@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" - integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== - dependencies: - boolbase "^1.0.0" - css-select "^5.1.0" - css-what "^6.1.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - -cheerio@^1.0.0-rc.9: - version "1.0.0-rc.12" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" - integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== - dependencies: - cheerio-select "^2.1.0" - dom-serializer "^2.0.0" - domhandler "^5.0.3" - domutils "^3.0.1" - htmlparser2 "^8.0.1" - parse5 "^7.0.0" - parse5-htmlparser2-tree-adapter "^7.0.0" - -chokidar@^3.5.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -cli-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" - integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== - dependencies: - restore-cursor "^4.0.0" - -cli-spinners@^2.9.0: - version "2.9.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" - integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -cockatiel@^3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/cockatiel/-/cockatiel-3.1.3.tgz#bb1774a498a17e739dd994d56610dc6538b02858" - integrity sha512-xC759TpZ69d7HhfDp8m2WkRwEUiCkxY8Ee2OQH/3H6zmy2D/5Sm+zSTbPRa+V2QyjDtpMvjOIAOVjA2gp6N1kQ== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" - integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cross-env@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" - integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== - dependencies: - cross-spawn "^7.0.1" - -cross-spawn@^7.0.0, cross-spawn@^7.0.1: - version "7.0.6" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" - integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== - dependencies: - boolbase "^1.0.0" - css-what "^6.1.0" - domhandler "^5.0.2" - domutils "^3.0.1" - nth-check "^2.0.1" - -css-what@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -debug@4, debug@^4.3.4, debug@^4.3.5: - version "4.3.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" - integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== - dependencies: - ms "2.1.2" - -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -detect-libc@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" - integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== - -diff@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" - integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== - -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - -domelementtype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - -domutils@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" - integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ecdsa-sig-formatter@1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" - integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== - dependencies: - safe-buffer "^5.0.1" - -emoji-regex@^10.2.1: - version "10.3.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" - integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -entities@^4.2.0, entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -esbuild@^0.25.1: - version "0.25.1" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.1.tgz#a16b8d070b6ad4871935277bda6ccfe852e3fa2f" - integrity sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ== - optionalDependencies: - "@esbuild/aix-ppc64" "0.25.1" - "@esbuild/android-arm" "0.25.1" - "@esbuild/android-arm64" "0.25.1" - "@esbuild/android-x64" "0.25.1" - "@esbuild/darwin-arm64" "0.25.1" - "@esbuild/darwin-x64" "0.25.1" - "@esbuild/freebsd-arm64" "0.25.1" - "@esbuild/freebsd-x64" "0.25.1" - "@esbuild/linux-arm" "0.25.1" - "@esbuild/linux-arm64" "0.25.1" - "@esbuild/linux-ia32" "0.25.1" - "@esbuild/linux-loong64" "0.25.1" - "@esbuild/linux-mips64el" "0.25.1" - "@esbuild/linux-ppc64" "0.25.1" - "@esbuild/linux-riscv64" "0.25.1" - "@esbuild/linux-s390x" "0.25.1" - "@esbuild/linux-x64" "0.25.1" - "@esbuild/netbsd-arm64" "0.25.1" - "@esbuild/netbsd-x64" "0.25.1" - "@esbuild/openbsd-arm64" "0.25.1" - "@esbuild/openbsd-x64" "0.25.1" - "@esbuild/sunos-x64" "0.25.1" - "@esbuild/win32-arm64" "0.25.1" - "@esbuild/win32-ia32" "0.25.1" - "@esbuild/win32-x64" "0.25.1" - -escalade@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint-visitor-keys@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" - integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== - -events@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -expand-template@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" - integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== - -fast-glob@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" - integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.8" - -fastq@^1.6.0: - version "1.19.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" - integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== - dependencies: - reusify "^1.0.4" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== - dependencies: - pend "~1.2.0" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -foreground-child@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.2.1.tgz#767004ccf3a5b30df39bed90718bab43fe0a59f7" - integrity sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -github-from-package@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" - integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@^10.4.5: - version "10.4.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" - integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== - 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" - -glob@^11.0.0, glob@^11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.1.tgz#1c3aef9a59d680e611b53dcd24bb8639cef064d9" - integrity sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw== - dependencies: - foreground-child "^3.1.0" - jackspeak "^4.0.1" - minimatch "^10.0.0" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^2.0.0" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-proto@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - -has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -hasown@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hosted-git-info@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - -htmlparser2@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" - integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - entities "^4.4.0" - -http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" - integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== - dependencies: - agent-base "^7.1.0" - debug "^4.3.4" - -https-proxy-agent@^7.0.0, https-proxy-agent@^7.0.5: - version "7.0.5" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" - integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== - dependencies: - agent-base "^7.0.2" - debug "4" - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" - integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== - -inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-interactive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90" - integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-unicode-supported@^1.1.0, is-unicode-supported@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714" - integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -jackspeak@^3.1.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.0.tgz#a75763ff36ad778ede6a156d8ee8b124de445b4a" - integrity sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jackspeak@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.1.0.tgz#c489c079f2b636dc4cbe9b0312a13ff1282e561b" - integrity sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw== - dependencies: - "@isaacs/cliui" "^8.0.2" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsonc-parser@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a" - integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== - -jsonwebtoken@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" - integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== - dependencies: - jws "^3.2.2" - lodash.includes "^4.3.0" - lodash.isboolean "^3.0.3" - lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" - ms "^2.1.1" - semver "^7.5.4" - -jszip@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" - integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== - dependencies: - lie "~3.3.0" - pako "~1.0.2" - readable-stream "~2.3.6" - setimmediate "^1.0.5" - -jwa@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" - integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== - dependencies: - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jwa@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc" - integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== - dependencies: - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jws@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" - integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== - dependencies: - jwa "^1.4.1" - safe-buffer "^5.0.1" - -jws@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4" - integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== - dependencies: - jwa "^2.0.0" - safe-buffer "^5.0.1" - -keytar@^7.7.0: - version "7.9.0" - resolved "https://registry.yarnpkg.com/keytar/-/keytar-7.9.0.tgz#4c6225708f51b50cbf77c5aae81721964c2918cb" - integrity sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ== - dependencies: - node-addon-api "^4.3.0" - prebuild-install "^7.0.1" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -lie@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" - integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== - dependencies: - immediate "~3.0.5" - -linkify-it@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" - integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== - dependencies: - uc.micro "^2.0.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== - -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" - integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== - -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" - integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== - -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" - integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== - -lodash.once@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-symbols@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-5.1.0.tgz#a20e3b9a5f53fac6aeb8e2bb22c07cf2c8f16d93" - integrity sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA== - dependencies: - chalk "^5.0.0" - is-unicode-supported "^1.1.0" - -lru-cache@^10.2.0: - version "10.2.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" - integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== - -lru-cache@^11.0.0: - version "11.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.0.2.tgz#fbd8e7cf8211f5e7e5d91905c415a3f55755ca39" - integrity sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -markdown-it@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.0.tgz#3c3c5992883c633db4714ccb4d7b5935d98b7d45" - integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== - dependencies: - argparse "^2.0.1" - entities "^4.4.0" - linkify-it "^5.0.0" - mdurl "^2.0.0" - punycode.js "^2.3.1" - uc.micro "^2.1.0" - -mdurl@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" - integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@^1.3.4: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -minimatch@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b" - integrity sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.1.0, minimatch@^5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.4: - version "9.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" - integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.3: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - -mocha@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-11.1.0.tgz#20d7c6ac4d6d6bcb60a8aa47971fca74c65c3c66" - integrity sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg== - dependencies: - ansi-colors "^4.1.3" - browser-stdout "^1.3.1" - chokidar "^3.5.3" - debug "^4.3.5" - diff "^5.2.0" - escape-string-regexp "^4.0.0" - find-up "^5.0.0" - glob "^10.4.5" - he "^1.2.0" - js-yaml "^4.1.0" - log-symbols "^4.1.0" - minimatch "^5.1.6" - ms "^2.1.3" - serialize-javascript "^6.0.2" - strip-json-comments "^3.1.1" - supports-color "^8.1.1" - workerpool "^6.5.1" - yargs "^17.7.2" - yargs-parser "^21.1.1" - yargs-unparser "^2.0.0" - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1, ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -mute-stream@~0.0.4: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -napi-build-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" - integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -node-abi@^3.3.0: - version "3.62.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.62.0.tgz#017958ed120f89a3a14a7253da810f5d724e3f36" - integrity sha512-CPMcGa+y33xuL1E0TcNIu4YyaZCxnnvkVaEXrsosR3FxN+fV8xvb7Mzpb7IgKler10qeMkE6+Dp8qJhpzdq35g== - dependencies: - semver "^7.3.5" - -node-addon-api@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" - integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -object-inspect@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - -once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^8.0.0: - version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -ora@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-7.0.1.tgz#cdd530ecd865fe39e451a0e7697865669cb11930" - integrity sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw== - dependencies: - chalk "^5.3.0" - cli-cursor "^4.0.0" - cli-spinners "^2.9.0" - is-interactive "^2.0.0" - is-unicode-supported "^1.3.0" - log-symbols "^5.1.0" - stdin-discarder "^0.1.0" - string-width "^6.1.0" - strip-ansi "^7.1.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -package-json-from-dist@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" - integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== - -pako@~1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parse-semver@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/parse-semver/-/parse-semver-1.1.1.tgz#9a4afd6df063dc4826f93fba4a99cf223f666cb8" - integrity sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ== - dependencies: - semver "^5.1.0" - -parse5-htmlparser2-tree-adapter@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" - integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== - dependencies: - domhandler "^5.0.2" - parse5 "^7.0.0" - -parse5@^7.0.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== - dependencies: - entities "^4.4.0" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-scurry@^1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-scurry@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580" - integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg== - dependencies: - lru-cache "^11.0.0" - minipass "^7.1.2" - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -prebuild-install@^7.0.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.2.tgz#a5fd9986f5a6251fbc47e1e5c65de71e68c0a056" - integrity sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ== - dependencies: - detect-libc "^2.0.0" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.3" - mkdirp-classic "^0.5.3" - napi-build-utils "^1.0.1" - node-abi "^3.3.0" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^4.0.0" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode.js@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" - integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== - -qs@^6.9.1: - version "6.12.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.1.tgz#39422111ca7cbdb70425541cba20c7d7b216599a" - integrity sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ== - dependencies: - side-channel "^1.0.6" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -read@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== - dependencies: - mute-stream "~0.0.4" - -readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@~2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -restore-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" - integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -reusify@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" - integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -sax@>=0.6.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" - integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== - -semver@^5.1.0: - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^7.3.5, semver@^7.3.7, semver@^7.5.2, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2: - version "7.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" - integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== - -serialize-javascript@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - -set-function-length@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" - integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - object-inspect "^1.13.1" - -signal-exit@^3.0.2: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" - integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== - dependencies: - decompress-response "^6.0.0" - once "^1.3.1" - simple-concat "^1.0.0" - -stdin-discarder@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/stdin-discarder/-/stdin-discarder-0.1.0.tgz#22b3e400393a8e28ebf53f9958f3880622efde21" - integrity sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ== - dependencies: - bl "^5.0.0" - -stoppable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" - integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string-width@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-6.1.0.tgz#96488d6ed23f9ad5d82d13522af9e4c4c3fd7518" - integrity sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^10.2.1" - strip-ansi "^7.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1, strip-ansi@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -tar-fs@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.2.tgz#425f154f3404cb16cb8ff6e671d45ab2ed9596c5" - integrity sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-stream@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tmp@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" - integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -ts-api-utils@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" - integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== - -tslib@^2.2.0, tslib@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -tunnel@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" - integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== - -typed-rest-client@^1.8.4: - version "1.8.11" - resolved "https://registry.yarnpkg.com/typed-rest-client/-/typed-rest-client-1.8.11.tgz#6906f02e3c91e8d851579f255abf0fd60800a04d" - integrity sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA== - dependencies: - qs "^6.9.1" - tunnel "0.0.6" - underscore "^1.12.1" - -typescript@^5.8.2: - version "5.8.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4" - integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ== - -uc.micro@^2.0.0, uc.micro@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" - integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== - -underscore@^1.12.1: - version "1.13.6" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" - integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== - -undici-types@~6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" - integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== - -url-join@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" - integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -uuid@^8.3.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -vscode-jsonrpc@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz#f43dfa35fb51e763d17cd94dcca0c9458f35abf9" - integrity sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA== - -vscode-languageclient@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz#cdfe20267726c8d4db839dc1e9d1816e1296e854" - integrity sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA== - dependencies: - minimatch "^5.1.0" - semver "^7.3.7" - vscode-languageserver-protocol "3.17.5" - -vscode-languageserver-protocol@3.17.5: - version "3.17.5" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz#864a8b8f390835572f4e13bd9f8313d0e3ac4bea" - integrity sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg== - dependencies: - vscode-jsonrpc "8.2.0" - vscode-languageserver-types "3.17.5" - -vscode-languageserver-types@3.17.5: - version "3.17.5" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz#3273676f0cf2eab40b3f44d085acbb7f08a39d8a" - integrity sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg== - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -workerpool@^6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" - integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -xml2js@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7" - integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== - dependencies: - sax ">=0.6.0" - xmlbuilder "~11.0.0" - -xmlbuilder@~11.0.0: - version "11.0.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" - integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs-unparser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.0" - -yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - 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" - -yauzl@^2.3.1: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - -yazl@^2.2.2: - version "2.5.1" - resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35" - integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw== - dependencies: - buffer-crc32 "~0.2.3" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/rust/kcl-lib/Cargo.toml b/rust/kcl-lib/Cargo.toml index dde24f7d6..b1b07ef2e 100644 --- a/rust/kcl-lib/Cargo.toml +++ b/rust/kcl-lib/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "kcl-lib" description = "KittyCAD Language implementation and tools" -version = "0.2.58" +version = "0.2.61" edition = "2021" license = "MIT" repository = "https://github.com/KittyCAD/modeling-app" @@ -103,7 +103,7 @@ tokio-tungstenite = { version = "0.24.0", features = [ tower-lsp = { workspace = true, features = ["proposed", "default"] } [features] -default = ["engine"] +default = ["cli", "engine"] cli = ["dep:clap", "kittycad/clap"] dhat-heap = ["dep:dhat"] # For the lsp server, when run with stdout for rpc we want to disable println. @@ -126,7 +126,7 @@ insta = { version = "1.41.1", features = ["json", "filters", "redactions"] } kcl-directory-test-macro = { version = "0.1", path = "../kcl-directory-test-macro" } miette = { version = "7.5.0", features = ["fancy"] } pretty_assertions = "1.4.1" -tokio = { version = "1.41.1", features = ["rt-multi-thread", "macros", "time"] } +tokio = { version = "1.44.2", features = ["rt-multi-thread", "macros", "time"] } twenty-twenty = "0.8.0" [lints] diff --git a/rust/kcl-lib/e2e/executor/inputs/angled_line.kcl b/rust/kcl-lib/e2e/executor/inputs/angled_line.kcl index 9a3e4f20d..9bc5044f0 100644 --- a/rust/kcl-lib/e2e/executor/inputs/angled_line.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/angled_line.kcl @@ -3,7 +3,7 @@ const part001 = startSketchOn(XY) |> line(end = [15.1, 2.48]) |> line(end = [3.15, -9.85], tag = $seg01) |> line(end = [-15.17, -4.1]) - |> angledLine([segAng(seg01), 12.35], %) + |> angledLine(angle = segAng(seg01), length = 12.35) |> line(end = [-13.02, 10.03]) |> close() |> extrude(length = 4) diff --git a/rust/kcl-lib/e2e/executor/inputs/big_number_angle_to_match_length_x.kcl b/rust/kcl-lib/e2e/executor/inputs/big_number_angle_to_match_length_x.kcl index 05ea423dc..d4229bcb6 100644 --- a/rust/kcl-lib/e2e/executor/inputs/big_number_angle_to_match_length_x.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/big_number_angle_to_match_length_x.kcl @@ -1,9 +1,9 @@ const part001 = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line(end = [1, 3.82], tag = $seg01) - |> angledLineToX([ - -angleToMatchLengthX(seg01, 3, %), - 3 - ], %) + |> angled( + angle = -angleToMatchLengthX(seg01, 3, %), + endAbsoluteX = 3, + ) |> close() |> extrude(length = 10) diff --git a/rust/kcl-lib/e2e/executor/inputs/big_number_angle_to_match_length_y.kcl b/rust/kcl-lib/e2e/executor/inputs/big_number_angle_to_match_length_y.kcl index 66b8ea47a..976cc4312 100644 --- a/rust/kcl-lib/e2e/executor/inputs/big_number_angle_to_match_length_y.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/big_number_angle_to_match_length_y.kcl @@ -1,9 +1,9 @@ const part001 = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line(end = [1, 3.82], tag = $seg01) - |> angledLineToX([ - -angleToMatchLengthY(seg01, 3, %), - 3 - ], %) + |> angledLine( + angle = -angleToMatchLengthY(seg01, 3, %), + endAbsoluteX = 3, + ) |> close() |> extrude(length = 10) diff --git a/rust/kcl-lib/e2e/executor/inputs/boolean-setup-with b/rust/kcl-lib/e2e/executor/inputs/boolean-setup-with-sketch-on-faces.kcl similarity index 50% rename from rust/kcl-lib/e2e/executor/inputs/boolean-setup-with rename to rust/kcl-lib/e2e/executor/inputs/boolean-setup-with-sketch-on-faces.kcl index 81e7139fe..95dd01cb3 100644 --- a/rust/kcl-lib/e2e/executor/inputs/boolean-setup-with +++ b/rust/kcl-lib/e2e/executor/inputs/boolean-setup-with-sketch-on-faces.kcl @@ -5,15 +5,9 @@ profile001 = circle(sketch001, center = [154.36, 113.92], radius = 41.09) extrude001 = extrude(profile001, length = 200) sketch002 = startSketchOn(XY) profile002 = startProfileAt([72.24, -52.05], sketch002) - |> angledLine([0, 181.26], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 21.54 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $mySeg) + |> angledLine(angle = 0, length = 181.26, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 21.54) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $mySeg) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude002 = extrude(profile002, length = 150) @@ -24,36 +18,24 @@ extrude002 = extrude(profile002, length = 150) tag = $seg02, ) -sketch003 = startSketchOn(extrude002, mySeg) +sketch003 = startSketchOn(extrude002, face = mySeg) profile003 = startProfileAt([207.36, 126.19], sketch003) - |> angledLine([0, 33.57], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 99.11 - ], %) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %, $seg01) + |> angledLine(angle = 0, length = 33.57, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 99.11) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002), tag = $seg01) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude003 = extrude(profile003, length = -20) -sketch004 = startSketchOn(extrude003, seg01) +sketch004 = startSketchOn(extrude003, face = seg01) profile004 = startProfileAt([-235.38, 66.16], sketch004) - |> angledLine([0, 24.21], %, $rectangleSegmentA003) - |> angledLine([ - segAng(rectangleSegmentA003) - 90, - 3.72 - ], %) - |> angledLine([ - segAng(rectangleSegmentA003), - -segLen(rectangleSegmentA003) - ], %) + |> angledLine(angle = 0, length = 24.21, tag = $rectangleSegmentA003) + |> angledLine(angle = segAng(rectangleSegmentA003) - 90, length = 3.72) + |> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude004 = extrude(profile004, length = 30) -sketch005 = startSketchOn(extrude002, seg02) +sketch005 = startSketchOn(extrude002, face = seg02) profile005 = startProfileAt([-129.93, -59.19], sketch005) |> xLine(length = 48.79) |> line(end = [1.33, 11.03]) @@ -61,17 +43,11 @@ profile005 = startProfileAt([-129.93, -59.19], sketch005) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude005 = extrude(profile005, length = -10) -sketch006 = startSketchOn(extrude005, seg03) +sketch006 = startSketchOn(extrude005, face = seg03) profile006 = startProfileAt([-95.86, 38.73], sketch006) - |> angledLine([0, 3.48], %, $rectangleSegmentA004) - |> angledLine([ - segAng(rectangleSegmentA004) - 90, - 3.36 - ], %) - |> angledLine([ - segAng(rectangleSegmentA004), - -segLen(rectangleSegmentA004) - ], %) + |> angledLine(angle = 0, length = 3.48, tag = $rectangleSegmentA004) + |> angledLine(angle = segAng(rectangleSegmentA004) - 90, length = 3.36) + |> angledLine(angle = segAng(rectangleSegmentA004), length = -segLen(rectangleSegmentA004)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude006 = extrude(profile006, length = 13) \ No newline at end of file diff --git a/rust/kcl-lib/e2e/executor/inputs/e2e-can-sketch-on-chamfer-no-pipeExpr.kcl b/rust/kcl-lib/e2e/executor/inputs/e2e-can-sketch-on-chamfer-no-pipeExpr.kcl index 66bbbdfb3..63e7b1006 100644 --- a/rust/kcl-lib/e2e/executor/inputs/e2e-can-sketch-on-chamfer-no-pipeExpr.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/e2e-can-sketch-on-chamfer-no-pipeExpr.kcl @@ -1,15 +1,9 @@ @settings(defaultLengthUnit = in) sketch001 = startSketchOn(XZ) |> startProfileAt([75.8, 317.2], %) - |> angledLine([0, 268.43], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 217.26 - ], %, $seg01) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $yo) + |> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $yo) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) |> close() extrude001 = extrude(sketch001, length = 100) diff --git a/rust/kcl-lib/e2e/executor/inputs/e2e-can-sketch-on-chamfer.kcl b/rust/kcl-lib/e2e/executor/inputs/e2e-can-sketch-on-chamfer.kcl index d36ebcf9e..440f88be7 100644 --- a/rust/kcl-lib/e2e/executor/inputs/e2e-can-sketch-on-chamfer.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/e2e-can-sketch-on-chamfer.kcl @@ -1,15 +1,9 @@ @settings(defaultLengthUnit = in) sketch001 = startSketchOn(XZ) |> startProfileAt([75.8, 317.2], %) // [$startCapTag, $EndCapTag] - |> angledLine([0, 268.43], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 217.26 - ], %, $seg01) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $yo) + |> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $yo) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) |> close() extrude001 = extrude(sketch001, length = 100) diff --git a/rust/kcl-lib/e2e/executor/inputs/extrude-custom-plane.kcl b/rust/kcl-lib/e2e/executor/inputs/extrude-custom-plane.kcl index 76adba417..c676cf80e 100644 --- a/rust/kcl-lib/e2e/executor/inputs/extrude-custom-plane.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/extrude-custom-plane.kcl @@ -10,12 +10,10 @@ const extrude000 = extrude(sketch000, length = 1.0) // define a plane with name plane005 const plane005 = { - plane: { - origin: [0.0, 0.0, 1.0], - xAxis: [0.707107, 0.707107, 0.0], - yAxis: [-0.0, 0.0, 1.0], - zAxis: [0.707107, -0.707107, 0.0] - } + origin: [0.0, 0.0, 1.0], + xAxis: [0.707107, 0.707107, 0.0], + yAxis: [-0.0, 0.0, 1.0], + zAxis: [0.707107, -0.707107, 0.0] } // create a sketch with name sketch001 diff --git a/rust/kcl-lib/e2e/executor/inputs/extrude-inside-fn-with-tags.kcl b/rust/kcl-lib/e2e/executor/inputs/extrude-inside-fn-with-tags.kcl index 802cb2ada..754c3076f 100644 --- a/rust/kcl-lib/e2e/executor/inputs/extrude-inside-fn-with-tags.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/extrude-inside-fn-with-tags.kcl @@ -15,7 +15,7 @@ const tabThk = 4 // define a rectangular shape func fn rectShape = (pos, w, l) => { - const rr = startSketchOn('xy') + const rr = startSketchOn(XY) |> startProfileAt([pos[0] - (w / 2), pos[1] - (l / 2)], %) |> line(endAbsolute = [pos[0] + w / 2, pos[1] - (l / 2)], tag = $edge01) |> line(endAbsolute = [pos[0] + w / 2, pos[1] + l / 2], tag = $edge02) @@ -26,12 +26,10 @@ fn rectShape = (pos, w, l) => { // define the bracket plane const bracketPlane = { - plane: { - origin: { x: 0, y: length / 2 + thk, z: 0 }, - xAxis: { x: 1, y: 0, z: 0 }, - yAxis: { x: 0, y: 0, z: 1 }, - zAxis: { x: 0, y: -1, z: 0 } - } + origin: { x: 0, y: length / 2 + thk, z: 0 }, + xAxis: { x: 1, y: 0, z: 0 }, + yAxis: { x: 0, y: 0, z: 1 }, + zAxis: { x: 0, y: -1, z: 0 } } // build the bracket sketch around the body @@ -65,7 +63,7 @@ const bracketBody = bs // sketch on the face -const retBack = startSketchOn(bs, bs.sketch.tags.edge4) +const retBack = startSketchOn(bs, face = bs.sketch.tags.edge4) |> startProfileAt([length / 2 + thk, 0], %) |> line(end = [0, thk]) |> line(end = [-thk, 0]) diff --git a/rust/kcl-lib/e2e/executor/inputs/focusrite_scarlett_mounting_braket.kcl b/rust/kcl-lib/e2e/executor/inputs/focusrite_scarlett_mounting_braket.kcl index feffe9884..4ec89b27e 100644 --- a/rust/kcl-lib/e2e/executor/inputs/focusrite_scarlett_mounting_braket.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/focusrite_scarlett_mounting_braket.kcl @@ -26,12 +26,10 @@ fn rectShape = (pos, w, l) => { // define the bracket plane const bracketPlane = { - plane: { - origin: { x: 0, y: length / 2 + thk, z: 0 }, - xAxis: { x: 1, y: 0, z: 0 }, - yAxis: { x: 0, y: 0, z: 1 }, - zAxis: { x: 0, y: -1, z: 0 } - } + origin: { x: 0, y: length / 2 + thk, z: 0 }, + xAxis: { x: 1, y: 0, z: 0 }, + yAxis: { x: 0, y: 0, z: 1 }, + zAxis: { x: 0, y: -1, z: 0 } } // build the bracket sketch around the body @@ -65,12 +63,10 @@ const bracketBody = bs // define the tab plane const tabPlane = { - plane: { - origin: { x: 0, y: 0, z: depth + thk }, - xAxis: { x: 1, y: 0, z: 0 }, - yAxis: { x: 0, y: 1, z: 0 }, - zAxis: { x: 0, y: 0, z: 1 } - } + origin: { x: 0, y: 0, z: depth + thk }, + xAxis: { x: 1, y: 0, z: 0 }, + yAxis: { x: 0, y: 1, z: 0 }, + zAxis: { x: 0, y: 0, z: 1 } } // build the tabs of the mounting bracket (right side) @@ -131,12 +127,10 @@ const tabsL = startSketchOn(tabPlane) // define a plane for retention bumps const retPlane = { - plane: { - origin: { x: -width / 2 + 20, y: 0, z: 0 }, - xAxis: { x: 0, y: 1, z: 0 }, - yAxis: { x: 0, y: 0, z: 1 }, - zAxis: { x: 1, y: 0, z: 0 } - } + origin: { x: -width / 2 + 20, y: 0, z: 0 }, + xAxis: { x: 0, y: 1, z: 0 }, + yAxis: { x: 0, y: 0, z: 1 }, + zAxis: { x: 1, y: 0, z: 0 } } // build the retention bump in the front diff --git a/rust/kcl-lib/e2e/executor/inputs/global-tags.kcl b/rust/kcl-lib/e2e/executor/inputs/global-tags.kcl index 01930cb1c..25fa5dd51 100644 --- a/rust/kcl-lib/e2e/executor/inputs/global-tags.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/global-tags.kcl @@ -26,12 +26,10 @@ fn rectShape = (pos, w, l) => { // define the bracket plane const bracketPlane = { - plane: { - origin: { x: 0, y: length / 2 + thk, z: 0 }, - xAxis: { x: 1, y: 0, z: 0 }, - yAxis: { x: 0, y: 0, z: 1 }, - zAxis: { x: 0, y: -1, z: 0 } - } + origin: { x: 0, y: length / 2 + thk, z: 0 }, + xAxis: { x: 1, y: 0, z: 0 }, + yAxis: { x: 0, y: 0, z: 1 }, + zAxis: { x: 0, y: -1, z: 0 } } // build the bracket sketch around the body @@ -65,12 +63,10 @@ const bracketBody = bs // define the tab plane const tabPlane = { - plane: { - origin: { x: 0, y: 0, z: depth + thk }, - xAxis: { x: 1, y: 0, z: 0 }, - yAxis: { x: 0, y: 1, z: 0 }, - zAxis: { x: 0, y: 0, z: 1 } - } + origin: { x: 0, y: 0, z: depth + thk }, + xAxis: { x: 1, y: 0, z: 0 }, + yAxis: { x: 0, y: 1, z: 0 }, + zAxis: { x: 0, y: 0, z: 1 } } // build the tabs of the mounting bracket (right side) @@ -131,12 +127,10 @@ const tabsL = startSketchOn(tabPlane) // define a plane for retention bumps const retPlane = { - plane: { - origin: { x: -width / 2 + 20, y: 0, z: 0 }, - xAxis: { x: 0, y: 1, z: 0 }, - yAxis: { x: 0, y: 0, z: 1 }, - zAxis: { x: 1, y: 0, z: 0 } - } + origin: { x: -width / 2 + 20, y: 0, z: 0 }, + xAxis: { x: 0, y: 1, z: 0 }, + yAxis: { x: 0, y: 0, z: 1 }, + zAxis: { x: 1, y: 0, z: 0 } } // build the retention bump in the front diff --git a/rust/kcl-lib/e2e/executor/inputs/i_shape.kcl b/rust/kcl-lib/e2e/executor/inputs/i_shape.kcl index 9440e15de..424df231e 100644 --- a/rust/kcl-lib/e2e/executor/inputs/i_shape.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/i_shape.kcl @@ -10,41 +10,41 @@ let corner_radius = 5.0 let brace_base = startSketchOn(XY) |> startProfileAt([corner_radius, 0], %) |> line(end = [width - corner_radius, 0.0]) - |> tangentialArcToRelative([corner_radius, corner_radius], %) + |> tangentialArc(end = [corner_radius, corner_radius]) |> yLine(length = 25.0 - corner_radius) - |> tangentialArcToRelative([-corner_radius, corner_radius], %) + |> tangentialArc(end = [-corner_radius, corner_radius]) |> xLine(length = -(d_wrist_circumference[0] - (corner_radius * 2))) - |> tangentialArcToRelative([-corner_radius, corner_radius], %) + |> tangentialArc(end = [-corner_radius, corner_radius]) |> yLine(length = length - 25.0 - 23.0 - (corner_radius * 2)) - |> tangentialArcToRelative([corner_radius, corner_radius], %) + |> tangentialArc(end = [corner_radius, corner_radius]) |> xLine(length = 15.0 - (corner_radius * 2)) - |> tangentialArcToRelative([corner_radius, corner_radius], %) + |> tangentialArc(end = [corner_radius, corner_radius]) |> yLine(length = 23.0 - corner_radius) - |> tangentialArcToRelative([-corner_radius, corner_radius], %) + |> tangentialArc(end = [-corner_radius, corner_radius]) |> xLine(length = -(hand_thickness + 15.0 + 15.0 - (corner_radius * 2))) - |> tangentialArcToRelative([-corner_radius, -corner_radius], %) + |> tangentialArc(end = [-corner_radius, -corner_radius]) |> yLine(length = -(23.0 - corner_radius)) - |> tangentialArcToRelative([corner_radius, -corner_radius], %) + |> tangentialArc(end = [corner_radius, -corner_radius]) |> xLine(length = 15.0 - (corner_radius * 2)) - |> tangentialArcToRelative([corner_radius, -corner_radius], %) + |> tangentialArc(end = [corner_radius, -corner_radius]) |> yLine(length = -(length - 25.0 - 23.0 - (corner_radius * 2))) - |> tangentialArcToRelative([-corner_radius, -corner_radius], %) + |> tangentialArc(end = [-corner_radius, -corner_radius]) |> xLine(length = -(d_wrist_circumference[1] + d_wrist_circumference[2] + d_wrist_circumference[3] - hand_thickness - corner_radius)) - |> tangentialArcToRelative([-corner_radius, -corner_radius], %) + |> tangentialArc(end = [-corner_radius, -corner_radius]) |> yLine(length = -(25.0 - corner_radius)) - |> tangentialArcToRelative([corner_radius, -corner_radius], %) + |> tangentialArc(end = [corner_radius, -corner_radius]) |> close() let inner = startSketchOn(XY) |> startProfileAt([0, 0], %) |> xLine(length = 1.0) - |> tangentialArcToRelative([corner_radius, corner_radius], %) + |> tangentialArc(end = [corner_radius, corner_radius]) |> yLine(length = 25.0 - (corner_radius * 2)) - |> tangentialArcToRelative([-corner_radius, corner_radius], %) + |> tangentialArc(end = [-corner_radius, corner_radius]) |> xLine(length = -1.0) - |> tangentialArcToRelative([-corner_radius, -corner_radius], %) + |> tangentialArc(end = [-corner_radius, -corner_radius]) |> yLine(length = -(25.0 - (corner_radius * 2))) - |> tangentialArcToRelative([corner_radius, -corner_radius], %) + |> tangentialArc(end = [corner_radius, -corner_radius]) |> close() let final = brace_base diff --git a/rust/kcl-lib/e2e/executor/inputs/lego.kcl b/rust/kcl-lib/e2e/executor/inputs/lego.kcl index 66426668d..ed2f021b7 100644 --- a/rust/kcl-lib/e2e/executor/inputs/lego.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/lego.kcl @@ -27,7 +27,7 @@ const s = startSketchOn(XY) |> close() |> extrude(length = height) -const shellExtrude = startSketchOn(s, "start") +const shellExtrude = startSketchOn(s, face = "start") |> startProfileAt([ -(total_width / 2 - t), -(total_length / 2 - t) @@ -38,7 +38,7 @@ const shellExtrude = startSketchOn(s, "start") |> close() |> extrude(length = -(height - t)) -const peg = startSketchOn(s, "end") +const peg = startSketchOn(s, face = "end") |> circle( center= [ -(total_width / 2 - wSegments), -(total_length / 2 - lSegments) diff --git a/rust/kcl-lib/e2e/executor/inputs/lsystem.kcl b/rust/kcl-lib/e2e/executor/inputs/lsystem.kcl index 3fa3ec88e..06ba1986a 100644 --- a/rust/kcl-lib/e2e/executor/inputs/lsystem.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/lsystem.kcl @@ -95,7 +95,7 @@ fn F = (state, F) => { } else { // Pass onto the next instruction - state |> setSketch(%, angledLine({ angle: state.currentAngle, length: state.currentLength }, state.q)) + state |> setSketch(%, angledLine(state.q, angle = state.currentAngle, length = state.currentLength)) } } diff --git a/rust/kcl-lib/e2e/executor/inputs/order-sketch-extrude-in-order.kcl b/rust/kcl-lib/e2e/executor/inputs/order-sketch-extrude-in-order.kcl index 7b98930b1..595db503e 100644 --- a/rust/kcl-lib/e2e/executor/inputs/order-sketch-extrude-in-order.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/order-sketch-extrude-in-order.kcl @@ -1,19 +1,17 @@ // define a plane with UID 94894440791888 const plane94894440791888 = { - plane: { - origin: [0.005000000000000001, 0.01, -0.005], - xAxis: [ - 0.9285064634886234, - 0.37131623619207604, - 0.0 - ], - yAxis: [-0.0, 0.0, 1.0], - zAxis: [ - 0.37131623619207604, - -0.9285064634886234, - 0.0 - ] - } + origin: [0.005000000000000001, 0.01, -0.005], + xAxis: [ + 0.9285064634886234, + 0.37131623619207604, + 0.0 + ], + yAxis: [-0.0, 0.0, 1.0], + zAxis: [ + 0.37131623619207604, + -0.9285064634886234, + 0.0 + ] } // create a sketch with UID 94894440902176 diff --git a/rust/kcl-lib/e2e/executor/inputs/order-sketch-extrude-out-of-order.kcl b/rust/kcl-lib/e2e/executor/inputs/order-sketch-extrude-out-of-order.kcl index c4395b2df..f9d7286f6 100644 --- a/rust/kcl-lib/e2e/executor/inputs/order-sketch-extrude-out-of-order.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/order-sketch-extrude-out-of-order.kcl @@ -1,19 +1,17 @@ // define a plane with UID 94894440791888 const plane94894440791888 = { - plane: { - origin: [0.005000000000000001, 0.01, -0.005], - xAxis: [ - 0.9285064634886234, - 0.37131623619207604, - 0.0 - ], - yAxis: [-0.0, 0.0, 1.0], - zAxis: [ - 0.37131623619207604, - -0.9285064634886234, - 0.0 - ] - } + origin: [0.005000000000000001, 0.01, -0.005], + xAxis: [ + 0.9285064634886234, + 0.37131623619207604, + 0.0 + ], + yAxis: [-0.0, 0.0, 1.0], + zAxis: [ + 0.37131623619207604, + -0.9285064634886234, + 0.0 + ] } // create a sketch with UID 94894440902176 diff --git a/rust/kcl-lib/e2e/executor/inputs/parametric_with_tan_arc.kcl b/rust/kcl-lib/e2e/executor/inputs/parametric_with_tan_arc.kcl index fabaf0798..6fe6d3359 100644 --- a/rust/kcl-lib/e2e/executor/inputs/parametric_with_tan_arc.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/parametric_with_tan_arc.kcl @@ -11,17 +11,17 @@ const wallMountL = 8 const bracket = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line(end = [0, wallMountL]) - |> tangentialArc({ - radius: filletR, - offset: 90 - }, %) + |> tangentialArc( + radius = filletR, + angle = 90, + ) |> line(end = [-shelfMountL, 0]) |> line(end = [0, -thickness]) |> line(end = [shelfMountL, 0]) - |> tangentialArc({ - radius: filletR - thickness, - offset: -90 - }, %) + |> tangentialArc( + radius = filletR - thickness, + angle = -90, + ) |> line(end = [0, -wallMountL]) |> close() |> extrude(length = width) diff --git a/rust/kcl-lib/e2e/executor/inputs/pentagon_fillet_sugar.kcl b/rust/kcl-lib/e2e/executor/inputs/pentagon_fillet_sugar.kcl index 1fc82d798..0d2d1a758 100644 --- a/rust/kcl-lib/e2e/executor/inputs/pentagon_fillet_sugar.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/pentagon_fillet_sugar.kcl @@ -6,13 +6,13 @@ let circ = {angle_start: 0, angle_end: 360, radius: radius} let triangleLen = 500 const p = startSketchOn(XY) |> startProfileAt([0, 0], %) - |> angledLine({angle: 60, length:triangleLen}, %, $a) - |> angledLine({angle: 180, length: triangleLen}, %, $b) - |> angledLine({angle: 300, length: triangleLen}, %, $c) + |> angledLine(angle = 60, length = triangleLen, tag = $a) + |> angledLine(angle = 180, length = triangleLen, tag = $b) + |> angledLine(angle = 300, length = triangleLen, tag = $c) |> extrude(length = triangleHeight) fn circl = (x, face) => { -return startSketchOn(p, face) +return startSketchOn(p, face = face) |> startProfileAt([x + radius, triangleHeight/2], %) |> arc(circ, %, $arc_tag) |> close() diff --git a/rust/kcl-lib/e2e/executor/inputs/poop_chute.kcl b/rust/kcl-lib/e2e/executor/inputs/poop_chute.kcl index f5ad1b805..3ea6728d4 100644 --- a/rust/kcl-lib/e2e/executor/inputs/poop_chute.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/poop_chute.kcl @@ -12,20 +12,17 @@ Fy = 0.5 sketch001 = startSketchOn('-YZ') |> startProfileAt([back_walls_width / 2, 0], %) |> xLine(length = wall_thickness / 2) - |> angledLineToX({ angle: 45, to: back_walls_width }, %, $seg01) + |> angledLine(angle = 45, endAbsoluteX = back_walls_width, tag = $seg01) |> yLine(endAbsolute = height) |> xLine(length = -wall_thickness) |> yLine(endAbsolute = segEndY(seg01)) - |> angledLineToX({ - angle: 45, - to: back_walls_width / 2 + wall_thickness / 2 - }, %) + |> angledLine(angle = 45, endAbsoluteX = back_walls_width / 2 + wall_thickness / 2) |> xLine(length = -wall_thickness) - |> angledLineToX({ angle: 180 - 45, to: wall_thickness }, %) + |> angledLine(angle = 180 - 45, endAbsoluteX = wall_thickness) |> yLine(endAbsolute = height) |> xLine(endAbsolute = 0) |> yLine(endAbsolute = segEndY(seg01)) - |> angledLineToY({ angle: 180 - 45, to: 0 }, %) + |> angledLine(angle = 180 - 45, endAbsoluteY = 0) |> close() part001 = revolve({ angle: 90, @@ -40,19 +37,16 @@ part001 = revolve({ sketch002 = startSketchOn('-YZ') |> startProfileAt([back_walls_width / 2, 0], %) |> xLine(length = wall_thickness / 2) - |> angledLineToX({ angle: 45, to: back_walls_width }, %, $seg02) + |> angledLine(angle = 45, endAbsoluteX = back_walls_width, tag = $seg02) |> yLine(endAbsolute = height) |> xLine(length = -wall_thickness) |> yLine(endAbsolute = segEndY(seg01)) - |> angledLineToX({ - angle: 45, - to: back_walls_width / 2 + wall_thickness / 2 - }, %) + |> angledLine(angle = 45, endAbsoluteX = back_walls_width / 2 + wall_thickness / 2) |> xLine(length = -wall_thickness) - |> angledLineToX({ angle: 180 - 45, to: wall_thickness }, %) + |> angledLine(angle = 180 - 45, endAbsoluteX = wall_thickness) |> yLine(endAbsolute = height) |> xLine(endAbsolute = 0) |> yLine(endAbsolute = segEndY(seg02)) - |> angledLineToY({ angle: 180 - 45, to: 0 }, %) + |> angledLine(angle = 180 - 45, endAbsoluteY = 0) |> close() |> extrude(length = back_length - height) \ No newline at end of file diff --git a/rust/kcl-lib/e2e/executor/inputs/router-template-slate.kcl b/rust/kcl-lib/e2e/executor/inputs/router-template-slate.kcl index f2ea4f3f8..8575cba12 100644 --- a/rust/kcl-lib/e2e/executor/inputs/router-template-slate.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/router-template-slate.kcl @@ -33,37 +33,25 @@ const sketch001 = startSketchOn(XZ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude001 = extrude(sketch001, length = 5) -const sketch002 = startSketchOn(extrude001, 'START') +const sketch002 = startSketchOn(extrude001, face = 'START') |> startProfileAt([ -slateWidthHalf, -templateGap * 2 - (templateDiameter / 2) ], %) |> xLine(length = -7, tag = $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001, %) + 90, - minClampingDistance - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001, %), - -segLen(rectangleSegmentA001, %) - ], %, $rectangleSegmentC001) + |> angledLine(angle = segAng(rectangleSegmentA001, %) + 90, length = minClampingDistance, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001, %), length = -segLen(rectangleSegmentA001, %), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude002 = extrude(sketch002, length = 7.5) -const sketch003 = startSketchOn(extrude001, 'START') +const sketch003 = startSketchOn(extrude001, face = 'START') |> startProfileAt([ slateWidthHalf, -templateGap * 2 - (templateDiameter / 2) ], %) |> xLine(length = 7, tag = $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002, %) - 90, - minClampingDistance - ], %) - |> angledLine([ - segAng(rectangleSegmentA002, %), - -segLen(rectangleSegmentA002, %) - ], %) + |> angledLine(angle = segAng(rectangleSegmentA002, %) - 90, length = minClampingDistance) + |> angledLine(angle = segAng(rectangleSegmentA002, %), length = -segLen(rectangleSegmentA002, %)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude003 = extrude(sketch003, length = 7.5) diff --git a/rust/kcl-lib/e2e/executor/inputs/scoped-tags.kcl b/rust/kcl-lib/e2e/executor/inputs/scoped-tags.kcl index 5ee1962fa..8ee46e93a 100644 --- a/rust/kcl-lib/e2e/executor/inputs/scoped-tags.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/scoped-tags.kcl @@ -1,15 +1,21 @@ fn rect = (origin) => { return startSketchOn(XZ) |> startProfileAt(origin, %) - |> angledLine([0, 191.26], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 196.99 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine( + angle = 0, + length = 191.26, + tag = $rectangleSegmentA001, + ) + |> angledLine( + angle = segAng(rectangleSegmentA001) - 90, + length = 196.99, + tag = $rectangleSegmentB001, + ) + |> angledLine( + angle = segAng(rectangleSegmentA001), + length = -segLen(rectangleSegmentA001), + tag = $rectangleSegmentC001, + ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() } diff --git a/rust/kcl-lib/e2e/executor/inputs/server-rack-heavy.kcl b/rust/kcl-lib/e2e/executor/inputs/server-rack-heavy.kcl index 2b9bb2dc9..10315964b 100644 --- a/rust/kcl-lib/e2e/executor/inputs/server-rack-heavy.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/server-rack-heavy.kcl @@ -11,7 +11,6 @@ const width = 21.53 // simple caster model at each corner fn caster = (originStart) => { const plane001c = { - plane: { origin: [ -(3.543 - 2.756) / 2 + originStart[0], -(3.543 - 2.756) / 2 + originStart[1], @@ -20,7 +19,6 @@ fn caster = (originStart) => { x_axis: [1.0, 0.0, 0.0], y_axis: [0.0, 1.0, 0.0], z_axis: [0.0, 0.0, 1.0] - } } const sketch001c = startSketchOn(plane001c) @@ -48,7 +46,7 @@ fn caster = (originStart) => { ], radius = 8.8 / 2 / 25.4 ), %) |> extrude(length = -.25) - const sketch002c = startSketchOn(sketch001c, 'START') + const sketch002c = startSketchOn(sketch001c, face = 'START') |> startProfileAt([-originStart[0], 2.2 + originStart[1]], %) |> arc({ angle_start: 30, @@ -59,7 +57,6 @@ fn caster = (originStart) => { |> extrude(length = 3.1) const plane002c = { - plane: { origin: [ 0 + originStart[0], 0.8 + originStart[1], @@ -68,7 +65,6 @@ fn caster = (originStart) => { x_axis: [1, 0, 0], y_axis: [0, 0, 1], z_axis: [1, 0, 0] - } } const sketch003c = startSketchOn(plane002c) |> circle(center = [0, 1.2], radius = 2.48 / 2) @@ -96,7 +92,6 @@ caster([ // left wall const plane001 = { - plane: { origin: [ originStart[0] - 4, originStart[1] + 2, @@ -105,13 +100,12 @@ const plane001 = { x_axis: [0, 1, 0], y_axis: [0, 0, 1], z_axis: [1, 0, 0] - } } const sketch001l = startSketchOn(plane001) |> startProfileAt([0, 0], %) |> xLine(length = serverDepth + .8) - |> angledLineToY({ angle: -45, to: 1 }, %) + |> angledLine(angle = -45, endAbsoluteY = 1) |> xLine(length = -serverDepth + 2 - .8, tag = $seg01) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -120,10 +114,7 @@ const extrude001l = extrude(sketch001l, length = 1) const sketch002l = startSketchOn(plane001) |> startProfileAt([serverDepth + .8, 0], %) |> yLine(length = railHeight * 1.75 + 2) - |> angledLineToX({ - angle: -135, - to: serverDepth - 1 + .8 - }, %) + |> angledLine(angle = -135, endAbsoluteX = serverDepth - 1 + .8) |> yLine(length = -railHeight * 1.75) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -135,10 +126,7 @@ const sketch003l = startSketchOn(plane001) railHeight * 1.75 + 2 ], %) |> xLine(length = -serverDepth - .8, tag = $seg02) - |> angledLineToY({ - angle: -45, - to: railHeight * 1.75 - 1 + 2 - }, %) + |> angledLine(angle = -45, endAbsoluteY = railHeight * 1.75 - 1 + 2) |> xLine(length = serverDepth - 2 + .8) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -147,10 +135,7 @@ const extrude003l = extrude(sketch003l, length = 1) const sketch004l = startSketchOn(plane001) |> startProfileAt([0, 0], %) |> yLine(length = railHeight * 1.75 + 2) - |> angledLineToY({ - angle: 135, - to: railHeight * 1.75 + 2 - 1 - }, %) + |> angledLine(angle = 135, endAbsoluteY = railHeight * 1.75 + 2 - 1) |> yLine(length = -railHeight * 1.75) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -172,8 +157,8 @@ const sketch006l = startSketchOn(plane001) intersectTag: lineToIntersect4, offset: 0 }, %) - |> angledLine({ angle: -70, length: 1.414 }, %) - |> angledLineToY({ angle: 70 + 180, to: 2 - 1 }, %) + |> angledLine(angle = -70, length = 1.414 ) + |> angledLine(angle = 70 + 180, endAbsoluteY = 2 - 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude006l = extrude(sketch006l, length = 1) @@ -188,18 +173,14 @@ const sketch007l = startSketchOn(plane001) intersectTag: lineToIntersect5, offset: 0 }, %) - |> angledLine({ angle: -70, length: 1.414 }, %) - |> angledLineToY({ - angle: 70 + 180, - to: railHeight * 1.75 + 1 - }, %) + |> angledLine(angle = -70, length = 1.414 ) + |> angledLine(angle = 70 + 180, endAbsoluteY = railHeight * 1.75 + 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude007l = extrude(sketch007l, length = 1) // right wall const plane002 = { - plane: { origin: [ originStart[0] - 4 + width - 1, originStart[1] - 1, @@ -208,13 +189,12 @@ const plane002 = { x_axis: [0, 1, 0], y_axis: [0, 0, 1], z_axis: [1, 0, 0] - } } const sketch001w = startSketchOn(plane002) |> startProfileAt([0, 0], %) |> xLine(length = depth) - |> angledLineToY({ angle: -45, to: 1 }, %) + |> angledLine(angle = -45, endAbsoluteY = 1) |> xLine(length = -depth + 2, tag = $seg01w) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -223,7 +203,7 @@ const extrude001w = extrude(sketch001w, length = 1) const sketch002w = startSketchOn(plane002) |> startProfileAt([depth, 0], %) |> yLine(length = railHeight * 1.75 + 2) - |> angledLineToX({ angle: -135, to: depth - 1 }, %) + |> angledLine(angle = -135, endAbsoluteX = depth - 1) |> yLine(length = -railHeight * 1.75) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -232,10 +212,7 @@ const extrude002w = extrude(sketch002w, length = 1) const sketch003w = startSketchOn(plane002) |> startProfileAt([depth, railHeight * 1.75 + 2], %) |> xLine(length = -depth, tag = $seg02w) - |> angledLineToY({ - angle: -45, - to: railHeight * 1.75 - 1 + 2 - }, %) + |> angledLine(angle = -45, endAbsoluteY = railHeight * 1.75 - 1 + 2) |> xLine(length = depth - 2) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -244,10 +221,7 @@ const extrude003w = extrude(sketch003w, length = 1) const sketch004w = startSketchOn(plane002) |> startProfileAt([0, 0], %) |> yLine(length = railHeight * 1.75 + 2) - |> angledLineToY({ - angle: 135, - to: railHeight * 1.75 + 2 - 1 - }, %) + |> angledLine(angle = 135, endAbsoluteY = railHeight * 1.75 + 2 - 1) |> yLine(length = -railHeight * 1.75) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -255,9 +229,9 @@ const extrude004w = extrude(sketch004w, length = 1) const sketch005w = startSketchOn(plane002) |> startProfileAt([1, 40.6 + 1.75 / 2], %) - |> angledLine({ angle: -23, length: 35.5 }, %) - |> angledLine({ angle: -23 + 90 + 45, length: 1.413 }, %) - |> angledLineToX({ angle: -23, to: 1 }, %, $lineToIntersect) + |> angledLine(angle = -23, length = 35.5 ) + |> angledLine(angle = -23 + 90 + 45, length = 1.413 ) + |> angledLine(angle = -23, endAbsoluteX = 1, tag = $lineToIntersect) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude005w = extrude(sketch005w, length = 1) @@ -267,7 +241,7 @@ const sketch006w = startSketchOn(plane002) 1 + 35.5 * cos(23 * pi() / 180), 40.6 - (35.5 * sin(23 * pi() / 180)) + 1.75 / 2 ], %) - |> angledLineToX({ angle: -23 + 90, to: depth - 1 }, %) + |> angledLine(angle = -23 + 90, endAbsoluteX = depth - 1) |> yLine(length = 2.56) |> angledLineThatIntersects({ angle: -23 + 90 + 180, @@ -280,8 +254,8 @@ const extrude006w = extrude(sketch006w, length = 1) const sketch007w = startSketchOn(plane002) |> startProfileAt([depth - 1, 60.65 + 1.75 / 2], %) - |> angledLine({ angle: -23 + 180, length: 34.93 }, %, $lineToIntersect3) - |> angledLine({ angle: 23 - 90, length: 1.414 }, %) + |> angledLine(angle = -23 + 180, length = 34.93 , tag = $lineToIntersect3) + |> angledLine(angle = 23 - 90, length = 1.414 ) |> angledLineThatIntersects({ angle: -23 + 180, intersectTag: lineToIntersect2, @@ -298,7 +272,7 @@ const sketch008w = startSketchOn(plane002) intersectTag: lineToIntersect3, offset: 0 }, %) - |> angledLine({ angle: -23 - 45, length: 1.414 }, %) + |> angledLine(angle = -23 - 45, length = 1.414 ) |> angledLineThatIntersects({ angle: -23 - 90, intersectTag: lineToIntersect, @@ -310,18 +284,18 @@ const extrude008w = extrude(sketch008w, length = 1) const sketch009w = startSketchOn(plane002) |> startProfileAt([31.2, 33.3 + 1.75 / 2], %) - |> angledLine({ angle: -23 - 45, length: 1.414 }, %) - |> angledLine({ angle: 90 - 23, length: 28 }, %) - |> angledLine({ angle: -23 + 45, length: -1.414 }, %) + |> angledLine(angle = -23 - 45, length = 1.414 ) + |> angledLine(angle = 90 - 23, length = 28 ) + |> angledLine(angle = -23 + 45, length = -1.414 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude009w = extrude(sketch009w, length = 1) const sketch010w = startSketchOn(plane002) |> startProfileAt([31.2, 33.3 + 1.75 / 2], %) - |> angledLine({ angle: -23 - 45, length: 1.414 }, %) - |> angledLine({ angle: 180 - 23, length: 28 }, %) - |> angledLine({ angle: -23 + 45, length: 1.414 }, %) + |> angledLine(angle = -23 - 45, length = 1.414 ) + |> angledLine(angle = 180 - 23, length = 28 ) + |> angledLine(angle = -23 + 45, length = 1.414 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude010w = extrude(sketch010w, length = 1) @@ -331,9 +305,9 @@ const sketch011w = startSketchOn(plane002) 31.2 - ((28 - 2) * cos(23 * pi() / 180)), 33.3 + (28 - 2) * sin(23 * pi() / 180) + 1.75 / 2 ], %) - |> angledLine({ angle: 90 - 23, length: 28 - 2 }, %) - |> angledLine({ angle: -23 - 45, length: -1.414 }, %) - |> angledLine({ angle: 90 - 23 + 180, length: 28 }, %) + |> angledLine(angle = 90 - 23, length = 28 - 2 ) + |> angledLine(angle = -23 - 45, length = -1.414 ) + |> angledLine(angle = 90 - 23 + 180, length = 28 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude011w = extrude(sketch011w, length = 1) @@ -343,9 +317,9 @@ const sketch012w = startSketchOn(plane002) 31.2 + (28 - 2) * sin(23 * pi() / 180), 33.3 + (28 - 2) * cos(23 * pi() / 180) + 1.75 / 2 ], %) - |> angledLine({ angle: 180 - 23, length: 28 - 2 }, %) - |> angledLine({ angle: -23 - 45, length: -1.414 }, %) - |> angledLine({ angle: -23, length: 28 }, %) + |> angledLine(angle = 180 - 23, length = 28 - 2 ) + |> angledLine(angle = -23 - 45, length = -1.414 ) + |> angledLine(angle = -23, length = 28 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude012w = extrude(sketch012w, length = 1) @@ -355,8 +329,8 @@ const sketch013w = startSketchOn(plane002) 1 + 4 * cos(23 * pi() / 180), 40.6 - (4 * sin(23 * pi() / 180)) + 1.75 / 2 ], %) - |> angledLine({ angle: -23, length: 1 }, %) - |> angledLineToX({ angle: -23 + 90, to: 1 }, %) + |> angledLine(angle = -23, length = 1 ) + |> angledLine(angle = -23 + 90, endAbsoluteX = 1) |> yLine(length = 2.56) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -367,9 +341,9 @@ const sketch014w = startSketchOn(plane002) 1 + 12 * cos(23 * pi() / 180), 40.6 - (12 * sin(23 * pi() / 180)) + 1.75 / 2 ], %) - |> angledLine({ angle: -23 - 90, length: 36 / 2 }, %) - |> angledLine({ angle: -23, length: 1 }, %) - |> angledLine({ angle: -23 - 90, length: -36 / 2 }, %) + |> angledLine(angle = -23 - 90, length = 36 / 2 ) + |> angledLine(angle = -23, length = 1 ) + |> angledLine(angle = -23 - 90, length = -36 / 2 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude014w = extrude(sketch014w, length = 1) @@ -379,9 +353,9 @@ const sketch015w = startSketchOn(plane002) 1 + (36 - 5.55 - 8) * cos(23 * pi() / 180), 40.6 - ((36 - 5.55 - 8) * sin(23 * pi() / 180)) + 1.75 / 2 ], %) - |> angledLine({ angle: -23 - 90, length: 36 / 2 }, %) - |> angledLine({ angle: -23, length: 1 }, %) - |> angledLine({ angle: -23 - 90, length: -36 / 2 }, %) + |> angledLine(angle = -23 - 90, length = 36 / 2 ) + |> angledLine(angle = -23, length = 1 ) + |> angledLine(angle = -23 - 90, length = -36 / 2 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude015w = extrude(sketch015w, length = 1) @@ -391,9 +365,9 @@ const sketch016w = startSketchOn(plane002) 1 + (36 - 5.5) * cos(23 * pi() / 180), 40.6 - ((36 - 5.5) * sin(23 * pi() / 180)) + 1.75 / 2 ], %) - |> angledLine({ angle: -23 - 90, length: 36 / 2 }, %) - |> angledLine({ angle: -23, length: 1 }, %) - |> angledLine({ angle: -23 - 90, length: -36 / 2 }, %) + |> angledLine(angle = -23 - 90, length = 36 / 2 ) + |> angledLine(angle = -23, length = 1 ) + |> angledLine(angle = -23 - 90, length = -36 / 2 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude016w = extrude(sketch016w, length = 1) @@ -408,7 +382,7 @@ const sketch017w = startSketchOn(plane002) angleEnd: 180 - 23, radius: 7 / 2 + 2 }, %) - |> angledLine({ angle: -23 + 180, length: -1 }, %) + |> angledLine(angle = -23 + 180, length = -1 ) |> arc({ angleStart: 180 - 23, angleEnd: -23, @@ -428,7 +402,7 @@ const sketch018w = startSketchOn(plane002) angleEnd: 180 - 23, radius: 7 / 2 + 2 }, %) - |> angledLine({ angle: -23 + 180, length: -1 }, %) + |> angledLine(angle = -23 + 180, length = -1 ) |> arc({ angleStart: 180 - 23, angleEnd: -23, @@ -440,9 +414,9 @@ const extrude018w = extrude(sketch018w, length = 1) const sketch019w = startSketchOn(plane002) |> startProfileAt([1, 27.8 + 1.75 / 2], %) - |> angledLine({ angle: -23, length: 7 }, %) - |> angledLine({ angle: -23 + 90, length: -1 }, %) - |> angledLineToX({ angle: -23, to: 1 }, %) + |> angledLine(angle = -23, length = 7 ) + |> angledLine(angle = -23 + 90, length = -1 ) + |> angledLine(angle = -23, endAbsoluteX = 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude019w = extrude(sketch019w, length = 1) @@ -452,72 +426,64 @@ const sketch020w = startSketchOn(plane002) 1 + (36 - 5.53 - 12) * cos(23 * pi() / 180), 27.8 + 1.75 / 2 - ((36 - 5.53 - 12) * sin(23 * pi() / 180)) ], %) - |> angledLine({ angle: -23, length: 7 }, %) - |> angledLine({ angle: -23 + 90, length: -1 }, %) - |> angledLine({ angle: -23 + 180, length: 7 }, %) + |> angledLine(angle = -23, length = 7 ) + |> angledLine(angle = -23 + 90, length = -1 ) + |> angledLine(angle = -23 + 180, length = 7 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude020w = extrude(sketch020w, length = 1) const sketch021w = startSketchOn(plane002) |> startProfileAt([1, 21.9], %) - |> angledLineToX({ angle: -23, to: depth - 1 }, %) + |> angledLine(angle = -23, endAbsoluteX = depth - 1) |> yLine(length = -1.1) - |> angledLineToX({ angle: -23, to: 1 }, %) + |> angledLine(angle = -23, endAbsoluteX = 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude021w = extrude(sketch021w, length = 1) const sketch022w = startSketchOn(plane002) |> startProfileAt([depth - 1, 74.1], %) - |> angledLineToY({ - angle: 180 - 23, - to: railHeight * 1.75 + 1 - }, %) + |> angledLine(angle = 180 - 23, endAbsoluteY = railHeight * 1.75 + 1) |> xLine(length = -2.56) - |> angledLineToX({ angle: -23, to: depth - 1 }, %) + |> angledLine(angle = -23, endAbsoluteX = depth - 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude022w = extrude(sketch022w, length = 1) const sketch023w = startSketchOn(plane002) |> startProfileAt([1, 69.53 + 1.75], %) - |> angledLineToY({ - angle: 90 - 23, - to: railHeight * 1.75 + 1 - }, %) + |> angledLine(angle = 90 - 23, endAbsoluteY = railHeight * 1.75 + 1) |> xLine(length = 1.086) - |> angledLineToX({ angle: 90 - 23, to: 1 }, %) + |> angledLine(angle = 90 - 23, endAbsoluteX = 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude023w = extrude(sketch023w, length = 1) const sketch024w = startSketchOn(plane002) |> startProfileAt([1, 16.5], %) - |> angledLineToY({ angle: -23, to: 1 }, %) + |> angledLine(angle = -23, endAbsoluteY = 1) |> xLine(length = -2.56) - |> angledLineToX({ angle: -23, to: 1 }, %) + |> angledLine(angle = -23, endAbsoluteX = 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude024w = extrude(sketch024w, length = 1) const sketch025w = startSketchOn(plane002) |> startProfileAt([1, 4], %) - |> angledLineToY({ angle: -23, to: 1 }, %) + |> angledLine(angle = -23, endAbsoluteY = 1) |> xLine(length = -2.56) - |> angledLineToX({ angle: -23, to: 1 }, %) + |> angledLine(angle = -23, endAbsoluteX = 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude025w = extrude(sketch025w, length = 1) // Base plane of rack const plane003 = { - plane: { origin: [0, 0, 4.114], x_axis: [1, 0, 0], y_axis: [0, 1, 0], z_axis: [0, 0, 1] - } } const sketch005 = startSketchOn(plane003) @@ -565,12 +531,10 @@ const extrude008 = extrude(sketch008, length = 1) // Top Plane const plane004 = { - plane: { origin: [0, 0, 4.114 + railHeight * 1.75 + 2], x_axis: [1, 0, 0], y_axis: [0, 1, 0], z_axis: [0, 0, 1] - } } const sketch005t = startSketchOn(plane004) @@ -618,44 +582,32 @@ const extrude009t = extrude(sketch009t, length = -1) // front left vertical rail // Define planes so the rail can be moved const planeXYfl = { - plane: { origin: [0, 0, originStart[2]], xAxis: [1.0, 0.0, 0.0], yAxis: [0.0, 1.0, 0.0], zAxis: [0.0, 0.0, 1.0] - } } const planeXZfl = { - plane: { origin: [originStart[1], originStart[0], originStart[2]], xAxis: [0, 1, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } const planeYZfl = { - plane: { origin: [originStart[1], originStart[0], originStart[2]], xAxis: [-1, 0, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } // Base flange const sketch001fl = startSketchOn(planeXZfl) |> startProfileAt([bendRad + thickness, 0], %) - |> angledLine([0, 2 - bendRad - thickness], %, $rectangleSegmentA001fl) - |> angledLine([ - segAng(rectangleSegmentA001fl) + 90, - railHeight * 1.75 - ], %, $rectangleSegmentB001fl) - |> angledLine([ - segAng(rectangleSegmentA001fl), - -segLen(rectangleSegmentA001fl) - ], %, $rectangleSegmentC001fl) + |> angledLine(angle = 0, length = 2 - bendRad - thickness, tag = $rectangleSegmentA001fl) + |> angledLine(angle = segAng(rectangleSegmentA001fl) + 90, length = railHeight * 1.75, tag = $rectangleSegmentB001fl) + |> angledLine(angle = segAng(rectangleSegmentA001fl), length = -segLen(rectangleSegmentA001fl), tag = $rectangleSegmentC001fl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude001fl = extrude(sketch001fl, length = thickness) @@ -663,15 +615,9 @@ const extrude001fl = extrude(sketch001fl, length = thickness) // First flange const sketch002fl = startSketchOn(planeYZfl) |> startProfileAt([-bendRad - thickness, 0], %) - |> angledLine([180, 0.89 - bendRad - thickness], %, $rectangleSegmentA002fl) - |> angledLine([ - segAng(rectangleSegmentA002fl) - 90, - railHeight * 1.75 - ], %, $rectangleSegmentB002fl) - |> angledLine([ - segAng(rectangleSegmentA002fl), - -segLen(rectangleSegmentA002fl) - ], %, $rectangleSegmentC002fl) + |> angledLine(angle = 180, length = 0.89 - bendRad - thickness, tag = $rectangleSegmentA002fl) + |> angledLine(angle = segAng(rectangleSegmentA002fl) - 90, length = railHeight * 1.75, tag = $rectangleSegmentB002fl) + |> angledLine(angle = segAng(rectangleSegmentA002fl), length = -segLen(rectangleSegmentA002fl), tag = $rectangleSegmentC002fl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -697,17 +643,11 @@ const sketch003fl = startSketchOn(planeXYfl) const extrude003fl = extrude(sketch003fl, length = railHeight * 1.75) // EIA-310-D standard hole pattern -const sketch004fl = startSketchOn(extrude002fl, 'START') +const sketch004fl = startSketchOn(extrude002fl, face = 'START') |> startProfileAt([0.72 + originStart[1], originStart[2] + 0.15], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA003fl) - |> angledLine([ - segAng(rectangleSegmentA003fl) - 90, - 0.375 - ], %, $rectangleSegmentB003fl) - |> angledLine([ - segAng(rectangleSegmentA003fl), - -segLen(rectangleSegmentA003fl) - ], %, $rectangleSegmentC003fl) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA003fl) + |> angledLine(angle = segAng(rectangleSegmentA003fl) - 90, length = 0.375, tag = $rectangleSegmentB003fl) + |> angledLine(angle = segAng(rectangleSegmentA003fl), length = -segLen(rectangleSegmentA003fl), tag = $rectangleSegmentC003fl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -718,17 +658,11 @@ const sketch004fl = startSketchOn(extrude002fl, 'START') const extrude004fl = extrude(sketch004fl, length = -thickness) // EIA-310-D standard hole pattern -const sketch005fl = startSketchOn(extrude002fl, 'START') +const sketch005fl = startSketchOn(extrude002fl, face = 'START') |> startProfileAt([0.72 + originStart[1],originStart[2] + 0.15 + .62], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA004fl) - |> angledLine([ - segAng(rectangleSegmentA004fl) - 90, - 0.375 - ], %, $rectangleSegmentB004fl) - |> angledLine([ - segAng(rectangleSegmentA004fl), - -segLen(rectangleSegmentA004fl) - ], %, $rectangleSegmentC004fl) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA004fl) + |> angledLine(angle = segAng(rectangleSegmentA004fl) - 90, length = 0.375, tag = $rectangleSegmentB004fl) + |> angledLine(angle = segAng(rectangleSegmentA004fl), length = -segLen(rectangleSegmentA004fl), tag = $rectangleSegmentC004fl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -739,20 +673,14 @@ const sketch005fl = startSketchOn(extrude002fl, 'START') const extrude005fl = extrude(sketch005fl, length = -thickness) // EIA-310-D standard hole pattern -const sketch006fl = startSketchOn(extrude002fl, 'START') +const sketch006fl = startSketchOn(extrude002fl, face = 'START') |> startProfileAt([ 0.72 + originStart[1], originStart[2] + 0.15 + 0.62 + 0.50 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA005fl) - |> angledLine([ - segAng(rectangleSegmentA005fl) - 90, - 0.375 - ], %, $rectangleSegmentB005fl) - |> angledLine([ - segAng(rectangleSegmentA005fl), - -segLen(rectangleSegmentA005fl) - ], %, $rectangleSegmentC005fl) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA005fl) + |> angledLine(angle = segAng(rectangleSegmentA005fl) - 90, length = 0.375, tag = $rectangleSegmentB005fl) + |> angledLine(angle = segAng(rectangleSegmentA005fl), length = -segLen(rectangleSegmentA005fl), tag = $rectangleSegmentC005fl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -763,17 +691,11 @@ const sketch006fl = startSketchOn(extrude002fl, 'START') const extrude006fl = extrude(sketch006fl, length = -thickness) // EIA-310-D standard hole pattern -const sketch007fl = startSketchOn(extrude001fl, 'START') +const sketch007fl = startSketchOn(extrude001fl, face = 'START') |> startProfileAt([-1.45 - originStart[0], originStart[2] + 0.15], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA006fl) - |> angledLine([ - segAng(rectangleSegmentA006fl) - 90, - 0.375 - ], %, $rectangleSegmentB006fl) - |> angledLine([ - segAng(rectangleSegmentA006fl), - -segLen(rectangleSegmentA006fl) - ], %, $rectangleSegmentC006fl) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA006fl) + |> angledLine(angle = segAng(rectangleSegmentA006fl) - 90, length = 0.375, tag = $rectangleSegmentB006fl) + |> angledLine(angle = segAng(rectangleSegmentA006fl), length = -segLen(rectangleSegmentA006fl), tag = $rectangleSegmentC006fl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -784,17 +706,11 @@ const sketch007fl = startSketchOn(extrude001fl, 'START') const extrude007fl = extrude(sketch007fl, length = -thickness) // EIA-310-D standard hole pattern -const sketch008fl = startSketchOn(extrude001fl, 'START') +const sketch008fl = startSketchOn(extrude001fl, face = 'START') |> startProfileAt([-1.45 - originStart[0],originStart[2] + 0.15 + 0.62], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA007fl) - |> angledLine([ - segAng(rectangleSegmentA007fl) - 90, - 0.375 - ], %, $rectangleSegmentB007fl) - |> angledLine([ - segAng(rectangleSegmentA007fl), - -segLen(rectangleSegmentA007fl) - ], %, $rectangleSegmentC007fl) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA007fl) + |> angledLine(angle = segAng(rectangleSegmentA007fl) - 90, length = 0.375, tag = $rectangleSegmentB007fl) + |> angledLine(angle = segAng(rectangleSegmentA007fl), length = -segLen(rectangleSegmentA007fl), tag = $rectangleSegmentC007fl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -805,20 +721,14 @@ const sketch008fl = startSketchOn(extrude001fl, 'START') const extrude008fl = extrude(sketch008fl, length = -thickness) // EIA-310-D standard hole pattern -const sketch009fl = startSketchOn(extrude001fl, 'START') +const sketch009fl = startSketchOn(extrude001fl, face = 'START') |> startProfileAt([ -1.45 - originStart[0], originStart[2] + 0.15 + 0.62 + 0.5 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA008fl) - |> angledLine([ - segAng(rectangleSegmentA008fl) - 90, - 0.375 - ], %, $rectangleSegmentB008fl) - |> angledLine([ - segAng(rectangleSegmentA008fl), - -segLen(rectangleSegmentA008fl) - ], %, $rectangleSegmentC008fl) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA008fl) + |> angledLine(angle = segAng(rectangleSegmentA008fl) - 90, length = 0.375, tag = $rectangleSegmentB008fl) + |> angledLine(angle = segAng(rectangleSegmentA008fl), length = -segLen(rectangleSegmentA008fl), tag = $rectangleSegmentC008fl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -829,15 +739,15 @@ const sketch009fl = startSketchOn(extrude001fl, 'START') const extrude009fl = extrude(sketch009fl, length = -thickness) // define slots -const sketch010fl = startSketchOn(extrude001fl, 'START') +const sketch010fl = startSketchOn(extrude001fl, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0], originStart[2] + .81 - (.438 / 2) ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([-0.66 - originStart[0],originStart[2] + .81 + .438 / 2], %) + |> tangentialArc(endAbsolute = [-0.66 - originStart[0],originStart[2] + .81 + .438 / 2]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, 1], @@ -847,35 +757,35 @@ const sketch010fl = startSketchOn(extrude001fl, 'START') const extrude010fl = extrude(sketch010fl, length = -thickness) // define slots -const sketch011fl = startSketchOn(extrude001fl, 'START') +const sketch011fl = startSketchOn(extrude001fl, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0], originStart[2] + railHeight * 1.75 / 2 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ - -0.66 - originStart[0],originStart[2]+ - railHeight * 1.75 / 2 - (.438 / 2) - ], %) + |> tangentialArc(endAbsolute = [ + -0.66 - originStart[0], + originStart[2] + railHeight * 1.75 / 2 - (.438 / 2) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude011fl = extrude(sketch011fl, length = -thickness) // define slots -const sketch012fl = startSketchOn(extrude001fl, 'START') +const sketch012fl = startSketchOn(extrude001fl, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0], originStart[2] + railHeight * 1.75 - .81 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0], originStart[2]+ railHeight * 1.75 - .81 - (.438 / 2) - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, -1], @@ -887,16 +797,13 @@ const extrude012fl = extrude(sketch012fl, length = -thickness) // FRONT RIGHT VERTICAL RAIL // Define planes so the rail can be moved const planeXYfr = { - plane: { origin: [0, 0, originStart[2]], xAxis: [1.0, 0.0, 0.0], yAxis: [0.0, 1.0, 0.0], zAxis: [0.0, 0.0, 1.0] - } } const planeXZfr = { - plane: { origin: [ originStart[1] + width - thickness - 2, originStart[0], @@ -905,11 +812,9 @@ const planeXZfr = { xAxis: [0, 1, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } const planeYZfr = { - plane: { origin: [ originStart[1] + width - 2, originStart[0], @@ -918,21 +823,14 @@ const planeYZfr = { xAxis: [-1, 0, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } // Base flange const sketch001fr = startSketchOn(planeXZfr) |> startProfileAt([bendRad + thickness, 0], %) - |> angledLine([0, 2 - bendRad - thickness], %, $rectangleSegmentA001fr) - |> angledLine([ - segAng(rectangleSegmentA001fr) + 90, - railHeight * 1.75 - ], %, $rectangleSegmentB001fr) - |> angledLine([ - segAng(rectangleSegmentA001fr), - -segLen(rectangleSegmentA001fr) - ], %, $rectangleSegmentC001fr) + |> angledLine(angle = 0, length = 2 - bendRad - thickness, tag = $rectangleSegmentA001fr) + |> angledLine(angle = segAng(rectangleSegmentA001fr) + 90, length = railHeight * 1.75, tag = $rectangleSegmentB001fr) + |> angledLine(angle = segAng(rectangleSegmentA001fr), length = -segLen(rectangleSegmentA001fr), tag = $rectangleSegmentC001fr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude001fr = extrude(sketch001fr, length = thickness) @@ -940,15 +838,9 @@ const extrude001fr = extrude(sketch001fr, length = thickness) // First flange const sketch002fr = startSketchOn(planeYZfr) |> startProfileAt([0.89, 0], %) - |> angledLine([180, 0.89 - bendRad - thickness], %, $rectangleSegmentA002fr) - |> angledLine([ - segAng(rectangleSegmentA002fr) - 90, - railHeight * 1.75 - ], %, $rectangleSegmentB002fr) - |> angledLine([ - segAng(rectangleSegmentA002fr), - -segLen(rectangleSegmentA002fr) - ], %, $rectangleSegmentC002fr) + |> angledLine(angle = 180, length = 0.89 - bendRad - thickness, tag = $rectangleSegmentA002fr) + |> angledLine(angle = segAng(rectangleSegmentA002fr) - 90, length = railHeight * 1.75, tag = $rectangleSegmentB002fr) + |> angledLine(angle = segAng(rectangleSegmentA002fr), length = -segLen(rectangleSegmentA002fr), tag = $rectangleSegmentC002fr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -976,20 +868,14 @@ const sketch003fr = startSketchOn(planeXYfr) const extrude003fr = extrude(sketch003fr, length = railHeight * 1.75) // EIA-310-D standard hole pattern -const sketch004fr = startSketchOn(extrude002fr, 'START') +const sketch004fr = startSketchOn(extrude002fr, face = 'START') |> startProfileAt([ -0.35 + originStart[1] + width - 2, originStart[2] + 0.15 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA003fr) - |> angledLine([ - segAng(rectangleSegmentA003fr) - 90, - 0.375 - ], %, $rectangleSegmentB003fr) - |> angledLine([ - segAng(rectangleSegmentA003fr), - -segLen(rectangleSegmentA003fr) - ], %, $rectangleSegmentC003fr) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA003fr) + |> angledLine(angle = segAng(rectangleSegmentA003fr) - 90, length = 0.375, tag = $rectangleSegmentB003fr) + |> angledLine(angle = segAng(rectangleSegmentA003fr), length = -segLen(rectangleSegmentA003fr), tag = $rectangleSegmentC003fr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1000,20 +886,14 @@ const sketch004fr = startSketchOn(extrude002fr, 'START') const extrude004fr = extrude(sketch004fr, length = -thickness) // EIA-310-D standard hole pattern -const sketch005fr = startSketchOn(extrude002fr, 'START') +const sketch005fr = startSketchOn(extrude002fr, face = 'START') |> startProfileAt([ -0.35 + originStart[1] + width - 2, originStart[2] + 0.15 + .62 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA004fr) - |> angledLine([ - segAng(rectangleSegmentA004fr) - 90, - 0.375 - ], %, $rectangleSegmentB004fr) - |> angledLine([ - segAng(rectangleSegmentA004fr), - -segLen(rectangleSegmentA004fr) - ], %, $rectangleSegmentC004fr) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA004fr) + |> angledLine(angle = segAng(rectangleSegmentA004fr) - 90, length = 0.375, tag = $rectangleSegmentB004fr) + |> angledLine(angle = segAng(rectangleSegmentA004fr), length = -segLen(rectangleSegmentA004fr), tag = $rectangleSegmentC004fr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1024,20 +904,14 @@ const sketch005fr = startSketchOn(extrude002fr, 'START') const extrude005fr = extrude(sketch005fr, length = -thickness) // EIA-310-D standard hole pattern -const sketch006fr = startSketchOn(extrude002fr, 'START') +const sketch006fr = startSketchOn(extrude002fr, face = 'START') |> startProfileAt([ -0.35 + originStart[1] + width - 2, originStart[2] + 0.15 + 0.62 + 0.50 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA005fr) - |> angledLine([ - segAng(rectangleSegmentA005fr) - 90, - 0.375 - ], %, $rectangleSegmentB005fr) - |> angledLine([ - segAng(rectangleSegmentA005fr), - -segLen(rectangleSegmentA005fr) - ], %, $rectangleSegmentC005fr) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA005fr) + |> angledLine(angle = segAng(rectangleSegmentA005fr) - 90, length = 0.375, tag = $rectangleSegmentB005fr) + |> angledLine(angle = segAng(rectangleSegmentA005fr), length = -segLen(rectangleSegmentA005fr), tag = $rectangleSegmentC005fr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1048,20 +922,14 @@ const sketch006fr = startSketchOn(extrude002fr, 'START') const extrude006fr = extrude(sketch006fr, length = -thickness) // EIA-310-D standard hole pattern -const sketch007fr = startSketchOn(extrude001fr, 'START') +const sketch007fr = startSketchOn(extrude001fr, face = 'START') |> startProfileAt([ -1.45 - originStart[0], originStart[2] + 0.15 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA006fr) - |> angledLine([ - segAng(rectangleSegmentA006fr) - 90, - 0.375 - ], %, $rectangleSegmentB006fr) - |> angledLine([ - segAng(rectangleSegmentA006fr), - -segLen(rectangleSegmentA006fr) - ], %, $rectangleSegmentC006fr) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA006fr) + |> angledLine(angle = segAng(rectangleSegmentA006fr) - 90, length = 0.375, tag = $rectangleSegmentB006fr) + |> angledLine(angle = segAng(rectangleSegmentA006fr), length = -segLen(rectangleSegmentA006fr), tag = $rectangleSegmentC006fr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1072,20 +940,14 @@ const sketch007fr = startSketchOn(extrude001fr, 'START') const extrude007fr = extrude(sketch007fr, length = -thickness) // EIA-310-D standard hole pattern -const sketch008fr = startSketchOn(extrude001fr, 'START') +const sketch008fr = startSketchOn(extrude001fr, face = 'START') |> startProfileAt([ -1.45 - originStart[0], originStart[2] + 0.15 + 0.62 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA007fr) - |> angledLine([ - segAng(rectangleSegmentA007fr) - 90, - 0.375 - ], %, $rectangleSegmentB007fr) - |> angledLine([ - segAng(rectangleSegmentA007fr), - -segLen(rectangleSegmentA007fr) - ], %, $rectangleSegmentC007fr) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA007fr) + |> angledLine(angle = segAng(rectangleSegmentA007fr) - 90, length = 0.375, tag = $rectangleSegmentB007fr) + |> angledLine(angle = segAng(rectangleSegmentA007fr), length = -segLen(rectangleSegmentA007fr), tag = $rectangleSegmentC007fr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1096,20 +958,14 @@ const sketch008fr = startSketchOn(extrude001fr, 'START') const extrude008fr = extrude(sketch008fr, length = -thickness) // EIA-310-D standard hole pattern -const sketch009fr = startSketchOn(extrude001fr, 'START') +const sketch009fr = startSketchOn(extrude001fr, face = 'START') |> startProfileAt([ -1.45 - originStart[0], originStart[2] + 0.15 + 0.62 + 0.5 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA008fr) - |> angledLine([ - segAng(rectangleSegmentA008fr) - 90, - 0.375 - ], %, $rectangleSegmentB008fr) - |> angledLine([ - segAng(rectangleSegmentA008fr), - -segLen(rectangleSegmentA008fr) - ], %, $rectangleSegmentC008fr) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA008fr) + |> angledLine(angle = segAng(rectangleSegmentA008fr) - 90, length = 0.375, tag = $rectangleSegmentB008fr) + |> angledLine(angle = segAng(rectangleSegmentA008fr), length = -segLen(rectangleSegmentA008fr), tag = $rectangleSegmentC008fr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1120,18 +976,18 @@ const sketch009fr = startSketchOn(extrude001fr, 'START') const extrude009fr = extrude(sketch009fr, length = -thickness) // define slots -const sketch010fr = startSketchOn(extrude001fr, 'START') +const sketch010fr = startSketchOn(extrude001fr, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0], originStart[2] + .81 - (.438 / 2) ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0], originStart[2] + .81 + .438 / 2 - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, 1], @@ -1141,35 +997,35 @@ const sketch010fr = startSketchOn(extrude001fr, 'START') const extrude010fr = extrude(sketch010fr, length = -thickness) // define slots -const sketch011fr = startSketchOn(extrude001fr, 'START') +const sketch011fr = startSketchOn(extrude001fr, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0], originStart[2] + railHeight * 1.75 / 2 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0], originStart[2] + railHeight * 1.75 / 2 - (.438 / 2) - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude011fr = extrude(sketch011fr, length = -thickness) // define slots -const sketch012fr = startSketchOn(extrude001fr, 'START') +const sketch012fr = startSketchOn(extrude001fr, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0], originStart[2] + railHeight * 1.75 - .81 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0], originStart[2] + railHeight * 1.75 - .81 - (.438 / 2) - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, -1], @@ -1181,16 +1037,13 @@ const extrude012fr = extrude(sketch012fr, length = -thickness) // RIGHT REAR VERTICAL RAIL // Define planes so the rail can be moved const planeXYrr = { - plane: { origin: [0, serverDepth, originStart[2]], xAxis: [1.0, 0.0, 0.0], yAxis: [0.0, 1.0, 0.0], zAxis: [0.0, 0.0, 1.0] - } } const planeXZrr = { - plane: { origin: [ originStart[1] + width - thickness - 2, originStart[0]+serverDepth-2-bendRad, @@ -1199,11 +1052,9 @@ const planeXZrr = { xAxis: [0, 1, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } const planeYZrr = { - plane: { origin: [ originStart[1] + width - 2, originStart[0]+serverDepth, @@ -1212,21 +1063,14 @@ const planeYZrr = { xAxis: [-1, 0, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } // Base flange const sketch001rr = startSketchOn(planeXZrr) |> startProfileAt([bendRad + thickness, 0], %) - |> angledLine([0, 2 - bendRad - thickness], %, $rectangleSegmentA001rr) - |> angledLine([ - segAng(rectangleSegmentA001rr) + 90, - railHeight * 1.75 - ], %, $rectangleSegmentB001rr) - |> angledLine([ - segAng(rectangleSegmentA001rr), - -segLen(rectangleSegmentA001rr) - ], %, $rectangleSegmentC001rr) + |> angledLine(angle = 0, length = 2 - bendRad - thickness, tag = $rectangleSegmentA001rr) + |> angledLine(angle = segAng(rectangleSegmentA001rr) + 90, length = railHeight * 1.75, tag = $rectangleSegmentB001rr) + |> angledLine(angle = segAng(rectangleSegmentA001rr), length = -segLen(rectangleSegmentA001rr), tag = $rectangleSegmentC001rr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude001rr = extrude(sketch001rr, length = thickness) @@ -1234,15 +1078,9 @@ const extrude001rr = extrude(sketch001rr, length = thickness) // First flange const sketch002rr = startSketchOn(planeYZrr) |> startProfileAt([0.89, 0], %) - |> angledLine([180, 0.89 - bendRad - thickness], %, $rectangleSegmentA002rr) - |> angledLine([ - segAng(rectangleSegmentA002rr) - 90, - railHeight * 1.75 - ], %, $rectangleSegmentB002rr) - |> angledLine([ - segAng(rectangleSegmentA002rr), - -segLen(rectangleSegmentA002rr) - ], %, $rectangleSegmentC002rr) + |> angledLine(angle = 180, length = 0.89 - bendRad - thickness, tag = $rectangleSegmentA002rr) + |> angledLine(angle = segAng(rectangleSegmentA002rr) - 90, length = railHeight * 1.75, tag = $rectangleSegmentB002rr) + |> angledLine(angle = segAng(rectangleSegmentA002rr), length = -segLen(rectangleSegmentA002rr), tag = $rectangleSegmentC002rr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -1270,20 +1108,14 @@ const sketch003rr = startSketchOn(planeXYrr) const extrude003rr = extrude(sketch003rr, length = railHeight * 1.75) // EIA-310-D standard hole pattern -const sketch004rr = startSketchOn(extrude002rr, 'START') +const sketch004rr = startSketchOn(extrude002rr, face = 'START') |> startProfileAt([ -0.35 + originStart[1] + width - 2, originStart[2] + 0.15 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA003rr) - |> angledLine([ - segAng(rectangleSegmentA003rr) - 90, - 0.375 - ], %, $rectangleSegmentB003rr) - |> angledLine([ - segAng(rectangleSegmentA003rr), - -segLen(rectangleSegmentA003rr) - ], %, $rectangleSegmentC003rr) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA003rr) + |> angledLine(angle = segAng(rectangleSegmentA003rr) - 90, length = 0.375, tag = $rectangleSegmentB003rr) + |> angledLine(angle = segAng(rectangleSegmentA003rr), length = -segLen(rectangleSegmentA003rr), tag = $rectangleSegmentC003rr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1294,20 +1126,14 @@ const sketch004rr = startSketchOn(extrude002rr, 'START') const extrude004rr = extrude(sketch004rr, length = -thickness) // EIA-310-D standard hole pattern -const sketch005rr = startSketchOn(extrude002rr, 'START') +const sketch005rr = startSketchOn(extrude002rr, face = 'START') |> startProfileAt([ -0.35 + originStart[1] + width - 2, originStart[2] + 0.15 + .62 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA004rr) - |> angledLine([ - segAng(rectangleSegmentA004rr) - 90, - 0.375 - ], %, $rectangleSegmentB004rr) - |> angledLine([ - segAng(rectangleSegmentA004rr), - -segLen(rectangleSegmentA004rr) - ], %, $rectangleSegmentC004rr) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA004rr) + |> angledLine(angle = segAng(rectangleSegmentA004rr) - 90, length = 0.375, tag = $rectangleSegmentB004rr) + |> angledLine(angle = segAng(rectangleSegmentA004rr), length = -segLen(rectangleSegmentA004rr), tag = $rectangleSegmentC004rr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1318,20 +1144,14 @@ const sketch005rr = startSketchOn(extrude002rr, 'START') const extrude005rr = extrude(sketch005rr, length = -thickness) // EIA-310-D standard hole pattern -const sketch006rr = startSketchOn(extrude002rr, 'START') +const sketch006rr = startSketchOn(extrude002rr, face = 'START') |> startProfileAt([ -0.35 + originStart[1] + width - 2, originStart[2] + 0.15 + 0.62 + 0.50 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA005rr) - |> angledLine([ - segAng(rectangleSegmentA005rr) - 90, - 0.375 - ], %, $rectangleSegmentB005rr) - |> angledLine([ - segAng(rectangleSegmentA005rr), - -segLen(rectangleSegmentA005rr) - ], %, $rectangleSegmentC005rr) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA005rr) + |> angledLine(angle = segAng(rectangleSegmentA005rr) - 90, length = 0.375, tag = $rectangleSegmentB005rr) + |> angledLine(angle = segAng(rectangleSegmentA005rr), length = -segLen(rectangleSegmentA005rr), tag = $rectangleSegmentC005rr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1342,20 +1162,14 @@ const sketch006rr = startSketchOn(extrude002rr, 'START') const extrude006rr = extrude(sketch006rr, length = -thickness) // EIA-310-D standard hole pattern -const sketch007rr = startSketchOn(extrude001rr, 'START') +const sketch007rr = startSketchOn(extrude001rr, face = 'START') |> startProfileAt([ -originStart[0]-serverDepth+1.7, originStart[2] + 0.15 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA006rr) - |> angledLine([ - segAng(rectangleSegmentA006rr) - 90, - 0.375 - ], %, $rectangleSegmentB006rr) - |> angledLine([ - segAng(rectangleSegmentA006rr), - -segLen(rectangleSegmentA006rr) - ], %, $rectangleSegmentC006rr) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA006rr) + |> angledLine(angle = segAng(rectangleSegmentA006rr) - 90, length = 0.375, tag = $rectangleSegmentB006rr) + |> angledLine(angle = segAng(rectangleSegmentA006rr), length = -segLen(rectangleSegmentA006rr), tag = $rectangleSegmentC006rr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1366,20 +1180,14 @@ const sketch007rr = startSketchOn(extrude001rr, 'START') const extrude007rr = extrude(sketch007rr, length = -thickness) // EIA-310-D standard hole pattern -const sketch008rr = startSketchOn(extrude001rr, 'START') +const sketch008rr = startSketchOn(extrude001rr, face = 'START') |> startProfileAt([ -originStart[0]-serverDepth+1.7, originStart[2] + 0.15 + 0.62 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA007rr) - |> angledLine([ - segAng(rectangleSegmentA007rr) - 90, - 0.375 - ], %, $rectangleSegmentB007rr) - |> angledLine([ - segAng(rectangleSegmentA007rr), - -segLen(rectangleSegmentA007rr) - ], %, $rectangleSegmentC007rr) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA007rr) + |> angledLine(angle = segAng(rectangleSegmentA007rr) - 90, length = 0.375, tag = $rectangleSegmentB007rr) + |> angledLine(angle = segAng(rectangleSegmentA007rr), length = -segLen(rectangleSegmentA007rr), tag = $rectangleSegmentC007rr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1390,20 +1198,14 @@ const sketch008rr = startSketchOn(extrude001rr, 'START') const extrude008rr = extrude(sketch008rr, length = -thickness) // EIA-310-D standard hole pattern -const sketch009rr = startSketchOn(extrude001rr, 'START') +const sketch009rr = startSketchOn(extrude001rr, face = 'START') |> startProfileAt([ -originStart[0]-serverDepth+1.7, originStart[2] + 0.15 + 0.62 + 0.5 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA008rr) - |> angledLine([ - segAng(rectangleSegmentA008rr) - 90, - 0.375 - ], %, $rectangleSegmentB008rr) - |> angledLine([ - segAng(rectangleSegmentA008rr), - -segLen(rectangleSegmentA008rr) - ], %, $rectangleSegmentC008rr) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA008rr) + |> angledLine(angle = segAng(rectangleSegmentA008rr) - 90, length = 0.375, tag = $rectangleSegmentB008rr) + |> angledLine(angle = segAng(rectangleSegmentA008rr), length = -segLen(rectangleSegmentA008rr), tag = $rectangleSegmentC008rr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1414,18 +1216,18 @@ const sketch009rr = startSketchOn(extrude001rr, 'START') const extrude009rr = extrude(sketch009rr, length = -thickness) // define slots -const sketch010rr = startSketchOn(extrude001rr, 'START') +const sketch010rr = startSketchOn(extrude001rr, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0]+1.5-serverDepth, originStart[2] + .81 - (.438 / 2) ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0]+1.5-serverDepth, originStart[2] + .81 + .438 / 2 - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, 1], @@ -1435,35 +1237,35 @@ const sketch010rr = startSketchOn(extrude001rr, 'START') const extrude010rr = extrude(sketch010rr, length = -thickness) // define slots -const sketch011rr = startSketchOn(extrude001rr, 'START') +const sketch011rr = startSketchOn(extrude001rr, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0]+1.5-serverDepth, originStart[2] + railHeight * 1.75 / 2 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0]+1.5-serverDepth, originStart[2] + railHeight * 1.75 / 2 - (.438 / 2) - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude011rr = extrude(sketch011rr, length = -thickness) // define slots -const sketch012rr = startSketchOn(extrude001rr, 'START') +const sketch012rr = startSketchOn(extrude001rr, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0]+1.5-serverDepth, originStart[2] + railHeight * 1.75 - .81 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0]+1.5-serverDepth, originStart[2] + railHeight * 1.75 - .81 - (.438 / 2) - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, -1], @@ -1475,16 +1277,13 @@ const extrude012rr = extrude(sketch012rr, length = -thickness) // REAR LEFT VETCIAL RAIL // Define planes so the rail can be moved const planeXYrl = { - plane: { origin: [0, serverDepth, originStart[2]], xAxis: [1.0, 0.0, 0.0], yAxis: [0.0, 1.0, 0.0], zAxis: [0.0, 0.0, 1.0] - } } const planeXZrl = { - plane: { origin: [ originStart[1], originStart[0] + serverDepth - 2 - bendRad, @@ -1493,11 +1292,9 @@ const planeXZrl = { xAxis: [0, 1, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } const planeYZrl = { - plane: { origin: [ originStart[1], originStart[0] + serverDepth, @@ -1506,20 +1303,13 @@ const planeYZrl = { xAxis: [-1, 0, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } // Base flange const sketch001rl = startSketchOn(planeXZrl) |> startProfileAt([bendRad + thickness, 0], %) - |> angledLine([0, 2 - bendRad - thickness], %, $rectangleSegmentA001rl) - |> angledLine([ - segAng(rectangleSegmentA001rl) + 90, - railHeight * 1.75 - ], %, $rectangleSegmentB001rl) - |> angledLine([ - segAng(rectangleSegmentA001rl), - -segLen(rectangleSegmentA001rl) - ], %, $rectangleSegmentC001rl) + |> angledLine(angle = 0, length = 2 - bendRad - thickness, tag = $rectangleSegmentA001rl) + |> angledLine(angle = segAng(rectangleSegmentA001rl) + 90, length = railHeight * 1.75, tag = $rectangleSegmentB001rl) + |> angledLine(angle = segAng(rectangleSegmentA001rl), length = -segLen(rectangleSegmentA001rl), tag = $rectangleSegmentC001rl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude001rl = extrude(sketch001rl, length = thickness) @@ -1527,15 +1317,9 @@ const extrude001rl = extrude(sketch001rl, length = thickness) // First flange const sketch002rl = startSketchOn(planeYZrl) |> startProfileAt([-bendRad - thickness, 0], %) - |> angledLine([180, 0.89 - bendRad - thickness], %, $rectangleSegmentA002rl) - |> angledLine([ - segAng(rectangleSegmentA002rl) - 90, - railHeight * 1.75 - ], %, $rectangleSegmentB002rl) - |> angledLine([ - segAng(rectangleSegmentA002rl), - -segLen(rectangleSegmentA002rl) - ], %, $rectangleSegmentC002rl) + |> angledLine(angle = 180, length = 0.89 - bendRad - thickness, tag = $rectangleSegmentA002rl) + |> angledLine(angle = segAng(rectangleSegmentA002rl) - 90, length = railHeight * 1.75, tag = $rectangleSegmentB002rl) + |> angledLine(angle = segAng(rectangleSegmentA002rl), length = -segLen(rectangleSegmentA002rl), tag = $rectangleSegmentC002rl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -1563,20 +1347,14 @@ const sketch003rl = startSketchOn(planeXYrl) const extrude003rl = extrude(sketch003rl, length = railHeight * 1.75) // EIA-310-D standard hole pattern -const sketch004rl = startSketchOn(extrude002rl, 'START') +const sketch004rl = startSketchOn(extrude002rl, face = 'START') |> startProfileAt([ -1.38 + 2 + thickness + originStart[1], originStart[2] + 0.15 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA003rl) - |> angledLine([ - segAng(rectangleSegmentA003rl) - 90, - 0.375 - ], %, $rectangleSegmentB003rl) - |> angledLine([ - segAng(rectangleSegmentA003rl), - -segLen(rectangleSegmentA003rl) - ], %, $rectangleSegmentC003rl) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA003rl) + |> angledLine(angle = segAng(rectangleSegmentA003rl) - 90, length = 0.375, tag = $rectangleSegmentB003rl) + |> angledLine(angle = segAng(rectangleSegmentA003rl), length = -segLen(rectangleSegmentA003rl), tag = $rectangleSegmentC003rl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1587,20 +1365,14 @@ const sketch004rl = startSketchOn(extrude002rl, 'START') const extrude004rl = extrude(sketch004rl, length = -thickness) // EIA-310-D standard hole pattern -const sketch005rl = startSketchOn(extrude002rl, 'START') +const sketch005rl = startSketchOn(extrude002rl, face = 'START') |> startProfileAt([ -1.38 + 2 + thickness + originStart[1], originStart[2] + 0.15 + .62 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA004rl) - |> angledLine([ - segAng(rectangleSegmentA004rl) - 90, - 0.375 - ], %, $rectangleSegmentB004rl) - |> angledLine([ - segAng(rectangleSegmentA004rl), - -segLen(rectangleSegmentA004rl) - ], %, $rectangleSegmentC004rl) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA004rl) + |> angledLine(angle = segAng(rectangleSegmentA004rl) - 90, length = 0.375, tag = $rectangleSegmentB004rl) + |> angledLine(angle = segAng(rectangleSegmentA004rl), length = -segLen(rectangleSegmentA004rl), tag = $rectangleSegmentC004rl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1611,20 +1383,14 @@ const sketch005rl = startSketchOn(extrude002rl, 'START') const extrude005rl = extrude(sketch005rl, length = -thickness) // EIA-310-D standard hole pattern -const sketch006rl = startSketchOn(extrude002rl, 'START') +const sketch006rl = startSketchOn(extrude002rl, face = 'START') |> startProfileAt([ -1.38 + 2 + thickness + originStart[1], originStart[2] + 0.15 + 0.62 + 0.50 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA005rl) - |> angledLine([ - segAng(rectangleSegmentA005rl) - 90, - 0.375 - ], %, $rectangleSegmentB005rl) - |> angledLine([ - segAng(rectangleSegmentA005rl), - -segLen(rectangleSegmentA005rl) - ], %, $rectangleSegmentC005rl) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA005rl) + |> angledLine(angle = segAng(rectangleSegmentA005rl) - 90, length = 0.375, tag = $rectangleSegmentB005rl) + |> angledLine(angle = segAng(rectangleSegmentA005rl), length = -segLen(rectangleSegmentA005rl), tag = $rectangleSegmentC005rl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1635,20 +1401,14 @@ const sketch006rl = startSketchOn(extrude002rl, 'START') const extrude006rl = extrude(sketch006rl, length = -thickness) // EIA-310-D standard hole pattern -const sketch007rl = startSketchOn(extrude001rl, 'START') +const sketch007rl = startSketchOn(extrude001rl, face = 'START') |> startProfileAt([ 1.75 - originStart[0] - serverDepth, originStart[2] + 0.15 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA006rl) - |> angledLine([ - segAng(rectangleSegmentA006rl) - 90, - 0.375 - ], %, $rectangleSegmentB006rl) - |> angledLine([ - segAng(rectangleSegmentA006rl), - -segLen(rectangleSegmentA006rl) - ], %, $rectangleSegmentC006rl) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA006rl) + |> angledLine(angle = segAng(rectangleSegmentA006rl) - 90, length = 0.375, tag = $rectangleSegmentB006rl) + |> angledLine(angle = segAng(rectangleSegmentA006rl), length = -segLen(rectangleSegmentA006rl), tag = $rectangleSegmentC006rl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1659,20 +1419,14 @@ const sketch007rl = startSketchOn(extrude001rl, 'START') const extrude007rl = extrude(sketch007rl, length = -thickness) // EIA-310-D standard hole pattern -const sketch008rl = startSketchOn(extrude001rl, 'START') +const sketch008rl = startSketchOn(extrude001rl, face = 'START') |> startProfileAt([ 1.75 - originStart[0] - serverDepth, originStart[2] + 0.15 + 0.62 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA007rl) - |> angledLine([ - segAng(rectangleSegmentA007rl) - 90, - 0.375 - ], %, $rectangleSegmentB007rl) - |> angledLine([ - segAng(rectangleSegmentA007rl), - -segLen(rectangleSegmentA007rl) - ], %, $rectangleSegmentC007rl) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA007rl) + |> angledLine(angle = segAng(rectangleSegmentA007rl) - 90, length = 0.375, tag = $rectangleSegmentB007rl) + |> angledLine(angle = segAng(rectangleSegmentA007rl), length = -segLen(rectangleSegmentA007rl), tag = $rectangleSegmentC007rl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1683,20 +1437,14 @@ const sketch008rl = startSketchOn(extrude001rl, 'START') const extrude008rl = extrude(sketch008rl, length = -thickness) // EIA-310-D standard hole pattern -const sketch009rl = startSketchOn(extrude001rl, 'START') +const sketch009rl = startSketchOn(extrude001rl, face = 'START') |> startProfileAt([ 1.75 - originStart[0] - serverDepth, originStart[2] + 0.15 + 0.62 + 0.5 ], %) - |> angledLine([0, -0.375], %, $rectangleSegmentA008rl) - |> angledLine([ - segAng(rectangleSegmentA008rl) - 90, - 0.375 - ], %, $rectangleSegmentB008rl) - |> angledLine([ - segAng(rectangleSegmentA008rl), - -segLen(rectangleSegmentA008rl) - ], %, $rectangleSegmentC008rl) + |> angledLine(angle = 0, length = -0.375, tag = $rectangleSegmentA008rl) + |> angledLine(angle = segAng(rectangleSegmentA008rl) - 90, length = 0.375, tag = $rectangleSegmentB008rl) + |> angledLine(angle = segAng(rectangleSegmentA008rl), length = -segLen(rectangleSegmentA008rl), tag = $rectangleSegmentC008rl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( @@ -1707,18 +1455,18 @@ const sketch009rl = startSketchOn(extrude001rl, 'START') const extrude009rl = extrude(sketch009rl, length = -thickness) // define slots -const sketch010rl = startSketchOn(extrude001rl, 'START') +const sketch010rl = startSketchOn(extrude001rl, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0] - serverDepth + 1.5, originStart[2] + .81 - (.438 / 2) ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0] - serverDepth + 1.5, originStart[2] + .81 + .438 / 2 - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, 1], @@ -1728,35 +1476,35 @@ const sketch010rl = startSketchOn(extrude001rl, 'START') const extrude010rl = extrude(sketch010rl, length = -thickness) // define slots -const sketch011rl = startSketchOn(extrude001rl, 'START') +const sketch011rl = startSketchOn(extrude001rl, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0] - serverDepth + 1.5, originStart[2] + railHeight * 1.75 / 2 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0] - serverDepth + 1.5, originStart[2] + railHeight * 1.75 / 2 - (.438 / 2) - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude011rl = extrude(sketch011rl, length = -thickness) // define slots -const sketch012rl = startSketchOn(extrude001rl, 'START') +const sketch012rl = startSketchOn(extrude001rl, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0] - serverDepth + 1.5, originStart[2] + railHeight * 1.75 - .81 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0] - serverDepth + 1.5, originStart[2] + railHeight * 1.75 - .81 - (.438 / 2) - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, -1], @@ -1769,39 +1517,30 @@ const extrude012rl = extrude(sketch012rl, length = -thickness) // Define planes so the server can be moved fn streamServer = (serverPos) => { const planeXYs = { - plane: { origin: [0, 0 + 2, 4.114 + 1 + serverPos * 1.75], xAxis: [1.0, 0.0, 0.0], yAxis: [0.0, 1.0, 0.0], zAxis: [0.0, 0.0, 1.0] - } } const planeXZs = { - plane: { origin: [0 + 1.2 + .1, 0 + 2, 0], xAxis: [0, -1, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } const planeXZs2 = { - plane: { origin: [18 + 1.4, 0 + 2, 0], xAxis: [0, -1, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } const sketch001s = startSketchOn(planeXYs) |> startProfileAt([1 + 1.2, 1], %) - |> angledLine([0, 17.2], %, $rectangleSegmentA001) - |> angledLine([segAng(rectangleSegmentA001) + 90, 29], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = 17.2, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = 29, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude001s = extrude(sketch001s, length = 7) @@ -1812,15 +1551,15 @@ fn streamServer = (serverPos) => { |> xLine(length = 0.2) |> yLine(length = -0.36) |> xLine(length = 0.5) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ 0.3, 17.15 + 4.114 + 1 + serverPos * 1.75 - 11.114 - ], %) + ]) |> yLine(length = -1.77) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.13, 14.89 + 4.114 + 1 + serverPos * 1.75 - 11.114 - ], %) + ]) |> xLine(length = -0.52) |> yLine(length = -0.42) |> line(end = [0.34, -0.15]) @@ -1836,15 +1575,15 @@ fn streamServer = (serverPos) => { |> xLine(length = 0.2) |> yLine(length = -0.36) |> xLine(length = 0.5) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ 0.3, 17.15 + 4.114 + 1 + serverPos * 1.75 - 11.114 - ], %) + ]) |> yLine(length = -1.77) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.13, 14.89 + 4.114 + 1 + serverPos * 1.75 - 11.114 - ], %) + ]) |> xLine(length = -0.52) |> yLine(length = -0.42) |> line(end = [0.34, -0.15]) diff --git a/rust/kcl-lib/e2e/executor/inputs/server-rack-lite.kcl b/rust/kcl-lib/e2e/executor/inputs/server-rack-lite.kcl index d63b9d131..4a0eb4370 100644 --- a/rust/kcl-lib/e2e/executor/inputs/server-rack-lite.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/server-rack-lite.kcl @@ -9,7 +9,6 @@ const width = 21.53 // simple caster model at each corner fn caster = (originStart) => { const plane001c = { - plane: { origin: [ -(3.543 - 2.756) / 2 + originStart[0], -(3.543 - 2.756) / 2 + originStart[1], @@ -18,7 +17,6 @@ fn caster = (originStart) => { x_axis: [1.0, 0.0, 0.0], y_axis: [0.0, 1.0, 0.0], z_axis: [0.0, 0.0, 1.0] - } } const sketch001c = startSketchOn(plane001c) @@ -46,7 +44,7 @@ fn caster = (originStart) => { ], radius= 8.8 / 2 / 25.4), %) |> extrude(length = -.25) - const sketch002c = startSketchOn(sketch001c, 'START') + const sketch002c = startSketchOn(sketch001c, face = 'START') |> startProfileAt([-originStart[0], 2.2 + originStart[1]], %) |> arc({ angle_start: 30, @@ -57,7 +55,6 @@ fn caster = (originStart) => { |> extrude(length = 3.1) const plane002c = { - plane: { origin: [ 0 + originStart[0], 0.8 + originStart[1], @@ -66,7 +63,6 @@ fn caster = (originStart) => { x_axis: [1, 0, 0], y_axis: [0, 0, 1], z_axis: [1, 0, 0] - } } const sketch003c = startSketchOn(plane002c) |> circle(center = [0, 1.2], radius = 2.48 / 2) @@ -94,7 +90,6 @@ caster([ // left wall const plane001 = { - plane: { origin: [ originStart[0] - 4, originStart[1] + 2, @@ -103,13 +98,12 @@ const plane001 = { x_axis: [0, 1, 0], y_axis: [0, 0, 1], z_axis: [1, 0, 0] - } } const sketch001l = startSketchOn(plane001) |> startProfileAt([0, 0], %) |> xLine(length = serverDepth + .8) - |> angledLineToY({ angle: -45, to: 1 }, %) + |> angledLine(angle = -45, endAbsoluteY = 1) |> xLine(length = -serverDepth + 2 - .8, tag = $seg01) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -118,10 +112,7 @@ const extrude001l = extrude(sketch001l, length = 1) const sketch002l = startSketchOn(plane001) |> startProfileAt([serverDepth + .8, 0], %) |> yLine(length = railHeight * 1.75 + 2) - |> angledLineToX({ - angle: -135, - to: serverDepth - 1 + .8 - }, %) + |> angledLine(angle = -135, endAbsoluteX = serverDepth - 1 + .8) |> yLine(length = -railHeight * 1.75) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -133,10 +124,7 @@ const sketch003l = startSketchOn(plane001) railHeight * 1.75 + 2 ], %) |> xLine(length = -serverDepth - .8, tag = $seg02) - |> angledLineToY({ - angle: -45, - to: railHeight * 1.75 - 1 + 2 - }, %) + |> angledLine(angle = -45, endAbsoluteY = railHeight * 1.75 - 1 + 2) |> xLine(length = serverDepth - 2 + .8) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -145,10 +133,7 @@ const extrude003l = extrude(sketch003l, length = 1) const sketch004l = startSketchOn(plane001) |> startProfileAt([0, 0], %) |> yLine(length = railHeight * 1.75 + 2) - |> angledLineToY({ - angle: 135, - to: railHeight * 1.75 + 2 - 1 - }, %) + |> angledLine(angle = 135, endAbsoluteY = railHeight * 1.75 + 2 - 1) |> yLine(length = -railHeight * 1.75) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -170,8 +155,8 @@ const sketch006l = startSketchOn(plane001) intersectTag: lineToIntersect4, offset: 0 }, %) - |> angledLine({ angle: -70, length: 1.414 }, %) - |> angledLineToY({ angle: 70 + 180, to: 2 - 1 }, %) + |> angledLine(angle = -70, length = 1.414 ) + |> angledLine(angle = 70 + 180, endAbsoluteY = 2 - 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude006l = extrude(sketch006l, length = 1) @@ -186,18 +171,14 @@ const sketch007l = startSketchOn(plane001) intersectTag: lineToIntersect5, offset: 0 }, %) - |> angledLine({ angle: -70, length: 1.414 }, %) - |> angledLineToY({ - angle: 70 + 180, - to: railHeight * 1.75 + 1 - }, %) + |> angledLine(angle = -70, length = 1.414 ) + |> angledLine(angle = 70 + 180, endAbsoluteY = railHeight * 1.75 + 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude007l = extrude(sketch007l, length = 1) // right wall const plane002 = { - plane: { origin: [ originStart[0] - 4 + width - 1, originStart[1] - 1, @@ -206,13 +187,12 @@ const plane002 = { x_axis: [0, 1, 0], y_axis: [0, 0, 1], z_axis: [1, 0, 0] - } } const sketch001w = startSketchOn(plane002) |> startProfileAt([0, 0], %) |> xLine(length = depth) - |> angledLineToY({ angle: -45, to: 1 }, %) + |> angledLine(angle = -45, endAbsoluteY = 1) |> xLine(length = -depth + 2, tag = $seg01w) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -221,7 +201,7 @@ const extrude001w = extrude(sketch001w, length = 1) const sketch002w = startSketchOn(plane002) |> startProfileAt([depth, 0], %) |> yLine(length = railHeight * 1.75 + 2) - |> angledLineToX({ angle: -135, to: depth - 1 }, %) + |> angledLine(angle = -135, endAbsoluteX = depth - 1) |> yLine(length = -railHeight * 1.75) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -230,10 +210,7 @@ const extrude002w = extrude(sketch002w, length = 1) const sketch003w = startSketchOn(plane002) |> startProfileAt([depth, railHeight * 1.75 + 2], %) |> xLine(length = -depth, tag = $seg02w) - |> angledLineToY({ - angle: -45, - to: railHeight * 1.75 - 1 + 2 - }, %) + |> angledLine(angle = -45, endAbsoluteY = railHeight * 1.75 - 1 + 2) |> xLine(length = depth - 2) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -242,10 +219,7 @@ const extrude003w = extrude(sketch003w, length = 1) const sketch004w = startSketchOn(plane002) |> startProfileAt([0, 0], %) |> yLine(length = railHeight * 1.75 + 2) - |> angledLineToY({ - angle: 135, - to: railHeight * 1.75 + 2 - 1 - }, %) + |> angledLine(angle = 135, endAbsoluteY = railHeight * 1.75 + 2 - 1) |> yLine(length = -railHeight * 1.75) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -253,9 +227,9 @@ const extrude004w = extrude(sketch004w, length = 1) const sketch005w = startSketchOn(plane002) |> startProfileAt([1, 40.6 + 1.75 / 2], %) - |> angledLine({ angle: -23, length: 35.5 }, %) - |> angledLine({ angle: -23 + 90 + 45, length: 1.413 }, %) - |> angledLineToX({ angle: -23, to: 1 }, %, $lineToIntersect) + |> angledLine(angle = -23, length = 35.5 ) + |> angledLine(angle = -23 + 90 + 45, length = 1.413 ) + |> angledLine(angle = -23, endAbsoluteX = 1, tag = $lineToIntersect) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude005w = extrude(sketch005w, length = 1) @@ -265,7 +239,7 @@ const sketch006w = startSketchOn(plane002) 1 + 35.5 * cos(23 * pi() / 180), 40.6 - (35.5 * sin(23 * pi() / 180)) + 1.75 / 2 ], %) - |> angledLineToX({ angle: -23 + 90, to: depth - 1 }, %) + |> angledLine(angle = -23 + 90, endAbsoluteX = depth - 1) |> yLine(length = 2.56) |> angledLineThatIntersects({ angle: -23 + 90 + 180, @@ -278,8 +252,8 @@ const extrude006w = extrude(sketch006w, length = 1) const sketch007w = startSketchOn(plane002) |> startProfileAt([depth - 1, 60.65 + 1.75 / 2], %) - |> angledLine({ angle: -23 + 180, length: 34.93 }, %, $lineToIntersect3) - |> angledLine({ angle: 23 - 90, length: 1.414 }, %) + |> angledLine(angle = -23 + 180, length = 34.93 , tag = $lineToIntersect3) + |> angledLine(angle = 23 - 90, length = 1.414 ) |> angledLineThatIntersects({ angle: -23 + 180, intersectTag: lineToIntersect2, @@ -296,7 +270,7 @@ const sketch008w = startSketchOn(plane002) intersectTag: lineToIntersect3, offset: 0 }, %) - |> angledLine({ angle: -23 - 45, length: 1.414 }, %) + |> angledLine(angle = -23 - 45, length = 1.414 ) |> angledLineThatIntersects({ angle: -23 - 90, intersectTag: lineToIntersect, @@ -308,18 +282,18 @@ const extrude008w = extrude(sketch008w, length = 1) const sketch009w = startSketchOn(plane002) |> startProfileAt([31.2, 33.3 + 1.75 / 2], %) - |> angledLine({ angle: -23 - 45, length: 1.414 }, %) - |> angledLine({ angle: 90 - 23, length: 28 }, %) - |> angledLine({ angle: -23 + 45, length: -1.414 }, %) + |> angledLine(angle = -23 - 45, length = 1.414 ) + |> angledLine(angle = 90 - 23, length = 28 ) + |> angledLine(angle = -23 + 45, length = -1.414 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude009w = extrude(sketch009w, length = 1) const sketch010w = startSketchOn(plane002) |> startProfileAt([31.2, 33.3 + 1.75 / 2], %) - |> angledLine({ angle: -23 - 45, length: 1.414 }, %) - |> angledLine({ angle: 180 - 23, length: 28 }, %) - |> angledLine({ angle: -23 + 45, length: 1.414 }, %) + |> angledLine(angle = -23 - 45, length = 1.414 ) + |> angledLine(angle = 180 - 23, length = 28 ) + |> angledLine(angle = -23 + 45, length = 1.414 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude010w = extrude(sketch010w, length = 1) @@ -329,9 +303,9 @@ const sketch011w = startSketchOn(plane002) 31.2 - ((28 - 2) * cos(23 * pi() / 180)), 33.3 + (28 - 2) * sin(23 * pi() / 180) + 1.75 / 2 ], %) - |> angledLine({ angle: 90 - 23, length: 28 - 2 }, %) - |> angledLine({ angle: -23 - 45, length: -1.414 }, %) - |> angledLine({ angle: 90 - 23 + 180, length: 28 }, %) + |> angledLine(angle = 90 - 23, length = 28 - 2 ) + |> angledLine(angle = -23 - 45, length = -1.414 ) + |> angledLine(angle = 90 - 23 + 180, length = 28 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude011w = extrude(sketch011w, length = 1) @@ -341,9 +315,9 @@ const sketch012w = startSketchOn(plane002) 31.2 + (28 - 2) * sin(23 * pi() / 180), 33.3 + (28 - 2) * cos(23 * pi() / 180) + 1.75 / 2 ], %) - |> angledLine({ angle: 180 - 23, length: 28 - 2 }, %) - |> angledLine({ angle: -23 - 45, length: -1.414 }, %) - |> angledLine({ angle: -23, length: 28 }, %) + |> angledLine(angle = 180 - 23, length = 28 - 2 ) + |> angledLine(angle = -23 - 45, length = -1.414 ) + |> angledLine(angle = -23, length = 28 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude012w = extrude(sketch012w, length = 1) @@ -353,8 +327,8 @@ const sketch013w = startSketchOn(plane002) 1 + 4 * cos(23 * pi() / 180), 40.6 - (4 * sin(23 * pi() / 180)) + 1.75 / 2 ], %) - |> angledLine({ angle: -23, length: 1 }, %) - |> angledLineToX({ angle: -23 + 90, to: 1 }, %) + |> angledLine(angle = -23, length = 1 ) + |> angledLine(angle = -23 + 90, endAbsoluteX = 1) |> yLine(length = 2.56) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -365,9 +339,9 @@ const sketch014w = startSketchOn(plane002) 1 + 12 * cos(23 * pi() / 180), 40.6 - (12 * sin(23 * pi() / 180)) + 1.75 / 2 ], %) - |> angledLine({ angle: -23 - 90, length: 36 / 2 }, %) - |> angledLine({ angle: -23, length: 1 }, %) - |> angledLine({ angle: -23 - 90, length: -36 / 2 }, %) + |> angledLine(angle = -23 - 90, length = 36 / 2 ) + |> angledLine(angle = -23, length = 1 ) + |> angledLine(angle = -23 - 90, length = -36 / 2 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude014w = extrude(sketch014w, length = 1) @@ -377,9 +351,9 @@ const sketch015w = startSketchOn(plane002) 1 + (36 - 5.55 - 8) * cos(23 * pi() / 180), 40.6 - ((36 - 5.55 - 8) * sin(23 * pi() / 180)) + 1.75 / 2 ], %) - |> angledLine({ angle: -23 - 90, length: 36 / 2 }, %) - |> angledLine({ angle: -23, length: 1 }, %) - |> angledLine({ angle: -23 - 90, length: -36 / 2 }, %) + |> angledLine(angle = -23 - 90, length = 36 / 2 ) + |> angledLine(angle = -23, length = 1 ) + |> angledLine(angle = -23 - 90, length = -36 / 2 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude015w = extrude(sketch015w, length = 1) @@ -389,9 +363,9 @@ const sketch016w = startSketchOn(plane002) 1 + (36 - 5.5) * cos(23 * pi() / 180), 40.6 - ((36 - 5.5) * sin(23 * pi() / 180)) + 1.75 / 2 ], %) - |> angledLine({ angle: -23 - 90, length: 36 / 2 }, %) - |> angledLine({ angle: -23, length: 1 }, %) - |> angledLine({ angle: -23 - 90, length: -36 / 2 }, %) + |> angledLine(angle = -23 - 90, length = 36 / 2 ) + |> angledLine(angle = -23, length = 1 ) + |> angledLine(angle = -23 - 90, length = -36 / 2 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude016w = extrude(sketch016w, length = 1) @@ -406,7 +380,7 @@ const sketch017w = startSketchOn(plane002) angleEnd: 180 - 23, radius: 7 / 2 + 2 }, %) - |> angledLine({ angle: -23 + 180, length: -1 }, %) + |> angledLine(angle = -23 + 180, length = -1 ) |> arc({ angleStart: 180 - 23, angleEnd: -23, @@ -426,7 +400,7 @@ const sketch018w = startSketchOn(plane002) angleEnd: 180 - 23, radius: 7 / 2 + 2 }, %) - |> angledLine({ angle: -23 + 180, length: -1 }, %) + |> angledLine(angle = -23 + 180, length = -1 ) |> arc({ angleStart: 180 - 23, angleEnd: -23, @@ -438,9 +412,9 @@ const extrude018w = extrude(sketch018w, length = 1) const sketch019w = startSketchOn(plane002) |> startProfileAt([1, 27.8 + 1.75 / 2], %) - |> angledLine({ angle: -23, length: 7 }, %) - |> angledLine({ angle: -23 + 90, length: -1 }, %) - |> angledLineToX({ angle: -23, to: 1 }, %) + |> angledLine(angle = -23, length = 7 ) + |> angledLine(angle = -23 + 90, length = -1 ) + |> angledLine(angle = -23, endAbsoluteX = 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude019w = extrude(sketch019w, length = 1) @@ -450,72 +424,64 @@ const sketch020w = startSketchOn(plane002) 1 + (36 - 5.53 - 12) * cos(23 * pi() / 180), 27.8 + 1.75 / 2 - ((36 - 5.53 - 12) * sin(23 * pi() / 180)) ], %) - |> angledLine({ angle: -23, length: 7 }, %) - |> angledLine({ angle: -23 + 90, length: -1 }, %) - |> angledLine({ angle: -23 + 180, length: 7 }, %) + |> angledLine(angle = -23, length = 7 ) + |> angledLine(angle = -23 + 90, length = -1 ) + |> angledLine(angle = -23 + 180, length = 7 ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude020w = extrude(sketch020w, length = 1) const sketch021w = startSketchOn(plane002) |> startProfileAt([1, 21.9], %) - |> angledLineToX({ angle: -23, to: depth - 1 }, %) + |> angledLine(angle = -23, endAbsoluteX = depth - 1) |> yLine(length = -1.1) - |> angledLineToX({ angle: -23, to: 1 }, %) + |> angledLine(angle = -23, endAbsoluteX = 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude021w = extrude(sketch021w, length = 1) const sketch022w = startSketchOn(plane002) |> startProfileAt([depth - 1, 74.1], %) - |> angledLineToY({ - angle: 180 - 23, - to: railHeight * 1.75 + 1 - }, %) + |> angledLine(angle = 180 - 23, endAbsoluteY = railHeight * 1.75 + 1) |> xLine(length = -2.56) - |> angledLineToX({ angle: -23, to: depth - 1 }, %) + |> angledLine(angle = -23, endAbsoluteX = depth - 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude022w = extrude(sketch022w, length = 1) const sketch023w = startSketchOn(plane002) |> startProfileAt([1, 69.53 + 1.75], %) - |> angledLineToY({ - angle: 90 - 23, - to: railHeight * 1.75 + 1 - }, %) + |> angledLine(angle = 90 - 23, endAbsoluteY = railHeight * 1.75 + 1) |> xLine(length = 1.086) - |> angledLineToX({ angle: 90 - 23, to: 1 }, %) + |> angledLine(angle = 90 - 23, endAbsoluteX = 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude023w = extrude(sketch023w, length = 1) const sketch024w = startSketchOn(plane002) |> startProfileAt([1, 16.5], %) - |> angledLineToY({ angle: -23, to: 1 }, %) + |> angledLine(angle = -23, endAbsoluteY = 1) |> xLine(length = -2.56) - |> angledLineToX({ angle: -23, to: 1 }, %) + |> angledLine(angle = -23, endAbsoluteX = 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude024w = extrude(sketch024w, length = 1) const sketch025w = startSketchOn(plane002) |> startProfileAt([1, 4], %) - |> angledLineToY({ angle: -23, to: 1 }, %) + |> angledLine(angle = -23, endAbsoluteY = 1) |> xLine(length = -2.56) - |> angledLineToX({ angle: -23, to: 1 }, %) + |> angledLine(angle = -23, endAbsoluteX = 1) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude025w = extrude(sketch025w, length = 1) // Base plane of rack const plane003 = { - plane: { origin: [0, 0, 4.114], x_axis: [1, 0, 0], y_axis: [0, 1, 0], z_axis: [0, 0, 1] - } } const sketch005 = startSketchOn(plane003) @@ -563,12 +529,10 @@ const extrude008 = extrude(sketch008, length = 1) // Top Plane const plane004 = { - plane: { origin: [0, 0, 4.114 + railHeight * 1.75 + 2], x_axis: [1, 0, 0], y_axis: [0, 1, 0], z_axis: [0, 0, 1] - } } const sketch005t = startSketchOn(plane004) @@ -616,16 +580,13 @@ const extrude009t = extrude(sketch009t, length = -1) // front left vertical rail // Define planes so the rail can be moved const planeXYfl = { - plane: { origin: [0, 0, originStart[2]], xAxis: [1.0, 0.0, 0.0], yAxis: [0.0, 1.0, 0.0], zAxis: [0.0, 0.0, 1.0] - } } const planeXZfl = { - plane: { origin: [ originStart[1], originStart[0], @@ -634,11 +595,9 @@ const planeXZfl = { xAxis: [0, 1, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } const planeYZfl = { - plane: { origin: [ originStart[1], originStart[0], @@ -647,21 +606,14 @@ const planeYZfl = { xAxis: [-1, 0, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } // Base flange const sketch001fl = startSketchOn(planeXZfl) |> startProfileAt([bendRad + thickness, 0], %) - |> angledLine([0, 2 - bendRad - thickness], %, $rectangleSegmentA001fl) - |> angledLine([ - segAng(rectangleSegmentA001fl) + 90, - railHeight * 1.75 - ], %, $rectangleSegmentB001fl) - |> angledLine([ - segAng(rectangleSegmentA001fl), - -segLen(rectangleSegmentA001fl) - ], %, $rectangleSegmentC001fl) + |> angledLine(angle = 0, length = 2 - bendRad - thickness, tag = $rectangleSegmentA001fl) + |> angledLine(angle = segAng(rectangleSegmentA001fl) + 90, length = railHeight * 1.75, tag = $rectangleSegmentB001fl) + |> angledLine(angle = segAng(rectangleSegmentA001fl), length = -segLen(rectangleSegmentA001fl), tag = $rectangleSegmentC001fl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude001fl = extrude(sketch001fl, length = thickness) @@ -669,15 +621,9 @@ const extrude001fl = extrude(sketch001fl, length = thickness) // First flange const sketch002fl = startSketchOn(planeYZfl) |> startProfileAt([-bendRad - thickness, 0], %) - |> angledLine([180, 0.89 - bendRad - thickness], %, $rectangleSegmentA002fl) - |> angledLine([ - segAng(rectangleSegmentA002fl) - 90, - railHeight * 1.75 - ], %, $rectangleSegmentB002fl) - |> angledLine([ - segAng(rectangleSegmentA002fl), - -segLen(rectangleSegmentA002fl) - ], %, $rectangleSegmentC002fl) + |> angledLine(angle = 180, length = 0.89 - bendRad - thickness, tag = $rectangleSegmentA002fl) + |> angledLine(angle = segAng(rectangleSegmentA002fl) - 90, length = railHeight * 1.75, tag = $rectangleSegmentB002fl) + |> angledLine(angle = segAng(rectangleSegmentA002fl), length = -segLen(rectangleSegmentA002fl), tag = $rectangleSegmentC002fl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -706,18 +652,18 @@ const sketch003fl = startSketchOn(planeXYfl) const extrude003fl = extrude(sketch003fl, length = railHeight * 1.75) // define slots -const sketch010fl = startSketchOn(extrude001fl, 'START') +const sketch010fl = startSketchOn(extrude001fl, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0], originStart[2] + .81 - (.438 / 2) ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0], originStart[2] + .81 + .438 / 2 - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, 1], @@ -727,35 +673,35 @@ const sketch010fl = startSketchOn(extrude001fl, 'START') const extrude010fl = extrude(sketch010fl, length = -thickness) // define slots -const sketch011fl = startSketchOn(extrude001fl, 'START') +const sketch011fl = startSketchOn(extrude001fl, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0], originStart[2] + railHeight * 1.75 / 2 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0], originStart[2] + railHeight * 1.75 / 2 - (.438 / 2) - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude011fl = extrude(sketch011fl, length = -thickness) // define slots -const sketch012fl = startSketchOn(extrude001fl, 'START') +const sketch012fl = startSketchOn(extrude001fl, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0], originStart[2] + railHeight * 1.75 - .81 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0], originStart[2] + railHeight * 1.75 - .81 - (.438 / 2) - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, -1], @@ -767,16 +713,13 @@ const extrude012fl = extrude(sketch012fl, length = -thickness) // FRONT RIGHT VERTICAL RAIL // Define planes so the rail can be moved const planeXYfr = { - plane: { origin: [0, 0, originStart[2]], xAxis: [1.0, 0.0, 0.0], yAxis: [0.0, 1.0, 0.0], zAxis: [0.0, 0.0, 1.0] - } } const planeXZfr = { - plane: { origin: [ originStart[1] + width - thickness - 2, originStart[0], @@ -785,11 +728,9 @@ const planeXZfr = { xAxis: [0, 1, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } const planeYZfr = { - plane: { origin: [ originStart[1] + width - 2, originStart[0], @@ -798,21 +739,14 @@ const planeYZfr = { xAxis: [-1, 0, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } // Base flange const sketch001fr = startSketchOn(planeXZfr) |> startProfileAt([bendRad + thickness, 0], %) - |> angledLine([0, 2 - bendRad - thickness], %, $rectangleSegmentA001fr) - |> angledLine([ - segAng(rectangleSegmentA001fr) + 90, - railHeight * 1.75 - ], %, $rectangleSegmentB001fr) - |> angledLine([ - segAng(rectangleSegmentA001fr), - -segLen(rectangleSegmentA001fr) - ], %, $rectangleSegmentC001fr) + |> angledLine(angle = 0, length = 2 - bendRad - thickness, tag = $rectangleSegmentA001fr) + |> angledLine(angle = segAng(rectangleSegmentA001fr) + 90, length = railHeight * 1.75, tag = $rectangleSegmentB001fr) + |> angledLine(angle = segAng(rectangleSegmentA001fr), length = -segLen(rectangleSegmentA001fr), tag = $rectangleSegmentC001fr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude001fr = extrude(sketch001fr, length = thickness) @@ -820,15 +754,9 @@ const extrude001fr = extrude(sketch001fr, length = thickness) // First flange const sketch002fr = startSketchOn(planeYZfr) |> startProfileAt([0.89, 0], %) - |> angledLine([180, 0.89 - bendRad - thickness], %, $rectangleSegmentA002fr) - |> angledLine([ - segAng(rectangleSegmentA002fr) - 90, - railHeight * 1.75 - ], %, $rectangleSegmentB002fr) - |> angledLine([ - segAng(rectangleSegmentA002fr), - -segLen(rectangleSegmentA002fr) - ], %, $rectangleSegmentC002fr) + |> angledLine(angle = 180, length = 0.89 - bendRad - thickness, tag = $rectangleSegmentA002fr) + |> angledLine(angle = segAng(rectangleSegmentA002fr) - 90, length = railHeight * 1.75, tag = $rectangleSegmentB002fr) + |> angledLine(angle = segAng(rectangleSegmentA002fr), length = -segLen(rectangleSegmentA002fr), tag = $rectangleSegmentC002fr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -856,18 +784,18 @@ const sketch003fr = startSketchOn(planeXYfr) const extrude003fr = extrude(sketch003fr, length = railHeight * 1.75) // define slots -const sketch010fr = startSketchOn(extrude001fr, 'START') +const sketch010fr = startSketchOn(extrude001fr, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0], originStart[2] + .81 - (.438 / 2) ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0], originStart[2] + .81 + .438 / 2 - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, 1], @@ -877,35 +805,35 @@ const sketch010fr = startSketchOn(extrude001fr, 'START') const extrude010fr = extrude(sketch010fr, length = -thickness) // define slots -const sketch011fr = startSketchOn(extrude001fr, 'START') +const sketch011fr = startSketchOn(extrude001fr, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0], originStart[2] + railHeight * 1.75 / 2 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0], originStart[2] + railHeight * 1.75 / 2 - (.438 / 2) - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude011fr = extrude(sketch011fr, length = -thickness) // define slots -const sketch012fr = startSketchOn(extrude001fr, 'START') +const sketch012fr = startSketchOn(extrude001fr, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0], originStart[2] + railHeight * 1.75 - .81 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0], originStart[2] + railHeight * 1.75 - .81 - (.438 / 2) - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, -1], @@ -917,16 +845,13 @@ const extrude012fr = extrude(sketch012fr, length = -thickness) // RIGHT REAR VERTICAL RAIL // Define planes so the rail can be moved const planeXYrr = { - plane: { origin: [0, serverDepth, originStart[2]], xAxis: [1.0, 0.0, 0.0], yAxis: [0.0, 1.0, 0.0], zAxis: [0.0, 0.0, 1.0] - } } const planeXZrr = { - plane: { origin: [ originStart[1] + width - thickness - 2, originStart[0] + serverDepth - 2 - bendRad, @@ -935,11 +860,9 @@ const planeXZrr = { xAxis: [0, 1, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } const planeYZrr = { - plane: { origin: [ originStart[1] + width - 2, originStart[0] + serverDepth, @@ -948,21 +871,14 @@ const planeYZrr = { xAxis: [-1, 0, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } // Base flange const sketch001rr = startSketchOn(planeXZrr) |> startProfileAt([bendRad + thickness, 0], %) - |> angledLine([0, 2 - bendRad - thickness], %, $rectangleSegmentA001rr) - |> angledLine([ - segAng(rectangleSegmentA001rr) + 90, - railHeight * 1.75 - ], %, $rectangleSegmentB001rr) - |> angledLine([ - segAng(rectangleSegmentA001rr), - -segLen(rectangleSegmentA001rr) - ], %, $rectangleSegmentC001rr) + |> angledLine(angle = 0, length = 2 - bendRad - thickness, tag = $rectangleSegmentA001rr) + |> angledLine(angle = segAng(rectangleSegmentA001rr) + 90, length = railHeight * 1.75, tag = $rectangleSegmentB001rr) + |> angledLine(angle = segAng(rectangleSegmentA001rr), length = -segLen(rectangleSegmentA001rr), tag = $rectangleSegmentC001rr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude001rr = extrude(sketch001rr, length = thickness) @@ -970,15 +886,9 @@ const extrude001rr = extrude(sketch001rr, length = thickness) // First flange const sketch002rr = startSketchOn(planeYZrr) |> startProfileAt([0.89, 0], %) - |> angledLine([180, 0.89 - bendRad - thickness], %, $rectangleSegmentA002rr) - |> angledLine([ - segAng(rectangleSegmentA002rr) - 90, - railHeight * 1.75 - ], %, $rectangleSegmentB002rr) - |> angledLine([ - segAng(rectangleSegmentA002rr), - -segLen(rectangleSegmentA002rr) - ], %, $rectangleSegmentC002rr) + |> angledLine(angle = 180, length = 0.89 - bendRad - thickness, tag = $rectangleSegmentA002rr) + |> angledLine(angle = segAng(rectangleSegmentA002rr) - 90, length = railHeight * 1.75, tag = $rectangleSegmentB002rr) + |> angledLine(angle = segAng(rectangleSegmentA002rr), length = -segLen(rectangleSegmentA002rr), tag = $rectangleSegmentC002rr) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -1006,18 +916,18 @@ const sketch003rr = startSketchOn(planeXYrr) const extrude003rr = extrude(sketch003rr, length = railHeight * 1.75) // define slots -const sketch010rr = startSketchOn(extrude001rr, 'START') +const sketch010rr = startSketchOn(extrude001rr, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0] + 1.5 - serverDepth, originStart[2] + .81 - (.438 / 2) ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0] + 1.5 - serverDepth, originStart[2] + .81 + .438 / 2 - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, 1], @@ -1027,35 +937,35 @@ const sketch010rr = startSketchOn(extrude001rr, 'START') const extrude010rr = extrude(sketch010rr, length = -thickness) // define slots -const sketch011rr = startSketchOn(extrude001rr, 'START') +const sketch011rr = startSketchOn(extrude001rr, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0] + 1.5 - serverDepth, originStart[2] + railHeight * 1.75 / 2 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0] + 1.5 - serverDepth, originStart[2] + railHeight * 1.75 / 2 - (.438 / 2) - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude011rr = extrude(sketch011rr, length = -thickness) // define slots -const sketch012rr = startSketchOn(extrude001rr, 'START') +const sketch012rr = startSketchOn(extrude001rr, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0] + 1.5 - serverDepth, originStart[2] + railHeight * 1.75 - .81 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0] + 1.5 - serverDepth, originStart[2] + railHeight * 1.75 - .81 - (.438 / 2) - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, -1], @@ -1067,16 +977,13 @@ const extrude012rr = extrude(sketch012rr, length = -thickness) // REAR LEFT VETCIAL RAIL // Define planes so the rail can be moved const planeXYrl = { - plane: { origin: [0, serverDepth, originStart[2]], xAxis: [1.0, 0.0, 0.0], yAxis: [0.0, 1.0, 0.0], zAxis: [0.0, 0.0, 1.0] - } } const planeXZrl = { - plane: { origin: [ originStart[1], originStart[0] + serverDepth - 2 - bendRad, @@ -1085,11 +992,9 @@ const planeXZrl = { xAxis: [0, 1, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } const planeYZrl = { - plane: { origin: [ originStart[1], originStart[0] + serverDepth, @@ -1098,20 +1003,13 @@ const planeYZrl = { xAxis: [-1, 0, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } // Base flange const sketch001rl = startSketchOn(planeXZrl) |> startProfileAt([bendRad + thickness, 0], %) - |> angledLine([0, 2 - bendRad - thickness], %, $rectangleSegmentA001rl) - |> angledLine([ - segAng(rectangleSegmentA001rl) + 90, - railHeight * 1.75 - ], %, $rectangleSegmentB001rl) - |> angledLine([ - segAng(rectangleSegmentA001rl), - -segLen(rectangleSegmentA001rl) - ], %, $rectangleSegmentC001rl) + |> angledLine(angle = 0, length = 2 - bendRad - thickness, tag = $rectangleSegmentA001rl) + |> angledLine(angle = segAng(rectangleSegmentA001rl) + 90, length = railHeight * 1.75, tag = $rectangleSegmentB001rl) + |> angledLine(angle = segAng(rectangleSegmentA001rl), length = -segLen(rectangleSegmentA001rl), tag = $rectangleSegmentC001rl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude001rl = extrude(sketch001rl, length = thickness) @@ -1119,15 +1017,9 @@ const extrude001rl = extrude(sketch001rl, length = thickness) // First flange const sketch002rl = startSketchOn(planeYZrl) |> startProfileAt([-bendRad - thickness, 0], %) - |> angledLine([180, 0.89 - bendRad - thickness], %, $rectangleSegmentA002rl) - |> angledLine([ - segAng(rectangleSegmentA002rl) - 90, - railHeight * 1.75 - ], %, $rectangleSegmentB002rl) - |> angledLine([ - segAng(rectangleSegmentA002rl), - -segLen(rectangleSegmentA002rl) - ], %, $rectangleSegmentC002rl) + |> angledLine(angle = 180, length = 0.89 - bendRad - thickness, tag = $rectangleSegmentA002rl) + |> angledLine(angle = segAng(rectangleSegmentA002rl) - 90, length = railHeight * 1.75, tag = $rectangleSegmentB002rl) + |> angledLine(angle = segAng(rectangleSegmentA002rl), length = -segLen(rectangleSegmentA002rl), tag = $rectangleSegmentC002rl) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() @@ -1155,18 +1047,18 @@ const sketch003rl = startSketchOn(planeXYrl) const extrude003rl = extrude(sketch003rl, length = railHeight * 1.75) // define slots -const sketch010rl = startSketchOn(extrude001rl, 'START') +const sketch010rl = startSketchOn(extrude001rl, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0] - serverDepth + 1.5, originStart[2] + .81 - (.438 / 2) ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0] - serverDepth + 1.5, originStart[2] + .81 + .438 / 2 - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, 1], @@ -1176,35 +1068,35 @@ const sketch010rl = startSketchOn(extrude001rl, 'START') const extrude010rl = extrude(sketch010rl, length = -thickness) // define slots -const sketch011rl = startSketchOn(extrude001rl, 'START') +const sketch011rl = startSketchOn(extrude001rl, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0] - serverDepth + 1.5, originStart[2] + railHeight * 1.75 / 2 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0] - serverDepth + 1.5, originStart[2] + railHeight * 1.75 / 2 - (.438 / 2) - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude011rl = extrude(sketch011rl, length = -thickness) // define slots -const sketch012rl = startSketchOn(extrude001rl, 'START') +const sketch012rl = startSketchOn(extrude001rl, face = 'START') |> startProfileAt([ -1.12 + (.75 - .438) / 2 - originStart[0] - serverDepth + 1.5, originStart[2] + railHeight * 1.75 - .81 + .438 / 2 ], %) |> xLine(length = 0.75 - .438) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.66 - originStart[0] - serverDepth + 1.5, originStart[2] + railHeight * 1.75 - .81 - (.438 / 2) - ], %) + ]) |> xLine(length = -0.75 + .438) - |> tangentialArcTo([profileStartX(%), profileStartY(%)], %) + |> tangentialArc(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() |> patternLinear2d( axis = [0, -1], @@ -1216,39 +1108,30 @@ const extrude012rl = extrude(sketch012rl, length = -thickness) // Define planes so the server can be moved fn streamServer = (serverPos) => { const planeXYs = { - plane: { origin: [0, 0 + 2, 4.114 + 1 + serverPos * 1.75], xAxis: [1.0, 0.0, 0.0], yAxis: [0.0, 1.0, 0.0], zAxis: [0.0, 0.0, 1.0] - } } const planeXZs = { - plane: { origin: [0 + 1.2 + .1, 0 + 2, 0], xAxis: [0, -1, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } const planeXZs2 = { - plane: { origin: [18 + 1.4, 0 + 2, 0], xAxis: [0, -1, 0], yAxis: [0, 0, 1], zAxis: [1, 0, 0] - } } const sketch001s = startSketchOn(planeXYs) |> startProfileAt([1 + 1.2, 1], %) - |> angledLine([0, 17.2], %, $rectangleSegmentA001) - |> angledLine([segAng(rectangleSegmentA001) + 90, 29], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = 17.2, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = 29, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude001s = extrude(sketch001s, length = 7) @@ -1259,15 +1142,15 @@ fn streamServer = (serverPos) => { |> xLine(length = 0.2) |> yLine(length = -0.36) |> xLine(length = 0.5) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ 0.3, 17.15 + 4.114 + 1 + serverPos * 1.75 - 11.114 - ], %) + ]) |> yLine(length = -1.77) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.13, 14.89 + 4.114 + 1 + serverPos * 1.75 - 11.114 - ], %) + ]) |> xLine(length = -0.52) |> yLine(length = -0.42) |> line(end = [0.34, -0.15]) @@ -1283,15 +1166,15 @@ fn streamServer = (serverPos) => { |> xLine(length = 0.2) |> yLine(length = -0.36) |> xLine(length = 0.5) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ 0.3, 17.15 + 4.114 + 1 + serverPos * 1.75 - 11.114 - ], %) + ]) |> yLine(length = -1.77) - |> tangentialArcTo([ + |> tangentialArc(endAbsolute = [ -0.13, 14.89 + 4.114 + 1 + serverPos * 1.75 - 11.114 - ], %) + ]) |> xLine(length = -0.52) |> yLine(length = -0.42) |> line(end = [0.34, -0.15]) diff --git a/rust/kcl-lib/e2e/executor/inputs/sketch-on-chamfer-two-times-different-order.kcl b/rust/kcl-lib/e2e/executor/inputs/sketch-on-chamfer-two-times-different-order.kcl index 1159bdd7c..bf353a9fc 100644 --- a/rust/kcl-lib/e2e/executor/inputs/sketch-on-chamfer-two-times-different-order.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/sketch-on-chamfer-two-times-different-order.kcl @@ -1,14 +1,8 @@ const sketch001 = startSketchOn(XZ) |> startProfileAt([75.8, 317.2], %) // [$startCapTag, $EndCapTag] - |> angledLine([0, 268.43], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 217.26 - ], %, $seg01) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude001 = extrude(sketch001, length = 100) @@ -20,30 +14,18 @@ const extrude001 = extrude(sketch001, length = 100) ) |> chamfer(length = 50, tags = [seg02], tag = $seg04) -const sketch003 = startSketchOn(extrude001, seg04) +const sketch003 = startSketchOn(extrude001, face = seg04) |> startProfileAt([-69.1, 277.34], %) - |> angledLine([0, 41.48], %, $rectangleSegmentA003) - |> angledLine([ - segAng(rectangleSegmentA003) - 90, - 104.8 - ], %, $rectangleSegmentB002) - |> angledLine([ - segAng(rectangleSegmentA003), - -segLen(rectangleSegmentA003) - ], %, $rectangleSegmentC002) + |> angledLine(angle = 0, length = 41.48, tag = $rectangleSegmentA003) + |> angledLine(angle = segAng(rectangleSegmentA003) - 90, length = 104.8, tag = $rectangleSegmentB002) + |> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003), tag = $rectangleSegmentC002) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() -const sketch002 = startSketchOn(extrude001, seg03) +const sketch002 = startSketchOn(extrude001, face = seg03) |> startProfileAt([159.25, 278.35], %) - |> angledLine([0, 40.82], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 132.27 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = 40.82, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 132.27, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude002 = extrude(sketch002, length = 50) diff --git a/rust/kcl-lib/e2e/executor/inputs/sketch-on-chamfer-two-times.kcl b/rust/kcl-lib/e2e/executor/inputs/sketch-on-chamfer-two-times.kcl index 5cdd0a23f..d9f031e1e 100644 --- a/rust/kcl-lib/e2e/executor/inputs/sketch-on-chamfer-two-times.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/sketch-on-chamfer-two-times.kcl @@ -1,14 +1,8 @@ const sketch001 = startSketchOn(XZ) |> startProfileAt([75.8, 317.2], %) // [$startCapTag, $EndCapTag] - |> angledLine([0, 268.43], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 217.26 - ], %, $seg01) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) |> close() const extrude001 = extrude(sketch001, length = 100) @@ -20,30 +14,18 @@ const extrude001 = extrude(sketch001, length = 100) tag = $seg03 ) -const sketch003 = startSketchOn(extrude001, seg04) +const sketch003 = startSketchOn(extrude001, face = seg04) |> startProfileAt([-69.1, 277.34], %) - |> angledLine([0, 41.48], %, $rectangleSegmentA003) - |> angledLine([ - segAng(rectangleSegmentA003) - 90, - 104.8 - ], %, $rectangleSegmentB002) - |> angledLine([ - segAng(rectangleSegmentA003), - -segLen(rectangleSegmentA003) - ], %, $rectangleSegmentC002) + |> angledLine(angle = 0, length = 41.48, tag = $rectangleSegmentA003) + |> angledLine(angle = segAng(rectangleSegmentA003) - 90, length = 104.8, tag = $rectangleSegmentB002) + |> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003), tag = $rectangleSegmentC002) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() -const sketch002 = startSketchOn(extrude001, seg03) +const sketch002 = startSketchOn(extrude001, face = seg03) |> startProfileAt([159.25, 278.35], %) - |> angledLine([0, 40.82], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 132.27 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = 40.82, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 132.27, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() const extrude002 = extrude(sketch002, length = 50) diff --git a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face.kcl b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face.kcl index 4e0d6f78d..7035d701d 100644 --- a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face.kcl @@ -6,7 +6,7 @@ part001 = startSketchOn(XY) |> close() |> extrude(length = 5) -part002 = startSketchOn(part001, here) +part002 = startSketchOn(part001, face = here) |> startProfileAt([0, 0], %) |> line(end = [0, 10]) |> line(end = [10, 0]) diff --git a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_after_fillets_referencing_face.kcl b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_after_fillets_referencing_face.kcl index 1c3562268..cf6ced88d 100644 --- a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_after_fillets_referencing_face.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_after_fillets_referencing_face.kcl @@ -45,7 +45,7 @@ bracket = startSketchOn(XY) ] ) -sketch001 = startSketchOn(bracket, seg01) +sketch001 = startSketchOn(bracket, face = seg01) |> startProfileAt([4.28, 3.83], %) |> line(end = [2.17, -0.03]) |> line(end = [-0.07, -1.8]) diff --git a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_circle_tagged.kcl b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_circle_tagged.kcl index 0d1e62d40..bb84507cf 100644 --- a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_circle_tagged.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_circle_tagged.kcl @@ -11,6 +11,6 @@ const part001 = cube([0,0], 20) |> close() |> extrude(length = 20) -const part002 = startSketchOn(part001, "end") +const part002 = startSketchOn(part001, face = "end") |> circle(center: [0, 0], radius: 5, tag =$myCircle) |> extrude(length = 5) diff --git a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end.kcl b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end.kcl index 6f97f426b..f5735b996 100644 --- a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end.kcl @@ -11,7 +11,7 @@ const part001 = cube([0,0], 20) |> close() |> extrude(length = 20) -const part002 = startSketchOn(part001, "END") +const part002 = startSketchOn(part001, face = "END") |> startProfileAt([0, 0], %) |> line(end = [0, 10]) |> line(end = [10, 0]) diff --git a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end_negative_extrude.kcl b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end_negative_extrude.kcl index b479b80d1..9c2a210da 100644 --- a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end_negative_extrude.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_end_negative_extrude.kcl @@ -11,7 +11,7 @@ const part001 = cube([0,0], 20) |> close() |> extrude(length = 20) -const part002 = startSketchOn(part001, "END") +const part002 = startSketchOn(part001, face = "END") |> startProfileAt([0, 0], %) |> line(end = [0, 10]) |> line(end = [10, 0]) diff --git a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_start.kcl b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_start.kcl index f71df502e..915ab44fa 100644 --- a/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_start.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/sketch_on_face_start.kcl @@ -11,7 +11,7 @@ const part001 = cube([0,0], 20) |> close() |> extrude(length = 20) -const part002 = startSketchOn(part001, "start") +const part002 = startSketchOn(part001, face = "start") |> startProfileAt([0, 0], %) |> line(end = [0, 10]) |> line(end = [10, 0]) diff --git a/rust/kcl-lib/e2e/executor/inputs/slow_lego.kcl.tmpl b/rust/kcl-lib/e2e/executor/inputs/slow_lego.kcl.tmpl index 41f5f22ee..b9ffb2e31 100644 --- a/rust/kcl-lib/e2e/executor/inputs/slow_lego.kcl.tmpl +++ b/rust/kcl-lib/e2e/executor/inputs/slow_lego.kcl.tmpl @@ -13,21 +13,17 @@ const totalLength = lbumps * pitch - (2.0 * clearance) const totalWidth = wbumps * pitch - (2.0 * clearance) // Create the plane for the pegs. This is a hack so that the pegs can be patterned along the face of the lego base. const pegFace = { - plane: { - origin: { x: 0, y: 0, z: height }, - xAxis: { x: 1, y: 0, z: 0 }, - yAxis: { x: 0, y: 1, z: 0 }, - zAxis: { x: 0, y: 0, z: 1 } - } + origin: { x: 0, y: 0, z: height }, + xAxis: { x: 1, y: 0, z: 0 }, + yAxis: { x: 0, y: 1, z: 0 }, + zAxis: { x: 0, y: 0, z: 1 } } // Create the plane for the tubes underneath the lego. This is a hack so that the tubes can be patterned underneath the lego. const tubeFace = { - plane: { - origin: { x: 0, y: 0, z: height - t }, - xAxis: { x: 1, y: 0, z: 0 }, - yAxis: { x: 0, y: 1, z: 0 }, - zAxis: { x: 0, y: 0, z: 1 } - } + origin: { x: 0, y: 0, z: height - t }, + xAxis: { x: 1, y: 0, z: 0 }, + yAxis: { x: 0, y: 1, z: 0 }, + zAxis: { x: 0, y: 0, z: 1 } } // Make the base const s = startSketchOn('XY') diff --git a/rust/kcl-lib/e2e/executor/inputs/tan_arc_x_line.kcl b/rust/kcl-lib/e2e/executor/inputs/tan_arc_x_line.kcl index 84effde32..5da53aecd 100644 --- a/rust/kcl-lib/e2e/executor/inputs/tan_arc_x_line.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/tan_arc_x_line.kcl @@ -6,20 +6,21 @@ let angleStart = 110 startSketchOn(XY) |> startProfileAt([startX, startY], %) - |> angledLine({ - angle: angleStart, - length: .000001, - }, %) - |> tangentialArc({ - offset: angleOffset, + |> angledLine( + angle = angleStart, + length = .000001, + ) + |> tangentialArc( + angle = angleOffset, radius: r, - }, %, $arc1) - |> tangentialArc({ - offset: angleOffset, - radius: 0.5*r, - }, %, $arc2) - |> tangentialArc({ - offset: -angleOffset, - radius: 0.5*r, -}, %, $arc3) + tag = $arc1, + ) + |> tangentialArc( + angle = angleOffset, + radius = 0.5*r, + tag = $arc2) + |> tangentialArc( + angle = -angleOffset, + radius = 0.5*r, + tag = $arc3) |> xLine(endAbsolute = 1) diff --git a/rust/kcl-lib/e2e/executor/inputs/tangential_arc.kcl b/rust/kcl-lib/e2e/executor/inputs/tangential_arc.kcl index 00e7280ac..625c59e92 100644 --- a/rust/kcl-lib/e2e/executor/inputs/tangential_arc.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/tangential_arc.kcl @@ -1,6 +1,6 @@ const boxSketch = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line(end = [0, 10]) - |> tangentialArc({radius: 5, offset: 90}, %) + |> tangentialArc(radius = 5, angle = 90) |> line(end = [5, -15]) |> extrude(length = 10) diff --git a/rust/kcl-lib/e2e/executor/inputs/test-circle-extrude.kcl b/rust/kcl-lib/e2e/executor/inputs/test-circle-extrude.kcl index b601a90a7..9a22c2cd8 100644 --- a/rust/kcl-lib/e2e/executor/inputs/test-circle-extrude.kcl +++ b/rust/kcl-lib/e2e/executor/inputs/test-circle-extrude.kcl @@ -1,14 +1,8 @@ sketch002 = startSketchOn(XZ) |> startProfileAt([-108.83, -57.48], %) - |> angledLine([0, 105.13], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 77.9 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 105.13, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 77.9) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> close() sketch001 = startSketchOn(XZ) |> circle(center = [318.33, 168.1], radius = 182.8) diff --git a/rust/kcl-lib/e2e/executor/main.rs b/rust/kcl-lib/e2e/executor/main.rs index 101b92d1c..45905523e 100644 --- a/rust/kcl-lib/e2e/executor/main.rs +++ b/rust/kcl-lib/e2e/executor/main.rs @@ -159,7 +159,7 @@ async fn kcl_test_basic_tangential_arc_with_point() { let code = r#"boxSketch = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line(end = [0, 10]) - |> tangentialArcToRelative([-5, 5], %) + |> tangentialArc(end = [-5, 5]) |> line(end = [5, -15]) |> extrude(length = 10) "#; @@ -173,7 +173,7 @@ async fn kcl_test_basic_tangential_arc_to() { let code = r#"boxSketch = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line(end = [0, 10]) - |> tangentialArcTo([-5, 15], %) + |> tangentialArc(endAbsolute = [-5, 15]) |> line(end = [5, -15]) |> extrude(length = 10) "#; @@ -224,14 +224,14 @@ wallMountL = 8 bracket = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line(end = [0, wallMountL]) - |> tangentialArc({ radius= filletR, offset: 90 }, %) + |> tangentialArc(radius = filletR, angle = 90 ) |> line(end = [-shelfMountL, 0]) |> line(end = [0, -thickness]) |> line(end = [shelfMountL, 0]) - |> tangentialArc({ - radius= filletR - thickness, - offset: -90 - }, %) + |> tangentialArc( + radius = filletR - thickness, + angle = -90, + ) |> line(end = [0, -wallMountL]) |> close() |> extrude(length = width) @@ -306,7 +306,7 @@ thing = other_circle([2, 2], 20) #[tokio::test(flavor = "multi_thread")] async fn kcl_test_rounded_with_holes() { let code = r#"fn tarc = (to, sktch, tag?) => { - return tangentialArcTo(to, sktch, tag) + return tangentialArc(sktch, endAbsolute = to, tag = tag) } fn roundedRectangle = (pos, w, l, cornerRadius) => { @@ -594,7 +594,7 @@ myCube = cube([0,0], 10) async fn kcl_test_cube_cm() { let code = r#"@settings(defaultLengthUnit = cm) fn cube = (pos, scale) => { - sg = startSketchOn('XY') + sg = startSketchOn(XY) |> startProfileAt(pos, %) |> line(end = [0, scale]) |> line(end = [scale, 0]) @@ -616,7 +616,7 @@ myCube = cube([0,0], 10) async fn kcl_test_cube_m() { let code = r#"@settings(defaultLengthUnit = m) fn cube = (pos, scale) => { - sg = startSketchOn('XY') + sg = startSketchOn(XY) |> startProfileAt(pos, %) |> line(end = [0, scale]) |> line(end = [scale, 0]) @@ -638,7 +638,7 @@ myCube = cube([0,0], 10) async fn kcl_test_cube_in() { let code = r#"@settings(defaultLengthUnit = in) fn cube = (pos, scale) => { - sg = startSketchOn('XY') + sg = startSketchOn(XY) |> startProfileAt(pos, %) |> line(end = [0, scale]) |> line(end = [scale, 0]) @@ -660,7 +660,7 @@ myCube = cube([0,0], 10) async fn kcl_test_cube_ft() { let code = r#"@settings(defaultLengthUnit = ft) fn cube = (pos, scale) => { - sg = startSketchOn('XY') + sg = startSketchOn(XY) |> startProfileAt(pos, %) |> line(end = [0, scale]) |> line(end = [scale, 0]) @@ -682,7 +682,7 @@ myCube = cube([0,0], 10) async fn kcl_test_cube_yd() { let code = r#"@settings(defaultLengthUnit = yd) fn cube = (pos, scale) => { - sg = startSketchOn('XY') + sg = startSketchOn(XY) |> startProfileAt(pos, %) |> line(end = [0, scale]) |> line(end = [scale, 0]) @@ -705,7 +705,7 @@ async fn kcl_test_error_sketch_on_arc_face() { let code = r#"fn cube = (pos, scale) => { sg = startSketchOn(XY) |> startProfileAt(pos, %) - |> tangentialArcToRelative([0, scale], %, $here) + |> tangentialArc(end = [0, scale], tag = $here) |> line(end = [scale, 0]) |> line(end = [0, -scale]) @@ -715,7 +715,7 @@ part001 = cube([0, 0], 20) |> close() |> extrude(length = 20) -part002 = startSketchOn(part001, part001.sketch.tags.here) +part002 = startSketchOn(part001, face = part001.sketch.tags.here) |> startProfileAt([0, 0], %) |> line(end = [5, 0]) |> line(end = [5, 5]) @@ -751,7 +751,7 @@ part001 = cube([0,0], 20) |> close() |> extrude(length = 20) -part002 = startSketchOn(part001, "end") +part002 = startSketchOn(part001, face = END) |> startProfileAt([0, 0], %) |> line(end = [0, 10]) |> line(end = [10, 0]) @@ -759,7 +759,7 @@ part002 = startSketchOn(part001, "end") |> close() |> extrude(length = 5) -part003 = startSketchOn(part002, "end") +part003 = startSketchOn(part002, face = END) |> startProfileAt([0, 0], %) |> line(end = [0, 5]) |> line(end = [5, 0]) @@ -811,7 +811,7 @@ part001 = cube([0,0], 20) |> close() |> extrude(length = 20) -part002 = startSketchOn(part001, "end") +part002 = startSketchOn(part001, face = END) |> circle(center = [0, 0], radius= 5) |> extrude(length = 5) "#; @@ -842,10 +842,10 @@ holeIndex = 6 // Create the mounting plate extrusion, holes, and fillets part = rectShape([0, 0], 20, 20) - |> hole(circle('XY', center = [-holeIndex, holeIndex], radius = holeRadius), %) - |> hole(circle('XY', center = [holeIndex, holeIndex], radius = holeRadius), %) - |> hole(circle('XY', center = [-holeIndex, -holeIndex], radius = holeRadius), %) - |> hole(circle('XY', center = [holeIndex, -holeIndex], radius = holeRadius), %) + |> hole(circle('XY', center = [-holeIndex, holeIndex], radius = holeRadius)) + |> hole(circle('XY', center = [holeIndex, holeIndex], radius = holeRadius)) + |> hole(circle('XY', center = [-holeIndex, -holeIndex], radius = holeRadius)) + |> hole(circle('XY', center = [holeIndex, -holeIndex], radius = holeRadius)) |> extrude(length = 2) |> fillet( radius = 4, @@ -865,7 +865,7 @@ part = rectShape([0, 0], 20, 20) }; assert_eq!( err.error.message(), - "The input argument of std::sketch::circle requires a value with type `Sketch | Plane | Face`, but found string (text)" + "This function expected the input argument to be of type SketchOrSurface but it's actually of type string (text)" ); } @@ -1031,7 +1031,7 @@ async fn kcl_test_revolve_on_edge() { |> close() |> extrude(length = 10) -sketch001 = startSketchOn(box, "end") +sketch001 = startSketchOn(box, face = END) |> startProfileAt([5, 10], %) |> line(end = [0, -10]) |> line(end = [2, 0]) @@ -1055,7 +1055,7 @@ async fn kcl_test_revolve_on_edge_get_edge() { |> close() |> extrude(length = 10) -sketch001 = startSketchOn(box, revolveAxis) +sketch001 = startSketchOn(box, face = revolveAxis) |> startProfileAt([5, 10], %) |> line(end = [0, -10]) |> line(end = [2, 0]) @@ -1085,11 +1085,11 @@ async fn kcl_test_revolve_on_face_circle_edge() { |> close() |> extrude(length = 20) -sketch001 = startSketchOn(box, "END") +sketch001 = startSketchOn(box, face = "END") |> circle(center = [10,10], radius= 4) |> revolve( - angle = 90, - axis = getOppositeEdge(revolveAxis) + angle = 90, + axis = getOppositeEdge(revolveAxis) ) "#; @@ -1107,7 +1107,7 @@ async fn kcl_test_revolve_on_face_circle() { |> close() |> extrude(length = 20) -sketch001 = startSketchOn(box, "END") +sketch001 = startSketchOn(box, face = "END") |> circle(center = [10,10], radius= 4 ) |> revolve( angle = -90, @@ -1129,7 +1129,7 @@ async fn kcl_test_revolve_on_face() { |> close(tag = $revolveAxis) |> extrude(length = 10) -sketch001 = startSketchOn(box, "end") +sketch001 = startSketchOn(box, face = END) |> startProfileAt([5, 10], %) |> line(end = [0, -10]) |> line(end = [2, 0]) @@ -1173,7 +1173,7 @@ async fn kcl_test_simple_revolve_sketch_on_edge() { |> close() |> revolve(axis = Y, angle = 180) -part002 = startSketchOn(part001, 'end') +part002 = startSketchOn(part001, face = END) |> startProfileAt([4.5, -5], %) |> line(end = [0, 5]) |> line(end = [5, 0]) @@ -1189,12 +1189,12 @@ part002 = startSketchOn(part001, 'end') #[tokio::test(flavor = "multi_thread")] async fn kcl_test_plumbus_fillets() { let code = r#"fn make_circle = (ext, face, pos, radius) => { - sg = startSketchOn(ext, face) + sg = startSketchOn(ext, face = face) |> startProfileAt([pos[0] + radius, pos[1]], %) |> arc({ - angleEnd: 360, - angleStart: 0, - radius= radius + angleEnd = 360, + angleStart = 0, + radius = radius }, %, $arc1) |> close() @@ -1204,23 +1204,26 @@ async fn kcl_test_plumbus_fillets() { fn pentagon = (len) => { sg = startSketchOn(XY) |> startProfileAt([-len / 2, -len / 2], %) - |> angledLine({ angle: 0, length: len }, %, $a) - |> angledLine({ - angle: segAng(a) + 180 - 108, - length: len - }, %, $b) - |> angledLine({ - angle: segAng(b) + 180 - 108, - length: len - }, %, $c) - |> angledLine({ - angle: segAng(c) + 180 - 108, - length: len - }, %, $d) - |> angledLine({ - angle: segAng(d) + 180 - 108, - length: len - }, %) + |> angledLine(angle = 0, length = len, tag = $a) + |> angledLine( + angle = segAng(a) + 180 - 108, + length = len, + tag = $b, + ) + |> angledLine( + angle = segAng(b) + 180 - 108, + length = len, + tag = $c, + ) + |> angledLine( + angle = segAng(c) + 180 - 108, + length = len, + tag = $d, + ) + |> angledLine( + angle = segAng(d) + 180 - 108, + length = len, + ) return sg } @@ -1261,20 +1264,18 @@ async fn kcl_test_empty_file_is_ok() { async fn kcl_test_member_expression_in_params() { let code = r#"fn capScrew = (originStart, length, dia, capDia, capHeadLength) => { screwHead = startSketchOn({ - plane: { - origin: { - x: originStart[0], - y: originStart[1], - z: originStart[2], - }, - xAxis: { x: 0, y: 0, z: -1 }, - yAxis: { x: 1, y: 0, z: 0 }, - zAxis: { x: 0, y: 1, z: 0 } - } + origin: { + x: originStart[0], + y: originStart[1], + z: originStart[2], + }, + xAxis: { x: 0, y: 0, z: -1 }, + yAxis: { x: 1, y: 0, z: 0 }, + zAxis: { x: 0, y: 1, z: 0 } }) |> circle(center = [0, 0], radius= capDia / 2) |> extrude(length = capHeadLength) - screw = startSketchOn(screwHead, "start") + screw = startSketchOn(screwHead, face = START) |> circle(center = [0, 0], radius= dia / 2) |> extrude(length = length) return screw @@ -1339,20 +1340,21 @@ async fn kcl_test_error_empty_start_sketch_on_string() { |> line(end = [190.03, -118.13]) |> line(end = [-33.38, -202.86]) |> line(end = [-315.86, -64.2]) - |> tangentialArcTo([-147.66, 121.34], %) + |> tangentialArc(endAbsolute = [-147.66, 121.34]) |> close() |> extrude(length = 100) -secondSketch = startSketchOn(part001, '') +secondSketch = startSketchOn(part001, face = '') |> circle(center = [-20, 50], radius= 40) |> extrude(length = 20) "#; let result = execute_and_snapshot(code, None).await; - assert!(result.is_err()); + let err = result.unwrap_err(); + let err = err.as_kcl_error().unwrap(); assert_eq!( - result.err().unwrap().to_string(), - r#"semantic: KclErrorDetails { source_ranges: [SourceRange([297, 299, 0])], message: "Argument at index 1 was supposed to be type Option but found string (text)" }"# + err.message(), + "The arg face was given, but it was the wrong type. It should be type FaceTag but it was string (text)" ); } @@ -1471,7 +1473,7 @@ cornerFilletRad = 0.5 holeDia = 0.5 -sketch001 = startSketchOn("XZ") +sketch001 = startSketchOn(XZ) |> startProfileAt([-foot1Length, 0], %) |> line(end = [0, thickness], tag = $cornerFillet1) |> line(end = [foot1Length, 0]) @@ -1519,7 +1521,7 @@ cornerChamferRad = 0.5 holeDia = 0.5 -sketch001 = startSketchOn("XZ") +sketch001 = startSketchOn(XZ) |> startProfileAt([-foot1Length, 0], %) |> line(end = [0, thickness], tag = $cornerChamfer1) |> line(end = [foot1Length, 0]) @@ -1692,26 +1694,26 @@ async fn kcl_test_duplicate_tags_should_error() { let code = r#"fn triangle = (len) => { return startSketchOn(XY) |> startProfileAt([-len / 2, -len / 2], %) - |> angledLine({ angle: 0, length: len }, %, $a) - |> angledLine({ - angle: segAng(a) + 120, - length: len - }, %, $b) - |> angledLine({ - angle: segAng(b) + 120, - length: len - }, %, $a) + |> angledLine(angle = 0, length = len , tag = $a) + |> angledLine( + angle = segAng(a) + 120, + length = len, + tag = $b, + ) + |> angledLine( + angle = segAng(b) + 120, + length = len, + tag = $a, + ) } let p = triangle(200) "#; let result = execute_and_snapshot(code, None).await; - assert!(result.is_err()); - assert_eq!( - result.err().unwrap().to_string(), - r#"value already defined: KclErrorDetails { source_ranges: [SourceRange([309, 311, 0]), SourceRange([324, 337, 0])], message: "Cannot redefine `a`" }"# - ); + let err = result.unwrap_err(); + let err = err.as_kcl_error().unwrap(); + assert_eq!(err.message(), "Cannot redefine `a`"); } #[tokio::test(flavor = "multi_thread")] @@ -1793,7 +1795,7 @@ async fn kcl_test_arc_error_same_start_end() { async fn kcl_test_angled_line_to_x_90() { let code = r#"exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLineToX({ angle: 90, to: 10 }, %) + |> angledLine(angle = 90, endAbsoluteX = 10) |> line(end = [0, 10]) |> line(end = [-10, 0]) |> close() @@ -1805,7 +1807,7 @@ example = extrude(exampleSketch, length = 10) assert!(result.is_err()); assert_eq!( result.err().unwrap().to_string(), - r#"type: KclErrorDetails { source_ranges: [SourceRange([70, 109, 0])], message: "Cannot have an x constrained angle of 90 degrees" }"# + r#"type: KclErrorDetails { source_ranges: [SourceRange([70, 111, 0])], message: "Cannot have an x constrained angle of 90 degrees" }"# ); } @@ -1813,7 +1815,7 @@ example = extrude(exampleSketch, length = 10) async fn kcl_test_angled_line_to_x_270() { let code = r#"exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLineToX({ angle: 270, to: 10 }, %) + |> angledLine(angle = 270, endAbsoluteX = 10) |> line(end = [0, 10]) |> line(end = [-10, 0]) |> close() @@ -1825,7 +1827,7 @@ example = extrude(exampleSketch, length = 10) assert!(result.is_err()); assert_eq!( result.err().unwrap().to_string(), - r#"type: KclErrorDetails { source_ranges: [SourceRange([70, 110, 0])], message: "Cannot have an x constrained angle of 270 degrees" }"# + r#"type: KclErrorDetails { source_ranges: [SourceRange([70, 112, 0])], message: "Cannot have an x constrained angle of 270 degrees" }"# ); } @@ -1833,9 +1835,9 @@ example = extrude(exampleSketch, length = 10) async fn kcl_test_angled_line_to_y_0() { let code = r#"exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLineToY({ angle: 0, to: 20 }, %) + |> angledLine(angle = 0, endAbsoluteY = 20) |> line(end = [-20, 0]) - |> angledLineToY({ angle: 70, to: 10 }, %) + |> angledLine(angle = 70, endAbsoluteY = 10) |> close() example = extrude(exampleSketch, length = 10) @@ -1845,7 +1847,7 @@ example = extrude(exampleSketch, length = 10) assert!(result.is_err()); assert_eq!( result.err().unwrap().to_string(), - r#"type: KclErrorDetails { source_ranges: [SourceRange([70, 108, 0])], message: "Cannot have a y constrained angle of 0 degrees" }"# + r#"type: KclErrorDetails { source_ranges: [SourceRange([70, 110, 0])], message: "Cannot have a y constrained angle of 0 degrees" }"# ); } @@ -1853,9 +1855,9 @@ example = extrude(exampleSketch, length = 10) async fn kcl_test_angled_line_to_y_180() { let code = r#"exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLineToY({ angle: 180, to: 20 }, %) + |> angledLine(angle = 180, endAbsoluteY = 20) |> line(end = [-20, 0]) - |> angledLineToY({ angle: 70, to: 10 }, %) + |> angledLine(angle = 70, endAbsoluteY = 10) |> close() example = extrude(exampleSketch, length = 10) @@ -1865,7 +1867,7 @@ example = extrude(exampleSketch, length = 10) assert!(result.is_err()); assert_eq!( result.err().unwrap().to_string(), - r#"type: KclErrorDetails { source_ranges: [SourceRange([70, 110, 0])], message: "Cannot have a y constrained angle of 180 degrees" }"# + r#"type: KclErrorDetails { source_ranges: [SourceRange([70, 112, 0])], message: "Cannot have a y constrained angle of 180 degrees" }"# ); } @@ -1873,8 +1875,8 @@ example = extrude(exampleSketch, length = 10) async fn kcl_test_angled_line_of_x_length_90() { let code = r#"sketch001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLineOfXLength({ angle: 90, length: 10 }, %, $edge1) - |> angledLineOfXLength({ angle: -15, length: 20 }, %, $edge2) + |> angledLine(angle = 90, lengthX = 90, tag = $edge1) + |> angledLine(angle = -15, lengthX = -15, tag = $edge2) |> line(end = [0, -5]) |> close(tag = $edge3) @@ -1885,7 +1887,7 @@ extrusion = extrude(sketch001, length = 10) assert!(result.is_err()); assert_eq!( result.err().unwrap().to_string(), - r#"type: KclErrorDetails { source_ranges: [SourceRange([66, 123, 0])], message: "Cannot have an x constrained angle of 90 degrees" }"# + r#"type: KclErrorDetails { source_ranges: [SourceRange([66, 116, 0])], message: "Cannot have an x constrained angle of 90 degrees" }"# ); } @@ -1893,8 +1895,8 @@ extrusion = extrude(sketch001, length = 10) async fn kcl_test_angled_line_of_x_length_270() { let code = r#"sketch001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) - |> angledLineOfXLength({ angle: 90, length: 10 }, %, $edge1) - |> angledLineOfXLength({ angle: -15, length: 20 }, %, $edge2) + |> angledLine(angle = 90, lengthX = 90, tag = $edge1) + |> angledLine(angle = -15, lengthX = -15, tag = $edge2) |> line(end = [0, -5]) |> close(tag = $edge3) @@ -1905,7 +1907,7 @@ extrusion = extrude(sketch001, length = 10) assert!(result.is_err()); assert_eq!( result.err().unwrap().to_string(), - r#"type: KclErrorDetails { source_ranges: [SourceRange([66, 123, 0])], message: "Cannot have an x constrained angle of 90 degrees" }"# + r#"type: KclErrorDetails { source_ranges: [SourceRange([66, 116, 0])], message: "Cannot have an x constrained angle of 90 degrees" }"# ); } @@ -1914,9 +1916,9 @@ async fn kcl_test_angled_line_of_y_length_0() { let code = r#"exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [10, 0]) - |> angledLineOfYLength({ angle: 0, length: 10 }, %) + |> angledLine(angle = 0, lengthY = 10) |> line(end = [0, 10]) - |> angledLineOfYLength({ angle: 135, length: 10 }, %) + |> angledLine(angle = 135, lengthY = 10) |> line(end = [-10, 0]) |> line(end = [0, -30]) @@ -1927,7 +1929,7 @@ example = extrude(exampleSketch, length = 10) assert!(result.is_err()); assert_eq!( result.err().unwrap().to_string(), - r#"type: KclErrorDetails { source_ranges: [SourceRange([95, 143, 0])], message: "Cannot have a y constrained angle of 0 degrees" }"# + r#"type: KclErrorDetails { source_ranges: [SourceRange([95, 130, 0])], message: "Cannot have a y constrained angle of 0 degrees" }"# ); } @@ -1936,9 +1938,9 @@ async fn kcl_test_angled_line_of_y_length_180() { let code = r#"exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [10, 0]) - |> angledLineOfYLength({ angle: 180, length: 10 }, %) + |> angledLine(angle = 180, lengthY = 10) |> line(end = [0, 10]) - |> angledLineOfYLength({ angle: 135, length: 10 }, %) + |> angledLine(angle = 135, lengthY = 10) |> line(end = [-10, 0]) |> line(end = [0, -30]) @@ -1949,7 +1951,7 @@ example = extrude(exampleSketch, length = 10) assert!(result.is_err()); assert_eq!( result.err().unwrap().to_string(), - r#"type: KclErrorDetails { source_ranges: [SourceRange([95, 145, 0])], message: "Cannot have a y constrained angle of 180 degrees" }"# + r#"type: KclErrorDetails { source_ranges: [SourceRange([95, 132, 0])], message: "Cannot have a y constrained angle of 180 degrees" }"# ); } @@ -1958,9 +1960,9 @@ async fn kcl_test_angled_line_of_y_length_negative_180() { let code = r#"exampleSketch = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [10, 0]) - |> angledLineOfYLength({ angle: -180, length: 10 }, %) + |> angledLine(angle = -180, lengthY = 10) |> line(end = [0, 10]) - |> angledLineOfYLength({ angle: 135, length: 10 }, %) + |> angledLine(angle = 135, lengthY = 10) |> line(end = [-10, 0]) |> line(end = [0, -30]) @@ -1971,7 +1973,7 @@ example = extrude(exampleSketch, length = 10) assert!(result.is_err()); assert_eq!( result.err().unwrap().to_string(), - r#"type: KclErrorDetails { source_ranges: [SourceRange([95, 146, 0])], message: "Cannot have a y constrained angle of 180 degrees" }"# + r#"type: KclErrorDetails { source_ranges: [SourceRange([95, 133, 0])], message: "Cannot have a y constrained angle of 180 degrees" }"# ); } @@ -1988,7 +1990,7 @@ someFunction('INVALID') assert!(result.is_err()); assert_eq!( result.err().unwrap().to_string(), - r#"semantic: KclErrorDetails { source_ranges: [SourceRange([51, 60, 0]), SourceRange([65, 88, 0])], message: "Argument at index 0 was supposed to be type SketchData but found string (text)" }"# + r#"semantic: KclErrorDetails { source_ranges: [SourceRange([51, 60, 0]), SourceRange([65, 88, 0])], message: "This function expected the input argument to be Solid or Plane but it's actually of type string (text)" }"# ); } @@ -2009,7 +2011,7 @@ someFunction('INVALID') assert!(result.is_err()); assert_eq!( result.err().unwrap().to_string(), - r#"semantic: KclErrorDetails { source_ranges: [SourceRange([103, 113, 0]), SourceRange([126, 155, 0]), SourceRange([159, 182, 0])], message: "Argument at index 0 was supposed to be type SketchData but found string (text)" }"# + r#"semantic: KclErrorDetails { source_ranges: [SourceRange([103, 113, 0]), SourceRange([126, 155, 0]), SourceRange([159, 182, 0])], message: "This function expected the input argument to be Solid or Plane but it's actually of type string (text)" }"# ); } diff --git a/rust/kcl-lib/src/docs/gen_std_tests.rs b/rust/kcl-lib/src/docs/gen_std_tests.rs index 023df8a8d..ad0102e04 100644 --- a/rust/kcl-lib/src/docs/gen_std_tests.rs +++ b/rust/kcl-lib/src/docs/gen_std_tests.rs @@ -709,7 +709,7 @@ fn add_to_types( return Err(anyhow::anyhow!("Empty type name")); } - if DECLARED_TYPES.contains(&name) { + if DECLARED_TYPES.contains(&name) || name == "TyF64" { return Ok(()); } @@ -769,7 +769,7 @@ fn generate_type( } // Skip over TagDeclarator and TagIdentifier since they have custom docs. - if name == "TagDeclarator" || name == "TagIdentifier" || name == "TagNode" { + if name == "TagDeclarator" || name == "TagIdentifier" || name == "TagNode" || name == "TyF64" { return Ok(()); } @@ -930,7 +930,7 @@ fn recurse_and_create_references( schema: &schemars::schema::Schema, types: &BTreeMap, ) -> Result { - if DECLARED_TYPES.contains(&name) { + if DECLARED_TYPES.contains(&name) || name == "TyF64" { return Ok(schema.clone()); } @@ -944,7 +944,7 @@ fn recurse_and_create_references( if let Some(reference) = &o.reference { let mut obj = o.clone(); let reference = reference.trim_start_matches("#/components/schemas/"); - if DECLARED_TYPES.contains(&reference) { + if DECLARED_TYPES.contains(&reference) || reference == "TyF64" { return Ok(schema.clone()); } diff --git a/rust/kcl-lib/src/docs/kcl_doc.rs b/rust/kcl-lib/src/docs/kcl_doc.rs index 1d0d25f4d..c093b3a92 100644 --- a/rust/kcl-lib/src/docs/kcl_doc.rs +++ b/rust/kcl-lib/src/docs/kcl_doc.rs @@ -1,4 +1,4 @@ -use std::{collections::HashSet, str::FromStr}; +use std::{collections::HashSet, fmt, str::FromStr}; use regex::Regex; use tower_lsp::lsp_types::{ @@ -389,21 +389,23 @@ impl FnData { pub fn fn_signature(&self) -> String { let mut signature = String::new(); - signature.push('('); - for (i, arg) in self.args.iter().enumerate() { - if i > 0 { - signature.push_str(", "); - } - match &arg.kind { - ArgKind::Special => signature.push_str(&format!("@{}", arg.name)), - ArgKind::Labelled(false) => signature.push_str(&arg.name), - ArgKind::Labelled(true) => signature.push_str(&format!("{}?", arg.name)), - } - if let Some(ty) = &arg.ty { - signature.push_str(&format!(": {ty}")); + if self.args.is_empty() { + signature.push_str("()"); + } else if self.args.len() == 1 { + signature.push('('); + signature.push_str(&self.args[0].to_string()); + signature.push(')'); + } else { + signature.push('('); + for a in &self.args { + signature.push_str("\n "); + signature.push_str(&a.to_string()); + signature.push(','); } + signature.push('\n'); + signature.push(')'); } - signature.push(')'); + if let Some(ty) = &self.return_type { signature.push_str(&format!(": {ty}")); } @@ -442,12 +444,11 @@ impl FnData { } } - #[allow(clippy::literal_string_with_formatting_args)] pub(super) fn to_autocomplete_snippet(&self) -> String { if self.name == "loft" { - return "loft([${0:sketch000}, ${1:sketch001}])${}".to_owned(); + return "loft([${0:sketch000}, ${1:sketch001}])".to_owned(); } else if self.name == "hole" { - return "hole(${0:holeSketch}, ${1:%})${}".to_owned(); + return "hole(${0:holeSketch}, ${1:%})".to_owned(); } let mut args = Vec::new(); let mut index = 0; @@ -457,9 +458,7 @@ impl FnData { args.push(arg_str); } } - // We end with ${} so you can jump to the end of the snippet. - // After the last argument. - format!("{}({})${{}}", self.preferred_name, args.join(", ")) + format!("{}({})", self.preferred_name, args.join(", ")) } fn to_signature_help(&self) -> SignatureHelp { @@ -515,6 +514,20 @@ pub struct ArgData { pub docs: Option, } +impl fmt::Display for ArgData { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match &self.kind { + ArgKind::Special => write!(f, "@{}", self.name)?, + ArgKind::Labelled(false) => f.write_str(&self.name)?, + ArgKind::Labelled(true) => write!(f, "{}?", self.name)?, + } + if let Some(ty) = &self.ty { + write!(f, ": {ty}")?; + } + Ok(()) + } +} + #[derive(Debug, Clone, Copy, PartialEq)] pub enum ArgKind { Special, @@ -766,8 +779,8 @@ trait ApplyMeta { description = summary; summary = None; let d = description.as_mut().unwrap(); - d.push_str(l); d.push('\n'); + d.push_str(l); } continue; } diff --git a/rust/kcl-lib/src/docs/mod.rs b/rust/kcl-lib/src/docs/mod.rs index efd500f39..c8ad9111f 100644 --- a/rust/kcl-lib/src/docs/mod.rs +++ b/rust/kcl-lib/src/docs/mod.rs @@ -498,12 +498,17 @@ pub trait StdLibFn: std::fmt::Debug + Send + Sync { }) } - #[allow(clippy::literal_string_with_formatting_args)] fn to_autocomplete_snippet(&self) -> Result { if self.name() == "loft" { - return Ok("loft([${0:sketch000}, ${1:sketch001}])${}".to_string()); + return Ok("loft([${0:sketch000}, ${1:sketch001}])".to_string()); + } else if self.name() == "union" { + return Ok("union([${0:extrude001}, ${1:extrude002}])".to_string()); + } else if self.name() == "subtract" { + return Ok("subtract([${0:extrude001}], tools = [${1:extrude002}])".to_string()); + } else if self.name() == "intersect" { + return Ok("intersect([${0:extrude001}, ${1:extrude002}])".to_string()); } else if self.name() == "hole" { - return Ok("hole(${0:holeSketch}, ${1:%})${}".to_string()); + return Ok("hole(${0:holeSketch}, ${1:%})".to_string()); } let in_keyword_fn = self.keyword_arguments(); let mut args = Vec::new(); @@ -514,9 +519,7 @@ pub trait StdLibFn: std::fmt::Debug + Send + Sync { args.push(arg_str); } } - // We end with ${} so you can jump to the end of the snippet. - // After the last argument. - Ok(format!("{}({})${{}}", self.name(), args.join(", "))) + Ok(format!("{}({})", self.name(), args.join(", "))) } fn to_signature_help(&self) -> SignatureHelp { @@ -890,29 +893,26 @@ mod tests { } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_line() { let line_fn: Box = Box::new(crate::std::sketch::Line); let snippet = line_fn.to_autocomplete_snippet().unwrap(); - assert_eq!(snippet, r#"line(${0:%}, end = [${1:3.14}, ${2:3.14}])${}"#); + assert_eq!(snippet, r#"line(${0:%}, end = [${1:3.14}, ${2:3.14}])"#); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_extrude() { let extrude_fn: Box = Box::new(crate::std::extrude::Extrude); let snippet = extrude_fn.to_autocomplete_snippet().unwrap(); - assert_eq!(snippet, r#"extrude(${0:%}, length = ${1:3.14})${}"#); + assert_eq!(snippet, r#"extrude(${0:%}, length = ${1:3.14})"#); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_fillet() { let fillet_fn: Box = Box::new(crate::std::fillet::Fillet); let snippet = fillet_fn.to_autocomplete_snippet().unwrap(); assert_eq!( snippet, - r#"fillet(${0:%}, radius = ${1:3.14}, tags = [${2:"tag_or_edge_fn"}])${}"# + r#"fillet(${0:%}, radius = ${1:3.14}, tags = [${2:"tag_or_edge_fn"}])"# ); } @@ -920,18 +920,17 @@ mod tests { fn get_autocomplete_snippet_start_sketch_on() { let start_sketch_on_fn: Box = Box::new(crate::std::sketch::StartSketchOn); let snippet = start_sketch_on_fn.to_autocomplete_snippet().unwrap(); - assert_eq!(snippet, r#"startSketchOn(${0:"XY"})${}"#); + assert_eq!(snippet, r#"startSketchOn(${0:"XY"})"#); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_pattern_circular_3d() { // We test this one specifically because it has ints and floats and strings. let pattern_fn: Box = Box::new(crate::std::patterns::PatternCircular3D); let snippet = pattern_fn.to_autocomplete_snippet().unwrap(); assert_eq!( snippet, - r#"patternCircular3d(${0:%}, instances = ${1:10}, axis = [${2:3.14}, ${3:3.14}, ${4:3.14}], center = [${5:3.14}, ${6:3.14}, ${7:3.14}], arcDegrees = ${8:3.14}, rotateDuplicates = ${9:false})${}"# + r#"patternCircular3d(${0:%}, instances = ${1:10}, axis = [${2:3.14}, ${3:3.14}, ${4:3.14}], center = [${5:3.14}, ${6:3.14}, ${7:3.14}], arcDegrees = ${8:3.14}, rotateDuplicates = ${9:false})"# ); } @@ -942,11 +941,10 @@ mod tests { panic!(); }; let snippet = revolve_fn.to_autocomplete_snippet(); - assert_eq!(snippet, r#"revolve(axis = ${0:X})${}"#); + assert_eq!(snippet, r#"revolve(axis = ${0:X})"#); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_circle() { let data = kcl_doc::walk_prelude(); let DocData::Fn(circle_fn) = data.into_iter().find(|d| d.name() == "circle").unwrap() else { @@ -955,12 +953,11 @@ mod tests { let snippet = circle_fn.to_autocomplete_snippet(); assert_eq!( snippet, - r#"circle(center = [${0:3.14}, ${1:3.14}], radius = ${2:3.14})${}"# + r#"circle(center = [${0:3.14}, ${1:3.14}], radius = ${2:3.14})"# ); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_arc() { let arc_fn: Box = Box::new(crate::std::sketch::Arc); let snippet = arc_fn.to_autocomplete_snippet().unwrap(); @@ -970,7 +967,7 @@ mod tests { angleStart = ${0:3.14}, angleEnd = ${1:3.14}, radius = ${2:3.14}, -}, ${3:%})${}"# +}, ${3:%})"# ); } @@ -978,17 +975,16 @@ mod tests { fn get_autocomplete_snippet_map() { let map_fn: Box = Box::new(crate::std::array::Map); let snippet = map_fn.to_autocomplete_snippet().unwrap(); - assert_eq!(snippet, r#"map(${0:[0..9]})${}"#); + assert_eq!(snippet, r#"map(${0:[0..9]})"#); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_pattern_linear_2d() { let pattern_fn: Box = Box::new(crate::std::patterns::PatternLinear2D); let snippet = pattern_fn.to_autocomplete_snippet().unwrap(); assert_eq!( snippet, - r#"patternLinear2d(${0:%}, instances = ${1:10}, distance = ${2:3.14}, axis = [${3:3.14}, ${4:3.14}])${}"# + r#"patternLinear2d(${0:%}, instances = ${1:10}, distance = ${2:3.14}, axis = [${3:3.14}, ${4:3.14}])"# ); } @@ -998,36 +994,32 @@ mod tests { let snippet = appearance_fn.to_autocomplete_snippet().unwrap(); assert_eq!( snippet, - r#"appearance(${0:%}, color = ${1:"#.to_owned() + "\"#" + r#"ff0000"})${}"# + r#"appearance(${0:%}, color = ${1:"#.to_owned() + "\"#" + r#"ff0000"})"# ); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_loft() { let loft_fn: Box = Box::new(crate::std::loft::Loft); let snippet = loft_fn.to_autocomplete_snippet().unwrap(); - assert_eq!(snippet, r#"loft([${0:sketch000}, ${1:sketch001}])${}"#); + assert_eq!(snippet, r#"loft([${0:sketch000}, ${1:sketch001}])"#); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_sweep() { let sweep_fn: Box = Box::new(crate::std::sweep::Sweep); let snippet = sweep_fn.to_autocomplete_snippet().unwrap(); - assert_eq!(snippet, r#"sweep(${0:%}, path = ${1:sketch000})${}"#); + assert_eq!(snippet, r#"sweep(${0:%}, path = ${1:sketch000})"#); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_hole() { let hole_fn: Box = Box::new(crate::std::sketch::Hole); let snippet = hole_fn.to_autocomplete_snippet().unwrap(); - assert_eq!(snippet, r#"hole(${0:holeSketch}, ${1:%})${}"#); + assert_eq!(snippet, r#"hole(${0:holeSketch}, ${1:%})"#); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_helix() { let data = kcl_doc::walk_prelude(); let DocData::Fn(helix_fn) = data.into_iter().find(|d| d.name() == "helix").unwrap() else { @@ -1036,36 +1028,32 @@ mod tests { let snippet = helix_fn.to_autocomplete_snippet(); assert_eq!( snippet, - r#"helix(revolutions = ${0:3.14}, angleStart = ${1:3.14}, radius = ${2:3.14}, axis = ${3:X}, length = ${4:3.14})${}"# + r#"helix(revolutions = ${0:3.14}, angleStart = ${1:3.14}, radius = ${2:3.14}, axis = ${3:X}, length = ${4:3.14})"# ); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_union() { let union_fn: Box = Box::new(crate::std::csg::Union); let snippet = union_fn.to_autocomplete_snippet().unwrap(); - assert_eq!(snippet, r#"union(${0:%})${}"#); + assert_eq!(snippet, r#"union([${0:extrude001}, ${1:extrude002}])"#); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_subtract() { let subtract_fn: Box = Box::new(crate::std::csg::Subtract); let snippet = subtract_fn.to_autocomplete_snippet().unwrap(); - assert_eq!(snippet, r#"subtract(${0:%}, tools = ${1:%})${}"#); + assert_eq!(snippet, r#"subtract([${0:extrude001}], tools = [${1:extrude002}])"#); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_intersect() { let intersect_fn: Box = Box::new(crate::std::csg::Intersect); let snippet = intersect_fn.to_autocomplete_snippet().unwrap(); - assert_eq!(snippet, r#"intersect(${0:%})${}"#); + assert_eq!(snippet, r#"intersect([${0:extrude001}, ${1:extrude002}])"#); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_get_common_edge() { let get_common_edge_fn: Box = Box::new(crate::std::edge::GetCommonEdge); let snippet = get_common_edge_fn.to_autocomplete_snippet().unwrap(); @@ -1073,40 +1061,34 @@ mod tests { snippet, r#"getCommonEdge(faces = [{ value = ${0:"string"}, -}])${}"# +}])"# ); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_scale() { let scale_fn: Box = Box::new(crate::std::transform::Scale); let snippet = scale_fn.to_autocomplete_snippet().unwrap(); - assert_eq!( - snippet, - r#"scale(${0:%}, x = ${1:3.14}, y = ${2:3.14}, z = ${3:3.14})${}"# - ); + assert_eq!(snippet, r#"scale(${0:%}, x = ${1:3.14}, y = ${2:3.14}, z = ${3:3.14})"#); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_translate() { let translate_fn: Box = Box::new(crate::std::transform::Translate); let snippet = translate_fn.to_autocomplete_snippet().unwrap(); assert_eq!( snippet, - r#"translate(${0:%}, x = ${1:3.14}, y = ${2:3.14}, z = ${3:3.14})${}"# + r#"translate(${0:%}, x = ${1:3.14}, y = ${2:3.14}, z = ${3:3.14})"# ); } #[test] - #[allow(clippy::literal_string_with_formatting_args)] fn get_autocomplete_snippet_rotate() { let rotate_fn: Box = Box::new(crate::std::transform::Rotate); let snippet = rotate_fn.to_autocomplete_snippet().unwrap(); assert_eq!( snippet, - r#"rotate(${0:%}, roll = ${1:3.14}, pitch = ${2:3.14}, yaw = ${3:3.14})${}"# + r#"rotate(${0:%}, roll = ${1:3.14}, pitch = ${2:3.14}, yaw = ${3:3.14})"# ); } diff --git a/rust/kcl-lib/src/engine/mod.rs b/rust/kcl-lib/src/engine/mod.rs index d78d3c20c..189634b7e 100644 --- a/rust/kcl-lib/src/engine/mod.rs +++ b/rust/kcl-lib/src/engine/mod.rs @@ -37,7 +37,7 @@ use uuid::Uuid; use crate::{ errors::{KclError, KclErrorDetails}, - execution::{ArtifactCommand, DefaultPlanes, IdGenerator, Point3d}, + execution::{types::UnitLen, ArtifactCommand, DefaultPlanes, IdGenerator, Point3d}, SourceRange, }; @@ -517,7 +517,13 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static { ) -> Result { // Create new default planes. let default_size = 100.0; - let default_origin = Point3d { x: 0.0, y: 0.0, z: 0.0 }.into(); + let default_origin = Point3d { + x: 0.0, + y: 0.0, + z: 0.0, + units: UnitLen::Mm, + } + .into(); self.batch_modeling_cmd( plane_id, @@ -555,8 +561,18 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static { ( PlaneName::Xy, id_generator.next_uuid(), - Point3d { x: 1.0, y: 0.0, z: 0.0 }, - Point3d { x: 0.0, y: 1.0, z: 0.0 }, + Point3d { + x: 1.0, + y: 0.0, + z: 0.0, + units: UnitLen::Mm, + }, + Point3d { + x: 0.0, + y: 1.0, + z: 0.0, + units: UnitLen::Mm, + }, Some(Color { r: 0.7, g: 0.28, @@ -567,8 +583,18 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static { ( PlaneName::Yz, id_generator.next_uuid(), - Point3d { x: 0.0, y: 1.0, z: 0.0 }, - Point3d { x: 0.0, y: 0.0, z: 1.0 }, + Point3d { + x: 0.0, + y: 1.0, + z: 0., + units: UnitLen::Mm, + }, + Point3d { + x: 0.0, + y: 0.0, + z: 1.0, + units: UnitLen::Mm, + }, Some(Color { r: 0.28, g: 0.7, @@ -579,8 +605,18 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static { ( PlaneName::Xz, id_generator.next_uuid(), - Point3d { x: 1.0, y: 0.0, z: 0.0 }, - Point3d { x: 0.0, y: 0.0, z: 1.0 }, + Point3d { + x: 1.0, + y: 0.0, + z: 0.0, + units: UnitLen::Mm, + }, + Point3d { + x: 0.0, + y: 0.0, + z: 1.0, + units: UnitLen::Mm, + }, Some(Color { r: 0.28, g: 0.28, @@ -595,8 +631,14 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static { x: -1.0, y: 0.0, z: 0.0, + units: UnitLen::Mm, + }, + Point3d { + x: 0.0, + y: 1.0, + z: 0.0, + units: UnitLen::Mm, }, - Point3d { x: 0.0, y: 1.0, z: 0.0 }, None, ), ( @@ -606,8 +648,14 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static { x: 0.0, y: -1.0, z: 0.0, + units: UnitLen::Mm, + }, + Point3d { + x: 0.0, + y: 0.0, + z: 1.0, + units: UnitLen::Mm, }, - Point3d { x: 0.0, y: 0.0, z: 1.0 }, None, ), ( @@ -617,8 +665,14 @@ pub trait EngineManager: std::fmt::Debug + Send + Sync + 'static { x: -1.0, y: 0.0, z: 0.0, + units: UnitLen::Mm, + }, + Point3d { + x: 0.0, + y: 0.0, + z: 1.0, + units: UnitLen::Mm, }, - Point3d { x: 0.0, y: 0.0, z: 1.0 }, None, ), ]; diff --git a/rust/kcl-lib/src/errors.rs b/rust/kcl-lib/src/errors.rs index a396717f3..d8865e735 100644 --- a/rust/kcl-lib/src/errors.rs +++ b/rust/kcl-lib/src/errors.rs @@ -120,7 +120,7 @@ impl From for KclError { } } -#[derive(Error, Debug, Serialize, Deserialize, ts_rs::TS, Clone, PartialEq)] +#[derive(Error, Debug, Serialize, ts_rs::TS, Clone, PartialEq)] #[error("{error}")] #[ts(export)] #[serde(rename_all = "camelCase")] diff --git a/rust/kcl-lib/src/execution/annotations.rs b/rust/kcl-lib/src/execution/annotations.rs index ab43bf62f..2ef738025 100644 --- a/rust/kcl-lib/src/execution/annotations.rs +++ b/rust/kcl-lib/src/execution/annotations.rs @@ -20,7 +20,6 @@ pub(crate) const SETTINGS_UNIT_ANGLE: &str = "defaultAngleUnit"; pub(super) const NO_PRELUDE: &str = "no_std"; pub(super) const IMPORT_FORMAT: &str = "format"; -pub(super) const IMPORT_FORMAT_VALUES: [&str; 9] = ["fbx", "gltf", "glb", "obj", "ply", "sldprt", "stp", "step", "stl"]; pub(super) const IMPORT_COORDS: &str = "coords"; pub(super) const IMPORT_COORDS_VALUES: [(&str, &System); 3] = [("zoo", KITTYCAD), ("opengl", OPENGL), ("vulkan", VULKAN)]; diff --git a/rust/kcl-lib/src/execution/artifact.rs b/rust/kcl-lib/src/execution/artifact.rs index 4767c6c28..717081595 100644 --- a/rust/kcl-lib/src/execution/artifact.rs +++ b/rust/kcl-lib/src/execution/artifact.rs @@ -115,6 +115,30 @@ impl CodeRef { } } +#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS)] +#[ts(export_to = "Artifact.ts")] +#[serde(rename_all = "camelCase")] +pub struct CompositeSolid { + pub id: ArtifactId, + pub sub_type: CompositeSolidSubType, + /// Constituent solids of the composite solid. + #[serde(default, skip_serializing_if = "Vec::is_empty")] + pub solid_ids: Vec, + /// Tool solids used for asymmetric operations like subtract. + #[serde(default, skip_serializing_if = "Vec::is_empty")] + pub tool_ids: Vec, + pub code_ref: CodeRef, +} + +#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq, ts_rs::TS)] +#[ts(export_to = "Artifact.ts")] +#[serde(rename_all = "camelCase")] +pub enum CompositeSolidSubType { + Intersect, + Subtract, + Union, +} + #[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS)] #[ts(export_to = "Artifact.ts")] #[serde(rename_all = "camelCase")] @@ -318,6 +342,7 @@ pub struct Helix { #[ts(export_to = "Artifact.ts")] #[serde(tag = "type", rename_all = "camelCase")] pub enum Artifact { + CompositeSolid(CompositeSolid), Plane(Plane), Path(Path), Segment(Segment), @@ -336,6 +361,7 @@ pub enum Artifact { impl Artifact { pub(crate) fn id(&self) -> ArtifactId { match self { + Artifact::CompositeSolid(a) => a.id, Artifact::Plane(a) => a.id, Artifact::Path(a) => a.id, Artifact::Segment(a) => a.id, @@ -355,6 +381,7 @@ impl Artifact { #[expect(dead_code)] pub(crate) fn code_ref(&self) -> Option<&CodeRef> { match self { + Artifact::CompositeSolid(a) => Some(&a.code_ref), Artifact::Plane(a) => Some(&a.code_ref), Artifact::Path(a) => Some(&a.code_ref), Artifact::Segment(a) => Some(&a.code_ref), @@ -375,6 +402,7 @@ impl Artifact { /// type, return the new artifact which should be used as a replacement. fn merge(&mut self, new: Artifact) -> Option { match self { + Artifact::CompositeSolid(a) => a.merge(new), Artifact::Plane(a) => a.merge(new), Artifact::Path(a) => a.merge(new), Artifact::Segment(a) => a.merge(new), @@ -392,6 +420,18 @@ impl Artifact { } } +impl CompositeSolid { + fn merge(&mut self, new: Artifact) -> Option { + let Artifact::CompositeSolid(new) = new else { + return Some(new); + }; + merge_ids(&mut self.solid_ids, new.solid_ids); + merge_ids(&mut self.tool_ids, new.tool_ids); + + None + } +} + impl Plane { fn merge(&mut self, new: Artifact) -> Option { let Artifact::Plane(new) = new else { @@ -1047,6 +1087,85 @@ fn artifacts_to_update( // the helix here, but it's not useful right now. return Ok(return_arr); } + ModelingCmd::BooleanIntersection(_) | ModelingCmd::BooleanSubtract(_) | ModelingCmd::BooleanUnion(_) => { + let (sub_type, solid_ids, tool_ids) = match cmd { + ModelingCmd::BooleanIntersection(intersection) => { + let solid_ids = intersection + .solid_ids + .iter() + .copied() + .map(ArtifactId::new) + .collect::>(); + (CompositeSolidSubType::Intersect, solid_ids, Vec::new()) + } + ModelingCmd::BooleanSubtract(subtract) => { + let solid_ids = subtract + .target_ids + .iter() + .copied() + .map(ArtifactId::new) + .collect::>(); + let tool_ids = subtract + .tool_ids + .iter() + .copied() + .map(ArtifactId::new) + .collect::>(); + (CompositeSolidSubType::Subtract, solid_ids, tool_ids) + } + ModelingCmd::BooleanUnion(union) => { + let solid_ids = union.solid_ids.iter().copied().map(ArtifactId::new).collect::>(); + (CompositeSolidSubType::Union, solid_ids, Vec::new()) + } + _ => unreachable!(), + }; + + let mut new_solid_ids = vec![id]; + + match response { + OkModelingCmdResponse::BooleanIntersection(intersection) => intersection + .extra_solid_ids + .iter() + .copied() + .map(ArtifactId::new) + .for_each(|id| new_solid_ids.push(id)), + OkModelingCmdResponse::BooleanSubtract(subtract) => subtract + .extra_solid_ids + .iter() + .copied() + .map(ArtifactId::new) + .for_each(|id| new_solid_ids.push(id)), + OkModelingCmdResponse::BooleanUnion(union) => union + .extra_solid_ids + .iter() + .copied() + .map(ArtifactId::new) + .for_each(|id| new_solid_ids.push(id)), + _ => {} + } + let return_arr = new_solid_ids + .into_iter() + // Extra solid IDs may include the command's ID. Make sure we + // don't create a duplicate. + .filter(|solid_id| *solid_id != id) + .map(|solid_id| { + Artifact::CompositeSolid(CompositeSolid { + id: solid_id, + sub_type, + solid_ids: solid_ids.clone(), + tool_ids: tool_ids.clone(), + code_ref: CodeRef { + range, + path_to_node: path_to_node.clone(), + }, + }) + }) + .collect::>(); + + // TODO: Should we add the reverse graph edges? + + return Ok(return_arr); + } _ => {} } diff --git a/rust/kcl-lib/src/execution/artifact/mermaid_tests.rs b/rust/kcl-lib/src/execution/artifact/mermaid_tests.rs index 2b1839eee..5d1de5988 100644 --- a/rust/kcl-lib/src/execution/artifact/mermaid_tests.rs +++ b/rust/kcl-lib/src/execution/artifact/mermaid_tests.rs @@ -67,6 +67,11 @@ impl Artifact { /// the graph. This should be disjoint with `child_ids`. pub(crate) fn back_edges(&self) -> Vec { match self { + Artifact::CompositeSolid(a) => { + let mut ids = a.solid_ids.clone(); + ids.extend(a.tool_ids.iter()); + ids + } Artifact::Plane(_) => Vec::new(), Artifact::Path(a) => vec![a.plane_id], Artifact::Segment(a) => vec![a.path_id], @@ -87,6 +92,11 @@ impl Artifact { /// the graph. pub(crate) fn child_ids(&self) -> Vec { match self { + Artifact::CompositeSolid(_) => { + // Note: Don't include these since they're parents: solid_ids, + // tool_ids. + Vec::new() + } Artifact::Plane(a) => a.path_ids.clone(), Artifact::Path(a) => { // Note: Don't include these since they're parents: plane_id. @@ -213,6 +223,7 @@ impl ArtifactGraph { let id = artifact.id(); let grouped = match artifact { + Artifact::CompositeSolid(_) => false, Artifact::Plane(_) => false, Artifact::Path(_) => { groups.entry(id).or_insert_with(Vec::new).push(id); @@ -278,6 +289,15 @@ impl ArtifactGraph { } match artifact { + Artifact::CompositeSolid(composite_solid) => { + writeln!( + output, + "{prefix}{}[\"CompositeSolid {:?}
{:?}\"]", + id, + composite_solid.sub_type, + code_ref_display(&composite_solid.code_ref) + )?; + } Artifact::Plane(plane) => { writeln!( output, diff --git a/rust/kcl-lib/src/execution/cache.rs b/rust/kcl-lib/src/execution/cache.rs index b9c69a69f..45a66bbe8 100644 --- a/rust/kcl-lib/src/execution/cache.rs +++ b/rust/kcl-lib/src/execution/cache.rs @@ -257,7 +257,7 @@ firstSketch = startSketchOn('XY') |> extrude(length = 6) // Remove the end face for the extrusion. -shell(firstSketch, faces = ['end'], thickness = 0.25)"#; +shell(firstSketch, faces = [END], thickness = 0.25)"#; let ExecTestResults { program, exec_ctxt, .. } = parse_execute(new).await.unwrap(); @@ -288,7 +288,7 @@ firstSketch = startSketchOn('XY') |> extrude(length = 6) // Remove the end face for the extrusion. -shell(firstSketch, faces = ['end'], thickness = 0.25) "#; +shell(firstSketch, faces = [END], thickness = 0.25) "#; let new = r#"// Remove the end face for the extrusion. firstSketch = startSketchOn('XY') @@ -300,7 +300,7 @@ firstSketch = startSketchOn('XY') |> extrude(length = 6) // Remove the end face for the extrusion. -shell(firstSketch, faces = ['end'], thickness = 0.25)"#; +shell(firstSketch, faces = [END], thickness = 0.25)"#; let ExecTestResults { program, exec_ctxt, .. } = parse_execute(old).await.unwrap(); @@ -333,7 +333,7 @@ firstSketch = startSketchOn('XY') |> extrude(length = 6) // Remove the end face for the extrusion. -shell(firstSketch, faces = ['end'], thickness = 0.25) "#; +shell(firstSketch, faces = [END], thickness = 0.25) "#; let new = r#"// Remove the end face for the extrusion. firstSketch = startSketchOn('XY') @@ -345,7 +345,7 @@ firstSketch = startSketchOn('XY') |> extrude(length = 6) // Remove the end face for the extrusion. -shell(firstSketch, faces = ['end'], thickness = 0.25)"#; +shell(firstSketch, faces = [END], thickness = 0.25)"#; let ExecTestResults { program, exec_ctxt, .. } = parse_execute(old).await.unwrap(); @@ -380,7 +380,7 @@ firstSketch = startSketchOn('XY') |> extrude(length = 6) // Remove the end face for the extrusion. -shell(firstSketch, faces = ['end'], thickness = 0.25) "#; +shell(firstSketch, faces = [END], thickness = 0.25) "#; let new = r#"@foo(whatever = 42) @baz @@ -394,7 +394,7 @@ firstSketch = startSketchOn('XY') |> extrude(length = 6) // Remove the end face for the extrusion. -shell(firstSketch, faces = ['end'], thickness = 0.25)"#; +shell(firstSketch, faces = [END], thickness = 0.25)"#; let ExecTestResults { program, exec_ctxt, .. } = parse_execute(old).await.unwrap(); @@ -428,7 +428,7 @@ firstSketch = startSketchOn('XY') |> extrude(length = 6) // Remove the end face for the extrusion. -shell(firstSketch, faces = ['end'], thickness = 0.25)"#; +shell(firstSketch, faces = [END], thickness = 0.25)"#; let ExecTestResults { program, mut exec_ctxt, .. @@ -465,7 +465,7 @@ firstSketch = startSketchOn('XY') |> extrude(length = 6) // Remove the end face for the extrusion. -shell(firstSketch, faces = ['end'], thickness = 0.25)"#; +shell(firstSketch, faces = [END], thickness = 0.25)"#; let ExecTestResults { program, mut exec_ctxt, .. diff --git a/rust/kcl-lib/src/execution/cad_op.rs b/rust/kcl-lib/src/execution/cad_op.rs index 08d7fdb95..152f3cda6 100644 --- a/rust/kcl-lib/src/execution/cad_op.rs +++ b/rust/kcl-lib/src/execution/cad_op.rs @@ -3,11 +3,11 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use super::{types::NumericType, ArtifactId, KclValue}; -use crate::{docs::StdLibFn, std::get_stdlib_fn, ModuleId, SourceRange}; +use crate::{docs::StdLibFn, ModuleId, SourceRange}; /// A CAD modeling operation for display in the feature tree, AKA operations /// timeline. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export_to = "Operation.ts")] #[serde(tag = "type")] pub enum Operation { @@ -60,7 +60,7 @@ impl Operation { } } -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export_to = "Operation.ts")] #[serde(tag = "type")] #[expect(clippy::large_enum_variant)] @@ -90,7 +90,7 @@ pub enum Group { } /// An argument to a CAD modeling operation. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export_to = "Operation.ts")] #[serde(rename_all = "camelCase")] pub struct OpArg { @@ -110,7 +110,7 @@ impl OpArg { /// A reference to a standard library function. This exists to implement /// `PartialEq` and `Eq` for `Operation`. -#[derive(Debug, Clone, Deserialize, Serialize, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, ts_rs::TS, JsonSchema)] #[ts(export_to = "Operation.ts")] #[serde(rename_all = "camelCase")] pub struct StdLibFnRef { @@ -156,25 +156,13 @@ where serializer.serialize_str(&name) } -fn std_lib_fn_from_name<'de, D>(deserializer: D) -> Result, D::Error> -where - D: serde::Deserializer<'de>, -{ - let s = String::deserialize(deserializer)?; - if let Some(std_lib_fn) = get_stdlib_fn(&s) { - Ok(std_lib_fn) - } else { - Err(serde::de::Error::custom(format!("not a KCL stdlib function: {}", s))) - } -} - fn is_false(b: &bool) -> bool { !*b } /// A KCL value used in Operations. `ArtifactId`s are used to refer to the /// actual scene objects. Any data not needed in the UI may be omitted. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export_to = "Operation.ts")] #[serde(tag = "type")] pub enum OpKclValue { diff --git a/rust/kcl-lib/src/execution/exec_ast.rs b/rust/kcl-lib/src/execution/exec_ast.rs index 1fc5f71d1..1a1e43ef5 100644 --- a/rust/kcl-lib/src/execution/exec_ast.rs +++ b/rust/kcl-lib/src/execution/exec_ast.rs @@ -3,7 +3,11 @@ use std::collections::HashMap; use async_recursion::async_recursion; use indexmap::IndexMap; -use super::{cad_op::Group, kcl_value::TypeDef, types::PrimitiveType}; +use super::{ + cad_op::Group, + kcl_value::TypeDef, + types::{PrimitiveType, CHECK_NUMERIC_TYPES}, +}; use crate::{ engine::ExecutionKind, errors::{KclError, KclErrorDetails}, @@ -26,7 +30,7 @@ use crate::{ }, source_range::SourceRange, std::{ - args::{Arg, KwArgs}, + args::{Arg, KwArgs, TyF64}, FunctionKind, }, CompilationError, @@ -705,14 +709,14 @@ impl ExecutorContext { let result = self .execute_expr(&expr.expr, exec_state, metadata, &[], statement_kind) .await?; - coerce(&result, &expr.ty, exec_state, expr.into())? + apply_ascription(&result, &expr.ty, exec_state, expr.into())? } }; Ok(item) } } -fn coerce( +fn apply_ascription( value: &KclValue, ty: &Node, exec_state: &mut ExecState, @@ -721,7 +725,19 @@ fn coerce( let ty = RuntimeType::from_parsed(ty.inner.clone(), exec_state, value.into()) .map_err(|e| KclError::Semantic(e.into()))?; - value.coerce(&ty, exec_state).ok_or_else(|| { + if let KclValue::Number { value, meta, .. } = value { + // If the number has unknown units but the user is explicitly specifying them, treat the value as having had it's units erased, + // rather than forcing the user to explicitly erase them. + KclValue::Number { + ty: NumericType::Any, + value: *value, + meta: meta.clone(), + } + .coerce(&ty, exec_state) + } else { + value.coerce(&ty, exec_state) + } + .map_err(|_| { KclError::Semantic(KclErrorDetails { message: format!("could not coerce {} value to type {}", value.human_friendly_type(), ty), source_ranges: vec![source_range], @@ -918,25 +934,40 @@ impl Node { if self.operator == BinaryOperator::Add || self.operator == BinaryOperator::Or { if let (KclValue::Solid { value: left }, KclValue::Solid { value: right }) = (&left_value, &right_value) { let args = crate::std::Args::new(Default::default(), self.into(), ctx.clone(), None); - let result = - crate::std::csg::inner_union(vec![*left.clone(), *right.clone()], exec_state, args).await?; + let result = crate::std::csg::inner_union( + vec![*left.clone(), *right.clone()], + Default::default(), + exec_state, + args, + ) + .await?; return Ok(result.into()); } } else if self.operator == BinaryOperator::Sub { // Check if we have solids. if let (KclValue::Solid { value: left }, KclValue::Solid { value: right }) = (&left_value, &right_value) { let args = crate::std::Args::new(Default::default(), self.into(), ctx.clone(), None); - let result = - crate::std::csg::inner_subtract(vec![*left.clone()], vec![*right.clone()], exec_state, args) - .await?; + let result = crate::std::csg::inner_subtract( + vec![*left.clone()], + vec![*right.clone()], + Default::default(), + exec_state, + args, + ) + .await?; return Ok(result.into()); } } else if self.operator == BinaryOperator::And { // Check if we have solids. if let (KclValue::Solid { value: left }, KclValue::Solid { value: right }) = (&left_value, &right_value) { let args = crate::std::Args::new(Default::default(), self.into(), ctx.clone(), None); - let result = - crate::std::csg::inner_intersect(vec![*left.clone(), *right.clone()], exec_state, args).await?; + let result = crate::std::csg::inner_intersect( + vec![*left.clone(), *right.clone()], + Default::default(), + exec_state, + args, + ) + .await?; return Ok(result.into()); } } @@ -977,69 +1008,85 @@ impl Node { return Ok(KclValue::Bool { value: raw_value, meta }); } - let (left, lty) = parse_number_as_f64(&left_value, self.left.clone().into())?; - let (right, rty) = parse_number_as_f64(&right_value, self.right.clone().into())?; + let left = number_as_f64(&left_value, self.left.clone().into())?; + let right = number_as_f64(&right_value, self.right.clone().into())?; let value = match self.operator { - BinaryOperator::Add => KclValue::Number { - value: left + right, - meta, - ty: NumericType::combine_add(lty, rty), - }, - BinaryOperator::Sub => KclValue::Number { - value: left - right, - meta, - ty: NumericType::combine_add(lty, rty), - }, - BinaryOperator::Mul => KclValue::Number { - value: left * right, - meta, - ty: NumericType::combine_mul(lty, rty), - }, - BinaryOperator::Div => KclValue::Number { - value: left / right, - meta, - ty: NumericType::combine_div(lty, rty), - }, - BinaryOperator::Mod => KclValue::Number { - value: left % right, - meta, - ty: NumericType::combine_div(lty, rty), - }, + BinaryOperator::Add => { + let (l, r, ty) = NumericType::combine_eq(left, right); + self.warn_on_unknown(&ty, "Adding", exec_state); + KclValue::Number { value: l + r, meta, ty } + } + BinaryOperator::Sub => { + let (l, r, ty) = NumericType::combine_eq(left, right); + self.warn_on_unknown(&ty, "Subtracting", exec_state); + KclValue::Number { value: l - r, meta, ty } + } + BinaryOperator::Mul => { + let (l, r, ty) = NumericType::combine_mul(left, right); + self.warn_on_unknown(&ty, "Multiplying", exec_state); + KclValue::Number { value: l * r, meta, ty } + } + BinaryOperator::Div => { + let (l, r, ty) = NumericType::combine_div(left, right); + self.warn_on_unknown(&ty, "Dividing", exec_state); + KclValue::Number { value: l / r, meta, ty } + } + BinaryOperator::Mod => { + let (l, r, ty) = NumericType::combine_div(left, right); + self.warn_on_unknown(&ty, "Modulo of", exec_state); + KclValue::Number { value: l % r, meta, ty } + } BinaryOperator::Pow => KclValue::Number { - value: left.powf(right), + value: left.n.powf(right.n), meta, ty: NumericType::Unknown, }, - BinaryOperator::Neq => KclValue::Bool { - value: left != right, - meta, - }, - BinaryOperator::Gt => KclValue::Bool { - value: left > right, - meta, - }, - BinaryOperator::Gte => KclValue::Bool { - value: left >= right, - meta, - }, - BinaryOperator::Lt => KclValue::Bool { - value: left < right, - meta, - }, - BinaryOperator::Lte => KclValue::Bool { - value: left <= right, - meta, - }, - BinaryOperator::Eq => KclValue::Bool { - value: left == right, - meta, - }, + BinaryOperator::Neq => { + let (l, r, ty) = NumericType::combine_eq(left, right); + self.warn_on_unknown(&ty, "Comparing", exec_state); + KclValue::Bool { value: l != r, meta } + } + BinaryOperator::Gt => { + let (l, r, ty) = NumericType::combine_eq(left, right); + self.warn_on_unknown(&ty, "Comparing", exec_state); + KclValue::Bool { value: l > r, meta } + } + BinaryOperator::Gte => { + let (l, r, ty) = NumericType::combine_eq(left, right); + self.warn_on_unknown(&ty, "Comparing", exec_state); + KclValue::Bool { value: l >= r, meta } + } + BinaryOperator::Lt => { + let (l, r, ty) = NumericType::combine_eq(left, right); + self.warn_on_unknown(&ty, "Comparing", exec_state); + KclValue::Bool { value: l < r, meta } + } + BinaryOperator::Lte => { + let (l, r, ty) = NumericType::combine_eq(left, right); + self.warn_on_unknown(&ty, "Comparing", exec_state); + KclValue::Bool { value: l <= r, meta } + } + BinaryOperator::Eq => { + let (l, r, ty) = NumericType::combine_eq(left, right); + self.warn_on_unknown(&ty, "Comparing", exec_state); + KclValue::Bool { value: l == r, meta } + } BinaryOperator::And | BinaryOperator::Or => unreachable!(), }; Ok(value) } + + fn warn_on_unknown(&self, ty: &NumericType, verb: &str, exec_state: &mut ExecState) { + if *CHECK_NUMERIC_TYPES && ty == &NumericType::Unknown { + // TODO suggest how to fix this + exec_state.warn(CompilationError::err( + self.as_source_range(), + format!("{} numbers which have unknown or incompatible units.", verb), + )); + } + } } impl Node { @@ -1759,21 +1806,15 @@ fn article_for(s: &str) -> &'static str { } } -pub fn parse_number_as_f64(v: &KclValue, source_range: SourceRange) -> Result<(f64, NumericType), KclError> { - if let KclValue::Number { value: n, ty, .. } = &v { - Ok((*n, ty.clone())) - } else { +fn number_as_f64(v: &KclValue, source_range: SourceRange) -> Result { + v.as_ty_f64().ok_or_else(|| { let actual_type = v.human_friendly_type(); - let article = if actual_type.starts_with(['a', 'e', 'i', 'o', 'u']) { - "an" - } else { - "a" - }; - Err(KclError::Semantic(KclErrorDetails { + let article = article_for(actual_type); + KclError::Semantic(KclErrorDetails { source_ranges: vec![source_range], message: format!("Expected a number, but found {article} {actual_type}",), - })) - } + }) + }) } impl Node { @@ -1975,32 +2016,102 @@ fn assign_args_to_params( Ok(()) } -fn assign_args_to_params_kw( +fn type_check_params_kw( + fn_name: Option<&str>, function_expression: NodeRef<'_, FunctionExpression>, - mut args: crate::std::args::KwArgs, + args: &mut crate::std::args::KwArgs, exec_state: &mut ExecState, ) -> Result<(), KclError> { - for (label, arg) in &args.labeled { + for (label, arg) in &mut args.labeled { match function_expression.params.iter().find(|p| &p.identifier.name == label) { Some(p) => { if !p.labeled { exec_state.err(CompilationError::err( arg.source_range, format!( - "This function expects an unlabeled first parameter (`{label}`), but it is labelled in the call" + "{} expects an unlabeled first parameter (`{label}`), but it is labelled in the call", + fn_name + .map(|n| format!("The function `{}`", n)) + .unwrap_or_else(|| "This function".to_owned()), ), )); } + + if let Some(ty) = &p.type_ { + arg.value = arg + .value + .coerce( + &RuntimeType::from_parsed(ty.inner.clone(), exec_state, arg.source_range).unwrap(), + exec_state, + ) + .map_err(|e| { + let mut message = format!( + "{label} requires a value with type `{}`, but found {}", + ty.inner, + arg.value.human_friendly_type(), + ); + if let Some(ty) = e.explicit_coercion { + // TODO if we have access to the AST for the argument we could choose which example to suggest. + message = format!("{message}\n\nYou may need to add information about the type of the argument, for example:\n using a numeric suffix: `42{ty}`\n or using type ascription: `foo(): number({ty})`"); + } + KclError::Semantic(KclErrorDetails { + message, + source_ranges: vec![arg.source_range], + }) + })?; + } } None => { exec_state.err(CompilationError::err( arg.source_range, - format!("`{label}` is not an argument of this function"), + format!( + "`{label}` is not an argument of {}", + fn_name + .map(|n| format!("`{}`", n)) + .unwrap_or_else(|| "this function".to_owned()), + ), )); } } } + if let Some(arg) = &mut args.unlabeled { + if let Some(p) = function_expression.params.iter().find(|p| !p.labeled) { + if let Some(ty) = &p.type_ { + arg.value = arg + .value + .coerce( + &RuntimeType::from_parsed(ty.inner.clone(), exec_state, arg.source_range).unwrap(), + exec_state, + ) + .map_err(|_| { + KclError::Semantic(KclErrorDetails { + message: format!( + "The input argument of {} requires a value with type `{}`, but found {}", + fn_name + .map(|n| format!("`{}`", n)) + .unwrap_or_else(|| "this function".to_owned()), + ty.inner, + arg.value.human_friendly_type() + ), + source_ranges: vec![arg.source_range], + }) + })?; + } + } + } + + Ok(()) +} + +fn assign_args_to_params_kw( + fn_name: Option<&str>, + function_expression: NodeRef<'_, FunctionExpression>, + mut args: crate::std::args::KwArgs, + exec_state: &mut ExecState, +) -> Result<(), KclError> { + type_check_params_kw(fn_name, function_expression, &mut args, exec_state)?; + // Add the arguments to the memory. A new call frame should have already // been created. let source_ranges = vec![function_expression.into()]; @@ -2087,6 +2198,7 @@ async fn call_user_defined_function( } async fn call_user_defined_function_kw( + fn_name: Option<&str>, args: crate::std::args::KwArgs, memory: EnvironmentRef, function_expression: NodeRef<'_, FunctionExpression>, @@ -2097,7 +2209,7 @@ async fn call_user_defined_function_kw( // variables shadow variables in the parent scope. The new environment's // parent should be the environment of the closure. exec_state.mut_stack().push_new_env_for_call(memory); - if let Err(e) = assign_args_to_params_kw(function_expression, args, exec_state) { + if let Err(e) = assign_args_to_params_kw(fn_name, function_expression, args, exec_state) { exec_state.mut_stack().pop_env(); return Err(e); } @@ -2175,47 +2287,7 @@ impl FunctionSource { )); } - for (label, arg) in &mut args.kw_args.labeled { - match ast.params.iter().find(|p| &p.identifier.name == label) { - Some(p) => { - if !p.labeled { - exec_state.err(CompilationError::err( - arg.source_range, - format!( - "The function `{}` expects an unlabeled first parameter (`{label}`), but it is labelled in the call", - props.name - ), - )); - } - - if let Some(ty) = &p.type_ { - arg.value = arg - .value - .coerce( - &RuntimeType::from_parsed(ty.inner.clone(), exec_state, arg.source_range) - .unwrap(), - exec_state, - ) - .ok_or_else(|| { - KclError::Semantic(KclErrorDetails { - message: format!( - "{label} requires a value with type `{}`, but found {}", - ty.inner, - arg.value.human_friendly_type() - ), - source_ranges: vec![callsite], - }) - })?; - } - } - None => { - exec_state.err(CompilationError::err( - arg.source_range, - format!("`{label}` is not an argument of `{}`", props.name), - )); - } - } - } + type_check_params_kw(Some(&props.name), ast, &mut args.kw_args, exec_state)?; if let Some(arg) = &mut args.kw_args.unlabeled { if let Some(p) = ast.params.iter().find(|p| !p.labeled) { @@ -2226,13 +2298,13 @@ impl FunctionSource { &RuntimeType::from_parsed(ty.inner.clone(), exec_state, arg.source_range).unwrap(), exec_state, ) - .ok_or_else(|| { + .map_err(|_| { KclError::Semantic(KclErrorDetails { message: format!( "The input argument of {} requires a value with type `{}`, but found {}", props.name, ty.inner, - arg.value.human_friendly_type() + arg.value.human_friendly_type(), ), source_ranges: vec![callsite], }) @@ -2295,7 +2367,7 @@ impl FunctionSource { .collect(); exec_state.global.operations.push(Operation::GroupBegin { group: Group::FunctionCall { - name: fn_name, + name: fn_name.clone(), function_source_range: ast.as_source_range(), unlabeled_arg: args .kw_args @@ -2308,7 +2380,7 @@ impl FunctionSource { }); } - call_user_defined_function_kw(args.kw_args, *memory, ast, exec_state, ctx).await + call_user_defined_function_kw(fn_name.as_deref(), args.kw_args, *memory, ast, exec_state, ctx).await } FunctionSource::None => unreachable!(), } @@ -2534,4 +2606,25 @@ a = foo() let result = parse_execute(program).await; assert!(result.unwrap_err().to_string().contains("return")); } + + #[tokio::test(flavor = "multi_thread")] + async fn user_coercion() { + let program = r#"fn foo(x: Axis2d) { + return 0 +} + +foo(x = { direction = [0, 0], origin = [0, 0]}) +"#; + + parse_execute(program).await.unwrap(); + + let program = r#"fn foo(x: Axis3d) { + return 0 +} + +foo(x = { direction = [0, 0], origin = [0, 0]}) +"#; + + parse_execute(program).await.unwrap_err(); + } } diff --git a/rust/kcl-lib/src/execution/geometry.rs b/rust/kcl-lib/src/execution/geometry.rs index cb7bb396c..c586dfd88 100644 --- a/rust/kcl-lib/src/execution/geometry.rs +++ b/rust/kcl-lib/src/execution/geometry.rs @@ -10,16 +10,16 @@ use serde::{Deserialize, Serialize}; use crate::{ errors::KclError, - execution::{ArtifactId, ExecState, Metadata, TagEngineInfo, TagIdentifier, UnitLen}, + execution::{types::NumericType, ArtifactId, ExecState, Metadata, TagEngineInfo, TagIdentifier, UnitLen}, parsing::ast::types::{Node, NodeRef, TagDeclarator, TagNode}, - std::sketch::PlaneData, + std::{args::TyF64, sketch::PlaneData}, }; type Point2D = kcmc::shared::Point2d; type Point3D = kcmc::shared::Point3d; /// A geometry. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(tag = "type")] pub enum Geometry { @@ -47,7 +47,7 @@ impl Geometry { } /// A set of geometry. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(tag = "type")] #[allow(clippy::vec_box)] @@ -66,7 +66,7 @@ impl From for Geometries { } /// Data for an imported geometry. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase")] pub struct ImportedGeometry { @@ -79,7 +79,7 @@ pub struct ImportedGeometry { } /// Data for a solid or an imported geometry. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(tag = "type", rename_all = "camelCase")] #[allow(clippy::vec_box)] @@ -159,7 +159,7 @@ pub struct Helix { pub meta: Vec, } -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase")] pub struct Plane { @@ -184,62 +184,191 @@ pub struct Plane { impl Plane { pub(crate) fn into_plane_data(self) -> PlaneData { - if self.origin == Point3d::new(0.0, 0.0, 0.0) { + if self.origin.is_zero() { match self { Self { - origin: Point3d { x: 0.0, y: 0.0, z: 0.0 }, - x_axis: Point3d { x: 1.0, y: 0.0, z: 0.0 }, - y_axis: Point3d { x: 0.0, y: 1.0, z: 0.0 }, - z_axis: Point3d { x: 0.0, y: 0.0, z: 1.0 }, + origin: + Point3d { + x: 0.0, + y: 0.0, + z: 0.0, + units: UnitLen::Mm, + }, + x_axis: + Point3d { + x: 1.0, + y: 0.0, + z: 0.0, + units: UnitLen::Mm, + }, + y_axis: + Point3d { + x: 0.0, + y: 1.0, + z: 0.0, + units: UnitLen::Mm, + }, + z_axis: + Point3d { + x: 0.0, + y: 0.0, + z: 1.0, + units: UnitLen::Mm, + }, .. } => return PlaneData::XY, Self { - origin: Point3d { x: 0.0, y: 0.0, z: 0.0 }, - x_axis: Point3d { x: 1.0, y: 0.0, z: 0.0 }, - y_axis: Point3d { x: 0.0, y: 1.0, z: 0.0 }, + origin: + Point3d { + x: 0.0, + y: 0.0, + z: 0.0, + units: UnitLen::Mm, + }, + x_axis: + Point3d { + x: 1.0, + y: 0.0, + z: 0.0, + units: UnitLen::Mm, + }, + y_axis: + Point3d { + x: 0.0, + y: 1.0, + z: 0.0, + units: UnitLen::Mm, + }, z_axis: Point3d { x: 0.0, y: 0.0, z: -1.0, + units: UnitLen::Mm, }, .. } => return PlaneData::NegXY, Self { - origin: Point3d { x: 0.0, y: 0.0, z: 0.0 }, - x_axis: Point3d { x: 1.0, y: 0.0, z: 0.0 }, - y_axis: Point3d { x: 0.0, y: 0.0, z: 1.0 }, + origin: + Point3d { + x: 0.0, + y: 0.0, + z: 0.0, + units: UnitLen::Mm, + }, + x_axis: + Point3d { + x: 1.0, + y: 0.0, + z: 0.0, + units: UnitLen::Mm, + }, + y_axis: + Point3d { + x: 0.0, + y: 0.0, + z: 1.0, + units: UnitLen::Mm, + }, z_axis: Point3d { x: 0.0, y: -1.0, z: 0.0, + units: UnitLen::Mm, }, .. } => return PlaneData::XZ, Self { - origin: Point3d { x: 0.0, y: 0.0, z: 0.0 }, - x_axis: Point3d { x: 1.0, y: 0.0, z: 0.0 }, - y_axis: Point3d { x: 0.0, y: 0.0, z: 1.0 }, - z_axis: Point3d { x: 0.0, y: 1.0, z: 0.0 }, + origin: + Point3d { + x: 0.0, + y: 0.0, + z: 0.0, + units: UnitLen::Mm, + }, + x_axis: + Point3d { + x: 1.0, + y: 0.0, + z: 0.0, + units: UnitLen::Mm, + }, + y_axis: + Point3d { + x: 0.0, + y: 0.0, + z: 1.0, + units: UnitLen::Mm, + }, + z_axis: + Point3d { + x: 0.0, + y: 1.0, + z: 0.0, + units: UnitLen::Mm, + }, .. } => return PlaneData::NegXZ, Self { - origin: Point3d { x: 0.0, y: 0.0, z: 0.0 }, - x_axis: Point3d { x: 0.0, y: 1.0, z: 0.0 }, - y_axis: Point3d { x: 0.0, y: 0.0, z: 1.0 }, - z_axis: Point3d { x: 1.0, y: 0.0, z: 0.0 }, + origin: + Point3d { + x: 0.0, + y: 0.0, + z: 0.0, + units: UnitLen::Mm, + }, + x_axis: + Point3d { + x: 0.0, + y: 1.0, + z: 0.0, + units: UnitLen::Mm, + }, + y_axis: + Point3d { + x: 0.0, + y: 0.0, + z: 1.0, + units: UnitLen::Mm, + }, + z_axis: + Point3d { + x: 1.0, + y: 0.0, + z: 0.0, + units: UnitLen::Mm, + }, .. } => return PlaneData::YZ, Self { - origin: Point3d { x: 0.0, y: 0.0, z: 0.0 }, - x_axis: Point3d { x: 0.0, y: 1.0, z: 0.0 }, - y_axis: Point3d { x: 0.0, y: 0.0, z: 1.0 }, + origin: + Point3d { + x: 0.0, + y: 0.0, + z: 0.0, + units: UnitLen::Mm, + }, + x_axis: + Point3d { + x: 0.0, + y: 1.0, + z: 0.0, + units: UnitLen::Mm, + }, + y_axis: + Point3d { + x: 0.0, + y: 0.0, + z: 1.0, + units: UnitLen::Mm, + }, z_axis: Point3d { x: -1.0, y: 0.0, z: 0.0, + units: UnitLen::Mm, }, .. } => return PlaneData::NegYZ, @@ -261,10 +390,10 @@ impl Plane { PlaneData::XY => Plane { id, artifact_id: id.into(), - origin: Point3d::new(0.0, 0.0, 0.0), - x_axis: Point3d::new(1.0, 0.0, 0.0), - y_axis: Point3d::new(0.0, 1.0, 0.0), - z_axis: Point3d::new(0.0, 0.0, 1.0), + origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm), + x_axis: Point3d::new(1.0, 0.0, 0.0, UnitLen::Mm), + y_axis: Point3d::new(0.0, 1.0, 0.0, UnitLen::Mm), + z_axis: Point3d::new(0.0, 0.0, 1.0, UnitLen::Mm), value: PlaneType::XY, units: exec_state.length_unit(), meta: vec![], @@ -272,10 +401,10 @@ impl Plane { PlaneData::NegXY => Plane { id, artifact_id: id.into(), - origin: Point3d::new(0.0, 0.0, 0.0), - x_axis: Point3d::new(1.0, 0.0, 0.0), - y_axis: Point3d::new(0.0, 1.0, 0.0), - z_axis: Point3d::new(0.0, 0.0, -1.0), + origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm), + x_axis: Point3d::new(1.0, 0.0, 0.0, UnitLen::Mm), + y_axis: Point3d::new(0.0, 1.0, 0.0, UnitLen::Mm), + z_axis: Point3d::new(0.0, 0.0, -1.0, UnitLen::Mm), value: PlaneType::XY, units: exec_state.length_unit(), meta: vec![], @@ -283,10 +412,10 @@ impl Plane { PlaneData::XZ => Plane { id, artifact_id: id.into(), - origin: Point3d::new(0.0, 0.0, 0.0), - x_axis: Point3d::new(1.0, 0.0, 0.0), - y_axis: Point3d::new(0.0, 0.0, 1.0), - z_axis: Point3d::new(0.0, -1.0, 0.0), + origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm), + x_axis: Point3d::new(1.0, 0.0, 0.0, UnitLen::Mm), + y_axis: Point3d::new(0.0, 0.0, 1.0, UnitLen::Mm), + z_axis: Point3d::new(0.0, -1.0, 0.0, UnitLen::Mm), value: PlaneType::XZ, units: exec_state.length_unit(), meta: vec![], @@ -294,10 +423,10 @@ impl Plane { PlaneData::NegXZ => Plane { id, artifact_id: id.into(), - origin: Point3d::new(0.0, 0.0, 0.0), - x_axis: Point3d::new(-1.0, 0.0, 0.0), - y_axis: Point3d::new(0.0, 0.0, 1.0), - z_axis: Point3d::new(0.0, 1.0, 0.0), + origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm), + x_axis: Point3d::new(-1.0, 0.0, 0.0, UnitLen::Mm), + y_axis: Point3d::new(0.0, 0.0, 1.0, UnitLen::Mm), + z_axis: Point3d::new(0.0, 1.0, 0.0, UnitLen::Mm), value: PlaneType::XZ, units: exec_state.length_unit(), meta: vec![], @@ -305,10 +434,10 @@ impl Plane { PlaneData::YZ => Plane { id, artifact_id: id.into(), - origin: Point3d::new(0.0, 0.0, 0.0), - x_axis: Point3d::new(0.0, 1.0, 0.0), - y_axis: Point3d::new(0.0, 0.0, 1.0), - z_axis: Point3d::new(1.0, 0.0, 0.0), + origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm), + x_axis: Point3d::new(0.0, 1.0, 0.0, UnitLen::Mm), + y_axis: Point3d::new(0.0, 0.0, 1.0, UnitLen::Mm), + z_axis: Point3d::new(1.0, 0.0, 0.0, UnitLen::Mm), value: PlaneType::YZ, units: exec_state.length_unit(), meta: vec![], @@ -316,10 +445,10 @@ impl Plane { PlaneData::NegYZ => Plane { id, artifact_id: id.into(), - origin: Point3d::new(0.0, 0.0, 0.0), - x_axis: Point3d::new(0.0, 1.0, 0.0), - y_axis: Point3d::new(0.0, 0.0, 1.0), - z_axis: Point3d::new(-1.0, 0.0, 0.0), + origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm), + x_axis: Point3d::new(0.0, 1.0, 0.0, UnitLen::Mm), + y_axis: Point3d::new(0.0, 0.0, 1.0, UnitLen::Mm), + z_axis: Point3d::new(-1.0, 0.0, 0.0, UnitLen::Mm), value: PlaneType::YZ, units: exec_state.length_unit(), meta: vec![], @@ -353,7 +482,7 @@ impl Plane { } /// A face. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase")] pub struct Face { @@ -377,7 +506,7 @@ pub struct Face { } /// Type for a plane. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, FromStr, Display)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema, FromStr, Display)] #[ts(export)] #[display(style = "camelCase")] pub enum PlaneType { @@ -398,7 +527,7 @@ pub enum PlaneType { Uninit, } -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(tag = "type", rename_all = "camelCase")] pub struct Sketch { @@ -463,7 +592,7 @@ impl Sketch { } /// A sketch type. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(tag = "type", rename_all = "camelCase")] pub enum SketchSurface { @@ -512,7 +641,7 @@ pub(crate) enum GetTangentialInfoFromPathsResult { } impl GetTangentialInfoFromPathsResult { - pub(crate) fn tan_previous_point(&self, last_arc_end: crate::std::utils::Coords2d) -> [f64; 2] { + pub(crate) fn tan_previous_point(&self, last_arc_end: [f64; 2]) -> [f64; 2] { match self { GetTangentialInfoFromPathsResult::PreviousPoint(p) => *p, GetTangentialInfoFromPathsResult::Arc { center, ccw, .. } => { @@ -567,11 +696,10 @@ impl Sketch { /// where the last path segment ends, and the next path segment will begin. pub(crate) fn current_pen_position(&self) -> Result { let Some(path) = self.latest_path() else { - return Ok(self.start.to.into()); + return Ok(Point2d::new(self.start.to[0], self.start.to[1], self.start.units)); }; - let base = path.get_base(); - Ok(base.to.into()) + Ok(path.get_to().into()) } pub(crate) fn get_tangential_info_from_paths(&self) -> GetTangentialInfoFromPathsResult { @@ -582,7 +710,7 @@ impl Sketch { } } -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(tag = "type", rename_all = "camelCase")] pub struct Solid { @@ -616,7 +744,7 @@ impl Solid { } /// A fillet or a chamfer. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(tag = "type", rename_all = "camelCase")] pub enum EdgeCut { @@ -624,7 +752,7 @@ pub enum EdgeCut { Fillet { /// The id of the engine command that called this fillet. id: uuid::Uuid, - radius: f64, + radius: TyF64, /// The engine id of the edge to fillet. #[serde(rename = "edgeId")] edge_id: uuid::Uuid, @@ -634,7 +762,7 @@ pub enum EdgeCut { Chamfer { /// The id of the engine command that called this chamfer. id: uuid::Uuid, - length: f64, + length: TyF64, /// The engine id of the edge to chamfer. #[serde(rename = "edgeId")] edge_id: uuid::Uuid, @@ -670,17 +798,16 @@ impl EdgeCut { pub struct Point2d { pub x: f64, pub y: f64, + pub units: UnitLen, } -impl From<[f64; 2]> for Point2d { - fn from(p: [f64; 2]) -> Self { - Self { x: p[0], y: p[1] } - } -} - -impl From<&[f64; 2]> for Point2d { - fn from(p: &[f64; 2]) -> Self { - Self { x: p[0], y: p[1] } +impl From<[TyF64; 2]> for Point2d { + fn from(p: [TyF64; 2]) -> Self { + Self { + x: p[0].n, + y: p[1].n, + units: p[0].ty.expect_length(), + } } } @@ -697,12 +824,14 @@ impl From for Point2D { } impl Point2d { - pub const ZERO: Self = Self { x: 0.0, y: 0.0 }; - pub fn scale(self, scalar: f64) -> Self { - Self { - x: self.x * scalar, - y: self.y * scalar, - } + pub const ZERO: Self = Self { + x: 0.0, + y: 0.0, + units: UnitLen::Mm, + }; + + pub fn new(x: f64, y: f64, units: UnitLen) -> Self { + Self { x, y, units } } } @@ -712,12 +841,34 @@ pub struct Point3d { pub x: f64, pub y: f64, pub z: f64, + pub units: UnitLen, } impl Point3d { - pub const ZERO: Self = Self { x: 0.0, y: 0.0, z: 0.0 }; - pub fn new(x: f64, y: f64, z: f64) -> Self { - Self { x, y, z } + pub const ZERO: Self = Self { + x: 0.0, + y: 0.0, + z: 0.0, + units: UnitLen::Mm, + }; + + pub fn new(x: f64, y: f64, z: f64, units: UnitLen) -> Self { + Self { x, y, z, units } + } + + pub const fn is_zero(&self) -> bool { + self.x == 0.0 && self.y == 0.0 && self.z == 0.0 + } +} + +impl From<[TyF64; 3]> for Point3d { + fn from(p: [TyF64; 3]) -> Self { + Self { + x: p[0].n, + y: p[1].n, + z: p[2].n, + units: p[0].ty.expect_length(), + } } } @@ -740,10 +891,12 @@ impl Add for Point3d { type Output = Point3d; fn add(self, rhs: Self) -> Self::Output { + // TODO should assert that self and rhs the same units or coerce them Point3d { x: self.x + rhs.x, y: self.y + rhs.y, z: self.z + rhs.z, + units: self.units, } } } @@ -762,12 +915,13 @@ impl Mul for Point3d { x: self.x * rhs, y: self.y * rhs, z: self.z * rhs, + units: self.units, } } } /// A base path. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase")] pub struct BasePath { @@ -785,8 +939,20 @@ pub struct BasePath { pub geo_meta: GeoMeta, } +impl BasePath { + pub fn get_to(&self) -> [TyF64; 2] { + let ty: NumericType = self.units.into(); + [TyF64::new(self.to[0], ty.clone()), TyF64::new(self.to[1], ty)] + } + + pub fn get_from(&self) -> [TyF64; 2] { + let ty: NumericType = self.units.into(); + [TyF64::new(self.from[0], ty.clone()), TyF64::new(self.from[1], ty)] + } +} + /// Geometry metadata. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase")] pub struct GeoMeta { @@ -798,7 +964,7 @@ pub struct GeoMeta { } /// A path. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(tag = "type")] pub enum Path { @@ -979,19 +1145,24 @@ impl Path { } /// Where does this path segment start? - pub fn get_from(&self) -> &[f64; 2] { - &self.get_base().from + pub fn get_from(&self) -> [TyF64; 2] { + let p = &self.get_base().from; + let ty: NumericType = self.get_base().units.into(); + [TyF64::new(p[0], ty.clone()), TyF64::new(p[1], ty)] } + /// Where does this path segment end? - pub fn get_to(&self) -> &[f64; 2] { - &self.get_base().to + pub fn get_to(&self) -> [TyF64; 2] { + let p = &self.get_base().to; + let ty: NumericType = self.get_base().units.into(); + [TyF64::new(p[0], ty.clone()), TyF64::new(p[1], ty)] } /// Length of this path segment, in cartesian plane. - pub fn length(&self) -> f64 { - match self { + pub fn length(&self) -> TyF64 { + let n = match self { Self::ToPoint { .. } | Self::Base { .. } | Self::Horizontal { .. } | Self::AngledLineTo { .. } => { - linear_distance(self.get_from(), self.get_to()) + linear_distance(&self.get_base().from, &self.get_base().to) } Self::TangentialArc { base: _, @@ -1005,30 +1176,34 @@ impl Path { } => { // The radius can be calculated as the linear distance between `to` and `center`, // or between `from` and `center`. They should be the same. - let radius = linear_distance(self.get_from(), center); - debug_assert_eq!(radius, linear_distance(self.get_to(), center)); + let radius = linear_distance(&self.get_base().from, center); + debug_assert_eq!(radius, linear_distance(&self.get_base().to, center)); // TODO: Call engine utils to figure this out. - linear_distance(self.get_from(), self.get_to()) + linear_distance(&self.get_base().from, &self.get_base().to) } Self::Circle { radius, .. } => 2.0 * std::f64::consts::PI * radius, Self::CircleThreePoint { .. } => { let circle_center = crate::std::utils::calculate_circle_from_3_points([ - self.get_base().from.into(), - self.get_base().to.into(), - self.get_base().to.into(), + self.get_base().from, + self.get_base().to, + self.get_base().to, ]); - let radius = linear_distance(&[circle_center.center.x, circle_center.center.y], &self.get_base().from); + let radius = linear_distance( + &[circle_center.center[0], circle_center.center[1]], + &self.get_base().from, + ); 2.0 * std::f64::consts::PI * radius } Self::Arc { .. } => { // TODO: Call engine utils to figure this out. - linear_distance(self.get_from(), self.get_to()) + linear_distance(&self.get_base().from, &self.get_base().to) } Self::ArcThreePoint { .. } => { // TODO: Call engine utils to figure this out. - linear_distance(self.get_from(), self.get_to()) + linear_distance(&self.get_base().from, &self.get_base().to) } - } + }; + TyF64::new(n, self.get_base().units.into()) } pub fn get_base_mut(&mut self) -> Option<&mut BasePath> { @@ -1055,10 +1230,9 @@ impl Path { ccw: *ccw, }, Path::ArcThreePoint { p1, p2, p3, .. } => { - let circle_center = - crate::std::utils::calculate_circle_from_3_points([(*p1).into(), (*p2).into(), (*p3).into()]); - let radius = linear_distance(&[circle_center.center.x, circle_center.center.y], p1); - let center_point = [circle_center.center.x, circle_center.center.y]; + let circle_center = crate::std::utils::calculate_circle_from_3_points([*p1, *p2, *p3]); + let radius = linear_distance(&[circle_center.center[0], circle_center.center[1]], p1); + let center_point = [circle_center.center[0], circle_center.center[1]]; GetTangentialInfoFromPathsResult::Circle { center: center_point, ccw: true, @@ -1073,10 +1247,9 @@ impl Path { radius: *radius, }, Path::CircleThreePoint { p1, p2, p3, .. } => { - let circle_center = - crate::std::utils::calculate_circle_from_3_points([(*p1).into(), (*p2).into(), (*p3).into()]); - let radius = linear_distance(&[circle_center.center.x, circle_center.center.y], p1); - let center_point = [circle_center.center.x, circle_center.center.y]; + let circle_center = crate::std::utils::calculate_circle_from_3_points([*p1, *p2, *p3]); + let radius = linear_distance(&[circle_center.center[0], circle_center.center[1]], p1); + let center_point = [circle_center.center[0], circle_center.center[1]]; GetTangentialInfoFromPathsResult::Circle { center: center_point, ccw: true, @@ -1103,7 +1276,7 @@ fn linear_distance( } /// An extrude surface. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(tag = "type", rename_all = "camelCase")] pub enum ExtrudeSurface { @@ -1115,7 +1288,7 @@ pub enum ExtrudeSurface { } // Chamfer surface. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase")] pub struct ChamferSurface { @@ -1129,7 +1302,7 @@ pub struct ChamferSurface { } // Fillet surface. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase")] pub struct FilletSurface { @@ -1143,7 +1316,7 @@ pub struct FilletSurface { } /// An extruded plane. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase")] pub struct ExtrudePlane { @@ -1157,7 +1330,7 @@ pub struct ExtrudePlane { } /// An extruded arc. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase")] pub struct ExtrudeArc { diff --git a/rust/kcl-lib/src/execution/import.rs b/rust/kcl-lib/src/execution/import.rs index 98ae36570..950cfa8b8 100644 --- a/rust/kcl-lib/src/execution/import.rs +++ b/rust/kcl-lib/src/execution/import.rs @@ -173,7 +173,7 @@ pub(super) fn format_from_annotations( KclError::Semantic(KclErrorDetails { message: format!( "Unknown format for import, expected one of: {}", - annotations::IMPORT_FORMAT_VALUES.join(", ") + crate::IMPORT_FILE_EXTENSIONS.join(", ") ), source_ranges: vec![p.as_source_range()], }) diff --git a/rust/kcl-lib/src/execution/kcl_value.rs b/rust/kcl-lib/src/execution/kcl_value.rs index e161aa61c..77876616c 100644 --- a/rust/kcl-lib/src/execution/kcl_value.rs +++ b/rust/kcl-lib/src/execution/kcl_value.rs @@ -15,7 +15,7 @@ use crate::{ parsing::ast::types::{ DefaultParamVal, FunctionExpression, KclNone, Literal, LiteralValue, Node, TagDeclarator, TagNode, }, - std::StdFnProps, + std::{args::TyF64, StdFnProps}, CompilationError, KclError, ModuleId, SourceRange, }; @@ -360,15 +360,6 @@ impl KclValue { result } - /// Put the number into a KCL value. - pub const fn from_number(f: f64, meta: Vec) -> Self { - Self::Number { - value: f, - meta, - ty: NumericType::Unknown, - } - } - pub const fn from_number_with_type(f: f64, ty: NumericType, meta: Vec) -> Self { Self::Number { value: f, meta, ty } } @@ -431,23 +422,33 @@ impl KclValue { } pub fn as_array(&self) -> Option<&[KclValue]> { - if let KclValue::MixedArray { value, meta: _ } = &self { - Some(value) - } else { - None + match self { + KclValue::MixedArray { value, .. } | KclValue::HomArray { value, .. } => Some(value), + _ => None, } } - pub fn as_point2d(&self) -> Option<[f64; 2]> { + pub fn as_point2d(&self) -> Option<[TyF64; 2]> { let arr = self.as_array()?; if arr.len() != 2 { return None; } - let x = arr[0].as_f64()?; - let y = arr[1].as_f64()?; + let x = arr[0].as_ty_f64()?; + let y = arr[1].as_ty_f64()?; Some([x, y]) } + pub fn as_point3d(&self) -> Option<[TyF64; 3]> { + let arr = self.as_array()?; + if arr.len() != 3 { + return None; + } + let x = arr[0].as_ty_f64()?; + let y = arr[1].as_ty_f64()?; + let z = arr[2].as_ty_f64()?; + Some([x, y, z]) + } + pub fn as_uuid(&self) -> Option { if let KclValue::Uuid { value, meta: _ } = &self { Some(*value) @@ -495,6 +496,8 @@ impl KclValue { None } } + + #[cfg(test)] pub fn as_f64(&self) -> Option { if let KclValue::Number { value, .. } = &self { Some(*value) @@ -503,6 +506,14 @@ impl KclValue { } } + pub fn as_ty_f64(&self) -> Option { + if let KclValue::Number { value, ty, .. } = &self { + Some(TyF64::new(*value, ty.clone())) + } else { + None + } + } + pub fn as_bool(&self) -> Option { if let KclValue::Bool { value, meta: _ } = &self { Some(*value) diff --git a/rust/kcl-lib/src/execution/mod.rs b/rust/kcl-lib/src/execution/mod.rs index 51875f93f..02c6f3651 100644 --- a/rust/kcl-lib/src/execution/mod.rs +++ b/rust/kcl-lib/src/execution/mod.rs @@ -11,9 +11,7 @@ pub use cache::{bust_cache, clear_mem_cache}; pub use cad_op::Operation; pub use geometry::*; pub use id_generator::IdGenerator; -pub(crate) use import::{ - import_foreign, send_to_engine as send_import_to_engine, PreImportedGeometry, ZOO_COORD_SYSTEM, -}; +pub(crate) use import::PreImportedGeometry; use indexmap::IndexMap; pub use kcl_value::{KclObjectFields, KclValue}; use kcmc::{ @@ -175,7 +173,7 @@ impl std::hash::Hash for TagIdentifier { } /// Engine information for a tag. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(tag = "type", rename_all = "camelCase")] pub struct TagEngineInfo { @@ -1048,11 +1046,11 @@ identifierGuy = 5 part001 = startSketchOn(XY) |> startProfileAt([-1.2, 4.83], %) |> line(end = [2.8, 0]) -|> angledLine([100 + 100, 3.01], %) -|> angledLine([abc, 3.02], %) -|> angledLine([def(yo), 3.03], %) -|> angledLine([ghi(2), 3.04], %) -|> angledLine([jkl(yo) + 2, 3.05], %) +|> angledLine(angle = 100 + 100, length = 3.01) +|> angledLine(angle = abc, length = 3.02) +|> angledLine(angle = def(yo), length = 3.03) +|> angledLine(angle = ghi(2), length = 3.04) +|> angledLine(angle = jkl(yo) + 2, length = 3.05) |> close() yo2 = hmm([identifierGuy + 5])"#; @@ -1534,8 +1532,8 @@ let shape = layer() |> patternTransform(instances = 10, transform = transform) #[tokio::test(flavor = "multi_thread")] async fn test_unit_default() { - let ast = r#"const inMm = 25.4 * mm() -const inInches = 1.0 * inch()"#; + let ast = r#"const inMm = fromMm(25.4) +const inInches = fromInches(1)"#; let result = parse_execute(ast).await.unwrap(); assert_eq!( 25.4, @@ -1554,8 +1552,8 @@ const inInches = 1.0 * inch()"#; #[tokio::test(flavor = "multi_thread")] async fn test_unit_overriden() { let ast = r#"@settings(defaultLengthUnit = inch) -const inMm = 25.4 * mm() -const inInches = 1.0 * inch()"#; +const inMm = fromMm(25.4) +const inInches = fromInches(1)"#; let result = parse_execute(ast).await.unwrap(); assert_eq!( 1.0, @@ -1575,8 +1573,8 @@ const inInches = 1.0 * inch()"#; #[tokio::test(flavor = "multi_thread")] async fn test_unit_overriden_in() { let ast = r#"@settings(defaultLengthUnit = in) -const inMm = 25.4 * mm() -const inInches = 2.0 * inch()"#; +const inMm = fromMm(25.4) +const inInches = fromInches(2)"#; let result = parse_execute(ast).await.unwrap(); assert_eq!( 1.0, @@ -2031,10 +2029,10 @@ let w = f() + f() let ast = r#"fn bar(t) { return startSketchOn(XY) |> startProfileAt([0,0], %) - |> angledLine({ + |> angledLine( angle = -60, length = segLen(t), - }, %) + ) |> line(end = [0, 0]) |> close() } @@ -2052,7 +2050,7 @@ fn foo() { solid = sketch |> extrude(length = 10) // tag0 tags a face -sketch2 = startSketchOn(solid, tag0) +sketch2 = startSketchOn(solid, face = tag0) |> startProfileAt([0,0], %) |> line(end = [0, 1]) |> line(end = [1, 0]) diff --git a/rust/kcl-lib/src/execution/state.rs b/rust/kcl-lib/src/execution/state.rs index 8c4561c47..b220072ae 100644 --- a/rust/kcl-lib/src/execution/state.rs +++ b/rust/kcl-lib/src/execution/state.rs @@ -7,6 +7,7 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use uuid::Uuid; +use super::types::NumericType; use crate::{ errors::{KclError, KclErrorDetails, Severity}, execution::{ @@ -228,6 +229,13 @@ impl ExecState { self.global.module_infos.insert(id, module_info); } + pub fn current_default_units(&self) -> NumericType { + NumericType::Default { + len: self.length_unit(), + angle: self.angle_unit(), + } + } + pub fn length_unit(&self) -> UnitLen { self.mod_local.settings.default_length_units } diff --git a/rust/kcl-lib/src/execution/types.rs b/rust/kcl-lib/src/execution/types.rs index 41687d0fe..b918e007f 100644 --- a/rust/kcl-lib/src/execution/types.rs +++ b/rust/kcl-lib/src/execution/types.rs @@ -14,10 +14,20 @@ use crate::{ ast::types::{PrimitiveType as AstPrimitiveType, Type}, token::NumericSuffix, }, - std::args::FromKclValue, + std::args::{FromKclValue, TyF64}, CompilationError, SourceRange, }; +lazy_static::lazy_static! { + pub(crate) static ref CHECK_NUMERIC_TYPES: bool = { + let env_var = std::env::var("ZOO_NUM_TYS"); + let Ok(env_var) = env_var else { + return false; + }; + !env_var.is_empty() + }; +} + #[derive(Debug, Clone, PartialEq)] pub enum RuntimeType { Primitive(PrimitiveType), @@ -52,21 +62,57 @@ impl RuntimeType { RuntimeType::Primitive(PrimitiveType::Solid) } + pub fn plane() -> Self { + RuntimeType::Primitive(PrimitiveType::Plane) + } + + pub fn string() -> Self { + RuntimeType::Primitive(PrimitiveType::String) + } + pub fn imported() -> Self { RuntimeType::Primitive(PrimitiveType::ImportedGeometry) } /// `[number; 2]` pub fn point2d() -> Self { - RuntimeType::Array(Box::new(RuntimeType::number_any()), ArrayLen::Known(2)) + RuntimeType::Array(Box::new(RuntimeType::length()), ArrayLen::Known(2)) } /// `[number; 3]` pub fn point3d() -> Self { - RuntimeType::Array(Box::new(RuntimeType::number_any()), ArrayLen::Known(3)) + RuntimeType::Array(Box::new(RuntimeType::length()), ArrayLen::Known(3)) } - pub fn number_any() -> Self { + pub fn length() -> Self { + RuntimeType::Primitive(PrimitiveType::Number(NumericType::Known(UnitType::Length( + UnitLen::Unknown, + )))) + } + + pub fn angle() -> Self { + RuntimeType::Primitive(PrimitiveType::Number(NumericType::Known(UnitType::Angle( + UnitAngle::Unknown, + )))) + } + + pub fn radians() -> Self { + RuntimeType::Primitive(PrimitiveType::Number(NumericType::Known(UnitType::Angle( + UnitAngle::Radians, + )))) + } + + pub fn degrees() -> Self { + RuntimeType::Primitive(PrimitiveType::Number(NumericType::Known(UnitType::Angle( + UnitAngle::Degrees, + )))) + } + + pub fn count() -> Self { + RuntimeType::Primitive(PrimitiveType::Number(NumericType::Known(UnitType::Count))) + } + + pub fn num_any() -> Self { RuntimeType::Primitive(PrimitiveType::Number(NumericType::Any)) } @@ -337,7 +383,7 @@ impl fmt::Display for PrimitiveType { } } -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(tag = "type")] pub enum NumericType { @@ -351,62 +397,172 @@ pub enum NumericType { Any, } +impl Default for NumericType { + fn default() -> Self { + NumericType::Default { + len: UnitLen::default(), + angle: UnitAngle::default(), + } + } +} + impl NumericType { - pub fn count() -> Self { + pub const fn count() -> Self { NumericType::Known(UnitType::Count) } - pub fn mm() -> Self { + pub const fn mm() -> Self { NumericType::Known(UnitType::Length(UnitLen::Mm)) } + pub const fn radians() -> Self { + NumericType::Known(UnitType::Angle(UnitAngle::Radians)) + } + + pub const fn degrees() -> Self { + NumericType::Known(UnitType::Angle(UnitAngle::Degrees)) + } + /// Combine two types when we expect them to be equal. - pub fn combine_eq(self, other: &NumericType) -> NumericType { - if &self == other { - self - } else { - NumericType::Unknown + pub fn combine_eq(a: TyF64, b: TyF64) -> (f64, f64, NumericType) { + use NumericType::*; + match (a.ty, b.ty) { + (at, bt) if at == bt => (a.n, b.n, at), + (at, Any) => (a.n, b.n, at), + (Any, bt) => (a.n, b.n, bt), + (Default { .. }, Default { .. }) | (_, Unknown) | (Unknown, _) => (a.n, b.n, Unknown), + + // Known types and compatible, but needs adjustment. + (t @ Known(UnitType::Length(l1)), Known(UnitType::Length(l2))) => (a.n, l2.adjust_to(b.n, l1).0, t), + (t @ Known(UnitType::Angle(a1)), Known(UnitType::Angle(a2))) => (a.n, a2.adjust_to(b.n, a1).0, t), + + // Known but incompatible. + (Known(_), Known(_)) => (a.n, b.n, Unknown), + + // Known and unknown => we assume the known one, possibly with adjustment + (Known(UnitType::Count), Default { .. }) | (Default { .. }, Known(UnitType::Count)) => { + (a.n, b.n, Known(UnitType::Count)) + } + + (t @ Known(UnitType::Length(l1)), Default { len: l2, .. }) => (a.n, l2.adjust_to(b.n, l1).0, t), + (Default { len: l1, .. }, t @ Known(UnitType::Length(l2))) => (l1.adjust_to(a.n, l2).0, b.n, t), + + (t @ Known(UnitType::Angle(a1)), Default { angle: a2, .. }) => (a.n, a2.adjust_to(b.n, a1).0, t), + (Default { angle: a1, .. }, t @ Known(UnitType::Angle(a2))) => (a1.adjust_to(a.n, a2).0, b.n, t), } } - /// Combine n types when we expect them to be equal. - /// - /// Precondition: tys.len() > 0 - pub fn combine_n_eq(tys: &[NumericType]) -> NumericType { - let ty0 = tys[0].clone(); - for t in &tys[1..] { - if t != &ty0 { - return NumericType::Unknown; + pub fn combine_eq_array(input: &[TyF64]) -> (Vec, NumericType) { + use NumericType::*; + + let mut result = input.iter().map(|t| t.n).collect(); + + let mut ty = Any; + // Invariant mismatch is true => ty is fully known + let mut mismatch = false; + for i in input { + if i.ty == Any || ty == i.ty { + continue; + } + + match (&ty, &i.ty) { + (Any, t) => { + ty = t.clone(); + } + (_, Unknown) | (Default { .. }, Default { .. }) => return (result, Unknown), + + // Known types and compatible, but needs adjustment. + (Known(UnitType::Length(_)), Known(UnitType::Length(_))) + | (Known(UnitType::Angle(_)), Known(UnitType::Angle(_))) => { + mismatch = true; + } + + // Known but incompatible. + (Known(_), Known(_)) => return (result, Unknown), + + // Known and unknown, no adjustment for counting numbers. + (Known(UnitType::Count), Default { .. }) | (Default { .. }, Known(UnitType::Count)) => { + ty = Known(UnitType::Count); + } + + (Known(UnitType::Length(l1)), Default { len: l2, .. }) => { + mismatch |= l1 != l2; + } + (Known(UnitType::Angle(a1)), Default { angle: a2, .. }) => { + mismatch |= a1 != a2; + } + + (Default { len: l1, .. }, Known(UnitType::Length(l2))) => { + mismatch |= l1 != l2; + ty = Known(UnitType::Length(*l2)); + } + (Default { angle: a1, .. }, Known(UnitType::Angle(a2))) => { + mismatch |= a1 != a2; + ty = Known(UnitType::Angle(*a2)); + } + + (Unknown, _) | (_, Any) => unreachable!(), } } - ty0 + + if !mismatch { + return (result, ty); + } + + result = result + .into_iter() + .zip(input) + .map(|(n, i)| match (&ty, &i.ty) { + (Known(UnitType::Length(l1)), Known(UnitType::Length(l2)) | Default { len: l2, .. }) => { + l2.adjust_to(n, *l1).0 + } + (Known(UnitType::Angle(a1)), Known(UnitType::Angle(a2)) | Default { angle: a2, .. }) => { + a2.adjust_to(n, *a1).0 + } + _ => unreachable!(), + }) + .collect(); + + (result, ty) } - /// Combine two types in addition-like operations. - pub fn combine_add(a: NumericType, b: NumericType) -> NumericType { - if a == b { - return a; + /// Combine two types for multiplication-like operations. + pub fn combine_mul(a: TyF64, b: TyF64) -> (f64, f64, NumericType) { + use NumericType::*; + match (a.ty, b.ty) { + (at @ Default { .. }, bt @ Default { .. }) if at != bt => (a.n, b.n, Unknown), + (Known(UnitType::Count), bt) => (a.n, b.n, bt), + (at, Known(UnitType::Count)) => (a.n, b.n, at), + (Default { .. }, bt) => (a.n, b.n, bt), + (at, Default { .. }) => (a.n, b.n, at), + (Any, Any) => (a.n, b.n, Any), + _ => (a.n, b.n, Unknown), } - NumericType::Unknown } - /// Combine two types in multiplication-like operations. - pub fn combine_mul(a: NumericType, b: NumericType) -> NumericType { - if a == NumericType::count() { - return b; + /// Combine two types for division-like operations. + pub fn combine_div(a: TyF64, b: TyF64) -> (f64, f64, NumericType) { + use NumericType::*; + match (a.ty, b.ty) { + (at @ Default { .. }, bt @ Default { .. }) if at == bt => (a.n, b.n, at), + (at, bt) if at == bt => (a.n, b.n, Known(UnitType::Count)), + (Default { .. }, Default { .. }) => (a.n, b.n, Unknown), + (at, Known(UnitType::Count) | Any) => (a.n, b.n, at), + (Known(UnitType::Length(l1)), Known(UnitType::Length(l2))) => { + (a.n, l2.adjust_to(b.n, l1).0, Known(UnitType::Count)) + } + (Known(UnitType::Angle(a1)), Known(UnitType::Angle(a2))) => { + (a.n, a2.adjust_to(b.n, a1).0, Known(UnitType::Count)) + } + (Default { len: l1, .. }, Known(UnitType::Length(l2))) => { + (l1.adjust_to(a.n, l2).0, b.n, Known(UnitType::Count)) + } + (Default { angle: a1, .. }, Known(UnitType::Angle(a2))) => { + (a1.adjust_to(a.n, a2).0, b.n, Known(UnitType::Count)) + } + (Known(UnitType::Count), _) => (a.n, b.n, Known(UnitType::Count)), + _ => (a.n, b.n, Unknown), } - if b == NumericType::count() { - return a; - } - NumericType::Unknown - } - - /// Combine two types in division-like operations. - pub fn combine_div(a: NumericType, b: NumericType) -> NumericType { - if b == NumericType::count() { - return a; - } - NumericType::Unknown } pub fn from_parsed(suffix: NumericSuffix, settings: &super::MetaSettings) -> Self { @@ -416,6 +572,8 @@ impl NumericType { angle: settings.default_angle_units, }, NumericSuffix::Count => NumericType::Known(UnitType::Count), + NumericSuffix::Length => NumericType::Known(UnitType::Length(UnitLen::Unknown)), + NumericSuffix::Angle => NumericType::Known(UnitType::Angle(UnitAngle::Unknown)), NumericSuffix::Mm => NumericType::Known(UnitType::Length(UnitLen::Mm)), NumericSuffix::Cm => NumericType::Known(UnitType::Length(UnitLen::Cm)), NumericSuffix::M => NumericType::Known(UnitType::Length(UnitLen::M)), @@ -431,12 +589,138 @@ impl NumericType { use NumericType::*; match (self, other) { - (Unknown, _) | (_, Unknown) => false, - (a, b) if a == b => true, (_, Any) => true, + (a, b) if a == b => true, + ( + NumericType::Known(UnitType::Length(_)) | NumericType::Default { .. }, + NumericType::Known(UnitType::Length(UnitLen::Unknown)), + ) + | ( + NumericType::Known(UnitType::Angle(_)) | NumericType::Default { .. }, + NumericType::Known(UnitType::Angle(UnitAngle::Unknown)), + ) => true, + (Unknown, _) | (_, Unknown) => false, (_, _) => false, } } + + fn example_ty(&self) -> Option { + match self { + Self::Known(t) => Some(t.to_string()), + Self::Default { len, .. } => Some(len.to_string()), + _ => None, + } + } + + fn coerce(&self, val: &KclValue) -> Result { + let KclValue::Number { value, ty, meta } = val else { + return Err(val.into()); + }; + + if !*CHECK_NUMERIC_TYPES { + return Ok(val.clone()); + } + + if ty.subtype(self) { + return Ok(KclValue::Number { + value: *value, + ty: ty.clone(), + meta: meta.clone(), + }); + } + + // Not subtypes, but might be able to coerce + use NumericType::*; + match (ty, self) { + // We don't have enough information to coerce. + (Unknown, _) => Err(CoercionError::from(val).with_explicit(self.example_ty().unwrap_or("mm".to_owned()))), + (_, Unknown) => Err(val.into()), + (Any, _) => Ok(KclValue::Number { + value: *value, + ty: self.clone(), + meta: meta.clone(), + }), + + // We don't actually need to coerce, since we just keep the partially-known type with the value. + (Default { .. }, Default { .. }) => Ok(KclValue::Number { + value: *value, + ty: ty.clone(), + meta: meta.clone(), + }), + + // Known types and compatible, but needs adjustment. + (Known(UnitType::Length(l1)), Known(UnitType::Length(l2))) => { + let (value, ty) = l1.adjust_to(*value, *l2); + Ok(KclValue::Number { + value, + ty: Known(UnitType::Length(ty)), + meta: meta.clone(), + }) + } + (Known(UnitType::Angle(a1)), Known(UnitType::Angle(a2))) => { + let (value, ty) = a1.adjust_to(*value, *a2); + Ok(KclValue::Number { + value, + ty: Known(UnitType::Angle(ty)), + meta: meta.clone(), + }) + } + + // Known but incompatible. + (Known(_), Known(_)) => Err(val.into()), + + // Known and unknown => we assume the rhs, possibly with adjustment + (Known(UnitType::Count), Default { .. }) | (Default { .. }, Known(UnitType::Count)) => { + Ok(KclValue::Number { + value: *value, + ty: Known(UnitType::Count), + meta: meta.clone(), + }) + } + + (Known(UnitType::Length(l1)), Default { len: l2, .. }) + | (Default { len: l1, .. }, Known(UnitType::Length(l2))) => { + let (value, ty) = l1.adjust_to(*value, *l2); + Ok(KclValue::Number { + value, + ty: Known(UnitType::Length(ty)), + meta: meta.clone(), + }) + } + + (Known(UnitType::Angle(a1)), Default { angle: a2, .. }) + | (Default { angle: a1, .. }, Known(UnitType::Angle(a2))) => { + let (value, ty) = a1.adjust_to(*value, *a2); + Ok(KclValue::Number { + value, + ty: Known(UnitType::Angle(ty)), + meta: meta.clone(), + }) + } + + (_, _) => unreachable!(), + } + } + + pub fn expect_length(&self) -> UnitLen { + match self { + Self::Known(UnitType::Length(len)) | Self::Default { len, .. } => *len, + _ => unreachable!("Found {self:?}"), + } + } + + pub fn as_length(&self) -> Option { + match self { + Self::Known(UnitType::Length(len)) | Self::Default { len, .. } => Some(*len), + _ => None, + } + } +} + +impl From for RuntimeType { + fn from(t: NumericType) -> RuntimeType { + RuntimeType::Primitive(PrimitiveType::Number(t)) + } } impl From for NumericType { @@ -483,6 +767,48 @@ pub enum UnitLen { Inches, Feet, Yards, + Unknown, +} + +impl UnitLen { + fn adjust_to(self, value: f64, to: UnitLen) -> (f64, UnitLen) { + use UnitLen::*; + + if !*CHECK_NUMERIC_TYPES || self == to { + return (value, to); + } + + if to == Unknown { + return (value, self); + } + + let (base, base_unit) = match self { + Mm => (value, Mm), + Cm => (value * 10.0, Mm), + M => (value * 1000.0, Mm), + Inches => (value, Inches), + Feet => (value * 12.0, Inches), + Yards => (value * 36.0, Inches), + Unknown => unreachable!(), + }; + let (base, base_unit) = match (base_unit, to) { + (Mm, Inches) | (Mm, Feet) | (Mm, Yards) => (base / 25.4, Inches), + (Inches, Mm) | (Inches, Cm) | (Inches, M) => (base * 25.4, Mm), + _ => (base, base_unit), + }; + + let value = match (base_unit, to) { + (Mm, Mm) => base, + (Mm, Cm) => base / 10.0, + (Mm, M) => base / 1000.0, + (Inches, Inches) => base, + (Inches, Feet) => base / 12.0, + (Inches, Yards) => base / 36.0, + _ => unreachable!(), + }; + + (value, to) + } } impl std::fmt::Display for UnitLen { @@ -494,6 +820,7 @@ impl std::fmt::Display for UnitLen { UnitLen::Inches => write!(f, "in"), UnitLen::Feet => write!(f, "ft"), UnitLen::Yards => write!(f, "yd"), + UnitLen::Unknown => write!(f, "Length"), } } } @@ -536,6 +863,7 @@ impl From for crate::UnitLength { UnitLen::M => crate::UnitLength::M, UnitLen::Mm => crate::UnitLength::Mm, UnitLen::Yards => crate::UnitLength::Yd, + UnitLen::Unknown => unreachable!(), } } } @@ -549,6 +877,7 @@ impl From for kittycad_modeling_cmds::units::UnitLength { UnitLen::M => kittycad_modeling_cmds::units::UnitLength::Meters, UnitLen::Mm => kittycad_modeling_cmds::units::UnitLength::Millimeters, UnitLen::Yards => kittycad_modeling_cmds::units::UnitLength::Yards, + UnitLen::Unknown => unreachable!(), } } } @@ -561,6 +890,33 @@ pub enum UnitAngle { #[default] Degrees, Radians, + Unknown, +} + +impl UnitAngle { + fn adjust_to(self, value: f64, to: UnitAngle) -> (f64, UnitAngle) { + use std::f64::consts::PI; + + use UnitAngle::*; + + if !*CHECK_NUMERIC_TYPES { + return (value, to); + } + + if to == Unknown { + return (value, self); + } + + let value = match (self, to) { + (Degrees, Degrees) => value, + (Degrees, Radians) => (value / 180.0) * PI, + (Radians, Degrees) => 180.0 * value / PI, + (Radians, Radians) => value, + (Unknown, _) | (_, Unknown) => unreachable!(), + }; + + (value, to) + } } impl std::fmt::Display for UnitAngle { @@ -568,6 +924,7 @@ impl std::fmt::Display for UnitAngle { match self { UnitAngle::Degrees => write!(f, "deg"), UnitAngle::Radians => write!(f, "rad"), + UnitAngle::Unknown => write!(f, "Angle"), } } } @@ -584,6 +941,28 @@ impl TryFrom for UnitAngle { } } +#[derive(Debug, Clone)] +pub struct CoercionError { + pub found: Option, + pub explicit_coercion: Option, +} + +impl CoercionError { + fn with_explicit(mut self, c: String) -> Self { + self.explicit_coercion = Some(c); + self + } +} + +impl From<&'_ KclValue> for CoercionError { + fn from(value: &'_ KclValue) -> Self { + CoercionError { + found: value.principal_type(), + explicit_coercion: None, + } + } +} + impl KclValue { /// True if `self` has a type which is a subtype of `ty` without coercion. pub fn has_type(&self, ty: &RuntimeType) -> bool { @@ -600,7 +979,7 @@ impl KclValue { /// - result.principal_type().unwrap().subtype(ty) /// /// If self.principal_type() == ty then result == self - pub fn coerce(&self, ty: &RuntimeType, exec_state: &mut ExecState) -> Option { + pub fn coerce(&self, ty: &RuntimeType, exec_state: &mut ExecState) -> Result { match ty { RuntimeType::Primitive(ty) => self.coerce_to_primitive_type(ty, exec_state), RuntimeType::Array(ty, len) => self.coerce_to_array_type(ty, *len, exec_state, false), @@ -610,40 +989,60 @@ impl KclValue { } } - fn coerce_to_primitive_type(&self, ty: &PrimitiveType, exec_state: &mut ExecState) -> Option { + fn coerce_to_primitive_type( + &self, + ty: &PrimitiveType, + exec_state: &mut ExecState, + ) -> Result { let value = match self { KclValue::MixedArray { value, .. } | KclValue::HomArray { value, .. } if value.len() == 1 => &value[0], _ => self, }; match ty { - // TODO numeric type coercions - PrimitiveType::Number(_ty) => match value { - KclValue::Number { .. } => Some(value.clone()), - _ => None, - }, + PrimitiveType::Number(ty) => ty.coerce(value), PrimitiveType::String => match value { - KclValue::String { .. } => Some(value.clone()), - _ => None, + KclValue::String { .. } => Ok(value.clone()), + _ => Err(self.into()), }, PrimitiveType::Boolean => match value { - KclValue::Bool { .. } => Some(value.clone()), - _ => None, + KclValue::Bool { .. } => Ok(value.clone()), + _ => Err(self.into()), }, PrimitiveType::Sketch => match value { - KclValue::Sketch { .. } => Some(value.clone()), - _ => None, + KclValue::Sketch { .. } => Ok(value.clone()), + _ => Err(self.into()), }, PrimitiveType::Solid => match value { - KclValue::Solid { .. } => Some(value.clone()), - _ => None, + KclValue::Solid { .. } => Ok(value.clone()), + _ => Err(self.into()), }, PrimitiveType::Plane => match value { - KclValue::Plane { .. } => Some(value.clone()), + KclValue::String { value: s, .. } + if [ + "xy", "xz", "yz", "-xy", "-xz", "-yz", "XY", "XZ", "YZ", "-XY", "-XZ", "-YZ", + ] + .contains(&&**s) => + { + Ok(value.clone()) + } + KclValue::Plane { .. } => Ok(value.clone()), KclValue::Object { value, meta } => { - let origin = value.get("origin").and_then(Point3d::from_kcl_val)?; - let x_axis = value.get("xAxis").and_then(Point3d::from_kcl_val)?; - let y_axis = value.get("yAxis").and_then(Point3d::from_kcl_val)?; - let z_axis = value.get("zAxis").and_then(Point3d::from_kcl_val)?; + let origin = value + .get("origin") + .and_then(Point3d::from_kcl_val) + .ok_or(CoercionError::from(self))?; + let x_axis = value + .get("xAxis") + .and_then(Point3d::from_kcl_val) + .ok_or(CoercionError::from(self))?; + let y_axis = value + .get("yAxis") + .and_then(Point3d::from_kcl_val) + .ok_or(CoercionError::from(self))?; + let z_axis = value + .get("zAxis") + .and_then(Point3d::from_kcl_val) + .ok_or(CoercionError::from(self))?; let id = exec_state.mod_local.id_generator.next_uuid(); let plane = Plane { @@ -659,75 +1058,87 @@ impl KclValue { meta: meta.clone(), }; - Some(KclValue::Plane { value: Box::new(plane) }) + Ok(KclValue::Plane { value: Box::new(plane) }) } - _ => None, + _ => Err(self.into()), }, PrimitiveType::Face => match value { - KclValue::Face { .. } => Some(value.clone()), - _ => None, + KclValue::Face { .. } => Ok(value.clone()), + _ => Err(self.into()), }, PrimitiveType::Helix => match value { - KclValue::Helix { .. } => Some(value.clone()), - _ => None, + KclValue::Helix { .. } => Ok(value.clone()), + _ => Err(self.into()), }, PrimitiveType::Edge => match value { - KclValue::Uuid { .. } => Some(value.clone()), - KclValue::TagIdentifier { .. } => Some(value.clone()), - _ => None, + KclValue::Uuid { .. } => Ok(value.clone()), + KclValue::TagIdentifier { .. } => Ok(value.clone()), + _ => Err(self.into()), }, PrimitiveType::Axis2d => match value { KclValue::Object { value: values, meta } => { - if values.get("origin")?.has_type(&RuntimeType::point2d()) - && values.get("direction")?.has_type(&RuntimeType::point2d()) + if values + .get("origin") + .ok_or(CoercionError::from(self))? + .has_type(&RuntimeType::point2d()) + && values + .get("direction") + .ok_or(CoercionError::from(self))? + .has_type(&RuntimeType::point2d()) { - return Some(value.clone()); + return Ok(value.clone()); } - let origin = values.get("origin").and_then(|p| { - p.coerce_to_array_type(&RuntimeType::number_any(), ArrayLen::Known(2), exec_state, true) + let origin = values.get("origin").ok_or(self.into()).and_then(|p| { + p.coerce_to_array_type(&RuntimeType::length(), ArrayLen::Known(2), exec_state, true) })?; - let direction = values.get("direction").and_then(|p| { - p.coerce_to_array_type(&RuntimeType::number_any(), ArrayLen::Known(2), exec_state, true) + let direction = values.get("direction").ok_or(self.into()).and_then(|p| { + p.coerce_to_array_type(&RuntimeType::length(), ArrayLen::Known(2), exec_state, true) })?; - Some(KclValue::Object { + Ok(KclValue::Object { value: [("origin".to_owned(), origin), ("direction".to_owned(), direction)].into(), meta: meta.clone(), }) } - _ => None, + _ => Err(self.into()), }, PrimitiveType::Axis3d => match value { KclValue::Object { value: values, meta } => { - if values.get("origin")?.has_type(&RuntimeType::point3d()) - && values.get("direction")?.has_type(&RuntimeType::point3d()) + if values + .get("origin") + .ok_or(CoercionError::from(self))? + .has_type(&RuntimeType::point3d()) + && values + .get("direction") + .ok_or(CoercionError::from(self))? + .has_type(&RuntimeType::point3d()) { - return Some(value.clone()); + return Ok(value.clone()); } - let origin = values.get("origin").and_then(|p| { - p.coerce_to_array_type(&RuntimeType::number_any(), ArrayLen::Known(3), exec_state, true) + let origin = values.get("origin").ok_or(self.into()).and_then(|p| { + p.coerce_to_array_type(&RuntimeType::length(), ArrayLen::Known(3), exec_state, true) })?; - let direction = values.get("direction").and_then(|p| { - p.coerce_to_array_type(&RuntimeType::number_any(), ArrayLen::Known(3), exec_state, true) + let direction = values.get("direction").ok_or(self.into()).and_then(|p| { + p.coerce_to_array_type(&RuntimeType::length(), ArrayLen::Known(3), exec_state, true) })?; - Some(KclValue::Object { + Ok(KclValue::Object { value: [("origin".to_owned(), origin), ("direction".to_owned(), direction)].into(), meta: meta.clone(), }) } - _ => None, + _ => Err(self.into()), }, PrimitiveType::ImportedGeometry => match value { - KclValue::ImportedGeometry { .. } => Some(value.clone()), - _ => None, + KclValue::ImportedGeometry { .. } => Ok(value.clone()), + _ => Err(self.into()), }, PrimitiveType::Tag => match value { - KclValue::TagDeclarator { .. } => Some(value.clone()), - KclValue::TagIdentifier { .. } => Some(value.clone()), - _ => None, + KclValue::TagDeclarator { .. } => Ok(value.clone()), + KclValue::TagIdentifier { .. } => Ok(value.clone()), + _ => Err(self.into()), }, } } @@ -738,37 +1149,65 @@ impl KclValue { len: ArrayLen, exec_state: &mut ExecState, allow_shrink: bool, - ) -> Option { - match self { - KclValue::HomArray { value, ty: aty } if aty.subtype(ty) => { - len.satisfied(value.len(), allow_shrink).map(|len| KclValue::HomArray { - value: value[..len].to_vec(), - ty: aty.clone(), - }) - } - value if len.satisfied(1, false).is_some() && value.has_type(ty) => Some(KclValue::HomArray { - value: vec![value.clone()], + ) -> Result { + if len.satisfied(1, false).is_some() && self.has_type(ty) { + return Ok(KclValue::HomArray { + value: vec![self.clone()], ty: ty.clone(), - }), + }); + } + match self { + KclValue::HomArray { value, ty: aty } => { + if aty.subtype(ty) { + len.satisfied(value.len(), allow_shrink) + .map(|len| KclValue::HomArray { + value: value[..len].to_vec(), + ty: aty.clone(), + }) + .ok_or(self.into()) + } else { + Err(self.into()) + } + } KclValue::MixedArray { value, .. } => { - let len = len.satisfied(value.len(), allow_shrink)?; + // Check if we have a nested homogeneous array that we can flatten. + let mut values = Vec::new(); + for item in value { + if let KclValue::HomArray { + ty: inner_ty, + value: inner_value, + } = item + { + if inner_ty.subtype(ty) { + values.extend(inner_value.iter().cloned()); + } else { + values.push(item.clone()); + } + } else { + values.push(item.clone()); + } + } - let value = value[..len] + let len = len + .satisfied(values.len(), allow_shrink) + .ok_or(CoercionError::from(self))?; + + let value = values[..len] .iter() .map(|v| v.coerce(ty, exec_state)) - .collect::>>()?; + .collect::, _>>()?; - Some(KclValue::HomArray { value, ty: ty.clone() }) + Ok(KclValue::HomArray { value, ty: ty.clone() }) } - KclValue::KclNone { .. } if len.satisfied(0, false).is_some() => Some(KclValue::HomArray { + KclValue::KclNone { .. } if len.satisfied(0, false).is_some() => Ok(KclValue::HomArray { value: Vec::new(), ty: ty.clone(), }), - _ => None, + _ => Err(self.into()), } } - fn coerce_to_tuple_type(&self, tys: &[RuntimeType], exec_state: &mut ExecState) -> Option { + fn coerce_to_tuple_type(&self, tys: &[RuntimeType], exec_state: &mut ExecState) -> Result { match self { KclValue::MixedArray { value, .. } | KclValue::HomArray { value, .. } if value.len() == tys.len() => { let mut result = Vec::new(); @@ -776,50 +1215,54 @@ impl KclValue { result.push(value[i].coerce(t, exec_state)?); } - Some(KclValue::MixedArray { + Ok(KclValue::MixedArray { value: result, meta: Vec::new(), }) } - KclValue::KclNone { meta, .. } if tys.is_empty() => Some(KclValue::MixedArray { + KclValue::KclNone { meta, .. } if tys.is_empty() => Ok(KclValue::MixedArray { value: Vec::new(), meta: meta.clone(), }), - value if tys.len() == 1 && value.has_type(&tys[0]) => Some(KclValue::MixedArray { + value if tys.len() == 1 && value.has_type(&tys[0]) => Ok(KclValue::MixedArray { value: vec![value.clone()], meta: Vec::new(), }), - _ => None, + _ => Err(self.into()), } } - fn coerce_to_union_type(&self, tys: &[RuntimeType], exec_state: &mut ExecState) -> Option { + fn coerce_to_union_type(&self, tys: &[RuntimeType], exec_state: &mut ExecState) -> Result { for t in tys { - if let Some(v) = self.coerce(t, exec_state) { - return Some(v); + if let Ok(v) = self.coerce(t, exec_state) { + return Ok(v); } } - None + Err(self.into()) } - fn coerce_to_object_type(&self, tys: &[(String, RuntimeType)], _exec_state: &mut ExecState) -> Option { + fn coerce_to_object_type( + &self, + tys: &[(String, RuntimeType)], + _exec_state: &mut ExecState, + ) -> Result { match self { KclValue::Object { value, .. } => { for (s, t) in tys { // TODO coerce fields - if !value.get(s)?.has_type(t) { - return None; + if !value.get(s).ok_or(CoercionError::from(self))?.has_type(t) { + return Err(self.into()); } } // TODO remove non-required fields - Some(self.clone()) + Ok(self.clone()) } - KclValue::KclNone { meta, .. } if tys.is_empty() => Some(KclValue::Object { + KclValue::KclNone { meta, .. } if tys.is_empty() => Ok(KclValue::Object { value: HashMap::new(), meta: meta.clone(), }), - _ => None, + _ => Err(self.into()), } } @@ -860,6 +1303,7 @@ impl KclValue { #[cfg(test)] mod test { use super::*; + use crate::execution::{parse_execute, ExecTestResults}; fn values(exec_state: &mut ExecState) -> Vec { vec![ @@ -988,9 +1432,8 @@ mod test { for v in &values[1..] { // Not a subtype - assert!(v - .coerce(&RuntimeType::Primitive(PrimitiveType::Boolean), &mut exec_state) - .is_none()); + v.coerce(&RuntimeType::Primitive(PrimitiveType::Boolean), &mut exec_state) + .unwrap_err(); } } @@ -1024,8 +1467,8 @@ mod test { }, &mut exec_state, ); - assert!(none.coerce(&aty1, &mut exec_state).is_none()); - assert!(none.coerce(&aty1p, &mut exec_state).is_none()); + none.coerce(&aty1, &mut exec_state).unwrap_err(); + none.coerce(&aty1p, &mut exec_state).unwrap_err(); let tty = RuntimeType::Tuple(vec![]); let tty1 = RuntimeType::Tuple(vec![RuntimeType::solid()]); @@ -1038,7 +1481,7 @@ mod test { }, &mut exec_state, ); - assert!(none.coerce(&tty1, &mut exec_state).is_none()); + none.coerce(&tty1, &mut exec_state).unwrap_err(); let oty = RuntimeType::Object(vec![]); assert_coerce_results( @@ -1107,7 +1550,7 @@ mod test { assert_coerce_results(&obj2, &ty0, &obj2, &mut exec_state); let ty1 = RuntimeType::Object(vec![("foo".to_owned(), RuntimeType::Primitive(PrimitiveType::Boolean))]); - assert!(&obj0.coerce(&ty1, &mut exec_state).is_none()); + obj0.coerce(&ty1, &mut exec_state).unwrap_err(); assert_coerce_results(&obj1, &ty1, &obj1, &mut exec_state); assert_coerce_results(&obj2, &ty1, &obj2, &mut exec_state); @@ -1119,19 +1562,19 @@ mod test { ), ("foo".to_owned(), RuntimeType::Primitive(PrimitiveType::Boolean)), ]); - assert!(&obj0.coerce(&ty2, &mut exec_state).is_none()); - assert!(&obj1.coerce(&ty2, &mut exec_state).is_none()); + obj0.coerce(&ty2, &mut exec_state).unwrap_err(); + obj1.coerce(&ty2, &mut exec_state).unwrap_err(); assert_coerce_results(&obj2, &ty2, &obj2, &mut exec_state); // field not present let tyq = RuntimeType::Object(vec![("qux".to_owned(), RuntimeType::Primitive(PrimitiveType::Boolean))]); - assert!(&obj0.coerce(&tyq, &mut exec_state).is_none()); - assert!(&obj1.coerce(&tyq, &mut exec_state).is_none()); - assert!(&obj2.coerce(&tyq, &mut exec_state).is_none()); + obj0.coerce(&tyq, &mut exec_state).unwrap_err(); + obj1.coerce(&tyq, &mut exec_state).unwrap_err(); + obj2.coerce(&tyq, &mut exec_state).unwrap_err(); // field with different type let ty1 = RuntimeType::Object(vec![("bar".to_owned(), RuntimeType::Primitive(PrimitiveType::Boolean))]); - assert!(&obj2.coerce(&ty1, &mut exec_state).is_none()); + obj2.coerce(&ty1, &mut exec_state).unwrap_err(); } #[tokio::test(flavor = "multi_thread")] @@ -1209,8 +1652,8 @@ mod test { assert_coerce_results(&hom_arr, &tyh, &hom_arr, &mut exec_state); assert_coerce_results(&mixed1, &tym1, &mixed1, &mut exec_state); assert_coerce_results(&mixed2, &tym2, &mixed2, &mut exec_state); - assert!(&mixed1.coerce(&tym2, &mut exec_state).is_none()); - assert!(&mixed2.coerce(&tym1, &mut exec_state).is_none()); + mixed1.coerce(&tym2, &mut exec_state).unwrap_err(); + mixed2.coerce(&tym1, &mut exec_state).unwrap_err(); // Length subtyping let tyhn = RuntimeType::Array( @@ -1227,15 +1670,15 @@ mod test { ); assert_coerce_results(&hom_arr, &tyhn, &hom_arr, &mut exec_state); assert_coerce_results(&hom_arr, &tyh1, &hom_arr, &mut exec_state); - assert!(&hom_arr.coerce(&tyh3, &mut exec_state).is_none()); + hom_arr.coerce(&tyh3, &mut exec_state).unwrap_err(); let hom_arr0 = KclValue::HomArray { value: vec![], ty: RuntimeType::Primitive(PrimitiveType::Number(NumericType::count())), }; assert_coerce_results(&hom_arr0, &tyhn, &hom_arr0, &mut exec_state); - assert!(&hom_arr0.coerce(&tyh1, &mut exec_state).is_none()); - assert!(&hom_arr0.coerce(&tyh3, &mut exec_state).is_none()); + hom_arr0.coerce(&tyh1, &mut exec_state).unwrap_err(); + hom_arr0.coerce(&tyh3, &mut exec_state).unwrap_err(); // Covariance // let tyh = RuntimeType::Array(Box::new(RuntimeType::Primitive(PrimitiveType::Number(NumericType::Any))), ArrayLen::Known(4)); @@ -1275,16 +1718,16 @@ mod test { assert_coerce_results(&mixed1, &tyhn, &hom_arr_2, &mut exec_state); assert_coerce_results(&mixed1, &tyh1, &hom_arr_2, &mut exec_state); assert_coerce_results(&mixed0, &tyhn, &hom_arr0, &mut exec_state); - assert!(&mixed0.coerce(&tyh, &mut exec_state).is_none()); - assert!(&mixed0.coerce(&tyh1, &mut exec_state).is_none()); + mixed0.coerce(&tyh, &mut exec_state).unwrap_err(); + mixed0.coerce(&tyh1, &mut exec_state).unwrap_err(); // Homogehous to mixed assert_coerce_results(&hom_arr_2, &tym1, &mixed1, &mut exec_state); - assert!(&hom_arr.coerce(&tym1, &mut exec_state).is_none()); - assert!(&hom_arr_2.coerce(&tym2, &mut exec_state).is_none()); + hom_arr.coerce(&tym1, &mut exec_state).unwrap_err(); + hom_arr_2.coerce(&tym2, &mut exec_state).unwrap_err(); - assert!(&mixed0.coerce(&tym1, &mut exec_state).is_none()); - assert!(&mixed0.coerce(&tym2, &mut exec_state).is_none()); + mixed0.coerce(&tym1, &mut exec_state).unwrap_err(); + mixed0.coerce(&tym2, &mut exec_state).unwrap_err(); } #[tokio::test(flavor = "multi_thread")] @@ -1334,8 +1777,8 @@ mod test { RuntimeType::Primitive(PrimitiveType::Boolean), RuntimeType::Primitive(PrimitiveType::String), ]); - assert!(count.coerce(&tyb, &mut exec_state).is_none()); - assert!(count.coerce(&tyb2, &mut exec_state).is_none()); + count.coerce(&tyb, &mut exec_state).unwrap_err(); + count.coerce(&tyb2, &mut exec_state).unwrap_err(); } #[tokio::test(flavor = "multi_thread")] @@ -1450,6 +1893,224 @@ mod test { assert_coerce_results(&a2d, &ty2d, &a2d, &mut exec_state); assert_coerce_results(&a3d, &ty3d, &a3d, &mut exec_state); assert_coerce_results(&a3d, &ty2d, &a2d, &mut exec_state); - assert!(a2d.coerce(&ty3d, &mut exec_state).is_none()); + a2d.coerce(&ty3d, &mut exec_state).unwrap_err(); + } + + #[tokio::test(flavor = "multi_thread")] + async fn coerce_numeric() { + let mut exec_state = ExecState::new(&crate::ExecutorContext::new_mock().await); + + let count = KclValue::Number { + value: 1.0, + ty: NumericType::count(), + meta: Vec::new(), + }; + let mm = KclValue::Number { + value: 1.0, + ty: NumericType::mm(), + meta: Vec::new(), + }; + let inches = KclValue::Number { + value: 1.0, + ty: NumericType::Known(UnitType::Length(UnitLen::Inches)), + meta: Vec::new(), + }; + let rads = KclValue::Number { + value: 1.0, + ty: NumericType::Known(UnitType::Angle(UnitAngle::Radians)), + meta: Vec::new(), + }; + let default = KclValue::Number { + value: 1.0, + ty: NumericType::default(), + meta: Vec::new(), + }; + let any = KclValue::Number { + value: 1.0, + ty: NumericType::Any, + meta: Vec::new(), + }; + let unknown = KclValue::Number { + value: 1.0, + ty: NumericType::Unknown, + meta: Vec::new(), + }; + + // Trivial coercions + assert_coerce_results(&count, &NumericType::count().into(), &count, &mut exec_state); + assert_coerce_results(&mm, &NumericType::mm().into(), &mm, &mut exec_state); + assert_coerce_results(&any, &NumericType::Any.into(), &any, &mut exec_state); + assert_coerce_results(&unknown, &NumericType::Unknown.into(), &unknown, &mut exec_state); + assert_coerce_results(&default, &NumericType::default().into(), &default, &mut exec_state); + + assert_coerce_results(&count, &NumericType::Any.into(), &count, &mut exec_state); + assert_coerce_results(&mm, &NumericType::Any.into(), &mm, &mut exec_state); + assert_coerce_results(&unknown, &NumericType::Any.into(), &unknown, &mut exec_state); + assert_coerce_results(&default, &NumericType::Any.into(), &default, &mut exec_state); + + if !*CHECK_NUMERIC_TYPES { + return; + } + + assert_eq!( + default + .coerce( + &NumericType::Default { + len: UnitLen::Yards, + angle: UnitAngle::default() + } + .into(), + &mut exec_state + ) + .unwrap(), + default + ); + + // No coercion + count.coerce(&NumericType::mm().into(), &mut exec_state).unwrap_err(); + mm.coerce(&NumericType::count().into(), &mut exec_state).unwrap_err(); + unknown.coerce(&NumericType::mm().into(), &mut exec_state).unwrap_err(); + unknown + .coerce(&NumericType::default().into(), &mut exec_state) + .unwrap_err(); + + count.coerce(&NumericType::Unknown.into(), &mut exec_state).unwrap_err(); + mm.coerce(&NumericType::Unknown.into(), &mut exec_state).unwrap_err(); + default + .coerce(&NumericType::Unknown.into(), &mut exec_state) + .unwrap_err(); + + assert_eq!( + inches + .coerce(&NumericType::mm().into(), &mut exec_state) + .unwrap() + .as_f64() + .unwrap() + .round(), + 25.0 + ); + assert_eq!( + rads.coerce( + &NumericType::Known(UnitType::Angle(UnitAngle::Degrees)).into(), + &mut exec_state + ) + .unwrap() + .as_f64() + .unwrap() + .round(), + 57.0 + ); + assert_eq!( + inches + .coerce(&NumericType::default().into(), &mut exec_state) + .unwrap() + .as_f64() + .unwrap() + .round(), + 25.0 + ); + assert_eq!( + rads.coerce(&NumericType::default().into(), &mut exec_state) + .unwrap() + .as_f64() + .unwrap() + .round(), + 57.0 + ); + } + + #[track_caller] + fn assert_value_and_type(name: &str, result: &ExecTestResults, expected: f64, expected_ty: NumericType) { + let mem = result.exec_state.stack(); + match mem + .memory + .get_from(name, result.mem_env, SourceRange::default(), 0) + .unwrap() + { + KclValue::Number { value, ty, .. } => { + assert_eq!(value.round(), expected); + assert_eq!(*ty, expected_ty); + } + _ => unreachable!(), + } + } + + #[tokio::test(flavor = "multi_thread")] + async fn combine_numeric() { + let program = r#"a = 5 + 4 +b = 5 - 2 +c = 5mm - 2mm + 10mm +d = 5mm - 2 + 10 +e = 5 - 2mm + 10 +f = 30mm - 1inch + +g = 2 * 10 +h = 2 * 10mm +i = 2mm * 10mm +j = 2_ * 10 +k = 2_ * 3mm * 3mm + +l = 1 / 10 +m = 2mm / 1mm +n = 10inch / 2mm +o = 3mm / 3 +p = 3_ / 4 +q = 4inch / 2_ + +r = min(0, 3, 42) +s = min(0, 3mm, -42) +t = min(100, 3in, 142mm) +u = min(3rad, 4in) +"#; + + let result = parse_execute(program).await.unwrap(); + if *CHECK_NUMERIC_TYPES { + assert_eq!(result.exec_state.errors().len(), 3); + } else { + assert!(result.exec_state.errors().is_empty()); + } + + assert_value_and_type("a", &result, 9.0, NumericType::default()); + assert_value_and_type("b", &result, 3.0, NumericType::default()); + assert_value_and_type("c", &result, 13.0, NumericType::mm()); + assert_value_and_type("d", &result, 13.0, NumericType::mm()); + assert_value_and_type("e", &result, 13.0, NumericType::mm()); + if *CHECK_NUMERIC_TYPES { + assert_value_and_type("f", &result, 5.0, NumericType::mm()); + } + + assert_value_and_type("g", &result, 20.0, NumericType::default()); + assert_value_and_type("h", &result, 20.0, NumericType::mm()); + assert_value_and_type("i", &result, 20.0, NumericType::Unknown); + assert_value_and_type("j", &result, 20.0, NumericType::default()); + assert_value_and_type("k", &result, 18.0, NumericType::Unknown); + + assert_value_and_type("l", &result, 0.0, NumericType::default()); + assert_value_and_type("m", &result, 2.0, NumericType::count()); + if *CHECK_NUMERIC_TYPES { + assert_value_and_type("n", &result, 127.0, NumericType::count()); + } + assert_value_and_type("o", &result, 1.0, NumericType::Unknown); + assert_value_and_type("p", &result, 1.0, NumericType::count()); + assert_value_and_type("q", &result, 2.0, NumericType::Known(UnitType::Length(UnitLen::Inches))); + + assert_value_and_type("r", &result, 0.0, NumericType::default()); + assert_value_and_type("s", &result, -42.0, NumericType::mm()); + assert_value_and_type("t", &result, 3.0, NumericType::Known(UnitType::Length(UnitLen::Inches))); + assert_value_and_type("u", &result, 3.0, NumericType::Unknown); + } + + #[tokio::test(flavor = "multi_thread")] + async fn bad_typed_arithmetic() { + let program = r#" +a = 1rad +b = 180 / PI * a + 360 +"#; + + let result = parse_execute(program).await.unwrap(); + + assert_value_and_type("a", &result, 1.0, NumericType::radians()); + // TODO type is not ideal + assert_value_and_type("b", &result, 417.0, NumericType::radians()); } } diff --git a/rust/kcl-lib/src/lib.rs b/rust/kcl-lib/src/lib.rs index 1d00d55ab..6e24b09ed 100644 --- a/rust/kcl-lib/src/lib.rs +++ b/rust/kcl-lib/src/lib.rs @@ -131,11 +131,36 @@ pub mod pretty { pub use crate::{parsing::token::NumericSuffix, unparser::format_number}; } +#[cfg(feature = "cli")] +use clap::ValueEnum; use serde::{Deserialize, Serialize}; #[allow(unused_imports)] use crate::log::{log, logln}; +lazy_static::lazy_static! { + + pub static ref IMPORT_FILE_EXTENSIONS: Vec = { + let mut import_file_extensions = vec!["stp".to_string(), "glb".to_string(), "fbxb".to_string()]; + #[cfg(feature = "cli")] + let named_extensions = kittycad::types::FileImportFormat::value_variants() + .iter() + .map(|x| format!("{}", x)) + .collect::>(); + #[cfg(not(feature = "cli"))] + let named_extensions = vec![]; // We don't really need this outside of the CLI. + // Add all the default import formats. + import_file_extensions.extend_from_slice(&named_extensions); + import_file_extensions + }; + + pub static ref RELEVANT_FILE_EXTENSIONS: Vec = { + let mut relevant_extensions = IMPORT_FILE_EXTENSIONS.clone(); + relevant_extensions.push("kcl".to_string()); + relevant_extensions + }; +} + #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] pub struct Program { #[serde(flatten)] diff --git a/rust/kcl-lib/src/lint/checks/camel_case.rs b/rust/kcl-lib/src/lint/checks/camel_case.rs index 931151979..14f76856e 100644 --- a/rust/kcl-lib/src/lint/checks/camel_case.rs +++ b/rust/kcl-lib/src/lint/checks/camel_case.rs @@ -104,21 +104,15 @@ const Part001 = startSketchOn('XY') |> startProfileAt([pipeLargeDia - (thickness / 2), 38], %) |> line([thickness, 0], %) |> line([0, -1], %) - |> angledLineToX({ - angle: 60, - to: pipeSmallDia + thickness - }, %) + |> angledLine(angle = 60, endAbsoluteX = pipeSmallDia + thickness) |> line([0, -pipeLength], %) - |> angledLineToX({ - angle: -60, - to: pipeLargeDia + thickness - }, %) + |> angledLine(angle = -60, endAbsoluteX = pipeLargeDia + thickness) |> line([0, -1], %) |> line([-thickness, 0], %) |> line([0, 1], %) - |> angledLineToX({ angle: 120, to: pipeSmallDia }, %) + |> angledLine(angle = 120, endAbsoluteX = pipeSmallDia) |> line([0, pipeLength], %) - |> angledLineToX({ angle: 60, to: pipeLargeDia }, %) + |> angledLine(angle = 60, endAbsoluteX = pipeLargeDia) |> close() |> revolve({ axis = Y }, %) " @@ -140,21 +134,15 @@ const part001 = startSketchOn('XY') |> startProfileAt([pipeLargeDia - (thickness / 2), 38], %) |> line([thickness, 0], %) |> line([0, -1], %) - |> angledLineToX({ - angle: 60, - to: pipeSmallDia + thickness - }, %) + |> angledLine(angle = 60, endAbsoluteX = pipeSmallDia + thickness) |> line([0, -pipeLength], %) - |> angledLineToX({ - angle: -60, - to: pipeLargeDia + thickness - }, %) + |> angledLine(angle = -60, endAbsoluteX = pipeLargeDia + thickness) |> line([0, -1], %) |> line([-thickness, 0], %) |> line([0, 1], %) - |> angledLineToX({ angle: 120, to: pipeSmallDia }, %) + |> angledLine(angle = 120, endAbsoluteX = pipeSmallDia) |> line([0, pipeLength], %) - |> angledLineToX({ angle: 60, to: pipeLargeDia }, %) + |> angledLine(angle = 60, endAbsoluteX = pipeLargeDia) |> close() |> revolve({ axis = Y }, %) " diff --git a/rust/kcl-lib/src/lsp/tests.rs b/rust/kcl-lib/src/lsp/tests.rs index 48cd58cb3..6554f6a76 100644 --- a/rust/kcl-lib/src/lsp/tests.rs +++ b/rust/kcl-lib/src/lsp/tests.rs @@ -3418,3 +3418,148 @@ async fn kcl_test_kcl_lsp_multi_file_error() { server.executor_ctx().await.clone().unwrap().close().await; } + +#[tokio::test(flavor = "multi_thread")] +async fn test_kcl_lsp_on_hover_untitled_file_scheme() { + let server = kcl_lsp_server(true).await.unwrap(); + + // Send open file. + server + .did_open(tower_lsp::lsp_types::DidOpenTextDocumentParams { + text_document: tower_lsp::lsp_types::TextDocumentItem { + uri: "untitled:Untitled-1".try_into().unwrap(), + language_id: "kcl".to_string(), + version: 1, + text: r#"startSketchOn(XY) +foo = 42 +foo + +fn bar(x: string): string { + return x +} + +bar("an arg") + +startSketchOn(XY) + |> startProfileAt([0, 0], %) + |> line(end = [10, 0]) + |> line(end = [0, 10]) +"# + .to_string(), + }, + }) + .await; + + // Std lib call + let hover = server + .hover(tower_lsp::lsp_types::HoverParams { + text_document_position_params: tower_lsp::lsp_types::TextDocumentPositionParams { + text_document: tower_lsp::lsp_types::TextDocumentIdentifier { + uri: "untitled:Untitled-1".try_into().unwrap(), + }, + position: tower_lsp::lsp_types::Position { line: 0, character: 2 }, + }, + work_done_progress_params: Default::default(), + }) + .await + .unwrap(); + + match hover.unwrap().contents { + tower_lsp::lsp_types::HoverContents::Markup(tower_lsp::lsp_types::MarkupContent { value, .. }) => { + assert!(value.contains("startSketchOn")); + assert!(value.contains(": SketchSurface")); + assert!(value.contains("Start a new 2-dimensional sketch on a specific")); + } + _ => unreachable!(), + } + + // Variable use + let hover = server + .hover(tower_lsp::lsp_types::HoverParams { + text_document_position_params: tower_lsp::lsp_types::TextDocumentPositionParams { + text_document: tower_lsp::lsp_types::TextDocumentIdentifier { + uri: "untitled:Untitled-1".try_into().unwrap(), + }, + position: tower_lsp::lsp_types::Position { line: 2, character: 1 }, + }, + work_done_progress_params: Default::default(), + }) + .await + .unwrap(); + + match hover.unwrap().contents { + tower_lsp::lsp_types::HoverContents::Markup(tower_lsp::lsp_types::MarkupContent { value, .. }) => { + assert!(value.contains("foo: number = 42")); + } + _ => unreachable!(), + } + + // User-defined function call. + let hover = server + .hover(tower_lsp::lsp_types::HoverParams { + text_document_position_params: tower_lsp::lsp_types::TextDocumentPositionParams { + text_document: tower_lsp::lsp_types::TextDocumentIdentifier { + uri: "untitled:Untitled-1".try_into().unwrap(), + }, + position: tower_lsp::lsp_types::Position { line: 8, character: 1 }, + }, + work_done_progress_params: Default::default(), + }) + .await + .unwrap(); + + match hover.unwrap().contents { + tower_lsp::lsp_types::HoverContents::Markup(tower_lsp::lsp_types::MarkupContent { value, .. }) => { + assert!(value.contains("bar(x: string): string")); + } + _ => unreachable!(), + } + + // Variable inside a function + let hover = server + .hover(tower_lsp::lsp_types::HoverParams { + text_document_position_params: tower_lsp::lsp_types::TextDocumentPositionParams { + text_document: tower_lsp::lsp_types::TextDocumentIdentifier { + uri: "untitled:Untitled-1".try_into().unwrap(), + }, + position: tower_lsp::lsp_types::Position { line: 5, character: 9 }, + }, + work_done_progress_params: Default::default(), + }) + .await + .unwrap(); + + match hover.unwrap().contents { + tower_lsp::lsp_types::HoverContents::Markup(tower_lsp::lsp_types::MarkupContent { value, .. }) => { + assert!(value.contains("x: string")); + } + _ => unreachable!(), + } + + // std function KwArg + let hover = server + .hover(tower_lsp::lsp_types::HoverParams { + text_document_position_params: tower_lsp::lsp_types::TextDocumentPositionParams { + text_document: tower_lsp::lsp_types::TextDocumentIdentifier { + uri: "untitled:Untitled-1".try_into().unwrap(), + }, + position: tower_lsp::lsp_types::Position { + line: 12, + character: 11, + }, + }, + work_done_progress_params: Default::default(), + }) + .await + .unwrap(); + + match hover.unwrap().contents { + tower_lsp::lsp_types::HoverContents::Markup(tower_lsp::lsp_types::MarkupContent { value, .. }) => { + assert!(value.contains("end?: [number]")); + assert!(value.contains("How far away (along the X and Y axes) should this line go?")); + } + _ => unreachable!(), + } + + server.executor_ctx().await.clone().unwrap().close().await; +} diff --git a/rust/kcl-lib/src/parsing/mod.rs b/rust/kcl-lib/src/parsing/mod.rs index b9c734232..00be2289c 100644 --- a/rust/kcl-lib/src/parsing/mod.rs +++ b/rust/kcl-lib/src/parsing/mod.rs @@ -143,13 +143,23 @@ impl From for ParseResult { } } -const STR_DEPRECATIONS: [(&str, &str); 6] = [ +const STR_DEPRECATIONS: [(&str, &str); 16] = [ ("XY", "XY"), ("XZ", "XZ"), ("YZ", "YZ"), ("-XY", "-XY"), ("-XZ", "-XZ"), ("-YZ", "-YZ"), + ("xy", "XY"), + ("xz", "XZ"), + ("yz", "YZ"), + ("-xy", "-XY"), + ("-xz", "-XZ"), + ("-yz", "-YZ"), + ("START", "START"), + ("start", "START"), + ("END", "END"), + ("end", "END"), ]; const FN_DEPRECATIONS: [(&str, &str); 3] = [("pi", "PI"), ("e", "E"), ("tau", "TAU")]; const CONST_DEPRECATIONS: [(&str, &str); 4] = [ diff --git a/rust/kcl-lib/src/parsing/parser.rs b/rust/kcl-lib/src/parsing/parser.rs index 0bc4d84dd..59811ae6d 100644 --- a/rust/kcl-lib/src/parsing/parser.rs +++ b/rust/kcl-lib/src/parsing/parser.rs @@ -35,7 +35,7 @@ use crate::{ token::{Token, TokenSlice, TokenType}, PIPE_OPERATOR, PIPE_SUBSTITUTION_OPERATOR, }, - SourceRange, + SourceRange, IMPORT_FILE_EXTENSIONS, }; thread_local! { @@ -1803,11 +1803,6 @@ fn import_stmt(i: &mut TokenSlice) -> PResult> { end = alias.end; *selector_alias = Some(alias); } - - ParseContext::warn(CompilationError::err( - SourceRange::new(start, path.end, path.module_id), - "Importing a whole module is experimental, likely to be buggy, and likely to change", - )); } let path_string = match path.inner.value { @@ -1843,8 +1838,6 @@ fn import_stmt(i: &mut TokenSlice) -> PResult> { )) } -const FOREIGN_IMPORT_EXTENSIONS: [&str; 8] = ["fbx", "gltf", "glb", "obj", "ply", "sldprt", "step", "stl"]; - /// Validates the path string in an `import` statement. /// /// `var_name` is `true` if the path will be used as a variable name. @@ -1909,12 +1902,11 @@ fn validate_path_string(path_string: String, var_name: bool, path_range: SourceR ImportPath::Std { path: segments } } else if path_string.contains('.') { - // TODO should allow other extensions if there is a format attribute. - let extn = &path_string[path_string.rfind('.').unwrap() + 1..]; - if !FOREIGN_IMPORT_EXTENSIONS.contains(&extn) { + let extn = std::path::Path::new(&path_string).extension().unwrap_or_default(); + if !IMPORT_FILE_EXTENSIONS.contains(&extn.to_string_lossy().to_string()) { ParseContext::warn(CompilationError::err( path_range, - format!("unsupported import path format. KCL files can be imported from the current project, CAD files with the following formats are supported: {}", FOREIGN_IMPORT_EXTENSIONS.join(", ")), + format!("unsupported import path format. KCL files can be imported from the current project, CAD files with the following formats are supported: {}", IMPORT_FILE_EXTENSIONS.join(", ")), )) } ImportPath::Foreign { path: path_string } @@ -1922,7 +1914,7 @@ fn validate_path_string(path_string: String, var_name: bool, path_range: SourceR return Err(ErrMode::Cut( CompilationError::fatal( path_range, - format!("unsupported import path format. KCL files can be imported from the current project, CAD files with the following formats are supported: {}", FOREIGN_IMPORT_EXTENSIONS.join(", ")), + format!("unsupported import path format. KCL files can be imported from the current project, CAD files with the following formats are supported: {}", IMPORT_FILE_EXTENSIONS.join(", ")), ) .into(), )); @@ -3884,6 +3876,23 @@ mySk1 = startSketchOn(XY) } } + #[test] + fn parse_numeric() { + let test_program = "fn foo(x: number(Length)) {}"; + let tokens = crate::parsing::token::lex(test_program, ModuleId::default()).unwrap(); + run_parser(tokens.as_slice()).unwrap(); + + let test_program = "42_mm"; + let tokens = crate::parsing::token::lex(test_program, ModuleId::default()).unwrap(); + assert_eq!(tokens.iter().count(), 1); + run_parser(tokens.as_slice()).unwrap(); + + let test_program = "42_Length"; + let tokens = crate::parsing::token::lex(test_program, ModuleId::default()).unwrap(); + assert_eq!(tokens.iter().count(), 2); + assert_eq!(run_parser(tokens.as_slice()).unwrap_errs().count(), 1); + } + #[test] fn test_parameter_list() { let tests = [ @@ -4482,10 +4491,10 @@ e /// ``` /// exampleSketch = startSketchOn("XZ") /// |> startProfileAt([0, 0], %) -/// |> angledLine({ -/// angle = 30, -/// length = 3 / cos(toRadians(30)), -/// }, %) +/// |> angledLine( +/// angle = 30, +/// length = 3 / cos(toRadians(30)), +/// ) /// |> yLine(endAbsolute = 0) /// |> close(%) /// @@ -4498,21 +4507,9 @@ export fn cos(num: number(rad)): number(_) {}"#; #[test] fn warn_import() { - let some_program_string = r#"import "foo.kcl""#; - let (_, errs) = assert_no_err(some_program_string); - assert_eq!(errs.len(), 1, "{errs:#?}"); - - let some_program_string = r#"import "foo.obj""#; - let (_, errs) = assert_no_err(some_program_string); - assert_eq!(errs.len(), 1, "{errs:#?}"); - - let some_program_string = r#"import "foo.sldprt""#; - let (_, errs) = assert_no_err(some_program_string); - assert_eq!(errs.len(), 1, "{errs:#?}"); - let some_program_string = r#"import "foo.bad""#; let (_, errs) = assert_no_err(some_program_string); - assert_eq!(errs.len(), 2, "{errs:#?}"); + assert_eq!(errs.len(), 1, "{errs:#?}"); } #[test] diff --git a/rust/kcl-lib/src/parsing/token/mod.rs b/rust/kcl-lib/src/parsing/token/mod.rs index a28c40efc..2cf8ca2dd 100644 --- a/rust/kcl-lib/src/parsing/token/mod.rs +++ b/rust/kcl-lib/src/parsing/token/mod.rs @@ -34,6 +34,8 @@ pub const NUM_SUFFIXES: [&str; 9] = ["mm", "cm", "m", "inch", "in", "ft", "yd", pub enum NumericSuffix { None, Count, + Length, + Angle, Mm, Cm, M, @@ -58,6 +60,8 @@ impl NumericSuffix { match self { NumericSuffix::None => &[], NumericSuffix::Count => b"_", + NumericSuffix::Length => b"Length", + NumericSuffix::Angle => b"Angle", NumericSuffix::Mm => b"mm", NumericSuffix::Cm => b"cm", NumericSuffix::M => b"m", @@ -75,7 +79,9 @@ impl FromStr for NumericSuffix { fn from_str(s: &str) -> Result { match s { - "_" => Ok(NumericSuffix::Count), + "_" | "Count" => Ok(NumericSuffix::Count), + "Length" => Ok(NumericSuffix::Length), + "Angle" => Ok(NumericSuffix::Angle), "mm" | "millimeters" => Ok(NumericSuffix::Mm), "cm" | "centimeters" => Ok(NumericSuffix::Cm), "m" | "meters" => Ok(NumericSuffix::M), @@ -94,6 +100,8 @@ impl fmt::Display for NumericSuffix { match self { NumericSuffix::None => Ok(()), NumericSuffix::Count => write!(f, "_"), + NumericSuffix::Length => write!(f, "Length"), + NumericSuffix::Angle => write!(f, "Angle"), NumericSuffix::Mm => write!(f, "mm"), NumericSuffix::Cm => write!(f, "cm"), NumericSuffix::M => write!(f, "m"), diff --git a/rust/kcl-lib/src/simulation_tests.rs b/rust/kcl-lib/src/simulation_tests.rs index 10514ffbd..86674bf01 100644 --- a/rust/kcl-lib/src/simulation_tests.rs +++ b/rust/kcl-lib/src/simulation_tests.rs @@ -84,7 +84,7 @@ fn parse_test(test: &Test) { insta::assert_json_snapshot!("ast", parse_res, { ".**.start" => 0, ".**.end" => 0, - ".**.comment_start" => 0, + ".**.commentStart" => 0, }); }); } @@ -2482,3 +2482,45 @@ mod intersect_cubes { super::execute(TEST_NAME, true).await } } +mod pattern_into_union { + const TEST_NAME: &str = "pattern_into_union"; + + /// Test parsing KCL. + #[test] + fn parse() { + super::parse(TEST_NAME) + } + + /// Test that parsing and unparsing KCL produces the original KCL input. + #[tokio::test(flavor = "multi_thread")] + async fn unparse() { + super::unparse(TEST_NAME).await + } + + /// Test that KCL is executed correctly. + #[tokio::test(flavor = "multi_thread")] + async fn kcl_test_execute() { + super::execute(TEST_NAME, true).await + } +} +mod subtract_doesnt_need_brackets { + const TEST_NAME: &str = "subtract_doesnt_need_brackets"; + + /// Test parsing KCL. + #[test] + fn parse() { + super::parse(TEST_NAME) + } + + /// Test that parsing and unparsing KCL produces the original KCL input. + #[tokio::test(flavor = "multi_thread")] + async fn unparse() { + super::unparse(TEST_NAME).await + } + + /// Test that KCL is executed correctly. + #[tokio::test(flavor = "multi_thread")] + async fn kcl_test_execute() { + super::execute(TEST_NAME, true).await + } +} diff --git a/rust/kcl-lib/src/std/appearance.rs b/rust/kcl-lib/src/std/appearance.rs index 706e6c9fa..e2621ef47 100644 --- a/rust/kcl-lib/src/std/appearance.rs +++ b/rust/kcl-lib/src/std/appearance.rs @@ -7,21 +7,25 @@ use kittycad_modeling_cmds::{self as kcmc, shared::Color}; use regex::Regex; use rgba_simple::Hex; use schemars::JsonSchema; -use serde::{Deserialize, Serialize}; -use validator::Validate; +use serde::Serialize; use crate::{ errors::{KclError, KclErrorDetails}, - execution::{types::RuntimeType, ExecState, KclValue, Solid}, + execution::{ + types::{NumericType, PrimitiveType, RuntimeType}, + ExecState, KclValue, Solid, + }, std::Args, }; +use super::args::TyF64; + lazy_static::lazy_static! { static ref HEX_REGEX: Regex = Regex::new(r"^#[0-9a-fA-F]{6}$").unwrap(); } /// Data for appearance. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Validate)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase")] struct AppearanceData { @@ -30,10 +34,10 @@ struct AppearanceData { pub color: String, /// Metalness of the new material, a percentage like 95.7. #[validate(range(min = 0.0, max = 100.0))] - pub metalness: Option, + pub metalness: Option, /// Roughness of the new material, a percentage like 95.7. #[validate(range(min = 0.0, max = 100.0))] - pub roughness: Option, + pub roughness: Option, // TODO(jess): we can also ambient occlusion here I just don't know what it is. } @@ -42,22 +46,15 @@ pub async fn appearance(exec_state: &mut ExecState, args: Args) -> Result = args.get_kw_arg_opt("metalness")?; - let roughness: Option = args.get_kw_arg_opt("roughness")?; + let count_ty = RuntimeType::Primitive(PrimitiveType::Number(NumericType::count())); + let metalness: Option = args.get_kw_arg_opt_typed("metalness", &count_ty, exec_state)?; + let roughness: Option = args.get_kw_arg_opt_typed("roughness", &count_ty, exec_state)?; let data = AppearanceData { color, metalness, roughness, }; - // Validate the data. - data.validate().map_err(|err| { - KclError::Semantic(KclErrorDetails { - message: format!("Invalid appearance data: {}", err), - source_ranges: vec![args.source_range], - }) - })?; - // Make sure the color if set is valid. if !HEX_REGEX.is_match(&data.color) { return Err(KclError::Semantic(KclErrorDetails { @@ -66,7 +63,15 @@ pub async fn appearance(exec_state: &mut ExecState, args: Args) -> Result Result appearance( @@ -160,7 +165,7 @@ pub async fn appearance(exec_state: &mut ExecState, args: Args) -> Result Result startProfileAt([0.05, 0.05], %) /// |> line(end = [0, 7]) -/// |> tangentialArc({ -/// offset: 90, -/// radius: 5 -/// }, %) +/// |> tangentialArc(angle = 90, radius = 5) /// |> line(end = [-3, 0]) -/// |> tangentialArc({ -/// offset: -90, -/// radius: 5 -/// }, %) +/// |> tangentialArc(angle = -90, radius = 5) /// |> line(end = [0, 7]) /// /// pipeHole = startSketchOn(XY) diff --git a/rust/kcl-lib/src/std/args.rs b/rust/kcl-lib/src/std/args.rs index b5cddd2fc..92b771f5d 100644 --- a/rust/kcl-lib/src/std/args.rs +++ b/rust/kcl-lib/src/std/args.rs @@ -8,13 +8,13 @@ use kcmc::{ }; use kittycad_modeling_cmds as kcmc; use schemars::JsonSchema; -use serde::{Deserialize, Serialize}; +use serde::Serialize; use crate::{ errors::{KclError, KclErrorDetails}, execution::{ kcl_value::FunctionSource, - types::{NumericType, PrimitiveType, RuntimeType}, + types::{NumericType, PrimitiveType, RuntimeType, UnitLen}, ExecState, ExecutorContext, ExtrudeSurface, Helix, KclObjectFields, KclValue, Metadata, Sketch, SketchSurface, Solid, TagIdentifier, }, @@ -72,7 +72,7 @@ impl KwArgs { } } -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS)] #[ts(export)] #[serde(rename_all = "camelCase")] pub struct TyF64 { @@ -92,7 +92,7 @@ impl TyF64 { } } - pub fn map(mut self, n: f64) -> Self { + pub fn map_value(mut self, n: f64) -> Self { self.n = n; self } @@ -151,6 +151,10 @@ impl Args { let Some(arg) = self.kw_args.labeled.get(label) else { return Ok(None); }; + if let KclValue::KclNone { .. } = arg.value { + // It is set, but it's an optional parameter that wasn't provided. + return Ok(None); + } T::from_kcl_val(&arg.value).map(Some).ok_or_else(|| { KclError::Type(KclErrorDetails { @@ -209,7 +213,7 @@ impl Args { })); }; - let arg = arg.value.coerce(ty, exec_state).ok_or_else(|| { + let arg = arg.value.coerce(ty, exec_state).map_err(|_| { let actual_type_name = arg.value.human_friendly_type(); let msg_base = format!( "This function expected the input argument to be {} but it's actually of type {actual_type_name}", @@ -332,7 +336,7 @@ impl Args { message: format!("This function requires a value for the special unlabeled first parameter, '{label}'"), }))?; - let arg = arg.value.coerce(ty, exec_state).ok_or_else(|| { + let arg = arg.value.coerce(ty, exec_state).map_err(|_| { let actual_type_name = arg.value.human_friendly_type(); let msg_base = format!( "This function expected the input argument to be {} but it's actually of type {actual_type_name}", @@ -503,19 +507,19 @@ impl Args { Ok(()) } - pub(crate) fn make_user_val_from_point(&self, p: [f64; 2]) -> Result { + pub(crate) fn make_user_val_from_point(&self, p: [TyF64; 2]) -> Result { let meta = Metadata { source_range: self.source_range, }; let x = KclValue::Number { - value: p[0], + value: p[0].n, meta: vec![meta], - ty: NumericType::Unknown, + ty: p[0].ty.clone(), }; let y = KclValue::Number { - value: p[1], + value: p[1].n, meta: vec![meta], - ty: NumericType::Unknown, + ty: p[1].ty.clone(), }; Ok(KclValue::MixedArray { value: vec![x, y], @@ -523,16 +527,7 @@ impl Args { }) } - pub(crate) fn make_user_val_from_f64(&self, f: f64) -> KclValue { - KclValue::from_number( - f, - vec![Metadata { - source_range: self.source_range, - }], - ) - } - - pub(crate) fn make_user_val_from_f64_with_type(&self, f: TyF64) -> KclValue { + pub(super) fn make_user_val_from_f64_with_type(&self, f: TyF64) -> KclValue { KclValue::from_number_with_type( f.n, f.ty, @@ -542,50 +537,10 @@ impl Args { ) } - pub(crate) fn make_user_val_from_f64_array(&self, f: Vec, ty: &NumericType) -> Result { - let array = f - .into_iter() - .map(|n| KclValue::Number { - value: n, - meta: vec![Metadata { - source_range: self.source_range, - }], - ty: ty.clone(), - }) - .collect::>(); - Ok(KclValue::MixedArray { - value: array, - meta: vec![Metadata { - source_range: self.source_range, - }], - }) - } - - pub(crate) fn get_number(&self) -> Result { - FromArgs::from_args(self, 0) - } - pub(crate) fn get_number_with_type(&self) -> Result { FromArgs::from_args(self, 0) } - pub(crate) fn get_number_array(&self) -> Result, KclError> { - let numbers = self - .args - .iter() - .map(|arg| { - let Some(num) = f64::from_kcl_val(&arg.value) else { - return Err(KclError::Semantic(KclErrorDetails { - source_ranges: arg.source_ranges(), - message: format!("Expected a number but found {}", arg.value.human_friendly_type()), - })); - }; - Ok(num) - }) - .collect::>()?; - Ok(numbers) - } - pub(crate) fn get_number_array_with_types(&self) -> Result, KclError> { let numbers = self .args @@ -616,8 +571,7 @@ impl Args { let mut numbers = numbers.into_iter(); let a = numbers.next().unwrap(); let b = numbers.next().unwrap(); - let ty = a.ty.combine_eq(&b.ty); - Ok((a.n, b.n, ty)) + Ok(NumericType::combine_eq(a, b)) } pub(crate) fn get_sketches(&self, exec_state: &mut ExecState) -> Result<(Vec, Sketch), KclError> { @@ -627,16 +581,15 @@ impl Args { source_ranges: vec![self.source_range], })); }; - let sarg = arg0 - .value - .coerce(&RuntimeType::sketches(), exec_state) - .ok_or(KclError::Type(KclErrorDetails { + let sarg = arg0.value.coerce(&RuntimeType::sketches(), exec_state).map_err(|_| { + KclError::Type(KclErrorDetails { message: format!( "Expected an array of sketches, found {}", arg0.value.human_friendly_type() ), source_ranges: vec![self.source_range], - }))?; + }) + })?; let sketches = match sarg { KclValue::HomArray { value, .. } => value.iter().map(|v| v.as_sketch().unwrap().clone()).collect(), _ => unreachable!(), @@ -651,10 +604,12 @@ impl Args { let sarg = arg1 .value .coerce(&RuntimeType::Primitive(PrimitiveType::Sketch), exec_state) - .ok_or(KclError::Type(KclErrorDetails { - message: format!("Expected a sketch, found {}", arg1.value.human_friendly_type()), - source_ranges: vec![self.source_range], - }))?; + .map_err(|_| { + KclError::Type(KclErrorDetails { + message: format!("Expected a sketch, found {}", arg1.value.human_friendly_type()), + source_ranges: vec![self.source_range], + }) + })?; let sketch = match sarg { KclValue::Sketch { value } => *value, _ => unreachable!(), @@ -673,10 +628,12 @@ impl Args { let sarg = arg0 .value .coerce(&RuntimeType::Primitive(PrimitiveType::Sketch), exec_state) - .ok_or(KclError::Type(KclErrorDetails { - message: format!("Expected a sketch, found {}", arg0.value.human_friendly_type()), - source_ranges: vec![self.source_range], - }))?; + .map_err(|_| { + KclError::Type(KclErrorDetails { + message: format!("Expected a sketch, found {}", arg0.value.human_friendly_type()), + source_ranges: vec![self.source_range], + }) + })?; match sarg { KclValue::Sketch { value } => Ok(*value), _ => unreachable!(), @@ -685,18 +642,7 @@ impl Args { pub(crate) fn get_data<'a, T>(&'a self) -> Result where - T: FromArgs<'a> + serde::de::DeserializeOwned, - { - FromArgs::from_args(self, 0) - } - - pub(crate) fn get_import_data(&self) -> Result<(String, Option), KclError> { - FromArgs::from_args(self, 0) - } - - pub(crate) fn get_data_and_optional_tag<'a, T>(&'a self) -> Result<(T, Option), KclError> - where - T: serde::de::DeserializeOwned + FromKclValue<'a> + Sized, + T: FromArgs<'a>, { FromArgs::from_args(self, 0) } @@ -706,7 +652,7 @@ impl Args { exec_state: &mut ExecState, ) -> Result<(T, Sketch, Option), KclError> where - T: serde::de::DeserializeOwned + FromKclValue<'a> + Sized, + T: FromKclValue<'a> + Sized, { let data: T = FromArgs::from_args(self, 0)?; let Some(arg1) = self.args.get(1) else { @@ -718,13 +664,15 @@ impl Args { let sarg = arg1 .value .coerce(&RuntimeType::Primitive(PrimitiveType::Sketch), exec_state) - .ok_or(KclError::Type(KclErrorDetails { - message: format!( - "Expected a sketch for second argument, found {}", - arg1.value.human_friendly_type() - ), - source_ranges: vec![self.source_range], - }))?; + .map_err(|_| { + KclError::Type(KclErrorDetails { + message: format!( + "Expected a sketch for second argument, found {}", + arg1.value.human_friendly_type() + ), + source_ranges: vec![self.source_range], + }) + })?; let sketch = match sarg { KclValue::Sketch { value } => *value, _ => unreachable!(), @@ -733,18 +681,12 @@ impl Args { Ok((data, sketch, tag)) } - pub(crate) fn get_data_and_sketch_surface<'a, T>(&'a self) -> Result<(T, SketchSurface, Option), KclError> - where - T: serde::de::DeserializeOwned + FromKclValue<'a> + Sized, - { + pub(crate) fn get_data_and_sketch_surface(&self) -> Result<([TyF64; 2], SketchSurface, Option), KclError> { FromArgs::from_args(self, 0) } - pub(crate) fn get_data_and_solid<'a, T>(&'a self, exec_state: &mut ExecState) -> Result<(T, Box), KclError> - where - T: serde::de::DeserializeOwned + FromKclValue<'a> + Sized, - { - let data: T = FromArgs::from_args(self, 0)?; + pub(crate) fn get_data_and_solid(&self, exec_state: &mut ExecState) -> Result<(TyF64, Box), KclError> { + let data = FromArgs::from_args(self, 0)?; let Some(arg1) = self.args.get(1) else { return Err(KclError::Semantic(KclErrorDetails { message: "Expected a solid for second argument".to_owned(), @@ -754,13 +696,15 @@ impl Args { let sarg = arg1 .value .coerce(&RuntimeType::Primitive(PrimitiveType::Solid), exec_state) - .ok_or(KclError::Type(KclErrorDetails { - message: format!( - "Expected a solid for second argument, found {}", - arg1.value.human_friendly_type() - ), - source_ranges: vec![self.source_range], - }))?; + .map_err(|_| { + KclError::Type(KclErrorDetails { + message: format!( + "Expected a solid for second argument, found {}", + arg1.value.human_friendly_type() + ), + source_ranges: vec![self.source_range], + }) + })?; let solid = match sarg { KclValue::Solid { value } => value, _ => unreachable!(), @@ -768,7 +712,7 @@ impl Args { Ok((data, solid)) } - pub(crate) fn get_tag_to_number_sketch(&self) -> Result<(TagIdentifier, f64, Sketch), KclError> { + pub(crate) fn get_tag_to_number_sketch(&self) -> Result<(TagIdentifier, TyF64, Sketch), KclError> { FromArgs::from_args(self, 0) } @@ -994,59 +938,6 @@ where } } -impl<'a> FromKclValue<'a> for [f64; 2] { - fn from_kcl_val(arg: &'a KclValue) -> Option { - match arg { - KclValue::MixedArray { value, meta: _ } | KclValue::HomArray { value, .. } => { - if value.len() != 2 { - return None; - } - let v0 = value.first()?; - let v1 = value.get(1)?; - let array = [v0.as_f64()?, v1.as_f64()?]; - Some(array) - } - _ => None, - } - } -} - -impl<'a> FromKclValue<'a> for [usize; 3] { - fn from_kcl_val(arg: &'a KclValue) -> Option { - match arg { - KclValue::MixedArray { value, meta: _ } | KclValue::HomArray { value, .. } => { - if value.len() != 3 { - return None; - } - let v0 = value.first()?; - let v1 = value.get(1)?; - let v2 = value.get(2)?; - let array = [v0.as_usize()?, v1.as_usize()?, v2.as_usize()?]; - Some(array) - } - _ => None, - } - } -} - -impl<'a> FromKclValue<'a> for [f64; 3] { - fn from_kcl_val(arg: &'a KclValue) -> Option { - match arg { - KclValue::MixedArray { value, meta: _ } | KclValue::HomArray { value, .. } => { - if value.len() != 3 { - return None; - } - let v0 = value.first()?; - let v1 = value.get(1)?; - let v2 = value.get(2)?; - let array = [v0.as_f64()?, v1.as_f64()?, v2.as_f64()?]; - Some(array) - } - _ => None, - } - } -} - impl<'a> FromKclValue<'a> for TagNode { fn from_kcl_val(arg: &'a KclValue) -> Option { arg.get_tag_declarator().ok() @@ -1100,35 +991,6 @@ macro_rules! let_field_of { }; } -impl<'a> FromKclValue<'a> for crate::std::import::ImportFormat { - fn from_kcl_val(arg: &'a KclValue) -> Option { - let obj = arg.as_object()?; - let_field_of!(obj, typ "format"); - match typ { - "fbx" => Some(Self::Fbx {}), - "gltf" => Some(Self::Gltf {}), - "sldprt" => Some(Self::Sldprt {}), - "step" => Some(Self::Step {}), - "stl" => { - let_field_of!(obj, coords?); - let_field_of!(obj, units); - Some(Self::Stl { coords, units }) - } - "obj" => { - let_field_of!(obj, coords?); - let_field_of!(obj, units); - Some(Self::Obj { coords, units }) - } - "ply" => { - let_field_of!(obj, coords?); - let_field_of!(obj, units); - Some(Self::Ply { coords, units }) - } - _ => None, - } - } -} - impl<'a> FromKclValue<'a> for super::sketch::AngledLineThatIntersectsData { fn from_kcl_val(arg: &'a KclValue) -> Option { let obj = arg.as_object()?; @@ -1165,15 +1027,6 @@ impl<'a> FromKclValue<'a> for super::shapes::PolygonData { } } -impl<'a> FromKclValue<'a> for crate::std::polar::PolarCoordsData { - fn from_kcl_val(arg: &'a KclValue) -> Option { - let obj = arg.as_object()?; - let_field_of!(obj, angle); - let_field_of!(obj, length); - Some(Self { angle, length }) - } -} - impl<'a> FromKclValue<'a> for crate::execution::Plane { fn from_kcl_val(arg: &'a KclValue) -> Option { arg.as_plane().cloned() @@ -1275,31 +1128,13 @@ impl<'a> FromKclValue<'a> for FaceTag { } } -impl<'a> FromKclValue<'a> for super::sketch::AngledLineToData { - fn from_kcl_val(arg: &'a KclValue) -> Option { - // Deserialize from an {angle, to} object. - let case1 = || { - let obj = arg.as_object()?; - let_field_of!(obj, to); - let_field_of!(obj, angle); - Some(Self { angle, to }) - }; - // Deserialize from an [angle, to] array. - let case2 = || { - let [angle, to] = arg.as_point2d()?; - Some(Self { angle, to }) - }; - case1().or_else(case2) - } -} - impl<'a> FromKclValue<'a> for super::sketch::ArcData { fn from_kcl_val(arg: &'a KclValue) -> Option { let obj = arg.as_object()?; - let_field_of!(obj, radius); let case1 = || { - let angle_start = obj.get("angleStart")?.as_f64()?; - let angle_end = obj.get("angleEnd")?.as_f64()?; + let angle_start = obj.get("angleStart")?.as_ty_f64()?; + let angle_end = obj.get("angleEnd")?.as_ty_f64()?; + let_field_of!(obj, radius, TyF64); Some(Self::AnglesAndRadius { angle_start, angle_end, @@ -1310,6 +1145,7 @@ impl<'a> FromKclValue<'a> for super::sketch::ArcData { let obj = arg.as_object()?; let_field_of!(obj, to); let_field_of!(obj, center); + let_field_of!(obj, radius, TyF64); Some(Self::CenterToRadius { center, to, radius }) }; case1().or_else(case2) @@ -1338,14 +1174,26 @@ impl<'a> FromKclValue<'a> for crate::execution::Point3d { fn from_kcl_val(arg: &'a KclValue) -> Option { // Case 1: object with x/y/z fields if let Some(obj) = arg.as_object() { - let_field_of!(obj, x); - let_field_of!(obj, y); - let_field_of!(obj, z); - return Some(Self { x, y, z }); + let_field_of!(obj, x, TyF64); + let_field_of!(obj, y, TyF64); + let_field_of!(obj, z, TyF64); + let (a, ty) = NumericType::combine_eq_array(&[x, y, z]); + return Some(Self { + x: a[0], + y: a[1], + z: a[2], + units: ty.as_length().unwrap_or(UnitLen::Unknown), + }); } // Case 2: Array of 3 numbers. - let [x, y, z]: [f64; 3] = FromKclValue::from_kcl_val(arg)?; - Some(Self { x, y, z }) + let [x, y, z]: [TyF64; 3] = FromKclValue::from_kcl_val(arg)?; + let (a, ty) = NumericType::combine_eq_array(&[x, y, z]); + Some(Self { + x: a[0], + y: a[1], + z: a[2], + units: ty.as_length().unwrap_or(UnitLen::Unknown), + }) } } @@ -1612,24 +1460,6 @@ impl<'a> FromKclValue<'a> for super::axis_or_reference::Axis3dOrEdgeReference { } } -impl<'a> FromKclValue<'a> for super::sketch::AngledLineData { - fn from_kcl_val(arg: &'a KclValue) -> Option { - let case1 = |arg: &KclValue| { - let obj = arg.as_object()?; - let_field_of!(obj, angle); - let_field_of!(obj, length); - Some(Self::AngleAndLengthNamed { angle, length }) - }; - let case2 = |arg: &KclValue| { - let array = arg.as_array()?; - let ang = array.first()?.as_f64()?; - let len = array.get(1)?.as_f64()?; - Some(Self::AngleAndLengthPair([ang, len])) - }; - case1(arg).or_else(|| case2(arg)) - } -} - impl<'a> FromKclValue<'a> for i64 { fn from_kcl_val(arg: &'a KclValue) -> Option { match arg { @@ -1689,14 +1519,7 @@ impl<'a> FromKclValue<'a> for u64 { } } } -impl<'a> FromKclValue<'a> for f64 { - fn from_kcl_val(arg: &'a KclValue) -> Option { - match arg { - KclValue::Number { value, .. } => Some(*value), - _ => None, - } - } -} + impl<'a> FromKclValue<'a> for TyF64 { fn from_kcl_val(arg: &'a KclValue) -> Option { match arg { @@ -1706,6 +1529,41 @@ impl<'a> FromKclValue<'a> for TyF64 { } } +impl<'a> FromKclValue<'a> for [TyF64; 2] { + fn from_kcl_val(arg: &'a KclValue) -> Option { + match arg { + KclValue::MixedArray { value, meta: _ } | KclValue::HomArray { value, .. } => { + if value.len() != 2 { + return None; + } + let v0 = value.first()?; + let v1 = value.get(1)?; + let array = [v0.as_ty_f64()?, v1.as_ty_f64()?]; + Some(array) + } + _ => None, + } + } +} + +impl<'a> FromKclValue<'a> for [TyF64; 3] { + fn from_kcl_val(arg: &'a KclValue) -> Option { + match arg { + KclValue::MixedArray { value, meta: _ } | KclValue::HomArray { value, .. } => { + if value.len() != 3 { + return None; + } + let v0 = value.first()?; + let v1 = value.get(1)?; + let v2 = value.get(2)?; + let array = [v0.as_ty_f64()?, v1.as_ty_f64()?, v2.as_ty_f64()?]; + Some(array) + } + _ => None, + } + } +} + impl<'a> FromKclValue<'a> for Sketch { fn from_kcl_val(arg: &'a KclValue) -> Option { let KclValue::Sketch { value } = arg else { diff --git a/rust/kcl-lib/src/std/array.rs b/rust/kcl-lib/src/std/array.rs index 05e30deb8..7d86033b4 100644 --- a/rust/kcl-lib/src/std/array.rs +++ b/rust/kcl-lib/src/std/array.rs @@ -133,7 +133,7 @@ pub async fn reduce(exec_state: &mut ExecState, args: Args) -> Result Result<(), KclError> { if !value { return Err(KclError::Type(KclErrorDetails { @@ -42,8 +44,8 @@ async fn inner_assert(data: bool, message: &str, args: &Args) -> Result<(), KclE } pub async fn assert_lt(_exec_state: &mut ExecState, args: Args) -> Result { - let (left, right, description): (f64, f64, String) = args.get_data()?; - inner_assert_lt(left, right, &description, &args).await?; + let (left, right, description): (TyF64, TyF64, String) = args.get_data()?; + inner_assert_lt(left.n, right.n, &description, &args).await?; Ok(KclValue::none()) } @@ -61,8 +63,8 @@ async fn inner_assert_lt(left: f64, right: f64, message: &str, args: &Args) -> R } pub async fn assert_gt(_exec_state: &mut ExecState, args: Args) -> Result { - let (left, right, description): (f64, f64, String) = args.get_data()?; - inner_assert_gt(left, right, &description, &args).await?; + let (left, right, description): (TyF64, TyF64, String) = args.get_data()?; + inner_assert_gt(left.n, right.n, &description, &args).await?; Ok(KclValue::none()) } @@ -94,8 +96,8 @@ async fn inner_assert_equal(left: f64, right: f64, epsilon: f64, message: &str, } pub async fn assert_equal(_exec_state: &mut ExecState, args: Args) -> Result { - let (left, right, epsilon, description): (f64, f64, f64, String) = args.get_data()?; - inner_assert_equal(left, right, epsilon, &description, &args).await?; + let (left, right, epsilon, description): (TyF64, TyF64, TyF64, String) = args.get_data()?; + inner_assert_equal(left.n, right.n, epsilon.n, &description, &args).await?; Ok(KclValue::none()) } @@ -113,8 +115,8 @@ async fn inner_assert_gt(left: f64, right: f64, message: &str, args: &Args) -> R } pub async fn assert_lte(_exec_state: &mut ExecState, args: Args) -> Result { - let (left, right, description): (f64, f64, String) = args.get_data()?; - inner_assert_lte(left, right, &description, &args).await?; + let (left, right, description): (TyF64, TyF64, String) = args.get_data()?; + inner_assert_lte(left.n, right.n, &description, &args).await?; Ok(KclValue::none()) } @@ -133,8 +135,8 @@ async fn inner_assert_lte(left: f64, right: f64, message: &str, args: &Args) -> } pub async fn assert_gte(_exec_state: &mut ExecState, args: Args) -> Result { - let (left, right, description): (f64, f64, String) = args.get_data()?; - inner_assert_gte(left, right, &description, &args).await?; + let (left, right, description): (TyF64, TyF64, String) = args.get_data()?; + inner_assert_gte(left.n, right.n, &description, &args).await?; Ok(KclValue::none()) } diff --git a/rust/kcl-lib/src/std/axis_or_reference.rs b/rust/kcl-lib/src/std/axis_or_reference.rs index e84489b6b..c7b7b26ea 100644 --- a/rust/kcl-lib/src/std/axis_or_reference.rs +++ b/rust/kcl-lib/src/std/axis_or_reference.rs @@ -2,20 +2,23 @@ use crate::std::fillet::EdgeReference; +use super::args::TyF64; + /// A 2D axis or tagged edge. #[derive(Debug, Clone, PartialEq)] pub enum Axis2dOrEdgeReference { /// 2D axis and origin. - Axis { direction: [f64; 2], origin: [f64; 2] }, + Axis { direction: [TyF64; 2], origin: [TyF64; 2] }, /// Tagged edge. Edge(EdgeReference), } /// A 3D axis or tagged edge. +#[allow(clippy::large_enum_variant)] #[derive(Debug, Clone, PartialEq)] pub enum Axis3dOrEdgeReference { /// 3D axis and origin. - Axis { direction: [f64; 3], origin: [f64; 3] }, + Axis { direction: [TyF64; 3], origin: [TyF64; 3] }, /// Tagged edge. Edge(EdgeReference), } diff --git a/rust/kcl-lib/src/std/chamfer.rs b/rust/kcl-lib/src/std/chamfer.rs index 43e945556..68982397d 100644 --- a/rust/kcl-lib/src/std/chamfer.rs +++ b/rust/kcl-lib/src/std/chamfer.rs @@ -15,12 +15,14 @@ use crate::{ std::{fillet::EdgeReference, Args}, }; +use super::args::TyF64; + pub(crate) const DEFAULT_TOLERANCE: f64 = 0.0000001; /// Create chamfers on tagged paths. pub async fn chamfer(exec_state: &mut ExecState, args: Args) -> Result { let solid = args.get_unlabeled_kw_arg_typed("solid", &RuntimeType::Primitive(PrimitiveType::Solid), exec_state)?; - let length = args.get_kw_arg("length")?; + let length: TyF64 = args.get_kw_arg_typed("length", &RuntimeType::length(), exec_state)?; let tags = args.kw_arg_array_and_source::("tags")?; let tag = args.get_kw_arg_opt("tag")?; @@ -43,7 +45,7 @@ pub async fn chamfer(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([-width/2, -length/2], %) /// |> line(endAbsolute = [width/2, -length/2], tag = $edge1) /// |> line(endAbsolute = [width/2, length/2], tag = $edge2) @@ -65,7 +67,7 @@ pub async fn chamfer(exec_state: &mut ExecState, args: Args) -> Result startProfileAt(pos, %) /// |> line(end = [0, scale]) /// |> line(end = [scale, 0]) @@ -84,7 +86,7 @@ pub async fn chamfer(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([10, 10], %) /// |> line(end = [2, 0]) /// |> line(end = [0, 2]) @@ -107,7 +109,7 @@ pub async fn chamfer(exec_state: &mut ExecState, args: Args) -> Result, - length: f64, + length: TyF64, tags: Vec, tag: Option, exec_state: &mut ExecState, @@ -135,7 +137,7 @@ async fn inner_chamfer( ModelingCmd::from(mcmd::Solid3dFilletEdge { edge_id, object_id: solid.id, - radius: LengthUnit(length), + radius: LengthUnit(length.n), tolerance: LengthUnit(DEFAULT_TOLERANCE), // We can let the user set this in the future. cut_type: CutType::Chamfer, }), @@ -145,7 +147,7 @@ async fn inner_chamfer( solid.edge_cuts.push(EdgeCut::Chamfer { id, edge_id, - length, + length: length.clone(), tag: Box::new(tag.clone()), }); diff --git a/rust/kcl-lib/src/std/convert.rs b/rust/kcl-lib/src/std/convert.rs index 42ea01ba1..2788774de 100644 --- a/rust/kcl-lib/src/std/convert.rs +++ b/rust/kcl-lib/src/std/convert.rs @@ -13,7 +13,7 @@ pub async fn int(_exec_state: &mut ExecState, args: Args) -> Result Result { let solids: Vec = args.get_unlabeled_kw_arg_typed("solids", &RuntimeType::Union(vec![RuntimeType::solids()]), exec_state)?; + let tolerance: Option = args.get_kw_arg_opt_typed("tolerance", &RuntimeType::length(), exec_state)?; if solids.len() < 2 { return Err(KclError::UndefinedValue(KclErrorDetails { @@ -21,7 +31,7 @@ pub async fn union(exec_state: &mut ExecState, args: Args) -> Result Result startProfileAt([center[0] - 10, center[1] - 10], %) -/// |> line(endAbsolute = [center[0] + 10, center[1] - 10]) -/// |> line(endAbsolute = [center[0] + 10, center[1] + 10]) -/// |> line(endAbsolute = [center[0] - 10, center[1] + 10]) +/// |> startProfileAt([center[0] - size, center[1] - size], %) +/// |> line(endAbsolute = [center[0] + size, center[1] - size]) +/// |> line(endAbsolute = [center[0] + size, center[1] + size]) +/// |> line(endAbsolute = [center[0] - size, center[1] + size]) /// |> close() /// |> extrude(length = 10) /// } /// -/// part001 = cube([0, 0]) -/// part002 = cube([20, 10]) +/// part001 = cube([0, 0], 10) +/// part002 = cube([7, 3], 5) +/// |> translate(z = 1) /// /// unionedPart = union([part001, part002]) /// ``` @@ -51,18 +62,19 @@ pub async fn union(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([center[0] - 10, center[1] - 10], %) -/// |> line(endAbsolute = [center[0] + 10, center[1] - 10]) -/// |> line(endAbsolute = [center[0] + 10, center[1] + 10]) -/// |> line(endAbsolute = [center[0] - 10, center[1] + 10]) +/// |> startProfileAt([center[0] - size, center[1] - size], %) +/// |> line(endAbsolute = [center[0] + size, center[1] - size]) +/// |> line(endAbsolute = [center[0] + size, center[1] + size]) +/// |> line(endAbsolute = [center[0] - size, center[1] + size]) /// |> close() /// |> extrude(length = 10) /// } /// -/// part001 = cube([0, 0]) -/// part002 = cube([20, 10]) +/// part001 = cube([0, 0], 10) +/// part002 = cube([7, 3], 5) +/// |> translate(z = 1) /// /// // This is the equivalent of: union([part001, part002]) /// unionedPart = part001 + part002 @@ -73,18 +85,19 @@ pub async fn union(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([center[0] - 10, center[1] - 10], %) -/// |> line(endAbsolute = [center[0] + 10, center[1] - 10]) -/// |> line(endAbsolute = [center[0] + 10, center[1] + 10]) -/// |> line(endAbsolute = [center[0] - 10, center[1] + 10]) +/// |> startProfileAt([center[0] - size, center[1] - size], %) +/// |> line(endAbsolute = [center[0] + size, center[1] - size]) +/// |> line(endAbsolute = [center[0] + size, center[1] + size]) +/// |> line(endAbsolute = [center[0] - size, center[1] + size]) /// |> close() /// |> extrude(length = 10) /// } /// -/// part001 = cube([0, 0]) -/// part002 = cube([20, 10]) +/// part001 = cube([0, 0], 10) +/// part002 = cube([7, 3], 5) +/// |> translate(z = 1) /// /// // This is the equivalent of: union([part001, part002]) /// // Programmers will understand `|` as a union operation, but mechanical engineers @@ -96,31 +109,64 @@ pub async fn union(exec_state: &mut ExecState, args: Args) -> Result, + tolerance: Option, exec_state: &mut ExecState, args: Args, ) -> Result, KclError> { + let solid_out_id = exec_state.next_uuid(); + + let mut solid = solids[0].clone(); + solid.id = solid_out_id; + let mut new_solids = vec![solid.clone()]; + + if args.ctx.no_engine_commands().await { + return Ok(new_solids); + } + // Flush the fillets for the solids. args.flush_batch_for_solids(exec_state, &solids).await?; - // TODO: call the engine union operation. - // TODO: figure out all the shit after for the faces etc. + let result = args + .send_modeling_cmd( + solid_out_id, + ModelingCmd::from(mcmd::BooleanUnion { + solid_ids: solids.iter().map(|s| s.id).collect(), + tolerance: LengthUnit(tolerance.map(|t| t.n).unwrap_or(DEFAULT_TOLERANCE)), + }), + ) + .await?; - // For now just return the first solid. - // Til we have a proper implementation. - Ok(vec![solids[0].clone()]) + let OkWebSocketResponseData::Modeling { + modeling_response: OkModelingCmdResponse::BooleanUnion(BooleanUnion { extra_solid_ids }), + } = result + else { + return Err(KclError::Internal(KclErrorDetails { + message: "Failed to get the result of the union operation.".to_string(), + source_ranges: vec![args.source_range], + })); + }; + + // If we have more solids, set those as well. + if !extra_solid_ids.is_empty() { + solid.id = extra_solid_ids[0]; + new_solids.push(solid.clone()); + } + + Ok(new_solids) } /// Intersect returns the shared volume between multiple solids, preserving only /// overlapping regions. pub async fn intersect(exec_state: &mut ExecState, args: Args) -> Result { let solids: Vec = args.get_unlabeled_kw_arg_typed("solids", &RuntimeType::solids(), exec_state)?; + let tolerance: Option = args.get_kw_arg_opt_typed("tolerance", &RuntimeType::length(), exec_state)?; if solids.len() < 2 { return Err(KclError::UndefinedValue(KclErrorDetails { @@ -129,7 +175,7 @@ pub async fn intersect(exec_state: &mut ExecState, args: Args) -> Result Result startProfileAt([center[0] - 10, center[1] - 10], %) -/// |> line(endAbsolute = [center[0] + 10, center[1] - 10]) -/// |> line(endAbsolute = [center[0] + 10, center[1] + 10]) -/// |> line(endAbsolute = [center[0] - 10, center[1] + 10]) +/// |> startProfileAt([center[0] - size, center[1] - size], %) +/// |> line(endAbsolute = [center[0] + size, center[1] - size]) +/// |> line(endAbsolute = [center[0] + size, center[1] + size]) +/// |> line(endAbsolute = [center[0] - size, center[1] + size]) /// |> close() /// |> extrude(length = 10) /// } /// -/// part001 = cube([0, 0]) -/// part002 = cube([8, 8]) +/// part001 = cube([0, 0], 10) +/// part002 = cube([7, 3], 5) +/// |> translate(z = 1) /// /// intersectedPart = intersect([part001, part002]) /// ``` @@ -165,18 +212,19 @@ pub async fn intersect(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([center[0] - 10, center[1] - 10], %) -/// |> line(endAbsolute = [center[0] + 10, center[1] - 10]) -/// |> line(endAbsolute = [center[0] + 10, center[1] + 10]) -/// |> line(endAbsolute = [center[0] - 10, center[1] + 10]) +/// |> startProfileAt([center[0] - size, center[1] - size], %) +/// |> line(endAbsolute = [center[0] + size, center[1] - size]) +/// |> line(endAbsolute = [center[0] + size, center[1] + size]) +/// |> line(endAbsolute = [center[0] - size, center[1] + size]) /// |> close() /// |> extrude(length = 10) /// } /// -/// part001 = cube([0, 0]) -/// part002 = cube([8, 8]) +/// part001 = cube([0, 0], 10) +/// part002 = cube([7, 3], 5) +/// |> translate(z = 1) /// /// // This is the equivalent of: intersect([part001, part002]) /// intersectedPart = part001 & part002 @@ -186,25 +234,57 @@ pub async fn intersect(exec_state: &mut ExecState, args: Args) -> Result, + tolerance: Option, exec_state: &mut ExecState, args: Args, ) -> Result, KclError> { + let solid_out_id = exec_state.next_uuid(); + + let mut solid = solids[0].clone(); + solid.id = solid_out_id; + let mut new_solids = vec![solid.clone()]; + + if args.ctx.no_engine_commands().await { + return Ok(new_solids); + } + // Flush the fillets for the solids. args.flush_batch_for_solids(exec_state, &solids).await?; - // TODO: call the engine union operation. - // TODO: figure out all the shit after for the faces etc. + let result = args + .send_modeling_cmd( + solid_out_id, + ModelingCmd::from(mcmd::BooleanIntersection { + solid_ids: solids.iter().map(|s| s.id).collect(), + tolerance: LengthUnit(tolerance.map(|t| t.n).unwrap_or(DEFAULT_TOLERANCE)), + }), + ) + .await?; - // For now just return the first solid. - // Til we have a proper implementation. - Ok(vec![solids[0].clone()]) + let OkWebSocketResponseData::Modeling { + modeling_response: OkModelingCmdResponse::BooleanIntersection(BooleanIntersection { extra_solid_ids }), + } = result + else { + return Err(KclError::Internal(KclErrorDetails { + message: "Failed to get the result of the intersection operation.".to_string(), + source_ranges: vec![args.source_range], + })); + }; + + // If we have more solids, set those as well. + if !extra_solid_ids.is_empty() { + solid.id = extra_solid_ids[0]; + new_solids.push(solid.clone()); + } + + Ok(new_solids) } /// Subtract removes tool solids from base solids, leaving the remaining material. @@ -212,7 +292,23 @@ pub async fn subtract(exec_state: &mut ExecState, args: Args) -> Result = args.get_unlabeled_kw_arg_typed("solids", &RuntimeType::solids(), exec_state)?; let tools: Vec = args.get_kw_arg_typed("tools", &RuntimeType::solids(), exec_state)?; - let solids = inner_subtract(solids, tools, exec_state, args).await?; + if solids.len() > 1 { + return Err(KclError::UndefinedValue(KclErrorDetails { + message: "Only one solid is allowed for a subtract operation, currently.".to_string(), + source_ranges: vec![args.source_range], + })); + } + + if tools.len() > 1 { + return Err(KclError::UndefinedValue(KclErrorDetails { + message: "Only one tool is allowed for a subtract operation, currently.".to_string(), + source_ranges: vec![args.source_range], + })); + } + + let tolerance: Option = args.get_kw_arg_opt_typed("tolerance", &RuntimeType::length(), exec_state)?; + + let solids = inner_subtract(solids, tools, tolerance, exec_state, args).await?; Ok(solids.into()) } @@ -227,20 +323,19 @@ pub async fn subtract(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([center[0] - 10, center[1] - 10], %) -/// |> line(endAbsolute = [center[0] + 10, center[1] - 10]) -/// |> line(endAbsolute = [center[0] + 10, center[1] + 10]) -/// |> line(endAbsolute = [center[0] - 10, center[1] + 10]) +/// |> startProfileAt([center[0] - size, center[1] - size], %) +/// |> line(endAbsolute = [center[0] + size, center[1] - size]) +/// |> line(endAbsolute = [center[0] + size, center[1] + size]) +/// |> line(endAbsolute = [center[0] - size, center[1] + size]) /// |> close() /// |> extrude(length = 10) /// } /// -/// part001 = cube([0, 0]) -/// part002 = startSketchOn('XY') -/// |> circle(center = [0, 0], radius = 2) -/// |> extrude(length = 10) +/// part001 = cube([0, 0], 10) +/// part002 = cube([7, 3], 5) +/// |> translate(z = 1) /// /// subtractedPart = subtract([part001], tools=[part002]) /// ``` @@ -250,20 +345,19 @@ pub async fn subtract(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([center[0] - 10, center[1] - 10], %) -/// |> line(endAbsolute = [center[0] + 10, center[1] - 10]) -/// |> line(endAbsolute = [center[0] + 10, center[1] + 10]) -/// |> line(endAbsolute = [center[0] - 10, center[1] + 10]) +/// |> startProfileAt([center[0] - size, center[1] - size], %) +/// |> line(endAbsolute = [center[0] + size, center[1] - size]) +/// |> line(endAbsolute = [center[0] + size, center[1] + size]) +/// |> line(endAbsolute = [center[0] - size, center[1] + size]) /// |> close() /// |> extrude(length = 10) /// } /// -/// part001 = cube([0, 0]) -/// part002 = startSketchOn('XY') -/// |> circle(center = [0, 0], radius = 2) -/// |> extrude(length = 10) +/// part001 = cube([0, 0], 10) +/// part002 = cube([7, 3], 5) +/// |> translate(z = 1) /// /// // This is the equivalent of: subtract([part001], tools=[part002]) /// subtractedPart = part001 - part002 @@ -273,26 +367,59 @@ pub async fn subtract(exec_state: &mut ExecState, args: Args) -> Result, tools: Vec, + tolerance: Option, exec_state: &mut ExecState, args: Args, ) -> Result, KclError> { + let solid_out_id = exec_state.next_uuid(); + + let mut solid = solids[0].clone(); + solid.id = solid_out_id; + let mut new_solids = vec![solid.clone()]; + + if args.ctx.no_engine_commands().await { + return Ok(new_solids); + } + // Flush the fillets for the solids and the tools. let combined_solids = solids.iter().chain(tools.iter()).cloned().collect::>(); args.flush_batch_for_solids(exec_state, &combined_solids).await?; - // TODO: call the engine union operation. - // TODO: figure out all the shit after for the faces etc. + let result = args + .send_modeling_cmd( + solid_out_id, + ModelingCmd::from(mcmd::BooleanSubtract { + target_ids: solids.iter().map(|s| s.id).collect(), + tool_ids: tools.iter().map(|s| s.id).collect(), + tolerance: LengthUnit(tolerance.map(|t| t.n).unwrap_or(DEFAULT_TOLERANCE)), + }), + ) + .await?; - // For now just return the first solid. - // Til we have a proper implementation. - Ok(vec![solids[0].clone()]) + let OkWebSocketResponseData::Modeling { + modeling_response: OkModelingCmdResponse::BooleanSubtract(BooleanSubtract { extra_solid_ids }), + } = result + else { + return Err(KclError::Internal(KclErrorDetails { + message: "Failed to get the result of the subtract operation.".to_string(), + source_ranges: vec![args.source_range], + })); + }; + + // If we have more solids, set those as well. + if !extra_solid_ids.is_empty() { + solid.id = extra_solid_ids[0]; + new_solids.push(solid.clone()); + } + + Ok(new_solids) } diff --git a/rust/kcl-lib/src/std/edge.rs b/rust/kcl-lib/src/std/edge.rs index 103fa3fc0..41ce68b67 100644 --- a/rust/kcl-lib/src/std/edge.rs +++ b/rust/kcl-lib/src/std/edge.rs @@ -29,19 +29,20 @@ pub async fn get_opposite_edge(exec_state: &mut ExecState, args: Args) -> Result /// exampleSketch = startSketchOn('XZ') /// |> startProfileAt([0, 0], %) /// |> line(end = [10, 0]) -/// |> angledLine({ -/// angle = 60, -/// length = 10, -/// }, %) -/// |> angledLine({ -/// angle = 120, -/// length = 10, -/// }, %) +/// |> angledLine( +/// angle = 60, +/// length = 10, +/// ) +/// |> angledLine( +/// angle = 120, +/// length = 10, +/// ) /// |> line(end = [-10, 0]) -/// |> angledLine({ -/// angle = 240, -/// length = 10, -/// }, %, $referenceEdge) +/// |> angledLine( +/// angle = 240, +/// length = 10, +/// tag = $referenceEdge, +/// ) /// |> close() /// /// example = extrude(exampleSketch, length = 5) @@ -102,19 +103,20 @@ pub async fn get_next_adjacent_edge(exec_state: &mut ExecState, args: Args) -> R /// exampleSketch = startSketchOn('XZ') /// |> startProfileAt([0, 0], %) /// |> line(end = [10, 0]) -/// |> angledLine({ -/// angle = 60, -/// length = 10, -/// }, %) -/// |> angledLine({ -/// angle = 120, -/// length = 10, -/// }, %) +/// |> angledLine( +/// angle = 60, +/// length = 10, +/// ) +/// |> angledLine( +/// angle = 120, +/// length = 10, +/// ) /// |> line(end = [-10, 0]) -/// |> angledLine({ -/// angle = 240, -/// length = 10, -/// }, %, $referenceEdge) +/// |> angledLine( +/// angle = 240, +/// length = 10, +/// tag = $referenceEdge, +/// ) /// |> close() /// /// example = extrude(exampleSketch, length = 5) @@ -188,19 +190,20 @@ pub async fn get_previous_adjacent_edge(exec_state: &mut ExecState, args: Args) /// exampleSketch = startSketchOn('XZ') /// |> startProfileAt([0, 0], %) /// |> line(end = [10, 0]) -/// |> angledLine({ -/// angle = 60, -/// length = 10, -/// }, %) -/// |> angledLine({ -/// angle = 120, -/// length = 10, -/// }, %) +/// |> angledLine( +/// angle = 60, +/// length = 10, +/// ) +/// |> angledLine( +/// angle = 120, +/// length = 10, +/// ) /// |> line(end = [-10, 0]) -/// |> angledLine({ -/// angle = 240, -/// length = 10, -/// }, %, $referenceEdge) +/// |> angledLine( +/// angle = 240, +/// length = 10, +/// tag = $referenceEdge, +/// ) /// |> close() /// /// example = extrude(exampleSketch, length = 5) diff --git a/rust/kcl-lib/src/std/extrude.rs b/rust/kcl-lib/src/std/extrude.rs index 4d9e36843..5f314b7c9 100644 --- a/rust/kcl-lib/src/std/extrude.rs +++ b/rust/kcl-lib/src/std/extrude.rs @@ -9,7 +9,7 @@ use kcmc::{ length_unit::LengthUnit, ok_response::OkModelingCmdResponse, output::ExtrusionFaceInfo, - shared::ExtrusionFaceCapType, + shared::{ExtrusionFaceCapType, Opposite}, websocket::{ModelingCmdReq, OkWebSocketResponseData}, ModelingCmd, }; @@ -26,14 +26,29 @@ use crate::{ std::Args, }; +use super::args::TyF64; + /// Extrudes by a given amount. pub async fn extrude(exec_state: &mut ExecState, args: Args) -> Result { let sketches = args.get_unlabeled_kw_arg_typed("sketches", &RuntimeType::sketches(), exec_state)?; - let length = args.get_kw_arg("length")?; + let length: TyF64 = args.get_kw_arg_typed("length", &RuntimeType::length(), exec_state)?; + let symmetric = args.get_kw_arg_opt("symmetric")?; + let bidirectional_length: Option = + args.get_kw_arg_opt_typed("bidirectionalLength", &RuntimeType::length(), exec_state)?; let tag_start = args.get_kw_arg_opt("tagStart")?; let tag_end = args.get_kw_arg_opt("tagEnd")?; - let result = inner_extrude(sketches, length, tag_start, tag_end, exec_state, args).await?; + let result = inner_extrude( + sketches, + length.n, + symmetric, + bidirectional_length.map(|t| t.n), + tag_start, + tag_end, + exec_state, + args, + ) + .await?; Ok(result.into()) } @@ -87,6 +102,50 @@ pub async fn extrude(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([-10, 0], %) +/// |> arc({ +/// angleStart = 120, +/// angleEnd = -60, +/// radius = 5, +/// }, %) +/// |> line(end = [10, 0]) +/// |> line(end = [5, 0]) +/// |> bezierCurve({ +/// control1 = [-3, 0], +/// control2 = [2, 10], +/// to = [-5, 10], +/// }, %) +/// |> line(end = [-4, 10]) +/// |> line(end = [-5, -2]) +/// |> close() +/// +/// example = extrude(exampleSketch, length = 20, symmetric = true) +/// ``` +/// +/// ```no_run +/// exampleSketch = startSketchOn('XZ') +/// |> startProfileAt([-10, 0], %) +/// |> arc({ +/// angleStart = 120, +/// angleEnd = -60, +/// radius = 5, +/// }, %) +/// |> line(end = [10, 0]) +/// |> line(end = [5, 0]) +/// |> bezierCurve({ +/// control1 = [-3, 0], +/// control2 = [2, 10], +/// to = [-5, 10], +/// }, %) +/// |> line(end = [-4, 10]) +/// |> line(end = [-5, -2]) +/// |> close() +/// +/// example = extrude(exampleSketch, length = 10, bidirectionalLength = 50) +/// ``` #[stdlib { name = "extrude", feature_tree_operation = true, @@ -95,6 +154,9 @@ pub async fn extrude(exec_state: &mut ExecState, args: Args) -> Result Result, length: f64, + symmetric: Option, + bidirectional_length: Option, tag_start: Option, tag_end: Option, exec_state: &mut ExecState, @@ -110,6 +174,25 @@ async fn inner_extrude( ) -> Result, KclError> { // Extrude the element(s). let mut solids = Vec::new(); + + if symmetric.unwrap_or(false) && bidirectional_length.is_some() { + return Err(KclError::Semantic(KclErrorDetails { + source_ranges: vec![args.source_range], + message: "You cannot give both `symmetric` and `bidirectional` params, you have to choose one or the other" + .to_owned(), + })); + } + + let bidirection = bidirectional_length.map(LengthUnit); + + let opposite = match (symmetric, bidirection) { + (Some(true), _) => Opposite::Symmetric, + (None, None) => Opposite::None, + (Some(false), None) => Opposite::None, + (None, Some(length)) => Opposite::Other(length), + (Some(false), Some(length)) => Opposite::Other(length), + }; + for sketch in &sketches { let id = exec_state.next_uuid(); args.batch_modeling_cmds(&sketch.build_sketch_mode_cmds( @@ -120,6 +203,7 @@ async fn inner_extrude( target: sketch.id.into(), distance: LengthUnit(length), faces: Default::default(), + opposite: opposite.clone(), }), }, )) diff --git a/rust/kcl-lib/src/std/fillet.rs b/rust/kcl-lib/src/std/fillet.rs index c77dbbf1f..aee67a89a 100644 --- a/rust/kcl-lib/src/std/fillet.rs +++ b/rust/kcl-lib/src/std/fillet.rs @@ -8,12 +8,11 @@ use kittycad_modeling_cmds as kcmc; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use super::DEFAULT_TOLERANCE; +use super::{args::TyF64, DEFAULT_TOLERANCE}; use crate::{ errors::{KclError, KclErrorDetails}, execution::{ - types::{PrimitiveType, RuntimeType}, - EdgeCut, ExecState, ExtrudeSurface, FilletSurface, GeoMeta, KclValue, Solid, TagIdentifier, + types::RuntimeType, EdgeCut, ExecState, ExtrudeSurface, FilletSurface, GeoMeta, KclValue, Solid, TagIdentifier, }, parsing::ast::types::TagNode, std::Args, @@ -63,16 +62,16 @@ pub(super) fn validate_unique(tags: &[(T, SourceRange)] /// Create fillets on tagged paths. pub async fn fillet(exec_state: &mut ExecState, args: Args) -> Result { - let solid = args.get_unlabeled_kw_arg_typed("solid", &RuntimeType::Primitive(PrimitiveType::Solid), exec_state)?; - let radius = args.get_kw_arg("radius")?; - let tolerance = args.get_kw_arg_opt("tolerance")?; + let solid = args.get_unlabeled_kw_arg_typed("solid", &RuntimeType::solid(), exec_state)?; + let radius: TyF64 = args.get_kw_arg_typed("radius", &RuntimeType::length(), exec_state)?; + let tolerance: Option = args.get_kw_arg_opt_typed("tolerance", &RuntimeType::count(), exec_state)?; let tags = args.kw_arg_array_and_source::("tags")?; let tag = args.get_kw_arg_opt("tag")?; // Run the function. validate_unique(&tags)?; let tags: Vec = tags.into_iter().map(|item| item.0).collect(); - let value = inner_fillet(solid, radius, tags, tolerance, tag, exec_state, args).await?; + let value = inner_fillet(solid, radius, tags, tolerance.map(|t| t.n), tag, exec_state, args).await?; Ok(KclValue::Solid { value }) } @@ -147,7 +146,7 @@ pub async fn fillet(exec_state: &mut ExecState, args: Args) -> Result, - radius: f64, + radius: TyF64, tags: Vec, tolerance: Option, tag: Option, @@ -164,7 +163,7 @@ async fn inner_fillet( ModelingCmd::from(mcmd::Solid3dFilletEdge { edge_id, object_id: solid.id, - radius: LengthUnit(radius), + radius: LengthUnit(radius.n), tolerance: LengthUnit(tolerance.unwrap_or(DEFAULT_TOLERANCE)), cut_type: CutType::Fillet, }), @@ -174,7 +173,7 @@ async fn inner_fillet( solid.edge_cuts.push(EdgeCut::Fillet { id, edge_id, - radius, + radius: radius.clone(), tag: Box::new(tag.clone()), }); diff --git a/rust/kcl-lib/src/std/helix.rs b/rust/kcl-lib/src/std/helix.rs index 6090b7a1b..ba86be6ed 100644 --- a/rust/kcl-lib/src/std/helix.rs +++ b/rust/kcl-lib/src/std/helix.rs @@ -13,12 +13,14 @@ use crate::{ std::{axis_or_reference::Axis3dOrEdgeReference, Args}, }; +use super::args::TyF64; + /// Create a helix. pub async fn helix(exec_state: &mut ExecState, args: Args) -> Result { - let angle_start = args.get_kw_arg("angleStart")?; - let revolutions = args.get_kw_arg("revolutions")?; + let angle_start: TyF64 = args.get_kw_arg_typed("angleStart", &RuntimeType::angle(), exec_state)?; + let revolutions: TyF64 = args.get_kw_arg_typed("revolutions", &RuntimeType::count(), exec_state)?; let ccw = args.get_kw_arg_opt("ccw")?; - let radius = args.get_kw_arg_opt("radius")?; + let radius: Option = args.get_kw_arg_opt_typed("radius", &RuntimeType::length(), exec_state)?; let axis: Option = args.get_kw_arg_opt_typed( "axis", &RuntimeType::Union(vec![ @@ -27,8 +29,8 @@ pub async fn helix(exec_state: &mut ExecState, args: Args) -> Result = args.get_kw_arg_opt_typed("length", &RuntimeType::length(), exec_state)?; + let cylinder = args.get_kw_arg_opt_typed("cylinder", &RuntimeType::solid(), exec_state)?; // Make sure we have a radius if we don't have a cylinder. if radius.is_none() && cylinder.is_none() { @@ -79,12 +81,12 @@ pub async fn helix(exec_state: &mut ExecState, args: Args) -> Result, - /// The units of the input data. This is very important for correct scaling and when - /// calculating physics properties like mass, etc. - /// Defaults to millimeters. - units: UnitLength, - }, - /// The PLY Polygon File Format. - #[serde(rename = "ply")] - Ply { - /// Co-ordinate system of input data. - /// Defaults to the [KittyCAD co-ordinate system. - coords: Option, - /// The units of the input data. This is very important for correct scaling and when - /// calculating physics properties like mass, etc. - /// Defaults to millimeters. - units: UnitLength, - }, - /// SolidWorks part (SLDPRT) format. - #[serde(rename = "sldprt")] - Sldprt {}, - /// ISO 10303-21 (STEP) format. - #[serde(rename = "step")] - Step {}, - /// *ST**ereo**L**ithography format. - #[serde(rename = "stl")] - Stl { - /// Co-ordinate system of input data. - /// Defaults to the [KittyCAD co-ordinate system. - coords: Option, - /// The units of the input data. This is very important for correct scaling and when - /// calculating physics properties like mass, etc. - /// Defaults to millimeters. - units: UnitLength, - }, -} - -impl From for InputFormat3d { - fn from(format: ImportFormat) -> Self { - match format { - ImportFormat::Fbx {} => InputFormat3d::Fbx(Default::default()), - ImportFormat::Gltf {} => InputFormat3d::Gltf(Default::default()), - ImportFormat::Obj { coords, units } => InputFormat3d::Obj(kcmc::format::obj::import::Options { - coords: coords.unwrap_or(ZOO_COORD_SYSTEM), - units, - }), - ImportFormat::Ply { coords, units } => InputFormat3d::Ply(kcmc::format::ply::import::Options { - coords: coords.unwrap_or(ZOO_COORD_SYSTEM), - units, - }), - ImportFormat::Sldprt {} => InputFormat3d::Sldprt(kcmc::format::sldprt::import::Options { - split_closed_faces: false, - }), - ImportFormat::Step {} => InputFormat3d::Step(kcmc::format::step::import::Options { - split_closed_faces: false, - }), - ImportFormat::Stl { coords, units } => InputFormat3d::Stl(kcmc::format::stl::import::Options { - coords: coords.unwrap_or(ZOO_COORD_SYSTEM), - units, - }), - } - } -} - -/// Import a CAD file. -/// For formats lacking unit data (STL, OBJ, PLY), the default import unit is millimeters. -/// Otherwise you can specify the unit by passing in the options parameter. -/// If you import a gltf file, we will try to find the bin file and import it as well. -/// -/// Import paths are relative to the current project directory. This only works in the desktop app -/// not in browser. -pub async fn import(exec_state: &mut ExecState, args: Args) -> Result { - let (file_path, options): (String, Option) = args.get_import_data()?; - - let imported_geometry = inner_import(file_path, options, exec_state, args).await?; - Ok(KclValue::ImportedGeometry(imported_geometry)) -} - -/// Import a CAD file. -/// -/// **DEPRECATED** Prefer to use import statements. -/// -/// For formats lacking unit data (such as STL, OBJ, or PLY files), the default -/// unit of measurement is millimeters. Alternatively you may specify the unit -/// by passing your desired measurement unit in the options parameter. When -/// importing a GLTF file, the bin file will be imported as well. Import paths -/// are relative to the current project directory. -/// -/// Note: The import command currently only works when using the native -/// Design Studio. -/// -/// ```no_run -/// model = import("tests/inputs/cube.obj") -/// ``` -/// -/// ```no_run -/// model = import("tests/inputs/cube.obj", {format: "obj", units: "m"}) -/// ``` -/// -/// ```no_run -/// model = import("tests/inputs/cube.gltf") -/// ``` -/// -/// ```no_run -/// model = import("tests/inputs/cube.sldprt") -/// ``` -/// -/// ```no_run -/// model = import("tests/inputs/cube.step") -/// ``` -/// -/// ```no_run -/// import height, buildSketch from 'common.kcl' -/// -/// plane = 'XZ' -/// margin = 2 -/// s1 = buildSketch(plane, [0, 0]) -/// s2 = buildSketch(plane, [0, height() + margin]) -/// ``` -#[stdlib { - name = "import", - feature_tree_operation = true, - deprecated = true, - tags = [], -}] -async fn inner_import( - file_path: String, - options: Option, - exec_state: &mut ExecState, - args: Args, -) -> Result { - if file_path.is_empty() { - return Err(KclError::Semantic(KclErrorDetails { - message: "No file path was provided.".to_string(), - source_ranges: vec![args.source_range], - })); - } - - let format = options.map(InputFormat3d::from); - send_import_to_engine( - import_foreign( - std::path::Path::new(&file_path), - format, - exec_state, - &args.ctx, - args.source_range, - ) - .await?, - &args.ctx, - ) - .await -} diff --git a/rust/kcl-lib/src/std/loft.rs b/rust/kcl-lib/src/std/loft.rs index bb8e48db9..8734b0eef 100644 --- a/rust/kcl-lib/src/std/loft.rs +++ b/rust/kcl-lib/src/std/loft.rs @@ -7,7 +7,7 @@ use kcl_derive_docs::stdlib; use kcmc::{each_cmd as mcmd, length_unit::LengthUnit, ModelingCmd}; use kittycad_modeling_cmds as kcmc; -use super::DEFAULT_TOLERANCE; +use super::{args::TyF64, DEFAULT_TOLERANCE}; use crate::{ errors::{KclError, KclErrorDetails}, execution::{types::RuntimeType, ExecState, KclValue, Sketch, Solid}, @@ -30,7 +30,7 @@ pub async fn loft(exec_state: &mut ExecState, args: Args) -> Result = args.get_kw_arg_opt("baseCurveIndex")?; // Tolerance for the loft operation. - let tolerance: Option = args.get_kw_arg_opt("tolerance")?; + let tolerance: Option = args.get_kw_arg_opt_typed("tolerance", &RuntimeType::count(), exec_state)?; let tag_start = args.get_kw_arg_opt("tagStart")?; let tag_end = args.get_kw_arg_opt("tagEnd")?; @@ -39,7 +39,7 @@ pub async fn loft(exec_state: &mut ExecState, args: Args) -> Result Result { - let n = args.get_unlabeled_kw_arg("number to divide")?; - let d = args.get_kw_arg("divisor")?; +pub async fn rem(exec_state: &mut ExecState, args: Args) -> Result { + let n: TyF64 = args.get_unlabeled_kw_arg_typed("number to divide", &RuntimeType::num_any(), exec_state)?; + let d: TyF64 = args.get_kw_arg_typed("divisor", &RuntimeType::num_any(), exec_state)?; + + let (n, d, ty) = NumericType::combine_div(n, d); + if *types::CHECK_NUMERIC_TYPES && ty == NumericType::Unknown { + // TODO suggest how to fix this + exec_state.warn(CompilationError::err( + args.source_range, + "Remainder of numbers which have unknown or incompatible units.", + )); + } let remainder = inner_rem(n, d); - Ok(args.make_user_val_from_f64(remainder)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(remainder, ty))) } /// Compute the remainder after dividing `num` by `div`. @@ -46,28 +58,28 @@ fn inner_rem(num: f64, divisor: f64) -> f64 { } /// Compute the cosine of a number (in radians). -pub async fn cos(_exec_state: &mut ExecState, args: Args) -> Result { - let num: f64 = args.get_unlabeled_kw_arg("input")?; - Ok(args.make_user_val_from_f64_with_type(TyF64::count(num.cos()))) +pub async fn cos(exec_state: &mut ExecState, args: Args) -> Result { + let num: TyF64 = args.get_unlabeled_kw_arg_typed("input", &RuntimeType::radians(), exec_state)?; + Ok(args.make_user_val_from_f64_with_type(TyF64::count(num.n.cos()))) } /// Compute the sine of a number (in radians). -pub async fn sin(_exec_state: &mut ExecState, args: Args) -> Result { - let num: f64 = args.get_unlabeled_kw_arg("input")?; - Ok(args.make_user_val_from_f64_with_type(TyF64::count(num.sin()))) +pub async fn sin(exec_state: &mut ExecState, args: Args) -> Result { + let num: TyF64 = args.get_unlabeled_kw_arg_typed("input", &RuntimeType::radians(), exec_state)?; + Ok(args.make_user_val_from_f64_with_type(TyF64::count(num.n.sin()))) } /// Compute the tangent of a number (in radians). -pub async fn tan(_exec_state: &mut ExecState, args: Args) -> Result { - let num: f64 = args.get_unlabeled_kw_arg("input")?; - Ok(args.make_user_val_from_f64_with_type(TyF64::count(num.tan()))) +pub async fn tan(exec_state: &mut ExecState, args: Args) -> Result { + let num: TyF64 = args.get_unlabeled_kw_arg_typed("input", &RuntimeType::radians(), exec_state)?; + Ok(args.make_user_val_from_f64_with_type(TyF64::count(num.n.tan()))) } /// Return the value of `pi`. Archimedes’ constant (π). pub async fn pi(_exec_state: &mut ExecState, args: Args) -> Result { let result = inner_pi()?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::count(result))) } /// Return the value of `pi`. Archimedes’ constant (π). @@ -92,11 +104,11 @@ fn inner_pi() -> Result { } /// Compute the square root of a number. -pub async fn sqrt(_exec_state: &mut ExecState, args: Args) -> Result { - let num = args.get_number()?; - let result = inner_sqrt(num)?; +pub async fn sqrt(exec_state: &mut ExecState, args: Args) -> Result { + let num = args.get_number_with_type()?; + let result = inner_sqrt(num.n)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, exec_state.current_default_units()))) } /// Compute the square root of a number. @@ -104,10 +116,10 @@ pub async fn sqrt(_exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = 50, /// length = sqrt(2500), -/// }, %) +/// ) /// |> yLine(endAbsolute = 0) /// |> close() /// @@ -123,10 +135,10 @@ fn inner_sqrt(num: f64) -> Result { /// Compute the absolute value of a number. pub async fn abs(_exec_state: &mut ExecState, args: Args) -> Result { - let num = args.get_number()?; - let result = inner_abs(num)?; + let num = args.get_number_with_type()?; + let result = inner_abs(num.n)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(num.map_value(result))) } /// Compute the absolute value of a number. @@ -137,15 +149,15 @@ pub async fn abs(_exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) /// |> line(end = [8, 0]) -/// |> angledLine({ +/// |> angledLine( /// angle = abs(myAngle), /// length = 5, -/// }, %) +/// ) /// |> line(end = [-5, 0]) -/// |> angledLine({ +/// |> angledLine( /// angle = myAngle, /// length = 5, -/// }, %) +/// ) /// |> close() /// /// baseExtrusion = extrude(sketch001, length = 5) @@ -160,10 +172,10 @@ fn inner_abs(num: f64) -> Result { /// Round a number to the nearest integer. pub async fn round(_exec_state: &mut ExecState, args: Args) -> Result { - let num = args.get_number()?; - let result = inner_round(num)?; + let num = args.get_number_with_type()?; + let result = inner_round(num.n)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(num.map_value(result))) } /// Round a number to the nearest integer. @@ -188,10 +200,10 @@ fn inner_round(num: f64) -> Result { /// Compute the largest integer less than or equal to a number. pub async fn floor(_exec_state: &mut ExecState, args: Args) -> Result { - let num = args.get_number()?; - let result = inner_floor(num)?; + let num = args.get_number_with_type()?; + let result = inner_floor(num.n)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(num.map_value(result))) } /// Compute the largest integer less than or equal to a number. @@ -216,10 +228,10 @@ fn inner_floor(num: f64) -> Result { /// Compute the smallest integer greater than or equal to a number. pub async fn ceil(_exec_state: &mut ExecState, args: Args) -> Result { - let num = args.get_number()?; - let result = inner_ceil(num)?; + let num = args.get_number_with_type()?; + let result = inner_ceil(num.n)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(num.map_value(result))) } /// Compute the smallest integer greater than or equal to a number. @@ -243,11 +255,19 @@ fn inner_ceil(num: f64) -> Result { } /// Compute the minimum of the given arguments. -pub async fn min(_exec_state: &mut ExecState, args: Args) -> Result { - let nums = args.get_number_array()?; +pub async fn min(exec_state: &mut ExecState, args: Args) -> Result { + let nums = args.get_number_array_with_types()?; + let (nums, ty) = NumericType::combine_eq_array(&nums); + if *types::CHECK_NUMERIC_TYPES && ty == NumericType::Unknown { + // TODO suggest how to fix this + exec_state.warn(CompilationError::err( + args.source_range, + "Calling `min` on numbers which have unknown or incompatible units.", + )); + } let result = inner_min(nums); - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, ty))) } /// Compute the minimum of the given arguments. @@ -255,10 +275,10 @@ pub async fn min(_exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = 70, /// length = min(15, 31, 4, 13, 22) -/// }, %) +/// ) /// |> line(end = [20, 0]) /// |> close() /// @@ -280,11 +300,19 @@ fn inner_min(args: Vec) -> f64 { } /// Compute the maximum of the given arguments. -pub async fn max(_exec_state: &mut ExecState, args: Args) -> Result { - let nums = args.get_number_array()?; +pub async fn max(exec_state: &mut ExecState, args: Args) -> Result { + let nums = args.get_number_array_with_types()?; + let (nums, ty) = NumericType::combine_eq_array(&nums); + if *types::CHECK_NUMERIC_TYPES && ty == NumericType::Unknown { + // TODO suggest how to fix this + exec_state.warn(CompilationError::err( + args.source_range, + "Calling `max` on numbers which have unknown or incompatible units.", + )); + } let result = inner_max(nums); - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, ty))) } /// Compute the maximum of the given arguments. @@ -292,10 +320,10 @@ pub async fn max(_exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = 70, /// length = max(15, 31, 4, 13, 22) -/// }, %) +/// ) /// |> line(end = [20, 0]) /// |> close() /// @@ -317,8 +345,8 @@ fn inner_max(args: Vec) -> f64 { } /// Compute the number to a power. -pub async fn pow(_exec_state: &mut ExecState, args: Args) -> Result { - let nums = args.get_number_array()?; +pub async fn pow(exec_state: &mut ExecState, args: Args) -> Result { + let nums = args.get_number_array_with_types()?; if nums.len() > 2 { return Err(KclError::Type(KclErrorDetails { message: format!("expected 2 arguments, got {}", nums.len()), @@ -333,9 +361,9 @@ pub async fn pow(_exec_state: &mut ExecState, args: Args) -> Result Result startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = 50, /// length = pow(5, 2), -/// }, %) +/// ) /// |> yLine(endAbsolute = 0) /// |> close() /// @@ -362,10 +390,10 @@ fn inner_pow(num: f64, pow: f64) -> Result { /// Compute the arccosine of a number (in radians). pub async fn acos(_exec_state: &mut ExecState, args: Args) -> Result { - let num = args.get_number()?; - let result = inner_acos(num)?; + let num = args.get_number_with_type()?; + let result = inner_acos(num.n)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, NumericType::radians()))) } /// Compute the arccosine of a number (in radians). @@ -373,10 +401,10 @@ pub async fn acos(_exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = toDegrees(acos(0.5)), /// length = 10, -/// }, %) +/// ) /// |> line(end = [5, 0]) /// |> line(endAbsolute = [12, 0]) /// |> close() @@ -393,10 +421,10 @@ fn inner_acos(num: f64) -> Result { /// Compute the arcsine of a number (in radians). pub async fn asin(_exec_state: &mut ExecState, args: Args) -> Result { - let num = args.get_number()?; - let result = inner_asin(num)?; + let num = args.get_number_with_type()?; + let result = inner_asin(num.n)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, NumericType::radians()))) } /// Compute the arcsine of a number (in radians). @@ -404,10 +432,10 @@ pub async fn asin(_exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = toDegrees(asin(0.5)), /// length = 20, -/// }, %) +/// ) /// |> yLine(endAbsolute = 0) /// |> close() /// @@ -423,10 +451,10 @@ fn inner_asin(num: f64) -> Result { /// Compute the arctangent of a number (in radians). pub async fn atan(_exec_state: &mut ExecState, args: Args) -> Result { - let num = args.get_number()?; - let result = inner_atan(num)?; + let num = args.get_number_with_type()?; + let result = inner_atan(num.n)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, NumericType::radians()))) } /// Compute the arctangent of a number (in radians). @@ -434,10 +462,10 @@ pub async fn atan(_exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = toDegrees(atan(1.25)), /// length = 20, -/// }, %) +/// ) /// |> yLine(endAbsolute = 0) /// |> close() /// @@ -452,22 +480,24 @@ fn inner_atan(num: f64) -> Result { } /// Compute the four quadrant arctangent of Y and X (in radians). -pub async fn atan2(_exec_state: &mut ExecState, args: Args) -> Result { - let (y, x) = FromArgs::from_args(&args, 0)?; +pub async fn atan2(exec_state: &mut ExecState, args: Args) -> Result { + let y = args.get_kw_arg_typed("y", &RuntimeType::length(), exec_state)?; + let x = args.get_kw_arg_typed("x", &RuntimeType::length(), exec_state)?; + let (y, x, _) = NumericType::combine_eq(y, x); let result = inner_atan2(y, x)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, NumericType::radians()))) } /// Compute the four quadrant arctangent of Y and X (in radians). /// /// ```no_run -/// sketch001 = startSketchOn('XZ') +/// sketch001 = startSketchOn(XZ) /// |> startProfileAt([0, 0], %) -/// |> angledLine({ -/// angle = toDegrees(atan2(1.25, 2)), +/// |> angledLine( +/// angle = toDegrees(atan2(y = 1.25, x = 2)), /// length = 20, -/// }, %) +/// ) /// |> yLine(endAbsolute = 0) /// |> close() /// @@ -476,6 +506,12 @@ pub async fn atan2(_exec_state: &mut ExecState, args: Args) -> Result Result { Ok(y.atan2(x)) @@ -486,8 +522,8 @@ fn inner_atan2(y: f64, x: f64) -> Result { /// The result might not be correctly rounded owing to implementation /// details; `log2()` can produce more accurate results for base 2, /// and `log10()` can produce more accurate results for base 10. -pub async fn log(_exec_state: &mut ExecState, args: Args) -> Result { - let nums = args.get_number_array()?; +pub async fn log(exec_state: &mut ExecState, args: Args) -> Result { + let nums = args.get_number_array_with_types()?; if nums.len() > 2 { return Err(KclError::Type(KclErrorDetails { message: format!("expected 2 arguments, got {}", nums.len()), @@ -501,9 +537,9 @@ pub async fn log(_exec_state: &mut ExecState, args: Args) -> Result Result { } /// Compute the base 2 logarithm of the number. -pub async fn log2(_exec_state: &mut ExecState, args: Args) -> Result { - let num = args.get_number()?; - let result = inner_log2(num)?; +pub async fn log2(exec_state: &mut ExecState, args: Args) -> Result { + let num = args.get_number_with_type()?; + let result = inner_log2(num.n)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, exec_state.current_default_units()))) } /// Compute the base 2 logarithm of the number. @@ -559,11 +595,11 @@ fn inner_log2(num: f64) -> Result { } /// Compute the base 10 logarithm of the number. -pub async fn log10(_exec_state: &mut ExecState, args: Args) -> Result { - let num = args.get_number()?; - let result = inner_log10(num)?; +pub async fn log10(exec_state: &mut ExecState, args: Args) -> Result { + let num = args.get_number_with_type()?; + let result = inner_log10(num.n)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, exec_state.current_default_units()))) } /// Compute the base 10 logarithm of the number. @@ -587,11 +623,11 @@ fn inner_log10(num: f64) -> Result { } /// Compute the natural logarithm of the number. -pub async fn ln(_exec_state: &mut ExecState, args: Args) -> Result { - let num = args.get_number()?; - let result = inner_ln(num)?; +pub async fn ln(exec_state: &mut ExecState, args: Args) -> Result { + let num = args.get_number_with_type()?; + let result = inner_ln(num.n)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, exec_state.current_default_units()))) } /// Compute the natural logarithm of the number. @@ -618,7 +654,7 @@ fn inner_ln(num: f64) -> Result { pub async fn e(_exec_state: &mut ExecState, args: Args) -> Result { let result = inner_e()?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, NumericType::count()))) } /// Return the value of Euler’s number `e`. @@ -628,10 +664,10 @@ pub async fn e(_exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = 30, /// length = 2 * e() ^ 2, -/// }, %) +/// ) /// |> yLine(endAbsolute = 0) /// |> close() /// @@ -650,7 +686,7 @@ fn inner_e() -> Result { pub async fn tau(_exec_state: &mut ExecState, args: Args) -> Result { let result = inner_tau()?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, NumericType::count()))) } /// Return the value of `tau`. The full circle constant (τ). Equal to 2π. @@ -660,10 +696,10 @@ pub async fn tau(_exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = 50, /// length = 10 * tau(), -/// }, %) +/// ) /// |> yLine(endAbsolute = 0) /// |> close() /// @@ -680,10 +716,10 @@ fn inner_tau() -> Result { /// Converts a number from degrees to radians. pub async fn to_radians(_exec_state: &mut ExecState, args: Args) -> Result { - let num = args.get_number()?; - let result = inner_to_radians(num)?; + let num = args.get_number_with_type()?; + let result = inner_to_radians(num.n)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, NumericType::radians()))) } /// Converts a number from degrees to radians. @@ -691,10 +727,10 @@ pub async fn to_radians(_exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = 50, /// length = 70 * cos(toRadians(45)), -/// }, %) +/// ) /// |> yLine(endAbsolute = 0) /// |> close() /// @@ -710,10 +746,10 @@ fn inner_to_radians(num: f64) -> Result { /// Converts a number from radians to degrees. pub async fn to_degrees(_exec_state: &mut ExecState, args: Args) -> Result { - let num = args.get_number()?; - let result = inner_to_degrees(num)?; + let num = args.get_number_with_type()?; + let result = inner_to_degrees(num.n)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, NumericType::degrees()))) } /// Converts a number from radians to degrees. @@ -721,10 +757,10 @@ pub async fn to_degrees(_exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = 50, /// length = 70 * cos(toDegrees(pi()/4)), -/// }, %) +/// ) /// |> yLine(endAbsolute = 0) /// |> close() /// diff --git a/rust/kcl-lib/src/std/mirror.rs b/rust/kcl-lib/src/std/mirror.rs index 123e50e22..e4feff170 100644 --- a/rust/kcl-lib/src/std/mirror.rs +++ b/rust/kcl-lib/src/std/mirror.rs @@ -61,13 +61,13 @@ async fn inner_mirror_2d( ModelingCmd::from(mcmd::EntityMirror { ids: starting_sketches.iter().map(|sketch| sketch.id).collect(), axis: Point3d { - x: direction[0], - y: direction[1], + x: direction[0].n, + y: direction[1].n, z: 0.0, }, point: Point3d { - x: LengthUnit(origin[0]), - y: LengthUnit(origin[1]), + x: LengthUnit(origin[0].n), + y: LengthUnit(origin[1].n), z: LengthUnit(0.0), }, }), diff --git a/rust/kcl-lib/src/std/mod.rs b/rust/kcl-lib/src/std/mod.rs index b0dae767a..9a90daf18 100644 --- a/rust/kcl-lib/src/std/mod.rs +++ b/rust/kcl-lib/src/std/mod.rs @@ -12,13 +12,11 @@ pub mod edge; pub mod extrude; pub mod fillet; pub mod helix; -pub mod import; pub mod loft; pub mod math; pub mod mirror; pub mod patterns; pub mod planes; -pub mod polar; pub mod revolve; pub mod segment; pub mod shapes; @@ -73,14 +71,11 @@ lazy_static! { Box::new(crate::std::segment::AngleToMatchLengthY), Box::new(crate::std::shapes::CircleThreePoint), Box::new(crate::std::shapes::Polygon), + Box::new(crate::std::sketch::InvoluteCircular), Box::new(crate::std::sketch::Line), Box::new(crate::std::sketch::XLine), Box::new(crate::std::sketch::YLine), - Box::new(crate::std::sketch::AngledLineToX), - Box::new(crate::std::sketch::AngledLineToY), Box::new(crate::std::sketch::AngledLine), - Box::new(crate::std::sketch::AngledLineOfXLength), - Box::new(crate::std::sketch::AngledLineOfYLength), Box::new(crate::std::sketch::AngledLineThatIntersects), Box::new(crate::std::sketch::StartSketchOn), Box::new(crate::std::sketch::StartProfileAt), @@ -91,8 +86,6 @@ lazy_static! { Box::new(crate::std::sketch::Arc), Box::new(crate::std::sketch::ArcTo), Box::new(crate::std::sketch::TangentialArc), - Box::new(crate::std::sketch::TangentialArcTo), - Box::new(crate::std::sketch::TangentialArcToRelative), Box::new(crate::std::sketch::BezierCurve), Box::new(crate::std::sketch::Hole), Box::new(crate::std::patterns::PatternLinear2D), @@ -116,7 +109,6 @@ lazy_static! { Box::new(crate::std::sweep::Sweep), Box::new(crate::std::loft::Loft), Box::new(crate::std::planes::OffsetPlane), - Box::new(crate::std::import::Import), Box::new(crate::std::math::Acos), Box::new(crate::std::math::Asin), Box::new(crate::std::math::Atan), @@ -139,13 +131,12 @@ lazy_static! { Box::new(crate::std::math::Ln), Box::new(crate::std::math::ToDegrees), Box::new(crate::std::math::ToRadians), - Box::new(crate::std::units::Mm), - Box::new(crate::std::units::Inch), - Box::new(crate::std::units::Ft), - Box::new(crate::std::units::M), - Box::new(crate::std::units::Cm), - Box::new(crate::std::units::Yd), - Box::new(crate::std::polar::Polar), + Box::new(crate::std::units::FromMm), + Box::new(crate::std::units::FromInches), + Box::new(crate::std::units::FromFt), + Box::new(crate::std::units::FromM), + Box::new(crate::std::units::FromCm), + Box::new(crate::std::units::FromYd), Box::new(crate::std::assert::Assert), Box::new(crate::std::assert::AssertEqual), Box::new(crate::std::assert::AssertLessThan), diff --git a/rust/kcl-lib/src/std/patterns.rs b/rust/kcl-lib/src/std/patterns.rs index 6afb4e3fa..2777fe2c6 100644 --- a/rust/kcl-lib/src/std/patterns.rs +++ b/rust/kcl-lib/src/std/patterns.rs @@ -16,15 +16,18 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use uuid::Uuid; -use super::args::Arg; +use super::{ + args::Arg, + utils::{untype_point, untype_point_3d}, +}; use crate::{ errors::{KclError, KclErrorDetails}, execution::{ kcl_value::FunctionSource, types::{NumericType, RuntimeType}, - ExecState, Geometries, Geometry, KclObjectFields, KclValue, Point2d, Point3d, Sketch, Solid, + ExecState, Geometries, Geometry, KclObjectFields, KclValue, Sketch, Solid, }, - std::Args, + std::{args::TyF64, Args}, ExecutorContext, SourceRange, }; @@ -472,13 +475,14 @@ async fn make_transform( transforms .into_iter() - .map(|obj| transform_from_obj_fields::(obj, source_ranges.clone())) + .map(|obj| transform_from_obj_fields::(obj, source_ranges.clone(), exec_state)) .collect() } fn transform_from_obj_fields( transform: KclObjectFields, source_ranges: Vec, + exec_state: &mut ExecState, ) -> Result { // Apply defaults to the transform. let replicate = match transform.get("replicate") { @@ -494,13 +498,26 @@ fn transform_from_obj_fields( }; let scale = match transform.get("scale") { - Some(x) => T::array_to_point3d(x, source_ranges.clone())?, - None => Point3d { x: 1.0, y: 1.0, z: 1.0 }, + Some(x) => untype_point_3d(T::array_to_point3d(x, source_ranges.clone(), exec_state)?) + .0 + .into(), + None => kcmc::shared::Point3d { x: 1.0, y: 1.0, z: 1.0 }, }; let translate = match transform.get("translate") { - Some(x) => T::array_to_point3d(x, source_ranges.clone())?, - None => Point3d { x: 0.0, y: 0.0, z: 0.0 }, + Some(x) => { + let (arr, _) = untype_point_3d(T::array_to_point3d(x, source_ranges.clone(), exec_state)?); + kcmc::shared::Point3d:: { + x: LengthUnit(arr[0]), + y: LengthUnit(arr[1]), + z: LengthUnit(arr[2]), + } + } + None => kcmc::shared::Point3d:: { + x: LengthUnit(0.0), + y: LengthUnit(0.0), + z: LengthUnit(0.0), + }, }; let mut rotation = Rotation::default(); @@ -513,7 +530,9 @@ fn transform_from_obj_fields( })); }; if let Some(axis) = rot.get("axis") { - rotation.axis = T::array_to_point3d(axis, source_ranges.clone())?.into(); + rotation.axis = untype_point_3d(T::array_to_point3d(axis, source_ranges.clone(), exec_state)?) + .0 + .into(); } if let Some(angle) = rot.get("angle") { match angle { @@ -533,7 +552,9 @@ fn transform_from_obj_fields( KclValue::String { value: s, meta: _ } if s == "local" => OriginType::Local, KclValue::String { value: s, meta: _ } if s == "global" => OriginType::Global, other => { - let origin = T::array_to_point3d(other, source_ranges.clone())?.into(); + let origin = untype_point_3d(T::array_to_point3d(other, source_ranges.clone(), exec_state)?) + .0 + .into(); OriginType::Custom { origin } } }; @@ -542,73 +563,50 @@ fn transform_from_obj_fields( Ok(Transform { replicate, - scale: scale.into(), - translate: translate.into(), + scale, + translate, rotation, }) } -fn array_to_point3d(val: &KclValue, source_ranges: Vec) -> Result { - let KclValue::MixedArray { value: arr, meta } = val else { - return Err(KclError::Semantic(KclErrorDetails { - message: "Expected an array of 3 numbers (i.e. a 3D point)".to_string(), - source_ranges, - })); - }; - let len = arr.len(); - if len != 3 { - return Err(KclError::Semantic(KclErrorDetails { - message: format!("Expected an array of 3 numbers (i.e. a 3D point) but found {len} items"), - source_ranges, - })); - }; - // Gets an f64 from a KCL value. - let f = |k: &KclValue, component: char| { - use super::args::FromKclValue; - if let Some(value) = f64::from_kcl_val(k) { - Ok(value) - } else { - Err(KclError::Semantic(KclErrorDetails { - message: format!("{component} component of this point was not a number"), - source_ranges: meta.iter().map(|m| m.source_range).collect(), - })) - } - }; - let x = f(&arr[0], 'x')?; - let y = f(&arr[1], 'y')?; - let z = f(&arr[2], 'z')?; - Ok(Point3d { x, y, z }) +fn array_to_point3d( + val: &KclValue, + source_ranges: Vec, + exec_state: &mut ExecState, +) -> Result<[TyF64; 3], KclError> { + val.coerce(&RuntimeType::point3d(), exec_state) + .map_err(|e| { + KclError::Semantic(KclErrorDetails { + message: format!( + "Expected an array of 3 numbers (i.e., a 3D point), found {}", + e.found + .map(|t| t.human_friendly_type()) + .unwrap_or_else(|| val.human_friendly_type().to_owned()) + ), + source_ranges, + }) + }) + .map(|val| val.as_point3d().unwrap()) } -fn array_to_point2d(val: &KclValue, source_ranges: Vec) -> Result { - let KclValue::MixedArray { value: arr, meta } = val else { - return Err(KclError::Semantic(KclErrorDetails { - message: "Expected an array of 2 numbers (i.e. a 2D point)".to_string(), - source_ranges, - })); - }; - let len = arr.len(); - if len != 2 { - return Err(KclError::Semantic(KclErrorDetails { - message: format!("Expected an array of 2 numbers (i.e. a 2D point) but found {len} items"), - source_ranges, - })); - }; - // Gets an f64 from a KCL value. - let f = |k: &KclValue, component: char| { - use super::args::FromKclValue; - if let Some(value) = f64::from_kcl_val(k) { - Ok(value) - } else { - Err(KclError::Semantic(KclErrorDetails { - message: format!("{component} component of this point was not a number"), - source_ranges: meta.iter().map(|m| m.source_range).collect(), - })) - } - }; - let x = f(&arr[0], 'x')?; - let y = f(&arr[1], 'y')?; - Ok(Point2d { x, y }) +fn array_to_point2d( + val: &KclValue, + source_ranges: Vec, + exec_state: &mut ExecState, +) -> Result<[TyF64; 2], KclError> { + val.coerce(&RuntimeType::point2d(), exec_state) + .map_err(|e| { + KclError::Semantic(KclErrorDetails { + message: format!( + "Expected an array of 2 numbers (i.e., a 2D point), found {}", + e.found + .map(|t| t.human_friendly_type()) + .unwrap_or_else(|| val.human_friendly_type().to_owned()) + ), + source_ranges, + }) + }) + .map(|val| val.as_point2d().unwrap()) } trait GeometryTrait: Clone { @@ -616,7 +614,11 @@ trait GeometryTrait: Clone { fn id(&self) -> Uuid; fn original_id(&self) -> Uuid; fn set_id(&mut self, id: Uuid); - fn array_to_point3d(val: &KclValue, source_ranges: Vec) -> Result; + fn array_to_point3d( + val: &KclValue, + source_ranges: Vec, + exec_state: &mut ExecState, + ) -> Result<[TyF64; 3], KclError>; async fn flush_batch(args: &Args, exec_state: &mut ExecState, set: &Self::Set) -> Result<(), KclError>; } @@ -631,9 +633,14 @@ impl GeometryTrait for Sketch { fn original_id(&self) -> Uuid { self.original_id } - fn array_to_point3d(val: &KclValue, source_ranges: Vec) -> Result { - let Point2d { x, y } = array_to_point2d(val, source_ranges)?; - Ok(Point3d { x, y, z: 0.0 }) + fn array_to_point3d( + val: &KclValue, + source_ranges: Vec, + exec_state: &mut ExecState, + ) -> Result<[TyF64; 3], KclError> { + let [x, y] = array_to_point2d(val, source_ranges, exec_state)?; + let ty = x.ty.clone(); + Ok([x, y, TyF64::new(0.0, ty)]) } async fn flush_batch(_: &Args, _: &mut ExecState, _: &Self::Set) -> Result<(), KclError> { @@ -655,8 +662,12 @@ impl GeometryTrait for Solid { self.sketch.original_id } - fn array_to_point3d(val: &KclValue, source_ranges: Vec) -> Result { - array_to_point3d(val, source_ranges) + fn array_to_point3d( + val: &KclValue, + source_ranges: Vec, + exec_state: &mut ExecState, + ) -> Result<[TyF64; 3], KclError> { + array_to_point3d(val, source_ranges, exec_state) } async fn flush_batch(args: &Args, exec_state: &mut ExecState, solid_set: &Self::Set) -> Result<(), KclError> { @@ -669,30 +680,35 @@ mod tests { use super::*; use crate::execution::types::NumericType; - #[test] - fn test_array_to_point3d() { + #[tokio::test(flavor = "multi_thread")] + async fn test_array_to_point3d() { + let mut exec_state = ExecState::new(&ExecutorContext::new_mock().await); let input = KclValue::MixedArray { value: vec![ KclValue::Number { value: 1.1, meta: Default::default(), - ty: NumericType::Unknown, + ty: NumericType::mm(), }, KclValue::Number { value: 2.2, meta: Default::default(), - ty: NumericType::Unknown, + ty: NumericType::mm(), }, KclValue::Number { value: 3.3, meta: Default::default(), - ty: NumericType::Unknown, + ty: NumericType::mm(), }, ], meta: Default::default(), }; - let expected = Point3d { x: 1.1, y: 2.2, z: 3.3 }; - let actual = array_to_point3d(&input, Vec::new()); + let expected = [ + TyF64::new(1.1, NumericType::mm()), + TyF64::new(2.2, NumericType::mm()), + TyF64::new(3.3, NumericType::mm()), + ]; + let actual = array_to_point3d(&input, Vec::new(), &mut exec_state); assert_eq!(actual.unwrap(), expected); } } @@ -701,10 +717,11 @@ mod tests { pub async fn pattern_linear_2d(exec_state: &mut ExecState, args: Args) -> Result { let sketches = args.get_unlabeled_kw_arg_typed("sketches", &RuntimeType::sketches(), exec_state)?; let instances: u32 = args.get_kw_arg("instances")?; - let distance: f64 = args.get_kw_arg("distance")?; - let axis: [f64; 2] = args.get_kw_arg("axis")?; + let distance: TyF64 = args.get_kw_arg_typed("distance", &RuntimeType::length(), exec_state)?; + let axis: [TyF64; 2] = args.get_kw_arg_typed("axis", &RuntimeType::point2d(), exec_state)?; let use_original: Option = args.get_kw_arg_opt("useOriginal")?; + let axis = untype_point(axis).0; if axis == [0.0, 0.0] { return Err(KclError::Semantic(KclErrorDetails { message: @@ -714,7 +731,8 @@ pub async fn pattern_linear_2d(exec_state: &mut ExecState, args: Args) -> Result })); } - let sketches = inner_pattern_linear_2d(sketches, instances, distance, axis, use_original, exec_state, args).await?; + let sketches = + inner_pattern_linear_2d(sketches, instances, distance.n, axis, use_original, exec_state, args).await?; Ok(sketches.into()) } @@ -780,10 +798,11 @@ async fn inner_pattern_linear_2d( pub async fn pattern_linear_3d(exec_state: &mut ExecState, args: Args) -> Result { let solids = args.get_unlabeled_kw_arg_typed("solids", &RuntimeType::solids(), exec_state)?; let instances: u32 = args.get_kw_arg("instances")?; - let distance: f64 = args.get_kw_arg("distance")?; - let axis: [f64; 3] = args.get_kw_arg("axis")?; + let distance: TyF64 = args.get_kw_arg_typed("distance", &RuntimeType::length(), exec_state)?; + let axis: [TyF64; 3] = args.get_kw_arg_typed("axis", &RuntimeType::point3d(), exec_state)?; let use_original: Option = args.get_kw_arg_opt("useOriginal")?; + let (axis, _) = untype_point_3d(axis); if axis == [0.0, 0.0, 0.0] { return Err(KclError::Semantic(KclErrorDetails { message: @@ -793,7 +812,7 @@ pub async fn pattern_linear_3d(exec_state: &mut ExecState, args: Args) -> Result })); } - let solids = inner_pattern_linear_3d(solids, instances, distance, axis, use_original, exec_state, args).await?; + let solids = inner_pattern_linear_3d(solids, instances, distance.n, axis, use_original, exec_state, args).await?; Ok(solids.into()) } @@ -824,15 +843,15 @@ pub async fn pattern_linear_3d(exec_state: &mut ExecState, args: Args) -> Result /// |> startProfileAt([-size, -size], %) /// |> line(end = [2 * size, 0]) /// |> line(end = [0, 2 * size]) -/// |> tangentialArcTo([-size, size], %) +/// |> tangentialArc(endAbsolute = [-size, size]) /// |> close(%) /// |> extrude(length = 65) /// -/// const thing1 = startSketchOn(case, 'end') +/// const thing1 = startSketchOn(case, face = END) /// |> circle(center = [-size / 2, -size / 2], radius = 25) /// |> extrude(length = 50) /// -/// const thing2 = startSketchOn(case, 'end') +/// const thing2 = startSketchOn(case, face = END) /// |> circle(center = [size / 2, -size / 2], radius = 25) /// |> extrude(length = 50) /// @@ -852,11 +871,11 @@ pub async fn pattern_linear_3d(exec_state: &mut ExecState, args: Args) -> Result /// |> startProfileAt([-size, -size], %) /// |> line(end = [2 * size, 0]) /// |> line(end = [0, 2 * size]) -/// |> tangentialArcTo([-size, size], %) +/// |> tangentialArc(endAbsolute = [-size, size]) /// |> close(%) /// |> extrude(length = 65) /// -/// const thing1 = startSketchOn(case, 'end') +/// const thing1 = startSketchOn(case, face = END) /// |> circle(center =[-size / 2, -size / 2], radius = 25) /// |> extrude(length = 50) /// @@ -1025,16 +1044,16 @@ impl CircularPattern { pub async fn pattern_circular_2d(exec_state: &mut ExecState, args: Args) -> Result { let sketches = args.get_unlabeled_kw_arg_typed("sketches", &RuntimeType::sketches(), exec_state)?; let instances: u32 = args.get_kw_arg("instances")?; - let center: [f64; 2] = args.get_kw_arg("center")?; - let arc_degrees: f64 = args.get_kw_arg("arcDegrees")?; + let center: [TyF64; 2] = args.get_kw_arg_typed("center", &RuntimeType::point2d(), exec_state)?; + let arc_degrees: TyF64 = args.get_kw_arg_typed("arcDegrees", &RuntimeType::angle(), exec_state)?; let rotate_duplicates: bool = args.get_kw_arg("rotateDuplicates")?; let use_original: Option = args.get_kw_arg_opt("useOriginal")?; let sketches = inner_pattern_circular_2d( sketches, instances, - center, - arc_degrees, + untype_point(center).0, + arc_degrees.n, rotate_duplicates, use_original, exec_state, @@ -1134,11 +1153,11 @@ pub async fn pattern_circular_3d(exec_state: &mut ExecState, args: Args) -> Resu // If instances is 1, this has no effect. let instances: u32 = args.get_kw_arg("instances")?; // The axis around which to make the pattern. This is a 3D vector. - let axis: [f64; 3] = args.get_kw_arg("axis")?; + let axis: [TyF64; 3] = args.get_kw_arg_typed("axis", &RuntimeType::point3d(), exec_state)?; // The center about which to make the pattern. This is a 3D vector. - let center: [f64; 3] = args.get_kw_arg("center")?; + let center: [TyF64; 3] = args.get_kw_arg_typed("center", &RuntimeType::point3d(), exec_state)?; // The arc angle (in degrees) to place the repetitions. Must be greater than 0. - let arc_degrees: f64 = args.get_kw_arg("arcDegrees")?; + let arc_degrees: TyF64 = args.get_kw_arg_typed("arcDegrees", &RuntimeType::angle(), exec_state)?; // Whether or not to rotate the duplicates as they are copied. let rotate_duplicates: bool = args.get_kw_arg("rotateDuplicates")?; // If the target being patterned is itself a pattern, then, should you use the original solid, @@ -1148,9 +1167,9 @@ pub async fn pattern_circular_3d(exec_state: &mut ExecState, args: Args) -> Resu let solids = inner_pattern_circular_3d( solids, instances, - axis, - center, - arc_degrees, + untype_point_3d(axis).0, + untype_point_3d(center).0, + arc_degrees.n, rotate_duplicates, use_original, exec_state, diff --git a/rust/kcl-lib/src/std/planes.rs b/rust/kcl-lib/src/std/planes.rs index e742f8c9b..8f53f45bd 100644 --- a/rust/kcl-lib/src/std/planes.rs +++ b/rust/kcl-lib/src/std/planes.rs @@ -4,18 +4,18 @@ use kcl_derive_docs::stdlib; use kcmc::{each_cmd as mcmd, length_unit::LengthUnit, shared::Color, ModelingCmd}; use kittycad_modeling_cmds as kcmc; -use super::sketch::PlaneData; +use super::{args::TyF64, sketch::PlaneData}; use crate::{ errors::KclError, - execution::{ExecState, KclValue, Plane, PlaneType}, + execution::{types::RuntimeType, ExecState, KclValue, Plane, PlaneType}, std::Args, }; /// Offset a plane by a distance along its normal. pub async fn offset_plane(exec_state: &mut ExecState, args: Args) -> Result { let std_plane = args.get_unlabeled_kw_arg("plane")?; - let offset = args.get_kw_arg("offset")?; - let plane = inner_offset_plane(std_plane, offset, exec_state).await?; + let offset: TyF64 = args.get_kw_arg_typed("offset", &RuntimeType::length(), exec_state)?; + let plane = inner_offset_plane(std_plane, offset.n, exec_state).await?; make_offset_plane_in_engine(&plane, exec_state, &args).await?; Ok(KclValue::Plane { value: Box::new(plane) }) } @@ -108,7 +108,7 @@ pub async fn offset_plane(exec_state: &mut ExecState, args: Args) -> Result Result { - let data: PolarCoordsData = args.get_data()?; - let result = inner_polar(&data)?; - - args.make_user_val_from_f64_array(result.to_vec(), &data.length.ty) -} - -/// Convert polar/sphere (azimuth, elevation, distance) coordinates to -/// cartesian (x/y/z grid) coordinates. -/// -/// ```no_run -/// exampleSketch = startSketchOn('XZ') -/// |> startProfileAt([0, 0], %) -/// |> line(end = polar({angle: 30, length: 5}), tag = $thing) -/// |> line(end = [0, 5]) -/// |> line(end = [segEndX(thing), 0]) -/// |> line(end = [-20, 10]) -/// |> close() -/// -/// example = extrude(exampleSketch, length = 5) -/// ``` -#[stdlib { - name = "polar", -}] -fn inner_polar(data: &PolarCoordsData) -> Result<[f64; 2], KclError> { - let angle = data.angle.to_radians(); - let x = data.length.n * angle.cos(); - let y = data.length.n * angle.sin(); - Ok([x, y]) -} diff --git a/rust/kcl-lib/src/std/revolve.rs b/rust/kcl-lib/src/std/revolve.rs index fa1d5b86d..18d7c00f2 100644 --- a/rust/kcl-lib/src/std/revolve.rs +++ b/rust/kcl-lib/src/std/revolve.rs @@ -1,10 +1,15 @@ //! Standard library revolution surfaces. use anyhow::Result; -use kcmc::{each_cmd as mcmd, length_unit::LengthUnit, shared::Angle, ModelingCmd}; +use kcmc::{ + each_cmd as mcmd, + length_unit::LengthUnit, + shared::{Angle, Opposite}, + ModelingCmd, +}; use kittycad_modeling_cmds::{self as kcmc, shared::Point3d}; -use super::DEFAULT_TOLERANCE; +use super::{args::TyF64, DEFAULT_TOLERANCE}; use crate::{ errors::{KclError, KclErrorDetails}, execution::{ @@ -26,12 +31,27 @@ pub async fn revolve(exec_state: &mut ExecState, args: Args) -> Result = args.get_kw_arg_opt_typed("angle", &RuntimeType::angle(), exec_state)?; + let tolerance: Option = args.get_kw_arg_opt_typed("tolerance", &RuntimeType::count(), exec_state)?; let tag_start = args.get_kw_arg_opt("tagStart")?; let tag_end = args.get_kw_arg_opt("tagEnd")?; + let symmetric = args.get_kw_arg_opt("symmetric")?; + let bidirectional_angle: Option = + args.get_kw_arg_opt_typed("bidirectionalAngle", &RuntimeType::angle(), exec_state)?; - let value = inner_revolve(sketches, axis, angle, tolerance, tag_start, tag_end, exec_state, args).await?; + let value = inner_revolve( + sketches, + axis, + angle.map(|t| t.n), + tolerance.map(|t| t.n), + tag_start, + tag_end, + symmetric, + bidirectional_angle.map(|t| t.n), + exec_state, + args, + ) + .await?; Ok(value.into()) } @@ -43,6 +63,8 @@ async fn inner_revolve( tolerance: Option, tag_start: Option, tag_end: Option, + symmetric: Option, + bidirectional_angle: Option, exec_state: &mut ExecState, args: Args, ) -> Result, KclError> { @@ -58,8 +80,54 @@ async fn inner_revolve( } } + if let Some(bidirectional_angle) = bidirectional_angle { + // Return an error if the angle is zero. + // We don't use validate() here because we want to return a specific error message that is + // nice and we use the other data in the docs, so we still need use the derive above for the json schema. + if !(-360.0..=360.0).contains(&bidirectional_angle) || bidirectional_angle == 0.0 { + return Err(KclError::Semantic(KclErrorDetails { + message: format!( + "Expected bidirectional angle to be between -360 and 360 and not 0, found `{}`", + bidirectional_angle + ), + source_ranges: vec![args.source_range], + })); + } + + if let Some(angle) = angle { + let ang = angle.signum() * bidirectional_angle + angle; + if !(-360.0..=360.0).contains(&ang) { + return Err(KclError::Semantic(KclErrorDetails { + message: format!( + "Combined angle and bidirectional must be between -360 and 360, found '{}'", + ang + ), + source_ranges: vec![args.source_range], + })); + } + } + } + + if symmetric.unwrap_or(false) && bidirectional_angle.is_some() { + return Err(KclError::Semantic(KclErrorDetails { + source_ranges: vec![args.source_range], + message: "You cannot give both `symmetric` and `bidirectional` params, you have to choose one or the other" + .to_owned(), + })); + } + let angle = Angle::from_degrees(angle.unwrap_or(360.0)); + let bidirectional_angle = bidirectional_angle.map(Angle::from_degrees); + + let opposite = match (symmetric, bidirectional_angle) { + (Some(true), _) => Opposite::Symmetric, + (None, None) => Opposite::None, + (Some(false), None) => Opposite::None, + (None, Some(angle)) => Opposite::Other(angle), + (Some(false), Some(angle)) => Opposite::Other(angle), + }; + let mut solids = Vec::new(); for sketch in &sketches { let id = exec_state.next_uuid(); @@ -72,17 +140,18 @@ async fn inner_revolve( angle, target: sketch.id.into(), axis: Point3d { - x: direction[0], - y: direction[1], + x: direction[0].n, + y: direction[1].n, z: 0.0, }, origin: Point3d { - x: LengthUnit(origin[0]), - y: LengthUnit(origin[1]), + x: LengthUnit(origin[0].n), + y: LengthUnit(origin[1].n), z: LengthUnit(0.0), }, tolerance: LengthUnit(tolerance.unwrap_or(DEFAULT_TOLERANCE)), axis_is_2d: true, + opposite: opposite.clone(), }), ) .await?; @@ -96,6 +165,7 @@ async fn inner_revolve( target: sketch.id.into(), edge_id, tolerance: LengthUnit(tolerance.unwrap_or(DEFAULT_TOLERANCE)), + opposite: opposite.clone(), }), ) .await?; diff --git a/rust/kcl-lib/src/std/segment.rs b/rust/kcl-lib/src/std/segment.rs index 7f4a3f420..3dc2b5c37 100644 --- a/rust/kcl-lib/src/std/segment.rs +++ b/rust/kcl-lib/src/std/segment.rs @@ -7,12 +7,14 @@ use kittycad_modeling_cmds::shared::Angle; use crate::{ errors::{KclError, KclErrorDetails}, execution::{ - types::{PrimitiveType, RuntimeType}, - ExecState, KclValue, Point2d, Sketch, TagIdentifier, + types::{NumericType, PrimitiveType, RuntimeType}, + ExecState, KclValue, Sketch, TagIdentifier, }, - std::{utils::between, Args}, + std::{args::TyF64, utils::between, Args}, }; +use super::utils::untype_point; + /// Returns the point at the end of the given segment. pub async fn segment_end(exec_state: &mut ExecState, args: Args) -> Result { let tag: TagIdentifier = args.get_unlabeled_kw_arg("tag")?; @@ -54,7 +56,7 @@ pub async fn segment_end(exec_state: &mut ExecState, args: Args) -> Result Result<[f64; 2], KclError> { +fn inner_segment_end(tag: &TagIdentifier, exec_state: &mut ExecState, args: Args) -> Result<[TyF64; 2], KclError> { let line = args.get_tag_engine_info(exec_state, tag)?; let path = line.path.clone().ok_or_else(|| { KclError::Type(KclErrorDetails { @@ -63,7 +65,7 @@ fn inner_segment_end(tag: &TagIdentifier, exec_state: &mut ExecState, args: Args }) })?; - Ok(path.get_base().to) + Ok(path.get_to().clone()) } /// Returns the segment end of x. @@ -71,7 +73,7 @@ pub async fn segment_end_x(exec_state: &mut ExecState, args: Args) -> Result Result Result { +fn inner_segment_end_x(tag: &TagIdentifier, exec_state: &mut ExecState, args: Args) -> Result { let line = args.get_tag_engine_info(exec_state, tag)?; let path = line.path.clone().ok_or_else(|| { KclError::Type(KclErrorDetails { @@ -104,7 +106,7 @@ fn inner_segment_end_x(tag: &TagIdentifier, exec_state: &mut ExecState, args: Ar }) })?; - Ok(path.get_base().to[0]) + Ok(TyF64::new(path.get_base().to[0], path.get_base().units.into())) } /// Returns the segment end of y. @@ -112,7 +114,7 @@ pub async fn segment_end_y(exec_state: &mut ExecState, args: Args) -> Result Result Result { +fn inner_segment_end_y(tag: &TagIdentifier, exec_state: &mut ExecState, args: Args) -> Result { let line = args.get_tag_engine_info(exec_state, tag)?; let path = line.path.clone().ok_or_else(|| { KclError::Type(KclErrorDetails { @@ -146,7 +148,7 @@ fn inner_segment_end_y(tag: &TagIdentifier, exec_state: &mut ExecState, args: Ar }) })?; - Ok(path.get_to()[1]) + Ok(path.get_to()[1].clone()) } /// Returns the point at the start of the given segment. @@ -190,7 +192,7 @@ pub async fn segment_start(exec_state: &mut ExecState, args: Args) -> Result Result<[f64; 2], KclError> { +fn inner_segment_start(tag: &TagIdentifier, exec_state: &mut ExecState, args: Args) -> Result<[TyF64; 2], KclError> { let line = args.get_tag_engine_info(exec_state, tag)?; let path = line.path.clone().ok_or_else(|| { KclError::Type(KclErrorDetails { @@ -207,7 +209,7 @@ pub async fn segment_start_x(exec_state: &mut ExecState, args: Args) -> Result Result Result { +fn inner_segment_start_x(tag: &TagIdentifier, exec_state: &mut ExecState, args: Args) -> Result { let line = args.get_tag_engine_info(exec_state, tag)?; let path = line.path.clone().ok_or_else(|| { KclError::Type(KclErrorDetails { @@ -240,7 +242,7 @@ fn inner_segment_start_x(tag: &TagIdentifier, exec_state: &mut ExecState, args: }) })?; - Ok(path.get_from()[0]) + Ok(path.get_from()[0].clone()) } /// Returns the segment start of y. @@ -248,7 +250,7 @@ pub async fn segment_start_y(exec_state: &mut ExecState, args: Args) -> Result Result Result { +fn inner_segment_start_y(tag: &TagIdentifier, exec_state: &mut ExecState, args: Args) -> Result { let line = args.get_tag_engine_info(exec_state, tag)?; let path = line.path.clone().ok_or_else(|| { KclError::Type(KclErrorDetails { @@ -282,7 +284,7 @@ fn inner_segment_start_y(tag: &TagIdentifier, exec_state: &mut ExecState, args: }) })?; - Ok(path.get_from()[1]) + Ok(path.get_from()[1].clone()) } /// Returns the last segment of x. pub async fn last_segment_x(exec_state: &mut ExecState, args: Args) -> Result { @@ -290,7 +292,7 @@ pub async fn last_segment_x(exec_state: &mut ExecState, args: Args) -> Result Result Result { +fn inner_last_segment_x(sketch: Sketch, args: Args) -> Result { let last_line = sketch .paths .last() @@ -327,7 +329,7 @@ fn inner_last_segment_x(sketch: Sketch, args: Args) -> Result { })? .get_base(); - Ok(last_line.to[0]) + Ok(TyF64::new(last_line.to[0], last_line.units.into())) } /// Returns the last segment of y. @@ -336,7 +338,7 @@ pub async fn last_segment_y(exec_state: &mut ExecState, args: Args) -> Result Result Result { +fn inner_last_segment_y(sketch: Sketch, args: Args) -> Result { let last_line = sketch .paths .last() @@ -373,14 +375,14 @@ fn inner_last_segment_y(sketch: Sketch, args: Args) -> Result { })? .get_base(); - Ok(last_line.to[1]) + Ok(TyF64::new(last_line.to[1], last_line.units.into())) } /// Returns the length of the segment. pub async fn segment_length(exec_state: &mut ExecState, args: Args) -> Result { let tag: TagIdentifier = args.get_unlabeled_kw_arg("tag")?; let result = inner_segment_length(&tag, exec_state, args.clone())?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(result)) } /// Compute the length of the provided line segment. @@ -388,18 +390,16 @@ pub async fn segment_length(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = 60, /// length = 10, -/// }, %, $thing) -/// |> tangentialArc({ -/// offset = -120, -/// radius = 5, -/// }, %) -/// |> angledLine({ +/// tag = $thing, +/// ) +/// |> tangentialArc(angle = -120, radius = 5) +/// |> angledLine( /// angle = -60, /// length = segLen(thing), -/// }, %) +/// ) /// |> close() /// /// example = extrude(exampleSketch, length = 5) @@ -412,7 +412,7 @@ pub async fn segment_length(exec_state: &mut ExecState, args: Args) -> Result Result { +fn inner_segment_length(tag: &TagIdentifier, exec_state: &mut ExecState, args: Args) -> Result { let line = args.get_tag_engine_info(exec_state, tag)?; let path = line.path.clone().ok_or_else(|| { KclError::Type(KclErrorDetails { @@ -421,9 +421,7 @@ fn inner_segment_length(tag: &TagIdentifier, exec_state: &mut ExecState, args: A }) })?; - let result = path.length(); - - Ok(result) + Ok(path.length()) } /// Returns the angle of the segment. @@ -431,7 +429,7 @@ pub async fn segment_angle(exec_state: &mut ExecState, args: Args) -> Result Result line(end = [10, 0]) /// |> line(end = [5, 10], tag = $seg01) /// |> line(end = [-10, 0]) -/// |> angledLine([segAng(seg01), 10], %) +/// |> angledLine(angle = segAng(seg01), length = 10) /// |> line(end = [-10, 0]) -/// |> angledLine([segAng(seg01), -15], %) +/// |> angledLine(angle = segAng(seg01), length = -15) /// |> close() /// /// example = extrude(exampleSketch, length = 4) @@ -476,7 +474,7 @@ pub async fn tangent_to_end(exec_state: &mut ExecState, args: Args) -> Result Result startProfileAt([0, 0], %) /// |> line(end = [20, 0]) -/// |> tangentialArcToRelative([0, 10], %, $arc1) -/// |> angledLine({ -/// angle: tangentToEnd(arc1), -/// length: 20, -/// }, %) -/// |> tangentialArcToRelative([0, -10], %) +/// |> tangentialArc(end = [0, 10], tag = $arc1) +/// |> angledLine( +/// angle = tangentToEnd(arc1), +/// length = 20, +/// ) +/// |> tangentialArc(end = [0, -10]) /// |> close() /// /// pillExtrude = extrude(pillSketch, length = 10) @@ -502,12 +500,12 @@ pub async fn tangent_to_end(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) /// |> line(end = [0, 20]) -/// |> tangentialArcTo([10, 20], %, $arc1) -/// |> angledLine({ -/// angle: tangentToEnd(arc1), -/// length: 20, -/// }, %) -/// |> tangentialArcToRelative([-10, 0], %) +/// |> tangentialArc(endAbsolute = [10, 20], tag = $arc1) +/// |> angledLine( +/// angle = tangentToEnd(arc1), +/// length = 20, +/// ) +/// |> tangentialArc(end = [-10, 0]) /// |> close() /// /// pillExtrude = extrude(pillSketch, length = 10) @@ -517,10 +515,10 @@ pub async fn tangent_to_end(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) /// |> line(end = [10, 0], tag = $seg1) -/// |> angledLine({ -/// angle: tangentToEnd(seg1), -/// length: 10, -/// }, %) +/// |> angledLine( +/// angle = tangentToEnd(seg1), +/// length = 10, +/// ) /// |> line(end = [0, 10]) /// |> line(end = [-20, 0]) /// |> close() @@ -535,7 +533,7 @@ pub async fn tangent_to_end(exec_state: &mut ExecState, args: Args) -> Result angledLine([tangentToEnd(arc1), 20], %) +/// |> angledLine(angle = tangentToEnd(arc1), length = 20) /// |> close() /// ``` /// @@ -545,7 +543,7 @@ pub async fn tangent_to_end(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([-5, 0], %) -/// |> angledLine([tangentToEnd(circ), 10], %) +/// |> angledLine(angle = tangentToEnd(circ), length = 10) /// |> line(end = [-15, 0]) /// |> close() /// ``` @@ -566,17 +564,17 @@ async fn inner_tangent_to_end(tag: &TagIdentifier, exec_state: &mut ExecState, a }) })?; - let from = Point2d::from(path.get_to()); + let from = untype_point(path.get_to()).0; // Undocumented voodoo from get_tangential_arc_to_info let tangent_info = path.get_tangential_info(); - let tan_previous_point = tangent_info.tan_previous_point(from.into()); + let tan_previous_point = tangent_info.tan_previous_point(from); // Calculate the end point from the angle and radius. // atan2 outputs radians. let previous_end_tangent = Angle::from_radians(f64::atan2( - from.y - tan_previous_point[1], - from.x - tan_previous_point[0], + from[1] - tan_previous_point[1], + from[0] - tan_previous_point[0], )); Ok(previous_end_tangent.to_degrees()) @@ -585,8 +583,8 @@ async fn inner_tangent_to_end(tag: &TagIdentifier, exec_state: &mut ExecState, a /// Returns the angle to match the given length for x. pub async fn angle_to_match_length_x(exec_state: &mut ExecState, args: Args) -> Result { let (tag, to, sketch) = args.get_tag_to_number_sketch()?; - let result = inner_angle_to_match_length_x(&tag, to, sketch, exec_state, args.clone())?; - Ok(args.make_user_val_from_f64(result)) + let result = inner_angle_to_match_length_x(&tag, to.n, sketch, exec_state, args.clone())?; + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, NumericType::degrees()))) } /// Returns the angle to match the given length for x. @@ -595,10 +593,10 @@ pub async fn angle_to_match_length_x(exec_state: &mut ExecState, args: Args) -> /// sketch001 = startSketchOn('XZ') /// |> startProfileAt([0, 0], %) /// |> line(end = [2, 5], tag = $seg01) -/// |> angledLineToX([ -/// -angleToMatchLengthX(seg01, 7, %), -/// 10 -/// ], %) +/// |> angledLine( +/// angle = -angleToMatchLengthX(seg01, 7, %), +/// endAbsoluteX = 10, +/// ) /// |> close() /// /// extrusion = extrude(sketch001, length = 5) @@ -621,7 +619,7 @@ fn inner_angle_to_match_length_x( }) })?; - let length = path.length(); + let length = path.length().n; let last_line = sketch .paths @@ -634,6 +632,7 @@ fn inner_angle_to_match_length_x( })? .get_base(); + // TODO assumption about the units of to let diff = (to - last_line.to[0]).abs(); let angle_r = (diff / length).acos(); @@ -648,8 +647,8 @@ fn inner_angle_to_match_length_x( /// Returns the angle to match the given length for y. pub async fn angle_to_match_length_y(exec_state: &mut ExecState, args: Args) -> Result { let (tag, to, sketch) = args.get_tag_to_number_sketch()?; - let result = inner_angle_to_match_length_y(&tag, to, sketch, exec_state, args.clone())?; - Ok(args.make_user_val_from_f64(result)) + let result = inner_angle_to_match_length_y(&tag, to.n, sketch, exec_state, args.clone())?; + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, NumericType::degrees()))) } /// Returns the angle to match the given length for y. @@ -658,10 +657,10 @@ pub async fn angle_to_match_length_y(exec_state: &mut ExecState, args: Args) -> /// sketch001 = startSketchOn('XZ') /// |> startProfileAt([0, 0], %) /// |> line(end = [1, 2], tag = $seg01) -/// |> angledLine({ +/// |> angledLine( /// angle = angleToMatchLengthY(seg01, 15, %), /// length = 5, -/// }, %) +/// ) /// |> yLine(endAbsolute = 0) /// |> close() /// @@ -685,7 +684,7 @@ fn inner_angle_to_match_length_y( }) })?; - let length = path.length(); + let length = path.length().n; let last_line = sketch .paths @@ -698,6 +697,7 @@ fn inner_angle_to_match_length_y( })? .get_base(); + // TODO assumption about the units of to let diff = (to - last_line.to[1]).abs(); let angle_r = (diff / length).asin(); diff --git a/rust/kcl-lib/src/std/shapes.rs b/rust/kcl-lib/src/std/shapes.rs index 44627decc..0f74cf03b 100644 --- a/rust/kcl-lib/src/std/shapes.rs +++ b/rust/kcl-lib/src/std/shapes.rs @@ -11,11 +11,11 @@ use kcmc::{ use kittycad_modeling_cmds as kcmc; use kittycad_modeling_cmds::shared::PathSegment; use schemars::JsonSchema; -use serde::{Deserialize, Serialize}; +use serde::Serialize; use crate::{ errors::{KclError, KclErrorDetails}, - execution::{BasePath, ExecState, GeoMeta, KclValue, Path, Sketch, SketchSurface}, + execution::{types::RuntimeType, BasePath, ExecState, GeoMeta, KclValue, Path, Sketch, SketchSurface}, parsing::ast::types::TagNode, std::{ sketch::NEW_TAG_KW, @@ -24,8 +24,10 @@ use crate::{ }, }; +use super::{args::TyF64, utils::untype_point}; + /// A sketch surface or a sketch. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(untagged)] pub enum SketchOrSurface { @@ -36,11 +38,19 @@ pub enum SketchOrSurface { /// Sketch a circle. pub async fn circle(exec_state: &mut ExecState, args: Args) -> Result { let sketch_or_surface = args.get_unlabeled_kw_arg("sketchOrSurface")?; - let center = args.get_kw_arg("center")?; - let radius = args.get_kw_arg("radius")?; + let center = args.get_kw_arg_typed("center", &RuntimeType::point2d(), exec_state)?; + let radius: TyF64 = args.get_kw_arg_typed("radius", &RuntimeType::length(), exec_state)?; let tag = args.get_kw_arg_opt(NEW_TAG_KW)?; - let sketch = inner_circle(sketch_or_surface, center, radius, tag, exec_state, args).await?; + let sketch = inner_circle( + sketch_or_surface, + untype_point(center).0, + radius.n, + tag, + exec_state, + args, + ) + .await?; Ok(KclValue::Sketch { value: Box::new(sketch), }) @@ -121,12 +131,21 @@ async fn inner_circle( /// Sketch a 3-point circle. pub async fn circle_three_point(exec_state: &mut ExecState, args: Args) -> Result { let sketch_surface_or_group = args.get_unlabeled_kw_arg("sketch_surface_or_group")?; - let p1 = args.get_kw_arg("p1")?; - let p2 = args.get_kw_arg("p2")?; - let p3 = args.get_kw_arg("p3")?; + let p1 = args.get_kw_arg_typed("p1", &RuntimeType::point2d(), exec_state)?; + let p2 = args.get_kw_arg_typed("p2", &RuntimeType::point2d(), exec_state)?; + let p3 = args.get_kw_arg_typed("p3", &RuntimeType::point2d(), exec_state)?; let tag = args.get_kw_arg_opt("tag")?; - let sketch = inner_circle_three_point(sketch_surface_or_group, p1, p2, p3, tag, exec_state, args).await?; + let sketch = inner_circle_three_point( + sketch_surface_or_group, + untype_point(p1).0, + untype_point(p2).0, + untype_point(p3).0, + tag, + exec_state, + args, + ) + .await?; Ok(KclValue::Sketch { value: Box::new(sketch), }) @@ -165,7 +184,7 @@ async fn inner_circle_three_point( ) -> Result { let center = calculate_circle_center(p1, p2, p3); // It can be the distance to any of the 3 points - they all lay on the circumference. - let radius = distance(center.into(), p2.into()); + let radius = distance(center, p2); let sketch_surface = match sketch_surface_or_group { SketchOrSurface::SketchSurface(surface) => surface, @@ -231,7 +250,7 @@ async fn inner_circle_three_point( } /// Type of the polygon -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Default)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema, Default)] #[ts(export)] #[serde(rename_all = "lowercase")] pub enum PolygonType { @@ -241,16 +260,16 @@ pub enum PolygonType { } /// Data for drawing a polygon -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase")] pub struct PolygonData { /// The radius of the polygon - pub radius: f64, + pub radius: TyF64, /// The number of sides in the polygon pub num_sides: u64, /// The center point of the polygon - pub center: [f64; 2], + pub center: [TyF64; 2], /// The type of the polygon (inscribed or circumscribed) #[serde(skip)] pub polygon_type: PolygonType, @@ -317,7 +336,7 @@ async fn inner_polygon( })); } - if data.radius <= 0.0 { + if data.radius.n <= 0.0 { return Err(KclError::Type(KclErrorDetails { message: "Radius must be greater than 0".to_string(), source_ranges: vec![args.source_range], @@ -332,8 +351,8 @@ async fn inner_polygon( let half_angle = std::f64::consts::PI / data.num_sides as f64; let radius_to_vertices = match data.polygon_type { - PolygonType::Inscribed => data.radius, - PolygonType::Circumscribed => data.radius / half_angle.cos(), + PolygonType::Inscribed => data.radius.n, + PolygonType::Circumscribed => data.radius.n / half_angle.cos(), }; let angle_step = 2.0 * std::f64::consts::PI / data.num_sides as f64; @@ -342,8 +361,8 @@ async fn inner_polygon( .map(|i| { let angle = angle_step * i as f64; [ - data.center[0] + radius_to_vertices * angle.cos(), - data.center[1] + radius_to_vertices * angle.sin(), + data.center[0].n + radius_to_vertices * angle.cos(), + data.center[1].n + radius_to_vertices * angle.sin(), ] }) .collect(); diff --git a/rust/kcl-lib/src/std/shell.rs b/rust/kcl-lib/src/std/shell.rs index 618696f7c..40017b54f 100644 --- a/rust/kcl-lib/src/std/shell.rs +++ b/rust/kcl-lib/src/std/shell.rs @@ -11,13 +11,15 @@ use crate::{ std::{sketch::FaceTag, Args}, }; +use super::args::TyF64; + /// Create a shell. pub async fn shell(exec_state: &mut ExecState, args: Args) -> Result { let solids = args.get_unlabeled_kw_arg_typed("solids", &RuntimeType::solids(), exec_state)?; - let thickness = args.get_kw_arg("thickness")?; + let thickness: TyF64 = args.get_kw_arg_typed("thickness", &RuntimeType::count(), exec_state)?; let faces = args.get_kw_arg("faces")?; - let result = inner_shell(solids, thickness, faces, exec_state, args).await?; + let result = inner_shell(solids, thickness.n, faces, exec_state, args).await?; Ok(result.into()) } @@ -27,7 +29,7 @@ pub async fn shell(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([-12, 12], %) /// |> line(end = [24, 0]) /// |> line(end = [0, -24]) @@ -38,14 +40,14 @@ pub async fn shell(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([-12, 12], %) /// |> line(end = [24, 0]) /// |> line(end = [0, -24]) @@ -56,14 +58,14 @@ pub async fn shell(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([-12, 12], %) /// |> line(end = [24, 0]) /// |> line(end = [0, -24]) @@ -81,7 +83,7 @@ pub async fn shell(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([-12, 12], %) /// |> line(end = [24, 0]) /// |> line(end = [0, -24]) @@ -92,7 +94,7 @@ pub async fn shell(exec_state: &mut ExecState, args: Args) -> Result Result startProfileAt([-size, -size], %) /// |> line(end = [2 * size, 0]) /// |> line(end = [0, 2 * size]) -/// |> tangentialArcTo([-size, size], %) +/// |> tangentialArc(endAbsolute = [-size, size]) /// |> close() /// |> extrude(length = 65) /// -/// thing1 = startSketchOn(case, 'end') +/// thing1 = startSketchOn(case, face = END) /// |> circle( center = [-size / 2, -size / 2], radius = 25 ) /// |> extrude(length = 50) /// -/// thing2 = startSketchOn(case, 'end') +/// thing2 = startSketchOn(case, face = END) /// |> circle( center = [size / 2, -size / 2], radius = 25 ) /// |> extrude(length = 50) /// /// // We put "case" in the shell function to shell the entire object. -/// shell(case, faces = ['start'], thickness = 5) +/// shell(case, faces = [START], thickness = 5) /// ``` /// /// ```no_run /// // Shell a sketch on face object on the end face. /// size = 100 -/// case = startSketchOn('XY') +/// case = startSketchOn(XY) /// |> startProfileAt([-size, -size], %) /// |> line(end = [2 * size, 0]) /// |> line(end = [0, 2 * size]) -/// |> tangentialArcTo([-size, size], %) +/// |> tangentialArc(endAbsolute = [-size, size]) /// |> close() /// |> extrude(length = 65) /// -/// thing1 = startSketchOn(case, 'end') +/// thing1 = startSketchOn(case, face = END) /// |> circle( center = [-size / 2, -size / 2], radius = 25 ) /// |> extrude(length = 50) /// -/// thing2 = startSketchOn(case, 'end') +/// thing2 = startSketchOn(case, face = END) /// |> circle( center = [size / 2, -size / 2], radius = 25 ) /// |> extrude(length = 50) /// /// // We put "thing1" in the shell function to shell the end face of the object. -/// shell(thing1, faces = ['end'], thickness = 5) +/// shell(thing1, faces = [END], thickness = 5) /// ``` /// /// ```no_run @@ -148,24 +150,24 @@ pub async fn shell(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([-size, -size], %) /// |> line(end = [2 * size, 0]) /// |> line(end = [0, 2 * size]) -/// |> tangentialArcTo([-size, size], %) +/// |> tangentialArc(endAbsolute = [-size, size]) /// |> close() /// |> extrude(length = 65) /// -/// thing1 = startSketchOn(case, 'end') +/// thing1 = startSketchOn(case, face = END) /// |> circle( center = [-size / 2, -size / 2], radius = 25 ) /// |> extrude(length = 50) /// -/// thing2 = startSketchOn(case, 'end') +/// thing2 = startSketchOn(case, face = END) /// |> circle( center = [size / 2, -size / 2], radius = 25) /// |> extrude(length = 50) /// /// // We put "thing1" and "thing2" in the shell function to shell the end face of the object. -/// shell([thing1, thing2], faces = ['end'], thickness = 5) +/// shell([thing1, thing2], faces = [END], thickness = 5) /// ``` #[stdlib { name = "shell", @@ -245,9 +247,9 @@ async fn inner_shell( /// Make the inside of a 3D object hollow. pub async fn hollow(exec_state: &mut ExecState, args: Args) -> Result { - let (thickness, solid): (f64, Box) = args.get_data_and_solid(exec_state)?; + let (thickness, solid) = args.get_data_and_solid(exec_state)?; - let value = inner_hollow(thickness, solid, exec_state, args).await?; + let value = inner_hollow(thickness.n, solid, exec_state, args).await?; Ok(KclValue::Solid { value }) } @@ -258,7 +260,7 @@ pub async fn hollow(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([-12, 12], %) /// |> line(end = [24, 0]) /// |> line(end = [0, -24]) @@ -270,7 +272,7 @@ pub async fn hollow(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([-12, 12], %) /// |> line(end = [24, 0]) /// |> line(end = [0, -24]) @@ -283,19 +285,19 @@ pub async fn hollow(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([-size, -size], %) /// |> line(end = [2 * size, 0]) /// |> line(end = [0, 2 * size]) -/// |> tangentialArcTo([-size, size], %) +/// |> tangentialArc(endAbsolute = [-size, size]) /// |> close() /// |> extrude(length = 65) /// -/// thing1 = startSketchOn(case, 'end') +/// thing1 = startSketchOn(case, face = END) /// |> circle( center = [-size / 2, -size / 2], radius = 25 ) /// |> extrude(length = 50) /// -/// thing2 = startSketchOn(case, 'end') +/// thing2 = startSketchOn(case, face = END) /// |> circle( center = [size / 2, -size / 2], radius = 25 ) /// |> extrude(length = 50) /// diff --git a/rust/kcl-lib/src/std/sketch.rs b/rust/kcl-lib/src/std/sketch.rs index 998460d37..57c933d18 100644 --- a/rust/kcl-lib/src/std/sketch.rs +++ b/rust/kcl-lib/src/std/sketch.rs @@ -4,6 +4,7 @@ use anyhow::Result; use indexmap::IndexMap; use kcl_derive_docs::stdlib; use kcmc::shared::Point2d as KPoint2d; // Point2d is already defined in this pkg, to impl ts_rs traits. +use kcmc::shared::Point3d as KPoint3d; // Point3d is already defined in this pkg, to impl ts_rs traits. use kcmc::{each_cmd as mcmd, length_unit::LengthUnit, shared::Angle, websocket::ModelingCmdReq, ModelingCmd}; use kittycad_modeling_cmds as kcmc; use kittycad_modeling_cmds::shared::PathSegment; @@ -11,10 +12,11 @@ use parse_display::{Display, FromStr}; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; +use super::utils::untype_point; use crate::{ errors::{KclError, KclErrorDetails}, execution::{ - types::{PrimitiveType, RuntimeType}, + types::{PrimitiveType, RuntimeType, UnitLen}, Artifact, ArtifactId, BasePath, CodeRef, ExecState, Face, GeoMeta, KclValue, Path, Plane, Point2d, Point3d, Sketch, SketchSurface, Solid, StartSketchOnFace, StartSketchOnPlane, TagEngineInfo, TagIdentifier, }, @@ -94,16 +96,165 @@ pub enum StartOrEnd { pub const NEW_TAG_KW: &str = "tag"; -/// Draw a line to a point. -pub async fn line(exec_state: &mut ExecState, args: Args) -> Result { - // let (to, sketch, tag): ([f64; 2], Sketch, Option) = args.get_data_and_sketch_and_tag()?; +pub async fn involute_circular(exec_state: &mut ExecState, args: Args) -> Result { let sketch = args.get_unlabeled_kw_arg_typed("sketch", &RuntimeType::Primitive(PrimitiveType::Sketch), exec_state)?; - let end = args.get_kw_arg_opt("end")?; - let end_absolute = args.get_kw_arg_opt("endAbsolute")?; + + let start_radius: TyF64 = args.get_kw_arg_typed("startRadius", &RuntimeType::length(), exec_state)?; + let end_radius: TyF64 = args.get_kw_arg_typed("endRadius", &RuntimeType::length(), exec_state)?; + let angle: TyF64 = args.get_kw_arg_typed("angle", &RuntimeType::angle(), exec_state)?; + let reverse = args.get_kw_arg_opt("reverse")?; + let tag = args.get_kw_arg_opt("tag")?; + let new_sketch = inner_involute_circular( + sketch, + start_radius.n, + end_radius.n, + angle.n, + reverse, + tag, + exec_state, + args, + ) + .await?; + Ok(KclValue::Sketch { + value: Box::new(new_sketch), + }) +} + +fn involute_curve(radius: f64, angle: f64) -> (f64, f64) { + ( + radius * (angle.cos() + angle * angle.sin()), + radius * (angle.sin() - angle * angle.cos()), + ) +} + +/// Extend the current sketch with a new involute circular curve. +/// +/// ```no_run +/// a = 10 +/// b = 14 +/// startSketchOn(XZ) +/// |> startProfileAt([0, 0], %) +/// |> involuteCircular(startRadius = a, endRadius = b, angle = 60) +/// |> involuteCircular(startRadius = a, endRadius = b, angle = 60, reverse = true) +/// ``` +#[stdlib { + name = "involuteCircular", + keywords = true, + unlabeled_first = true, + args = { + sketch = { docs = "Which sketch should this path be added to?"}, + start_radius = { docs = "The involute is described between two circles, start_radius is the radius of the inner circle."}, + end_radius = { docs = "The involute is described between two circles, end_radius is the radius of the outer circle."}, + angle = { docs = "The angle to rotate the involute by. A value of zero will produce a curve with a tangent along the x-axis at the start point of the curve."}, + reverse = { docs = "If reverse is true, the segment will start from the end of the involute, otherwise it will start from that start. Defaults to false."}, + tag = { docs = "Create a new tag which refers to this line"}, + } +}] +#[allow(clippy::too_many_arguments)] +async fn inner_involute_circular( + sketch: Sketch, + start_radius: f64, + end_radius: f64, + angle: f64, + reverse: Option, + tag: Option, + exec_state: &mut ExecState, + args: Args, +) -> Result { + let id = exec_state.next_uuid(); + let angle = Angle::from_degrees(angle); + let segment = PathSegment::CircularInvolute { + start_radius: LengthUnit(start_radius), + end_radius: LengthUnit(end_radius), + angle, + reverse: reverse.unwrap_or_default(), + }; + + args.batch_modeling_cmd( + id, + ModelingCmd::from(mcmd::ExtendPath { + path: sketch.id.into(), + segment, + }), + ) + .await?; + + let from = sketch.current_pen_position()?; + let mut end: KPoint3d = Default::default(); // ADAM: TODO impl this below. + let theta = f64::sqrt(end_radius * end_radius - start_radius * start_radius) / start_radius; + let (x, y) = involute_curve(start_radius, theta); + + end.x = x * angle.to_radians().cos() - y * angle.to_radians().sin(); + end.y = x * angle.to_radians().sin() + y * angle.to_radians().cos(); + + end.x -= start_radius * angle.to_radians().cos(); + end.y -= start_radius * angle.to_radians().sin(); + + if reverse.unwrap_or_default() { + end.x = -end.x; + } + + end.x += from.x; + end.y += from.y; + + // let path_json = path_to_json(); + // let end = args + // .send_modeling_cmd( + // exec_state.next_uuid(), + // ModelingCmd::EngineUtilEvaluatePath(mcmd::EngineUtilEvaluatePath { path_json, t: 1.0 }), + // ) + // .await?; + + // let end = match end { + // kittycad_modeling_cmds::websocket::OkWebSocketResponseData::Modeling { + // modeling_response: OkModelingCmdResponse::EngineUtilEvaluatePath(eval_path), + // } => eval_path.pos, + // other => { + // return Err(KclError::Engine(KclErrorDetails { + // source_ranges: vec![args.source_range], + // message: format!("Expected EngineUtilEvaluatePath response but found {other:?}"), + // })) + // } + // }; + + let current_path = Path::ToPoint { + base: BasePath { + from: from.into(), + to: [end.x, end.y], + tag: tag.clone(), + units: sketch.units, + geo_meta: GeoMeta { + id, + metadata: args.source_range.into(), + }, + }, + }; + + let mut new_sketch = sketch.clone(); + if let Some(tag) = &tag { + new_sketch.add_tag(tag, ¤t_path, exec_state); + } + new_sketch.paths.push(current_path); + Ok(new_sketch) +} + +/// Draw a line to a point. +pub async fn line(exec_state: &mut ExecState, args: Args) -> Result { + let sketch = args.get_unlabeled_kw_arg_typed("sketch", &RuntimeType::sketch(), exec_state)?; + let end = args.get_kw_arg_opt_typed("end", &RuntimeType::point2d(), exec_state)?; + let end_absolute = args.get_kw_arg_opt_typed("endAbsolute", &RuntimeType::point2d(), exec_state)?; let tag = args.get_kw_arg_opt(NEW_TAG_KW)?; - let new_sketch = inner_line(sketch, end_absolute, end, tag, exec_state, args).await?; + let new_sketch = inner_line( + sketch, + end_absolute.map(|p| untype_point(p).0), + end.map(|p| untype_point(p).0), + tag, + exec_state, + args, + ) + .await?; Ok(KclValue::Sketch { value: Box::new(new_sketch), }) @@ -114,7 +265,7 @@ pub async fn line(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) -/// // The 'end' argument means it ends at exactly [10, 0]. +/// // The END argument means it ends at exactly [10, 0]. /// // This is an absolute measurement, it is NOT relative to /// // the start of the sketch. /// |> line(endAbsolute = [10, 0]) @@ -267,11 +418,19 @@ async fn straight_line( pub async fn x_line(exec_state: &mut ExecState, args: Args) -> Result { let sketch = args.get_unlabeled_kw_arg_typed("sketch", &RuntimeType::Primitive(PrimitiveType::Sketch), exec_state)?; - let length = args.get_kw_arg_opt("length")?; - let end_absolute = args.get_kw_arg_opt("endAbsolute")?; + let length: Option = args.get_kw_arg_opt_typed("length", &RuntimeType::length(), exec_state)?; + let end_absolute: Option = args.get_kw_arg_opt_typed("endAbsolute", &RuntimeType::length(), exec_state)?; let tag = args.get_kw_arg_opt(NEW_TAG_KW)?; - let new_sketch = inner_x_line(sketch, length, end_absolute, tag, exec_state, args).await?; + let new_sketch = inner_x_line( + sketch, + length.map(|t| t.n), + end_absolute.map(|t| t.n), + tag, + exec_state, + args, + ) + .await?; Ok(KclValue::Sketch { value: Box::new(new_sketch), }) @@ -284,16 +443,16 @@ pub async fn x_line(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) /// |> xLine(length = 15) -/// |> angledLine({ +/// |> angledLine( /// angle = 80, /// length = 15, -/// }, %) +/// ) /// |> line(end = [8, -10]) /// |> xLine(length = 10) -/// |> angledLine({ +/// |> angledLine( /// angle = 120, /// length = 30, -/// }, %) +/// ) /// |> xLine(length = -15) /// |> close() /// @@ -336,11 +495,19 @@ async fn inner_x_line( pub async fn y_line(exec_state: &mut ExecState, args: Args) -> Result { let sketch = args.get_unlabeled_kw_arg_typed("sketch", &RuntimeType::Primitive(PrimitiveType::Sketch), exec_state)?; - let length = args.get_kw_arg_opt("length")?; - let end_absolute = args.get_kw_arg_opt("endAbsolute")?; + let length: Option = args.get_kw_arg_opt_typed("length", &RuntimeType::length(), exec_state)?; + let end_absolute: Option = args.get_kw_arg_opt_typed("endAbsolute", &RuntimeType::length(), exec_state)?; let tag = args.get_kw_arg_opt(NEW_TAG_KW)?; - let new_sketch = inner_y_line(sketch, length, end_absolute, tag, exec_state, args).await?; + let new_sketch = inner_y_line( + sketch, + length.map(|t| t.n), + end_absolute.map(|t| t.n), + tag, + exec_state, + args, + ) + .await?; Ok(KclValue::Sketch { value: Box::new(new_sketch), }) @@ -353,10 +520,10 @@ pub async fn y_line(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) /// |> yLine(length = 15) -/// |> angledLine({ +/// |> angledLine( /// angle = 30, /// length = 15, -/// }, %) +/// ) /// |> line(end = [8, -10]) /// |> yLine(length = -5) /// |> close() @@ -396,28 +563,32 @@ async fn inner_y_line( .await } -/// Data to draw an angled line. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] -#[ts(export)] -#[serde(rename_all = "camelCase", untagged)] -pub enum AngledLineData { - /// An angle and length with explicitly named parameters - AngleAndLengthNamed { - /// The angle of the line (in degrees). - angle: f64, - /// The length of the line. - length: f64, - }, - /// An angle and length given as a pair - AngleAndLengthPair([f64; 2]), -} - /// Draw an angled line. pub async fn angled_line(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch, tag): (AngledLineData, Sketch, Option) = - args.get_data_and_sketch_and_tag(exec_state)?; + let sketch = args.get_unlabeled_kw_arg_typed("sketch", &RuntimeType::sketch(), exec_state)?; + let angle: TyF64 = args.get_kw_arg_typed("angle", &RuntimeType::degrees(), exec_state)?; + let length: Option = args.get_kw_arg_opt_typed("length", &RuntimeType::length(), exec_state)?; + let length_x: Option = args.get_kw_arg_opt_typed("lengthX", &RuntimeType::length(), exec_state)?; + let length_y: Option = args.get_kw_arg_opt_typed("lengthY", &RuntimeType::length(), exec_state)?; + let end_absolute_x: Option = + args.get_kw_arg_opt_typed("endAbsoluteX", &RuntimeType::length(), exec_state)?; + let end_absolute_y: Option = + args.get_kw_arg_opt_typed("endAbsoluteY", &RuntimeType::length(), exec_state)?; + let tag = args.get_kw_arg_opt(NEW_TAG_KW)?; - let new_sketch = inner_angled_line(data, sketch, tag, exec_state, args).await?; + let new_sketch = inner_angled_line( + sketch, + angle.n, + length.map(|t| t.n), + length_x.map(|t| t.n), + length_y.map(|t| t.n), + end_absolute_x.map(|t| t.n), + end_absolute_y.map(|t| t.n), + tag, + exec_state, + args, + ) + .await?; Ok(KclValue::Sketch { value: Box::new(new_sketch), }) @@ -430,10 +601,10 @@ pub async fn angled_line(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) /// |> yLine(endAbsolute = 15) -/// |> angledLine({ +/// |> angledLine( /// angle = 30, /// length = 15, -/// }, %) +/// ) /// |> line(end = [8, -10]) /// |> yLine(endAbsolute = 0) /// |> close() @@ -442,24 +613,91 @@ pub async fn angled_line(exec_state: &mut ExecState, args: Args) -> Result, + length_x: Option, + length_y: Option, + end_absolute_x: Option, + end_absolute_y: Option, + tag: Option, + exec_state: &mut ExecState, + args: Args, +) -> Result { + let options_given = [length, length_x, length_y, end_absolute_x, end_absolute_y] + .iter() + .filter(|x| x.is_some()) + .count(); + if options_given > 1 { + return Err(KclError::Type(KclErrorDetails { + message: " one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given".to_string(), + source_ranges: vec![args.source_range], + })); + } + if let Some(length_x) = length_x { + return inner_angled_line_of_x_length(angle, length_x, sketch, tag, exec_state, args).await; + } + if let Some(length_y) = length_y { + return inner_angled_line_of_y_length(angle, length_y, sketch, tag, exec_state, args).await; + } + let angle_degrees = angle; + match (length, length_x, length_y, end_absolute_x, end_absolute_y) { + (Some(length), None, None, None, None) => { + inner_angled_line_length(sketch, angle_degrees, length, tag, exec_state, args).await + } + (None, Some(length_x), None, None, None) => { + inner_angled_line_of_x_length(angle_degrees, length_x, sketch, tag, exec_state, args).await + } + (None, None, Some(length_y), None, None) => { + inner_angled_line_of_y_length(angle_degrees, length_y, sketch, tag, exec_state, args).await + } + (None, None, None, Some(end_absolute_x), None) => { + inner_angled_line_to_x(angle_degrees, end_absolute_x, sketch, tag, exec_state, args).await + } + (None, None, None, None, Some(end_absolute_y)) => { + inner_angled_line_to_y(angle_degrees, end_absolute_y, sketch, tag, exec_state, args).await + } + (None, None, None, None, None) => Err(KclError::Type(KclErrorDetails { + message: "One of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` must be given".to_string(), + source_ranges: vec![args.source_range], + })), + _ => Err(KclError::Type(KclErrorDetails { + message: "Only One of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given" + .to_string(), + source_ranges: vec![args.source_range], + })), + } +} + +async fn inner_angled_line_length( + sketch: Sketch, + angle_degrees: f64, + length: f64, tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { let from = sketch.current_pen_position()?; - let (angle, length) = match data { - AngledLineData::AngleAndLengthNamed { angle, length } => (angle, length), - AngledLineData::AngleAndLengthPair(pair) => (pair[0], pair[1]), - }; //double check me on this one - mike let delta: [f64; 2] = [ - length * f64::cos(angle.to_radians()), - length * f64::sin(angle.to_radians()), + length * f64::cos(angle_degrees.to_radians()), + length * f64::sin(angle_degrees.to_radians()), ]; let relative = true; @@ -501,123 +739,53 @@ async fn inner_angled_line( Ok(new_sketch) } -/// Draw an angled line of a given x length. -pub async fn angled_line_of_x_length(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch, tag): (AngledLineData, Sketch, Option) = - args.get_data_and_sketch_and_tag(exec_state)?; - - let new_sketch = inner_angled_line_of_x_length(data, sketch, tag, exec_state, args).await?; - Ok(KclValue::Sketch { - value: Box::new(new_sketch), - }) -} - -/// Create a line segment from the current 2-dimensional sketch origin -/// along some angle (in degrees) for some relative length in the 'x' dimension. -/// -/// ```no_run -/// sketch001 = startSketchOn(XZ) -/// |> startProfileAt([0, 0], %) -/// |> angledLineOfXLength({ angle = 45, length = 10 }, %, $edge1) -/// |> angledLineOfXLength({ angle = -15, length = 20 }, %, $edge2) -/// |> line(end = [0, -5]) -/// |> close(tag = $edge3) -/// -/// extrusion = extrude(sketch001, length = 10) -/// ``` -#[stdlib { - name = "angledLineOfXLength", -}] async fn inner_angled_line_of_x_length( - data: AngledLineData, + angle_degrees: f64, + length: f64, sketch: Sketch, tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { - let (angle, length) = match data { - AngledLineData::AngleAndLengthNamed { angle, length } => (angle, length), - AngledLineData::AngleAndLengthPair(pair) => (pair[0], pair[1]), - }; - - if angle.abs() == 270.0 { + if angle_degrees.abs() == 270.0 { return Err(KclError::Type(KclErrorDetails { message: "Cannot have an x constrained angle of 270 degrees".to_string(), source_ranges: vec![args.source_range], })); } - if angle.abs() == 90.0 { + if angle_degrees.abs() == 90.0 { return Err(KclError::Type(KclErrorDetails { message: "Cannot have an x constrained angle of 90 degrees".to_string(), source_ranges: vec![args.source_range], })); } - let to = get_y_component(Angle::from_degrees(angle), length); + let to = get_y_component(Angle::from_degrees(angle_degrees), length); - let new_sketch = straight_line(StraightLineParams::relative(to.into(), sketch, tag), exec_state, args).await?; + let new_sketch = straight_line(StraightLineParams::relative(to, sketch, tag), exec_state, args).await?; Ok(new_sketch) } -/// Data to draw an angled line to a point. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] -#[ts(export)] -#[serde(rename_all = "camelCase")] -pub struct AngledLineToData { - /// The angle of the line. - pub angle: f64, - /// The point to draw to. - pub to: f64, -} - -/// Draw an angled line to a given x coordinate. -pub async fn angled_line_to_x(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch, tag): (AngledLineToData, Sketch, Option) = - args.get_data_and_sketch_and_tag(exec_state)?; - - let new_sketch = inner_angled_line_to_x(data, sketch, tag, exec_state, args).await?; - Ok(KclValue::Sketch { - value: Box::new(new_sketch), - }) -} - -/// Create a line segment from the current 2-dimensional sketch origin -/// along some angle (in degrees) for some length, ending at the provided value -/// in the 'x' dimension. -/// -/// ```no_run -/// exampleSketch = startSketchOn(XZ) -/// |> startProfileAt([0, 0], %) -/// |> angledLineToX({ angle = 30, to = 10 }, %) -/// |> line(end = [0, 10]) -/// |> line(end = [-10, 0]) -/// |> close() -/// -/// example = extrude(exampleSketch, length = 10) -/// ``` -#[stdlib { - name = "angledLineToX", -}] async fn inner_angled_line_to_x( - data: AngledLineToData, + angle_degrees: f64, + x_to: f64, sketch: Sketch, tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { let from = sketch.current_pen_position()?; - let AngledLineToData { angle, to: x_to } = data; - if angle.abs() == 270.0 { + if angle_degrees.abs() == 270.0 { return Err(KclError::Type(KclErrorDetails { message: "Cannot have an x constrained angle of 270 degrees".to_string(), source_ranges: vec![args.source_range], })); } - if angle.abs() == 90.0 { + if angle_degrees.abs() == 90.0 { return Err(KclError::Type(KclErrorDetails { message: "Cannot have an x constrained angle of 90 degrees".to_string(), source_ranges: vec![args.source_range], @@ -625,7 +793,7 @@ async fn inner_angled_line_to_x( } let x_component = x_to - from.x; - let y_component = x_component * f64::tan(angle.to_radians()); + let y_component = x_component * f64::tan(angle_degrees.to_radians()); let y_to = from.y + y_component; let new_sketch = straight_line( @@ -637,115 +805,53 @@ async fn inner_angled_line_to_x( Ok(new_sketch) } -/// Draw an angled line of a given y length. -pub async fn angled_line_of_y_length(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch, tag): (AngledLineData, Sketch, Option) = - args.get_data_and_sketch_and_tag(exec_state)?; - - let new_sketch = inner_angled_line_of_y_length(data, sketch, tag, exec_state, args).await?; - - Ok(KclValue::Sketch { - value: Box::new(new_sketch), - }) -} - -/// Create a line segment from the current 2-dimensional sketch origin -/// along some angle (in degrees) for some relative length in the 'y' dimension. -/// -/// ```no_run -/// exampleSketch = startSketchOn(XZ) -/// |> startProfileAt([0, 0], %) -/// |> line(end = [10, 0]) -/// |> angledLineOfYLength({ angle = 45, length = 10 }, %) -/// |> line(end = [0, 10]) -/// |> angledLineOfYLength({ angle = 135, length = 10 }, %) -/// |> line(end = [-10, 0]) -/// |> line(end = [0, -30]) -/// -/// example = extrude(exampleSketch, length = 10) -/// ``` -#[stdlib { - name = "angledLineOfYLength", -}] async fn inner_angled_line_of_y_length( - data: AngledLineData, + angle_degrees: f64, + length: f64, sketch: Sketch, tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { - let (angle, length) = match data { - AngledLineData::AngleAndLengthNamed { angle, length } => (angle, length), - AngledLineData::AngleAndLengthPair(pair) => (pair[0], pair[1]), - }; - - if angle.abs() == 0.0 { + if angle_degrees.abs() == 0.0 { return Err(KclError::Type(KclErrorDetails { message: "Cannot have a y constrained angle of 0 degrees".to_string(), source_ranges: vec![args.source_range], })); } - if angle.abs() == 180.0 { + if angle_degrees.abs() == 180.0 { return Err(KclError::Type(KclErrorDetails { message: "Cannot have a y constrained angle of 180 degrees".to_string(), source_ranges: vec![args.source_range], })); } - let to = get_x_component(Angle::from_degrees(angle), length); + let to = get_x_component(Angle::from_degrees(angle_degrees), length); - let new_sketch = straight_line(StraightLineParams::relative(to.into(), sketch, tag), exec_state, args).await?; + let new_sketch = straight_line(StraightLineParams::relative(to, sketch, tag), exec_state, args).await?; Ok(new_sketch) } -/// Draw an angled line to a given y coordinate. -pub async fn angled_line_to_y(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch, tag): (AngledLineToData, Sketch, Option) = - args.get_data_and_sketch_and_tag(exec_state)?; - - let new_sketch = inner_angled_line_to_y(data, sketch, tag, exec_state, args).await?; - Ok(KclValue::Sketch { - value: Box::new(new_sketch), - }) -} - -/// Create a line segment from the current 2-dimensional sketch origin -/// along some angle (in degrees) for some length, ending at the provided value -/// in the 'y' dimension. -/// -/// ```no_run -/// exampleSketch = startSketchOn(XZ) -/// |> startProfileAt([0, 0], %) -/// |> angledLineToY({ angle = 60, to = 20 }, %) -/// |> line(end = [-20, 0]) -/// |> angledLineToY({ angle = 70, to = 10 }, %) -/// |> close() -/// -/// example = extrude(exampleSketch, length = 10) -/// ``` -#[stdlib { - name = "angledLineToY", -}] async fn inner_angled_line_to_y( - data: AngledLineToData, + angle_degrees: f64, + y_to: f64, sketch: Sketch, tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { let from = sketch.current_pen_position()?; - let AngledLineToData { angle, to: y_to } = data; - if angle.abs() == 0.0 { + if angle_degrees.abs() == 0.0 { return Err(KclError::Type(KclErrorDetails { message: "Cannot have a y constrained angle of 0 degrees".to_string(), source_ranges: vec![args.source_range], })); } - if angle.abs() == 180.0 { + if angle_degrees.abs() == 180.0 { return Err(KclError::Type(KclErrorDetails { message: "Cannot have a y constrained angle of 180 degrees".to_string(), source_ranges: vec![args.source_range], @@ -753,7 +859,7 @@ async fn inner_angled_line_to_y( } let y_component = y_to - from.y; - let x_component = y_component / f64::tan(angle.to_radians()); + let x_component = y_component / f64::tan(angle_degrees.to_radians()); let x_to = from.x + x_component; let new_sketch = straight_line( @@ -766,17 +872,17 @@ async fn inner_angled_line_to_y( } /// Data for drawing an angled line that intersects with a given line. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase")] // TODO: make sure the docs on the args below are correct. pub struct AngledLineThatIntersectsData { /// The angle of the line. - pub angle: f64, + pub angle: TyF64, /// The tag of the line to intersect with. pub intersect_tag: TagIdentifier, /// The offset from the intersecting line. - pub offset: Option, + pub offset: Option, } /// Draw an angled line that intersects with a given line. @@ -811,7 +917,7 @@ pub async fn angled_line_that_intersects(exec_state: &mut ExecState, args: Args) #[stdlib { name = "angledLineThatIntersects", }] -async fn inner_angled_line_that_intersects( +pub async fn inner_angled_line_that_intersects( data: AngledLineThatIntersectsData, sketch: Sketch, tag: Option, @@ -828,19 +934,19 @@ async fn inner_angled_line_that_intersects( let from = sketch.current_pen_position()?; let to = intersection_with_parallel_line( - &[path.get_from().into(), path.get_to().into()], - data.offset.unwrap_or_default(), - data.angle, - from, + &[untype_point(path.get_from()).0, untype_point(path.get_to()).0], + data.offset.map(|t| t.n).unwrap_or_default(), + data.angle.n, + from.into(), ); - let new_sketch = straight_line(StraightLineParams::absolute(to.into(), sketch, tag), exec_state, args).await?; + let new_sketch = straight_line(StraightLineParams::absolute(to, sketch, tag), exec_state, args).await?; Ok(new_sketch) } /// Data for start sketch on. /// You can start a sketch on a plane or an solid. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase", untagged)] #[allow(clippy::large_enum_variant)] @@ -892,9 +998,14 @@ pub enum PlaneData { /// Start a sketch on a specific plane or face. pub async fn start_sketch_on(exec_state: &mut ExecState, args: Args) -> Result { - let (data, tag): (SketchData, Option) = args.get_data_and_optional_tag()?; + let data = args.get_unlabeled_kw_arg_typed( + "planeOrSolid", + &RuntimeType::Union(vec![RuntimeType::solid(), RuntimeType::plane()]), + exec_state, + )?; + let face = args.get_kw_arg_opt("face")?; - match inner_start_sketch_on(data, tag, exec_state, &args).await? { + match inner_start_sketch_on(data, face, exec_state, &args).await? { SketchSurface::Plane(value) => Ok(KclValue::Plane { value }), SketchSurface::Face(value) => Ok(KclValue::Face { value }), } @@ -930,7 +1041,7 @@ pub async fn start_sketch_on(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([1, 1], %) /// |> line(end = [8, 0]) /// |> line(end = [0, 8]) @@ -939,7 +1050,7 @@ pub async fn start_sketch_on(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([2, 2], %) /// |> line(end = [6, 0]) /// |> line(end = [0, 6]) @@ -961,7 +1072,7 @@ pub async fn start_sketch_on(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([1, 1], %) /// |> line(end = [8, 0]) /// |> line(end = [0, 8]) @@ -970,7 +1081,7 @@ pub async fn start_sketch_on(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([2, 2], %) /// |> line(end = [6, 0]) /// |> line(end = [0, 6]) @@ -990,7 +1101,7 @@ pub async fn start_sketch_on(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([1, 1], %) /// |> line(end = [8, 0]) /// |> line(end = [0, 8]) @@ -999,7 +1110,7 @@ pub async fn start_sketch_on(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([-8, 12], %) /// |> line(end = [0, 6]) /// |> line(end = [6, 0]) @@ -1023,7 +1134,7 @@ pub async fn start_sketch_on(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([4.5, -5], %) /// |> line(end = [0, 5]) /// |> line(end = [5, 0]) @@ -1049,7 +1160,7 @@ pub async fn start_sketch_on(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([4.5, -5], %) /// |> line(end = [0, 5]) /// |> line(end = [5, 0]) @@ -1061,13 +1172,11 @@ pub async fn start_sketch_on(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0, 0], %) /// |> line(end = [100.0, 0]) /// |> yLine(length = -100.0) @@ -1079,14 +1188,20 @@ pub async fn start_sketch_on(exec_state: &mut ExecState, args: Args) -> Result, + plane_or_solid: SketchData, + face: Option, exec_state: &mut ExecState, args: &Args, ) -> Result { - match data { + match plane_or_solid { SketchData::PlaneOrientation(plane_data) => { let plane = make_sketch_plane_from_orientation(plane_data, exec_state, args).await?; Ok(SketchSurface::Plane(plane)) @@ -1108,7 +1223,7 @@ async fn inner_start_sketch_on( } } SketchData::Solid(solid) => { - let Some(tag) = tag else { + let Some(tag) = face else { return Err(KclError::Type(KclErrorDetails { message: "Expected a tag for the face to sketch on".to_string(), source_ranges: vec![args.source_range], @@ -1167,9 +1282,9 @@ async fn make_sketch_plane_from_orientation( // TODO: ignoring the default planes here since we already created them, breaks the // front end for the feature tree which is stupid and we should fix it. let x_axis = match data { - PlaneData::NegXY => Point3d::new(-1.0, 0.0, 0.0), - PlaneData::NegXZ => Point3d::new(-1.0, 0.0, 0.0), - PlaneData::NegYZ => Point3d::new(0.0, -1.0, 0.0), + PlaneData::NegXY => Point3d::new(-1.0, 0.0, 0.0, UnitLen::Mm), + PlaneData::NegXZ => Point3d::new(-1.0, 0.0, 0.0, UnitLen::Mm), + PlaneData::NegYZ => Point3d::new(0.0, -1.0, 0.0, UnitLen::Mm), _ => plane.x_axis, }; args.batch_modeling_cmd( @@ -1211,10 +1326,9 @@ async fn make_sketch_plane_from_orientation( /// Start a new profile at a given point. pub async fn start_profile_at(exec_state: &mut ExecState, args: Args) -> Result { - let (start, sketch_surface, tag): ([f64; 2], SketchSurface, Option) = - args.get_data_and_sketch_surface()?; + let (start, sketch_surface, tag) = args.get_data_and_sketch_surface()?; - let sketch = inner_start_profile_at(start, sketch_surface, tag, exec_state, args).await?; + let sketch = inner_start_profile_at([start[0].n, start[1].n], sketch_surface, tag, exec_state, args).await?; Ok(KclValue::Sketch { value: Box::new(sketch), }) @@ -1381,9 +1495,9 @@ pub async fn profile_start_x(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([5, 2], %) -/// |> angledLine([-26.6, 50], %) -/// |> angledLine([90, 50], %) -/// |> angledLineToX({ angle = 30, to = profileStartX(%) }, %) +/// |> angledLine(angle = -26.6, length = 50) +/// |> angledLine(angle = 90, length = 50) +/// |> angledLine(angle = 30, endAbsoluteX = profileStartX(%)) /// ``` #[stdlib { name = "profileStartX" @@ -1406,8 +1520,8 @@ pub async fn profile_start_y(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([5, 2], %) -/// |> angledLine({ angle = -60, length = 14 }, %) -/// |> angledLineToY({ angle = 30, to = profileStartY(%) }, %) +/// |> angledLine(angle = -60, length = 14 ) +/// |> angledLine(angle = 30, endAbsoluteY = profileStartY(%)) /// ``` #[stdlib { name = "profileStartY" @@ -1430,8 +1544,8 @@ pub async fn profile_start(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([5, 2], %) -/// |> angledLine({ angle = 120, length = 50 }, %, $seg01) -/// |> angledLine({ angle = segAng(seg01) + 120, length = 50 }, %) +/// |> angledLine(angle = 120, length = 50 , tag = $seg01) +/// |> angledLine(angle = segAng(seg01) + 120, length = 50 ) /// |> line(end = profileStart(%)) /// |> close() /// |> extrude(length = 20) @@ -1491,7 +1605,7 @@ pub(crate) async fn inner_close( args: Args, ) -> Result { let from = sketch.current_pen_position()?; - let to: Point2d = sketch.start.from.into(); + let to: Point2d = sketch.start.get_from().into(); let id = exec_state.next_uuid(); @@ -1522,7 +1636,7 @@ pub(crate) async fn inner_close( } /// Data to draw an arc. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase", untagged)] pub enum ArcData { @@ -1531,34 +1645,34 @@ pub enum ArcData { /// The start angle. #[serde(rename = "angleStart")] #[schemars(range(min = -360.0, max = 360.0))] - angle_start: f64, + angle_start: TyF64, /// The end angle. #[serde(rename = "angleEnd")] #[schemars(range(min = -360.0, max = 360.0))] - angle_end: f64, + angle_end: TyF64, /// The radius. - radius: f64, + radius: TyF64, }, /// Center, to and radius with an optional tag. CenterToRadius { /// The center. - center: [f64; 2], + center: [TyF64; 2], /// The to point. - to: [f64; 2], + to: [TyF64; 2], /// The radius. - radius: f64, + radius: TyF64, }, } /// Data to draw a three point arc (arcTo). -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase")] pub struct ArcToData { /// End point of the arc. A point in 3D space - pub end: [f64; 2], + pub end: [TyF64; 2], /// Interior point of the arc. A point in 3D space - pub interior: [f64; 2], + pub interior: [TyF64; 2], } /// Draw an arc. @@ -1612,14 +1726,26 @@ pub(crate) async fn inner_arc( angle_end, radius, } => { - let a_start = Angle::from_degrees(*angle_start); - let a_end = Angle::from_degrees(*angle_end); - let (center, end) = arc_center_and_end(from, a_start, a_end, *radius); - (center, a_start, a_end, *radius, end) + let a_start = Angle::from_degrees(angle_start.n); + let a_end = Angle::from_degrees(angle_end.n); + let (center, end) = arc_center_and_end(from.into(), a_start, a_end, radius.n); + (center, a_start, a_end, radius.n, end) } ArcData::CenterToRadius { center, to, radius } => { - let (angle_start, angle_end) = arc_angles(from, to.into(), center.into(), *radius, args.source_range)?; - (center.into(), angle_start, angle_end, *radius, to.into()) + let (angle_start, angle_end) = arc_angles( + from.into(), + untype_point(to.clone()).0, + untype_point(center.clone()).0, + radius.n, + args.source_range, + )?; + ( + untype_point(center.clone()).0, + angle_start, + angle_end, + radius.n, + untype_point(to.clone()).0, + ) } }; @@ -1651,7 +1777,7 @@ pub(crate) async fn inner_arc( let current_path = Path::Arc { base: BasePath { from: from.into(), - to: end.into(), + to: end, tag: tag.clone(), units: sketch.units, geo_meta: GeoMeta { @@ -1659,7 +1785,7 @@ pub(crate) async fn inner_arc( metadata: args.source_range.into(), }, }, - center: center.into(), + center, radius, ccw, }; @@ -1720,13 +1846,13 @@ pub(crate) async fn inner_arc_to( path: sketch.id.into(), segment: PathSegment::ArcTo { end: kcmc::shared::Point3d { - x: LengthUnit(data.end[0]), - y: LengthUnit(data.end[1]), + x: LengthUnit(data.end[0].n), + y: LengthUnit(data.end[1].n), z: LengthUnit(0.0), }, interior: kcmc::shared::Point3d { - x: LengthUnit(data.interior[0]), - y: LengthUnit(data.interior[1]), + x: LengthUnit(data.interior[0].n), + y: LengthUnit(data.interior[1].n), z: LengthUnit(0.0), }, relative: false, @@ -1737,12 +1863,12 @@ pub(crate) async fn inner_arc_to( let start = [from.x, from.y]; let interior = data.interior; - let end = data.end; + let end = data.end.clone(); let current_path = Path::ArcThreePoint { base: BasePath { from: from.into(), - to: data.end, + to: untype_point(data.end).0, tag: tag.clone(), units: sketch.units, geo_meta: GeoMeta { @@ -1751,8 +1877,8 @@ pub(crate) async fn inner_arc_to( }, }, p1: start, - p2: interior, - p3: end, + p2: untype_point(interior).0, + p3: untype_point(end).0, }; let mut new_sketch = sketch.clone(); @@ -1765,58 +1891,158 @@ pub(crate) async fn inner_arc_to( Ok(new_sketch) } -/// Data to draw a tangential arc. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, JsonSchema, ts_rs::TS)] -#[ts(export)] -#[serde(rename_all = "camelCase", untagged)] -pub enum TangentialArcData { - RadiusAndOffset { - /// Radius of the arc. - /// Not to be confused with Raiders of the Lost Ark. - radius: f64, - /// Offset of the arc, in degrees. - offset: f64, - }, -} - -/// Draw a tangential arc. +/// Draw a tangential arc to a specific point. pub async fn tangential_arc(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch, tag): (TangentialArcData, Sketch, Option) = - args.get_data_and_sketch_and_tag(exec_state)?; + let sketch = + args.get_unlabeled_kw_arg_typed("sketch", &RuntimeType::Primitive(PrimitiveType::Sketch), exec_state)?; + let end = args.get_kw_arg_opt_typed("end", &RuntimeType::point2d(), exec_state)?; + let end_absolute = args.get_kw_arg_opt_typed("endAbsolute", &RuntimeType::point2d(), exec_state)?; + let radius = args.get_kw_arg_opt_typed("radius", &RuntimeType::length(), exec_state)?; + let angle = args.get_kw_arg_opt_typed("angle", &RuntimeType::angle(), exec_state)?; + let tag = args.get_kw_arg_opt(NEW_TAG_KW)?; - let new_sketch = inner_tangential_arc(data, sketch, tag, exec_state, args).await?; + let new_sketch = inner_tangential_arc( + sketch, + end_absolute.map(|p| untype_point(p).0), + end.map(|p| untype_point(p).0), + radius, + angle, + tag, + exec_state, + args, + ) + .await?; Ok(KclValue::Sketch { value: Box::new(new_sketch), }) } -/// Draw a curved line segment along part of an imaginary circle. +/// Starting at the current sketch's origin, draw a curved line segment along +/// some part of an imaginary circle until it reaches the desired (x, y) +/// coordinates. /// -/// The arc is constructed such that the last line segment is placed tangent -/// to the imaginary circle of the specified radius. The resulting arc is the -/// segment of the imaginary circle from that tangent point for 'offset' -/// degrees along the imaginary circle. +/// When using radius and angle, draw a curved line segment along part of an +/// imaginary circle. The arc is constructed such that the last line segment is +/// placed tangent to the imaginary circle of the specified radius. The +/// resulting arc is the segment of the imaginary circle from that tangent point +/// for 'angle' degrees along the imaginary circle. /// /// ```no_run /// exampleSketch = startSketchOn(XZ) /// |> startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( +/// angle = 45, +/// length = 10, +/// ) +/// |> tangentialArc(end = [0, -10]) +/// |> line(end = [-10, 0]) +/// |> close() +/// +/// example = extrude(exampleSketch, length = 10) +/// ``` +/// +/// ```no_run +/// exampleSketch = startSketchOn(XZ) +/// |> startProfileAt([0, 0], %) +/// |> angledLine( /// angle = 60, /// length = 10, -/// }, %) -/// |> tangentialArc({ radius = 10, offset = -120 }, %) -/// |> angledLine({ +/// ) +/// |> tangentialArc(endAbsolute = [15, 15]) +/// |> line(end = [10, -15]) +/// |> close() +/// +/// example = extrude(exampleSketch, length = 10) +/// ``` +/// +/// ```no_run +/// exampleSketch = startSketchOn(XZ) +/// |> startProfileAt([0, 0], %) +/// |> angledLine( +/// angle = 60, +/// length = 10, +/// ) +/// |> tangentialArc(radius = 10, angle = -120) +/// |> angledLine( /// angle = -60, /// length = 10, -/// }, %) +/// ) /// |> close() /// /// example = extrude(exampleSketch, length = 10) /// ``` #[stdlib { name = "tangentialArc", + keywords = true, + unlabeled_first = true, + args = { + sketch = { docs = "Which sketch should this path be added to?"}, + end_absolute = { docs = "Which absolute point should this arc go to? Incompatible with `end`, `radius`, and `offset`."}, + end = { docs = "How far away (along the X and Y axes) should this arc go? Incompatible with `endAbsolute`, `radius`, and `offset`.", include_in_snippet = true }, + radius = { docs = "Radius of the imaginary circle. `angle` must be given. Incompatible with `end` and `endAbsolute`."}, + angle = { docs = "Offset of the arc in degrees. `radius` must be given. Incompatible with `end` and `endAbsolute`."}, + tag = { docs = "Create a new tag which refers to this arc"}, + } }] +#[allow(clippy::too_many_arguments)] async fn inner_tangential_arc( + sketch: Sketch, + end_absolute: Option<[f64; 2]>, + end: Option<[f64; 2]>, + radius: Option, + angle: Option, + tag: Option, + exec_state: &mut ExecState, + args: Args, +) -> Result { + match (end_absolute, end, radius, angle) { + (Some(point), None, None, None) => { + inner_tangential_arc_to_point(sketch, point, true, tag, exec_state, args).await + } + (None, Some(point), None, None) => { + inner_tangential_arc_to_point(sketch, point, false, tag, exec_state, args).await + } + (None, None, Some(radius), Some(angle)) => { + let data = TangentialArcData::RadiusAndOffset { radius, offset: angle }; + inner_tangential_arc_radius_angle(data, sketch, tag, exec_state, args).await + } + (Some(_), Some(_), None, None) => Err(KclError::Semantic(KclErrorDetails { + source_ranges: vec![args.source_range], + message: "You cannot give both `end` and `endAbsolute` params, you have to choose one or the other" + .to_owned(), + })), + (None, None, Some(_), None) | (None, None, None, Some(_)) => Err(KclError::Semantic(KclErrorDetails { + source_ranges: vec![args.source_range], + message: "You must supply both `radius` and `angle` arguments".to_owned(), + })), + (_, _, _, _) => Err(KclError::Semantic(KclErrorDetails { + source_ranges: vec![args.source_range], + message: "You must supply `end`, `endAbsolute`, or both `radius` and `angle` arguments".to_owned(), + })), + } +} + +/// Data to draw a tangential arc. +#[derive(Debug, Clone, Serialize, PartialEq, JsonSchema, ts_rs::TS)] +#[ts(export)] +#[serde(rename_all = "camelCase", untagged)] +pub enum TangentialArcData { + RadiusAndOffset { + /// Radius of the arc. + /// Not to be confused with Raiders of the Lost Ark. + radius: TyF64, + /// Offset of the arc, in degrees. + offset: TyF64, + }, +} + +/// Draw a curved line segment along part of an imaginary circle. +/// +/// The arc is constructed such that the last line segment is placed tangent +/// to the imaginary circle of the specified radius. The resulting arc is the +/// segment of the imaginary circle from that tangent point for 'angle' +/// degrees along the imaginary circle. +async fn inner_tangential_arc_radius_angle( data: TangentialArcData, sketch: Sketch, tag: Option, @@ -1833,7 +2059,7 @@ async fn inner_tangential_arc( let (center, to, ccw) = match data { TangentialArcData::RadiusAndOffset { radius, offset } => { // KCL stdlib types use degrees. - let offset = Angle::from_degrees(offset); + let offset = Angle::from_degrees(offset.n); // Calculate the end point from the angle and radius. // atan2 outputs radians. @@ -1855,26 +2081,26 @@ async fn inner_tangential_arc( // but the above logic *should* capture that behavior let start_angle = previous_end_tangent + tangent_to_arc_start_angle; let end_angle = start_angle + offset; - let (center, to) = arc_center_and_end(from, start_angle, end_angle, radius); + let (center, to) = arc_center_and_end(from.into(), start_angle, end_angle, radius.n); args.batch_modeling_cmd( id, ModelingCmd::from(mcmd::ExtendPath { path: sketch.id.into(), segment: PathSegment::TangentialArc { - radius: LengthUnit(radius), + radius: LengthUnit(radius.n), offset, }, }), ) .await?; - (center, to.into(), ccw) + (center, to, ccw) } }; let current_path = Path::TangentialArc { ccw, - center: center.into(), + center, base: BasePath { from: from.into(), to, @@ -1907,49 +2133,10 @@ fn tan_arc_to(sketch: &Sketch, to: &[f64; 2]) -> ModelingCmd { }) } -/// Draw a tangential arc to a specific point. -pub async fn tangential_arc_to(exec_state: &mut ExecState, args: Args) -> Result { - let (to, sketch, tag): ([f64; 2], Sketch, Option) = args.get_data_and_sketch_and_tag(exec_state)?; - - let new_sketch = inner_tangential_arc_to(to, sketch, tag, exec_state, args).await?; - Ok(KclValue::Sketch { - value: Box::new(new_sketch), - }) -} - -/// Draw a tangential arc to point some distance away.. -pub async fn tangential_arc_to_relative(exec_state: &mut ExecState, args: Args) -> Result { - let (delta, sketch, tag): ([f64; 2], Sketch, Option) = args.get_data_and_sketch_and_tag(exec_state)?; - - let new_sketch = inner_tangential_arc_to_relative(delta, sketch, tag, exec_state, args).await?; - Ok(KclValue::Sketch { - value: Box::new(new_sketch), - }) -} - -/// Starting at the current sketch's origin, draw a curved line segment along -/// some part of an imaginary circle until it reaches the desired (x, y) -/// coordinates. -/// -/// ```no_run -/// exampleSketch = startSketchOn(XZ) -/// |> startProfileAt([0, 0], %) -/// |> angledLine({ -/// angle = 60, -/// length = 10, -/// }, %) -/// |> tangentialArcTo([15, 15], %) -/// |> line(end = [10, -15]) -/// |> close() -/// -/// example = extrude(exampleSketch, length = 10) -/// ``` -#[stdlib { - name = "tangentialArcTo", -}] -async fn inner_tangential_arc_to( - to: [f64; 2], +async fn inner_tangential_arc_to_point( sketch: Sketch, + point: [f64; 2], + is_absolute: bool, tag: Option, exec_state: &mut ExecState, args: Args, @@ -1957,6 +2144,12 @@ async fn inner_tangential_arc_to( let from: Point2d = sketch.current_pen_position()?; let tangent_info = sketch.get_tangential_info_from_paths(); let tan_previous_point = tangent_info.tan_previous_point(from.into()); + + let to = if is_absolute { + point + } else { + [from.x + point[0], from.y + point[1]] + }; let [to_x, to_y] = to; let result = get_tangential_arc_to_info(TangentialArcInfoInput { arc_start_point: [from.x, from.y], @@ -1965,75 +2158,6 @@ async fn inner_tangential_arc_to( obtuse: true, }); - let delta = [to_x - from.x, to_y - from.y]; - let id = exec_state.next_uuid(); - args.batch_modeling_cmd(id, tan_arc_to(&sketch, &delta)).await?; - - let current_path = Path::TangentialArcTo { - base: BasePath { - from: from.into(), - to, - tag: tag.clone(), - units: sketch.units, - geo_meta: GeoMeta { - id, - metadata: args.source_range.into(), - }, - }, - center: result.center, - ccw: result.ccw > 0, - }; - - let mut new_sketch = sketch.clone(); - if let Some(tag) = &tag { - new_sketch.add_tag(tag, ¤t_path, exec_state); - } - - new_sketch.paths.push(current_path); - - Ok(new_sketch) -} - -/// Starting at the current sketch's origin, draw a curved line segment along -/// some part of an imaginary circle until it reaches a point the given (x, y) -/// distance away. -/// -/// ```no_run -/// exampleSketch = startSketchOn(XZ) -/// |> startProfileAt([0, 0], %) -/// |> angledLine({ -/// angle = 45, -/// length = 10, -/// }, %) -/// |> tangentialArcToRelative([0, -10], %) -/// |> line(end = [-10, 0]) -/// |> close() -/// -/// example = extrude(exampleSketch, length = 10) -/// ``` -#[stdlib { - name = "tangentialArcToRelative", -}] -async fn inner_tangential_arc_to_relative( - delta: [f64; 2], - sketch: Sketch, - tag: Option, - exec_state: &mut ExecState, - args: Args, -) -> Result { - let from: Point2d = sketch.current_pen_position()?; - let to = [from.x + delta[0], from.y + delta[1]]; - let tangent_info = sketch.get_tangential_info_from_paths(); - let tan_previous_point = tangent_info.tan_previous_point(from.into()); - - let [dx, dy] = delta; - let result = get_tangential_arc_to_info(TangentialArcInfoInput { - arc_start_point: [from.x, from.y], - arc_end_point: [from.x + dx, from.y + dy], - tan_previous_point, - obtuse: true, - }); - if result.center[0].is_infinite() { return Err(KclError::Semantic(KclErrorDetails { source_ranges: vec![args.source_range], @@ -2050,6 +2174,11 @@ async fn inner_tangential_arc_to_relative( })); } + let delta = if is_absolute { + [to_x - from.x, to_y - from.y] + } else { + point + }; let id = exec_state.next_uuid(); args.batch_modeling_cmd(id, tan_arc_to(&sketch, &delta)).await?; @@ -2079,16 +2208,16 @@ async fn inner_tangential_arc_to_relative( } /// Data to draw a bezier curve. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(rename_all = "camelCase")] pub struct BezierData { /// The to point. - pub to: [f64; 2], + pub to: [TyF64; 2], /// The first control point. - pub control1: [f64; 2], + pub control1: [TyF64; 2], /// The second control point. - pub control2: [f64; 2], + pub control2: [TyF64; 2], } /// Draw a bezier curve. @@ -2132,8 +2261,8 @@ async fn inner_bezier_curve( let from = sketch.current_pen_position()?; let relative = true; - let delta = data.to; - let to = [from.x + data.to[0], from.y + data.to[1]]; + let delta = data.to.clone(); + let to = [from.x + data.to[0].n, from.y + data.to[1].n]; let id = exec_state.next_uuid(); @@ -2142,9 +2271,13 @@ async fn inner_bezier_curve( ModelingCmd::from(mcmd::ExtendPath { path: sketch.id.into(), segment: PathSegment::Bezier { - control1: KPoint2d::from(data.control1).with_z(0.0).map(LengthUnit), - control2: KPoint2d::from(data.control2).with_z(0.0).map(LengthUnit), - end: KPoint2d::from(delta).with_z(0.0).map(LengthUnit), + control1: KPoint2d::from(untype_point(data.control1).0) + .with_z(0.0) + .map(LengthUnit), + control2: KPoint2d::from(untype_point(data.control2).0) + .with_z(0.0) + .map(LengthUnit), + end: KPoint2d::from(untype_point(delta).0).with_z(0.0).map(LengthUnit), relative, }, }), diff --git a/rust/kcl-lib/src/std/sweep.rs b/rust/kcl-lib/src/std/sweep.rs index 5a50119b6..d5c3e4cf6 100644 --- a/rust/kcl-lib/src/std/sweep.rs +++ b/rust/kcl-lib/src/std/sweep.rs @@ -5,9 +5,9 @@ use kcl_derive_docs::stdlib; use kcmc::{each_cmd as mcmd, length_unit::LengthUnit, ModelingCmd}; use kittycad_modeling_cmds::{self as kcmc}; use schemars::JsonSchema; -use serde::{Deserialize, Serialize}; +use serde::Serialize; -use super::DEFAULT_TOLERANCE; +use super::{args::TyF64, DEFAULT_TOLERANCE}; use crate::{ errors::KclError, execution::{types::RuntimeType, ExecState, Helix, KclValue, Sketch, Solid}, @@ -16,7 +16,7 @@ use crate::{ }; /// A path to sweep along. -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS, JsonSchema)] #[ts(export)] #[serde(untagged)] pub enum SweepPath { @@ -29,12 +29,19 @@ pub async fn sweep(exec_state: &mut ExecState, args: Args) -> Result = args.get_kw_arg_opt_typed("tolerance", &RuntimeType::count(), exec_state)?; let tag_start = args.get_kw_arg_opt("tagStart")?; let tag_end = args.get_kw_arg_opt("tagEnd")?; let value = inner_sweep( - sketches, path, sectional, tolerance, tag_start, tag_end, exec_state, args, + sketches, + path, + sectional, + tolerance.map(|t| t.n), + tag_start, + tag_end, + exec_state, + args, ) .await?; Ok(value.into()) @@ -58,15 +65,9 @@ pub async fn sweep(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0.05, 0.05], %) /// |> line(end = [0, 7]) -/// |> tangentialArc({ -/// offset: 90, -/// radius: 5 -/// }, %) +/// |> tangentialArc(angle = 90, radius = 5) /// |> line(end = [-3, 0]) -/// |> tangentialArc({ -/// offset: -90, -/// radius: 5 -/// }, %) +/// |> tangentialArc(angle = -90, radius = 5) /// |> line(end = [0, 7]) /// /// // Create a hole for the pipe. @@ -105,20 +106,20 @@ pub async fn sweep(exec_state: &mut ExecState, args: Args) -> Result sweep(path = helixPath) /// ``` /// -/// ``` +/// ```no_run /// // Sweep two sketches along the same path. /// /// sketch001 = startSketchOn(XY) /// rectangleSketch = startProfileAt([-200, 23.86], sketch001) -/// |> angledLine([0, 73.47], %, $rectangleSegmentA001) -/// |> angledLine([ -/// segAng(rectangleSegmentA001) - 90, -/// 50.61 -/// ], %) -/// |> angledLine([ -/// segAng(rectangleSegmentA001), -/// -segLen(rectangleSegmentA001) -/// ], %) +/// |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001) +/// |> angledLine( +/// angle = segAng(rectangleSegmentA001) - 90, +/// length = 50.61, +/// ) +/// |> angledLine( +/// angle = segAng(rectangleSegmentA001), +/// length = -segLen(rectangleSegmentA001), +/// ) /// |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) /// |> close() /// @@ -127,10 +128,7 @@ pub async fn sweep(exec_state: &mut ExecState, args: Args) -> Result yLine(length = 231.81) -/// |> tangentialArc({ -/// radius = 80, -/// offset = -90, -/// }, %) +/// |> tangentialArc(radius = 80, angle = -90) /// |> xLine(length = 384.93) /// /// sweep([rectangleSketch, circleSketch], path = sweepPath) @@ -144,10 +142,7 @@ pub async fn sweep(exec_state: &mut ExecState, args: Args) -> Result yLine(length = 231.81) -/// |> tangentialArc({ -/// radius = 80, -/// offset = -90, -/// }, %) +/// |> tangentialArc(radius = 80, angle = -90) /// |> xLine(length = 384.93) /// /// sweep(circleSketch, path = sweepPath, sectional = true) @@ -214,5 +209,15 @@ async fn inner_sweep( ); } + // Hide the artifact from the sketch or helix. + args.batch_modeling_cmd( + exec_state.next_uuid(), + ModelingCmd::from(mcmd::ObjectVisible { + object_id: trajectory.into(), + hidden: true, + }), + ) + .await?; + Ok(solids) } diff --git a/rust/kcl-lib/src/std/transform.rs b/rust/kcl-lib/src/std/transform.rs index f1940ed33..c8da689e7 100644 --- a/rust/kcl-lib/src/std/transform.rs +++ b/rust/kcl-lib/src/std/transform.rs @@ -17,6 +17,8 @@ use crate::{ std::Args, }; +use super::args::TyF64; + /// Scale a solid or a sketch. pub async fn scale(exec_state: &mut ExecState, args: Args) -> Result { let objects = args.get_unlabeled_kw_arg_typed( @@ -28,9 +30,9 @@ pub async fn scale(exec_state: &mut ExecState, args: Args) -> Result = args.get_kw_arg_opt_typed("x", &RuntimeType::count(), exec_state)?; + let scale_y: Option = args.get_kw_arg_opt_typed("y", &RuntimeType::count(), exec_state)?; + let scale_z: Option = args.get_kw_arg_opt_typed("z", &RuntimeType::count(), exec_state)?; let global = args.get_kw_arg_opt("global")?; // Ensure at least one scale value is provided. @@ -41,7 +43,16 @@ pub async fn scale(exec_state: &mut ExecState, args: Args) -> Result Result startProfileAt([0.05, 0.05], %) /// |> line(end = [0, 7]) -/// |> tangentialArc({ -/// offset: 90, -/// radius: 5 -/// }, %) +/// |> tangentialArc(angle = 90, radius = 5) /// |> line(end = [-3, 0]) -/// |> tangentialArc({ -/// offset: -90, -/// radius: 5 -/// }, %) +/// |> tangentialArc(angle = -90, radius = 5) /// |> line(end = [0, 7]) /// /// // Create a hole for the pipe. @@ -113,15 +118,15 @@ pub async fn scale(exec_state: &mut ExecState, args: Args) -> Result angledLine([0, 73.47], %, $rectangleSegmentA001) -/// |> angledLine([ -/// segAng(rectangleSegmentA001) - 90, -/// 50.61 -/// ], %) -/// |> angledLine([ -/// segAng(rectangleSegmentA001), -/// -segLen(rectangleSegmentA001) -/// ], %) +/// |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001) +/// |> angledLine( +/// angle = segAng(rectangleSegmentA001) - 90, +/// length = 50.61, +/// ) +/// |> angledLine( +/// angle = segAng(rectangleSegmentA001), +/// length = -segLen(rectangleSegmentA001), +/// ) /// |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) /// |> close() /// @@ -130,10 +135,7 @@ pub async fn scale(exec_state: &mut ExecState, args: Args) -> Result yLine(length = 231.81) -/// |> tangentialArc({ -/// radius = 80, -/// offset = -90, -/// }, %) +/// |> tangentialArc(radius = 80, angle = -90) /// |> xLine(length = 384.93) /// /// parts = sweep([rectangleSketch, circleSketch], path = sweepPath) @@ -209,9 +211,9 @@ pub async fn translate(exec_state: &mut ExecState, args: Args) -> Result = args.get_kw_arg_opt_typed("x", &RuntimeType::length(), exec_state)?; + let translate_y: Option = args.get_kw_arg_opt_typed("y", &RuntimeType::length(), exec_state)?; + let translate_z: Option = args.get_kw_arg_opt_typed("z", &RuntimeType::length(), exec_state)?; let global = args.get_kw_arg_opt("global")?; // Ensure at least one translation value is provided. @@ -222,7 +224,16 @@ pub async fn translate(exec_state: &mut ExecState, args: Args) -> Result Result startProfileAt([0.05, 0.05], %) /// |> line(end = [0, 7]) -/// |> tangentialArc({ -/// offset: 90, -/// radius: 5 -/// }, %) +/// |> tangentialArc(angle = 90, radius = 5) /// |> line(end = [-3, 0]) -/// |> tangentialArc({ -/// offset: -90, -/// radius: 5 -/// }, %) +/// |> tangentialArc(angle = -90, radius = 5) /// |> line(end = [0, 7]) /// /// // Create a hole for the pipe. @@ -301,15 +306,15 @@ pub async fn translate(exec_state: &mut ExecState, args: Args) -> Result angledLine([0, 73.47], %, $rectangleSegmentA001) -/// |> angledLine([ -/// segAng(rectangleSegmentA001) - 90, -/// 50.61 -/// ], %) -/// |> angledLine([ -/// segAng(rectangleSegmentA001), -/// -segLen(rectangleSegmentA001) -/// ], %) +/// |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001) +/// |> angledLine( +/// angle = segAng(rectangleSegmentA001) - 90, +/// length = 50.61, +/// ) +/// |> angledLine( +/// angle = segAng(rectangleSegmentA001), +/// length = -segLen(rectangleSegmentA001), +/// ) /// |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) /// |> close() /// @@ -318,10 +323,7 @@ pub async fn translate(exec_state: &mut ExecState, args: Args) -> Result yLine(length = 231.81) -/// |> tangentialArc({ -/// radius = 80, -/// offset = -90, -/// }, %) +/// |> tangentialArc(radius = 80, angle = -90) /// |> xLine(length = 384.93) /// /// parts = sweep([rectangleSketch, circleSketch], path = sweepPath) @@ -447,11 +449,11 @@ pub async fn rotate(exec_state: &mut ExecState, args: Args) -> Result = args.get_kw_arg_opt_typed("roll", &RuntimeType::angle(), exec_state)?; + let pitch: Option = args.get_kw_arg_opt_typed("pitch", &RuntimeType::angle(), exec_state)?; + let yaw: Option = args.get_kw_arg_opt_typed("yaw", &RuntimeType::angle(), exec_state)?; + let axis: Option<[TyF64; 3]> = args.get_kw_arg_opt_typed("axis", &RuntimeType::point3d(), exec_state)?; + let angle: Option = args.get_kw_arg_opt_typed("angle", &RuntimeType::angle(), exec_state)?; let global = args.get_kw_arg_opt("global")?; // Check if no rotation values are provided. @@ -500,42 +502,53 @@ pub async fn rotate(exec_state: &mut ExecState, args: Args) -> Result Result startProfileAt([0.05, 0.05], %) /// |> line(end = [0, 7]) -/// |> tangentialArc({ -/// offset: 90, -/// radius: 5 -/// }, %) +/// |> tangentialArc(angle = 90, radius = 5) /// |> line(end = [-3, 0]) -/// |> tangentialArc({ -/// offset: -90, -/// radius: 5 -/// }, %) +/// |> tangentialArc(angle = -90, radius = 5) /// |> line(end = [0, 7]) /// /// // Create a hole for the pipe. @@ -614,15 +621,9 @@ pub async fn rotate(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0.05, 0.05], %) /// |> line(end = [0, 7]) -/// |> tangentialArc({ -/// offset: 90, -/// radius: 5 -/// }, %) +/// |> tangentialArc(angle = 90, radius = 5) /// |> line(end = [-3, 0]) -/// |> tangentialArc({ -/// offset: -90, -/// radius: 5 -/// }, %) +/// |> tangentialArc(angle = -90, radius = 5) /// |> line(end = [0, 7]) /// /// // Create a hole for the pipe. @@ -651,15 +652,9 @@ pub async fn rotate(exec_state: &mut ExecState, args: Args) -> Result startProfileAt([0.05, 0.05], %) /// |> line(end = [0, 7]) -/// |> tangentialArc({ -/// offset: 90, -/// radius: 5 -/// }, %) +/// |> tangentialArc(angle = 90, radius = 5) /// |> line(end = [-3, 0]) -/// |> tangentialArc({ -/// offset: -90, -/// radius: 5 -/// }, %) +/// |> tangentialArc(angle = -90, radius = 5) /// |> line(end = [0, 7]) /// /// // Create a hole for the pipe. @@ -699,15 +694,15 @@ pub async fn rotate(exec_state: &mut ExecState, args: Args) -> Result angledLine([0, 73.47], %, $rectangleSegmentA001) -/// |> angledLine([ -/// segAng(rectangleSegmentA001) - 90, -/// 50.61 -/// ], %) -/// |> angledLine([ -/// segAng(rectangleSegmentA001), -/// -segLen(rectangleSegmentA001) -/// ], %) +/// |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001) +/// |> angledLine( +/// angle = segAng(rectangleSegmentA001) - 90, +/// length = 50.61, +/// ) +/// |> angledLine( +/// angle = segAng(rectangleSegmentA001), +/// length = -segLen(rectangleSegmentA001), +/// ) /// |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) /// |> close() /// @@ -716,10 +711,7 @@ pub async fn rotate(exec_state: &mut ExecState, args: Args) -> Result yLine(length = 231.81) -/// |> tangentialArc({ -/// radius = 80, -/// offset = -90, -/// }, %) +/// |> tangentialArc(radius = 80, angle = -90) /// |> xLine(length = 384.93) /// /// parts = sweep([rectangleSketch, circleSketch], path = sweepPath) @@ -846,15 +838,9 @@ mod tests { const PIPE: &str = r#"sweepPath = startSketchOn('XZ') |> startProfileAt([0.05, 0.05], %) |> line(end = [0, 7]) - |> tangentialArc({ - offset: 90, - radius: 5 - }, %) + |> tangentialArc(angle = 90, radius = 5) |> line(end = [-3, 0]) - |> tangentialArc({ - offset: -90, - radius: 5 - }, %) + |> tangentialArc(angle = -90, radius = 5) |> line(end = [0, 7]) // Create a hole for the pipe. diff --git a/rust/kcl-lib/src/std/units.rs b/rust/kcl-lib/src/std/units.rs index c096a6eb2..c413fc72d 100644 --- a/rust/kcl-lib/src/std/units.rs +++ b/rust/kcl-lib/src/std/units.rs @@ -6,255 +6,267 @@ use kcl_derive_docs::stdlib; use crate::{ errors::KclError, execution::{types::UnitLen, ExecState, KclValue}, - std::Args, + std::{args::TyF64, Args}, }; -/// Millimeters conversion factor for current projects units. -pub async fn mm(exec_state: &mut ExecState, args: Args) -> Result { - let result = inner_mm(exec_state)?; +/// Millimeters conversion factor for current files units. +pub async fn from_mm(exec_state: &mut ExecState, args: Args) -> Result { + let input = args.get_number_with_type()?; + let result = inner_from_mm(input.n, exec_state)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, exec_state.current_default_units()))) } -/// Millimeters conversion factor for current projects units. +/// Converts a number from mm to the current default unit. /// -/// No matter what units the current project uses, this function will always return the conversion -/// factor to millimeters. +/// No matter what units the current file uses, this function will always return a number equivalent +/// to the input in millimeters. /// -/// For example, if the current project uses inches, this function will return `(1/25.4)`. -/// If the current project uses millimeters, this function will return `1`. +/// For example, if the current file uses inches, `fromMm(1)` will return `1/25.4`. +/// If the current file uses millimeters, `fromMm(1)` will return `1`. /// /// **Caution**: This function is only intended to be used when you absolutely MUST -/// have different units in your code than the project settings. Otherwise, it is +/// have different units in your code than the file settings. Otherwise, it is /// a bad pattern to use this function. /// /// We merely provide these functions for convenience and readability, as -/// `10 * mm()` is more readable that your intent is "I want 10 millimeters" than -/// `10 * (1/25.4)`, if the project settings are in inches. +/// `fromMm(10)` is more readable that your intent is "I want 10 millimeters" than +/// `10 * (1/25.4)`, if the file settings are in inches. /// /// ```no_run -/// totalWidth = 10 * mm() +/// totalWidth = fromMm(10) /// ``` #[stdlib { - name = "mm", + name = "fromMm", tags = ["units"], }] -fn inner_mm(exec_state: &ExecState) -> Result { - match exec_state.length_unit() { - UnitLen::Mm => Ok(1.0), - UnitLen::Inches => Ok(measurements::Length::from_millimeters(1.0).as_inches()), - UnitLen::Feet => Ok(measurements::Length::from_millimeters(1.0).as_feet()), - UnitLen::M => Ok(measurements::Length::from_millimeters(1.0).as_meters()), - UnitLen::Cm => Ok(measurements::Length::from_millimeters(1.0).as_centimeters()), - UnitLen::Yards => Ok(measurements::Length::from_millimeters(1.0).as_yards()), - } +fn inner_from_mm(input: f64, exec_state: &ExecState) -> Result { + Ok(match exec_state.length_unit() { + UnitLen::Mm => input, + UnitLen::Inches => measurements::Length::from_millimeters(input).as_inches(), + UnitLen::Feet => measurements::Length::from_millimeters(input).as_feet(), + UnitLen::M => measurements::Length::from_millimeters(input).as_meters(), + UnitLen::Cm => measurements::Length::from_millimeters(input).as_centimeters(), + UnitLen::Yards => measurements::Length::from_millimeters(input).as_yards(), + UnitLen::Unknown => unreachable!(), + }) } -/// Inches conversion factor for current projects units. -pub async fn inch(exec_state: &mut ExecState, args: Args) -> Result { - let result = inner_inch(exec_state)?; +/// Inches conversion factor for current files units. +pub async fn from_inches(exec_state: &mut ExecState, args: Args) -> Result { + let input = args.get_number_with_type()?; + let result = inner_from_inches(input.n, exec_state)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, exec_state.current_default_units()))) } -/// Inches conversion factor for current projects units. +/// Converts a number from inches to the current default unit. /// -/// No matter what units the current project uses, this function will always return the conversion -/// factor to inches. +/// No matter what units the current file uses, this function will always return a number equivalent +/// to the input in inches. /// -/// For example, if the current project uses inches, this function will return `1`. -/// If the current project uses millimeters, this function will return `25.4`. +/// For example, if the current file uses inches, `fromInches(1)` will return `1`. +/// If the current file uses millimeters, `fromInches(1)` will return `25.4`. /// /// **Caution**: This function is only intended to be used when you absolutely MUST -/// have different units in your code than the project settings. Otherwise, it is +/// have different units in your code than the file settings. Otherwise, it is /// a bad pattern to use this function. /// /// We merely provide these functions for convenience and readability, as -/// `10 * inch()` is more readable that your intent is "I want 10 inches" than -/// `10 * 25.4`, if the project settings are in millimeters. +/// `fromInches(10)` is more readable that your intent is "I want 10 inches" than +/// `10 * 25.4`, if the file settings are in millimeters. /// /// ```no_run -/// totalWidth = 10 * inch() +/// totalWidth = fromInches(10) /// ``` #[stdlib { - name = "inch", + name = "fromInches", tags = ["units"], }] -fn inner_inch(exec_state: &ExecState) -> Result { +fn inner_from_inches(input: f64, exec_state: &ExecState) -> Result { match exec_state.length_unit() { - UnitLen::Mm => Ok(measurements::Length::from_inches(1.0).as_millimeters()), - UnitLen::Inches => Ok(1.0), - UnitLen::Feet => Ok(measurements::Length::from_inches(1.0).as_feet()), - UnitLen::M => Ok(measurements::Length::from_inches(1.0).as_meters()), - UnitLen::Cm => Ok(measurements::Length::from_inches(1.0).as_centimeters()), - UnitLen::Yards => Ok(measurements::Length::from_inches(1.0).as_yards()), + UnitLen::Mm => Ok(measurements::Length::from_inches(input).as_millimeters()), + UnitLen::Inches => Ok(input), + UnitLen::Feet => Ok(measurements::Length::from_inches(input).as_feet()), + UnitLen::M => Ok(measurements::Length::from_inches(input).as_meters()), + UnitLen::Cm => Ok(measurements::Length::from_inches(input).as_centimeters()), + UnitLen::Yards => Ok(measurements::Length::from_inches(input).as_yards()), + UnitLen::Unknown => unreachable!(), } } -/// Feet conversion factor for current projects units. -pub async fn ft(exec_state: &mut ExecState, args: Args) -> Result { - let result = inner_ft(exec_state)?; +/// Feet conversion factor for current files units. +pub async fn from_ft(exec_state: &mut ExecState, args: Args) -> Result { + let input = args.get_number_with_type()?; + let result = inner_from_ft(input.n, exec_state)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, exec_state.current_default_units()))) } -/// Feet conversion factor for current projects units. +/// Converts a number from feet to the current default unit. /// -/// No matter what units the current project uses, this function will always return the conversion -/// factor to feet. +/// No matter what units the current file uses, this function will always return a number equivalent +/// to the input in feet. /// -/// For example, if the current project uses inches, this function will return `12`. -/// If the current project uses millimeters, this function will return `304.8`. -/// If the current project uses feet, this function will return `1`. +/// For example, if the current file uses inches, `fromFt(1)` will return `12`. +/// If the current file uses millimeters, `fromFt(1)` will return `304.8`. +/// If the current file uses feet, `fromFt(1)` will return `1`. /// /// **Caution**: This function is only intended to be used when you absolutely MUST -/// have different units in your code than the project settings. Otherwise, it is +/// have different units in your code than the file settings. Otherwise, it is /// a bad pattern to use this function. /// /// We merely provide these functions for convenience and readability, as -/// `10 * ft()` is more readable that your intent is "I want 10 feet" than -/// `10 * 304.8`, if the project settings are in millimeters. +/// `fromFt(10)` is more readable that your intent is "I want 10 feet" than +/// `10 * 304.8`, if the file settings are in millimeters. /// /// ```no_run -/// totalWidth = 10 * ft() +/// totalWidth = fromFt(10) /// ``` #[stdlib { - name = "ft", + name = "fromFt", tags = ["units"], }] -fn inner_ft(exec_state: &ExecState) -> Result { +fn inner_from_ft(input: f64, exec_state: &ExecState) -> Result { match exec_state.length_unit() { - UnitLen::Mm => Ok(measurements::Length::from_feet(1.0).as_millimeters()), - UnitLen::Inches => Ok(measurements::Length::from_feet(1.0).as_inches()), - UnitLen::Feet => Ok(1.0), - UnitLen::M => Ok(measurements::Length::from_feet(1.0).as_meters()), - UnitLen::Cm => Ok(measurements::Length::from_feet(1.0).as_centimeters()), - UnitLen::Yards => Ok(measurements::Length::from_feet(1.0).as_yards()), + UnitLen::Mm => Ok(measurements::Length::from_feet(input).as_millimeters()), + UnitLen::Inches => Ok(measurements::Length::from_feet(input).as_inches()), + UnitLen::Feet => Ok(input), + UnitLen::M => Ok(measurements::Length::from_feet(input).as_meters()), + UnitLen::Cm => Ok(measurements::Length::from_feet(input).as_centimeters()), + UnitLen::Yards => Ok(measurements::Length::from_feet(input).as_yards()), + UnitLen::Unknown => unreachable!(), } } -/// Meters conversion factor for current projects units. -pub async fn m(exec_state: &mut ExecState, args: Args) -> Result { - let result = inner_m(exec_state)?; +/// Meters conversion factor for current files units. +pub async fn from_m(exec_state: &mut ExecState, args: Args) -> Result { + let input = args.get_number_with_type()?; + let result = inner_from_m(input.n, exec_state)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, exec_state.current_default_units()))) } -/// Meters conversion factor for current projects units. +/// Converts a number from meters to the current default unit. /// -/// No matter what units the current project uses, this function will always return the conversion -/// factor to meters. +/// No matter what units the current file uses, this function will always return a number equivalent +/// to the input in meters. /// -/// For example, if the current project uses inches, this function will return `39.3701`. -/// If the current project uses millimeters, this function will return `1000`. -/// If the current project uses meters, this function will return `1`. +/// For example, if the current file uses inches, `fromM(1)` will return `39.3701`. +/// If the current file uses millimeters, `fromM(1)` will return `1000`. +/// If the current file uses meters, `fromM(1)` will return `1`. /// /// **Caution**: This function is only intended to be used when you absolutely MUST -/// have different units in your code than the project settings. Otherwise, it is +/// have different units in your code than the file settings. Otherwise, it is /// a bad pattern to use this function. /// /// We merely provide these functions for convenience and readability, as -/// `10 * m()` is more readable that your intent is "I want 10 meters" than -/// `10 * 1000`, if the project settings are in millimeters. +/// `fromM(10)` is more readable that your intent is "I want 10 meters" than +/// `10 * 1000`, if the file settings are in millimeters. /// /// ```no_run -/// totalWidth = 10 * m() +/// totalWidth = 10 * fromM(10) /// ``` #[stdlib { - name = "m", + name = "fromM", tags = ["units"], }] -fn inner_m(exec_state: &ExecState) -> Result { +fn inner_from_m(input: f64, exec_state: &ExecState) -> Result { match exec_state.length_unit() { - UnitLen::Mm => Ok(measurements::Length::from_meters(1.0).as_millimeters()), - UnitLen::Inches => Ok(measurements::Length::from_meters(1.0).as_inches()), - UnitLen::Feet => Ok(measurements::Length::from_meters(1.0).as_feet()), - UnitLen::M => Ok(1.0), - UnitLen::Cm => Ok(measurements::Length::from_meters(1.0).as_centimeters()), - UnitLen::Yards => Ok(measurements::Length::from_meters(1.0).as_yards()), + UnitLen::Mm => Ok(measurements::Length::from_meters(input).as_millimeters()), + UnitLen::Inches => Ok(measurements::Length::from_meters(input).as_inches()), + UnitLen::Feet => Ok(measurements::Length::from_meters(input).as_feet()), + UnitLen::M => Ok(input), + UnitLen::Cm => Ok(measurements::Length::from_meters(input).as_centimeters()), + UnitLen::Yards => Ok(measurements::Length::from_meters(input).as_yards()), + UnitLen::Unknown => unreachable!(), } } -/// Centimeters conversion factor for current projects units. -pub async fn cm(exec_state: &mut ExecState, args: Args) -> Result { - let result = inner_cm(exec_state)?; +/// Centimeters conversion factor for current files units. +pub async fn from_cm(exec_state: &mut ExecState, args: Args) -> Result { + let input = args.get_number_with_type()?; + let result = inner_from_cm(input.n, exec_state)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, exec_state.current_default_units()))) } -/// Centimeters conversion factor for current projects units. +/// Converts a number from centimeters to the current default unit. /// -/// No matter what units the current project uses, this function will always return the conversion -/// factor to centimeters. +/// No matter what units the current file uses, this function will always return a number equivalent +/// to the input in centimeters. /// -/// For example, if the current project uses inches, this function will return `0.393701`. -/// If the current project uses millimeters, this function will return `10`. -/// If the current project uses centimeters, this function will return `1`. +/// For example, if the current file uses inches, `fromCm(1)` will return `0.393701`. +/// If the current file uses millimeters, `fromCm(1)` will return `10`. +/// If the current file uses centimeters, `fromCm(1)` will return `1`. /// /// **Caution**: This function is only intended to be used when you absolutely MUST -/// have different units in your code than the project settings. Otherwise, it is +/// have different units in your code than the file settings. Otherwise, it is /// a bad pattern to use this function. /// /// We merely provide these functions for convenience and readability, as -/// `10 * cm()` is more readable that your intent is "I want 10 centimeters" than -/// `10 * 10`, if the project settings are in millimeters. +/// `fromCm(10)` is more readable that your intent is "I want 10 centimeters" than +/// `10 * 10`, if the file settings are in millimeters. /// /// ```no_run -/// totalWidth = 10 * cm() +/// totalWidth = fromCm(10) /// ``` #[stdlib { - name = "cm", + name = "fromCm", tags = ["units"], }] -fn inner_cm(exec_state: &ExecState) -> Result { +fn inner_from_cm(input: f64, exec_state: &ExecState) -> Result { match exec_state.length_unit() { - UnitLen::Mm => Ok(measurements::Length::from_centimeters(1.0).as_millimeters()), - UnitLen::Inches => Ok(measurements::Length::from_centimeters(1.0).as_inches()), - UnitLen::Feet => Ok(measurements::Length::from_centimeters(1.0).as_feet()), - UnitLen::M => Ok(measurements::Length::from_centimeters(1.0).as_meters()), - UnitLen::Cm => Ok(1.0), - UnitLen::Yards => Ok(measurements::Length::from_centimeters(1.0).as_yards()), + UnitLen::Mm => Ok(measurements::Length::from_centimeters(input).as_millimeters()), + UnitLen::Inches => Ok(measurements::Length::from_centimeters(input).as_inches()), + UnitLen::Feet => Ok(measurements::Length::from_centimeters(input).as_feet()), + UnitLen::M => Ok(measurements::Length::from_centimeters(input).as_meters()), + UnitLen::Cm => Ok(input), + UnitLen::Yards => Ok(measurements::Length::from_centimeters(input).as_yards()), + UnitLen::Unknown => unreachable!(), } } -/// Yards conversion factor for current projects units. -pub async fn yd(exec_state: &mut ExecState, args: Args) -> Result { - let result = inner_yd(exec_state)?; +/// Yards conversion factor for current files units. +pub async fn from_yd(exec_state: &mut ExecState, args: Args) -> Result { + let input = args.get_number_with_type()?; + let result = inner_from_yd(input.n, exec_state)?; - Ok(args.make_user_val_from_f64(result)) + Ok(args.make_user_val_from_f64_with_type(TyF64::new(result, exec_state.current_default_units()))) } -/// Yards conversion factor for current projects units. +/// Converts a number from yards to the current default unit. /// -/// No matter what units the current project uses, this function will always return the conversion -/// factor to yards. +/// No matter what units the current file uses, this function will always return a number equivalent +/// to the input in yards. /// -/// For example, if the current project uses inches, this function will return `36`. -/// If the current project uses millimeters, this function will return `914.4`. -/// If the current project uses yards, this function will return `1`. +/// For example, if the current file uses inches, `fromYd(1)` will return `36`. +/// If the current file uses millimeters, `fromYd(1)` will return `914.4`. +/// If the current file uses yards, `fromYd(1)` will return `1`. /// /// **Caution**: This function is only intended to be used when you absolutely MUST -/// have different units in your code than the project settings. Otherwise, it is +/// have different units in your code than the file settings. Otherwise, it is /// a bad pattern to use this function. /// /// We merely provide these functions for convenience and readability, as -/// `10 * yd()` is more readable that your intent is "I want 10 yards" than -/// `10 * 914.4`, if the project settings are in millimeters. +/// `fromYd(10)` is more readable that your intent is "I want 10 yards" than +/// `10 * 914.4`, if the file settings are in millimeters. /// /// ```no_run -/// totalWidth = 10 * yd() +/// totalWidth = fromYd(10) /// ``` #[stdlib { - name = "yd", + name = "fromYd", tags = ["units"], }] -fn inner_yd(exec_state: &ExecState) -> Result { +fn inner_from_yd(input: f64, exec_state: &ExecState) -> Result { match exec_state.length_unit() { - UnitLen::Mm => Ok(measurements::Length::from_yards(1.0).as_millimeters()), - UnitLen::Inches => Ok(measurements::Length::from_yards(1.0).as_inches()), - UnitLen::Feet => Ok(measurements::Length::from_yards(1.0).as_feet()), - UnitLen::M => Ok(measurements::Length::from_yards(1.0).as_meters()), - UnitLen::Cm => Ok(measurements::Length::from_yards(1.0).as_centimeters()), - UnitLen::Yards => Ok(1.0), + UnitLen::Mm => Ok(measurements::Length::from_yards(input).as_millimeters()), + UnitLen::Inches => Ok(measurements::Length::from_yards(input).as_inches()), + UnitLen::Feet => Ok(measurements::Length::from_yards(input).as_feet()), + UnitLen::M => Ok(measurements::Length::from_yards(input).as_meters()), + UnitLen::Cm => Ok(measurements::Length::from_yards(input).as_centimeters()), + UnitLen::Yards => Ok(input), + UnitLen::Unknown => unreachable!(), } } diff --git a/rust/kcl-lib/src/std/utils.rs b/rust/kcl-lib/src/std/utils.rs index 4d7aefd79..bad11cade 100644 --- a/rust/kcl-lib/src/std/utils.rs +++ b/rust/kcl-lib/src/std/utils.rs @@ -4,13 +4,26 @@ use kittycad_modeling_cmds::shared::Angle; use crate::{ errors::{KclError, KclErrorDetails}, - execution::Point2d, + execution::{types::NumericType, Point2d}, source_range::SourceRange, }; +use super::args::TyF64; + +pub fn untype_point(p: [TyF64; 2]) -> ([f64; 2], NumericType) { + let (x, y, ty) = NumericType::combine_eq(p[0].clone(), p[1].clone()); + ([x, y], ty) +} + +pub fn untype_point_3d(p: [TyF64; 3]) -> ([f64; 3], NumericType) { + let (arr, ty) = NumericType::combine_eq_array(&[p[0].clone(), p[1].clone(), p[2].clone()]); + let mut iter = arr.into_iter(); + ([iter.next().unwrap(), iter.next().unwrap(), iter.next().unwrap()], ty) +} + /// Get the distance between two points. -pub fn distance(a: Point2d, b: Point2d) -> f64 { - ((b.x - a.x).powi(2) + (b.y - a.y).powi(2)).sqrt() +pub fn distance(a: Coords2d, b: Coords2d) -> f64 { + ((b[0] - a[0]).powi(2) + (b[1] - a[1]).powi(2)).sqrt() } /// Get the angle between these points @@ -68,87 +81,54 @@ pub fn normalize_rad(angle: f64) -> f64 { } } -pub fn calculate_intersection_of_two_lines(line1: &[Point2d; 2], line2_angle: f64, line2_point: Point2d) -> Point2d { - let line2_point_b = Point2d { - x: line2_point.x + f64::cos(line2_angle.to_radians()) * 10.0, - y: line2_point.y + f64::sin(line2_angle.to_radians()) * 10.0, - }; +fn calculate_intersection_of_two_lines(line1: &[Coords2d; 2], line2_angle: f64, line2_point: Coords2d) -> Coords2d { + let line2_point_b = [ + line2_point[0] + f64::cos(line2_angle.to_radians()) * 10.0, + line2_point[1] + f64::sin(line2_angle.to_radians()) * 10.0, + ]; intersect(line1[0], line1[1], line2_point, line2_point_b) } -pub fn intersect(p1: Point2d, p2: Point2d, p3: Point2d, p4: Point2d) -> Point2d { - let slope = |p1: Point2d, p2: Point2d| (p1.y - p2.y) / (p1.x - p2.x); - let constant = |p1: Point2d, p2: Point2d| p1.y - slope(p1, p2) * p1.x; - let get_y = |for_x: f64, p1: Point2d, p2: Point2d| slope(p1, p2) * for_x + constant(p1, p2); +fn intersect(p1: Coords2d, p2: Coords2d, p3: Coords2d, p4: Coords2d) -> Coords2d { + let slope = |p1: Coords2d, p2: Coords2d| (p1[1] - p2[1]) / (p1[0] - p2[0]); + let constant = |p1: Coords2d, p2: Coords2d| p1[1] - slope(p1, p2) * p1[0]; + let get_y = |for_x: f64, p1: Coords2d, p2: Coords2d| slope(p1, p2) * for_x + constant(p1, p2); - if p1.x == p2.x { - return Point2d { - x: p1.x, - y: get_y(p1.x, p3, p4), - }; + if p1[0] == p2[0] { + return [p1[0], get_y(p1[0], p3, p4)]; } - if p3.x == p4.x { - return Point2d { - x: p3.x, - y: get_y(p3.x, p1, p2), - }; + if p3[0] == p4[0] { + return [p3[0], get_y(p3[0], p1, p2)]; } let x = (constant(p3, p4) - constant(p1, p2)) / (slope(p1, p2) - slope(p3, p4)); let y = get_y(x, p1, p2); - Point2d { x, y } + [x, y] } pub fn intersection_with_parallel_line( - line1: &[Point2d; 2], + line1: &[Coords2d; 2], line1_offset: f64, line2_angle: f64, - line2_point: Point2d, -) -> Point2d { + line2_point: Coords2d, +) -> Coords2d { calculate_intersection_of_two_lines(&offset_line(line1_offset, line1[0], line1[1]), line2_angle, line2_point) } -fn offset_line(offset: f64, p1: Point2d, p2: Point2d) -> [Point2d; 2] { - if p1.x == p2.x { - let direction = (p1.y - p2.y).signum(); - return [ - Point2d { - x: p1.x + offset * direction, - y: p1.y, - }, - Point2d { - x: p2.x + offset * direction, - y: p2.y, - }, - ]; +fn offset_line(offset: f64, p1: Coords2d, p2: Coords2d) -> [Coords2d; 2] { + if p1[0] == p2[0] { + let direction = (p1[1] - p2[1]).signum(); + return [[p1[0] + offset * direction, p1[1]], [p2[0] + offset * direction, p2[1]]]; } - if p1.y == p2.y { - let direction = (p2.x - p1.x).signum(); - return [ - Point2d { - x: p1.x, - y: p1.y + offset * direction, - }, - Point2d { - x: p2.x, - y: p2.y + offset * direction, - }, - ]; + if p1[1] == p2[1] { + let direction = (p2[0] - p1[0]).signum(); + return [[p1[0], p1[1] + offset * direction], [p2[0], p2[1] + offset * direction]]; } - let x_offset = offset / f64::sin(f64::atan2(p1.y - p2.y, p1.x - p2.x)); - [ - Point2d { - x: p1.x + x_offset, - y: p1.y, - }, - Point2d { - x: p2.x + x_offset, - y: p2.y, - }, - ] + let x_offset = offset / f64::sin(f64::atan2(p1[1] - p2[1], p1[0] - p2[0])); + [[p1[0] + x_offset, p1[1]], [p2[0] + x_offset, p2[1]]] } -pub fn get_y_component(angle: Angle, x: f64) -> Point2d { +pub fn get_y_component(angle: Angle, x: f64) -> Coords2d { let normalised_angle = ((angle.to_degrees() % 360.0) + 360.0) % 360.0; // between 0 and 360 let y = x * f64::tan(normalised_angle.to_radians()); let sign = if normalised_angle > 90.0 && normalised_angle <= 270.0 { @@ -156,10 +136,10 @@ pub fn get_y_component(angle: Angle, x: f64) -> Point2d { } else { 1.0 }; - Point2d { x, y }.scale(sign) + [x * sign, y * sign] } -pub fn get_x_component(angle: Angle, y: f64) -> Point2d { +pub fn get_x_component(angle: Angle, y: f64) -> Coords2d { let normalised_angle = ((angle.to_degrees() % 360.0) + 360.0) % 360.0; // between 0 and 360 let x = y / f64::tan(normalised_angle.to_radians()); let sign = if normalised_angle > 180.0 && normalised_angle <= 360.0 { @@ -167,30 +147,30 @@ pub fn get_x_component(angle: Angle, y: f64) -> Point2d { } else { 1.0 }; - Point2d { x, y }.scale(sign) + [x * sign, y * sign] } -pub fn arc_center_and_end(from: Point2d, start_angle: Angle, end_angle: Angle, radius: f64) -> (Point2d, Point2d) { +pub fn arc_center_and_end(from: Coords2d, start_angle: Angle, end_angle: Angle, radius: f64) -> (Coords2d, Coords2d) { let start_angle = start_angle.to_radians(); let end_angle = end_angle.to_radians(); - let center = Point2d { - x: -1.0 * (radius * start_angle.cos() - from.x), - y: -1.0 * (radius * start_angle.sin() - from.y), - }; + let center = [ + -1.0 * (radius * start_angle.cos() - from[0]), + -1.0 * (radius * start_angle.sin() - from[1]), + ]; - let end = Point2d { - x: center.x + radius * end_angle.cos(), - y: center.y + radius * end_angle.sin(), - }; + let end = [ + center[0] + radius * end_angle.cos(), + center[1] + radius * end_angle.sin(), + ]; (center, end) } pub fn arc_angles( - from: Point2d, - to: Point2d, - center: Point2d, + from: Coords2d, + to: Coords2d, + center: Coords2d, radius: f64, source_range: SourceRange, ) -> Result<(Angle, Angle), KclError> { @@ -216,15 +196,15 @@ pub fn arc_angles( })); } - let start_angle = (from.y - center.y).atan2(from.x - center.x); - let end_angle = (to.y - center.y).atan2(to.x - center.x); + let start_angle = (from[1] - center[1]).atan2(from[0] - center[0]); + let end_angle = (to[1] - center[1]).atan2(to[0] - center[0]); Ok((Angle::from_radians(start_angle), Angle::from_radians(end_angle))) } -pub fn is_on_circumference(center: Point2d, point: Point2d, radius: f64) -> bool { - let dx = point.x - center.x; - let dy = point.y - center.y; +fn is_on_circumference(center: Coords2d, point: Coords2d, radius: f64) -> bool { + let dx = point[0] - center[0]; + let dy = point[1] - center[1]; let distance_squared = dx.powi(2) + dy.powi(2); @@ -234,49 +214,46 @@ pub fn is_on_circumference(center: Point2d, point: Point2d, radius: f64) -> bool (distance_squared - radius.powi(2)).abs() < 1e-9 } -// Calculate the center of 3 points -// To calculate the center of the 3 point circle 2 perpendicular lines are created -// These perpendicular lines will intersect at the center of the circle. +// Calculate the center of 3 points using an algebraic method +// Handles if 3 points lie on the same line (collinear) by returning the average of the points (could return None instead..) pub fn calculate_circle_center(p1: [f64; 2], p2: [f64; 2], p3: [f64; 2]) -> [f64; 2] { - // y2 - y1 - let y_2_1 = p2[1] - p1[1]; - // y3 - y2 - let y_3_2 = p3[1] - p2[1]; - // x2 - x1 - let x_2_1 = p2[0] - p1[0]; - // x3 - x2 - let x_3_2 = p3[0] - p2[0]; + let (x1, y1) = (p1[0], p1[1]); + let (x2, y2) = (p2[0], p2[1]); + let (x3, y3) = (p3[0], p3[1]); - // Slope of two perpendicular lines - let slope_a = y_2_1 / x_2_1; - let slope_b = y_3_2 / x_3_2; + // Compute the determinant d = 2 * (x1*(y2-y3) + x2*(y3-y1) + x3*(y1-y2)) + // Visually d is twice the area of the triangle formed by the points, + // also the same as: cross(p2 - p1, p3 - p1) + let d = 2.0 * (x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)); - // Values for line intersection - // y1 - y3 - let y_1_3 = p1[1] - p3[1]; - // x1 + x2 - let x_1_2 = p1[0] + p2[0]; - // x2 + x3 - let x_2_3 = p2[0] + p3[0]; - // y1 + y2 - let y_1_2 = p1[1] + p2[1]; + // If d is nearly zero, the points are collinear, and a unique circle cannot be defined. + if d.abs() < f64::EPSILON { + return [(x1 + x2 + x3) / 3.0, (y1 + y2 + y3) / 3.0]; + } - // Solve for the intersection of these two lines - let numerator = (slope_a * slope_b * y_1_3) + (slope_b * x_1_2) - (slope_a * x_2_3); - let x = numerator / (2.0 * (slope_b - slope_a)); + // squared lengths + let p1_sq = x1 * x1 + y1 * y1; + let p2_sq = x2 * x2 + y2 * y2; + let p3_sq = x3 * x3 + y3 * y3; - let y = ((-1.0 / slope_a) * (x - (x_1_2 / 2.0))) + (y_1_2 / 2.0); - - [x, y] + // This formula is derived from the circle equations: + // (x - cx)^2 + (y - cy)^2 = r^2 + // All 3 points will satisfy this equation, so we have 3 equations. Radius can be eliminated + // by subtracting one of the equations from the other two and the remaining 2 equations can + // be solved for cx and cy. + [ + (p1_sq * (y2 - y3) + p2_sq * (y3 - y1) + p3_sq * (y1 - y2)) / d, + (p1_sq * (x3 - x2) + p2_sq * (x1 - x3) + p3_sq * (x2 - x1)) / d, + ] } pub struct CircleParams { - pub center: Point2d, + pub center: Coords2d, pub radius: f64, } -pub fn calculate_circle_from_3_points(points: [Point2d; 3]) -> CircleParams { - let center: Point2d = calculate_circle_center(points[0].into(), points[1].into(), points[2].into()).into(); +pub fn calculate_circle_from_3_points(points: [Coords2d; 3]) -> CircleParams { + let center = calculate_circle_center(points[0], points[1], points[2]); CircleParams { center, radius: distance(center, points[1]), @@ -286,9 +263,11 @@ pub fn calculate_circle_from_3_points(points: [Point2d; 3]) -> CircleParams { #[cfg(test)] mod tests { // Here you can bring your functions into scope + use approx::assert_relative_eq; use pretty_assertions::assert_eq; + use std::f64::consts::TAU; - use super::{get_x_component, get_y_component, Angle}; + use super::{calculate_circle_center, get_x_component, get_y_component, Angle}; use crate::SourceRange; static EACH_QUAD: [(i32, [i32; 2]); 12] = [ @@ -313,27 +292,27 @@ mod tests { for &(angle, expected_result) in EACH_QUAD.iter() { let res = get_y_component(Angle::from_degrees(angle as f64), 1.0); - results.push([res.x.round() as i32, res.y.round() as i32]); + results.push([res[0].round() as i32, res[1].round() as i32]); expected.push(expected_result); } assert_eq!(results, expected); let result = get_y_component(Angle::zero(), 1.0); - assert_eq!(result.x as i32, 1); - assert_eq!(result.y as i32, 0); + assert_eq!(result[0] as i32, 1); + assert_eq!(result[1] as i32, 0); let result = get_y_component(Angle::from_degrees(90.0), 1.0); - assert_eq!(result.x as i32, 1); - assert!(result.y > 100000.0); + assert_eq!(result[0] as i32, 1); + assert!(result[1] > 100000.0); let result = get_y_component(Angle::from_degrees(180.0), 1.0); - assert_eq!(result.x as i32, -1); - assert!((result.y - 0.0).abs() < f64::EPSILON); + assert_eq!(result[0] as i32, -1); + assert!((result[1] - 0.0).abs() < f64::EPSILON); let result = get_y_component(Angle::from_degrees(270.0), 1.0); - assert_eq!(result.x as i32, -1); - assert!(result.y < -100000.0); + assert_eq!(result[0] as i32, -1); + assert!(result[1] < -100000.0); } #[test] @@ -343,116 +322,146 @@ mod tests { for &(angle, expected_result) in EACH_QUAD.iter() { let res = get_x_component(Angle::from_degrees(angle as f64), 1.0); - results.push([res.x.round() as i32, res.y.round() as i32]); + results.push([res[0].round() as i32, res[1].round() as i32]); expected.push(expected_result); } assert_eq!(results, expected); let result = get_x_component(Angle::zero(), 1.0); - assert!(result.x > 100000.0); - assert_eq!(result.y as i32, 1); + assert!(result[0] > 100000.0); + assert_eq!(result[1] as i32, 1); let result = get_x_component(Angle::from_degrees(90.0), 1.0); - assert!((result.x - 0.0).abs() < f64::EPSILON); - assert_eq!(result.y as i32, 1); + assert!((result[0] - 0.0).abs() < f64::EPSILON); + assert_eq!(result[1] as i32, 1); let result = get_x_component(Angle::from_degrees(180.0), 1.0); - assert!(result.x < -100000.0); - assert_eq!(result.y as i32, 1); + assert!(result[0] < -100000.0); + assert_eq!(result[1] as i32, 1); let result = get_x_component(Angle::from_degrees(270.0), 1.0); - assert!((result.x - 0.0).abs() < f64::EPSILON); - assert_eq!(result.y as i32, -1); + assert!((result[0] - 0.0).abs() < f64::EPSILON); + assert_eq!(result[1] as i32, -1); } #[test] fn test_arc_center_and_end() { - let (center, end) = super::arc_center_and_end( - super::Point2d { x: 0.0, y: 0.0 }, - Angle::zero(), - Angle::from_degrees(90.0), - 1.0, - ); - assert_eq!(center.x.round(), -1.0); - assert_eq!(center.y, 0.0); - assert_eq!(end.x.round(), -1.0); - assert_eq!(end.y, 1.0); + let (center, end) = super::arc_center_and_end([0.0, 0.0], Angle::zero(), Angle::from_degrees(90.0), 1.0); + assert_eq!(center[0].round(), -1.0); + assert_eq!(center[1], 0.0); + assert_eq!(end[0].round(), -1.0); + assert_eq!(end[1], 1.0); - let (center, end) = super::arc_center_and_end( - super::Point2d { x: 0.0, y: 0.0 }, - Angle::zero(), - Angle::from_degrees(180.0), - 1.0, - ); - assert_eq!(center.x.round(), -1.0); - assert_eq!(center.y, 0.0); - assert_eq!(end.x.round(), -2.0); - assert_eq!(end.y.round(), 0.0); + let (center, end) = super::arc_center_and_end([0.0, 0.0], Angle::zero(), Angle::from_degrees(180.0), 1.0); + assert_eq!(center[0].round(), -1.0); + assert_eq!(center[1], 0.0); + assert_eq!(end[0].round(), -2.0); + assert_eq!(end[1].round(), 0.0); - let (center, end) = super::arc_center_and_end( - super::Point2d { x: 0.0, y: 0.0 }, - Angle::zero(), - Angle::from_degrees(180.0), - 10.0, - ); - assert_eq!(center.x.round(), -10.0); - assert_eq!(center.y, 0.0); - assert_eq!(end.x.round(), -20.0); - assert_eq!(end.y.round(), 0.0); + let (center, end) = super::arc_center_and_end([0.0, 0.0], Angle::zero(), Angle::from_degrees(180.0), 10.0); + assert_eq!(center[0].round(), -10.0); + assert_eq!(center[1], 0.0); + assert_eq!(end[0].round(), -20.0); + assert_eq!(end[1].round(), 0.0); } #[test] fn test_arc_angles() { - let (angle_start, angle_end) = super::arc_angles( - super::Point2d { x: 0.0, y: 0.0 }, - super::Point2d { x: -1.0, y: 1.0 }, - super::Point2d { x: -1.0, y: 0.0 }, - 1.0, - SourceRange::default(), - ) - .unwrap(); + let (angle_start, angle_end) = + super::arc_angles([0.0, 0.0], [-1.0, 1.0], [-1.0, 0.0], 1.0, SourceRange::default()).unwrap(); assert_eq!(angle_start.to_degrees().round(), 0.0); assert_eq!(angle_end.to_degrees().round(), 90.0); - let (angle_start, angle_end) = super::arc_angles( - super::Point2d { x: 0.0, y: 0.0 }, - super::Point2d { x: -2.0, y: 0.0 }, - super::Point2d { x: -1.0, y: 0.0 }, - 1.0, - SourceRange::default(), - ) - .unwrap(); + let (angle_start, angle_end) = + super::arc_angles([0.0, 0.0], [-2.0, 0.0], [-1.0, 0.0], 1.0, SourceRange::default()).unwrap(); assert_eq!(angle_start.to_degrees().round(), 0.0); assert_eq!(angle_end.to_degrees().round(), 180.0); - let (angle_start, angle_end) = super::arc_angles( - super::Point2d { x: 0.0, y: 0.0 }, - super::Point2d { x: -20.0, y: 0.0 }, - super::Point2d { x: -10.0, y: 0.0 }, - 10.0, - SourceRange::default(), - ) - .unwrap(); + let (angle_start, angle_end) = + super::arc_angles([0.0, 0.0], [-20.0, 0.0], [-10.0, 0.0], 10.0, SourceRange::default()).unwrap(); assert_eq!(angle_start.to_degrees().round(), 0.0); assert_eq!(angle_end.to_degrees().round(), 180.0); - let result = super::arc_angles( - super::Point2d { x: 0.0, y: 5.0 }, - super::Point2d { x: 5.0, y: 5.0 }, - super::Point2d { x: 10.0, y: -10.0 }, - 10.0, - SourceRange::default(), - ); + let result = super::arc_angles([0.0, 5.0], [5.0, 5.0], [10.0, -10.0], 10.0, SourceRange::default()); if let Err(err) = result { - assert!(err.to_string().contains("Point Point2d { x: 0.0, y: 5.0 } is not on the circumference of the circle with center Point2d { x: 10.0, y: -10.0 } and radius 10.")); + assert!(err.to_string().contains("Point [0.0, 5.0] is not on the circumference of the circle with center [10.0, -10.0] and radius 10."), "found: `{}`", err); } else { panic!("Expected error"); } assert_eq!(angle_start.to_degrees().round(), 0.0); assert_eq!(angle_end.to_degrees().round(), 180.0); } + + #[test] + fn test_calculate_circle_center() { + const EPS: f64 = 1e-4; + + // Test: circle center = (4.1, 1.9) + let p1 = [1.0, 2.0]; + let p2 = [4.0, 5.0]; + let p3 = [7.0, 3.0]; + let center = calculate_circle_center(p1, p2, p3); + assert_relative_eq!(center[0], 4.1, epsilon = EPS); + assert_relative_eq!(center[1], 1.9, epsilon = EPS); + + // Tests: Generate a few circles and test its points + let center = [3.2, 0.7]; + let radius_array = [0.001, 0.01, 0.6, 1.0, 5.0, 60.0, 500.0, 2000.0, 400_000.0]; + let points_array = [[0.0, 0.33, 0.66], [0.0, 0.1, 0.2], [0.0, -0.1, 0.1], [0.0, 0.5, 0.7]]; + + let get_point = |radius: f64, t: f64| { + let angle = t * TAU; + [center[0] + radius * angle.cos(), center[1] + radius * angle.sin()] + }; + + for radius in radius_array { + for point in points_array { + let p1 = get_point(radius, point[0]); + let p2 = get_point(radius, point[1]); + let p3 = get_point(radius, point[2]); + let c = calculate_circle_center(p1, p2, p3); + assert_relative_eq!(c[0], center[0], epsilon = EPS); + assert_relative_eq!(c[1], center[1], epsilon = EPS); + } + } + + // Test: Equilateral triangle + let p1 = [0.0, 0.0]; + let p2 = [1.0, 0.0]; + let p3 = [0.5, 3.0_f64.sqrt() / 2.0]; + let center = calculate_circle_center(p1, p2, p3); + assert_relative_eq!(center[0], 0.5, epsilon = EPS); + assert_relative_eq!(center[1], 1.0 / (2.0 * 3.0_f64.sqrt()), epsilon = EPS); + + // Test: Collinear points (should return the average of the points) + let p1 = [0.0, 0.0]; + let p2 = [1.0, 0.0]; + let p3 = [2.0, 0.0]; + let center = calculate_circle_center(p1, p2, p3); + assert_relative_eq!(center[0], 1.0, epsilon = EPS); + assert_relative_eq!(center[1], 0.0, epsilon = EPS); + + // Test: Points forming a circle with radius = 1 + let p1 = [0.0, 0.0]; + let p2 = [0.0, 2.0]; + let p3 = [2.0, 0.0]; + let center = calculate_circle_center(p1, p2, p3); + assert_relative_eq!(center[0], 1.0, epsilon = EPS); + assert_relative_eq!(center[1], 1.0, epsilon = EPS); + + // Test: Integer coordinates + let p1 = [0.0, 0.0]; + let p2 = [0.0, 6.0]; + let p3 = [6.0, 0.0]; + let center = calculate_circle_center(p1, p2, p3); + assert_relative_eq!(center[0], 3.0, epsilon = EPS); + assert_relative_eq!(center[1], 3.0, epsilon = EPS); + // Verify radius (should be 3 * sqrt(2)) + let radius = ((center[0] - p1[0]).powi(2) + (center[1] - p1[1]).powi(2)).sqrt(); + assert_relative_eq!(radius, 3.0 * 2.0_f64.sqrt(), epsilon = EPS); + } } pub type Coords2d = [f64; 2]; diff --git a/rust/kcl-lib/src/unparser.rs b/rust/kcl-lib/src/unparser.rs index fe6d58d61..e702e7767 100644 --- a/rust/kcl-lib/src/unparser.rs +++ b/rust/kcl-lib/src/unparser.rs @@ -1,8 +1,5 @@ use std::fmt::Write; -#[cfg(feature = "cli")] -use clap::ValueEnum; - use crate::parsing::{ ast::types::{ Annotation, ArrayExpression, ArrayRangeExpression, BinaryExpression, BinaryOperator, BinaryPart, BodyItem, @@ -195,7 +192,7 @@ impl Node { result.push_str(&indentation); result.push_str(comment); } - if !comment.ends_with("*/") && !result.ends_with("\n\n") && result != "\n" { + if !result.ends_with("\n\n") && result != "\n" { result.push('\n'); } } @@ -867,29 +864,6 @@ impl Parameter { } } -lazy_static::lazy_static! { - - pub static ref IMPORT_FILE_EXTENSIONS: Vec = { - let mut import_file_extensions = vec!["stp".to_string(), "glb".to_string(), "fbxb".to_string()]; - #[cfg(feature = "cli")] - let named_extensions = kittycad::types::FileImportFormat::value_variants() - .iter() - .map(|x| format!("{}", x)) - .collect::>(); - #[cfg(not(feature = "cli"))] - let named_extensions = vec![]; // We don't really need this outside of the CLI. - // Add all the default import formats. - import_file_extensions.extend_from_slice(&named_extensions); - import_file_extensions - }; - - pub static ref RELEVANT_EXTENSIONS: Vec = { - let mut relevant_extensions = IMPORT_FILE_EXTENSIONS.clone(); - relevant_extensions.push("kcl".to_string()); - relevant_extensions - }; -} - /// Collect all the kcl (and other relevant) files in a directory, recursively. #[cfg(not(target_arch = "wasm32"))] #[async_recursion::async_recursion] @@ -909,7 +883,7 @@ pub async fn walk_dir(dir: &std::path::PathBuf) -> Result angledLine([45, o_r - i_r], %) + |> angledLine(angle = 45, length = o_r - i_r) |> arc({ radius = i_r, angle_start = 225 - a, @@ -1219,7 +1207,7 @@ fn o(c_x, c_y) { angle_start = 225 + a, angle_end = 360 + 45 - a }, %) - |> angledLine([225, o_r - i_r], %) + |> angledLine(angle = 225, length = o_r - i_r) |> arc({ radius = i_r, angle_start = 45 - a, @@ -1740,7 +1728,7 @@ thk = 5 hole_diam = 5 // define a rectangular shape func fn rectShape(pos, w, l) { - rr = startSketchOn('xy') + rr = startSketchOn(XY) |> startProfileAt([pos[0] - (w / 2), pos[1] - (l / 2)], %) |> line(endAbsolute = [pos[0] + w / 2, pos[1] - (l / 2)], tag = $edge1) |> line(endAbsolute = [pos[0] + w / 2, pos[1] + l / 2], tag = $edge2) @@ -2234,14 +2222,8 @@ myAng2 = 134 part001 = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line([1, 3.82], %, $seg01) // ln-should-get-tag - |> angledLineToX([ - -angleToMatchLengthX(seg01, myVar, %), - myVar - ], %) // ln-lineTo-xAbsolute should use angleToMatchLengthX helper - |> angledLineToY([ - -angleToMatchLengthY(seg01, myVar, %), - myVar - ], %) // ln-lineTo-yAbsolute should use angleToMatchLengthY helper"#; + |> angledLine(angle = -angleToMatchLengthX(seg01, myVar, %), length = myVar) // ln-lineTo-xAbsolute should use angleToMatchLengthX helper + |> angledLine(angle = -angleToMatchLengthY(seg01, myVar, %), length = myVar) // ln-lineTo-yAbsolute should use angleToMatchLengthY helper"#; let program = crate::parsing::top_level_parse(some_program_string).unwrap(); let recasted = program.recast(&Default::default(), 0); @@ -2258,14 +2240,8 @@ myAng2 = 134 part001 = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line([1, 3.82], %, $seg01) // ln-should-get-tag - |> angledLineToX([ - -angleToMatchLengthX(seg01, myVar, %), - myVar - ], %) // ln-lineTo-xAbsolute should use angleToMatchLengthX helper - |> angledLineToY([ - -angleToMatchLengthY(seg01, myVar, %), - myVar - ], %) // ln-lineTo-yAbsolute should use angleToMatchLengthY helper + |> angledLine(angle = -angleToMatchLengthX(seg01, myVar, %), length = myVar) // ln-lineTo-xAbsolute should use angleToMatchLengthX helper + |> angledLine(angle = -angleToMatchLengthY(seg01, myVar, %), length = myVar) // ln-lineTo-yAbsolute should use angleToMatchLengthY helper "#; let program = crate::parsing::top_level_parse(some_program_string).unwrap(); diff --git a/rust/kcl-lib/std/math.kcl b/rust/kcl-lib/std/math.kcl index 2db91aef6..0dbc49412 100644 --- a/rust/kcl-lib/std/math.kcl +++ b/rust/kcl-lib/std/math.kcl @@ -7,7 +7,7 @@ /// circumference = 70 /// /// exampleSketch = startSketchOn(XZ) -/// |> circle(center = [0, 0], radius = circumference/ (2 * PI)) +/// |> circle(center = [0, 0], radius = circumference / (2 * PI)) /// /// example = extrude(exampleSketch, length = 5) /// ``` @@ -18,10 +18,10 @@ export PI = 3.14159265358979323846264338327950288_ /// ``` /// exampleSketch = startSketchOn(XZ) /// |> startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = 30, /// length = 2 * E ^ 2, -/// }, %) +/// ) /// |> yLine(endAbsolute = 0) /// |> close() /// @@ -34,10 +34,10 @@ export E = 2.71828182845904523536028747135266250_ /// ``` /// exampleSketch = startSketchOn(XZ) /// |> startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = 50, /// length = 10 * TAU, -/// }, %) +/// ) /// |> yLine(endAbsolute = 0) /// |> close() /// @@ -50,48 +50,70 @@ export TAU = 6.28318530717958647692528676655900577_ /// ``` /// exampleSketch = startSketchOn(XZ) /// |> startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = 30, /// length = 3 / cos(toRadians(30)), -/// }, %) +/// ) /// |> yLine(endAbsolute = 0) /// |> close() /// /// example = extrude(exampleSketch, length = 5) /// ``` @(impl = std_rust) -export fn cos(@num: number(rad)): number(_) {} +export fn cos(@num: number(Angle)): number(_) {} /// Compute the sine of a number (in radians). /// /// ``` /// exampleSketch = startSketchOn(XZ) /// |> startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = 50, -/// length = 15 / sin(toDegrees(135)), -/// }, %) +/// length = 15 / sin(toRadians(135)), +/// ) /// |> yLine(endAbsolute = 0) /// |> close() /// /// example = extrude(exampleSketch, length = 5) /// ``` @(impl = std_rust) -export fn sin(@num: number(rad)): number(_) {} +export fn sin(@num: number(Angle)): number(_) {} /// Compute the tangent of a number (in radians). /// /// ``` /// exampleSketch = startSketchOn(XZ) /// |> startProfileAt([0, 0], %) -/// |> angledLine({ +/// |> angledLine( /// angle = 50, /// length = 50 * tan(1/2), -/// }, %) +/// ) /// |> yLine(endAbsolute = 0) /// |> close() /// /// example = extrude(exampleSketch, length = 5) /// ``` @(impl = std_rust) -export fn tan(@num: number(rad)): number(_) {} +export fn tan(@num: number(Angle)): number(_) {} + +/// Convert polar/sphere (azimuth, elevation, distance) coordinates to +/// cartesian (x/y/z grid) coordinates. +/// +/// ``` +/// exampleSketch = startSketchOn(XZ) +/// |> startProfileAt([0, 0], %) +/// |> line(end = polar(angle = 30, length = 5), tag = $thing) +/// |> line(end = [0, 5]) +/// |> line(end = [segEndX(thing), 0]) +/// |> line(end = [-20, 10]) +/// |> close() +/// +/// example = extrude(exampleSketch, length = 5) +/// ``` +export fn polar(angle: number(Angle), length: number(Length)): Point2d { + // TODO could be done by implicit conversion when UoM coercions are activated. + rads = toRadians(angle) + x = length * cos(rads) + y = length * sin(rads) + return [x, y] +} diff --git a/rust/kcl-lib/std/prelude.kcl b/rust/kcl-lib/std/prelude.kcl index e096ad149..7c30d7b7f 100644 --- a/rust/kcl-lib/std/prelude.kcl +++ b/rust/kcl-lib/std/prelude.kcl @@ -42,15 +42,17 @@ export type string /// ```norun,inline /// startSketchOn('XZ') /// |> startProfileAt(origin, %) -/// |> angledLine({angle = 0, length = 191.26}, %, $rectangleSegmentA001) -/// |> angledLine({ +/// |> angledLine(angle = 0, length = 191.26, tag = $rectangleSegmentA001) +/// |> angledLine( /// angle = segAng(rectangleSegmentA001) - 90, /// length = 196.99, -/// }, %, $rectangleSegmentB001) -/// |> angledLine({ +/// tag = $rectangleSegmentB001, +/// ) +/// |> angledLine( /// angle = segAng(rectangleSegmentA001), /// length = -segLen(rectangleSegmentA001), -/// }, %, $rectangleSegmentC001) +/// tag = $rectangleSegmentC001, +/// ) /// |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) /// |> close() /// ``` @@ -74,15 +76,16 @@ export type string /// fn rect(origin) { /// return startSketchOn('XZ') /// |> startProfileAt(origin, %) -/// |> angledLine({angle = 0, length = 191.26}, %, $rectangleSegmentA001) -/// |> angledLine({ +/// |> angledLine(angle = 0, length = 191.26, tag = $rectangleSegmentA001) +/// |> angledLine( /// angle = segAng(rectangleSegmentA001) - 90, -/// length = 196.99 -/// }, %, $rectangleSegmentB001) -/// |> angledLine({ +/// length = 196.99, +/// tag = $rectangleSegmentB001) +/// |> angledLine( /// angle = segAng(rectangleSegmentA001), -/// length = -segLen(rectangleSegmentA001) -/// }, %, $rectangleSegmentC001) +/// length = -segLen(rectangleSegmentA001), +/// tag = $rectangleSegmentC001 +/// ) /// |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) /// |> close() /// } @@ -102,15 +105,15 @@ export type string /// fn rect(origin) { /// return startSketchOn('XZ') /// |> startProfileAt(origin, %) -/// |> angledLine({angle = 0, length = 191.26}, %, $rectangleSegmentA001) -/// |> angledLine({ +/// |> angledLine(angle = 0, length = 191.26, tag = $rectangleSegmentA001) +/// |> angledLine( /// angle = segAng(rectangleSegmentA001) - 90, /// length = 196.99 -/// }, %, $rectangleSegmentB001) -/// |> angledLine({ +/// , %, $rectangleSegmentB001) +/// |> angledLine( /// angle = segAng(rectangleSegmentA001), /// length = -segLen(rectangleSegmentA001) -/// }, %, $rectangleSegmentC001) +/// , %, $rectangleSegmentC001) /// |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) /// |> close() /// } @@ -242,13 +245,13 @@ export type Edge /// /// `Point2d` is an alias for a two-element array of [number](/docs/kcl/types/number)s. To write a value /// with type `Point2d`, use an array, e.g., `[0, 0]` or `[5.0, 3.14]`. -export type Point2d = [number; 2] +export type Point2d = [number(Length); 2] /// A point in three dimensional space. /// /// `Point3d` is an alias for a three-element array of [number](/docs/kcl/types/number)s. To write a value /// with type `Point3d`, use an array, e.g., `[0, 0, 0]` or `[5.0, 3.14, 6.8]`. -export type Point3d = [number; 3] +export type Point3d = [number(Length); 3] export XY = { origin = { x = 0, y = 0, z = 0 }, @@ -294,6 +297,12 @@ export Z = { direction = [0, 0, 1], }: Axis3d +/// Identifies the starting face of an extrusion. I.e., the face which is extruded. +export START = 'start' + +/// Identifies the ending face of an extrusion. I.e., the new face created by an extrusion. +export END = 'end' + /// Create a helix. /// /// ``` @@ -373,18 +382,18 @@ export fn helix( /// Number of revolutions. revolutions: number(_), /// Start angle (in degrees). - angleStart: number(deg), + angleStart: number(Angle), /// Is the helix rotation counter clockwise? The default is `false`. ccw?: bool, /// Radius of the helix. @(include_in_snippet = true) - radius?: number(mm), + radius?: number(Length), /// Axis to use for the helix. @(include_in_snippet = true) axis?: Axis3d | Edge, /// Length of the helix. This is not necessary if the helix is created around an edge. If not given the length of the edge is used. @(include_in_snippet = true) - length?: number(mm), + length?: number(Length), /// Cylinder to create the helix on. cylinder?: Solid, ): Helix {} @@ -453,7 +462,7 @@ export fn helix( /// |> close() /// |> revolve(axis = Y, angle = 180) /// -/// part002 = startSketchOn(part001, 'end') +/// part002 = startSketchOn(part001, face = END) /// |> startProfileAt([4.5, -5], %) /// |> line(end = [0, 5]) /// |> line(end = [5, 0]) @@ -471,7 +480,7 @@ export fn helix( /// |> close() /// |> extrude(length = 20) /// -/// sketch001 = startSketchOn(box, "END") +/// sketch001 = startSketchOn(box, face = END) /// |> circle( center = [10,10], radius = 4 ) /// |> revolve( /// angle = -90, @@ -488,7 +497,7 @@ export fn helix( /// |> close() /// |> extrude(length = 20) /// -/// sketch001 = startSketchOn(box, "END") +/// sketch001 = startSketchOn(box, face = END) /// |> circle( center = [10,10], radius = 4 ) /// |> revolve( /// angle = 90, @@ -505,7 +514,7 @@ export fn helix( /// |> close() /// |> extrude(length = 20) /// -/// sketch001 = startSketchOn(box, "END") +/// sketch001 = startSketchOn(box, face = END) /// |> circle( center = [10,10], radius = 4 ) /// |> revolve( /// angle = 90, @@ -582,6 +591,32 @@ export fn helix( /// |> circle(center = [-10, 10], radius = 4) /// |> revolve(angle = 90, axis = revolveAxis) /// ``` +/// +/// ``` +/// // Symmetrically revolve around a path. +/// +/// profile001 = startSketchOn(XY) +/// |> startProfileAt([0, 0], %) +/// |> line(end = [0, 20], tag = $revolveAxis) +/// |> line(end = [20, 0]) +/// +/// sketch001 = startSketchOn(XY) +/// |> circle(center = [-10, 10], radius = 4) +/// |> revolve(angle = 90, axis = revolveAxis, symmetric = true) +/// ``` +/// +/// ``` +/// // Bidirectional revolve around a path. +/// +/// profile001 = startSketchOn(XY) +/// |> startProfileAt([0, 0], %) +/// |> line(end = [0, 20], tag = $revolveAxis) +/// |> line(end = [20, 0]) +/// +/// sketch001 = startSketchOn(XY) +/// |> circle(center = [-10, 10], radius = 4) +/// |> revolve(angle = 90, axis = revolveAxis, bidirectionalAngle = 50) +/// ``` @(impl = std_rust) export fn revolve( /// The sketch or set of sketches that should be revolved @@ -589,9 +624,13 @@ export fn revolve( /// Axis of revolution. axis: Axis2d | Edge, /// Angle to revolve (in degrees). Default is 360. - angle?: number(deg), + angle?: number(Angle), /// Tolerance for the revolve operation. - tolerance?: number(mm), + tolerance?: number(Length), + /// If true, the extrusion will happen symmetrically around the sketch. Otherwise, the extrusion will happen on only one side of the sketch. + symmetric?: bool, + /// If specified, will also revolve in the opposite direction to 'angle' to the specified angle. If 'symmetric' is true, this value is ignored. + bidirectionalAngle?: number(Angle), /// A named tag for the face at the start of the revolve, i.e. the original sketch. tagStart?: tag, /// A named tag for the face at the end of the revolve. diff --git a/rust/kcl-lib/std/sketch.kcl b/rust/kcl-lib/std/sketch.kcl index 761171d0e..a393049ef 100644 --- a/rust/kcl-lib/std/sketch.kcl +++ b/rust/kcl-lib/std/sketch.kcl @@ -1,4 +1,5 @@ @no_std +@settings(defaultLengthUnit = mm) /// Construct a 2-dimensional circle, of the specified radius, centered at /// the provided (x, y) origin point. @@ -28,7 +29,7 @@ export fn circle( /// The center of the circle. center: Point2d, /// The radius of the circle. - radius: number, + radius: number(Length), /// Create a new tag which refers to this circle. tag?: tag, ): Sketch {} @@ -102,14 +103,14 @@ export fn circle( /// sketch0011 = startSketchOn(XY) /// |> startProfileAt([6.77, 0], %) /// |> yLine(length = 1.27) -/// |> tangentialArcTo([5.96, 2.37], %) -/// |> tangentialArcTo([-6.2, 2.44], %) -/// |> tangentialArcTo([-6.6, 1.82], %) +/// |> tangentialArc(endAbsolute = [5.96, 2.37]) +/// |> tangentialArc(endAbsolute = [-6.2, 2.44]) +/// |> tangentialArc(endAbsolute = [-6.6, 1.82]) /// |> yLine(length = -1.82) /// |> mirror2d( axis = X ) /// |> extrude(length = 10) /// -/// sketch002 = startSketchOn(sketch0011, 'END') +/// sketch002 = startSketchOn(sketch0011, face = END) /// |> circle( center = [-0.01, 1.58], radius = 1.2 ) /// |> extrude(length = 1.2) /// diff --git a/rust/kcl-lib/tests/add_lots/ast.snap b/rust/kcl-lib/tests/add_lots/ast.snap index 53332b199..1bbabce99 100644 --- a/rust/kcl-lib/tests/add_lots/ast.snap +++ b/rust/kcl-lib/tests/add_lots/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing add_lots.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -22,14 +22,14 @@ description: Result of parsing add_lots.kcl "body": [ { "argument": { - "commentStart": 19, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 19, + "commentStart": 0, "end": 0, "name": { - "commentStart": 19, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -42,7 +42,7 @@ description: Result of parsing add_lots.kcl }, "operator": "*", "right": { - "commentStart": 23, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -57,24 +57,24 @@ description: Result of parsing add_lots.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 8, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 4, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 5, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -96,2015 +96,218 @@ description: Result of parsing add_lots.kcl "type": "VariableDeclaration" }, { - "commentStart": 26, + "commentStart": 0, "declaration": { - "commentStart": 28, + "commentStart": 0, "end": 0, "id": { - "commentStart": 28, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "commentStart": 32, - "end": 0, - "left": { - "arguments": [ - { - "commentStart": 34, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 32, - "end": 0, - "name": { - "commentStart": 32, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 32, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 41, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 39, - "end": 0, - "name": { - "commentStart": 39, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 39, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 48, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 46, - "end": 0, - "name": { - "commentStart": 46, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 46, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 55, - "end": 0, - "raw": "3", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 3.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 53, - "end": 0, - "name": { - "commentStart": 53, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 53, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 62, - "end": 0, - "raw": "4", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 4.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 60, - "end": 0, - "name": { - "commentStart": 60, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 60, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 69, - "end": 0, - "raw": "5", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 5.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 67, - "end": 0, - "name": { - "commentStart": 67, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 67, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 76, - "end": 0, - "raw": "6", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 6.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 74, - "end": 0, - "name": { - "commentStart": 74, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 74, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 83, - "end": 0, - "raw": "7", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 7.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 81, - "end": 0, - "name": { - "commentStart": 81, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 81, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 90, - "end": 0, - "raw": "8", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 8.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 88, - "end": 0, - "name": { - "commentStart": 88, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 88, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 97, - "end": 0, - "raw": "9", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 9.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 95, - "end": 0, - "name": { - "commentStart": 95, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 95, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 104, - "end": 0, - "raw": "10", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 102, - "end": 0, - "name": { - "commentStart": 102, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 102, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 112, - "end": 0, - "raw": "11", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 11.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 110, - "end": 0, - "name": { - "commentStart": 110, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 110, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 120, - "end": 0, - "raw": "12", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 12.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 118, - "end": 0, - "name": { - "commentStart": 118, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 118, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 128, - "end": 0, - "raw": "13", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 13.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 126, - "end": 0, - "name": { - "commentStart": 126, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 126, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 136, - "end": 0, - "raw": "14", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 14.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 134, - "end": 0, - "name": { - "commentStart": 134, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 134, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 144, - "end": 0, - "raw": "15", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 15.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 142, - "end": 0, - "name": { - "commentStart": 142, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 142, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 152, - "end": 0, - "raw": "16", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 16.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 150, - "end": 0, - "name": { - "commentStart": 150, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 150, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 160, - "end": 0, - "raw": "17", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 17.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 158, - "end": 0, - "name": { - "commentStart": 158, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 158, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 168, - "end": 0, - "raw": "18", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 18.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 166, - "end": 0, - "name": { - "commentStart": 166, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 166, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 176, - "end": 0, - "raw": "19", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 19.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 174, - "end": 0, - "name": { - "commentStart": 174, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 174, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 184, - "end": 0, - "raw": "20", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 20.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 182, - "end": 0, - "name": { - "commentStart": 182, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 182, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 192, - "end": 0, - "raw": "21", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 21.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 190, - "end": 0, - "name": { - "commentStart": 190, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 190, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 200, - "end": 0, - "raw": "22", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 22.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 198, - "end": 0, - "name": { - "commentStart": 198, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 198, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 208, - "end": 0, - "raw": "23", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 23.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 206, - "end": 0, - "name": { - "commentStart": 206, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 206, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 216, - "end": 0, - "raw": "24", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 24.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 214, - "end": 0, - "name": { - "commentStart": 214, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 214, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 224, - "end": 0, - "raw": "25", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 25.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 222, - "end": 0, - "name": { - "commentStart": 222, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 222, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 232, - "end": 0, - "raw": "26", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 26.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 230, - "end": 0, - "name": { - "commentStart": 230, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 230, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 240, - "end": 0, - "raw": "27", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 27.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 238, - "end": 0, - "name": { - "commentStart": 238, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 238, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 248, - "end": 0, - "raw": "28", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 28.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 246, - "end": 0, - "name": { - "commentStart": 246, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 246, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 256, - "end": 0, - "raw": "29", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 29.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 254, - "end": 0, - "name": { - "commentStart": 254, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 254, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 264, - "end": 0, - "raw": "30", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 30.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 262, - "end": 0, - "name": { - "commentStart": 262, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 262, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 272, - "end": 0, - "raw": "31", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 31.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 270, - "end": 0, - "name": { - "commentStart": 270, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 270, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 280, - "end": 0, - "raw": "32", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 32.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 278, - "end": 0, - "name": { - "commentStart": 278, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 278, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 288, - "end": 0, - "raw": "33", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 33.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 286, - "end": 0, - "name": { - "commentStart": 286, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 286, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 296, - "end": 0, - "raw": "34", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 34.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 294, - "end": 0, - "name": { - "commentStart": 294, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 294, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 304, - "end": 0, - "raw": "35", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 35.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 302, - "end": 0, - "name": { - "commentStart": 302, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 302, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 312, - "end": 0, - "raw": "36", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 36.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 310, - "end": 0, - "name": { - "commentStart": 310, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 310, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 320, - "end": 0, - "raw": "37", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 37.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 318, - "end": 0, - "name": { - "commentStart": 318, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 318, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 328, - "end": 0, - "raw": "38", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 38.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 326, - "end": 0, - "name": { - "commentStart": 326, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 326, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 336, - "end": 0, - "raw": "39", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 39.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 334, - "end": 0, - "name": { - "commentStart": 334, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 334, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "arguments": [ - { - "commentStart": 344, - "end": 0, - "raw": "40", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 40.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 342, - "end": 0, - "name": { - "commentStart": 342, - "end": 0, - "name": "f", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 342, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { "arguments": [ { - "commentStart": 352, + "commentStart": 0, "end": 0, - "raw": "41", + "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 41.0, + "value": 0.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 350, + "commentStart": 0, "end": 0, "name": { - "commentStart": 350, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2114,7 +317,44 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 350, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "operator": "+", + "right": { + "arguments": [ + { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "f", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2128,24 +368,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 360, + "commentStart": 0, "end": 0, - "raw": "42", + "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 42.0, + "value": 2.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 358, + "commentStart": 0, "end": 0, "name": { - "commentStart": 358, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2155,7 +395,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 358, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2169,24 +409,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 368, + "commentStart": 0, "end": 0, - "raw": "43", + "raw": "3", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 43.0, + "value": 3.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 366, + "commentStart": 0, "end": 0, "name": { - "commentStart": 366, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2196,7 +436,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 366, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2210,24 +450,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 376, + "commentStart": 0, "end": 0, - "raw": "44", + "raw": "4", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 44.0, + "value": 4.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 374, + "commentStart": 0, "end": 0, "name": { - "commentStart": 374, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2237,7 +477,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 374, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2251,24 +491,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 384, + "commentStart": 0, "end": 0, - "raw": "45", + "raw": "5", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 45.0, + "value": 5.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 382, + "commentStart": 0, "end": 0, "name": { - "commentStart": 382, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2278,7 +518,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 382, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2292,24 +532,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 392, + "commentStart": 0, "end": 0, - "raw": "46", + "raw": "6", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 46.0, + "value": 6.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 390, + "commentStart": 0, "end": 0, "name": { - "commentStart": 390, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2319,7 +559,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 390, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2333,24 +573,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 400, + "commentStart": 0, "end": 0, - "raw": "47", + "raw": "7", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 47.0, + "value": 7.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 398, + "commentStart": 0, "end": 0, "name": { - "commentStart": 398, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2360,7 +600,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 398, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2374,24 +614,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 408, + "commentStart": 0, "end": 0, - "raw": "48", + "raw": "8", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 48.0, + "value": 8.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 406, + "commentStart": 0, "end": 0, "name": { - "commentStart": 406, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2401,7 +641,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 406, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2415,24 +655,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 416, + "commentStart": 0, "end": 0, - "raw": "49", + "raw": "9", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 49.0, + "value": 9.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 414, + "commentStart": 0, "end": 0, "name": { - "commentStart": 414, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2442,7 +682,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 414, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2456,24 +696,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 424, + "commentStart": 0, "end": 0, - "raw": "50", + "raw": "10", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 50.0, + "value": 10.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 422, + "commentStart": 0, "end": 0, "name": { - "commentStart": 422, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2483,7 +723,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 422, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2497,24 +737,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 432, + "commentStart": 0, "end": 0, - "raw": "51", + "raw": "11", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 51.0, + "value": 11.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 430, + "commentStart": 0, "end": 0, "name": { - "commentStart": 430, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2524,7 +764,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 430, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2538,24 +778,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 440, + "commentStart": 0, "end": 0, - "raw": "52", + "raw": "12", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 52.0, + "value": 12.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 438, + "commentStart": 0, "end": 0, "name": { - "commentStart": 438, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2565,7 +805,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 438, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2579,24 +819,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 448, + "commentStart": 0, "end": 0, - "raw": "53", + "raw": "13", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 53.0, + "value": 13.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 446, + "commentStart": 0, "end": 0, "name": { - "commentStart": 446, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2606,7 +846,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 446, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2620,24 +860,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 456, + "commentStart": 0, "end": 0, - "raw": "54", + "raw": "14", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 54.0, + "value": 14.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 454, + "commentStart": 0, "end": 0, "name": { - "commentStart": 454, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2647,7 +887,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 454, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2661,24 +901,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 464, + "commentStart": 0, "end": 0, - "raw": "55", + "raw": "15", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 55.0, + "value": 15.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 462, + "commentStart": 0, "end": 0, "name": { - "commentStart": 462, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2688,7 +928,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 462, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2702,24 +942,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 472, + "commentStart": 0, "end": 0, - "raw": "56", + "raw": "16", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 56.0, + "value": 16.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 470, + "commentStart": 0, "end": 0, "name": { - "commentStart": 470, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2729,7 +969,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 470, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2743,24 +983,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 480, + "commentStart": 0, "end": 0, - "raw": "57", + "raw": "17", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 57.0, + "value": 17.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 478, + "commentStart": 0, "end": 0, "name": { - "commentStart": 478, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2770,7 +1010,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 478, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2784,24 +1024,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 488, + "commentStart": 0, "end": 0, - "raw": "58", + "raw": "18", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 58.0, + "value": 18.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 486, + "commentStart": 0, "end": 0, "name": { - "commentStart": 486, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2811,7 +1051,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 486, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2825,24 +1065,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 496, + "commentStart": 0, "end": 0, - "raw": "59", + "raw": "19", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 59.0, + "value": 19.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 494, + "commentStart": 0, "end": 0, "name": { - "commentStart": 494, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2852,7 +1092,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 494, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2866,24 +1106,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 504, + "commentStart": 0, "end": 0, - "raw": "60", + "raw": "20", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 60.0, + "value": 20.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 502, + "commentStart": 0, "end": 0, "name": { - "commentStart": 502, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2893,7 +1133,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 502, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2907,24 +1147,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 512, + "commentStart": 0, "end": 0, - "raw": "61", + "raw": "21", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 61.0, + "value": 21.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 510, + "commentStart": 0, "end": 0, "name": { - "commentStart": 510, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2934,7 +1174,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 510, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2948,24 +1188,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 520, + "commentStart": 0, "end": 0, - "raw": "62", + "raw": "22", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 62.0, + "value": 22.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 518, + "commentStart": 0, "end": 0, "name": { - "commentStart": 518, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -2975,7 +1215,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 518, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2989,24 +1229,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 528, + "commentStart": 0, "end": 0, - "raw": "63", + "raw": "23", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 63.0, + "value": 23.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 526, + "commentStart": 0, "end": 0, "name": { - "commentStart": 526, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3016,7 +1256,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 526, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3030,24 +1270,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 536, + "commentStart": 0, "end": 0, - "raw": "64", + "raw": "24", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 64.0, + "value": 24.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 534, + "commentStart": 0, "end": 0, "name": { - "commentStart": 534, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3057,7 +1297,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 534, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3071,24 +1311,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 544, + "commentStart": 0, "end": 0, - "raw": "65", + "raw": "25", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 65.0, + "value": 25.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 542, + "commentStart": 0, "end": 0, "name": { - "commentStart": 542, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3098,7 +1338,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 542, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3112,24 +1352,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 552, + "commentStart": 0, "end": 0, - "raw": "66", + "raw": "26", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 66.0, + "value": 26.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 550, + "commentStart": 0, "end": 0, "name": { - "commentStart": 550, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3139,7 +1379,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 550, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3153,24 +1393,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 560, + "commentStart": 0, "end": 0, - "raw": "67", + "raw": "27", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 67.0, + "value": 27.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 558, + "commentStart": 0, "end": 0, "name": { - "commentStart": 558, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3180,7 +1420,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 558, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3194,24 +1434,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 568, + "commentStart": 0, "end": 0, - "raw": "68", + "raw": "28", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 68.0, + "value": 28.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 566, + "commentStart": 0, "end": 0, "name": { - "commentStart": 566, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3221,7 +1461,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 566, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3235,24 +1475,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 576, + "commentStart": 0, "end": 0, - "raw": "69", + "raw": "29", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 69.0, + "value": 29.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 574, + "commentStart": 0, "end": 0, "name": { - "commentStart": 574, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3262,7 +1502,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 574, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3276,24 +1516,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 584, + "commentStart": 0, "end": 0, - "raw": "70", + "raw": "30", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 70.0, + "value": 30.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 582, + "commentStart": 0, "end": 0, "name": { - "commentStart": 582, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3303,7 +1543,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 582, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3317,24 +1557,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 592, + "commentStart": 0, "end": 0, - "raw": "71", + "raw": "31", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 71.0, + "value": 31.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 590, + "commentStart": 0, "end": 0, "name": { - "commentStart": 590, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3344,7 +1584,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 590, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3358,24 +1598,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 600, + "commentStart": 0, "end": 0, - "raw": "72", + "raw": "32", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 72.0, + "value": 32.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 598, + "commentStart": 0, "end": 0, "name": { - "commentStart": 598, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3385,7 +1625,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 598, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3399,24 +1639,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 608, + "commentStart": 0, "end": 0, - "raw": "73", + "raw": "33", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 73.0, + "value": 33.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 606, + "commentStart": 0, "end": 0, "name": { - "commentStart": 606, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3426,7 +1666,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 606, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3440,24 +1680,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 616, + "commentStart": 0, "end": 0, - "raw": "74", + "raw": "34", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 74.0, + "value": 34.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 614, + "commentStart": 0, "end": 0, "name": { - "commentStart": 614, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3467,7 +1707,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 614, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3481,24 +1721,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 624, + "commentStart": 0, "end": 0, - "raw": "75", + "raw": "35", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 75.0, + "value": 35.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 622, + "commentStart": 0, "end": 0, "name": { - "commentStart": 622, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3508,7 +1748,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 622, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3522,24 +1762,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 632, + "commentStart": 0, "end": 0, - "raw": "76", + "raw": "36", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 76.0, + "value": 36.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 630, + "commentStart": 0, "end": 0, "name": { - "commentStart": 630, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3549,7 +1789,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 630, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3563,24 +1803,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 640, + "commentStart": 0, "end": 0, - "raw": "77", + "raw": "37", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 77.0, + "value": 37.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 638, + "commentStart": 0, "end": 0, "name": { - "commentStart": 638, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3590,7 +1830,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 638, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3604,24 +1844,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 648, + "commentStart": 0, "end": 0, - "raw": "78", + "raw": "38", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 78.0, + "value": 38.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 646, + "commentStart": 0, "end": 0, "name": { - "commentStart": 646, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3631,7 +1871,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 646, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3645,24 +1885,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 656, + "commentStart": 0, "end": 0, - "raw": "79", + "raw": "39", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 79.0, + "value": 39.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 654, + "commentStart": 0, "end": 0, "name": { - "commentStart": 654, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3672,7 +1912,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 654, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3686,24 +1926,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 664, + "commentStart": 0, "end": 0, - "raw": "80", + "raw": "40", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 80.0, + "value": 40.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 662, + "commentStart": 0, "end": 0, "name": { - "commentStart": 662, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3713,7 +1953,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 662, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3727,24 +1967,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 672, + "commentStart": 0, "end": 0, - "raw": "81", + "raw": "41", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 81.0, + "value": 41.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 670, + "commentStart": 0, "end": 0, "name": { - "commentStart": 670, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3754,7 +1994,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 670, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3768,24 +2008,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 680, + "commentStart": 0, "end": 0, - "raw": "82", + "raw": "42", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 82.0, + "value": 42.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 678, + "commentStart": 0, "end": 0, "name": { - "commentStart": 678, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3795,7 +2035,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 678, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3809,24 +2049,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 688, + "commentStart": 0, "end": 0, - "raw": "83", + "raw": "43", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 83.0, + "value": 43.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 686, + "commentStart": 0, "end": 0, "name": { - "commentStart": 686, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3836,7 +2076,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 686, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3850,24 +2090,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 696, + "commentStart": 0, "end": 0, - "raw": "84", + "raw": "44", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 84.0, + "value": 44.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 694, + "commentStart": 0, "end": 0, "name": { - "commentStart": 694, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3877,7 +2117,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 694, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3891,24 +2131,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 704, + "commentStart": 0, "end": 0, - "raw": "85", + "raw": "45", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 85.0, + "value": 45.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 702, + "commentStart": 0, "end": 0, "name": { - "commentStart": 702, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3918,7 +2158,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 702, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3932,24 +2172,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 712, + "commentStart": 0, "end": 0, - "raw": "86", + "raw": "46", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 86.0, + "value": 46.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 710, + "commentStart": 0, "end": 0, "name": { - "commentStart": 710, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -3959,7 +2199,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 710, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3973,24 +2213,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 720, + "commentStart": 0, "end": 0, - "raw": "87", + "raw": "47", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 87.0, + "value": 47.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 718, + "commentStart": 0, "end": 0, "name": { - "commentStart": 718, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -4000,7 +2240,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 718, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4014,24 +2254,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 728, + "commentStart": 0, "end": 0, - "raw": "88", + "raw": "48", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 88.0, + "value": 48.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 726, + "commentStart": 0, "end": 0, "name": { - "commentStart": 726, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -4041,7 +2281,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 726, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4055,24 +2295,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 736, + "commentStart": 0, "end": 0, - "raw": "89", + "raw": "49", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 89.0, + "value": 49.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 734, + "commentStart": 0, "end": 0, "name": { - "commentStart": 734, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -4082,7 +2322,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 734, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4096,24 +2336,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 744, + "commentStart": 0, "end": 0, - "raw": "90", + "raw": "50", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 90.0, + "value": 50.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 742, + "commentStart": 0, "end": 0, "name": { - "commentStart": 742, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -4123,7 +2363,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 742, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4137,24 +2377,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 752, + "commentStart": 0, "end": 0, - "raw": "91", + "raw": "51", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 91.0, + "value": 51.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 750, + "commentStart": 0, "end": 0, "name": { - "commentStart": 750, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -4164,7 +2404,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 750, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4178,24 +2418,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 760, + "commentStart": 0, "end": 0, - "raw": "92", + "raw": "52", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 92.0, + "value": 52.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 758, + "commentStart": 0, "end": 0, "name": { - "commentStart": 758, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -4205,7 +2445,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 758, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4219,24 +2459,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 768, + "commentStart": 0, "end": 0, - "raw": "93", + "raw": "53", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 93.0, + "value": 53.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 766, + "commentStart": 0, "end": 0, "name": { - "commentStart": 766, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -4246,7 +2486,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 766, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4260,24 +2500,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 776, + "commentStart": 0, "end": 0, - "raw": "94", + "raw": "54", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 94.0, + "value": 54.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 774, + "commentStart": 0, "end": 0, "name": { - "commentStart": 774, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -4287,7 +2527,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 774, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4301,24 +2541,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 784, + "commentStart": 0, "end": 0, - "raw": "95", + "raw": "55", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 95.0, + "value": 55.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 782, + "commentStart": 0, "end": 0, "name": { - "commentStart": 782, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -4328,7 +2568,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 782, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4342,24 +2582,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 792, + "commentStart": 0, "end": 0, - "raw": "96", + "raw": "56", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 96.0, + "value": 56.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 790, + "commentStart": 0, "end": 0, "name": { - "commentStart": 790, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -4369,7 +2609,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 790, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4383,24 +2623,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 800, + "commentStart": 0, "end": 0, - "raw": "97", + "raw": "57", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 97.0, + "value": 57.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 798, + "commentStart": 0, "end": 0, "name": { - "commentStart": 798, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -4410,7 +2650,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 798, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4424,24 +2664,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 808, + "commentStart": 0, "end": 0, - "raw": "98", + "raw": "58", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 98.0, + "value": 58.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 806, + "commentStart": 0, "end": 0, "name": { - "commentStart": 806, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -4451,7 +2691,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 806, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4465,24 +2705,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 816, + "commentStart": 0, "end": 0, - "raw": "99", + "raw": "59", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 99.0, + "value": 59.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 814, + "commentStart": 0, "end": 0, "name": { - "commentStart": 814, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -4492,7 +2732,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 814, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4506,24 +2746,24 @@ description: Result of parsing add_lots.kcl "right": { "arguments": [ { - "commentStart": 824, + "commentStart": 0, "end": 0, - "raw": "100", + "raw": "60", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 100.0, + "value": 60.0, "suffix": "None" } } ], "callee": { "abs_path": false, - "commentStart": 822, + "commentStart": 0, "end": 0, "name": { - "commentStart": 822, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -4533,7 +2773,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 822, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4553,16 +2793,16 @@ description: Result of parsing add_lots.kcl "type": "VariableDeclaration" }, { - "commentStart": 828, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 842, + "commentStart": 0, "end": 0, "name": { - "commentStart": 842, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -4574,19 +2814,19 @@ description: Result of parsing add_lots.kcl "type": "Name" }, { - "commentStart": 845, + "commentStart": 0, "end": 0, - "raw": "10100", + "raw": "3660", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 10100.0, + "value": 3660.0, "suffix": "None" } }, { - "commentStart": 852, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -4598,7 +2838,7 @@ description: Result of parsing add_lots.kcl } }, { - "commentStart": 857, + "commentStart": 0, "end": 0, "raw": "\"Big sum\"", "start": 0, @@ -4609,10 +2849,10 @@ description: Result of parsing add_lots.kcl ], "callee": { "abs_path": false, - "commentStart": 830, + "commentStart": 0, "end": 0, "name": { - "commentStart": 830, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -4622,7 +2862,7 @@ description: Result of parsing add_lots.kcl "start": 0, "type": "Name" }, - "commentStart": 830, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4639,7 +2879,7 @@ description: Result of parsing add_lots.kcl "nonCodeNodes": { "0": [ { - "commentStart": 26, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4650,7 +2890,7 @@ description: Result of parsing add_lots.kcl ], "1": [ { - "commentStart": 828, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/add_lots/input.kcl b/rust/kcl-lib/tests/add_lots/input.kcl index 9694032cd..d36f3c4c0 100644 --- a/rust/kcl-lib/tests/add_lots/input.kcl +++ b/rust/kcl-lib/tests/add_lots/input.kcl @@ -2,6 +2,6 @@ fn f(i) { return i * 2 } -x = f(0) + f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) + f(8) + f(9) + f(10) + f(11) + f(12) + f(13) + f(14) + f(15) + f(16) + f(17) + f(18) + f(19) + f(20) + f(21) + f(22) + f(23) + f(24) + f(25) + f(26) + f(27) + f(28) + f(29) + f(30) + f(31) + f(32) + f(33) + f(34) + f(35) + f(36) + f(37) + f(38) + f(39) + f(40) + f(41) + f(42) + f(43) + f(44) + f(45) + f(46) + f(47) + f(48) + f(49) + f(50) + f(51) + f(52) + f(53) + f(54) + f(55) + f(56) + f(57) + f(58) + f(59) + f(60) + f(61) + f(62) + f(63) + f(64) + f(65) + f(66) + f(67) + f(68) + f(69) + f(70) + f(71) + f(72) + f(73) + f(74) + f(75) + f(76) + f(77) + f(78) + f(79) + f(80) + f(81) + f(82) + f(83) + f(84) + f(85) + f(86) + f(87) + f(88) + f(89) + f(90) + f(91) + f(92) + f(93) + f(94) + f(95) + f(96) + f(97) + f(98) + f(99) + f(100) +x = f(0) + f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) + f(8) + f(9) + f(10) + f(11) + f(12) + f(13) + f(14) + f(15) + f(16) + f(17) + f(18) + f(19) + f(20) + f(21) + f(22) + f(23) + f(24) + f(25) + f(26) + f(27) + f(28) + f(29) + f(30) + f(31) + f(32) + f(33) + f(34) + f(35) + f(36) + f(37) + f(38) + f(39) + f(40) + f(41) + f(42) + f(43) + f(44) + f(45) + f(46) + f(47) + f(48) + f(49) + f(50) + f(51) + f(52) + f(53) + f(54) + f(55) + f(56) + f(57) + f(58) + f(59) + f(60) -assertEqual(x, 10100, 0.1, "Big sum") +assertEqual(x, 3660, 0.1, "Big sum") diff --git a/rust/kcl-lib/tests/add_lots/ops.snap b/rust/kcl-lib/tests/add_lots/ops.snap index 7d0644b7a..b9b1b270d 100644 --- a/rust/kcl-lib/tests/add_lots/ops.snap +++ b/rust/kcl-lib/tests/add_lots/ops.snap @@ -1098,726 +1098,6 @@ description: Operations executed add_lots.kcl }, "sourceRange": [] }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, - { - "type": "GroupEnd" - }, - { - "type": "GroupBegin", - "group": { - "type": "FunctionCall", - "name": "f", - "functionSourceRange": [ - 4, - 26, - 0 - ], - "unlabeledArg": null, - "labeledArgs": {} - }, - "sourceRange": [] - }, { "type": "GroupEnd" } diff --git a/rust/kcl-lib/tests/add_lots/program_memory.snap b/rust/kcl-lib/tests/add_lots/program_memory.snap index e231f1918..5de5bb1ed 100644 --- a/rust/kcl-lib/tests/add_lots/program_memory.snap +++ b/rust/kcl-lib/tests/add_lots/program_memory.snap @@ -8,9 +8,15 @@ description: Variables in memory after executing add_lots.kcl }, "x": { "type": "Number", - "value": 10100.0, + "value": 3660.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } } } diff --git a/rust/kcl-lib/tests/add_lots/unparsed.snap b/rust/kcl-lib/tests/add_lots/unparsed.snap index c52044e4f..5713fbcd7 100644 --- a/rust/kcl-lib/tests/add_lots/unparsed.snap +++ b/rust/kcl-lib/tests/add_lots/unparsed.snap @@ -6,6 +6,6 @@ fn f(i) { return i * 2 } -x = f(0) + f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) + f(8) + f(9) + f(10) + f(11) + f(12) + f(13) + f(14) + f(15) + f(16) + f(17) + f(18) + f(19) + f(20) + f(21) + f(22) + f(23) + f(24) + f(25) + f(26) + f(27) + f(28) + f(29) + f(30) + f(31) + f(32) + f(33) + f(34) + f(35) + f(36) + f(37) + f(38) + f(39) + f(40) + f(41) + f(42) + f(43) + f(44) + f(45) + f(46) + f(47) + f(48) + f(49) + f(50) + f(51) + f(52) + f(53) + f(54) + f(55) + f(56) + f(57) + f(58) + f(59) + f(60) + f(61) + f(62) + f(63) + f(64) + f(65) + f(66) + f(67) + f(68) + f(69) + f(70) + f(71) + f(72) + f(73) + f(74) + f(75) + f(76) + f(77) + f(78) + f(79) + f(80) + f(81) + f(82) + f(83) + f(84) + f(85) + f(86) + f(87) + f(88) + f(89) + f(90) + f(91) + f(92) + f(93) + f(94) + f(95) + f(96) + f(97) + f(98) + f(99) + f(100) +x = f(0) + f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) + f(8) + f(9) + f(10) + f(11) + f(12) + f(13) + f(14) + f(15) + f(16) + f(17) + f(18) + f(19) + f(20) + f(21) + f(22) + f(23) + f(24) + f(25) + f(26) + f(27) + f(28) + f(29) + f(30) + f(31) + f(32) + f(33) + f(34) + f(35) + f(36) + f(37) + f(38) + f(39) + f(40) + f(41) + f(42) + f(43) + f(44) + f(45) + f(46) + f(47) + f(48) + f(49) + f(50) + f(51) + f(52) + f(53) + f(54) + f(55) + f(56) + f(57) + f(58) + f(59) + f(60) -assertEqual(x, 10100, 0.1, "Big sum") +assertEqual(x, 3660, 0.1, "Big sum") diff --git a/rust/kcl-lib/tests/angled_line/artifact_commands.snap b/rust/kcl-lib/tests/angled_line/artifact_commands.snap index fb390e0a8..a56427343 100644 --- a/rust/kcl-lib/tests/angled_line/artifact_commands.snap +++ b/rust/kcl-lib/tests/angled_line/artifact_commands.snap @@ -213,7 +213,8 @@ description: Artifact commands angled_line.kcl "type": "extrude", "target": "[uuid]", "distance": 4.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/angled_line/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/angled_line/artifact_graph_flowchart.snap.md index 0e809ce8d..5f190e79f 100644 --- a/rust/kcl-lib/tests/angled_line/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/angled_line/artifact_graph_flowchart.snap.md @@ -5,13 +5,13 @@ flowchart LR 3["Segment
[73, 97, 0]"] 4["Segment
[103, 142, 0]"] 5["Segment
[148, 174, 0]"] - 6["Segment
[180, 217, 0]"] - 7["Segment
[223, 250, 0]"] - 8["Segment
[256, 264, 0]"] + 6["Segment
[180, 229, 0]"] + 7["Segment
[235, 262, 0]"] + 8["Segment
[268, 275, 0]"] 9[Solid2d] end 1["Plane
[10, 29, 0]"] - 10["Sweep Extrusion
[270, 289, 0]"] + 10["Sweep Extrusion
[281, 300, 0]"] 11[Wall] 12[Wall] 13[Wall] diff --git a/rust/kcl-lib/tests/angled_line/ast.snap b/rust/kcl-lib/tests/angled_line/ast.snap index 2cf4e3381..c6a37fae6 100644 --- a/rust/kcl-lib/tests/angled_line/ast.snap +++ b/rust/kcl-lib/tests/angled_line/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing angled_line.kcl { "arguments": [ { - "commentStart": 24, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing angled_line.kcl ], "callee": { "abs_path": false, - "commentStart": 10, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing angled_line.kcl "start": 0, "type": "Name" }, - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing angled_line.kcl { "arguments": [ { - "commentStart": 50, + "commentStart": 0, "elements": [ { - "commentStart": 51, + "commentStart": 0, "end": 0, "raw": "4.83", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing angled_line.kcl } }, { - "commentStart": 57, + "commentStart": 0, "end": 0, "raw": "12.56", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing angled_line.kcl "type": "ArrayExpression" }, { - "commentStart": 65, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing angled_line.kcl ], "callee": { "abs_path": false, - "commentStart": 35, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing angled_line.kcl "start": 0, "type": "Name" }, - "commentStart": 35, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +121,17 @@ description: Result of parsing angled_line.kcl { "type": "LabeledArg", "label": { - "commentStart": 78, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 84, + "commentStart": 0, "elements": [ { - "commentStart": 85, + "commentStart": 0, "end": 0, "raw": "15.1", "start": 0, @@ -143,7 +143,7 @@ description: Result of parsing angled_line.kcl } }, { - "commentStart": 91, + "commentStart": 0, "end": 0, "raw": "2.48", "start": 0, @@ -164,10 +164,10 @@ description: Result of parsing angled_line.kcl ], "callee": { "abs_path": false, - "commentStart": 73, + "commentStart": 0, "end": 0, "name": { - "commentStart": 73, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -177,7 +177,7 @@ description: Result of parsing angled_line.kcl "start": 0, "type": "Name" }, - "commentStart": 73, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -189,17 +189,17 @@ description: Result of parsing angled_line.kcl { "type": "LabeledArg", "label": { - "commentStart": 108, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 114, + "commentStart": 0, "elements": [ { - "commentStart": 115, + "commentStart": 0, "end": 0, "raw": "3.15", "start": 0, @@ -212,7 +212,7 @@ description: Result of parsing angled_line.kcl }, { "argument": { - "commentStart": 122, + "commentStart": 0, "end": 0, "raw": "9.85", "start": 0, @@ -223,7 +223,7 @@ description: Result of parsing angled_line.kcl "suffix": "None" } }, - "commentStart": 121, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -240,14 +240,14 @@ description: Result of parsing angled_line.kcl { "type": "LabeledArg", "label": { - "commentStart": 129, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 135, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -258,10 +258,10 @@ description: Result of parsing angled_line.kcl ], "callee": { "abs_path": false, - "commentStart": 103, + "commentStart": 0, "end": 0, "name": { - "commentStart": 103, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -271,7 +271,7 @@ description: Result of parsing angled_line.kcl "start": 0, "type": "Name" }, - "commentStart": 103, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -283,18 +283,18 @@ description: Result of parsing angled_line.kcl { "type": "LabeledArg", "label": { - "commentStart": 153, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 159, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 161, + "commentStart": 0, "end": 0, "raw": "15.17", "start": 0, @@ -305,7 +305,7 @@ description: Result of parsing angled_line.kcl "suffix": "None" } }, - "commentStart": 160, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -314,7 +314,7 @@ description: Result of parsing angled_line.kcl }, { "argument": { - "commentStart": 169, + "commentStart": 0, "end": 0, "raw": "4.1", "start": 0, @@ -325,7 +325,7 @@ description: Result of parsing angled_line.kcl "suffix": "None" } }, - "commentStart": 168, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -342,10 +342,10 @@ description: Result of parsing angled_line.kcl ], "callee": { "abs_path": false, - "commentStart": 148, + "commentStart": 0, "end": 0, "name": { - "commentStart": 148, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -355,7 +355,7 @@ description: Result of parsing angled_line.kcl "start": 0, "type": "Name" }, - "commentStart": 148, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -365,80 +365,84 @@ description: Result of parsing angled_line.kcl { "arguments": [ { - "commentStart": 191, - "elements": [ - { - "arguments": [ - { - "abs_path": false, - "commentStart": 199, - "end": 0, - "name": { - "commentStart": 199, - "end": 0, - "name": "seg01", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { "abs_path": false, - "commentStart": 192, + "commentStart": 0, "end": 0, "name": { - "commentStart": 192, + "commentStart": 0, "end": 0, - "name": "segAng", + "name": "seg01", "start": 0, "type": "Identifier" }, "path": [], "start": 0, + "type": "Name", "type": "Name" - }, - "commentStart": 192, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "commentStart": 207, - "end": 0, - "raw": "12.35", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 12.35, - "suffix": "None" } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } }, { - "commentStart": 215, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "12.35", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 12.35, + "suffix": "None" + } + } } ], "callee": { "abs_path": false, - "commentStart": 180, + "commentStart": 0, "end": 0, "name": { - "commentStart": 180, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -448,29 +452,30 @@ description: Result of parsing angled_line.kcl "start": 0, "type": "Name" }, - "commentStart": 180, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 228, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 234, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 236, + "commentStart": 0, "end": 0, "raw": "13.02", "start": 0, @@ -481,7 +486,7 @@ description: Result of parsing angled_line.kcl "suffix": "None" } }, - "commentStart": 235, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -489,7 +494,7 @@ description: Result of parsing angled_line.kcl "type": "UnaryExpression" }, { - "commentStart": 243, + "commentStart": 0, "end": 0, "raw": "10.03", "start": 0, @@ -510,10 +515,10 @@ description: Result of parsing angled_line.kcl ], "callee": { "abs_path": false, - "commentStart": 223, + "commentStart": 0, "end": 0, "name": { - "commentStart": 223, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -523,7 +528,7 @@ description: Result of parsing angled_line.kcl "start": 0, "type": "Name" }, - "commentStart": 223, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -531,21 +536,13 @@ description: Result of parsing angled_line.kcl "unlabeled": null }, { - "arguments": [ - { - "commentStart": 262, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], + "arguments": [], "callee": { "abs_path": false, - "commentStart": 256, + "commentStart": 0, "end": 0, "name": { - "commentStart": 256, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -555,7 +552,7 @@ description: Result of parsing angled_line.kcl "start": 0, "type": "Name" }, - "commentStart": 256, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -566,14 +563,14 @@ description: Result of parsing angled_line.kcl { "type": "LabeledArg", "label": { - "commentStart": 278, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 287, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -588,10 +585,10 @@ description: Result of parsing angled_line.kcl ], "callee": { "abs_path": false, - "commentStart": 270, + "commentStart": 0, "end": 0, "name": { - "commentStart": 270, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -601,7 +598,7 @@ description: Result of parsing angled_line.kcl "start": 0, "type": "Name" }, - "commentStart": 270, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -609,7 +606,7 @@ description: Result of parsing angled_line.kcl "unlabeled": null } ], - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/angled_line/input.kcl b/rust/kcl-lib/tests/angled_line/input.kcl index ffee5e163..3d78556eb 100644 --- a/rust/kcl-lib/tests/angled_line/input.kcl +++ b/rust/kcl-lib/tests/angled_line/input.kcl @@ -3,7 +3,7 @@ part001 = startSketchOn('XY') |> line(end = [15.1, 2.48]) |> line(end = [3.15, -9.85], tag = $seg01) |> line(end = [-15.17, -4.1]) - |> angledLine([segAng(seg01), 12.35], %) + |> angledLine(angle = segAng(seg01), length = 12.35) |> line(end = [-13.02, 10.03]) - |> close(%) + |> close() |> extrude(length = 4) diff --git a/rust/kcl-lib/tests/angled_line/ops.snap b/rust/kcl-lib/tests/angled_line/ops.snap index d55ccd814..43c58d7ae 100644 --- a/rust/kcl-lib/tests/angled_line/ops.snap +++ b/rust/kcl-lib/tests/angled_line/ops.snap @@ -5,7 +5,7 @@ description: Operations executed angled_line.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/angled_line/program_memory.snap b/rust/kcl-lib/tests/angled_line/program_memory.snap index 5a4ebee04..961375c48 100644 --- a/rust/kcl-lib/tests/angled_line/program_memory.snap +++ b/rust/kcl-lib/tests/angled_line/program_memory.snap @@ -192,22 +192,34 @@ description: Variables in memory after executing angled_line.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/angled_line/unparsed.snap b/rust/kcl-lib/tests/angled_line/unparsed.snap index bbd85b2f2..4f4924ebf 100644 --- a/rust/kcl-lib/tests/angled_line/unparsed.snap +++ b/rust/kcl-lib/tests/angled_line/unparsed.snap @@ -7,7 +7,7 @@ part001 = startSketchOn(XY) |> line(end = [15.1, 2.48]) |> line(end = [3.15, -9.85], tag = $seg01) |> line(end = [-15.17, -4.1]) - |> angledLine([segAng(seg01), 12.35], %) + |> angledLine(angle = segAng(seg01), length = 12.35) |> line(end = [-13.02, 10.03]) - |> close(%) + |> close() |> extrude(length = 4) diff --git a/rust/kcl-lib/tests/argument_error/ast.snap b/rust/kcl-lib/tests/argument_error/ast.snap index 6f12781fa..6c71a2c73 100644 --- a/rust/kcl-lib/tests/argument_error/ast.snap +++ b/rust/kcl-lib/tests/argument_error/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing argument_error.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -22,7 +22,7 @@ description: Result of parsing argument_error.kcl "body": [ { "argument": { - "commentStart": 19, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -33,24 +33,24 @@ description: Result of parsing argument_error.kcl "suffix": "None" } }, - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 8, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 4, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 5, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -72,16 +72,16 @@ description: Result of parsing argument_error.kcl "type": "VariableDeclaration" }, { - "commentStart": 22, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 28, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -93,10 +93,10 @@ description: Result of parsing argument_error.kcl "type": "Name" }, { - "commentStart": 31, + "commentStart": 0, "elements": [ { - "commentStart": 32, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -108,7 +108,7 @@ description: Result of parsing argument_error.kcl } }, { - "commentStart": 35, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -128,10 +128,10 @@ description: Result of parsing argument_error.kcl ], "callee": { "abs_path": false, - "commentStart": 24, + "commentStart": 0, "end": 0, "name": { - "commentStart": 24, + "commentStart": 0, "end": 0, "name": "map", "start": 0, @@ -141,7 +141,7 @@ description: Result of parsing argument_error.kcl "start": 0, "type": "Name" }, - "commentStart": 24, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -158,7 +158,7 @@ description: Result of parsing argument_error.kcl "nonCodeNodes": { "0": [ { - "commentStart": 22, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/array_elem_pop/ast.snap b/rust/kcl-lib/tests/array_elem_pop/ast.snap index 64cf837b9..b77f320d7 100644 --- a/rust/kcl-lib/tests/array_elem_pop/ast.snap +++ b/rust/kcl-lib/tests/array_elem_pop/ast.snap @@ -18,10 +18,10 @@ description: Result of parsing array_elem_pop.kcl "type": "Identifier" }, "init": { - "commentStart": 6, + "commentStart": 0, "elements": [ { - "commentStart": 7, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -33,7 +33,7 @@ description: Result of parsing array_elem_pop.kcl } }, { - "commentStart": 10, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -45,7 +45,7 @@ description: Result of parsing array_elem_pop.kcl } }, { - "commentStart": 13, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -72,12 +72,12 @@ description: Result of parsing array_elem_pop.kcl "type": "VariableDeclaration" }, { - "commentStart": 16, + "commentStart": 0, "declaration": { - "commentStart": 16, + "commentStart": 0, "end": 0, "id": { - "commentStart": 16, + "commentStart": 0, "end": 0, "name": "new_arr1", "start": 0, @@ -87,10 +87,10 @@ description: Result of parsing array_elem_pop.kcl "arguments": [ { "abs_path": false, - "commentStart": 31, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31, + "commentStart": 0, "end": 0, "name": "arr", "start": 0, @@ -104,10 +104,10 @@ description: Result of parsing array_elem_pop.kcl ], "callee": { "abs_path": false, - "commentStart": 27, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27, + "commentStart": 0, "end": 0, "name": "pop", "start": 0, @@ -117,7 +117,7 @@ description: Result of parsing array_elem_pop.kcl "start": 0, "type": "Name" }, - "commentStart": 27, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -133,12 +133,12 @@ description: Result of parsing array_elem_pop.kcl "type": "VariableDeclaration" }, { - "commentStart": 36, + "commentStart": 0, "declaration": { - "commentStart": 36, + "commentStart": 0, "end": 0, "id": { - "commentStart": 36, + "commentStart": 0, "end": 0, "name": "new_arr2", "start": 0, @@ -148,10 +148,10 @@ description: Result of parsing array_elem_pop.kcl "arguments": [ { "abs_path": false, - "commentStart": 51, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51, + "commentStart": 0, "end": 0, "name": "new_arr1", "start": 0, @@ -165,10 +165,10 @@ description: Result of parsing array_elem_pop.kcl ], "callee": { "abs_path": false, - "commentStart": 47, + "commentStart": 0, "end": 0, "name": { - "commentStart": 47, + "commentStart": 0, "end": 0, "name": "pop", "start": 0, @@ -178,7 +178,7 @@ description: Result of parsing array_elem_pop.kcl "start": 0, "type": "Name" }, - "commentStart": 47, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -194,12 +194,12 @@ description: Result of parsing array_elem_pop.kcl "type": "VariableDeclaration" }, { - "commentStart": 61, + "commentStart": 0, "declaration": { - "commentStart": 61, + "commentStart": 0, "end": 0, "id": { - "commentStart": 61, + "commentStart": 0, "end": 0, "name": "new_arr3", "start": 0, @@ -209,10 +209,10 @@ description: Result of parsing array_elem_pop.kcl "arguments": [ { "abs_path": false, - "commentStart": 76, + "commentStart": 0, "end": 0, "name": { - "commentStart": 76, + "commentStart": 0, "end": 0, "name": "new_arr2", "start": 0, @@ -226,10 +226,10 @@ description: Result of parsing array_elem_pop.kcl ], "callee": { "abs_path": false, - "commentStart": 72, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72, + "commentStart": 0, "end": 0, "name": "pop", "start": 0, @@ -239,7 +239,7 @@ description: Result of parsing array_elem_pop.kcl "start": 0, "type": "Name" }, - "commentStart": 72, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -255,16 +255,16 @@ description: Result of parsing array_elem_pop.kcl "type": "VariableDeclaration" }, { - "commentStart": 86, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 98, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 98, + "commentStart": 0, "end": 0, "name": "new_arr1", "start": 0, @@ -272,7 +272,7 @@ description: Result of parsing array_elem_pop.kcl "type": "Identifier" }, "property": { - "commentStart": 107, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -288,7 +288,7 @@ description: Result of parsing array_elem_pop.kcl "type": "MemberExpression" }, { - "commentStart": 111, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -300,7 +300,7 @@ description: Result of parsing array_elem_pop.kcl } }, { - "commentStart": 114, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -312,7 +312,7 @@ description: Result of parsing array_elem_pop.kcl } }, { - "commentStart": 123, + "commentStart": 0, "end": 0, "raw": "\"element 0 should not have changed\"", "start": 0, @@ -323,10 +323,10 @@ description: Result of parsing array_elem_pop.kcl ], "callee": { "abs_path": false, - "commentStart": 86, + "commentStart": 0, "end": 0, "name": { - "commentStart": 86, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -336,7 +336,7 @@ description: Result of parsing array_elem_pop.kcl "start": 0, "type": "Name" }, - "commentStart": 86, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -347,16 +347,16 @@ description: Result of parsing array_elem_pop.kcl "type": "ExpressionStatement" }, { - "commentStart": 160, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 172, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 172, + "commentStart": 0, "end": 0, "name": "new_arr1", "start": 0, @@ -364,7 +364,7 @@ description: Result of parsing array_elem_pop.kcl "type": "Identifier" }, "property": { - "commentStart": 181, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -380,7 +380,7 @@ description: Result of parsing array_elem_pop.kcl "type": "MemberExpression" }, { - "commentStart": 185, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -392,7 +392,7 @@ description: Result of parsing array_elem_pop.kcl } }, { - "commentStart": 188, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -404,7 +404,7 @@ description: Result of parsing array_elem_pop.kcl } }, { - "commentStart": 197, + "commentStart": 0, "end": 0, "raw": "\"element 1 should not have changed\"", "start": 0, @@ -415,10 +415,10 @@ description: Result of parsing array_elem_pop.kcl ], "callee": { "abs_path": false, - "commentStart": 160, + "commentStart": 0, "end": 0, "name": { - "commentStart": 160, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -428,7 +428,7 @@ description: Result of parsing array_elem_pop.kcl "start": 0, "type": "Name" }, - "commentStart": 160, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -439,16 +439,16 @@ description: Result of parsing array_elem_pop.kcl "type": "ExpressionStatement" }, { - "commentStart": 234, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 246, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 246, + "commentStart": 0, "end": 0, "name": "new_arr2", "start": 0, @@ -456,7 +456,7 @@ description: Result of parsing array_elem_pop.kcl "type": "Identifier" }, "property": { - "commentStart": 255, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -472,7 +472,7 @@ description: Result of parsing array_elem_pop.kcl "type": "MemberExpression" }, { - "commentStart": 259, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -484,7 +484,7 @@ description: Result of parsing array_elem_pop.kcl } }, { - "commentStart": 262, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -496,7 +496,7 @@ description: Result of parsing array_elem_pop.kcl } }, { - "commentStart": 271, + "commentStart": 0, "end": 0, "raw": "\"element 0 should not have changed\"", "start": 0, @@ -507,10 +507,10 @@ description: Result of parsing array_elem_pop.kcl ], "callee": { "abs_path": false, - "commentStart": 234, + "commentStart": 0, "end": 0, "name": { - "commentStart": 234, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -520,7 +520,7 @@ description: Result of parsing array_elem_pop.kcl "start": 0, "type": "Name" }, - "commentStart": 234, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", diff --git a/rust/kcl-lib/tests/array_elem_pop_empty_fail/ast.snap b/rust/kcl-lib/tests/array_elem_pop_empty_fail/ast.snap index 8d1f4028e..48aeeacdd 100644 --- a/rust/kcl-lib/tests/array_elem_pop_empty_fail/ast.snap +++ b/rust/kcl-lib/tests/array_elem_pop_empty_fail/ast.snap @@ -18,7 +18,7 @@ description: Result of parsing array_elem_pop_empty_fail.kcl "type": "Identifier" }, "init": { - "commentStart": 6, + "commentStart": 0, "elements": [], "end": 0, "start": 0, @@ -35,12 +35,12 @@ description: Result of parsing array_elem_pop_empty_fail.kcl "type": "VariableDeclaration" }, { - "commentStart": 9, + "commentStart": 0, "declaration": { - "commentStart": 9, + "commentStart": 0, "end": 0, "id": { - "commentStart": 9, + "commentStart": 0, "end": 0, "name": "fail", "start": 0, @@ -50,10 +50,10 @@ description: Result of parsing array_elem_pop_empty_fail.kcl "arguments": [ { "abs_path": false, - "commentStart": 20, + "commentStart": 0, "end": 0, "name": { - "commentStart": 20, + "commentStart": 0, "end": 0, "name": "arr", "start": 0, @@ -67,10 +67,10 @@ description: Result of parsing array_elem_pop_empty_fail.kcl ], "callee": { "abs_path": false, - "commentStart": 16, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16, + "commentStart": 0, "end": 0, "name": "pop", "start": 0, @@ -80,7 +80,7 @@ description: Result of parsing array_elem_pop_empty_fail.kcl "start": 0, "type": "Name" }, - "commentStart": 16, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", diff --git a/rust/kcl-lib/tests/array_elem_pop_fail/ast.snap b/rust/kcl-lib/tests/array_elem_pop_fail/ast.snap index 54b27d6ab..d3fb1e444 100644 --- a/rust/kcl-lib/tests/array_elem_pop_fail/ast.snap +++ b/rust/kcl-lib/tests/array_elem_pop_fail/ast.snap @@ -18,10 +18,10 @@ description: Result of parsing array_elem_pop_fail.kcl "type": "Identifier" }, "init": { - "commentStart": 6, + "commentStart": 0, "elements": [ { - "commentStart": 7, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -33,7 +33,7 @@ description: Result of parsing array_elem_pop_fail.kcl } }, { - "commentStart": 10, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -45,7 +45,7 @@ description: Result of parsing array_elem_pop_fail.kcl } }, { - "commentStart": 13, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -72,12 +72,12 @@ description: Result of parsing array_elem_pop_fail.kcl "type": "VariableDeclaration" }, { - "commentStart": 16, + "commentStart": 0, "declaration": { - "commentStart": 16, + "commentStart": 0, "end": 0, "id": { - "commentStart": 16, + "commentStart": 0, "end": 0, "name": "pushedArr", "start": 0, @@ -87,10 +87,10 @@ description: Result of parsing array_elem_pop_fail.kcl "arguments": [ { "abs_path": false, - "commentStart": 32, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32, + "commentStart": 0, "end": 0, "name": "arr", "start": 0, @@ -104,10 +104,10 @@ description: Result of parsing array_elem_pop_fail.kcl ], "callee": { "abs_path": false, - "commentStart": 28, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28, + "commentStart": 0, "end": 0, "name": "pop", "start": 0, @@ -117,7 +117,7 @@ description: Result of parsing array_elem_pop_fail.kcl "start": 0, "type": "Name" }, - "commentStart": 28, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -133,23 +133,23 @@ description: Result of parsing array_elem_pop_fail.kcl "type": "VariableDeclaration" }, { - "commentStart": 37, + "commentStart": 0, "declaration": { - "commentStart": 37, + "commentStart": 0, "end": 0, "id": { - "commentStart": 37, + "commentStart": 0, "end": 0, "name": "fail", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 44, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 44, + "commentStart": 0, "end": 0, "name": "pushedArr", "start": 0, @@ -157,7 +157,7 @@ description: Result of parsing array_elem_pop_fail.kcl "type": "Identifier" }, "property": { - "commentStart": 54, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, diff --git a/rust/kcl-lib/tests/array_elem_push/ast.snap b/rust/kcl-lib/tests/array_elem_push/ast.snap index b3bf89793..46c62c1b2 100644 --- a/rust/kcl-lib/tests/array_elem_push/ast.snap +++ b/rust/kcl-lib/tests/array_elem_push/ast.snap @@ -18,10 +18,10 @@ description: Result of parsing array_elem_push.kcl "type": "Identifier" }, "init": { - "commentStart": 6, + "commentStart": 0, "elements": [ { - "commentStart": 7, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -33,7 +33,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 10, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -45,7 +45,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 13, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -72,12 +72,12 @@ description: Result of parsing array_elem_push.kcl "type": "VariableDeclaration" }, { - "commentStart": 16, + "commentStart": 0, "declaration": { - "commentStart": 16, + "commentStart": 0, "end": 0, "id": { - "commentStart": 16, + "commentStart": 0, "end": 0, "name": "new_arr1", "start": 0, @@ -87,10 +87,10 @@ description: Result of parsing array_elem_push.kcl "arguments": [ { "abs_path": false, - "commentStart": 32, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32, + "commentStart": 0, "end": 0, "name": "arr", "start": 0, @@ -102,7 +102,7 @@ description: Result of parsing array_elem_push.kcl "type": "Name" }, { - "commentStart": 37, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -116,10 +116,10 @@ description: Result of parsing array_elem_push.kcl ], "callee": { "abs_path": false, - "commentStart": 27, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27, + "commentStart": 0, "end": 0, "name": "push", "start": 0, @@ -129,7 +129,7 @@ description: Result of parsing array_elem_push.kcl "start": 0, "type": "Name" }, - "commentStart": 27, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -145,12 +145,12 @@ description: Result of parsing array_elem_push.kcl "type": "VariableDeclaration" }, { - "commentStart": 40, + "commentStart": 0, "declaration": { - "commentStart": 40, + "commentStart": 0, "end": 0, "id": { - "commentStart": 40, + "commentStart": 0, "end": 0, "name": "new_arr2", "start": 0, @@ -160,10 +160,10 @@ description: Result of parsing array_elem_push.kcl "arguments": [ { "abs_path": false, - "commentStart": 56, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56, + "commentStart": 0, "end": 0, "name": "new_arr1", "start": 0, @@ -175,7 +175,7 @@ description: Result of parsing array_elem_push.kcl "type": "Name" }, { - "commentStart": 66, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -189,10 +189,10 @@ description: Result of parsing array_elem_push.kcl ], "callee": { "abs_path": false, - "commentStart": 51, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51, + "commentStart": 0, "end": 0, "name": "push", "start": 0, @@ -202,7 +202,7 @@ description: Result of parsing array_elem_push.kcl "start": 0, "type": "Name" }, - "commentStart": 51, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -218,16 +218,16 @@ description: Result of parsing array_elem_push.kcl "type": "VariableDeclaration" }, { - "commentStart": 69, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 81, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 81, + "commentStart": 0, "end": 0, "name": "new_arr1", "start": 0, @@ -235,7 +235,7 @@ description: Result of parsing array_elem_push.kcl "type": "Identifier" }, "property": { - "commentStart": 90, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -251,7 +251,7 @@ description: Result of parsing array_elem_push.kcl "type": "MemberExpression" }, { - "commentStart": 94, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -263,7 +263,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 97, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -275,7 +275,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 106, + "commentStart": 0, "end": 0, "raw": "\"element 0 should not have changed\"", "start": 0, @@ -286,10 +286,10 @@ description: Result of parsing array_elem_push.kcl ], "callee": { "abs_path": false, - "commentStart": 69, + "commentStart": 0, "end": 0, "name": { - "commentStart": 69, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -299,7 +299,7 @@ description: Result of parsing array_elem_push.kcl "start": 0, "type": "Name" }, - "commentStart": 69, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -310,16 +310,16 @@ description: Result of parsing array_elem_push.kcl "type": "ExpressionStatement" }, { - "commentStart": 143, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 155, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 155, + "commentStart": 0, "end": 0, "name": "new_arr1", "start": 0, @@ -327,7 +327,7 @@ description: Result of parsing array_elem_push.kcl "type": "Identifier" }, "property": { - "commentStart": 164, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -343,7 +343,7 @@ description: Result of parsing array_elem_push.kcl "type": "MemberExpression" }, { - "commentStart": 168, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -355,7 +355,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 171, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -367,7 +367,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 180, + "commentStart": 0, "end": 0, "raw": "\"element 1 should not have changed\"", "start": 0, @@ -378,10 +378,10 @@ description: Result of parsing array_elem_push.kcl ], "callee": { "abs_path": false, - "commentStart": 143, + "commentStart": 0, "end": 0, "name": { - "commentStart": 143, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -391,7 +391,7 @@ description: Result of parsing array_elem_push.kcl "start": 0, "type": "Name" }, - "commentStart": 143, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -402,16 +402,16 @@ description: Result of parsing array_elem_push.kcl "type": "ExpressionStatement" }, { - "commentStart": 217, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 229, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 229, + "commentStart": 0, "end": 0, "name": "new_arr1", "start": 0, @@ -419,7 +419,7 @@ description: Result of parsing array_elem_push.kcl "type": "Identifier" }, "property": { - "commentStart": 238, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -435,7 +435,7 @@ description: Result of parsing array_elem_push.kcl "type": "MemberExpression" }, { - "commentStart": 242, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -447,7 +447,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 245, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -459,7 +459,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 254, + "commentStart": 0, "end": 0, "raw": "\"element 2 should not have changed\"", "start": 0, @@ -470,10 +470,10 @@ description: Result of parsing array_elem_push.kcl ], "callee": { "abs_path": false, - "commentStart": 217, + "commentStart": 0, "end": 0, "name": { - "commentStart": 217, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -483,7 +483,7 @@ description: Result of parsing array_elem_push.kcl "start": 0, "type": "Name" }, - "commentStart": 217, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -494,16 +494,16 @@ description: Result of parsing array_elem_push.kcl "type": "ExpressionStatement" }, { - "commentStart": 291, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 303, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 303, + "commentStart": 0, "end": 0, "name": "new_arr1", "start": 0, @@ -511,7 +511,7 @@ description: Result of parsing array_elem_push.kcl "type": "Identifier" }, "property": { - "commentStart": 312, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -527,7 +527,7 @@ description: Result of parsing array_elem_push.kcl "type": "MemberExpression" }, { - "commentStart": 316, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -539,7 +539,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 319, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -551,7 +551,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 328, + "commentStart": 0, "end": 0, "raw": "\"4 was added to the end of the array\"", "start": 0, @@ -562,10 +562,10 @@ description: Result of parsing array_elem_push.kcl ], "callee": { "abs_path": false, - "commentStart": 291, + "commentStart": 0, "end": 0, "name": { - "commentStart": 291, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -575,7 +575,7 @@ description: Result of parsing array_elem_push.kcl "start": 0, "type": "Name" }, - "commentStart": 291, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -586,16 +586,16 @@ description: Result of parsing array_elem_push.kcl "type": "ExpressionStatement" }, { - "commentStart": 367, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 379, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 379, + "commentStart": 0, "end": 0, "name": "new_arr2", "start": 0, @@ -603,7 +603,7 @@ description: Result of parsing array_elem_push.kcl "type": "Identifier" }, "property": { - "commentStart": 388, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -619,7 +619,7 @@ description: Result of parsing array_elem_push.kcl "type": "MemberExpression" }, { - "commentStart": 392, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -631,7 +631,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 395, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -643,7 +643,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 404, + "commentStart": 0, "end": 0, "raw": "\"element 0 should not have changed\"", "start": 0, @@ -654,10 +654,10 @@ description: Result of parsing array_elem_push.kcl ], "callee": { "abs_path": false, - "commentStart": 367, + "commentStart": 0, "end": 0, "name": { - "commentStart": 367, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -667,7 +667,7 @@ description: Result of parsing array_elem_push.kcl "start": 0, "type": "Name" }, - "commentStart": 367, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -678,16 +678,16 @@ description: Result of parsing array_elem_push.kcl "type": "ExpressionStatement" }, { - "commentStart": 441, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 453, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 453, + "commentStart": 0, "end": 0, "name": "new_arr2", "start": 0, @@ -695,7 +695,7 @@ description: Result of parsing array_elem_push.kcl "type": "Identifier" }, "property": { - "commentStart": 462, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -711,7 +711,7 @@ description: Result of parsing array_elem_push.kcl "type": "MemberExpression" }, { - "commentStart": 466, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -723,7 +723,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 469, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -735,7 +735,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 478, + "commentStart": 0, "end": 0, "raw": "\"element 1 should not have changed\"", "start": 0, @@ -746,10 +746,10 @@ description: Result of parsing array_elem_push.kcl ], "callee": { "abs_path": false, - "commentStart": 441, + "commentStart": 0, "end": 0, "name": { - "commentStart": 441, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -759,7 +759,7 @@ description: Result of parsing array_elem_push.kcl "start": 0, "type": "Name" }, - "commentStart": 441, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -770,16 +770,16 @@ description: Result of parsing array_elem_push.kcl "type": "ExpressionStatement" }, { - "commentStart": 515, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 527, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 527, + "commentStart": 0, "end": 0, "name": "new_arr2", "start": 0, @@ -787,7 +787,7 @@ description: Result of parsing array_elem_push.kcl "type": "Identifier" }, "property": { - "commentStart": 536, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -803,7 +803,7 @@ description: Result of parsing array_elem_push.kcl "type": "MemberExpression" }, { - "commentStart": 540, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -815,7 +815,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 543, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -827,7 +827,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 552, + "commentStart": 0, "end": 0, "raw": "\"element 2 should not have changed\"", "start": 0, @@ -838,10 +838,10 @@ description: Result of parsing array_elem_push.kcl ], "callee": { "abs_path": false, - "commentStart": 515, + "commentStart": 0, "end": 0, "name": { - "commentStart": 515, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -851,7 +851,7 @@ description: Result of parsing array_elem_push.kcl "start": 0, "type": "Name" }, - "commentStart": 515, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -862,16 +862,16 @@ description: Result of parsing array_elem_push.kcl "type": "ExpressionStatement" }, { - "commentStart": 589, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 601, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 601, + "commentStart": 0, "end": 0, "name": "new_arr2", "start": 0, @@ -879,7 +879,7 @@ description: Result of parsing array_elem_push.kcl "type": "Identifier" }, "property": { - "commentStart": 610, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -895,7 +895,7 @@ description: Result of parsing array_elem_push.kcl "type": "MemberExpression" }, { - "commentStart": 614, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -907,7 +907,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 617, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -919,7 +919,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 626, + "commentStart": 0, "end": 0, "raw": "\"4 was added to the end of the array\"", "start": 0, @@ -930,10 +930,10 @@ description: Result of parsing array_elem_push.kcl ], "callee": { "abs_path": false, - "commentStart": 589, + "commentStart": 0, "end": 0, "name": { - "commentStart": 589, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -943,7 +943,7 @@ description: Result of parsing array_elem_push.kcl "start": 0, "type": "Name" }, - "commentStart": 589, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -954,16 +954,16 @@ description: Result of parsing array_elem_push.kcl "type": "ExpressionStatement" }, { - "commentStart": 665, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 677, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 677, + "commentStart": 0, "end": 0, "name": "new_arr2", "start": 0, @@ -971,7 +971,7 @@ description: Result of parsing array_elem_push.kcl "type": "Identifier" }, "property": { - "commentStart": 686, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -987,7 +987,7 @@ description: Result of parsing array_elem_push.kcl "type": "MemberExpression" }, { - "commentStart": 690, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -999,7 +999,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 693, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -1011,7 +1011,7 @@ description: Result of parsing array_elem_push.kcl } }, { - "commentStart": 702, + "commentStart": 0, "end": 0, "raw": "\"5 was added to the end of the array\"", "start": 0, @@ -1022,10 +1022,10 @@ description: Result of parsing array_elem_push.kcl ], "callee": { "abs_path": false, - "commentStart": 665, + "commentStart": 0, "end": 0, "name": { - "commentStart": 665, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -1035,7 +1035,7 @@ description: Result of parsing array_elem_push.kcl "start": 0, "type": "Name" }, - "commentStart": 665, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", diff --git a/rust/kcl-lib/tests/array_elem_push_fail/ast.snap b/rust/kcl-lib/tests/array_elem_push_fail/ast.snap index 10b96de2f..b6c663920 100644 --- a/rust/kcl-lib/tests/array_elem_push_fail/ast.snap +++ b/rust/kcl-lib/tests/array_elem_push_fail/ast.snap @@ -18,10 +18,10 @@ description: Result of parsing array_elem_push_fail.kcl "type": "Identifier" }, "init": { - "commentStart": 6, + "commentStart": 0, "elements": [ { - "commentStart": 7, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -33,7 +33,7 @@ description: Result of parsing array_elem_push_fail.kcl } }, { - "commentStart": 10, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -45,7 +45,7 @@ description: Result of parsing array_elem_push_fail.kcl } }, { - "commentStart": 13, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -72,12 +72,12 @@ description: Result of parsing array_elem_push_fail.kcl "type": "VariableDeclaration" }, { - "commentStart": 16, + "commentStart": 0, "declaration": { - "commentStart": 16, + "commentStart": 0, "end": 0, "id": { - "commentStart": 16, + "commentStart": 0, "end": 0, "name": "pushedArr", "start": 0, @@ -87,10 +87,10 @@ description: Result of parsing array_elem_push_fail.kcl "arguments": [ { "abs_path": false, - "commentStart": 33, + "commentStart": 0, "end": 0, "name": { - "commentStart": 33, + "commentStart": 0, "end": 0, "name": "arr", "start": 0, @@ -102,7 +102,7 @@ description: Result of parsing array_elem_push_fail.kcl "type": "Name" }, { - "commentStart": 38, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -116,10 +116,10 @@ description: Result of parsing array_elem_push_fail.kcl ], "callee": { "abs_path": false, - "commentStart": 28, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28, + "commentStart": 0, "end": 0, "name": "push", "start": 0, @@ -129,7 +129,7 @@ description: Result of parsing array_elem_push_fail.kcl "start": 0, "type": "Name" }, - "commentStart": 28, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -145,23 +145,23 @@ description: Result of parsing array_elem_push_fail.kcl "type": "VariableDeclaration" }, { - "commentStart": 41, + "commentStart": 0, "declaration": { - "commentStart": 41, + "commentStart": 0, "end": 0, "id": { - "commentStart": 41, + "commentStart": 0, "end": 0, "name": "fail", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 48, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 48, + "commentStart": 0, "end": 0, "name": "arr", "start": 0, @@ -169,7 +169,7 @@ description: Result of parsing array_elem_push_fail.kcl "type": "Identifier" }, "property": { - "commentStart": 52, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, diff --git a/rust/kcl-lib/tests/array_index_oob/ast.snap b/rust/kcl-lib/tests/array_index_oob/ast.snap index 25f4944f7..a5fa94cbe 100644 --- a/rust/kcl-lib/tests/array_index_oob/ast.snap +++ b/rust/kcl-lib/tests/array_index_oob/ast.snap @@ -18,7 +18,7 @@ description: Result of parsing array_index_oob.kcl "type": "Identifier" }, "init": { - "commentStart": 6, + "commentStart": 0, "elements": [], "end": 0, "start": 0, @@ -35,23 +35,23 @@ description: Result of parsing array_index_oob.kcl "type": "VariableDeclaration" }, { - "commentStart": 9, + "commentStart": 0, "declaration": { - "commentStart": 9, + "commentStart": 0, "end": 0, "id": { - "commentStart": 9, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 13, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 13, + "commentStart": 0, "end": 0, "name": "arr", "start": 0, @@ -59,7 +59,7 @@ description: Result of parsing array_index_oob.kcl "type": "Identifier" }, "property": { - "commentStart": 17, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, diff --git a/rust/kcl-lib/tests/array_range_expr/ast.snap b/rust/kcl-lib/tests/array_range_expr/ast.snap index 56ef654c5..ef953aa37 100644 --- a/rust/kcl-lib/tests/array_range_expr/ast.snap +++ b/rust/kcl-lib/tests/array_range_expr/ast.snap @@ -18,10 +18,10 @@ description: Result of parsing array_range_expr.kcl "type": "Identifier" }, "init": { - "commentStart": 5, + "commentStart": 0, "end": 0, "endElement": { - "commentStart": 9, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -35,7 +35,7 @@ description: Result of parsing array_range_expr.kcl "endInclusive": true, "start": 0, "startElement": { - "commentStart": 6, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -59,16 +59,16 @@ description: Result of parsing array_range_expr.kcl "type": "VariableDeclaration" }, { - "commentStart": 12, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 24, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 24, + "commentStart": 0, "end": 0, "name": "r1", "start": 0, @@ -76,7 +76,7 @@ description: Result of parsing array_range_expr.kcl "type": "Identifier" }, "property": { - "commentStart": 27, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -92,7 +92,7 @@ description: Result of parsing array_range_expr.kcl "type": "MemberExpression" }, { - "commentStart": 31, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -104,7 +104,7 @@ description: Result of parsing array_range_expr.kcl } }, { - "commentStart": 34, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -116,7 +116,7 @@ description: Result of parsing array_range_expr.kcl } }, { - "commentStart": 43, + "commentStart": 0, "end": 0, "raw": "\"last element is included\"", "start": 0, @@ -127,10 +127,10 @@ description: Result of parsing array_range_expr.kcl ], "callee": { "abs_path": false, - "commentStart": 12, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -140,7 +140,7 @@ description: Result of parsing array_range_expr.kcl "start": 0, "type": "Name" }, - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -151,19 +151,19 @@ description: Result of parsing array_range_expr.kcl "type": "ExpressionStatement" }, { - "commentStart": 70, + "commentStart": 0, "declaration": { - "commentStart": 72, + "commentStart": 0, "end": 0, "id": { - "commentStart": 72, + "commentStart": 0, "end": 0, "name": "four", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 79, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -184,19 +184,19 @@ description: Result of parsing array_range_expr.kcl "type": "VariableDeclaration" }, { - "commentStart": 81, + "commentStart": 0, "declaration": { - "commentStart": 81, + "commentStart": 0, "end": 0, "id": { - "commentStart": 81, + "commentStart": 0, "end": 0, "name": "zero", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 88, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -217,26 +217,26 @@ description: Result of parsing array_range_expr.kcl "type": "VariableDeclaration" }, { - "commentStart": 90, + "commentStart": 0, "declaration": { - "commentStart": 90, + "commentStart": 0, "end": 0, "id": { - "commentStart": 90, + "commentStart": 0, "end": 0, "name": "r2", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 95, + "commentStart": 0, "end": 0, "endElement": { "abs_path": false, - "commentStart": 102, + "commentStart": 0, "end": 0, "name": { - "commentStart": 102, + "commentStart": 0, "end": 0, "name": "four", "start": 0, @@ -251,10 +251,10 @@ description: Result of parsing array_range_expr.kcl "start": 0, "startElement": { "abs_path": false, - "commentStart": 96, + "commentStart": 0, "end": 0, "name": { - "commentStart": 96, + "commentStart": 0, "end": 0, "name": "zero", "start": 0, @@ -278,16 +278,16 @@ description: Result of parsing array_range_expr.kcl "type": "VariableDeclaration" }, { - "commentStart": 108, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 120, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 120, + "commentStart": 0, "end": 0, "name": "r2", "start": 0, @@ -295,7 +295,7 @@ description: Result of parsing array_range_expr.kcl "type": "Identifier" }, "property": { - "commentStart": 123, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -311,7 +311,7 @@ description: Result of parsing array_range_expr.kcl "type": "MemberExpression" }, { - "commentStart": 127, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -323,7 +323,7 @@ description: Result of parsing array_range_expr.kcl } }, { - "commentStart": 130, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -335,7 +335,7 @@ description: Result of parsing array_range_expr.kcl } }, { - "commentStart": 139, + "commentStart": 0, "end": 0, "raw": "\"last element is included\"", "start": 0, @@ -346,10 +346,10 @@ description: Result of parsing array_range_expr.kcl ], "callee": { "abs_path": false, - "commentStart": 108, + "commentStart": 0, "end": 0, "name": { - "commentStart": 108, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -359,7 +359,7 @@ description: Result of parsing array_range_expr.kcl "start": 0, "type": "Name" }, - "commentStart": 108, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -370,12 +370,12 @@ description: Result of parsing array_range_expr.kcl "type": "ExpressionStatement" }, { - "commentStart": 166, + "commentStart": 0, "declaration": { - "commentStart": 168, + "commentStart": 0, "end": 0, "id": { - "commentStart": 168, + "commentStart": 0, "end": 0, "name": "five", "start": 0, @@ -384,14 +384,14 @@ description: Result of parsing array_range_expr.kcl "init": { "arguments": [ { - "commentStart": 179, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 179, + "commentStart": 0, "end": 0, "name": { - "commentStart": 179, + "commentStart": 0, "end": 0, "name": "four", "start": 0, @@ -404,7 +404,7 @@ description: Result of parsing array_range_expr.kcl }, "operator": "+", "right": { - "commentStart": 186, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -422,10 +422,10 @@ description: Result of parsing array_range_expr.kcl ], "callee": { "abs_path": false, - "commentStart": 175, + "commentStart": 0, "end": 0, "name": { - "commentStart": 175, + "commentStart": 0, "end": 0, "name": "int", "start": 0, @@ -435,7 +435,7 @@ description: Result of parsing array_range_expr.kcl "start": 0, "type": "Name" }, - "commentStart": 175, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -451,26 +451,26 @@ description: Result of parsing array_range_expr.kcl "type": "VariableDeclaration" }, { - "commentStart": 189, + "commentStart": 0, "declaration": { - "commentStart": 189, + "commentStart": 0, "end": 0, "id": { - "commentStart": 189, + "commentStart": 0, "end": 0, "name": "r3", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 194, + "commentStart": 0, "end": 0, "endElement": { "abs_path": false, - "commentStart": 201, + "commentStart": 0, "end": 0, "name": { - "commentStart": 201, + "commentStart": 0, "end": 0, "name": "five", "start": 0, @@ -485,10 +485,10 @@ description: Result of parsing array_range_expr.kcl "start": 0, "startElement": { "abs_path": false, - "commentStart": 195, + "commentStart": 0, "end": 0, "name": { - "commentStart": 195, + "commentStart": 0, "end": 0, "name": "zero", "start": 0, @@ -512,16 +512,16 @@ description: Result of parsing array_range_expr.kcl "type": "VariableDeclaration" }, { - "commentStart": 207, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 219, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 219, + "commentStart": 0, "end": 0, "name": "r3", "start": 0, @@ -529,7 +529,7 @@ description: Result of parsing array_range_expr.kcl "type": "Identifier" }, "property": { - "commentStart": 222, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -545,7 +545,7 @@ description: Result of parsing array_range_expr.kcl "type": "MemberExpression" }, { - "commentStart": 226, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -557,7 +557,7 @@ description: Result of parsing array_range_expr.kcl } }, { - "commentStart": 229, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -569,7 +569,7 @@ description: Result of parsing array_range_expr.kcl } }, { - "commentStart": 238, + "commentStart": 0, "end": 0, "raw": "\"second-to-last element is included\"", "start": 0, @@ -580,10 +580,10 @@ description: Result of parsing array_range_expr.kcl ], "callee": { "abs_path": false, - "commentStart": 207, + "commentStart": 0, "end": 0, "name": { - "commentStart": 207, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -593,7 +593,7 @@ description: Result of parsing array_range_expr.kcl "start": 0, "type": "Name" }, - "commentStart": 207, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -604,16 +604,16 @@ description: Result of parsing array_range_expr.kcl "type": "ExpressionStatement" }, { - "commentStart": 276, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 288, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 288, + "commentStart": 0, "end": 0, "name": "r3", "start": 0, @@ -621,7 +621,7 @@ description: Result of parsing array_range_expr.kcl "type": "Identifier" }, "property": { - "commentStart": 291, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -637,7 +637,7 @@ description: Result of parsing array_range_expr.kcl "type": "MemberExpression" }, { - "commentStart": 295, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -649,7 +649,7 @@ description: Result of parsing array_range_expr.kcl } }, { - "commentStart": 298, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -661,7 +661,7 @@ description: Result of parsing array_range_expr.kcl } }, { - "commentStart": 307, + "commentStart": 0, "end": 0, "raw": "\"last element is included\"", "start": 0, @@ -672,10 +672,10 @@ description: Result of parsing array_range_expr.kcl ], "callee": { "abs_path": false, - "commentStart": 276, + "commentStart": 0, "end": 0, "name": { - "commentStart": 276, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -685,7 +685,7 @@ description: Result of parsing array_range_expr.kcl "start": 0, "type": "Name" }, - "commentStart": 276, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -696,31 +696,31 @@ description: Result of parsing array_range_expr.kcl "type": "ExpressionStatement" }, { - "commentStart": 334, + "commentStart": 0, "declaration": { - "commentStart": 336, + "commentStart": 0, "end": 0, "id": { - "commentStart": 336, + "commentStart": 0, "end": 0, "name": "r4", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 341, + "commentStart": 0, "end": 0, "endElement": { "arguments": [ { - "commentStart": 363, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 363, + "commentStart": 0, "end": 0, "name": { - "commentStart": 363, + "commentStart": 0, "end": 0, "name": "five", "start": 0, @@ -733,7 +733,7 @@ description: Result of parsing array_range_expr.kcl }, "operator": "-", "right": { - "commentStart": 370, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -751,10 +751,10 @@ description: Result of parsing array_range_expr.kcl ], "callee": { "abs_path": false, - "commentStart": 359, + "commentStart": 0, "end": 0, "name": { - "commentStart": 359, + "commentStart": 0, "end": 0, "name": "int", "start": 0, @@ -764,7 +764,7 @@ description: Result of parsing array_range_expr.kcl "start": 0, "type": "Name" }, - "commentStart": 359, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -775,14 +775,14 @@ description: Result of parsing array_range_expr.kcl "startElement": { "arguments": [ { - "commentStart": 346, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 346, + "commentStart": 0, "end": 0, "name": { - "commentStart": 346, + "commentStart": 0, "end": 0, "name": "zero", "start": 0, @@ -795,7 +795,7 @@ description: Result of parsing array_range_expr.kcl }, "operator": "+", "right": { - "commentStart": 353, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -813,10 +813,10 @@ description: Result of parsing array_range_expr.kcl ], "callee": { "abs_path": false, - "commentStart": 342, + "commentStart": 0, "end": 0, "name": { - "commentStart": 342, + "commentStart": 0, "end": 0, "name": "int", "start": 0, @@ -826,7 +826,7 @@ description: Result of parsing array_range_expr.kcl "start": 0, "type": "Name" }, - "commentStart": 342, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -845,16 +845,16 @@ description: Result of parsing array_range_expr.kcl "type": "VariableDeclaration" }, { - "commentStart": 374, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 386, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 386, + "commentStart": 0, "end": 0, "name": "r4", "start": 0, @@ -862,7 +862,7 @@ description: Result of parsing array_range_expr.kcl "type": "Identifier" }, "property": { - "commentStart": 389, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -878,7 +878,7 @@ description: Result of parsing array_range_expr.kcl "type": "MemberExpression" }, { - "commentStart": 393, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -890,7 +890,7 @@ description: Result of parsing array_range_expr.kcl } }, { - "commentStart": 396, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -902,7 +902,7 @@ description: Result of parsing array_range_expr.kcl } }, { - "commentStart": 405, + "commentStart": 0, "end": 0, "raw": "\"first element is 1\"", "start": 0, @@ -913,10 +913,10 @@ description: Result of parsing array_range_expr.kcl ], "callee": { "abs_path": false, - "commentStart": 374, + "commentStart": 0, "end": 0, "name": { - "commentStart": 374, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -926,7 +926,7 @@ description: Result of parsing array_range_expr.kcl "start": 0, "type": "Name" }, - "commentStart": 374, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -937,16 +937,16 @@ description: Result of parsing array_range_expr.kcl "type": "ExpressionStatement" }, { - "commentStart": 427, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 439, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 439, + "commentStart": 0, "end": 0, "name": "r4", "start": 0, @@ -954,7 +954,7 @@ description: Result of parsing array_range_expr.kcl "type": "Identifier" }, "property": { - "commentStart": 442, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -970,7 +970,7 @@ description: Result of parsing array_range_expr.kcl "type": "MemberExpression" }, { - "commentStart": 446, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -982,7 +982,7 @@ description: Result of parsing array_range_expr.kcl } }, { - "commentStart": 449, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -994,7 +994,7 @@ description: Result of parsing array_range_expr.kcl } }, { - "commentStart": 458, + "commentStart": 0, "end": 0, "raw": "\"second-to-last element is 3\"", "start": 0, @@ -1005,10 +1005,10 @@ description: Result of parsing array_range_expr.kcl ], "callee": { "abs_path": false, - "commentStart": 427, + "commentStart": 0, "end": 0, "name": { - "commentStart": 427, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -1018,7 +1018,7 @@ description: Result of parsing array_range_expr.kcl "start": 0, "type": "Name" }, - "commentStart": 427, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1029,16 +1029,16 @@ description: Result of parsing array_range_expr.kcl "type": "ExpressionStatement" }, { - "commentStart": 489, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 501, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 501, + "commentStart": 0, "end": 0, "name": "r4", "start": 0, @@ -1046,7 +1046,7 @@ description: Result of parsing array_range_expr.kcl "type": "Identifier" }, "property": { - "commentStart": 504, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -1062,7 +1062,7 @@ description: Result of parsing array_range_expr.kcl "type": "MemberExpression" }, { - "commentStart": 508, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -1074,7 +1074,7 @@ description: Result of parsing array_range_expr.kcl } }, { - "commentStart": 511, + "commentStart": 0, "end": 0, "raw": "0.00001", "start": 0, @@ -1086,7 +1086,7 @@ description: Result of parsing array_range_expr.kcl } }, { - "commentStart": 520, + "commentStart": 0, "end": 0, "raw": "\"last element is 4\"", "start": 0, @@ -1097,10 +1097,10 @@ description: Result of parsing array_range_expr.kcl ], "callee": { "abs_path": false, - "commentStart": 489, + "commentStart": 0, "end": 0, "name": { - "commentStart": 489, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -1110,7 +1110,7 @@ description: Result of parsing array_range_expr.kcl "start": 0, "type": "Name" }, - "commentStart": 489, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1127,7 +1127,7 @@ description: Result of parsing array_range_expr.kcl "nonCodeNodes": { "1": [ { - "commentStart": 70, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1138,7 +1138,7 @@ description: Result of parsing array_range_expr.kcl ], "5": [ { - "commentStart": 166, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1149,7 +1149,7 @@ description: Result of parsing array_range_expr.kcl ], "9": [ { - "commentStart": 334, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/array_range_negative_expr/ast.snap b/rust/kcl-lib/tests/array_range_negative_expr/ast.snap index 6ca2f47b5..49dddf6ed 100644 --- a/rust/kcl-lib/tests/array_range_negative_expr/ast.snap +++ b/rust/kcl-lib/tests/array_range_negative_expr/ast.snap @@ -18,10 +18,10 @@ description: Result of parsing array_range_negative_expr.kcl "type": "Identifier" }, "init": { - "commentStart": 5, + "commentStart": 0, "end": 0, "endElement": { - "commentStart": 17, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -38,7 +38,7 @@ description: Result of parsing array_range_negative_expr.kcl "arguments": [ { "argument": { - "commentStart": 11, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -49,7 +49,7 @@ description: Result of parsing array_range_negative_expr.kcl "suffix": "None" } }, - "commentStart": 10, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -59,10 +59,10 @@ description: Result of parsing array_range_negative_expr.kcl ], "callee": { "abs_path": false, - "commentStart": 6, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6, + "commentStart": 0, "end": 0, "name": "int", "start": 0, @@ -72,7 +72,7 @@ description: Result of parsing array_range_negative_expr.kcl "start": 0, "type": "Name" }, - "commentStart": 6, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -91,16 +91,16 @@ description: Result of parsing array_range_negative_expr.kcl "type": "VariableDeclaration" }, { - "commentStart": 20, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 32, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 32, + "commentStart": 0, "end": 0, "name": "xs", "start": 0, @@ -108,7 +108,7 @@ description: Result of parsing array_range_negative_expr.kcl "type": "Identifier" }, "property": { - "commentStart": 35, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -125,7 +125,7 @@ description: Result of parsing array_range_negative_expr.kcl }, { "argument": { - "commentStart": 40, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -136,7 +136,7 @@ description: Result of parsing array_range_negative_expr.kcl "suffix": "None" } }, - "commentStart": 39, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -144,7 +144,7 @@ description: Result of parsing array_range_negative_expr.kcl "type": "UnaryExpression" }, { - "commentStart": 43, + "commentStart": 0, "end": 0, "raw": "0.001", "start": 0, @@ -156,7 +156,7 @@ description: Result of parsing array_range_negative_expr.kcl } }, { - "commentStart": 50, + "commentStart": 0, "end": 0, "raw": "\"first element is -5\"", "start": 0, @@ -167,10 +167,10 @@ description: Result of parsing array_range_negative_expr.kcl ], "callee": { "abs_path": false, - "commentStart": 20, + "commentStart": 0, "end": 0, "name": { - "commentStart": 20, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -180,7 +180,7 @@ description: Result of parsing array_range_negative_expr.kcl "start": 0, "type": "Name" }, - "commentStart": 20, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", diff --git a/rust/kcl-lib/tests/artifact_graph_example_code1/artifact_commands.snap b/rust/kcl-lib/tests/artifact_graph_example_code1/artifact_commands.snap index 1233bb39c..a3d64a5d0 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code1/artifact_commands.snap +++ b/rust/kcl-lib/tests/artifact_graph_example_code1/artifact_commands.snap @@ -196,7 +196,8 @@ description: Artifact commands artifact_graph_example_code1.kcl "type": "extrude", "target": "[uuid]", "distance": -10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -432,7 +433,8 @@ description: Artifact commands artifact_graph_example_code1.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/artifact_graph_example_code1/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/artifact_graph_example_code1/artifact_graph_flowchart.snap.md index 94519194f..b86904dd8 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code1/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/artifact_graph_example_code1/artifact_graph_flowchart.snap.md @@ -10,11 +10,11 @@ flowchart LR 8[Solid2d] end subgraph path25 [Path] - 25["Path
[383, 410, 0]"] - 26["Segment
[416, 434, 0]"] - 27["Segment
[440, 459, 0]"] - 28["Segment
[465, 521, 0]"] - 29["Segment
[527, 534, 0]"] + 25["Path
[390, 417, 0]"] + 26["Segment
[423, 441, 0]"] + 27["Segment
[447, 466, 0]"] + 28["Segment
[472, 528, 0]"] + 29["Segment
[534, 541, 0]"] 30[Solid2d] end 1["Plane
[12, 31, 0]"] @@ -34,7 +34,7 @@ flowchart LR 22["SweepEdge Opposite"] 23["SweepEdge Adjacent"] 24["EdgeCut Fillet
[298, 332, 0]"] - 31["Sweep Extrusion
[548, 578, 0]"] + 31["Sweep Extrusion
[555, 585, 0]"] 32[Wall] 33[Wall] 34[Wall] @@ -45,7 +45,7 @@ flowchart LR 39["SweepEdge Adjacent"] 40["SweepEdge Opposite"] 41["SweepEdge Adjacent"] - 42["StartSketchOnFace
[345, 377, 0]"] + 42["StartSketchOnFace
[345, 384, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/artifact_graph_example_code1/ast.snap b/rust/kcl-lib/tests/artifact_graph_example_code1/ast.snap index c58cc3d3b..1b038356c 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code1/ast.snap +++ b/rust/kcl-lib/tests/artifact_graph_example_code1/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing artifact_graph_example_code1.kcl { "arguments": [ { - "commentStart": 26, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 12, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,11 +55,11 @@ description: Result of parsing artifact_graph_example_code1.kcl { "arguments": [ { - "commentStart": 52, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 54, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "suffix": "None" } }, - "commentStart": 53, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -79,7 +79,7 @@ description: Result of parsing artifact_graph_example_code1.kcl }, { "argument": { - "commentStart": 58, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -90,7 +90,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "suffix": "None" } }, - "commentStart": 57, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -104,7 +104,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "type": "ArrayExpression" }, { - "commentStart": 62, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -113,10 +113,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 37, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -126,7 +126,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 37, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -137,17 +137,17 @@ description: Result of parsing artifact_graph_example_code1.kcl { "type": "LabeledArg", "label": { - "commentStart": 75, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 81, + "commentStart": 0, "elements": [ { - "commentStart": 82, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -159,7 +159,7 @@ description: Result of parsing artifact_graph_example_code1.kcl } }, { - "commentStart": 85, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -180,10 +180,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 70, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -193,7 +193,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 70, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -205,17 +205,17 @@ description: Result of parsing artifact_graph_example_code1.kcl { "type": "LabeledArg", "label": { - "commentStart": 100, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 106, + "commentStart": 0, "elements": [ { - "commentStart": 107, + "commentStart": 0, "end": 0, "raw": "10.55", "start": 0, @@ -227,7 +227,7 @@ description: Result of parsing artifact_graph_example_code1.kcl } }, { - "commentStart": 114, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -248,14 +248,14 @@ description: Result of parsing artifact_graph_example_code1.kcl { "type": "LabeledArg", "label": { - "commentStart": 118, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 124, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -266,10 +266,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 95, + "commentStart": 0, "end": 0, "name": { - "commentStart": 95, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -279,7 +279,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 95, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -291,17 +291,17 @@ description: Result of parsing artifact_graph_example_code1.kcl { "type": "LabeledArg", "label": { - "commentStart": 142, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 148, + "commentStart": 0, "elements": [ { - "commentStart": 149, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -314,7 +314,7 @@ description: Result of parsing artifact_graph_example_code1.kcl }, { "argument": { - "commentStart": 153, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -325,7 +325,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "suffix": "None" } }, - "commentStart": 152, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -342,14 +342,14 @@ description: Result of parsing artifact_graph_example_code1.kcl { "type": "LabeledArg", "label": { - "commentStart": 158, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 164, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -360,10 +360,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 137, + "commentStart": 0, "end": 0, "name": { - "commentStart": 137, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -373,7 +373,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 137, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -385,19 +385,19 @@ description: Result of parsing artifact_graph_example_code1.kcl { "type": "LabeledArg", "label": { - "commentStart": 182, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 196, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 211, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -406,10 +406,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 197, + "commentStart": 0, "end": 0, "name": { - "commentStart": 197, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -419,7 +419,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 197, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -428,7 +428,7 @@ description: Result of parsing artifact_graph_example_code1.kcl { "arguments": [ { - "commentStart": 229, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -437,10 +437,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 215, + "commentStart": 0, "end": 0, "name": { - "commentStart": 215, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -450,7 +450,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 215, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -466,10 +466,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 177, + "commentStart": 0, "end": 0, "name": { - "commentStart": 177, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -479,7 +479,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 177, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -490,10 +490,10 @@ description: Result of parsing artifact_graph_example_code1.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 239, + "commentStart": 0, "end": 0, "name": { - "commentStart": 239, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -503,14 +503,14 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 239, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -526,12 +526,12 @@ description: Result of parsing artifact_graph_example_code1.kcl "type": "VariableDeclaration" }, { - "commentStart": 247, + "commentStart": 0, "declaration": { - "commentStart": 247, + "commentStart": 0, "end": 0, "id": { - "commentStart": 247, + "commentStart": 0, "end": 0, "name": "extrude001", "start": 0, @@ -544,7 +544,7 @@ description: Result of parsing artifact_graph_example_code1.kcl { "type": "LabeledArg", "label": { - "commentStart": 279, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -552,7 +552,7 @@ description: Result of parsing artifact_graph_example_code1.kcl }, "arg": { "argument": { - "commentStart": 289, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -563,7 +563,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "suffix": "None" } }, - "commentStart": 288, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -574,10 +574,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 260, + "commentStart": 0, "end": 0, "name": { - "commentStart": 260, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -587,17 +587,17 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 260, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 268, + "commentStart": 0, "end": 0, "name": { - "commentStart": 268, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -614,14 +614,14 @@ description: Result of parsing artifact_graph_example_code1.kcl { "type": "LabeledArg", "label": { - "commentStart": 305, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 314, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -636,21 +636,21 @@ description: Result of parsing artifact_graph_example_code1.kcl { "type": "LabeledArg", "label": { - "commentStart": 317, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 324, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 325, + "commentStart": 0, "end": 0, "name": { - "commentStart": 325, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -671,10 +671,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 298, + "commentStart": 0, "end": 0, "name": { - "commentStart": 298, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -684,7 +684,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 298, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -692,7 +692,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "unlabeled": null } ], - "commentStart": 260, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -708,12 +708,12 @@ description: Result of parsing artifact_graph_example_code1.kcl "type": "VariableDeclaration" }, { - "commentStart": 333, + "commentStart": 0, "declaration": { - "commentStart": 333, + "commentStart": 0, "end": 0, "id": { - "commentStart": 333, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -724,44 +724,38 @@ description: Result of parsing artifact_graph_example_code1.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 359, - "end": 0, - "name": { - "commentStart": 359, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 371, - "end": 0, - "name": { - "commentStart": 371, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg02", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg02", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 345, + "commentStart": 0, "end": 0, "name": { - "commentStart": 345, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -771,20 +765,36 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 345, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 398, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 400, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -795,7 +805,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "suffix": "None" } }, - "commentStart": 399, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -804,7 +814,7 @@ description: Result of parsing artifact_graph_example_code1.kcl }, { "argument": { - "commentStart": 404, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -815,7 +825,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "suffix": "None" } }, - "commentStart": 403, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -829,7 +839,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "type": "ArrayExpression" }, { - "commentStart": 408, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -838,10 +848,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 383, + "commentStart": 0, "end": 0, "name": { - "commentStart": 383, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -851,7 +861,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 383, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -862,17 +872,17 @@ description: Result of parsing artifact_graph_example_code1.kcl { "type": "LabeledArg", "label": { - "commentStart": 421, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 427, + "commentStart": 0, "elements": [ { - "commentStart": 428, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -884,7 +894,7 @@ description: Result of parsing artifact_graph_example_code1.kcl } }, { - "commentStart": 431, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -905,10 +915,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 416, + "commentStart": 0, "end": 0, "name": { - "commentStart": 416, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -918,7 +928,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 416, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -930,17 +940,17 @@ description: Result of parsing artifact_graph_example_code1.kcl { "type": "LabeledArg", "label": { - "commentStart": 445, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 451, + "commentStart": 0, "elements": [ { - "commentStart": 452, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -953,7 +963,7 @@ description: Result of parsing artifact_graph_example_code1.kcl }, { "argument": { - "commentStart": 456, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -964,7 +974,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "suffix": "None" } }, - "commentStart": 455, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -981,10 +991,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 440, + "commentStart": 0, "end": 0, "name": { - "commentStart": 440, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -994,7 +1004,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 440, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1006,19 +1016,19 @@ description: Result of parsing artifact_graph_example_code1.kcl { "type": "LabeledArg", "label": { - "commentStart": 470, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 484, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 499, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1027,10 +1037,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 485, + "commentStart": 0, "end": 0, "name": { - "commentStart": 485, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -1040,7 +1050,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 485, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1049,7 +1059,7 @@ description: Result of parsing artifact_graph_example_code1.kcl { "arguments": [ { - "commentStart": 517, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1058,10 +1068,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 503, + "commentStart": 0, "end": 0, "name": { - "commentStart": 503, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -1071,7 +1081,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 503, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1087,10 +1097,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 465, + "commentStart": 0, "end": 0, "name": { - "commentStart": 465, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1100,7 +1110,7 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 465, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1111,10 +1121,10 @@ description: Result of parsing artifact_graph_example_code1.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 527, + "commentStart": 0, "end": 0, "name": { - "commentStart": 527, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1124,14 +1134,14 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 527, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 345, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1147,12 +1157,12 @@ description: Result of parsing artifact_graph_example_code1.kcl "type": "VariableDeclaration" }, { - "commentStart": 535, + "commentStart": 0, "declaration": { - "commentStart": 535, + "commentStart": 0, "end": 0, "id": { - "commentStart": 535, + "commentStart": 0, "end": 0, "name": "extrude002", "start": 0, @@ -1163,14 +1173,14 @@ description: Result of parsing artifact_graph_example_code1.kcl { "type": "LabeledArg", "label": { - "commentStart": 567, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 576, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -1185,10 +1195,10 @@ description: Result of parsing artifact_graph_example_code1.kcl ], "callee": { "abs_path": false, - "commentStart": 548, + "commentStart": 0, "end": 0, "name": { - "commentStart": 548, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1198,17 +1208,17 @@ description: Result of parsing artifact_graph_example_code1.kcl "start": 0, "type": "Name" }, - "commentStart": 548, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 556, + "commentStart": 0, "end": 0, "name": { - "commentStart": 556, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, diff --git a/rust/kcl-lib/tests/artifact_graph_example_code1/input.kcl b/rust/kcl-lib/tests/artifact_graph_example_code1/input.kcl index a7e26e11c..b50d3b4d9 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code1/input.kcl +++ b/rust/kcl-lib/tests/artifact_graph_example_code1/input.kcl @@ -7,7 +7,7 @@ sketch001 = startSketchOn('XY') |> close() extrude001 = extrude(sketch001, length = -10) |> fillet(radius = 5, tags = [seg01]) -sketch002 = startSketchOn(extrude001, seg02) +sketch002 = startSketchOn(extrude001, face = seg02) |> startProfileAt([-2, -6], %) |> line(end = [2, 3]) |> line(end = [2, -3]) diff --git a/rust/kcl-lib/tests/artifact_graph_example_code1/ops.snap b/rust/kcl-lib/tests/artifact_graph_example_code1/ops.snap index a2ef40a53..d07131c12 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code1/ops.snap +++ b/rust/kcl-lib/tests/artifact_graph_example_code1/ops.snap @@ -5,7 +5,7 @@ description: Operations executed artifact_graph_example_code1.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" @@ -97,16 +97,7 @@ description: Operations executed artifact_graph_example_code1.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg02", @@ -118,7 +109,15 @@ description: Operations executed artifact_graph_example_code1.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/artifact_graph_example_code1/program_memory.snap b/rust/kcl-lib/tests/artifact_graph_example_code1/program_memory.snap index 1efb62c8f..721aadcbf 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code1/program_memory.snap +++ b/rust/kcl-lib/tests/artifact_graph_example_code1/program_memory.snap @@ -171,22 +171,34 @@ description: Variables in memory after executing artifact_graph_example_code1.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -233,7 +245,18 @@ description: Variables in memory after executing artifact_graph_example_code1.kc { "type": "fillet", "id": "[uuid]", - "radius": 5.0, + "radius": { + "n": 5.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -361,17 +384,26 @@ description: Variables in memory after executing artifact_graph_example_code1.kc "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -539,22 +571,34 @@ description: Variables in memory after executing artifact_graph_example_code1.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -601,7 +645,18 @@ description: Variables in memory after executing artifact_graph_example_code1.kc { "type": "fillet", "id": "[uuid]", - "radius": 5.0, + "radius": { + "n": 5.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -778,22 +833,34 @@ description: Variables in memory after executing artifact_graph_example_code1.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -925,17 +992,26 @@ description: Variables in memory after executing artifact_graph_example_code1.kc "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1103,22 +1179,34 @@ description: Variables in memory after executing artifact_graph_example_code1.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1165,7 +1253,18 @@ description: Variables in memory after executing artifact_graph_example_code1.kc { "type": "fillet", "id": "[uuid]", - "radius": 5.0, + "radius": { + "n": 5.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } diff --git a/rust/kcl-lib/tests/artifact_graph_example_code1/unparsed.snap b/rust/kcl-lib/tests/artifact_graph_example_code1/unparsed.snap index 6a100aae8..b1066870c 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code1/unparsed.snap +++ b/rust/kcl-lib/tests/artifact_graph_example_code1/unparsed.snap @@ -11,7 +11,7 @@ sketch001 = startSketchOn(XY) |> close() extrude001 = extrude(sketch001, length = -10) |> fillet(radius = 5, tags = [seg01]) -sketch002 = startSketchOn(extrude001, seg02) +sketch002 = startSketchOn(extrude001, face = seg02) |> startProfileAt([-2, -6], %) |> line(end = [2, 3]) |> line(end = [2, -3]) diff --git a/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/artifact_graph_flowchart.snap.md index 4626f8de1..6995f4f79 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/artifact_graph_flowchart.snap.md @@ -2,21 +2,21 @@ flowchart LR subgraph path2 [Path] 2["Path
[37, 65, 0]"] - 3["Segment
[71, 121, 0]"] - 4["Segment
[127, 227, 0]"] - 5["Segment
[233, 353, 0]"] - 6["Segment
[359, 415, 0]"] - 7["Segment
[421, 428, 0]"] + 3["Segment
[71, 139, 0]"] + 4["Segment
[145, 242, 0]"] + 5["Segment
[248, 365, 0]"] + 6["Segment
[371, 427, 0]"] + 7["Segment
[433, 440, 0]"] 8[Solid2d] end subgraph path10 [Path] - 10["Path
[467, 496, 0]"] - 11["Segment
[502, 527, 0]"] - 12["Segment
[533, 559, 0]"] - 13["Segment
[565, 597, 0]"] + 10["Path
[479, 508, 0]"] + 11["Segment
[514, 539, 0]"] + 12["Segment
[545, 580, 0]"] + 13["Segment
[586, 627, 0]"] end 1["Plane
[12, 31, 0]"] - 9["Plane
[441, 461, 0]"] + 9["Plane
[453, 473, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/ast.snap b/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/ast.snap index 9715e6cf8..6e7ef93bf 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/ast.snap +++ b/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl { "arguments": [ { - "commentStart": 26, + "commentStart": 0, "end": 0, "raw": "'YZ'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl ], "callee": { "abs_path": false, - "commentStart": 12, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "start": 0, "type": "Name" }, - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl { "arguments": [ { - "commentStart": 52, + "commentStart": 0, "elements": [ { - "commentStart": 53, + "commentStart": 0, "end": 0, "raw": "5.82", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl } }, { - "commentStart": 59, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "type": "ArrayExpression" }, { - "commentStart": 63, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl ], "callee": { "abs_path": false, - "commentStart": 37, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "start": 0, "type": "Name" }, - "commentStart": 37, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -119,60 +119,74 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl { "arguments": [ { - "commentStart": 82, - "elements": [ - { - "commentStart": 83, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, - { - "commentStart": 88, - "end": 0, - "raw": "11.54", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 11.54, - "suffix": "None" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "180", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 180.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 96, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "11.54", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 11.54, + "suffix": "None" + } + } }, { - "commentStart": 99, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA001" + } } ], "callee": { "abs_path": false, - "commentStart": 71, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -182,145 +196,35 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "start": 0, "type": "Name" }, - "commentStart": 71, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 138, - "elements": [ - { - "commentStart": 147, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 154, - "end": 0, - "name": { - "commentStart": 154, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 147, - "end": 0, - "name": { - "commentStart": 147, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 147, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 178, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "commentStart": 189, - "end": 0, - "raw": "8.21", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 8.21, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 202, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 205, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentB001" - } - ], - "callee": { - "abs_path": false, - "commentStart": 127, - "end": 0, - "name": { - "commentStart": 127, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 127, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 244, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 260, + "commentStart": 0, "end": 0, "name": { - "commentStart": 260, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA001", "start": 0, @@ -334,10 +238,10 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl ], "callee": { "abs_path": false, - "commentStart": 253, + "commentStart": 0, "end": 0, "name": { - "commentStart": 253, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -347,88 +251,77 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "start": 0, "type": "Name" }, - "commentStart": 253, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 298, - "end": 0, - "name": { - "commentStart": 298, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 291, - "end": 0, - "name": { - "commentStart": 291, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 291, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 290, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "8.21", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 8.21, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 328, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 331, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentC001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentB001" + } } ], "callee": { "abs_path": false, - "commentStart": 233, + "commentStart": 0, "end": 0, "name": { - "commentStart": 233, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -438,30 +331,182 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "start": 0, "type": "Name" }, - "commentStart": 233, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 364, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentC001" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 378, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 393, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -470,10 +515,10 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl ], "callee": { "abs_path": false, - "commentStart": 379, + "commentStart": 0, "end": 0, "name": { - "commentStart": 379, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -483,7 +528,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "start": 0, "type": "Name" }, - "commentStart": 379, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -492,7 +537,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl { "arguments": [ { - "commentStart": 411, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -501,10 +546,10 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl ], "callee": { "abs_path": false, - "commentStart": 397, + "commentStart": 0, "end": 0, "name": { - "commentStart": 397, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -514,7 +559,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "start": 0, "type": "Name" }, - "commentStart": 397, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -530,10 +575,10 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl ], "callee": { "abs_path": false, - "commentStart": 359, + "commentStart": 0, "end": 0, "name": { - "commentStart": 359, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -543,7 +588,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "start": 0, "type": "Name" }, - "commentStart": 359, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -554,10 +599,10 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 421, + "commentStart": 0, "end": 0, "name": { - "commentStart": 421, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -567,14 +612,14 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "start": 0, "type": "Name" }, - "commentStart": 421, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -590,12 +635,12 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "type": "VariableDeclaration" }, { - "commentStart": 429, + "commentStart": 0, "declaration": { - "commentStart": 429, + "commentStart": 0, "end": 0, "id": { - "commentStart": 429, + "commentStart": 0, "end": 0, "name": "sketch004", "start": 0, @@ -606,7 +651,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl { "arguments": [ { - "commentStart": 455, + "commentStart": 0, "end": 0, "raw": "'-XZ'", "start": 0, @@ -617,10 +662,10 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl ], "callee": { "abs_path": false, - "commentStart": 441, + "commentStart": 0, "end": 0, "name": { - "commentStart": 441, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -630,7 +675,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "start": 0, "type": "Name" }, - "commentStart": 441, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -639,10 +684,10 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl { "arguments": [ { - "commentStart": 482, + "commentStart": 0, "elements": [ { - "commentStart": 483, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -654,7 +699,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl } }, { - "commentStart": 486, + "commentStart": 0, "end": 0, "raw": "14.36", "start": 0, @@ -672,7 +717,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "type": "ArrayExpression" }, { - "commentStart": 494, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -681,10 +726,10 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl ], "callee": { "abs_path": false, - "commentStart": 467, + "commentStart": 0, "end": 0, "name": { - "commentStart": 467, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -694,7 +739,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "start": 0, "type": "Name" }, - "commentStart": 467, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -705,17 +750,17 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl { "type": "LabeledArg", "label": { - "commentStart": 507, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 513, + "commentStart": 0, "elements": [ { - "commentStart": 514, + "commentStart": 0, "end": 0, "raw": "15.49", "start": 0, @@ -727,7 +772,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl } }, { - "commentStart": 521, + "commentStart": 0, "end": 0, "raw": "0.05", "start": 0, @@ -748,10 +793,10 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl ], "callee": { "abs_path": false, - "commentStart": 502, + "commentStart": 0, "end": 0, "name": { - "commentStart": 502, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -761,7 +806,7 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "start": 0, "type": "Name" }, - "commentStart": 502, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -771,126 +816,57 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl { "arguments": [ { - "commentStart": 549, - "elements": [ - { - "commentStart": 550, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 553, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 557, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 533, - "end": 0, - "name": { - "commentStart": 533, - "end": 0, - "name": "tangentialArcTo", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 533, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 581, - "elements": [ - { - "argument": { - "commentStart": 583, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, "end": 0, - "raw": "6.8", + "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 6.8, + "value": 0.0, "suffix": "None" } }, - "commentStart": 582, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - { - "commentStart": 588, - "end": 0, - "raw": "8.17", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 8.17, - "suffix": "None" + { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 595, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 565, + "commentStart": 0, "end": 0, "name": { - "commentStart": 565, + "commentStart": 0, "end": 0, - "name": "tangentialArcTo", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -898,14 +874,91 @@ description: Result of parsing artifact_graph_example_code_no_3d.kcl "start": 0, "type": "Name" }, - "commentStart": 565, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "6.8", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 6.8, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "8.17", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 8.17, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null } ], - "commentStart": 441, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/input.kcl b/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/input.kcl index 32b542974..e2f8b35c0 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/input.kcl +++ b/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/input.kcl @@ -1,18 +1,12 @@ sketch003 = startSketchOn('YZ') |> startProfileAt([5.82, 0], %) - |> angledLine([180, 11.54], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 8.21 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 180, length = 11.54, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 8.21, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() sketch004 = startSketchOn('-XZ') |> startProfileAt([0, 14.36], %) |> line(end = [15.49, 0.05]) - |> tangentialArcTo([0, 0], %) - |> tangentialArcTo([-6.8, 8.17], %) + |> tangentialArc(endAbsolute = [0, 0]) + |> tangentialArc(endAbsolute = [-6.8, 8.17]) diff --git a/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/ops.snap b/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/ops.snap index c8e23e42f..3f61a2e6f 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/ops.snap +++ b/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/ops.snap @@ -5,7 +5,7 @@ description: Operations executed artifact_graph_example_code_no_3d.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "YZ" @@ -20,7 +20,7 @@ description: Operations executed artifact_graph_example_code_no_3d.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "-XZ" diff --git a/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/program_memory.snap b/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/program_memory.snap index e3d229a94..b7e3a106b 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/program_memory.snap +++ b/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/program_memory.snap @@ -34,9 +34,9 @@ description: Variables in memory after executing artifact_graph_example_code_no_ 0.0 ], "tag": { - "commentStart": 99, - "end": 120, - "start": 99, + "commentStart": 117, + "end": 138, + "start": 117, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -59,9 +59,9 @@ description: Variables in memory after executing artifact_graph_example_code_no_ 0.0 ], "tag": { - "commentStart": 205, - "end": 226, - "start": 205, + "commentStart": 220, + "end": 241, + "start": 220, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -84,9 +84,9 @@ description: Variables in memory after executing artifact_graph_example_code_no_ 8.21 ], "tag": { - "commentStart": 331, - "end": 352, - "start": 331, + "commentStart": 343, + "end": 364, + "start": 343, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -146,22 +146,34 @@ description: Variables in memory after executing artifact_graph_example_code_no_ "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -288,22 +300,34 @@ description: Variables in memory after executing artifact_graph_example_code_no_ "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/unparsed.snap b/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/unparsed.snap index 851b697cb..882091554 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/unparsed.snap +++ b/rust/kcl-lib/tests/artifact_graph_example_code_no_3d/unparsed.snap @@ -4,19 +4,13 @@ description: Result of unparsing artifact_graph_example_code_no_3d.kcl --- sketch003 = startSketchOn(YZ) |> startProfileAt([5.82, 0], %) - |> angledLine([180, 11.54], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 8.21 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 180, length = 11.54, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 8.21, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() sketch004 = startSketchOn(-XZ) |> startProfileAt([0, 14.36], %) |> line(end = [15.49, 0.05]) - |> tangentialArcTo([0, 0], %) - |> tangentialArcTo([-6.8, 8.17], %) + |> tangentialArc(endAbsolute = [0, 0]) + |> tangentialArc(endAbsolute = [-6.8, 8.17]) diff --git a/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/ast.snap b/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/ast.snap index dec6880d7..a0154d812 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/ast.snap +++ b/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/ast.snap @@ -22,14 +22,14 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl { "type": "LabeledArg", "label": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 44, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -44,10 +44,10 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl ], "callee": { "abs_path": false, - "commentStart": 17, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -57,13 +57,13 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "start": 0, "type": "Name" }, - "commentStart": 17, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 29, + "commentStart": 0, "end": 0, "raw": "\"XY\"", "start": 0, @@ -82,12 +82,12 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "type": "VariableDeclaration" }, { - "commentStart": 48, + "commentStart": 0, "declaration": { - "commentStart": 48, + "commentStart": 0, "end": 0, "id": { - "commentStart": 48, + "commentStart": 0, "end": 0, "name": "offsetPlane002", "start": 0, @@ -98,7 +98,7 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl { "type": "LabeledArg", "label": { - "commentStart": 83, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -106,7 +106,7 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl }, "arg": { "argument": { - "commentStart": 93, + "commentStart": 0, "end": 0, "raw": "50", "start": 0, @@ -117,7 +117,7 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "suffix": "None" } }, - "commentStart": 92, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -128,10 +128,10 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl ], "callee": { "abs_path": false, - "commentStart": 65, + "commentStart": 0, "end": 0, "name": { - "commentStart": 65, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -141,13 +141,13 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "start": 0, "type": "Name" }, - "commentStart": 65, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 77, + "commentStart": 0, "end": 0, "raw": "\"XZ\"", "start": 0, @@ -166,12 +166,12 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "type": "VariableDeclaration" }, { - "commentStart": 97, + "commentStart": 0, "declaration": { - "commentStart": 97, + "commentStart": 0, "end": 0, "id": { - "commentStart": 97, + "commentStart": 0, "end": 0, "name": "offsetPlane003", "start": 0, @@ -182,14 +182,14 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl { "type": "LabeledArg", "label": { - "commentStart": 132, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 141, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -204,10 +204,10 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl ], "callee": { "abs_path": false, - "commentStart": 114, + "commentStart": 0, "end": 0, "name": { - "commentStart": 114, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -217,13 +217,13 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "start": 0, "type": "Name" }, - "commentStart": 114, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 126, + "commentStart": 0, "end": 0, "raw": "\"YZ\"", "start": 0, @@ -242,12 +242,12 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "type": "VariableDeclaration" }, { - "commentStart": 144, + "commentStart": 0, "declaration": { - "commentStart": 146, + "commentStart": 0, "end": 0, "id": { - "commentStart": 146, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -259,10 +259,10 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "arguments": [ { "abs_path": false, - "commentStart": 172, + "commentStart": 0, "end": 0, "name": { - "commentStart": 172, + "commentStart": 0, "end": 0, "name": "offsetPlane001", "start": 0, @@ -276,10 +276,10 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl ], "callee": { "abs_path": false, - "commentStart": 158, + "commentStart": 0, "end": 0, "name": { - "commentStart": 158, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -289,7 +289,7 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "start": 0, "type": "Name" }, - "commentStart": 158, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -298,10 +298,10 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl { "arguments": [ { - "commentStart": 208, + "commentStart": 0, "elements": [ { - "commentStart": 209, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -313,7 +313,7 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl } }, { - "commentStart": 212, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -331,7 +331,7 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "type": "ArrayExpression" }, { - "commentStart": 216, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -340,10 +340,10 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl ], "callee": { "abs_path": false, - "commentStart": 193, + "commentStart": 0, "end": 0, "name": { - "commentStart": 193, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -353,7 +353,7 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "start": 0, "type": "Name" }, - "commentStart": 193, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -364,17 +364,17 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl { "type": "LabeledArg", "label": { - "commentStart": 229, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 235, + "commentStart": 0, "elements": [ { - "commentStart": 236, + "commentStart": 0, "end": 0, "raw": "6.78", "start": 0, @@ -386,7 +386,7 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl } }, { - "commentStart": 242, + "commentStart": 0, "end": 0, "raw": "15.01", "start": 0, @@ -407,10 +407,10 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl ], "callee": { "abs_path": false, - "commentStart": 224, + "commentStart": 0, "end": 0, "name": { - "commentStart": 224, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -420,7 +420,7 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "start": 0, "type": "Name" }, - "commentStart": 224, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -428,7 +428,7 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "unlabeled": null } ], - "commentStart": 158, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -450,7 +450,7 @@ description: Result of parsing artifact_graph_example_code_offset_planes.kcl "nonCodeNodes": { "2": [ { - "commentStart": 144, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/ops.snap b/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/ops.snap index 9d94cf7bc..acae2869e 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/ops.snap +++ b/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/ops.snap @@ -95,7 +95,7 @@ description: Operations executed artifact_graph_example_code_offset_planes.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/program_memory.snap b/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/program_memory.snap index 59fd81bc8..7b7c1a3ea 100644 --- a/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/program_memory.snap +++ b/rust/kcl-lib/tests/artifact_graph_example_code_offset_planes/program_memory.snap @@ -12,22 +12,34 @@ description: Variables in memory after executing artifact_graph_example_code_off "origin": { "x": 0.0, "y": 0.0, - "z": 20.0 + "z": 20.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -43,22 +55,34 @@ description: Variables in memory after executing artifact_graph_example_code_off "origin": { "x": 0.0, "y": 50.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -74,22 +98,34 @@ description: Variables in memory after executing artifact_graph_example_code_off "origin": { "x": 10.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -130,22 +166,34 @@ description: Variables in memory after executing artifact_graph_example_code_off "origin": { "x": 0.0, "y": 0.0, - "z": 20.0 + "z": 20.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/artifact_commands.snap b/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/artifact_commands.snap index b16478f01..77ada0a73 100644 --- a/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/artifact_commands.snap +++ b/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl "type": "extrude", "target": "[uuid]", "distance": 6.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -383,7 +384,8 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -587,7 +589,8 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl "type": "extrude", "target": "[uuid]", "distance": 4.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -791,7 +794,8 @@ description: Artifact commands artifact_graph_sketch_on_face_etc.kcl "type": "extrude", "target": "[uuid]", "distance": 3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/artifact_graph_flowchart.snap.md index 1ebb3e12b..1499f9700 100644 --- a/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/artifact_graph_flowchart.snap.md @@ -1,39 +1,39 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[37, 62, 0]"] - 3["Segment
[68, 86, 0]"] - 4["Segment
[92, 125, 0]"] - 5["Segment
[131, 187, 0]"] - 6["Segment
[193, 200, 0]"] + 2["Path
[35, 60, 0]"] + 3["Segment
[66, 84, 0]"] + 4["Segment
[90, 123, 0]"] + 5["Segment
[129, 185, 0]"] + 6["Segment
[191, 198, 0]"] 7[Solid2d] end subgraph path20 [Path] - 20["Path
[295, 325, 0]"] - 21["Segment
[331, 349, 0]"] - 22["Segment
[355, 374, 0]"] - 23["Segment
[380, 436, 0]"] - 24["Segment
[442, 449, 0]"] + 20["Path
[300, 330, 0]"] + 21["Segment
[336, 354, 0]"] + 22["Segment
[360, 379, 0]"] + 23["Segment
[385, 441, 0]"] + 24["Segment
[447, 454, 0]"] 25[Solid2d] end subgraph path37 [Path] - 37["Path
[544, 571, 0]"] - 38["Segment
[577, 611, 0]"] - 39["Segment
[617, 636, 0]"] - 40["Segment
[642, 698, 0]"] - 41["Segment
[704, 711, 0]"] + 37["Path
[556, 583, 0]"] + 38["Segment
[589, 623, 0]"] + 39["Segment
[629, 648, 0]"] + 40["Segment
[654, 710, 0]"] + 41["Segment
[716, 723, 0]"] 42[Solid2d] end subgraph path54 [Path] - 54["Path
[806, 833, 0]"] - 55["Segment
[839, 859, 0]"] - 56["Segment
[865, 886, 0]"] - 57["Segment
[892, 948, 0]"] - 58["Segment
[954, 961, 0]"] + 54["Path
[825, 852, 0]"] + 55["Segment
[858, 878, 0]"] + 56["Segment
[884, 905, 0]"] + 57["Segment
[911, 967, 0]"] + 58["Segment
[973, 980, 0]"] 59[Solid2d] end - 1["Plane
[12, 31, 0]"] - 8["Sweep Extrusion
[214, 244, 0]"] + 1["Plane
[12, 29, 0]"] + 8["Sweep Extrusion
[212, 242, 0]"] 9[Wall] 10[Wall] 11[Wall] @@ -45,7 +45,7 @@ flowchart LR 17["SweepEdge Adjacent"] 18["SweepEdge Opposite"] 19["SweepEdge Adjacent"] - 26["Sweep Extrusion
[463, 493, 0]"] + 26["Sweep Extrusion
[468, 498, 0]"] 27[Wall] 28[Wall] 29[Wall] @@ -56,7 +56,7 @@ flowchart LR 34["SweepEdge Adjacent"] 35["SweepEdge Opposite"] 36["SweepEdge Adjacent"] - 43["Sweep Extrusion
[725, 755, 0]"] + 43["Sweep Extrusion
[737, 767, 0]"] 44[Wall] 45[Wall] 46[Wall] @@ -67,7 +67,7 @@ flowchart LR 51["SweepEdge Adjacent"] 52["SweepEdge Opposite"] 53["SweepEdge Adjacent"] - 60["Sweep Extrusion
[975, 1005, 0]"] + 60["Sweep Extrusion
[994, 1024, 0]"] 61[Wall] 62[Wall] 63[Wall] @@ -78,9 +78,9 @@ flowchart LR 68["SweepEdge Adjacent"] 69["SweepEdge Opposite"] 70["SweepEdge Adjacent"] - 71["StartSketchOnFace
[257, 289, 0]"] - 72["StartSketchOnFace
[506, 538, 0]"] - 73["StartSketchOnFace
[768, 800, 0]"] + 71["StartSketchOnFace
[255, 294, 0]"] + 72["StartSketchOnFace
[511, 550, 0]"] + 73["StartSketchOnFace
[780, 819, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/ast.snap b/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/ast.snap index d6f750452..0e38b7f1a 100644 --- a/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/ast.snap +++ b/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/ast.snap @@ -22,21 +22,28 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "arguments": [ { - "commentStart": 26, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'XZ'", + "name": { + "commentStart": 0, + "end": 0, + "name": "XZ", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "XZ" + "type": "Name", + "type": "Name" } ], "callee": { "abs_path": false, - "commentStart": 12, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +53,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +62,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "arguments": [ { - "commentStart": 52, + "commentStart": 0, "elements": [ { - "commentStart": 53, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -70,7 +77,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl } }, { - "commentStart": 56, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -88,7 +95,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "type": "ArrayExpression" }, { - "commentStart": 60, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +104,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 37, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +117,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 37, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +128,17 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 73, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 79, + "commentStart": 0, "elements": [ { - "commentStart": 80, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -143,7 +150,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl } }, { - "commentStart": 83, + "commentStart": 0, "end": 0, "raw": "8", "start": 0, @@ -164,10 +171,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 68, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -177,7 +184,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 68, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -189,17 +196,17 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 97, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 103, + "commentStart": 0, "elements": [ { - "commentStart": 104, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -212,7 +219,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl }, { "argument": { - "commentStart": 108, + "commentStart": 0, "end": 0, "raw": "8", "start": 0, @@ -223,7 +230,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "suffix": "None" } }, - "commentStart": 107, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -240,14 +247,14 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 112, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 118, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -258,10 +265,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 92, + "commentStart": 0, "end": 0, "name": { - "commentStart": 92, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -271,7 +278,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 92, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -283,19 +290,19 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 136, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 150, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 165, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -304,10 +311,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 151, + "commentStart": 0, "end": 0, "name": { - "commentStart": 151, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -317,7 +324,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 151, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -326,7 +333,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "arguments": [ { - "commentStart": 183, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -335,10 +342,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 169, + "commentStart": 0, "end": 0, "name": { - "commentStart": 169, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -348,7 +355,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 169, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -364,10 +371,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 131, + "commentStart": 0, "end": 0, "name": { - "commentStart": 131, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -377,7 +384,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 131, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -388,10 +395,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 193, + "commentStart": 0, "end": 0, "name": { - "commentStart": 193, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -401,14 +408,14 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 193, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -424,12 +431,12 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "type": "VariableDeclaration" }, { - "commentStart": 201, + "commentStart": 0, "declaration": { - "commentStart": 201, + "commentStart": 0, "end": 0, "id": { - "commentStart": 201, + "commentStart": 0, "end": 0, "name": "extrude001", "start": 0, @@ -440,14 +447,14 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 233, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 242, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -462,10 +469,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 214, + "commentStart": 0, "end": 0, "name": { - "commentStart": 214, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -475,17 +482,17 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 214, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 222, + "commentStart": 0, "end": 0, "name": { - "commentStart": 222, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -507,12 +514,12 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "type": "VariableDeclaration" }, { - "commentStart": 245, + "commentStart": 0, "declaration": { - "commentStart": 245, + "commentStart": 0, "end": 0, "id": { - "commentStart": 245, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -523,44 +530,38 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 271, - "end": 0, - "name": { - "commentStart": 271, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 283, - "end": 0, - "name": { - "commentStart": 283, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg01", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg01", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 257, + "commentStart": 0, "end": 0, "name": { - "commentStart": 257, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -570,20 +571,36 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 257, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 310, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 312, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -594,7 +611,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "suffix": "None" } }, - "commentStart": 311, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -602,7 +619,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "type": "UnaryExpression" }, { - "commentStart": 317, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -620,7 +637,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "type": "ArrayExpression" }, { - "commentStart": 323, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -629,10 +646,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 295, + "commentStart": 0, "end": 0, "name": { - "commentStart": 295, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -642,7 +659,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 295, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -653,17 +670,17 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 336, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 342, + "commentStart": 0, "elements": [ { - "commentStart": 343, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -675,7 +692,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl } }, { - "commentStart": 346, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -696,10 +713,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 331, + "commentStart": 0, "end": 0, "name": { - "commentStart": 331, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -709,7 +726,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 331, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -721,17 +738,17 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 360, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 366, + "commentStart": 0, "elements": [ { - "commentStart": 367, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -744,7 +761,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl }, { "argument": { - "commentStart": 371, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -755,7 +772,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "suffix": "None" } }, - "commentStart": 370, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -772,10 +789,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 355, + "commentStart": 0, "end": 0, "name": { - "commentStart": 355, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -785,7 +802,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 355, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -797,19 +814,19 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 385, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 399, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 414, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -818,10 +835,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 400, + "commentStart": 0, "end": 0, "name": { - "commentStart": 400, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -831,7 +848,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 400, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -840,7 +857,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "arguments": [ { - "commentStart": 432, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -849,10 +866,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 418, + "commentStart": 0, "end": 0, "name": { - "commentStart": 418, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -862,7 +879,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 418, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -878,10 +895,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 380, + "commentStart": 0, "end": 0, "name": { - "commentStart": 380, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -891,7 +908,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 380, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -902,10 +919,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 442, + "commentStart": 0, "end": 0, "name": { - "commentStart": 442, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -915,14 +932,14 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 442, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 257, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -938,12 +955,12 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "type": "VariableDeclaration" }, { - "commentStart": 450, + "commentStart": 0, "declaration": { - "commentStart": 450, + "commentStart": 0, "end": 0, "id": { - "commentStart": 450, + "commentStart": 0, "end": 0, "name": "extrude002", "start": 0, @@ -954,14 +971,14 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 482, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 491, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -976,10 +993,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 463, + "commentStart": 0, "end": 0, "name": { - "commentStart": 463, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -989,17 +1006,17 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 463, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 471, + "commentStart": 0, "end": 0, "name": { - "commentStart": 471, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -1021,12 +1038,12 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "type": "VariableDeclaration" }, { - "commentStart": 494, + "commentStart": 0, "declaration": { - "commentStart": 494, + "commentStart": 0, "end": 0, "id": { - "commentStart": 494, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -1037,37 +1054,31 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 520, - "end": 0, - "name": { - "commentStart": 520, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude002", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 532, - "end": 0, - "raw": "'END'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "arg": { + "commentStart": 0, + "end": 0, + "raw": "'END'", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "END" + } } ], "callee": { "abs_path": false, - "commentStart": 506, + "commentStart": 0, "end": 0, "name": { - "commentStart": 506, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1077,19 +1088,35 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 506, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude002", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 559, + "commentStart": 0, "elements": [ { - "commentStart": 560, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1101,7 +1128,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl } }, { - "commentStart": 563, + "commentStart": 0, "end": 0, "raw": "1.5", "start": 0, @@ -1119,7 +1146,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "type": "ArrayExpression" }, { - "commentStart": 569, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1128,10 +1155,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 544, + "commentStart": 0, "end": 0, "name": { - "commentStart": 544, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1141,7 +1168,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 544, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1152,17 +1179,17 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 582, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 588, + "commentStart": 0, "elements": [ { - "commentStart": 589, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -1174,7 +1201,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl } }, { - "commentStart": 594, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1195,14 +1222,14 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 598, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 604, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1213,10 +1240,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 577, + "commentStart": 0, "end": 0, "name": { - "commentStart": 577, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1226,7 +1253,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 577, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1238,17 +1265,17 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 622, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 628, + "commentStart": 0, "elements": [ { - "commentStart": 629, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1261,7 +1288,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl }, { "argument": { - "commentStart": 633, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1272,7 +1299,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "suffix": "None" } }, - "commentStart": 632, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1289,10 +1316,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 617, + "commentStart": 0, "end": 0, "name": { - "commentStart": 617, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1302,7 +1329,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 617, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1314,19 +1341,19 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 647, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 661, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 676, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1335,10 +1362,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 662, + "commentStart": 0, "end": 0, "name": { - "commentStart": 662, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -1348,7 +1375,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 662, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1357,7 +1384,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "arguments": [ { - "commentStart": 694, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1366,10 +1393,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 680, + "commentStart": 0, "end": 0, "name": { - "commentStart": 680, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -1379,7 +1406,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 680, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1395,10 +1422,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 642, + "commentStart": 0, "end": 0, "name": { - "commentStart": 642, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1408,7 +1435,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 642, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1419,10 +1446,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 704, + "commentStart": 0, "end": 0, "name": { - "commentStart": 704, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1432,14 +1459,14 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 704, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 506, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1455,12 +1482,12 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "type": "VariableDeclaration" }, { - "commentStart": 712, + "commentStart": 0, "declaration": { - "commentStart": 712, + "commentStart": 0, "end": 0, "id": { - "commentStart": 712, + "commentStart": 0, "end": 0, "name": "extrude003", "start": 0, @@ -1471,14 +1498,14 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 744, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 753, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -1493,10 +1520,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 725, + "commentStart": 0, "end": 0, "name": { - "commentStart": 725, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1506,17 +1533,17 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 725, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 733, + "commentStart": 0, "end": 0, "name": { - "commentStart": 733, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -1538,12 +1565,12 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "type": "VariableDeclaration" }, { - "commentStart": 756, + "commentStart": 0, "declaration": { - "commentStart": 756, + "commentStart": 0, "end": 0, "id": { - "commentStart": 756, + "commentStart": 0, "end": 0, "name": "sketch004", "start": 0, @@ -1554,44 +1581,38 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 782, - "end": 0, - "name": { - "commentStart": 782, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude003", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 794, - "end": 0, - "name": { - "commentStart": 794, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg02", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg02", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 768, + "commentStart": 0, "end": 0, "name": { - "commentStart": 768, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1601,20 +1622,36 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 768, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude003", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 821, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 823, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -1625,7 +1662,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "suffix": "None" } }, - "commentStart": 822, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1633,7 +1670,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "type": "UnaryExpression" }, { - "commentStart": 826, + "commentStart": 0, "end": 0, "raw": "14", "start": 0, @@ -1651,7 +1688,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "type": "ArrayExpression" }, { - "commentStart": 831, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1660,10 +1697,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 806, + "commentStart": 0, "end": 0, "name": { - "commentStart": 806, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1673,7 +1710,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 806, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1684,17 +1721,17 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 844, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 850, + "commentStart": 0, "elements": [ { - "commentStart": 851, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -1706,7 +1743,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl } }, { - "commentStart": 856, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1727,10 +1764,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 839, + "commentStart": 0, "end": 0, "name": { - "commentStart": 839, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1740,7 +1777,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 839, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1752,17 +1789,17 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 870, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 876, + "commentStart": 0, "elements": [ { - "commentStart": 877, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -1775,7 +1812,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl }, { "argument": { - "commentStart": 883, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1786,7 +1823,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "suffix": "None" } }, - "commentStart": 882, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1803,10 +1840,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 865, + "commentStart": 0, "end": 0, "name": { - "commentStart": 865, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1816,7 +1853,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 865, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1828,19 +1865,19 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 897, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 911, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 926, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1849,10 +1886,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 912, + "commentStart": 0, "end": 0, "name": { - "commentStart": 912, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -1862,7 +1899,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 912, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1871,7 +1908,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "arguments": [ { - "commentStart": 944, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1880,10 +1917,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 930, + "commentStart": 0, "end": 0, "name": { - "commentStart": 930, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -1893,7 +1930,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 930, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1909,10 +1946,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 892, + "commentStart": 0, "end": 0, "name": { - "commentStart": 892, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1922,7 +1959,7 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 892, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1933,10 +1970,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 954, + "commentStart": 0, "end": 0, "name": { - "commentStart": 954, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1946,14 +1983,14 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 954, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 768, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1969,12 +2006,12 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "type": "VariableDeclaration" }, { - "commentStart": 962, + "commentStart": 0, "declaration": { - "commentStart": 962, + "commentStart": 0, "end": 0, "id": { - "commentStart": 962, + "commentStart": 0, "end": 0, "name": "extrude004", "start": 0, @@ -1985,14 +2022,14 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl { "type": "LabeledArg", "label": { - "commentStart": 994, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1003, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -2007,10 +2044,10 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl ], "callee": { "abs_path": false, - "commentStart": 975, + "commentStart": 0, "end": 0, "name": { - "commentStart": 975, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2020,17 +2057,17 @@ description: Result of parsing artifact_graph_sketch_on_face_etc.kcl "start": 0, "type": "Name" }, - "commentStart": 975, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 983, + "commentStart": 0, "end": 0, "name": { - "commentStart": 983, + "commentStart": 0, "end": 0, "name": "sketch004", "start": 0, diff --git a/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/input.kcl b/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/input.kcl index 6253d95e4..e77dd7be0 100644 --- a/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/input.kcl +++ b/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/input.kcl @@ -1,25 +1,25 @@ -sketch001 = startSketchOn('XZ') +sketch001 = startSketchOn(XZ) |> startProfileAt([0, 0], %) |> line(end = [4, 8]) |> line(end = [5, -8], tag = $seg01) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude001 = extrude(sketch001, length = 6) -sketch002 = startSketchOn(extrude001, seg01) +sketch002 = startSketchOn(extrude001, face = seg01) |> startProfileAt([-0.5, 0.5], %) |> line(end = [2, 5]) |> line(end = [2, -5]) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude002 = extrude(sketch002, length = 5) -sketch003 = startSketchOn(extrude002, 'END') +sketch003 = startSketchOn(extrude002, face = 'END') |> startProfileAt([1, 1.5], %) |> line(end = [0.5, 2], tag = $seg02) |> line(end = [1, -2]) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude003 = extrude(sketch003, length = 4) -sketch004 = startSketchOn(extrude003, seg02) +sketch004 = startSketchOn(extrude003, face = seg02) |> startProfileAt([-3, 14], %) |> line(end = [0.5, 1]) |> line(end = [0.5, -2]) diff --git a/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/ops.snap b/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/ops.snap index 02198c7f9..63c97057b 100644 --- a/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/ops.snap +++ b/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/ops.snap @@ -5,10 +5,10 @@ description: Operations executed artifact_graph_sketch_on_face_etc.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { - "type": "String", - "value": "XZ" + "type": "Plane", + "artifact_id": "[uuid]" }, "sourceRange": [] } @@ -52,16 +52,7 @@ description: Operations executed artifact_graph_sketch_on_face_etc.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg01", @@ -73,7 +64,15 @@ description: Operations executed artifact_graph_sketch_on_face_etc.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -109,16 +108,7 @@ description: Operations executed artifact_graph_sketch_on_face_etc.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "END" @@ -129,7 +119,15 @@ description: Operations executed artifact_graph_sketch_on_face_etc.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -165,16 +163,7 @@ description: Operations executed artifact_graph_sketch_on_face_etc.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg02", @@ -186,7 +175,15 @@ description: Operations executed artifact_graph_sketch_on_face_etc.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/program_memory.snap b/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/program_memory.snap index be2478180..1aa1e6218 100644 --- a/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/program_memory.snap +++ b/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/program_memory.snap @@ -22,9 +22,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 118, - "end": 124, - "start": 118, + "commentStart": 116, + "end": 122, + "start": 116, "type": "TagDeclarator", "value": "seg01" }, @@ -71,9 +71,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e 8.0 ], "tag": { - "commentStart": 118, - "end": 124, - "start": 118, + "commentStart": 116, + "end": 122, + "start": 116, "type": "TagDeclarator", "value": "seg01" }, @@ -133,22 +133,34 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -310,17 +322,26 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -339,9 +360,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 118, - "end": 124, - "start": 118, + "commentStart": 116, + "end": 122, + "start": 116, "type": "TagDeclarator", "value": "seg01" }, @@ -388,9 +409,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e 8.0 ], "tag": { - "commentStart": 118, - "end": 124, - "start": 118, + "commentStart": 116, + "end": 122, + "start": 116, "type": "TagDeclarator", "value": "seg01" }, @@ -450,22 +471,34 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -556,9 +589,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 604, - "end": 610, - "start": 604, + "commentStart": 616, + "end": 622, + "start": 616, "type": "TagDeclarator", "value": "seg02" }, @@ -593,9 +626,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e 1.5 ], "tag": { - "commentStart": 604, - "end": 610, - "start": 604, + "commentStart": 616, + "end": 622, + "start": 616, "type": "TagDeclarator", "value": "seg02" }, @@ -674,17 +707,26 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -802,17 +844,26 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -831,9 +882,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 118, - "end": 124, - "start": 118, + "commentStart": 116, + "end": 122, + "start": 116, "type": "TagDeclarator", "value": "seg01" }, @@ -880,9 +931,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e 8.0 ], "tag": { - "commentStart": 118, - "end": 124, - "start": 118, + "commentStart": 116, + "end": 122, + "start": 116, "type": "TagDeclarator", "value": "seg01" }, @@ -942,22 +993,34 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1195,17 +1258,26 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1217,9 +1289,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 604, - "end": 610, - "start": 604, + "commentStart": 616, + "end": 622, + "start": 616, "type": "TagDeclarator", "value": "seg02" }, @@ -1254,9 +1326,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e 1.5 ], "tag": { - "commentStart": 604, - "end": 610, - "start": 604, + "commentStart": 616, + "end": 622, + "start": 616, "type": "TagDeclarator", "value": "seg02" }, @@ -1335,17 +1407,26 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1463,17 +1544,26 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1492,9 +1582,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 118, - "end": 124, - "start": 118, + "commentStart": 116, + "end": 122, + "start": 116, "type": "TagDeclarator", "value": "seg01" }, @@ -1541,9 +1631,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e 8.0 ], "tag": { - "commentStart": 118, - "end": 124, - "start": 118, + "commentStart": 116, + "end": 122, + "start": 116, "type": "TagDeclarator", "value": "seg01" }, @@ -1603,22 +1693,34 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1818,9 +1920,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e 8.0 ], "tag": { - "commentStart": 118, - "end": 124, - "start": 118, + "commentStart": 116, + "end": 122, + "start": 116, "type": "TagDeclarator", "value": "seg01" }, @@ -1880,22 +1982,34 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2023,17 +2137,26 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2052,9 +2175,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 118, - "end": 124, - "start": 118, + "commentStart": 116, + "end": 122, + "start": 116, "type": "TagDeclarator", "value": "seg01" }, @@ -2101,9 +2224,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e 8.0 ], "tag": { - "commentStart": 118, - "end": 124, - "start": 118, + "commentStart": 116, + "end": 122, + "start": 116, "type": "TagDeclarator", "value": "seg01" }, @@ -2163,22 +2286,34 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2266,9 +2401,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e 1.5 ], "tag": { - "commentStart": 604, - "end": 610, - "start": 604, + "commentStart": 616, + "end": 622, + "start": 616, "type": "TagDeclarator", "value": "seg02" }, @@ -2347,17 +2482,26 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2475,17 +2619,26 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2504,9 +2657,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 118, - "end": 124, - "start": 118, + "commentStart": 116, + "end": 122, + "start": 116, "type": "TagDeclarator", "value": "seg01" }, @@ -2553,9 +2706,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e 8.0 ], "tag": { - "commentStart": 118, - "end": 124, - "start": 118, + "commentStart": 116, + "end": 122, + "start": 116, "type": "TagDeclarator", "value": "seg01" }, @@ -2615,22 +2768,34 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2834,17 +2999,26 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2856,9 +3030,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 604, - "end": 610, - "start": 604, + "commentStart": 616, + "end": 622, + "start": 616, "type": "TagDeclarator", "value": "seg02" }, @@ -2893,9 +3067,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e 1.5 ], "tag": { - "commentStart": 604, - "end": 610, - "start": 604, + "commentStart": 616, + "end": 622, + "start": 616, "type": "TagDeclarator", "value": "seg02" }, @@ -2974,17 +3148,26 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3102,17 +3285,26 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3131,9 +3323,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 118, - "end": 124, - "start": 118, + "commentStart": 116, + "end": 122, + "start": 116, "type": "TagDeclarator", "value": "seg01" }, @@ -3180,9 +3372,9 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e 8.0 ], "tag": { - "commentStart": 118, - "end": 124, - "start": 118, + "commentStart": 116, + "end": 122, + "start": 116, "type": "TagDeclarator", "value": "seg01" }, @@ -3242,22 +3434,34 @@ description: Variables in memory after executing artifact_graph_sketch_on_face_e "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/unparsed.snap b/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/unparsed.snap index 96225d5dc..92ab4a55c 100644 --- a/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/unparsed.snap +++ b/rust/kcl-lib/tests/artifact_graph_sketch_on_face_etc/unparsed.snap @@ -9,21 +9,21 @@ sketch001 = startSketchOn(XZ) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude001 = extrude(sketch001, length = 6) -sketch002 = startSketchOn(extrude001, seg01) +sketch002 = startSketchOn(extrude001, face = seg01) |> startProfileAt([-0.5, 0.5], %) |> line(end = [2, 5]) |> line(end = [2, -5]) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude002 = extrude(sketch002, length = 5) -sketch003 = startSketchOn(extrude002, 'END') +sketch003 = startSketchOn(extrude002, face = END) |> startProfileAt([1, 1.5], %) |> line(end = [0.5, 2], tag = $seg02) |> line(end = [1, -2]) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude003 = extrude(sketch003, length = 4) -sketch004 = startSketchOn(extrude003, seg02) +sketch004 = startSketchOn(extrude003, face = seg02) |> startProfileAt([-3, 14], %) |> line(end = [0.5, 1]) |> line(end = [0.5, -2]) diff --git a/rust/kcl-lib/tests/assembly_mixed_units_cubes/artifact_commands.snap b/rust/kcl-lib/tests/assembly_mixed_units_cubes/artifact_commands.snap index 4cf141630..7fd0c0625 100644 --- a/rust/kcl-lib/tests/assembly_mixed_units_cubes/artifact_commands.snap +++ b/rust/kcl-lib/tests/assembly_mixed_units_cubes/artifact_commands.snap @@ -212,7 +212,8 @@ description: Artifact commands assembly_mixed_units_cubes.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -494,7 +495,8 @@ description: Artifact commands assembly_mixed_units_cubes.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/assembly_mixed_units_cubes/ast.snap b/rust/kcl-lib/tests/assembly_mixed_units_cubes/ast.snap index 0cfa8bb02..085576956 100644 --- a/rust/kcl-lib/tests/assembly_mixed_units_cubes/ast.snap +++ b/rust/kcl-lib/tests/assembly_mixed_units_cubes/ast.snap @@ -6,7 +6,7 @@ description: Result of parsing assembly_mixed_units_cubes.kcl "Ok": { "body": [ { - "commentStart": 33, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -15,7 +15,7 @@ description: Result of parsing assembly_mixed_units_cubes.kcl "selector": { "type": "None", "alias": { - "commentStart": 63, + "commentStart": 0, "end": 0, "name": "cubeIn", "start": 0, @@ -27,7 +27,7 @@ description: Result of parsing assembly_mixed_units_cubes.kcl "type": "ImportStatement" }, { - "commentStart": 70, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -36,7 +36,7 @@ description: Result of parsing assembly_mixed_units_cubes.kcl "selector": { "type": "None", "alias": { - "commentStart": 94, + "commentStart": 0, "end": 0, "name": "cubeMm", "start": 0, @@ -48,14 +48,14 @@ description: Result of parsing assembly_mixed_units_cubes.kcl "type": "ImportStatement" }, { - "commentStart": 100, + "commentStart": 0, "end": 0, "expression": { "abs_path": false, - "commentStart": 102, + "commentStart": 0, "end": 0, "name": { - "commentStart": 102, + "commentStart": 0, "end": 0, "name": "cubeIn", "start": 0, @@ -71,14 +71,14 @@ description: Result of parsing assembly_mixed_units_cubes.kcl "type": "ExpressionStatement" }, { - "commentStart": 109, + "commentStart": 0, "end": 0, "expression": { "abs_path": false, - "commentStart": 109, + "commentStart": 0, "end": 0, "name": { - "commentStart": 109, + "commentStart": 0, "end": 0, "name": "cubeMm", "start": 0, @@ -101,7 +101,7 @@ description: Result of parsing assembly_mixed_units_cubes.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 1, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -109,10 +109,10 @@ description: Result of parsing assembly_mixed_units_cubes.kcl }, "properties": [ { - "commentStart": 10, + "commentStart": 0, "end": 0, "key": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -122,10 +122,10 @@ description: Result of parsing assembly_mixed_units_cubes.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 30, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -146,7 +146,7 @@ description: Result of parsing assembly_mixed_units_cubes.kcl "nonCodeNodes": { "1": [ { - "commentStart": 100, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -158,7 +158,7 @@ description: Result of parsing assembly_mixed_units_cubes.kcl }, "startNodes": [ { - "commentStart": 33, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/assembly_mixed_units_cubes/ops.snap b/rust/kcl-lib/tests/assembly_mixed_units_cubes/ops.snap index 3ff4313e5..3715b60d0 100644 --- a/rust/kcl-lib/tests/assembly_mixed_units_cubes/ops.snap +++ b/rust/kcl-lib/tests/assembly_mixed_units_cubes/ops.snap @@ -14,7 +14,7 @@ description: Operations executed assembly_mixed_units_cubes.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" @@ -73,7 +73,7 @@ description: Operations executed assembly_mixed_units_cubes.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/assembly_non_default_units/ast.snap b/rust/kcl-lib/tests/assembly_non_default_units/ast.snap index 761668f62..2eef31e95 100644 --- a/rust/kcl-lib/tests/assembly_non_default_units/ast.snap +++ b/rust/kcl-lib/tests/assembly_non_default_units/ast.snap @@ -6,7 +6,7 @@ description: Result of parsing assembly_non_default_units.kcl "Ok": { "body": [ { - "commentStart": 33, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -25,7 +25,7 @@ description: Result of parsing assembly_non_default_units.kcl "type": "ImportStatement" }, { - "commentStart": 172, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -40,14 +40,14 @@ description: Result of parsing assembly_non_default_units.kcl "type": "ImportStatement" }, { - "commentStart": 191, + "commentStart": 0, "end": 0, "expression": { "abs_path": false, - "commentStart": 193, + "commentStart": 0, "end": 0, "name": { - "commentStart": 193, + "commentStart": 0, "end": 0, "name": "other1", "start": 0, @@ -63,14 +63,14 @@ description: Result of parsing assembly_non_default_units.kcl "type": "ExpressionStatement" }, { - "commentStart": 200, + "commentStart": 0, "end": 0, "expression": { "abs_path": false, - "commentStart": 200, + "commentStart": 0, "end": 0, "name": { - "commentStart": 200, + "commentStart": 0, "end": 0, "name": "other2", "start": 0, @@ -93,7 +93,7 @@ description: Result of parsing assembly_non_default_units.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 1, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -101,10 +101,10 @@ description: Result of parsing assembly_non_default_units.kcl }, "properties": [ { - "commentStart": 10, + "commentStart": 0, "end": 0, "key": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -114,10 +114,10 @@ description: Result of parsing assembly_non_default_units.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 30, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -138,7 +138,7 @@ description: Result of parsing assembly_non_default_units.kcl "nonCodeNodes": { "1": [ { - "commentStart": 191, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -150,7 +150,7 @@ description: Result of parsing assembly_non_default_units.kcl }, "startNodes": [ { - "commentStart": 33, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/assembly_non_default_units/ops.snap b/rust/kcl-lib/tests/assembly_non_default_units/ops.snap index ee50a9d80..e032dbdf2 100644 --- a/rust/kcl-lib/tests/assembly_non_default_units/ops.snap +++ b/rust/kcl-lib/tests/assembly_non_default_units/ops.snap @@ -14,7 +14,7 @@ description: Operations executed assembly_non_default_units.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XZ" @@ -41,7 +41,7 @@ description: Operations executed assembly_non_default_units.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XZ" diff --git a/rust/kcl-lib/tests/bad_units_in_annotation/ast.snap b/rust/kcl-lib/tests/bad_units_in_annotation/ast.snap index 6e916ad6b..4ba2d4cf3 100644 --- a/rust/kcl-lib/tests/bad_units_in_annotation/ast.snap +++ b/rust/kcl-lib/tests/bad_units_in_annotation/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing bad_units_in_annotation.kcl "Ok": { "body": [ { - "commentStart": 33, + "commentStart": 0, "declaration": { - "commentStart": 123, + "commentStart": 0, "end": 0, "id": { - "commentStart": 123, + "commentStart": 0, "end": 0, "name": "oxygenRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 138, + "commentStart": 0, "end": 0, "raw": "0.066", "start": 0, @@ -45,19 +45,19 @@ description: Result of parsing bad_units_in_annotation.kcl "type": "VariableDeclaration" }, { - "commentStart": 143, + "commentStart": 0, "declaration": { - "commentStart": 184, + "commentStart": 0, "end": 0, "id": { - "commentStart": 184, + "commentStart": 0, "end": 0, "name": "hydrogenRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 201, + "commentStart": 0, "end": 0, "raw": "0.053", "start": 0, @@ -78,19 +78,19 @@ description: Result of parsing bad_units_in_annotation.kcl "type": "VariableDeclaration" }, { - "commentStart": 206, + "commentStart": 0, "declaration": { - "commentStart": 248, + "commentStart": 0, "end": 0, "id": { - "commentStart": 248, + "commentStart": 0, "end": 0, "name": "oxygenHydrogenDistance", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 273, + "commentStart": 0, "end": 0, "raw": "0.096", "start": 0, @@ -111,19 +111,19 @@ description: Result of parsing bad_units_in_annotation.kcl "type": "VariableDeclaration" }, { - "commentStart": 278, + "commentStart": 0, "declaration": { - "commentStart": 337, + "commentStart": 0, "end": 0, "id": { - "commentStart": 337, + "commentStart": 0, "end": 0, "name": "bondAngle", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 349, + "commentStart": 0, "end": 0, "raw": "104.5", "start": 0, @@ -144,12 +144,12 @@ description: Result of parsing bad_units_in_annotation.kcl "type": "VariableDeclaration" }, { - "commentStart": 354, + "commentStart": 0, "declaration": { - "commentStart": 437, + "commentStart": 0, "end": 0, "id": { - "commentStart": 437, + "commentStart": 0, "end": 0, "name": "createAtom", "start": 0, @@ -164,7 +164,7 @@ description: Result of parsing bad_units_in_annotation.kcl { "arguments": [ { - "commentStart": 489, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -175,10 +175,10 @@ description: Result of parsing bad_units_in_annotation.kcl ], "callee": { "abs_path": false, - "commentStart": 475, + "commentStart": 0, "end": 0, "name": { - "commentStart": 475, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -188,7 +188,7 @@ description: Result of parsing bad_units_in_annotation.kcl "start": 0, "type": "Name" }, - "commentStart": 475, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -199,7 +199,7 @@ description: Result of parsing bad_units_in_annotation.kcl { "type": "LabeledArg", "label": { - "commentStart": 509, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -207,10 +207,10 @@ description: Result of parsing bad_units_in_annotation.kcl }, "arg": { "abs_path": false, - "commentStart": 518, + "commentStart": 0, "end": 0, "name": { - "commentStart": 518, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -225,7 +225,7 @@ description: Result of parsing bad_units_in_annotation.kcl { "type": "LabeledArg", "label": { - "commentStart": 526, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -233,10 +233,10 @@ description: Result of parsing bad_units_in_annotation.kcl }, "arg": { "abs_path": false, - "commentStart": 535, + "commentStart": 0, "end": 0, "name": { - "commentStart": 535, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -251,10 +251,10 @@ description: Result of parsing bad_units_in_annotation.kcl ], "callee": { "abs_path": false, - "commentStart": 502, + "commentStart": 0, "end": 0, "name": { - "commentStart": 502, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -264,7 +264,7 @@ description: Result of parsing bad_units_in_annotation.kcl "start": 0, "type": "Name" }, - "commentStart": 502, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -276,21 +276,21 @@ description: Result of parsing bad_units_in_annotation.kcl { "type": "LabeledArg", "label": { - "commentStart": 558, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 567, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 567, + "commentStart": 0, "end": 0, "name": { - "commentStart": 567, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -303,7 +303,7 @@ description: Result of parsing bad_units_in_annotation.kcl }, "operator": "*", "right": { - "commentStart": 576, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -322,10 +322,10 @@ description: Result of parsing bad_units_in_annotation.kcl ], "callee": { "abs_path": false, - "commentStart": 550, + "commentStart": 0, "end": 0, "name": { - "commentStart": 550, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -335,7 +335,7 @@ description: Result of parsing bad_units_in_annotation.kcl "start": 0, "type": "Name" }, - "commentStart": 550, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -343,30 +343,30 @@ description: Result of parsing bad_units_in_annotation.kcl "unlabeled": null } ], - "commentStart": 475, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, - "commentStart": 468, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 464, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 447, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 448, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -376,7 +376,7 @@ description: Result of parsing bad_units_in_annotation.kcl { "type": "Parameter", "identifier": { - "commentStart": 456, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -401,12 +401,12 @@ description: Result of parsing bad_units_in_annotation.kcl "type": "VariableDeclaration" }, { - "commentStart": 580, + "commentStart": 0, "declaration": { - "commentStart": 622, + "commentStart": 0, "end": 0, "id": { - "commentStart": 622, + "commentStart": 0, "end": 0, "name": "oxygenAtom", "start": 0, @@ -415,10 +415,10 @@ description: Result of parsing bad_units_in_annotation.kcl "init": { "arguments": [ { - "commentStart": 646, + "commentStart": 0, "elements": [ { - "commentStart": 647, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -430,7 +430,7 @@ description: Result of parsing bad_units_in_annotation.kcl } }, { - "commentStart": 650, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -449,10 +449,10 @@ description: Result of parsing bad_units_in_annotation.kcl }, { "abs_path": false, - "commentStart": 654, + "commentStart": 0, "end": 0, "name": { - "commentStart": 654, + "commentStart": 0, "end": 0, "name": "oxygenRadius", "start": 0, @@ -466,10 +466,10 @@ description: Result of parsing bad_units_in_annotation.kcl ], "callee": { "abs_path": false, - "commentStart": 635, + "commentStart": 0, "end": 0, "name": { - "commentStart": 635, + "commentStart": 0, "end": 0, "name": "createAtom", "start": 0, @@ -479,7 +479,7 @@ description: Result of parsing bad_units_in_annotation.kcl "start": 0, "type": "Name" }, - "commentStart": 635, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -500,26 +500,26 @@ description: Result of parsing bad_units_in_annotation.kcl "type": "VariableDeclaration" }, { - "commentStart": 667, + "commentStart": 0, "declaration": { - "commentStart": 718, + "commentStart": 0, "end": 0, "id": { - "commentStart": 718, + "commentStart": 0, "end": 0, "name": "hydrogenOffsetX", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 736, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 736, + "commentStart": 0, "end": 0, "name": { - "commentStart": 736, + "commentStart": 0, "end": 0, "name": "oxygenHydrogenDistance", "start": 0, @@ -536,14 +536,14 @@ description: Result of parsing bad_units_in_annotation.kcl { "arguments": [ { - "commentStart": 775, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 775, + "commentStart": 0, "end": 0, "name": { - "commentStart": 775, + "commentStart": 0, "end": 0, "name": "bondAngle", "start": 0, @@ -556,7 +556,7 @@ description: Result of parsing bad_units_in_annotation.kcl }, "operator": "/", "right": { - "commentStart": 787, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -574,10 +574,10 @@ description: Result of parsing bad_units_in_annotation.kcl ], "callee": { "abs_path": false, - "commentStart": 765, + "commentStart": 0, "end": 0, "name": { - "commentStart": 765, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -587,7 +587,7 @@ description: Result of parsing bad_units_in_annotation.kcl "start": 0, "type": "Name" }, - "commentStart": 765, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -596,10 +596,10 @@ description: Result of parsing bad_units_in_annotation.kcl ], "callee": { "abs_path": false, - "commentStart": 761, + "commentStart": 0, "end": 0, "name": { - "commentStart": 761, + "commentStart": 0, "end": 0, "name": "cos", "start": 0, @@ -609,7 +609,7 @@ description: Result of parsing bad_units_in_annotation.kcl "start": 0, "type": "Name" }, - "commentStart": 761, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -634,26 +634,26 @@ description: Result of parsing bad_units_in_annotation.kcl "type": "VariableDeclaration" }, { - "commentStart": 791, + "commentStart": 0, "declaration": { - "commentStart": 791, + "commentStart": 0, "end": 0, "id": { - "commentStart": 791, + "commentStart": 0, "end": 0, "name": "hydrogenOffsetY", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 809, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 809, + "commentStart": 0, "end": 0, "name": { - "commentStart": 809, + "commentStart": 0, "end": 0, "name": "oxygenHydrogenDistance", "start": 0, @@ -670,14 +670,14 @@ description: Result of parsing bad_units_in_annotation.kcl { "arguments": [ { - "commentStart": 848, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 848, + "commentStart": 0, "end": 0, "name": { - "commentStart": 848, + "commentStart": 0, "end": 0, "name": "bondAngle", "start": 0, @@ -690,7 +690,7 @@ description: Result of parsing bad_units_in_annotation.kcl }, "operator": "/", "right": { - "commentStart": 860, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -708,10 +708,10 @@ description: Result of parsing bad_units_in_annotation.kcl ], "callee": { "abs_path": false, - "commentStart": 838, + "commentStart": 0, "end": 0, "name": { - "commentStart": 838, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -721,7 +721,7 @@ description: Result of parsing bad_units_in_annotation.kcl "start": 0, "type": "Name" }, - "commentStart": 838, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -730,10 +730,10 @@ description: Result of parsing bad_units_in_annotation.kcl ], "callee": { "abs_path": false, - "commentStart": 834, + "commentStart": 0, "end": 0, "name": { - "commentStart": 834, + "commentStart": 0, "end": 0, "name": "sin", "start": 0, @@ -743,7 +743,7 @@ description: Result of parsing bad_units_in_annotation.kcl "start": 0, "type": "Name" }, - "commentStart": 834, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -763,12 +763,12 @@ description: Result of parsing bad_units_in_annotation.kcl "type": "VariableDeclaration" }, { - "commentStart": 863, + "commentStart": 0, "declaration": { - "commentStart": 894, + "commentStart": 0, "end": 0, "id": { - "commentStart": 894, + "commentStart": 0, "end": 0, "name": "hydrogenAtom1", "start": 0, @@ -777,14 +777,14 @@ description: Result of parsing bad_units_in_annotation.kcl "init": { "arguments": [ { - "commentStart": 921, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 922, + "commentStart": 0, "end": 0, "name": { - "commentStart": 922, + "commentStart": 0, "end": 0, "name": "hydrogenOffsetX", "start": 0, @@ -797,10 +797,10 @@ description: Result of parsing bad_units_in_annotation.kcl }, { "abs_path": false, - "commentStart": 939, + "commentStart": 0, "end": 0, "name": { - "commentStart": 939, + "commentStart": 0, "end": 0, "name": "hydrogenOffsetY", "start": 0, @@ -819,10 +819,10 @@ description: Result of parsing bad_units_in_annotation.kcl }, { "abs_path": false, - "commentStart": 957, + "commentStart": 0, "end": 0, "name": { - "commentStart": 957, + "commentStart": 0, "end": 0, "name": "hydrogenRadius", "start": 0, @@ -836,10 +836,10 @@ description: Result of parsing bad_units_in_annotation.kcl ], "callee": { "abs_path": false, - "commentStart": 910, + "commentStart": 0, "end": 0, "name": { - "commentStart": 910, + "commentStart": 0, "end": 0, "name": "createAtom", "start": 0, @@ -849,7 +849,7 @@ description: Result of parsing bad_units_in_annotation.kcl "start": 0, "type": "Name" }, - "commentStart": 910, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -870,12 +870,12 @@ description: Result of parsing bad_units_in_annotation.kcl "type": "VariableDeclaration" }, { - "commentStart": 973, + "commentStart": 0, "declaration": { - "commentStart": 973, + "commentStart": 0, "end": 0, "id": { - "commentStart": 973, + "commentStart": 0, "end": 0, "name": "hydrogenAtom2", "start": 0, @@ -884,15 +884,15 @@ description: Result of parsing bad_units_in_annotation.kcl "init": { "arguments": [ { - "commentStart": 1000, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 1002, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1002, + "commentStart": 0, "end": 0, "name": "hydrogenOffsetX", "start": 0, @@ -903,7 +903,7 @@ description: Result of parsing bad_units_in_annotation.kcl "type": "Name", "type": "Name" }, - "commentStart": 1001, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -912,10 +912,10 @@ description: Result of parsing bad_units_in_annotation.kcl }, { "abs_path": false, - "commentStart": 1019, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1019, + "commentStart": 0, "end": 0, "name": "hydrogenOffsetY", "start": 0, @@ -934,10 +934,10 @@ description: Result of parsing bad_units_in_annotation.kcl }, { "abs_path": false, - "commentStart": 1037, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1037, + "commentStart": 0, "end": 0, "name": "hydrogenRadius", "start": 0, @@ -951,10 +951,10 @@ description: Result of parsing bad_units_in_annotation.kcl ], "callee": { "abs_path": false, - "commentStart": 989, + "commentStart": 0, "end": 0, "name": { - "commentStart": 989, + "commentStart": 0, "end": 0, "name": "createAtom", "start": 0, @@ -964,7 +964,7 @@ description: Result of parsing bad_units_in_annotation.kcl "start": 0, "type": "Name" }, - "commentStart": 989, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -987,7 +987,7 @@ description: Result of parsing bad_units_in_annotation.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 1, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -995,10 +995,10 @@ description: Result of parsing bad_units_in_annotation.kcl }, "properties": [ { - "commentStart": 10, + "commentStart": 0, "end": 0, "key": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -1008,10 +1008,10 @@ description: Result of parsing bad_units_in_annotation.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 30, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30, + "commentStart": 0, "end": 0, "name": "nm", "start": 0, @@ -1032,7 +1032,7 @@ description: Result of parsing bad_units_in_annotation.kcl "nonCodeNodes": { "0": [ { - "commentStart": 143, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1045,7 +1045,7 @@ description: Result of parsing bad_units_in_annotation.kcl ], "1": [ { - "commentStart": 206, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1058,7 +1058,7 @@ description: Result of parsing bad_units_in_annotation.kcl ], "2": [ { - "commentStart": 278, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1071,7 +1071,7 @@ description: Result of parsing bad_units_in_annotation.kcl ], "3": [ { - "commentStart": 354, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1082,7 +1082,7 @@ description: Result of parsing bad_units_in_annotation.kcl } }, { - "commentStart": 379, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1094,7 +1094,7 @@ description: Result of parsing bad_units_in_annotation.kcl }, "startNodes": [ { - "commentStart": 33, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/artifact_commands.snap b/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/artifact_commands.snap index db68c4afd..436222bca 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/artifact_commands.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands basic_fillet_cube_close_opposite.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/ast.snap b/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/ast.snap index c86a40b95..77b1f06e8 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/ast.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl { "arguments": [ { - "commentStart": 24, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl ], "callee": { "abs_path": false, - "commentStart": 10, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl "start": 0, "type": "Name" }, - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl { "arguments": [ { - "commentStart": 50, + "commentStart": 0, "elements": [ { - "commentStart": 51, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl } }, { - "commentStart": 54, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl "type": "ArrayExpression" }, { - "commentStart": 58, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl ], "callee": { "abs_path": false, - "commentStart": 35, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl "start": 0, "type": "Name" }, - "commentStart": 35, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +121,17 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl { "type": "LabeledArg", "label": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 77, + "commentStart": 0, "elements": [ { - "commentStart": 78, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -143,7 +143,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl } }, { - "commentStart": 81, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -164,14 +164,14 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl { "type": "LabeledArg", "label": { - "commentStart": 86, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 92, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -182,10 +182,10 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl ], "callee": { "abs_path": false, - "commentStart": 66, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -195,7 +195,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl "start": 0, "type": "Name" }, - "commentStart": 66, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -207,17 +207,17 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl { "type": "LabeledArg", "label": { - "commentStart": 110, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 116, + "commentStart": 0, "elements": [ { - "commentStart": 117, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -229,7 +229,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl } }, { - "commentStart": 121, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -250,10 +250,10 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl ], "callee": { "abs_path": false, - "commentStart": 105, + "commentStart": 0, "end": 0, "name": { - "commentStart": 105, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -263,7 +263,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl "start": 0, "type": "Name" }, - "commentStart": 105, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -275,17 +275,17 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl { "type": "LabeledArg", "label": { - "commentStart": 135, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 141, + "commentStart": 0, "elements": [ { - "commentStart": 142, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -298,7 +298,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl }, { "argument": { - "commentStart": 146, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -309,7 +309,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl "suffix": "None" } }, - "commentStart": 145, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -326,14 +326,14 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl { "type": "LabeledArg", "label": { - "commentStart": 151, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 157, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -344,10 +344,10 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl ], "callee": { "abs_path": false, - "commentStart": 130, + "commentStart": 0, "end": 0, "name": { - "commentStart": 130, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -357,7 +357,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl "start": 0, "type": "Name" }, - "commentStart": 130, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -369,14 +369,14 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl { "type": "LabeledArg", "label": { - "commentStart": 177, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 183, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -387,10 +387,10 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl ], "callee": { "abs_path": false, - "commentStart": 171, + "commentStart": 0, "end": 0, "name": { - "commentStart": 171, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -400,7 +400,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl "start": 0, "type": "Name" }, - "commentStart": 171, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -412,14 +412,14 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl { "type": "LabeledArg", "label": { - "commentStart": 205, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 214, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -434,10 +434,10 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl ], "callee": { "abs_path": false, - "commentStart": 197, + "commentStart": 0, "end": 0, "name": { - "commentStart": 197, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -447,7 +447,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl "start": 0, "type": "Name" }, - "commentStart": 197, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -459,14 +459,14 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl { "type": "LabeledArg", "label": { - "commentStart": 230, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 239, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -481,21 +481,21 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl { "type": "LabeledArg", "label": { - "commentStart": 242, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 249, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 250, + "commentStart": 0, "end": 0, "name": { - "commentStart": 250, + "commentStart": 0, "end": 0, "name": "thing3", "start": 0, @@ -510,10 +510,10 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl "arguments": [ { "abs_path": false, - "commentStart": 274, + "commentStart": 0, "end": 0, "name": { - "commentStart": 274, + "commentStart": 0, "end": 0, "name": "thing3", "start": 0, @@ -527,10 +527,10 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl ], "callee": { "abs_path": false, - "commentStart": 258, + "commentStart": 0, "end": 0, "name": { - "commentStart": 258, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -540,7 +540,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl "start": 0, "type": "Name" }, - "commentStart": 258, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -556,10 +556,10 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl ], "callee": { "abs_path": false, - "commentStart": 223, + "commentStart": 0, "end": 0, "name": { - "commentStart": 223, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -569,7 +569,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl "start": 0, "type": "Name" }, - "commentStart": 223, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -577,7 +577,7 @@ description: Result of parsing basic_fillet_cube_close_opposite.kcl "unlabeled": null } ], - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/ops.snap b/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/ops.snap index cc337f525..b5062f52f 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/ops.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/ops.snap @@ -5,7 +5,7 @@ description: Operations executed basic_fillet_cube_close_opposite.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/program_memory.snap b/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/program_memory.snap index 9b96ad94b..e2e28c8a9 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/program_memory.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_close_opposite/program_memory.snap @@ -164,22 +164,34 @@ description: Variables in memory after executing basic_fillet_cube_close_opposit "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -230,14 +242,36 @@ description: Variables in memory after executing basic_fillet_cube_close_opposit { "type": "fillet", "id": "[uuid]", - "radius": 2.0, + "radius": { + "n": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 2.0, + "radius": { + "n": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } diff --git a/rust/kcl-lib/tests/basic_fillet_cube_end/artifact_commands.snap b/rust/kcl-lib/tests/basic_fillet_cube_end/artifact_commands.snap index 26400b300..9add865fc 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_end/artifact_commands.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_end/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands basic_fillet_cube_end.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/basic_fillet_cube_end/ast.snap b/rust/kcl-lib/tests/basic_fillet_cube_end/ast.snap index ee830d7a9..df3f4aaa2 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_end/ast.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_end/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing basic_fillet_cube_end.kcl { "arguments": [ { - "commentStart": 24, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing basic_fillet_cube_end.kcl ], "callee": { "abs_path": false, - "commentStart": 10, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing basic_fillet_cube_end.kcl "start": 0, "type": "Name" }, - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing basic_fillet_cube_end.kcl { "arguments": [ { - "commentStart": 50, + "commentStart": 0, "elements": [ { - "commentStart": 51, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing basic_fillet_cube_end.kcl } }, { - "commentStart": 54, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing basic_fillet_cube_end.kcl "type": "ArrayExpression" }, { - "commentStart": 58, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing basic_fillet_cube_end.kcl ], "callee": { "abs_path": false, - "commentStart": 35, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing basic_fillet_cube_end.kcl "start": 0, "type": "Name" }, - "commentStart": 35, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +121,17 @@ description: Result of parsing basic_fillet_cube_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 77, + "commentStart": 0, "elements": [ { - "commentStart": 78, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -143,7 +143,7 @@ description: Result of parsing basic_fillet_cube_end.kcl } }, { - "commentStart": 81, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -164,14 +164,14 @@ description: Result of parsing basic_fillet_cube_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 86, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 92, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -182,10 +182,10 @@ description: Result of parsing basic_fillet_cube_end.kcl ], "callee": { "abs_path": false, - "commentStart": 66, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -195,7 +195,7 @@ description: Result of parsing basic_fillet_cube_end.kcl "start": 0, "type": "Name" }, - "commentStart": 66, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -207,17 +207,17 @@ description: Result of parsing basic_fillet_cube_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 110, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 116, + "commentStart": 0, "elements": [ { - "commentStart": 117, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -229,7 +229,7 @@ description: Result of parsing basic_fillet_cube_end.kcl } }, { - "commentStart": 121, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -250,10 +250,10 @@ description: Result of parsing basic_fillet_cube_end.kcl ], "callee": { "abs_path": false, - "commentStart": 105, + "commentStart": 0, "end": 0, "name": { - "commentStart": 105, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -263,7 +263,7 @@ description: Result of parsing basic_fillet_cube_end.kcl "start": 0, "type": "Name" }, - "commentStart": 105, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -275,17 +275,17 @@ description: Result of parsing basic_fillet_cube_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 135, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 141, + "commentStart": 0, "elements": [ { - "commentStart": 142, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -298,7 +298,7 @@ description: Result of parsing basic_fillet_cube_end.kcl }, { "argument": { - "commentStart": 146, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -309,7 +309,7 @@ description: Result of parsing basic_fillet_cube_end.kcl "suffix": "None" } }, - "commentStart": 145, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -326,14 +326,14 @@ description: Result of parsing basic_fillet_cube_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 151, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 157, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -344,10 +344,10 @@ description: Result of parsing basic_fillet_cube_end.kcl ], "callee": { "abs_path": false, - "commentStart": 130, + "commentStart": 0, "end": 0, "name": { - "commentStart": 130, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -357,7 +357,7 @@ description: Result of parsing basic_fillet_cube_end.kcl "start": 0, "type": "Name" }, - "commentStart": 130, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -367,7 +367,7 @@ description: Result of parsing basic_fillet_cube_end.kcl { "arguments": [ { - "commentStart": 177, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -376,10 +376,10 @@ description: Result of parsing basic_fillet_cube_end.kcl ], "callee": { "abs_path": false, - "commentStart": 171, + "commentStart": 0, "end": 0, "name": { - "commentStart": 171, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -389,7 +389,7 @@ description: Result of parsing basic_fillet_cube_end.kcl "start": 0, "type": "Name" }, - "commentStart": 171, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -400,14 +400,14 @@ description: Result of parsing basic_fillet_cube_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 193, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 202, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -422,10 +422,10 @@ description: Result of parsing basic_fillet_cube_end.kcl ], "callee": { "abs_path": false, - "commentStart": 185, + "commentStart": 0, "end": 0, "name": { - "commentStart": 185, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -435,7 +435,7 @@ description: Result of parsing basic_fillet_cube_end.kcl "start": 0, "type": "Name" }, - "commentStart": 185, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -447,14 +447,14 @@ description: Result of parsing basic_fillet_cube_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 218, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 227, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -469,21 +469,21 @@ description: Result of parsing basic_fillet_cube_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 230, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 237, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 238, + "commentStart": 0, "end": 0, "name": { - "commentStart": 238, + "commentStart": 0, "end": 0, "name": "thing", "start": 0, @@ -498,10 +498,10 @@ description: Result of parsing basic_fillet_cube_end.kcl "arguments": [ { "abs_path": false, - "commentStart": 261, + "commentStart": 0, "end": 0, "name": { - "commentStart": 261, + "commentStart": 0, "end": 0, "name": "thing", "start": 0, @@ -515,10 +515,10 @@ description: Result of parsing basic_fillet_cube_end.kcl ], "callee": { "abs_path": false, - "commentStart": 245, + "commentStart": 0, "end": 0, "name": { - "commentStart": 245, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -528,7 +528,7 @@ description: Result of parsing basic_fillet_cube_end.kcl "start": 0, "type": "Name" }, - "commentStart": 245, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -544,10 +544,10 @@ description: Result of parsing basic_fillet_cube_end.kcl ], "callee": { "abs_path": false, - "commentStart": 211, + "commentStart": 0, "end": 0, "name": { - "commentStart": 211, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -557,7 +557,7 @@ description: Result of parsing basic_fillet_cube_end.kcl "start": 0, "type": "Name" }, - "commentStart": 211, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -565,7 +565,7 @@ description: Result of parsing basic_fillet_cube_end.kcl "unlabeled": null } ], - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/basic_fillet_cube_end/ops.snap b/rust/kcl-lib/tests/basic_fillet_cube_end/ops.snap index 5c0166e8c..460bfae44 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_end/ops.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_end/ops.snap @@ -5,7 +5,7 @@ description: Operations executed basic_fillet_cube_end.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/basic_fillet_cube_end/program_memory.snap b/rust/kcl-lib/tests/basic_fillet_cube_end/program_memory.snap index c943835f9..2894abd45 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_end/program_memory.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_end/program_memory.snap @@ -152,22 +152,34 @@ description: Variables in memory after executing basic_fillet_cube_end.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -214,14 +226,36 @@ description: Variables in memory after executing basic_fillet_cube_end.kcl { "type": "fillet", "id": "[uuid]", - "radius": 2.0, + "radius": { + "n": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 2.0, + "radius": { + "n": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } diff --git a/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/artifact_commands.snap b/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/artifact_commands.snap index 651745e1d..54a4fa7dd 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/artifact_commands.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands basic_fillet_cube_next_adjacent.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/ast.snap b/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/ast.snap index e67f98143..d519bb631 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/ast.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl { "arguments": [ { - "commentStart": 24, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 10, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl { "arguments": [ { - "commentStart": 50, + "commentStart": 0, "elements": [ { - "commentStart": 51, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl } }, { - "commentStart": 54, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl "type": "ArrayExpression" }, { - "commentStart": 58, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 35, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 35, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +121,17 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 77, + "commentStart": 0, "elements": [ { - "commentStart": 78, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -143,7 +143,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl } }, { - "commentStart": 81, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -164,14 +164,14 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 86, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 92, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -182,10 +182,10 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 66, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -195,7 +195,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 66, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -207,17 +207,17 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 110, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 116, + "commentStart": 0, "elements": [ { - "commentStart": 117, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -229,7 +229,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl } }, { - "commentStart": 121, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -250,14 +250,14 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 125, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 131, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -268,10 +268,10 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 105, + "commentStart": 0, "end": 0, "name": { - "commentStart": 105, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -281,7 +281,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 105, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -293,17 +293,17 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 150, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 156, + "commentStart": 0, "elements": [ { - "commentStart": 157, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -316,7 +316,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl }, { "argument": { - "commentStart": 161, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -327,7 +327,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl "suffix": "None" } }, - "commentStart": 160, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -344,14 +344,14 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 166, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 172, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -362,10 +362,10 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 145, + "commentStart": 0, "end": 0, "name": { - "commentStart": 145, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -375,7 +375,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 145, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -387,14 +387,14 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 192, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 198, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -405,10 +405,10 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 186, + "commentStart": 0, "end": 0, "name": { - "commentStart": 186, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -418,7 +418,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 186, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -430,14 +430,14 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 220, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 229, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -452,10 +452,10 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 212, + "commentStart": 0, "end": 0, "name": { - "commentStart": 212, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -465,7 +465,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 212, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -477,14 +477,14 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 245, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 254, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -499,23 +499,23 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 257, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 264, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 285, + "commentStart": 0, "end": 0, "name": { - "commentStart": 285, + "commentStart": 0, "end": 0, "name": "thing3", "start": 0, @@ -529,10 +529,10 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 265, + "commentStart": 0, "end": 0, "name": { - "commentStart": 265, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -542,7 +542,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 265, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -558,10 +558,10 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 238, + "commentStart": 0, "end": 0, "name": { - "commentStart": 238, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -571,7 +571,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 238, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -579,7 +579,7 @@ description: Result of parsing basic_fillet_cube_next_adjacent.kcl "unlabeled": null } ], - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/ops.snap b/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/ops.snap index 12bdf8476..937c7d07b 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/ops.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/ops.snap @@ -5,7 +5,7 @@ description: Operations executed basic_fillet_cube_next_adjacent.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/program_memory.snap b/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/program_memory.snap index 54bb2eeb6..cb5f74be4 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/program_memory.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_next_adjacent/program_memory.snap @@ -176,22 +176,34 @@ description: Variables in memory after executing basic_fillet_cube_next_adjacent "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -246,7 +258,18 @@ description: Variables in memory after executing basic_fillet_cube_next_adjacent { "type": "fillet", "id": "[uuid]", - "radius": 2.0, + "radius": { + "n": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } diff --git a/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/artifact_commands.snap b/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/artifact_commands.snap index 5909434e8..0951a3672 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/artifact_commands.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands basic_fillet_cube_previous_adjacent.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/ast.snap b/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/ast.snap index 1fac9aae4..d2adda442 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/ast.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl { "arguments": [ { - "commentStart": 24, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 10, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl { "arguments": [ { - "commentStart": 50, + "commentStart": 0, "elements": [ { - "commentStart": 51, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl } }, { - "commentStart": 54, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl "type": "ArrayExpression" }, { - "commentStart": 58, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 35, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 35, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +121,17 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 77, + "commentStart": 0, "elements": [ { - "commentStart": 78, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -143,7 +143,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl } }, { - "commentStart": 81, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -164,14 +164,14 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 86, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 92, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -182,10 +182,10 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 66, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -195,7 +195,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 66, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -207,17 +207,17 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 110, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 116, + "commentStart": 0, "elements": [ { - "commentStart": 117, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -229,7 +229,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl } }, { - "commentStart": 121, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -250,14 +250,14 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 125, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 131, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -268,10 +268,10 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 105, + "commentStart": 0, "end": 0, "name": { - "commentStart": 105, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -281,7 +281,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 105, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -293,17 +293,17 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 150, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 156, + "commentStart": 0, "elements": [ { - "commentStart": 157, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -316,7 +316,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl }, { "argument": { - "commentStart": 161, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -327,7 +327,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl "suffix": "None" } }, - "commentStart": 160, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -344,14 +344,14 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 166, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 172, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -362,10 +362,10 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 145, + "commentStart": 0, "end": 0, "name": { - "commentStart": 145, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -375,7 +375,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 145, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -387,14 +387,14 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 192, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 198, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -405,10 +405,10 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 186, + "commentStart": 0, "end": 0, "name": { - "commentStart": 186, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -418,7 +418,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 186, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -430,14 +430,14 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 220, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 229, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -452,10 +452,10 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 212, + "commentStart": 0, "end": 0, "name": { - "commentStart": 212, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -465,7 +465,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 212, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -477,14 +477,14 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 245, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 254, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -499,23 +499,23 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl { "type": "LabeledArg", "label": { - "commentStart": 257, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 264, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 289, + "commentStart": 0, "end": 0, "name": { - "commentStart": 289, + "commentStart": 0, "end": 0, "name": "thing3", "start": 0, @@ -529,10 +529,10 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 265, + "commentStart": 0, "end": 0, "name": { - "commentStart": 265, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -542,7 +542,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 265, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -558,10 +558,10 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl ], "callee": { "abs_path": false, - "commentStart": 238, + "commentStart": 0, "end": 0, "name": { - "commentStart": 238, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -571,7 +571,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl "start": 0, "type": "Name" }, - "commentStart": 238, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -579,7 +579,7 @@ description: Result of parsing basic_fillet_cube_previous_adjacent.kcl "unlabeled": null } ], - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/ops.snap b/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/ops.snap index 364bbb6f9..01167f5fe 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/ops.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/ops.snap @@ -5,7 +5,7 @@ description: Operations executed basic_fillet_cube_previous_adjacent.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/program_memory.snap b/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/program_memory.snap index 25e08a5a9..8fc08a03c 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/program_memory.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_previous_adjacent/program_memory.snap @@ -176,22 +176,34 @@ description: Variables in memory after executing basic_fillet_cube_previous_adja "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -246,7 +258,18 @@ description: Variables in memory after executing basic_fillet_cube_previous_adja { "type": "fillet", "id": "[uuid]", - "radius": 2.0, + "radius": { + "n": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } diff --git a/rust/kcl-lib/tests/basic_fillet_cube_start/artifact_commands.snap b/rust/kcl-lib/tests/basic_fillet_cube_start/artifact_commands.snap index 3ce091a41..1fd1a30fa 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_start/artifact_commands.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_start/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands basic_fillet_cube_start.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/basic_fillet_cube_start/ast.snap b/rust/kcl-lib/tests/basic_fillet_cube_start/ast.snap index fcd89281b..898910108 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_start/ast.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_start/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing basic_fillet_cube_start.kcl { "arguments": [ { - "commentStart": 24, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing basic_fillet_cube_start.kcl ], "callee": { "abs_path": false, - "commentStart": 10, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing basic_fillet_cube_start.kcl "start": 0, "type": "Name" }, - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing basic_fillet_cube_start.kcl { "arguments": [ { - "commentStart": 50, + "commentStart": 0, "elements": [ { - "commentStart": 51, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing basic_fillet_cube_start.kcl } }, { - "commentStart": 54, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing basic_fillet_cube_start.kcl "type": "ArrayExpression" }, { - "commentStart": 58, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing basic_fillet_cube_start.kcl ], "callee": { "abs_path": false, - "commentStart": 35, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing basic_fillet_cube_start.kcl "start": 0, "type": "Name" }, - "commentStart": 35, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +121,17 @@ description: Result of parsing basic_fillet_cube_start.kcl { "type": "LabeledArg", "label": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 77, + "commentStart": 0, "elements": [ { - "commentStart": 78, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -143,7 +143,7 @@ description: Result of parsing basic_fillet_cube_start.kcl } }, { - "commentStart": 81, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -164,14 +164,14 @@ description: Result of parsing basic_fillet_cube_start.kcl { "type": "LabeledArg", "label": { - "commentStart": 86, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 92, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -182,10 +182,10 @@ description: Result of parsing basic_fillet_cube_start.kcl ], "callee": { "abs_path": false, - "commentStart": 66, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -195,7 +195,7 @@ description: Result of parsing basic_fillet_cube_start.kcl "start": 0, "type": "Name" }, - "commentStart": 66, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -207,17 +207,17 @@ description: Result of parsing basic_fillet_cube_start.kcl { "type": "LabeledArg", "label": { - "commentStart": 110, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 116, + "commentStart": 0, "elements": [ { - "commentStart": 117, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -229,7 +229,7 @@ description: Result of parsing basic_fillet_cube_start.kcl } }, { - "commentStart": 121, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -250,10 +250,10 @@ description: Result of parsing basic_fillet_cube_start.kcl ], "callee": { "abs_path": false, - "commentStart": 105, + "commentStart": 0, "end": 0, "name": { - "commentStart": 105, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -263,7 +263,7 @@ description: Result of parsing basic_fillet_cube_start.kcl "start": 0, "type": "Name" }, - "commentStart": 105, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -275,17 +275,17 @@ description: Result of parsing basic_fillet_cube_start.kcl { "type": "LabeledArg", "label": { - "commentStart": 135, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 141, + "commentStart": 0, "elements": [ { - "commentStart": 142, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -298,7 +298,7 @@ description: Result of parsing basic_fillet_cube_start.kcl }, { "argument": { - "commentStart": 146, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -309,7 +309,7 @@ description: Result of parsing basic_fillet_cube_start.kcl "suffix": "None" } }, - "commentStart": 145, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -326,14 +326,14 @@ description: Result of parsing basic_fillet_cube_start.kcl { "type": "LabeledArg", "label": { - "commentStart": 151, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 157, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -344,10 +344,10 @@ description: Result of parsing basic_fillet_cube_start.kcl ], "callee": { "abs_path": false, - "commentStart": 130, + "commentStart": 0, "end": 0, "name": { - "commentStart": 130, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -357,7 +357,7 @@ description: Result of parsing basic_fillet_cube_start.kcl "start": 0, "type": "Name" }, - "commentStart": 130, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -367,7 +367,7 @@ description: Result of parsing basic_fillet_cube_start.kcl { "arguments": [ { - "commentStart": 177, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -376,10 +376,10 @@ description: Result of parsing basic_fillet_cube_start.kcl ], "callee": { "abs_path": false, - "commentStart": 171, + "commentStart": 0, "end": 0, "name": { - "commentStart": 171, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -389,7 +389,7 @@ description: Result of parsing basic_fillet_cube_start.kcl "start": 0, "type": "Name" }, - "commentStart": 171, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -400,14 +400,14 @@ description: Result of parsing basic_fillet_cube_start.kcl { "type": "LabeledArg", "label": { - "commentStart": 193, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 202, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -422,10 +422,10 @@ description: Result of parsing basic_fillet_cube_start.kcl ], "callee": { "abs_path": false, - "commentStart": 185, + "commentStart": 0, "end": 0, "name": { - "commentStart": 185, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -435,7 +435,7 @@ description: Result of parsing basic_fillet_cube_start.kcl "start": 0, "type": "Name" }, - "commentStart": 185, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -447,14 +447,14 @@ description: Result of parsing basic_fillet_cube_start.kcl { "type": "LabeledArg", "label": { - "commentStart": 218, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 227, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -469,21 +469,21 @@ description: Result of parsing basic_fillet_cube_start.kcl { "type": "LabeledArg", "label": { - "commentStart": 230, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 237, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 238, + "commentStart": 0, "end": 0, "name": { - "commentStart": 238, + "commentStart": 0, "end": 0, "name": "thing", "start": 0, @@ -496,10 +496,10 @@ description: Result of parsing basic_fillet_cube_start.kcl }, { "abs_path": false, - "commentStart": 245, + "commentStart": 0, "end": 0, "name": { - "commentStart": 245, + "commentStart": 0, "end": 0, "name": "thing2", "start": 0, @@ -520,10 +520,10 @@ description: Result of parsing basic_fillet_cube_start.kcl ], "callee": { "abs_path": false, - "commentStart": 211, + "commentStart": 0, "end": 0, "name": { - "commentStart": 211, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -533,7 +533,7 @@ description: Result of parsing basic_fillet_cube_start.kcl "start": 0, "type": "Name" }, - "commentStart": 211, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -541,7 +541,7 @@ description: Result of parsing basic_fillet_cube_start.kcl "unlabeled": null } ], - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/basic_fillet_cube_start/ops.snap b/rust/kcl-lib/tests/basic_fillet_cube_start/ops.snap index c73ca04d6..879134dc7 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_start/ops.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_start/ops.snap @@ -5,7 +5,7 @@ description: Operations executed basic_fillet_cube_start.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/basic_fillet_cube_start/program_memory.snap b/rust/kcl-lib/tests/basic_fillet_cube_start/program_memory.snap index 680ba705c..d796ceaf2 100644 --- a/rust/kcl-lib/tests/basic_fillet_cube_start/program_memory.snap +++ b/rust/kcl-lib/tests/basic_fillet_cube_start/program_memory.snap @@ -152,22 +152,34 @@ description: Variables in memory after executing basic_fillet_cube_start.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -214,14 +226,36 @@ description: Variables in memory after executing basic_fillet_cube_start.kcl { "type": "fillet", "id": "[uuid]", - "radius": 2.0, + "radius": { + "n": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 2.0, + "radius": { + "n": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } diff --git a/rust/kcl-lib/tests/big_number_angle_to_match_length_x/artifact_commands.snap b/rust/kcl-lib/tests/big_number_angle_to_match_length_x/artifact_commands.snap index 7f9c6109a..46c95b4a0 100644 --- a/rust/kcl-lib/tests/big_number_angle_to_match_length_x/artifact_commands.snap +++ b/rust/kcl-lib/tests/big_number_angle_to_match_length_x/artifact_commands.snap @@ -162,7 +162,8 @@ description: Artifact commands big_number_angle_to_match_length_x.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/big_number_angle_to_match_length_x/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/big_number_angle_to_match_length_x/artifact_graph_flowchart.snap.md index 054d9e696..b302647c1 100644 --- a/rust/kcl-lib/tests/big_number_angle_to_match_length_x/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/big_number_angle_to_match_length_x/artifact_graph_flowchart.snap.md @@ -3,12 +3,12 @@ flowchart LR subgraph path2 [Path] 2["Path
[35, 60, 0]"] 3["Segment
[66, 101, 0]"] - 4["Segment
[107, 163, 0]"] - 5["Segment
[169, 177, 0]"] + 4["Segment
[107, 178, 0]"] + 5["Segment
[184, 192, 0]"] 6[Solid2d] end 1["Plane
[10, 29, 0]"] - 7["Sweep Extrusion
[183, 203, 0]"] + 7["Sweep Extrusion
[198, 218, 0]"] 8[Wall] 9[Wall] 10[Wall] diff --git a/rust/kcl-lib/tests/big_number_angle_to_match_length_x/ast.snap b/rust/kcl-lib/tests/big_number_angle_to_match_length_x/ast.snap index 9bbb2a990..345fb087f 100644 --- a/rust/kcl-lib/tests/big_number_angle_to_match_length_x/ast.snap +++ b/rust/kcl-lib/tests/big_number_angle_to_match_length_x/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl { "arguments": [ { - "commentStart": 24, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl ], "callee": { "abs_path": false, - "commentStart": 10, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl "start": 0, "type": "Name" }, - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl { "arguments": [ { - "commentStart": 50, + "commentStart": 0, "elements": [ { - "commentStart": 51, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl } }, { - "commentStart": 54, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl "type": "ArrayExpression" }, { - "commentStart": 58, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl ], "callee": { "abs_path": false, - "commentStart": 35, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl "start": 0, "type": "Name" }, - "commentStart": 35, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +121,17 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl { "type": "LabeledArg", "label": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 77, + "commentStart": 0, "elements": [ { - "commentStart": 78, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -143,7 +143,7 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl } }, { - "commentStart": 81, + "commentStart": 0, "end": 0, "raw": "3.82", "start": 0, @@ -164,14 +164,14 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl { "type": "LabeledArg", "label": { - "commentStart": 88, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 94, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -182,10 +182,10 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl ], "callee": { "abs_path": false, - "commentStart": 66, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -195,7 +195,7 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl "start": 0, "type": "Name" }, - "commentStart": 66, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -205,109 +205,113 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl { "arguments": [ { - "commentStart": 121, - "elements": [ - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 143, - "end": 0, - "name": { - "commentStart": 143, - "end": 0, - "name": "seg01", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 150, - "end": 0, - "raw": "3", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 3.0, - "suffix": "None" - } - }, - { - "commentStart": 153, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { "abs_path": false, - "commentStart": 123, + "commentStart": 0, "end": 0, "name": { - "commentStart": 123, + "commentStart": 0, "end": 0, - "name": "angleToMatchLengthX", + "name": "seg01", "start": 0, "type": "Identifier" }, "path": [], "start": 0, + "type": "Name", "type": "Name" }, - "commentStart": 123, + { + "commentStart": 0, + "end": 0, + "raw": "3", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 3.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angleToMatchLengthX", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "Name" }, - "commentStart": 122, + "commentStart": 0, "end": 0, - "operator": "-", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "type": "CallExpression", + "type": "CallExpression" }, - { - "commentStart": 157, - "end": 0, - "raw": "3", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 3.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } }, { - "commentStart": 161, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "3", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 3.0, + "suffix": "None" + } + } } ], "callee": { "abs_path": false, - "commentStart": 107, + "commentStart": 0, "end": 0, "name": { - "commentStart": 107, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -315,16 +319,17 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl "start": 0, "type": "Name" }, - "commentStart": 107, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 175, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -333,10 +338,10 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl ], "callee": { "abs_path": false, - "commentStart": 169, + "commentStart": 0, "end": 0, "name": { - "commentStart": 169, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -346,7 +351,7 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl "start": 0, "type": "Name" }, - "commentStart": 169, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -357,14 +362,14 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl { "type": "LabeledArg", "label": { - "commentStart": 191, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 200, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -379,10 +384,10 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl ], "callee": { "abs_path": false, - "commentStart": 183, + "commentStart": 0, "end": 0, "name": { - "commentStart": 183, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -392,7 +397,7 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl "start": 0, "type": "Name" }, - "commentStart": 183, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -400,7 +405,7 @@ description: Result of parsing big_number_angle_to_match_length_x.kcl "unlabeled": null } ], - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/big_number_angle_to_match_length_x/input.kcl b/rust/kcl-lib/tests/big_number_angle_to_match_length_x/input.kcl index 07fdc5ffa..7d9bdc944 100644 --- a/rust/kcl-lib/tests/big_number_angle_to_match_length_x/input.kcl +++ b/rust/kcl-lib/tests/big_number_angle_to_match_length_x/input.kcl @@ -1,6 +1,6 @@ part001 = startSketchOn('XY') |> startProfileAt([0, 0], %) |> line(end = [1, 3.82], tag = $seg01) - |> angledLineToX([-angleToMatchLengthX(seg01, 3, %), 3], %) + |> angledLine(angle = -angleToMatchLengthX(seg01, 3, %), endAbsoluteX = 3) |> close(%) |> extrude(length = 10) diff --git a/rust/kcl-lib/tests/big_number_angle_to_match_length_x/ops.snap b/rust/kcl-lib/tests/big_number_angle_to_match_length_x/ops.snap index 6618d96dd..0ab91459e 100644 --- a/rust/kcl-lib/tests/big_number_angle_to_match_length_x/ops.snap +++ b/rust/kcl-lib/tests/big_number_angle_to_match_length_x/ops.snap @@ -5,7 +5,7 @@ description: Operations executed big_number_angle_to_match_length_x.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/big_number_angle_to_match_length_x/program_memory.snap b/rust/kcl-lib/tests/big_number_angle_to_match_length_x/program_memory.snap index d3d48809b..5bb9a6716 100644 --- a/rust/kcl-lib/tests/big_number_angle_to_match_length_x/program_memory.snap +++ b/rust/kcl-lib/tests/big_number_angle_to_match_length_x/program_memory.snap @@ -114,22 +114,34 @@ description: Variables in memory after executing big_number_angle_to_match_lengt "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/big_number_angle_to_match_length_x/unparsed.snap b/rust/kcl-lib/tests/big_number_angle_to_match_length_x/unparsed.snap index db783a70a..78e64621c 100644 --- a/rust/kcl-lib/tests/big_number_angle_to_match_length_x/unparsed.snap +++ b/rust/kcl-lib/tests/big_number_angle_to_match_length_x/unparsed.snap @@ -5,6 +5,6 @@ description: Result of unparsing big_number_angle_to_match_length_x.kcl part001 = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line(end = [1, 3.82], tag = $seg01) - |> angledLineToX([-angleToMatchLengthX(seg01, 3, %), 3], %) + |> angledLine(angle = -angleToMatchLengthX(seg01, 3, %), endAbsoluteX = 3) |> close(%) |> extrude(length = 10) diff --git a/rust/kcl-lib/tests/big_number_angle_to_match_length_y/artifact_commands.snap b/rust/kcl-lib/tests/big_number_angle_to_match_length_y/artifact_commands.snap index eda9181f3..b5d40c59b 100644 --- a/rust/kcl-lib/tests/big_number_angle_to_match_length_y/artifact_commands.snap +++ b/rust/kcl-lib/tests/big_number_angle_to_match_length_y/artifact_commands.snap @@ -162,7 +162,8 @@ description: Artifact commands big_number_angle_to_match_length_y.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/big_number_angle_to_match_length_y/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/big_number_angle_to_match_length_y/artifact_graph_flowchart.snap.md index 054d9e696..b302647c1 100644 --- a/rust/kcl-lib/tests/big_number_angle_to_match_length_y/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/big_number_angle_to_match_length_y/artifact_graph_flowchart.snap.md @@ -3,12 +3,12 @@ flowchart LR subgraph path2 [Path] 2["Path
[35, 60, 0]"] 3["Segment
[66, 101, 0]"] - 4["Segment
[107, 163, 0]"] - 5["Segment
[169, 177, 0]"] + 4["Segment
[107, 178, 0]"] + 5["Segment
[184, 192, 0]"] 6[Solid2d] end 1["Plane
[10, 29, 0]"] - 7["Sweep Extrusion
[183, 203, 0]"] + 7["Sweep Extrusion
[198, 218, 0]"] 8[Wall] 9[Wall] 10[Wall] diff --git a/rust/kcl-lib/tests/big_number_angle_to_match_length_y/ast.snap b/rust/kcl-lib/tests/big_number_angle_to_match_length_y/ast.snap index 9d28d9d33..f42bd24af 100644 --- a/rust/kcl-lib/tests/big_number_angle_to_match_length_y/ast.snap +++ b/rust/kcl-lib/tests/big_number_angle_to_match_length_y/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl { "arguments": [ { - "commentStart": 24, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl ], "callee": { "abs_path": false, - "commentStart": 10, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl "start": 0, "type": "Name" }, - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl { "arguments": [ { - "commentStart": 50, + "commentStart": 0, "elements": [ { - "commentStart": 51, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl } }, { - "commentStart": 54, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl "type": "ArrayExpression" }, { - "commentStart": 58, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl ], "callee": { "abs_path": false, - "commentStart": 35, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl "start": 0, "type": "Name" }, - "commentStart": 35, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +121,17 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl { "type": "LabeledArg", "label": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 77, + "commentStart": 0, "elements": [ { - "commentStart": 78, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -143,7 +143,7 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl } }, { - "commentStart": 81, + "commentStart": 0, "end": 0, "raw": "3.82", "start": 0, @@ -164,14 +164,14 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl { "type": "LabeledArg", "label": { - "commentStart": 88, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 94, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -182,10 +182,10 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl ], "callee": { "abs_path": false, - "commentStart": 66, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -195,7 +195,7 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl "start": 0, "type": "Name" }, - "commentStart": 66, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -205,109 +205,113 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl { "arguments": [ { - "commentStart": 121, - "elements": [ - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 143, - "end": 0, - "name": { - "commentStart": 143, - "end": 0, - "name": "seg01", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 150, - "end": 0, - "raw": "3", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 3.0, - "suffix": "None" - } - }, - { - "commentStart": 153, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { "abs_path": false, - "commentStart": 123, + "commentStart": 0, "end": 0, "name": { - "commentStart": 123, + "commentStart": 0, "end": 0, - "name": "angleToMatchLengthY", + "name": "seg01", "start": 0, "type": "Identifier" }, "path": [], "start": 0, + "type": "Name", "type": "Name" }, - "commentStart": 123, + { + "commentStart": 0, + "end": 0, + "raw": "3", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 3.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angleToMatchLengthY", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "Name" }, - "commentStart": 122, + "commentStart": 0, "end": 0, - "operator": "-", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "type": "CallExpression", + "type": "CallExpression" }, - { - "commentStart": 157, - "end": 0, - "raw": "3", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 3.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } }, { - "commentStart": 161, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "3", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 3.0, + "suffix": "None" + } + } } ], "callee": { "abs_path": false, - "commentStart": 107, + "commentStart": 0, "end": 0, "name": { - "commentStart": 107, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -315,16 +319,17 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl "start": 0, "type": "Name" }, - "commentStart": 107, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 175, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -333,10 +338,10 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl ], "callee": { "abs_path": false, - "commentStart": 169, + "commentStart": 0, "end": 0, "name": { - "commentStart": 169, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -346,7 +351,7 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl "start": 0, "type": "Name" }, - "commentStart": 169, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -357,14 +362,14 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl { "type": "LabeledArg", "label": { - "commentStart": 191, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 200, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -379,10 +384,10 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl ], "callee": { "abs_path": false, - "commentStart": 183, + "commentStart": 0, "end": 0, "name": { - "commentStart": 183, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -392,7 +397,7 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl "start": 0, "type": "Name" }, - "commentStart": 183, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -400,7 +405,7 @@ description: Result of parsing big_number_angle_to_match_length_y.kcl "unlabeled": null } ], - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/big_number_angle_to_match_length_y/input.kcl b/rust/kcl-lib/tests/big_number_angle_to_match_length_y/input.kcl index c53fa97ae..d297fd41e 100644 --- a/rust/kcl-lib/tests/big_number_angle_to_match_length_y/input.kcl +++ b/rust/kcl-lib/tests/big_number_angle_to_match_length_y/input.kcl @@ -1,6 +1,6 @@ part001 = startSketchOn('XY') |> startProfileAt([0, 0], %) |> line(end = [1, 3.82], tag = $seg01) - |> angledLineToX([-angleToMatchLengthY(seg01, 3, %), 3], %) + |> angledLine(angle = -angleToMatchLengthY(seg01, 3, %), endAbsoluteX = 3) |> close(%) |> extrude(length = 10) diff --git a/rust/kcl-lib/tests/big_number_angle_to_match_length_y/ops.snap b/rust/kcl-lib/tests/big_number_angle_to_match_length_y/ops.snap index 5de0ab29e..1f0a45253 100644 --- a/rust/kcl-lib/tests/big_number_angle_to_match_length_y/ops.snap +++ b/rust/kcl-lib/tests/big_number_angle_to_match_length_y/ops.snap @@ -5,7 +5,7 @@ description: Operations executed big_number_angle_to_match_length_y.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/big_number_angle_to_match_length_y/program_memory.snap b/rust/kcl-lib/tests/big_number_angle_to_match_length_y/program_memory.snap index 311aa01fa..486e937cc 100644 --- a/rust/kcl-lib/tests/big_number_angle_to_match_length_y/program_memory.snap +++ b/rust/kcl-lib/tests/big_number_angle_to_match_length_y/program_memory.snap @@ -114,22 +114,34 @@ description: Variables in memory after executing big_number_angle_to_match_lengt "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/big_number_angle_to_match_length_y/unparsed.snap b/rust/kcl-lib/tests/big_number_angle_to_match_length_y/unparsed.snap index a0b943da3..cc5aebeff 100644 --- a/rust/kcl-lib/tests/big_number_angle_to_match_length_y/unparsed.snap +++ b/rust/kcl-lib/tests/big_number_angle_to_match_length_y/unparsed.snap @@ -5,6 +5,6 @@ description: Result of unparsing big_number_angle_to_match_length_y.kcl part001 = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line(end = [1, 3.82], tag = $seg01) - |> angledLineToX([-angleToMatchLengthY(seg01, 3, %), 3], %) + |> angledLine(angle = -angleToMatchLengthY(seg01, 3, %), endAbsoluteX = 3) |> close(%) |> extrude(length = 10) diff --git a/rust/kcl-lib/tests/boolean_logical_and/ast.snap b/rust/kcl-lib/tests/boolean_logical_and/ast.snap index e3a0b8de2..e2269bfb4 100644 --- a/rust/kcl-lib/tests/boolean_logical_and/ast.snap +++ b/rust/kcl-lib/tests/boolean_logical_and/ast.snap @@ -18,10 +18,10 @@ description: Result of parsing boolean_logical_and.kcl "type": "Identifier" }, "init": { - "commentStart": 5, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -31,7 +31,7 @@ description: Result of parsing boolean_logical_and.kcl }, "operator": "&", "right": { - "commentStart": 12, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -53,25 +53,25 @@ description: Result of parsing boolean_logical_and.kcl "type": "VariableDeclaration" }, { - "commentStart": 18, + "commentStart": 0, "declaration": { - "commentStart": 18, + "commentStart": 0, "end": 0, "id": { - "commentStart": 18, + "commentStart": 0, "end": 0, "name": "a", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 22, + "commentStart": 0, "cond": { "abs_path": false, - "commentStart": 25, + "commentStart": 0, "end": 0, "name": { - "commentStart": 25, + "commentStart": 0, "end": 0, "name": "aa", "start": 0, @@ -88,10 +88,10 @@ description: Result of parsing boolean_logical_and.kcl "final_else": { "body": [ { - "commentStart": 45, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 45, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -107,7 +107,7 @@ description: Result of parsing boolean_logical_and.kcl "type": "ExpressionStatement" } ], - "commentStart": 45, + "commentStart": 0, "end": 0, "start": 0 }, @@ -115,10 +115,10 @@ description: Result of parsing boolean_logical_and.kcl "then_val": { "body": [ { - "commentStart": 32, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 32, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -134,7 +134,7 @@ description: Result of parsing boolean_logical_and.kcl "type": "ExpressionStatement" } ], - "commentStart": 32, + "commentStart": 0, "end": 0, "start": 0 }, @@ -151,19 +151,19 @@ description: Result of parsing boolean_logical_and.kcl "type": "VariableDeclaration" }, { - "commentStart": 49, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 56, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 56, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56, + "commentStart": 0, "end": 0, "name": "a", "start": 0, @@ -176,7 +176,7 @@ description: Result of parsing boolean_logical_and.kcl }, "operator": "==", "right": { - "commentStart": 61, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -192,7 +192,7 @@ description: Result of parsing boolean_logical_and.kcl "type": "BinaryExpression" }, { - "commentStart": 64, + "commentStart": 0, "end": 0, "raw": "\"right branch of and is false makes the whole expression false\"", "start": 0, @@ -203,10 +203,10 @@ description: Result of parsing boolean_logical_and.kcl ], "callee": { "abs_path": false, - "commentStart": 49, + "commentStart": 0, "end": 0, "name": { - "commentStart": 49, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -216,7 +216,7 @@ description: Result of parsing boolean_logical_and.kcl "start": 0, "type": "Name" }, - "commentStart": 49, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -227,22 +227,22 @@ description: Result of parsing boolean_logical_and.kcl "type": "ExpressionStatement" }, { - "commentStart": 128, + "commentStart": 0, "declaration": { - "commentStart": 130, + "commentStart": 0, "end": 0, "id": { - "commentStart": 130, + "commentStart": 0, "end": 0, "name": "bb", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 135, + "commentStart": 0, "end": 0, "left": { - "commentStart": 135, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -252,7 +252,7 @@ description: Result of parsing boolean_logical_and.kcl }, "operator": "&", "right": { - "commentStart": 143, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -274,25 +274,25 @@ description: Result of parsing boolean_logical_and.kcl "type": "VariableDeclaration" }, { - "commentStart": 148, + "commentStart": 0, "declaration": { - "commentStart": 148, + "commentStart": 0, "end": 0, "id": { - "commentStart": 148, + "commentStart": 0, "end": 0, "name": "b", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 152, + "commentStart": 0, "cond": { "abs_path": false, - "commentStart": 155, + "commentStart": 0, "end": 0, "name": { - "commentStart": 155, + "commentStart": 0, "end": 0, "name": "bb", "start": 0, @@ -309,10 +309,10 @@ description: Result of parsing boolean_logical_and.kcl "final_else": { "body": [ { - "commentStart": 175, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 175, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -328,7 +328,7 @@ description: Result of parsing boolean_logical_and.kcl "type": "ExpressionStatement" } ], - "commentStart": 175, + "commentStart": 0, "end": 0, "start": 0 }, @@ -336,10 +336,10 @@ description: Result of parsing boolean_logical_and.kcl "then_val": { "body": [ { - "commentStart": 162, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 162, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -355,7 +355,7 @@ description: Result of parsing boolean_logical_and.kcl "type": "ExpressionStatement" } ], - "commentStart": 162, + "commentStart": 0, "end": 0, "start": 0 }, @@ -372,19 +372,19 @@ description: Result of parsing boolean_logical_and.kcl "type": "VariableDeclaration" }, { - "commentStart": 179, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 186, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 186, + "commentStart": 0, "end": 0, "name": { - "commentStart": 186, + "commentStart": 0, "end": 0, "name": "b", "start": 0, @@ -397,7 +397,7 @@ description: Result of parsing boolean_logical_and.kcl }, "operator": "==", "right": { - "commentStart": 191, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -413,7 +413,7 @@ description: Result of parsing boolean_logical_and.kcl "type": "BinaryExpression" }, { - "commentStart": 194, + "commentStart": 0, "end": 0, "raw": "\"left branch of and is false makes the whole expression false\"", "start": 0, @@ -424,10 +424,10 @@ description: Result of parsing boolean_logical_and.kcl ], "callee": { "abs_path": false, - "commentStart": 179, + "commentStart": 0, "end": 0, "name": { - "commentStart": 179, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -437,7 +437,7 @@ description: Result of parsing boolean_logical_and.kcl "start": 0, "type": "Name" }, - "commentStart": 179, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -448,22 +448,22 @@ description: Result of parsing boolean_logical_and.kcl "type": "ExpressionStatement" }, { - "commentStart": 257, + "commentStart": 0, "declaration": { - "commentStart": 259, + "commentStart": 0, "end": 0, "id": { - "commentStart": 259, + "commentStart": 0, "end": 0, "name": "cc", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 264, + "commentStart": 0, "end": 0, "left": { - "commentStart": 264, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -473,7 +473,7 @@ description: Result of parsing boolean_logical_and.kcl }, "operator": "&", "right": { - "commentStart": 271, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -495,25 +495,25 @@ description: Result of parsing boolean_logical_and.kcl "type": "VariableDeclaration" }, { - "commentStart": 276, + "commentStart": 0, "declaration": { - "commentStart": 276, + "commentStart": 0, "end": 0, "id": { - "commentStart": 276, + "commentStart": 0, "end": 0, "name": "c", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 280, + "commentStart": 0, "cond": { "abs_path": false, - "commentStart": 283, + "commentStart": 0, "end": 0, "name": { - "commentStart": 283, + "commentStart": 0, "end": 0, "name": "cc", "start": 0, @@ -530,10 +530,10 @@ description: Result of parsing boolean_logical_and.kcl "final_else": { "body": [ { - "commentStart": 303, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 303, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -549,7 +549,7 @@ description: Result of parsing boolean_logical_and.kcl "type": "ExpressionStatement" } ], - "commentStart": 303, + "commentStart": 0, "end": 0, "start": 0 }, @@ -557,10 +557,10 @@ description: Result of parsing boolean_logical_and.kcl "then_val": { "body": [ { - "commentStart": 290, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 290, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -576,7 +576,7 @@ description: Result of parsing boolean_logical_and.kcl "type": "ExpressionStatement" } ], - "commentStart": 290, + "commentStart": 0, "end": 0, "start": 0 }, @@ -593,19 +593,19 @@ description: Result of parsing boolean_logical_and.kcl "type": "VariableDeclaration" }, { - "commentStart": 307, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 314, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 314, + "commentStart": 0, "end": 0, "name": { - "commentStart": 314, + "commentStart": 0, "end": 0, "name": "c", "start": 0, @@ -618,7 +618,7 @@ description: Result of parsing boolean_logical_and.kcl }, "operator": "==", "right": { - "commentStart": 319, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -634,7 +634,7 @@ description: Result of parsing boolean_logical_and.kcl "type": "BinaryExpression" }, { - "commentStart": 322, + "commentStart": 0, "end": 0, "raw": "\"both branches of and are true makes the whole expression true\"", "start": 0, @@ -645,10 +645,10 @@ description: Result of parsing boolean_logical_and.kcl ], "callee": { "abs_path": false, - "commentStart": 307, + "commentStart": 0, "end": 0, "name": { - "commentStart": 307, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -658,7 +658,7 @@ description: Result of parsing boolean_logical_and.kcl "start": 0, "type": "Name" }, - "commentStart": 307, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -669,22 +669,22 @@ description: Result of parsing boolean_logical_and.kcl "type": "ExpressionStatement" }, { - "commentStart": 386, + "commentStart": 0, "declaration": { - "commentStart": 388, + "commentStart": 0, "end": 0, "id": { - "commentStart": 388, + "commentStart": 0, "end": 0, "name": "dd", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 393, + "commentStart": 0, "end": 0, "left": { - "commentStart": 393, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -694,7 +694,7 @@ description: Result of parsing boolean_logical_and.kcl }, "operator": "&", "right": { - "commentStart": 401, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -716,25 +716,25 @@ description: Result of parsing boolean_logical_and.kcl "type": "VariableDeclaration" }, { - "commentStart": 407, + "commentStart": 0, "declaration": { - "commentStart": 407, + "commentStart": 0, "end": 0, "id": { - "commentStart": 407, + "commentStart": 0, "end": 0, "name": "d", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 411, + "commentStart": 0, "cond": { "abs_path": false, - "commentStart": 414, + "commentStart": 0, "end": 0, "name": { - "commentStart": 414, + "commentStart": 0, "end": 0, "name": "dd", "start": 0, @@ -751,10 +751,10 @@ description: Result of parsing boolean_logical_and.kcl "final_else": { "body": [ { - "commentStart": 434, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 434, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -770,7 +770,7 @@ description: Result of parsing boolean_logical_and.kcl "type": "ExpressionStatement" } ], - "commentStart": 434, + "commentStart": 0, "end": 0, "start": 0 }, @@ -778,10 +778,10 @@ description: Result of parsing boolean_logical_and.kcl "then_val": { "body": [ { - "commentStart": 421, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 421, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -797,7 +797,7 @@ description: Result of parsing boolean_logical_and.kcl "type": "ExpressionStatement" } ], - "commentStart": 421, + "commentStart": 0, "end": 0, "start": 0 }, @@ -814,19 +814,19 @@ description: Result of parsing boolean_logical_and.kcl "type": "VariableDeclaration" }, { - "commentStart": 438, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 445, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 445, + "commentStart": 0, "end": 0, "name": { - "commentStart": 445, + "commentStart": 0, "end": 0, "name": "d", "start": 0, @@ -839,7 +839,7 @@ description: Result of parsing boolean_logical_and.kcl }, "operator": "==", "right": { - "commentStart": 450, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -855,7 +855,7 @@ description: Result of parsing boolean_logical_and.kcl "type": "BinaryExpression" }, { - "commentStart": 453, + "commentStart": 0, "end": 0, "raw": "\"both branches of and are false makes the whole expression false\"", "start": 0, @@ -866,10 +866,10 @@ description: Result of parsing boolean_logical_and.kcl ], "callee": { "abs_path": false, - "commentStart": 438, + "commentStart": 0, "end": 0, "name": { - "commentStart": 438, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -879,7 +879,7 @@ description: Result of parsing boolean_logical_and.kcl "start": 0, "type": "Name" }, - "commentStart": 438, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -896,7 +896,7 @@ description: Result of parsing boolean_logical_and.kcl "nonCodeNodes": { "2": [ { - "commentStart": 128, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -907,7 +907,7 @@ description: Result of parsing boolean_logical_and.kcl ], "5": [ { - "commentStart": 257, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -918,7 +918,7 @@ description: Result of parsing boolean_logical_and.kcl ], "8": [ { - "commentStart": 386, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/boolean_logical_multiple/ast.snap b/rust/kcl-lib/tests/boolean_logical_multiple/ast.snap index a3351af69..ad2b505ff 100644 --- a/rust/kcl-lib/tests/boolean_logical_multiple/ast.snap +++ b/rust/kcl-lib/tests/boolean_logical_multiple/ast.snap @@ -18,10 +18,10 @@ description: Result of parsing boolean_logical_multiple.kcl "type": "Identifier" }, "init": { - "commentStart": 5, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -31,10 +31,10 @@ description: Result of parsing boolean_logical_multiple.kcl }, "operator": "|", "right": { - "commentStart": 12, + "commentStart": 0, "end": 0, "left": { - "commentStart": 12, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -44,7 +44,7 @@ description: Result of parsing boolean_logical_multiple.kcl }, "operator": "&", "right": { - "commentStart": 20, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -70,25 +70,25 @@ description: Result of parsing boolean_logical_multiple.kcl "type": "VariableDeclaration" }, { - "commentStart": 26, + "commentStart": 0, "declaration": { - "commentStart": 26, + "commentStart": 0, "end": 0, "id": { - "commentStart": 26, + "commentStart": 0, "end": 0, "name": "i", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 30, + "commentStart": 0, "cond": { "abs_path": false, - "commentStart": 33, + "commentStart": 0, "end": 0, "name": { - "commentStart": 33, + "commentStart": 0, "end": 0, "name": "ii", "start": 0, @@ -105,10 +105,10 @@ description: Result of parsing boolean_logical_multiple.kcl "final_else": { "body": [ { - "commentStart": 53, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 53, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -124,7 +124,7 @@ description: Result of parsing boolean_logical_multiple.kcl "type": "ExpressionStatement" } ], - "commentStart": 53, + "commentStart": 0, "end": 0, "start": 0 }, @@ -132,10 +132,10 @@ description: Result of parsing boolean_logical_multiple.kcl "then_val": { "body": [ { - "commentStart": 40, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 40, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -151,7 +151,7 @@ description: Result of parsing boolean_logical_multiple.kcl "type": "ExpressionStatement" } ], - "commentStart": 40, + "commentStart": 0, "end": 0, "start": 0 }, @@ -168,19 +168,19 @@ description: Result of parsing boolean_logical_multiple.kcl "type": "VariableDeclaration" }, { - "commentStart": 57, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 64, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 64, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -193,7 +193,7 @@ description: Result of parsing boolean_logical_multiple.kcl }, "operator": "==", "right": { - "commentStart": 69, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -209,7 +209,7 @@ description: Result of parsing boolean_logical_multiple.kcl "type": "BinaryExpression" }, { - "commentStart": 72, + "commentStart": 0, "end": 0, "raw": "\"and has higher precedence than or\"", "start": 0, @@ -220,10 +220,10 @@ description: Result of parsing boolean_logical_multiple.kcl ], "callee": { "abs_path": false, - "commentStart": 57, + "commentStart": 0, "end": 0, "name": { - "commentStart": 57, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -233,7 +233,7 @@ description: Result of parsing boolean_logical_multiple.kcl "start": 0, "type": "Name" }, - "commentStart": 57, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -244,25 +244,25 @@ description: Result of parsing boolean_logical_multiple.kcl "type": "ExpressionStatement" }, { - "commentStart": 108, + "commentStart": 0, "declaration": { - "commentStart": 110, + "commentStart": 0, "end": 0, "id": { - "commentStart": 110, + "commentStart": 0, "end": 0, "name": "jj", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 115, + "commentStart": 0, "end": 0, "left": { - "commentStart": 115, + "commentStart": 0, "end": 0, "left": { - "commentStart": 115, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -272,10 +272,10 @@ description: Result of parsing boolean_logical_multiple.kcl }, "operator": "|", "right": { - "commentStart": 123, + "commentStart": 0, "end": 0, "left": { - "commentStart": 123, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -286,7 +286,7 @@ description: Result of parsing boolean_logical_multiple.kcl "operator": "&", "right": { "argument": { - "commentStart": 131, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -294,7 +294,7 @@ description: Result of parsing boolean_logical_multiple.kcl "type": "Literal", "value": false }, - "commentStart": 130, + "commentStart": 0, "end": 0, "operator": "!", "start": 0, @@ -311,10 +311,10 @@ description: Result of parsing boolean_logical_multiple.kcl }, "operator": "|", "right": { - "commentStart": 139, + "commentStart": 0, "end": 0, "left": { - "commentStart": 139, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -324,7 +324,7 @@ description: Result of parsing boolean_logical_multiple.kcl }, "operator": "&", "right": { - "commentStart": 147, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -350,25 +350,25 @@ description: Result of parsing boolean_logical_multiple.kcl "type": "VariableDeclaration" }, { - "commentStart": 152, + "commentStart": 0, "declaration": { - "commentStart": 152, + "commentStart": 0, "end": 0, "id": { - "commentStart": 152, + "commentStart": 0, "end": 0, "name": "j", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 156, + "commentStart": 0, "cond": { "abs_path": false, - "commentStart": 159, + "commentStart": 0, "end": 0, "name": { - "commentStart": 159, + "commentStart": 0, "end": 0, "name": "jj", "start": 0, @@ -385,10 +385,10 @@ description: Result of parsing boolean_logical_multiple.kcl "final_else": { "body": [ { - "commentStart": 179, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 179, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -404,7 +404,7 @@ description: Result of parsing boolean_logical_multiple.kcl "type": "ExpressionStatement" } ], - "commentStart": 179, + "commentStart": 0, "end": 0, "start": 0 }, @@ -412,10 +412,10 @@ description: Result of parsing boolean_logical_multiple.kcl "then_val": { "body": [ { - "commentStart": 166, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 166, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -431,7 +431,7 @@ description: Result of parsing boolean_logical_multiple.kcl "type": "ExpressionStatement" } ], - "commentStart": 166, + "commentStart": 0, "end": 0, "start": 0 }, @@ -448,19 +448,19 @@ description: Result of parsing boolean_logical_multiple.kcl "type": "VariableDeclaration" }, { - "commentStart": 183, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 190, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 190, + "commentStart": 0, "end": 0, "name": { - "commentStart": 190, + "commentStart": 0, "end": 0, "name": "j", "start": 0, @@ -473,7 +473,7 @@ description: Result of parsing boolean_logical_multiple.kcl }, "operator": "==", "right": { - "commentStart": 195, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -489,7 +489,7 @@ description: Result of parsing boolean_logical_multiple.kcl "type": "BinaryExpression" }, { - "commentStart": 198, + "commentStart": 0, "end": 0, "raw": "\"multiple logical operators\"", "start": 0, @@ -500,10 +500,10 @@ description: Result of parsing boolean_logical_multiple.kcl ], "callee": { "abs_path": false, - "commentStart": 183, + "commentStart": 0, "end": 0, "name": { - "commentStart": 183, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -513,7 +513,7 @@ description: Result of parsing boolean_logical_multiple.kcl "start": 0, "type": "Name" }, - "commentStart": 183, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -530,7 +530,7 @@ description: Result of parsing boolean_logical_multiple.kcl "nonCodeNodes": { "2": [ { - "commentStart": 108, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/boolean_logical_or/ast.snap b/rust/kcl-lib/tests/boolean_logical_or/ast.snap index 5625fd45b..089ac239f 100644 --- a/rust/kcl-lib/tests/boolean_logical_or/ast.snap +++ b/rust/kcl-lib/tests/boolean_logical_or/ast.snap @@ -18,10 +18,10 @@ description: Result of parsing boolean_logical_or.kcl "type": "Identifier" }, "init": { - "commentStart": 5, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -31,7 +31,7 @@ description: Result of parsing boolean_logical_or.kcl }, "operator": "|", "right": { - "commentStart": 12, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -53,25 +53,25 @@ description: Result of parsing boolean_logical_or.kcl "type": "VariableDeclaration" }, { - "commentStart": 18, + "commentStart": 0, "declaration": { - "commentStart": 18, + "commentStart": 0, "end": 0, "id": { - "commentStart": 18, + "commentStart": 0, "end": 0, "name": "a", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 22, + "commentStart": 0, "cond": { "abs_path": false, - "commentStart": 25, + "commentStart": 0, "end": 0, "name": { - "commentStart": 25, + "commentStart": 0, "end": 0, "name": "aa", "start": 0, @@ -88,10 +88,10 @@ description: Result of parsing boolean_logical_or.kcl "final_else": { "body": [ { - "commentStart": 45, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 45, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -107,7 +107,7 @@ description: Result of parsing boolean_logical_or.kcl "type": "ExpressionStatement" } ], - "commentStart": 45, + "commentStart": 0, "end": 0, "start": 0 }, @@ -115,10 +115,10 @@ description: Result of parsing boolean_logical_or.kcl "then_val": { "body": [ { - "commentStart": 32, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 32, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -134,7 +134,7 @@ description: Result of parsing boolean_logical_or.kcl "type": "ExpressionStatement" } ], - "commentStart": 32, + "commentStart": 0, "end": 0, "start": 0 }, @@ -151,19 +151,19 @@ description: Result of parsing boolean_logical_or.kcl "type": "VariableDeclaration" }, { - "commentStart": 49, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 56, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 56, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56, + "commentStart": 0, "end": 0, "name": "a", "start": 0, @@ -176,7 +176,7 @@ description: Result of parsing boolean_logical_or.kcl }, "operator": "==", "right": { - "commentStart": 61, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -192,7 +192,7 @@ description: Result of parsing boolean_logical_or.kcl "type": "BinaryExpression" }, { - "commentStart": 64, + "commentStart": 0, "end": 0, "raw": "\"left branch of or is true makes the whole expression true\"", "start": 0, @@ -203,10 +203,10 @@ description: Result of parsing boolean_logical_or.kcl ], "callee": { "abs_path": false, - "commentStart": 49, + "commentStart": 0, "end": 0, "name": { - "commentStart": 49, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -216,7 +216,7 @@ description: Result of parsing boolean_logical_or.kcl "start": 0, "type": "Name" }, - "commentStart": 49, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -227,22 +227,22 @@ description: Result of parsing boolean_logical_or.kcl "type": "ExpressionStatement" }, { - "commentStart": 124, + "commentStart": 0, "declaration": { - "commentStart": 126, + "commentStart": 0, "end": 0, "id": { - "commentStart": 126, + "commentStart": 0, "end": 0, "name": "bb", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 131, + "commentStart": 0, "end": 0, "left": { - "commentStart": 131, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -252,7 +252,7 @@ description: Result of parsing boolean_logical_or.kcl }, "operator": "|", "right": { - "commentStart": 139, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -274,25 +274,25 @@ description: Result of parsing boolean_logical_or.kcl "type": "VariableDeclaration" }, { - "commentStart": 144, + "commentStart": 0, "declaration": { - "commentStart": 144, + "commentStart": 0, "end": 0, "id": { - "commentStart": 144, + "commentStart": 0, "end": 0, "name": "b", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 148, + "commentStart": 0, "cond": { "abs_path": false, - "commentStart": 151, + "commentStart": 0, "end": 0, "name": { - "commentStart": 151, + "commentStart": 0, "end": 0, "name": "bb", "start": 0, @@ -309,10 +309,10 @@ description: Result of parsing boolean_logical_or.kcl "final_else": { "body": [ { - "commentStart": 171, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 171, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -328,7 +328,7 @@ description: Result of parsing boolean_logical_or.kcl "type": "ExpressionStatement" } ], - "commentStart": 171, + "commentStart": 0, "end": 0, "start": 0 }, @@ -336,10 +336,10 @@ description: Result of parsing boolean_logical_or.kcl "then_val": { "body": [ { - "commentStart": 158, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 158, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -355,7 +355,7 @@ description: Result of parsing boolean_logical_or.kcl "type": "ExpressionStatement" } ], - "commentStart": 158, + "commentStart": 0, "end": 0, "start": 0 }, @@ -372,19 +372,19 @@ description: Result of parsing boolean_logical_or.kcl "type": "VariableDeclaration" }, { - "commentStart": 175, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 182, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 182, + "commentStart": 0, "end": 0, "name": { - "commentStart": 182, + "commentStart": 0, "end": 0, "name": "b", "start": 0, @@ -397,7 +397,7 @@ description: Result of parsing boolean_logical_or.kcl }, "operator": "==", "right": { - "commentStart": 187, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -413,7 +413,7 @@ description: Result of parsing boolean_logical_or.kcl "type": "BinaryExpression" }, { - "commentStart": 190, + "commentStart": 0, "end": 0, "raw": "\"right branch of or is true makes the whole expression true\"", "start": 0, @@ -424,10 +424,10 @@ description: Result of parsing boolean_logical_or.kcl ], "callee": { "abs_path": false, - "commentStart": 175, + "commentStart": 0, "end": 0, "name": { - "commentStart": 175, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -437,7 +437,7 @@ description: Result of parsing boolean_logical_or.kcl "start": 0, "type": "Name" }, - "commentStart": 175, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -448,22 +448,22 @@ description: Result of parsing boolean_logical_or.kcl "type": "ExpressionStatement" }, { - "commentStart": 251, + "commentStart": 0, "declaration": { - "commentStart": 253, + "commentStart": 0, "end": 0, "id": { - "commentStart": 253, + "commentStart": 0, "end": 0, "name": "cc", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 258, + "commentStart": 0, "end": 0, "left": { - "commentStart": 258, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -473,7 +473,7 @@ description: Result of parsing boolean_logical_or.kcl }, "operator": "|", "right": { - "commentStart": 265, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -495,25 +495,25 @@ description: Result of parsing boolean_logical_or.kcl "type": "VariableDeclaration" }, { - "commentStart": 270, + "commentStart": 0, "declaration": { - "commentStart": 270, + "commentStart": 0, "end": 0, "id": { - "commentStart": 270, + "commentStart": 0, "end": 0, "name": "c", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 274, + "commentStart": 0, "cond": { "abs_path": false, - "commentStart": 277, + "commentStart": 0, "end": 0, "name": { - "commentStart": 277, + "commentStart": 0, "end": 0, "name": "cc", "start": 0, @@ -530,10 +530,10 @@ description: Result of parsing boolean_logical_or.kcl "final_else": { "body": [ { - "commentStart": 297, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 297, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -549,7 +549,7 @@ description: Result of parsing boolean_logical_or.kcl "type": "ExpressionStatement" } ], - "commentStart": 297, + "commentStart": 0, "end": 0, "start": 0 }, @@ -557,10 +557,10 @@ description: Result of parsing boolean_logical_or.kcl "then_val": { "body": [ { - "commentStart": 284, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 284, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -576,7 +576,7 @@ description: Result of parsing boolean_logical_or.kcl "type": "ExpressionStatement" } ], - "commentStart": 284, + "commentStart": 0, "end": 0, "start": 0 }, @@ -593,19 +593,19 @@ description: Result of parsing boolean_logical_or.kcl "type": "VariableDeclaration" }, { - "commentStart": 301, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 308, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 308, + "commentStart": 0, "end": 0, "name": { - "commentStart": 308, + "commentStart": 0, "end": 0, "name": "c", "start": 0, @@ -618,7 +618,7 @@ description: Result of parsing boolean_logical_or.kcl }, "operator": "==", "right": { - "commentStart": 313, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -634,7 +634,7 @@ description: Result of parsing boolean_logical_or.kcl "type": "BinaryExpression" }, { - "commentStart": 316, + "commentStart": 0, "end": 0, "raw": "\"both branches of or are true makes the whole expression true\"", "start": 0, @@ -645,10 +645,10 @@ description: Result of parsing boolean_logical_or.kcl ], "callee": { "abs_path": false, - "commentStart": 301, + "commentStart": 0, "end": 0, "name": { - "commentStart": 301, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -658,7 +658,7 @@ description: Result of parsing boolean_logical_or.kcl "start": 0, "type": "Name" }, - "commentStart": 301, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -669,22 +669,22 @@ description: Result of parsing boolean_logical_or.kcl "type": "ExpressionStatement" }, { - "commentStart": 379, + "commentStart": 0, "declaration": { - "commentStart": 381, + "commentStart": 0, "end": 0, "id": { - "commentStart": 381, + "commentStart": 0, "end": 0, "name": "dd", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 386, + "commentStart": 0, "end": 0, "left": { - "commentStart": 386, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -694,7 +694,7 @@ description: Result of parsing boolean_logical_or.kcl }, "operator": "|", "right": { - "commentStart": 394, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -716,25 +716,25 @@ description: Result of parsing boolean_logical_or.kcl "type": "VariableDeclaration" }, { - "commentStart": 400, + "commentStart": 0, "declaration": { - "commentStart": 400, + "commentStart": 0, "end": 0, "id": { - "commentStart": 400, + "commentStart": 0, "end": 0, "name": "d", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 404, + "commentStart": 0, "cond": { "abs_path": false, - "commentStart": 407, + "commentStart": 0, "end": 0, "name": { - "commentStart": 407, + "commentStart": 0, "end": 0, "name": "dd", "start": 0, @@ -751,10 +751,10 @@ description: Result of parsing boolean_logical_or.kcl "final_else": { "body": [ { - "commentStart": 427, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 427, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -770,7 +770,7 @@ description: Result of parsing boolean_logical_or.kcl "type": "ExpressionStatement" } ], - "commentStart": 427, + "commentStart": 0, "end": 0, "start": 0 }, @@ -778,10 +778,10 @@ description: Result of parsing boolean_logical_or.kcl "then_val": { "body": [ { - "commentStart": 414, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 414, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -797,7 +797,7 @@ description: Result of parsing boolean_logical_or.kcl "type": "ExpressionStatement" } ], - "commentStart": 414, + "commentStart": 0, "end": 0, "start": 0 }, @@ -814,19 +814,19 @@ description: Result of parsing boolean_logical_or.kcl "type": "VariableDeclaration" }, { - "commentStart": 431, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 438, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 438, + "commentStart": 0, "end": 0, "name": { - "commentStart": 438, + "commentStart": 0, "end": 0, "name": "d", "start": 0, @@ -839,7 +839,7 @@ description: Result of parsing boolean_logical_or.kcl }, "operator": "==", "right": { - "commentStart": 443, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -855,7 +855,7 @@ description: Result of parsing boolean_logical_or.kcl "type": "BinaryExpression" }, { - "commentStart": 446, + "commentStart": 0, "end": 0, "raw": "\"both branches of or are false makes the whole expression false\"", "start": 0, @@ -866,10 +866,10 @@ description: Result of parsing boolean_logical_or.kcl ], "callee": { "abs_path": false, - "commentStart": 431, + "commentStart": 0, "end": 0, "name": { - "commentStart": 431, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -879,7 +879,7 @@ description: Result of parsing boolean_logical_or.kcl "start": 0, "type": "Name" }, - "commentStart": 431, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -896,7 +896,7 @@ description: Result of parsing boolean_logical_or.kcl "nonCodeNodes": { "2": [ { - "commentStart": 124, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -907,7 +907,7 @@ description: Result of parsing boolean_logical_or.kcl ], "5": [ { - "commentStart": 251, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -918,7 +918,7 @@ description: Result of parsing boolean_logical_or.kcl ], "8": [ { - "commentStart": 379, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/circle_three_point/artifact_commands.snap b/rust/kcl-lib/tests/circle_three_point/artifact_commands.snap index ae1e90596..e89f5d3fc 100644 --- a/rust/kcl-lib/tests/circle_three_point/artifact_commands.snap +++ b/rust/kcl-lib/tests/circle_three_point/artifact_commands.snap @@ -85,7 +85,7 @@ description: Artifact commands circle_three_point.kcl "path": "[uuid]", "to": { "x": 30.00594901040716, - "y": 19.749999999999996, + "y": 19.75, "z": 0.0 } } @@ -109,7 +109,7 @@ description: Artifact commands circle_three_point.kcl "x": 24.75, "y": 19.75 }, - "radius": 5.255949010407163, + "radius": 5.25594901040716, "start": { "unit": "degrees", "value": 0.0 @@ -153,7 +153,8 @@ description: Artifact commands circle_three_point.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/circle_three_point/ast.snap b/rust/kcl-lib/tests/circle_three_point/ast.snap index e073b9b5f..0f8482dc8 100644 --- a/rust/kcl-lib/tests/circle_three_point/ast.snap +++ b/rust/kcl-lib/tests/circle_three_point/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing circle_three_point.kcl { "arguments": [ { - "commentStart": 26, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing circle_three_point.kcl ], "callee": { "abs_path": false, - "commentStart": 12, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing circle_three_point.kcl "start": 0, "type": "Name" }, - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -57,17 +57,17 @@ description: Result of parsing circle_three_point.kcl { "type": "LabeledArg", "label": { - "commentStart": 54, + "commentStart": 0, "end": 0, "name": "p1", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 59, + "commentStart": 0, "elements": [ { - "commentStart": 60, + "commentStart": 0, "end": 0, "raw": "25", "start": 0, @@ -79,7 +79,7 @@ description: Result of parsing circle_three_point.kcl } }, { - "commentStart": 64, + "commentStart": 0, "end": 0, "raw": "25", "start": 0, @@ -100,17 +100,17 @@ description: Result of parsing circle_three_point.kcl { "type": "LabeledArg", "label": { - "commentStart": 69, + "commentStart": 0, "end": 0, "name": "p2", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 74, + "commentStart": 0, "elements": [ { - "commentStart": 75, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -122,7 +122,7 @@ description: Result of parsing circle_three_point.kcl } }, { - "commentStart": 79, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -143,17 +143,17 @@ description: Result of parsing circle_three_point.kcl { "type": "LabeledArg", "label": { - "commentStart": 84, + "commentStart": 0, "end": 0, "name": "p3", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 89, + "commentStart": 0, "elements": [ { - "commentStart": 90, + "commentStart": 0, "end": 0, "raw": "27", "start": 0, @@ -165,7 +165,7 @@ description: Result of parsing circle_three_point.kcl } }, { - "commentStart": 94, + "commentStart": 0, "end": 0, "raw": "15", "start": 0, @@ -186,10 +186,10 @@ description: Result of parsing circle_three_point.kcl ], "callee": { "abs_path": false, - "commentStart": 37, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37, + "commentStart": 0, "end": 0, "name": "circleThreePoint", "start": 0, @@ -199,7 +199,7 @@ description: Result of parsing circle_three_point.kcl "start": 0, "type": "Name" }, - "commentStart": 37, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -211,14 +211,14 @@ description: Result of parsing circle_three_point.kcl { "type": "LabeledArg", "label": { - "commentStart": 112, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 121, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -233,10 +233,10 @@ description: Result of parsing circle_three_point.kcl ], "callee": { "abs_path": false, - "commentStart": 104, + "commentStart": 0, "end": 0, "name": { - "commentStart": 104, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -246,7 +246,7 @@ description: Result of parsing circle_three_point.kcl "start": 0, "type": "Name" }, - "commentStart": 104, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -254,7 +254,7 @@ description: Result of parsing circle_three_point.kcl "unlabeled": null } ], - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/circle_three_point/ops.snap b/rust/kcl-lib/tests/circle_three_point/ops.snap index a6fa29e1a..da25520e9 100644 --- a/rust/kcl-lib/tests/circle_three_point/ops.snap +++ b/rust/kcl-lib/tests/circle_three_point/ops.snap @@ -5,7 +5,7 @@ description: Operations executed circle_three_point.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/circle_three_point/program_memory.snap b/rust/kcl-lib/tests/circle_three_point/program_memory.snap index d29d0a2c6..17a2b9074 100644 --- a/rust/kcl-lib/tests/circle_three_point/program_memory.snap +++ b/rust/kcl-lib/tests/circle_three_point/program_memory.snap @@ -62,22 +62,34 @@ description: Variables in memory after executing circle_three_point.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/circular_pattern3d_a_pattern/artifact_commands.snap b/rust/kcl-lib/tests/circular_pattern3d_a_pattern/artifact_commands.snap index bca7d582c..b086650ff 100644 --- a/rust/kcl-lib/tests/circular_pattern3d_a_pattern/artifact_commands.snap +++ b/rust/kcl-lib/tests/circular_pattern3d_a_pattern/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands circular_pattern3d_a_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/circular_pattern3d_a_pattern/ast.snap b/rust/kcl-lib/tests/circular_pattern3d_a_pattern/ast.snap index a1004d607..a60fe1249 100644 --- a/rust/kcl-lib/tests/circular_pattern3d_a_pattern/ast.snap +++ b/rust/kcl-lib/tests/circular_pattern3d_a_pattern/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl { "arguments": [ { - "commentStart": 30, + "commentStart": 0, "end": 0, "raw": "'XZ'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 16, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 16, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl { "arguments": [ { - "commentStart": 56, + "commentStart": 0, "elements": [ { - "commentStart": 57, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl } }, { - "commentStart": 60, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "type": "ArrayExpression" }, { - "commentStart": 64, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 41, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 41, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +121,17 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 77, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 83, + "commentStart": 0, "elements": [ { - "commentStart": 84, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -143,7 +143,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl } }, { - "commentStart": 87, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -164,10 +164,10 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 72, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -177,7 +177,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 72, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -189,17 +189,17 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 101, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 107, + "commentStart": 0, "elements": [ { - "commentStart": 108, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -211,7 +211,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl } }, { - "commentStart": 111, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -232,10 +232,10 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 96, + "commentStart": 0, "end": 0, "name": { - "commentStart": 96, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -245,7 +245,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 96, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -257,17 +257,17 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 125, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 131, + "commentStart": 0, "elements": [ { - "commentStart": 132, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -280,7 +280,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl }, { "argument": { - "commentStart": 136, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -291,7 +291,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "suffix": "None" } }, - "commentStart": 135, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -308,10 +308,10 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 120, + "commentStart": 0, "end": 0, "name": { - "commentStart": 120, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -321,7 +321,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 120, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -331,7 +331,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl { "arguments": [ { - "commentStart": 151, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -340,10 +340,10 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 145, + "commentStart": 0, "end": 0, "name": { - "commentStart": 145, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -353,7 +353,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 145, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -364,14 +364,14 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 167, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 176, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -386,10 +386,10 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 159, + "commentStart": 0, "end": 0, "name": { - "commentStart": 159, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -399,7 +399,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 159, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -407,7 +407,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "unlabeled": null } ], - "commentStart": 16, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -423,12 +423,12 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "type": "VariableDeclaration" }, { - "commentStart": 178, + "commentStart": 0, "declaration": { - "commentStart": 180, + "commentStart": 0, "end": 0, "id": { - "commentStart": 180, + "commentStart": 0, "end": 0, "name": "pattn1", "start": 0, @@ -439,17 +439,17 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 225, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 232, + "commentStart": 0, "elements": [ { - "commentStart": 233, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -461,7 +461,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl } }, { - "commentStart": 236, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -473,7 +473,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl } }, { - "commentStart": 239, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -494,14 +494,14 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 245, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 257, + "commentStart": 0, "end": 0, "raw": "7", "start": 0, @@ -516,14 +516,14 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 262, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 273, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -538,10 +538,10 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 189, + "commentStart": 0, "end": 0, "name": { - "commentStart": 189, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -551,17 +551,17 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 189, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 208, + "commentStart": 0, "end": 0, "name": { - "commentStart": 208, + "commentStart": 0, "end": 0, "name": "exampleSketch", "start": 0, @@ -583,12 +583,12 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "type": "VariableDeclaration" }, { - "commentStart": 277, + "commentStart": 0, "declaration": { - "commentStart": 279, + "commentStart": 0, "end": 0, "id": { - "commentStart": 279, + "commentStart": 0, "end": 0, "name": "pattn2", "start": 0, @@ -599,17 +599,17 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 319, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 326, + "commentStart": 0, "elements": [ { - "commentStart": 327, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -621,7 +621,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl } }, { - "commentStart": 330, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -633,7 +633,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl } }, { - "commentStart": 333, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -654,18 +654,18 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 339, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 348, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 350, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -676,7 +676,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "suffix": "None" } }, - "commentStart": 349, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -685,7 +685,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl }, { "argument": { - "commentStart": 355, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -696,7 +696,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "suffix": "None" } }, - "commentStart": 354, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -705,7 +705,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl }, { "argument": { - "commentStart": 360, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -716,7 +716,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "suffix": "None" } }, - "commentStart": 359, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -733,14 +733,14 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 367, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 379, + "commentStart": 0, "end": 0, "raw": "41", "start": 0, @@ -755,14 +755,14 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 385, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 398, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -777,14 +777,14 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 405, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 424, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -796,10 +796,10 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 288, + "commentStart": 0, "end": 0, "name": { - "commentStart": 288, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -809,17 +809,17 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 288, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 309, + "commentStart": 0, "end": 0, "name": { - "commentStart": 309, + "commentStart": 0, "end": 0, "name": "pattn1", "start": 0, @@ -847,7 +847,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl "nonCodeNodes": { "0": [ { - "commentStart": 178, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -858,7 +858,7 @@ description: Result of parsing circular_pattern3d_a_pattern.kcl ], "1": [ { - "commentStart": 277, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/circular_pattern3d_a_pattern/ops.snap b/rust/kcl-lib/tests/circular_pattern3d_a_pattern/ops.snap index 958d70d9a..004551ae1 100644 --- a/rust/kcl-lib/tests/circular_pattern3d_a_pattern/ops.snap +++ b/rust/kcl-lib/tests/circular_pattern3d_a_pattern/ops.snap @@ -5,7 +5,7 @@ description: Operations executed circular_pattern3d_a_pattern.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XZ" diff --git a/rust/kcl-lib/tests/circular_pattern3d_a_pattern/program_memory.snap b/rust/kcl-lib/tests/circular_pattern3d_a_pattern/program_memory.snap index cc8ae5fc6..248df6d8e 100644 --- a/rust/kcl-lib/tests/circular_pattern3d_a_pattern/program_memory.snap +++ b/rust/kcl-lib/tests/circular_pattern3d_a_pattern/program_memory.snap @@ -128,22 +128,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -309,22 +321,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -487,22 +511,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -665,22 +701,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -843,22 +891,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1021,22 +1081,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1199,22 +1271,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1377,22 +1461,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1560,22 +1656,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1738,22 +1846,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1916,22 +2036,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2094,22 +2226,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2272,22 +2416,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2450,22 +2606,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2628,22 +2796,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2806,22 +2986,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2984,22 +3176,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3162,22 +3366,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3340,22 +3556,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3518,22 +3746,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3696,22 +3936,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3874,22 +4126,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4052,22 +4316,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4230,22 +4506,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4408,22 +4696,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4586,22 +4886,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4764,22 +5076,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4942,22 +5266,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5120,22 +5456,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5298,22 +5646,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5476,22 +5836,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5654,22 +6026,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5832,22 +6216,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6010,22 +6406,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6188,22 +6596,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6366,22 +6786,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6544,22 +6976,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6722,22 +7166,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6900,22 +7356,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7078,22 +7546,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7256,22 +7736,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7434,22 +7926,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7612,22 +8116,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7790,22 +8306,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7968,22 +8496,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8146,22 +8686,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8324,22 +8876,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8502,22 +9066,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8680,22 +9256,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8858,22 +9446,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9036,22 +9636,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9214,22 +9826,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9392,22 +10016,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9570,22 +10206,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9748,22 +10396,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9926,22 +10586,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10104,22 +10776,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10282,22 +10966,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10460,22 +11156,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10638,22 +11346,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10816,22 +11536,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10994,22 +11726,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11172,22 +11916,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11350,22 +12106,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11528,22 +12296,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11706,22 +12486,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11884,22 +12676,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12062,22 +12866,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12240,22 +13056,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12418,22 +13246,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12596,22 +13436,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12774,22 +13626,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12952,22 +13816,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13130,22 +14006,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13308,22 +14196,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13486,22 +14386,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13664,22 +14576,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13842,22 +14766,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14020,22 +14956,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14198,22 +15146,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14376,22 +15336,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14554,22 +15526,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14732,22 +15716,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14910,22 +15906,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15088,22 +16096,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15266,22 +16286,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15444,22 +16476,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15622,22 +16666,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15800,22 +16856,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15978,22 +17046,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16156,22 +17236,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16334,22 +17426,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16512,22 +17616,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16690,22 +17806,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16868,22 +17996,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -17046,22 +18186,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -17224,22 +18376,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -17402,22 +18566,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -17580,22 +18756,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -17758,22 +18946,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -17936,22 +19136,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -18114,22 +19326,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -18292,22 +19516,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -18470,22 +19706,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -18648,22 +19896,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -18826,22 +20086,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -19004,22 +20276,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -19182,22 +20466,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -19360,22 +20656,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -19538,22 +20846,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -19716,22 +21036,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -19894,22 +21226,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -20072,22 +21416,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -20250,22 +21606,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -20428,22 +21796,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -20606,22 +21986,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -20784,22 +22176,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -20962,22 +22366,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -21140,22 +22556,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -21318,22 +22746,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -21496,22 +22936,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -21674,22 +23126,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -21852,22 +23316,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -22030,22 +23506,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -22208,22 +23696,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -22386,22 +23886,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -22564,22 +24076,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -22742,22 +24266,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -22920,22 +24456,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -23098,22 +24646,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -23276,22 +24836,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -23454,22 +25026,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -23632,22 +25216,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -23810,22 +25406,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -23988,22 +25596,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -24166,22 +25786,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -24344,22 +25976,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -24522,22 +26166,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -24700,22 +26356,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -24878,22 +26546,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -25056,22 +26736,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -25234,22 +26926,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -25412,22 +27116,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -25590,22 +27306,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -25768,22 +27496,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -25946,22 +27686,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -26124,22 +27876,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -26302,22 +28066,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -26480,22 +28256,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -26658,22 +28446,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -26836,22 +28636,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -27014,22 +28826,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -27192,22 +29016,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -27370,22 +29206,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -27548,22 +29396,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -27726,22 +29586,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -27904,22 +29776,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -28082,22 +29966,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -28260,22 +30156,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -28438,22 +30346,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -28616,22 +30536,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -28794,22 +30726,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -28972,22 +30916,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -29150,22 +31106,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -29328,22 +31296,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -29506,22 +31486,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -29684,22 +31676,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -29862,22 +31866,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -30040,22 +32056,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -30218,22 +32246,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -30396,22 +32436,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -30574,22 +32626,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -30752,22 +32816,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -30930,22 +33006,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -31108,22 +33196,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -31286,22 +33386,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -31464,22 +33576,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -31642,22 +33766,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -31820,22 +33956,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -31998,22 +34146,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -32176,22 +34336,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -32354,22 +34526,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -32532,22 +34716,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -32710,22 +34906,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -32888,22 +35096,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -33066,22 +35286,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -33244,22 +35476,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -33422,22 +35666,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -33600,22 +35856,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -33778,22 +36046,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -33956,22 +36236,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -34134,22 +36426,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -34312,22 +36616,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -34490,22 +36806,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -34668,22 +36996,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -34846,22 +37186,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -35024,22 +37376,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -35202,22 +37566,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -35380,22 +37756,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -35558,22 +37946,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -35736,22 +38136,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -35914,22 +38326,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -36092,22 +38516,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -36270,22 +38706,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -36448,22 +38896,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -36626,22 +39086,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -36804,22 +39276,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -36982,22 +39466,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -37160,22 +39656,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -37338,22 +39846,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -37516,22 +40036,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -37694,22 +40226,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -37872,22 +40416,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -38050,22 +40606,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -38228,22 +40796,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -38406,22 +40986,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -38584,22 +41176,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -38762,22 +41366,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -38940,22 +41556,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -39118,22 +41746,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -39296,22 +41936,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -39474,22 +42126,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -39652,22 +42316,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -39830,22 +42506,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -40008,22 +42696,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -40186,22 +42886,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -40364,22 +43076,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -40542,22 +43266,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -40720,22 +43456,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -40898,22 +43646,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -41076,22 +43836,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -41254,22 +44026,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -41432,22 +44216,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -41610,22 +44406,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -41788,22 +44596,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -41966,22 +44786,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -42144,22 +44976,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -42322,22 +45166,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -42500,22 +45356,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -42678,22 +45546,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -42856,22 +45736,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -43034,22 +45926,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -43212,22 +46116,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -43390,22 +46306,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -43568,22 +46496,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -43746,22 +46686,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -43924,22 +46876,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -44102,22 +47066,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -44280,22 +47256,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -44458,22 +47446,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -44636,22 +47636,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -44814,22 +47826,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -44992,22 +48016,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -45170,22 +48206,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -45348,22 +48396,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -45526,22 +48586,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -45704,22 +48776,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -45882,22 +48966,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -46060,22 +49156,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -46238,22 +49346,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -46416,22 +49536,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -46594,22 +49726,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -46772,22 +49916,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -46950,22 +50106,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -47128,22 +50296,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -47306,22 +50486,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -47484,22 +50676,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -47662,22 +50866,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -47840,22 +51056,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -48018,22 +51246,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -48196,22 +51436,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -48374,22 +51626,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -48552,22 +51816,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -48730,22 +52006,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -48908,22 +52196,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -49086,22 +52386,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -49264,22 +52576,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -49442,22 +52766,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -49620,22 +52956,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -49798,22 +53146,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -49976,22 +53336,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -50154,22 +53526,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -50332,22 +53716,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -50510,22 +53906,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -50688,22 +54096,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -50866,22 +54286,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -51044,22 +54476,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -51222,22 +54666,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -51400,22 +54856,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -51578,22 +55046,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -51756,22 +55236,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -51934,22 +55426,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -52112,22 +55616,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -52290,22 +55806,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -52468,22 +55996,34 @@ description: Variables in memory after executing circular_pattern3d_a_pattern.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/comparisons/ast.snap b/rust/kcl-lib/tests/comparisons/ast.snap index ec3702dac..75fc76a21 100644 --- a/rust/kcl-lib/tests/comparisons/ast.snap +++ b/rust/kcl-lib/tests/comparisons/ast.snap @@ -11,10 +11,10 @@ description: Result of parsing comparisons.kcl "expression": { "arguments": [ { - "commentStart": 7, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -27,7 +27,7 @@ description: Result of parsing comparisons.kcl }, "operator": "==", "right": { - "commentStart": 12, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -43,7 +43,7 @@ description: Result of parsing comparisons.kcl "type": "BinaryExpression" }, { - "commentStart": 15, + "commentStart": 0, "end": 0, "raw": "\"equality\"", "start": 0, @@ -78,15 +78,15 @@ description: Result of parsing comparisons.kcl "type": "ExpressionStatement" }, { - "commentStart": 27, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 34, + "commentStart": 0, "end": 0, "left": { - "commentStart": 34, + "commentStart": 0, "end": 0, "raw": "3.0", "start": 0, @@ -99,7 +99,7 @@ description: Result of parsing comparisons.kcl }, "operator": "==", "right": { - "commentStart": 41, + "commentStart": 0, "end": 0, "raw": "3.0", "start": 0, @@ -115,7 +115,7 @@ description: Result of parsing comparisons.kcl "type": "BinaryExpression" }, { - "commentStart": 46, + "commentStart": 0, "end": 0, "raw": "\"equality of floats\"", "start": 0, @@ -126,10 +126,10 @@ description: Result of parsing comparisons.kcl ], "callee": { "abs_path": false, - "commentStart": 27, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -139,7 +139,7 @@ description: Result of parsing comparisons.kcl "start": 0, "type": "Name" }, - "commentStart": 27, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -150,15 +150,15 @@ description: Result of parsing comparisons.kcl "type": "ExpressionStatement" }, { - "commentStart": 68, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 75, + "commentStart": 0, "end": 0, "left": { - "commentStart": 75, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -171,7 +171,7 @@ description: Result of parsing comparisons.kcl }, "operator": "!=", "right": { - "commentStart": 80, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -187,7 +187,7 @@ description: Result of parsing comparisons.kcl "type": "BinaryExpression" }, { - "commentStart": 83, + "commentStart": 0, "end": 0, "raw": "\"non-equality\"", "start": 0, @@ -198,10 +198,10 @@ description: Result of parsing comparisons.kcl ], "callee": { "abs_path": false, - "commentStart": 68, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -211,7 +211,7 @@ description: Result of parsing comparisons.kcl "start": 0, "type": "Name" }, - "commentStart": 68, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -222,15 +222,15 @@ description: Result of parsing comparisons.kcl "type": "ExpressionStatement" }, { - "commentStart": 99, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 106, + "commentStart": 0, "end": 0, "left": { - "commentStart": 106, + "commentStart": 0, "end": 0, "raw": "3.0", "start": 0, @@ -243,7 +243,7 @@ description: Result of parsing comparisons.kcl }, "operator": "!=", "right": { - "commentStart": 113, + "commentStart": 0, "end": 0, "raw": "4.0", "start": 0, @@ -259,7 +259,7 @@ description: Result of parsing comparisons.kcl "type": "BinaryExpression" }, { - "commentStart": 118, + "commentStart": 0, "end": 0, "raw": "\"non-equality of floats\"", "start": 0, @@ -270,10 +270,10 @@ description: Result of parsing comparisons.kcl ], "callee": { "abs_path": false, - "commentStart": 99, + "commentStart": 0, "end": 0, "name": { - "commentStart": 99, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -283,7 +283,7 @@ description: Result of parsing comparisons.kcl "start": 0, "type": "Name" }, - "commentStart": 99, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -294,15 +294,15 @@ description: Result of parsing comparisons.kcl "type": "ExpressionStatement" }, { - "commentStart": 144, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 151, + "commentStart": 0, "end": 0, "left": { - "commentStart": 151, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -315,7 +315,7 @@ description: Result of parsing comparisons.kcl }, "operator": "<", "right": { - "commentStart": 155, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -331,7 +331,7 @@ description: Result of parsing comparisons.kcl "type": "BinaryExpression" }, { - "commentStart": 158, + "commentStart": 0, "end": 0, "raw": "\"lt\"", "start": 0, @@ -342,10 +342,10 @@ description: Result of parsing comparisons.kcl ], "callee": { "abs_path": false, - "commentStart": 144, + "commentStart": 0, "end": 0, "name": { - "commentStart": 144, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -355,7 +355,7 @@ description: Result of parsing comparisons.kcl "start": 0, "type": "Name" }, - "commentStart": 144, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -366,15 +366,15 @@ description: Result of parsing comparisons.kcl "type": "ExpressionStatement" }, { - "commentStart": 164, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 171, + "commentStart": 0, "end": 0, "left": { - "commentStart": 171, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -387,7 +387,7 @@ description: Result of parsing comparisons.kcl }, "operator": "<=", "right": { - "commentStart": 176, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -403,7 +403,7 @@ description: Result of parsing comparisons.kcl "type": "BinaryExpression" }, { - "commentStart": 179, + "commentStart": 0, "end": 0, "raw": "\"lte but actually lt\"", "start": 0, @@ -414,10 +414,10 @@ description: Result of parsing comparisons.kcl ], "callee": { "abs_path": false, - "commentStart": 164, + "commentStart": 0, "end": 0, "name": { - "commentStart": 164, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -427,7 +427,7 @@ description: Result of parsing comparisons.kcl "start": 0, "type": "Name" }, - "commentStart": 164, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -438,15 +438,15 @@ description: Result of parsing comparisons.kcl "type": "ExpressionStatement" }, { - "commentStart": 202, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 209, + "commentStart": 0, "end": 0, "left": { - "commentStart": 209, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -459,7 +459,7 @@ description: Result of parsing comparisons.kcl }, "operator": "<=", "right": { - "commentStart": 214, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -475,7 +475,7 @@ description: Result of parsing comparisons.kcl "type": "BinaryExpression" }, { - "commentStart": 217, + "commentStart": 0, "end": 0, "raw": "\"lte but actually eq\"", "start": 0, @@ -486,10 +486,10 @@ description: Result of parsing comparisons.kcl ], "callee": { "abs_path": false, - "commentStart": 202, + "commentStart": 0, "end": 0, "name": { - "commentStart": 202, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -499,7 +499,7 @@ description: Result of parsing comparisons.kcl "start": 0, "type": "Name" }, - "commentStart": 202, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -510,15 +510,15 @@ description: Result of parsing comparisons.kcl "type": "ExpressionStatement" }, { - "commentStart": 240, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 247, + "commentStart": 0, "end": 0, "left": { - "commentStart": 247, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -531,7 +531,7 @@ description: Result of parsing comparisons.kcl }, "operator": ">", "right": { - "commentStart": 251, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -547,7 +547,7 @@ description: Result of parsing comparisons.kcl "type": "BinaryExpression" }, { - "commentStart": 254, + "commentStart": 0, "end": 0, "raw": "\"gt\"", "start": 0, @@ -558,10 +558,10 @@ description: Result of parsing comparisons.kcl ], "callee": { "abs_path": false, - "commentStart": 240, + "commentStart": 0, "end": 0, "name": { - "commentStart": 240, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -571,7 +571,7 @@ description: Result of parsing comparisons.kcl "start": 0, "type": "Name" }, - "commentStart": 240, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -582,15 +582,15 @@ description: Result of parsing comparisons.kcl "type": "ExpressionStatement" }, { - "commentStart": 260, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 267, + "commentStart": 0, "end": 0, "left": { - "commentStart": 267, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -603,7 +603,7 @@ description: Result of parsing comparisons.kcl }, "operator": ">=", "right": { - "commentStart": 272, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -619,7 +619,7 @@ description: Result of parsing comparisons.kcl "type": "BinaryExpression" }, { - "commentStart": 275, + "commentStart": 0, "end": 0, "raw": "\"gte but actually gt\"", "start": 0, @@ -630,10 +630,10 @@ description: Result of parsing comparisons.kcl ], "callee": { "abs_path": false, - "commentStart": 260, + "commentStart": 0, "end": 0, "name": { - "commentStart": 260, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -643,7 +643,7 @@ description: Result of parsing comparisons.kcl "start": 0, "type": "Name" }, - "commentStart": 260, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -654,15 +654,15 @@ description: Result of parsing comparisons.kcl "type": "ExpressionStatement" }, { - "commentStart": 298, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 305, + "commentStart": 0, "end": 0, "left": { - "commentStart": 305, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -675,7 +675,7 @@ description: Result of parsing comparisons.kcl }, "operator": ">=", "right": { - "commentStart": 310, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -691,7 +691,7 @@ description: Result of parsing comparisons.kcl "type": "BinaryExpression" }, { - "commentStart": 313, + "commentStart": 0, "end": 0, "raw": "\"gte but actually eq\"", "start": 0, @@ -702,10 +702,10 @@ description: Result of parsing comparisons.kcl ], "callee": { "abs_path": false, - "commentStart": 298, + "commentStart": 0, "end": 0, "name": { - "commentStart": 298, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -715,7 +715,7 @@ description: Result of parsing comparisons.kcl "start": 0, "type": "Name" }, - "commentStart": 298, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -726,15 +726,15 @@ description: Result of parsing comparisons.kcl "type": "ExpressionStatement" }, { - "commentStart": 335, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 344, + "commentStart": 0, "end": 0, "left": { - "commentStart": 344, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -747,7 +747,7 @@ description: Result of parsing comparisons.kcl }, "operator": "==", "right": { - "commentStart": 351, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -763,7 +763,7 @@ description: Result of parsing comparisons.kcl "type": "BinaryExpression" }, { - "commentStart": 356, + "commentStart": 0, "end": 0, "raw": "\"equality of zero\"", "start": 0, @@ -774,10 +774,10 @@ description: Result of parsing comparisons.kcl ], "callee": { "abs_path": false, - "commentStart": 337, + "commentStart": 0, "end": 0, "name": { - "commentStart": 337, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -787,7 +787,7 @@ description: Result of parsing comparisons.kcl "start": 0, "type": "Name" }, - "commentStart": 337, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -798,15 +798,15 @@ description: Result of parsing comparisons.kcl "type": "ExpressionStatement" }, { - "commentStart": 376, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 383, + "commentStart": 0, "end": 0, "left": { - "commentStart": 383, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -820,7 +820,7 @@ description: Result of parsing comparisons.kcl "operator": "==", "right": { "argument": { - "commentStart": 391, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -831,7 +831,7 @@ description: Result of parsing comparisons.kcl "suffix": "None" } }, - "commentStart": 390, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -843,7 +843,7 @@ description: Result of parsing comparisons.kcl "type": "BinaryExpression" }, { - "commentStart": 396, + "commentStart": 0, "end": 0, "raw": "\"equality of zero and neg zero\"", "start": 0, @@ -854,10 +854,10 @@ description: Result of parsing comparisons.kcl ], "callee": { "abs_path": false, - "commentStart": 376, + "commentStart": 0, "end": 0, "name": { - "commentStart": 376, + "commentStart": 0, "end": 0, "name": "assert", "start": 0, @@ -867,7 +867,7 @@ description: Result of parsing comparisons.kcl "start": 0, "type": "Name" }, - "commentStart": 376, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -884,7 +884,7 @@ description: Result of parsing comparisons.kcl "nonCodeNodes": { "9": [ { - "commentStart": 335, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/comparisons_multiple/ast.snap b/rust/kcl-lib/tests/comparisons_multiple/ast.snap index 4ab2f07ef..595c2b833 100644 --- a/rust/kcl-lib/tests/comparisons_multiple/ast.snap +++ b/rust/kcl-lib/tests/comparisons_multiple/ast.snap @@ -11,13 +11,13 @@ description: Result of parsing comparisons_multiple.kcl "expression": { "arguments": [ { - "commentStart": 7, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -30,7 +30,7 @@ description: Result of parsing comparisons_multiple.kcl }, "operator": "==", "right": { - "commentStart": 12, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -47,7 +47,7 @@ description: Result of parsing comparisons_multiple.kcl }, "operator": "==", "right": { - "commentStart": 17, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -63,7 +63,7 @@ description: Result of parsing comparisons_multiple.kcl "type": "BinaryExpression" }, { - "commentStart": 20, + "commentStart": 0, "end": 0, "raw": "\"this should not compile\"", "start": 0, diff --git a/rust/kcl-lib/tests/computed_var/ast.snap b/rust/kcl-lib/tests/computed_var/ast.snap index 01e3652a2..d7589b155 100644 --- a/rust/kcl-lib/tests/computed_var/ast.snap +++ b/rust/kcl-lib/tests/computed_var/ast.snap @@ -8,20 +8,20 @@ description: Result of parsing computed_var.kcl { "commentStart": 0, "declaration": { - "commentStart": 37, + "commentStart": 0, "end": 0, "id": { - "commentStart": 37, + "commentStart": 0, "end": 0, "name": "arr", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 43, + "commentStart": 0, "elements": [ { - "commentStart": 44, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -33,7 +33,7 @@ description: Result of parsing computed_var.kcl } }, { - "commentStart": 47, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -45,7 +45,7 @@ description: Result of parsing computed_var.kcl } }, { - "commentStart": 50, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -57,7 +57,7 @@ description: Result of parsing computed_var.kcl } }, { - "commentStart": 53, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -84,19 +84,19 @@ description: Result of parsing computed_var.kcl "type": "VariableDeclaration" }, { - "commentStart": 57, + "commentStart": 0, "declaration": { - "commentStart": 57, + "commentStart": 0, "end": 0, "id": { - "commentStart": 57, + "commentStart": 0, "end": 0, "name": "i", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 61, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -117,23 +117,23 @@ description: Result of parsing computed_var.kcl "type": "VariableDeclaration" }, { - "commentStart": 63, + "commentStart": 0, "declaration": { - "commentStart": 63, + "commentStart": 0, "end": 0, "id": { - "commentStart": 63, + "commentStart": 0, "end": 0, "name": "ten", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 69, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 69, + "commentStart": 0, "end": 0, "name": "arr", "start": 0, @@ -141,7 +141,7 @@ description: Result of parsing computed_var.kcl "type": "Identifier" }, "property": { - "commentStart": 73, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -162,16 +162,16 @@ description: Result of parsing computed_var.kcl "type": "VariableDeclaration" }, { - "commentStart": 75, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 89, + "commentStart": 0, "end": 0, "name": { - "commentStart": 89, + "commentStart": 0, "end": 0, "name": "ten", "start": 0, @@ -183,7 +183,7 @@ description: Result of parsing computed_var.kcl "type": "Name" }, { - "commentStart": 94, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -195,7 +195,7 @@ description: Result of parsing computed_var.kcl } }, { - "commentStart": 98, + "commentStart": 0, "end": 0, "raw": "0.000001", "start": 0, @@ -207,7 +207,7 @@ description: Result of parsing computed_var.kcl } }, { - "commentStart": 108, + "commentStart": 0, "end": 0, "raw": "\"oops\"", "start": 0, @@ -218,10 +218,10 @@ description: Result of parsing computed_var.kcl ], "callee": { "abs_path": false, - "commentStart": 77, + "commentStart": 0, "end": 0, "name": { - "commentStart": 77, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -231,7 +231,7 @@ description: Result of parsing computed_var.kcl "start": 0, "type": "Name" }, - "commentStart": 77, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -242,19 +242,19 @@ description: Result of parsing computed_var.kcl "type": "ExpressionStatement" }, { - "commentStart": 115, + "commentStart": 0, "declaration": { - "commentStart": 117, + "commentStart": 0, "end": 0, "id": { - "commentStart": 117, + "commentStart": 0, "end": 0, "name": "p", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 121, + "commentStart": 0, "end": 0, "raw": "\"foo\"", "start": 0, @@ -272,26 +272,26 @@ description: Result of parsing computed_var.kcl "type": "VariableDeclaration" }, { - "commentStart": 127, + "commentStart": 0, "declaration": { - "commentStart": 127, + "commentStart": 0, "end": 0, "id": { - "commentStart": 127, + "commentStart": 0, "end": 0, "name": "obj", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 133, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 135, + "commentStart": 0, "end": 0, "key": { - "commentStart": 135, + "commentStart": 0, "end": 0, "name": "foo", "start": 0, @@ -300,7 +300,7 @@ description: Result of parsing computed_var.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 141, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -313,10 +313,10 @@ description: Result of parsing computed_var.kcl } }, { - "commentStart": 144, + "commentStart": 0, "end": 0, "key": { - "commentStart": 144, + "commentStart": 0, "end": 0, "name": "bar", "start": 0, @@ -325,7 +325,7 @@ description: Result of parsing computed_var.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 150, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -352,23 +352,23 @@ description: Result of parsing computed_var.kcl "type": "VariableDeclaration" }, { - "commentStart": 154, + "commentStart": 0, "declaration": { - "commentStart": 154, + "commentStart": 0, "end": 0, "id": { - "commentStart": 154, + "commentStart": 0, "end": 0, "name": "one", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 160, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 160, + "commentStart": 0, "end": 0, "name": "obj", "start": 0, @@ -376,7 +376,7 @@ description: Result of parsing computed_var.kcl "type": "Identifier" }, "property": { - "commentStart": 164, + "commentStart": 0, "end": 0, "name": "p", "start": 0, @@ -397,16 +397,16 @@ description: Result of parsing computed_var.kcl "type": "VariableDeclaration" }, { - "commentStart": 166, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 180, + "commentStart": 0, "end": 0, "name": { - "commentStart": 180, + "commentStart": 0, "end": 0, "name": "one", "start": 0, @@ -418,7 +418,7 @@ description: Result of parsing computed_var.kcl "type": "Name" }, { - "commentStart": 185, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -430,7 +430,7 @@ description: Result of parsing computed_var.kcl } }, { - "commentStart": 188, + "commentStart": 0, "end": 0, "raw": "0.0000001", "start": 0, @@ -442,7 +442,7 @@ description: Result of parsing computed_var.kcl } }, { - "commentStart": 199, + "commentStart": 0, "end": 0, "raw": "\"oops\"", "start": 0, @@ -453,10 +453,10 @@ description: Result of parsing computed_var.kcl ], "callee": { "abs_path": false, - "commentStart": 168, + "commentStart": 0, "end": 0, "name": { - "commentStart": 168, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -466,7 +466,7 @@ description: Result of parsing computed_var.kcl "start": 0, "type": "Name" }, - "commentStart": 168, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -477,16 +477,16 @@ description: Result of parsing computed_var.kcl "type": "ExpressionStatement" }, { - "commentStart": 206, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 220, + "commentStart": 0, "end": 0, "name": { - "commentStart": 220, + "commentStart": 0, "end": 0, "name": "PI", "start": 0, @@ -498,7 +498,7 @@ description: Result of parsing computed_var.kcl "type": "Name" }, { - "commentStart": 224, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -510,7 +510,7 @@ description: Result of parsing computed_var.kcl } }, { - "commentStart": 227, + "commentStart": 0, "end": 0, "raw": "0.2", "start": 0, @@ -522,7 +522,7 @@ description: Result of parsing computed_var.kcl } }, { - "commentStart": 232, + "commentStart": 0, "end": 0, "raw": "\"oops pi\"", "start": 0, @@ -533,10 +533,10 @@ description: Result of parsing computed_var.kcl ], "callee": { "abs_path": false, - "commentStart": 208, + "commentStart": 0, "end": 0, "name": { - "commentStart": 208, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -546,7 +546,7 @@ description: Result of parsing computed_var.kcl "start": 0, "type": "Name" }, - "commentStart": 208, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -557,12 +557,12 @@ description: Result of parsing computed_var.kcl "type": "ExpressionStatement" }, { - "commentStart": 243, + "commentStart": 0, "declaration": { - "commentStart": 243, + "commentStart": 0, "end": 0, "id": { - "commentStart": 243, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -571,10 +571,10 @@ description: Result of parsing computed_var.kcl "init": { "arguments": [ { - "commentStart": 251, + "commentStart": 0, "end": 0, "left": { - "commentStart": 251, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -588,10 +588,10 @@ description: Result of parsing computed_var.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 255, + "commentStart": 0, "end": 0, "name": { - "commentStart": 255, + "commentStart": 0, "end": 0, "name": "PI", "start": 0, @@ -609,10 +609,10 @@ description: Result of parsing computed_var.kcl ], "callee": { "abs_path": false, - "commentStart": 247, + "commentStart": 0, "end": 0, "name": { - "commentStart": 247, + "commentStart": 0, "end": 0, "name": "cos", "start": 0, @@ -622,7 +622,7 @@ description: Result of parsing computed_var.kcl "start": 0, "type": "Name" }, - "commentStart": 247, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -638,16 +638,16 @@ description: Result of parsing computed_var.kcl "type": "VariableDeclaration" }, { - "commentStart": 259, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 271, + "commentStart": 0, "end": 0, "name": { - "commentStart": 271, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -659,7 +659,7 @@ description: Result of parsing computed_var.kcl "type": "Name" }, { - "commentStart": 274, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -671,7 +671,7 @@ description: Result of parsing computed_var.kcl } }, { - "commentStart": 277, + "commentStart": 0, "end": 0, "raw": "0.000001", "start": 0, @@ -683,7 +683,7 @@ description: Result of parsing computed_var.kcl } }, { - "commentStart": 287, + "commentStart": 0, "end": 0, "raw": "\"oops cos\"", "start": 0, @@ -694,10 +694,10 @@ description: Result of parsing computed_var.kcl ], "callee": { "abs_path": false, - "commentStart": 259, + "commentStart": 0, "end": 0, "name": { - "commentStart": 259, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -707,7 +707,7 @@ description: Result of parsing computed_var.kcl "start": 0, "type": "Name" }, - "commentStart": 259, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -724,7 +724,7 @@ description: Result of parsing computed_var.kcl "nonCodeNodes": { "2": [ { - "commentStart": 75, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -735,7 +735,7 @@ description: Result of parsing computed_var.kcl ], "3": [ { - "commentStart": 115, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -746,7 +746,7 @@ description: Result of parsing computed_var.kcl ], "6": [ { - "commentStart": 166, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -757,7 +757,7 @@ description: Result of parsing computed_var.kcl ], "7": [ { - "commentStart": 206, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -780,7 +780,7 @@ description: Result of parsing computed_var.kcl } }, { - "commentStart": 34, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/crazy_multi_profile/artifact_commands.snap b/rust/kcl-lib/tests/crazy_multi_profile/artifact_commands.snap index 403cfd8a8..91f91310a 100644 --- a/rust/kcl-lib/tests/crazy_multi_profile/artifact_commands.snap +++ b/rust/kcl-lib/tests/crazy_multi_profile/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands crazy_multi_profile.kcl "type": "extrude", "target": "[uuid]", "distance": 20.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -743,7 +744,8 @@ description: Artifact commands crazy_multi_profile.kcl "unit": "degrees", "value": 45.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -842,7 +844,8 @@ description: Artifact commands crazy_multi_profile.kcl "type": "extrude", "target": "[uuid]", "distance": 4.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1453,7 +1456,8 @@ description: Artifact commands crazy_multi_profile.kcl "type": "extrude", "target": "[uuid]", "distance": 2.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1571,7 +1575,8 @@ description: Artifact commands crazy_multi_profile.kcl "unit": "degrees", "value": 45.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/crazy_multi_profile/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/crazy_multi_profile/artifact_graph_flowchart.snap.md index 8f8f11bcc..b8d7f6014 100644 --- a/rust/kcl-lib/tests/crazy_multi_profile/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/crazy_multi_profile/artifact_graph_flowchart.snap.md @@ -9,73 +9,73 @@ flowchart LR 7[Solid2d] end subgraph path20 [Path] - 20["Path
[354, 394, 0]"] - 21["Segment
[400, 424, 0]"] - 22["Segment
[430, 455, 0]"] + 20["Path
[361, 401, 0]"] + 21["Segment
[407, 431, 0]"] + 22["Segment
[437, 462, 0]"] end subgraph path23 [Path] - 23["Path
[469, 508, 0]"] - 24["Segment
[514, 561, 0]"] - 25["Segment
[567, 644, 0]"] - 26["Segment
[650, 747, 0]"] - 27["Segment
[753, 809, 0]"] - 28["Segment
[815, 822, 0]"] + 23["Path
[476, 515, 0]"] + 24["Segment
[521, 586, 0]"] + 25["Segment
[592, 660, 0]"] + 26["Segment
[666, 754, 0]"] + 27["Segment
[760, 816, 0]"] + 28["Segment
[822, 829, 0]"] 29[Solid2d] end subgraph path30 [Path] - 30["Path
[836, 875, 0]"] - 31["Segment
[881, 901, 0]"] - 32["Segment
[907, 933, 0]"] - 33["Segment
[939, 995, 0]"] - 34["Segment
[1001, 1008, 0]"] + 30["Path
[843, 882, 0]"] + 31["Segment
[888, 908, 0]"] + 32["Segment
[914, 940, 0]"] + 33["Segment
[946, 1002, 0]"] + 34["Segment
[1008, 1015, 0]"] 35[Solid2d] end subgraph path36 [Path] - 36["Path
[1022, 1077, 0]"] - 37["Segment
[1022, 1077, 0]"] + 36["Path
[1029, 1084, 0]"] + 37["Segment
[1029, 1084, 0]"] 38[Solid2d] end subgraph path39 [Path] - 39["Path
[1091, 1130, 0]"] - 40["Segment
[1136, 1160, 0]"] - 41["Segment
[1166, 1191, 0]"] - 42["Segment
[1197, 1253, 0]"] - 43["Segment
[1259, 1266, 0]"] + 39["Path
[1098, 1137, 0]"] + 40["Segment
[1143, 1167, 0]"] + 41["Segment
[1173, 1198, 0]"] + 42["Segment
[1204, 1260, 0]"] + 43["Segment
[1266, 1273, 0]"] 44[Solid2d] end subgraph path59 [Path] - 59["Path
[1438, 1476, 0]"] - 60["Segment
[1482, 1506, 0]"] - 61["Segment
[1512, 1537, 0]"] + 59["Path
[1445, 1483, 0]"] + 60["Segment
[1489, 1513, 0]"] + 61["Segment
[1519, 1544, 0]"] end subgraph path62 [Path] - 62["Path
[1551, 1590, 0]"] - 63["Segment
[1596, 1620, 0]"] - 64["Segment
[1626, 1651, 0]"] - 65["Segment
[1657, 1713, 0]"] - 66["Segment
[1719, 1726, 0]"] + 62["Path
[1558, 1597, 0]"] + 63["Segment
[1603, 1627, 0]"] + 64["Segment
[1633, 1658, 0]"] + 65["Segment
[1664, 1720, 0]"] + 66["Segment
[1726, 1733, 0]"] 67[Solid2d] end subgraph path68 [Path] - 68["Path
[1740, 1779, 0]"] - 69["Segment
[1785, 1808, 0]"] - 70["Segment
[1814, 1839, 0]"] - 71["Segment
[1845, 1901, 0]"] - 72["Segment
[1907, 1914, 0]"] + 68["Path
[1747, 1786, 0]"] + 69["Segment
[1792, 1815, 0]"] + 70["Segment
[1821, 1846, 0]"] + 71["Segment
[1852, 1908, 0]"] + 72["Segment
[1914, 1921, 0]"] 73[Solid2d] end subgraph path74 [Path] - 74["Path
[1928, 1984, 0]"] - 75["Segment
[1928, 1984, 0]"] + 74["Path
[1935, 1991, 0]"] + 75["Segment
[1935, 1991, 0]"] 76[Solid2d] end subgraph path77 [Path] - 77["Path
[1998, 2038, 0]"] - 78["Segment
[2044, 2091, 0]"] - 79["Segment
[2097, 2174, 0]"] - 80["Segment
[2180, 2277, 0]"] - 81["Segment
[2283, 2339, 0]"] - 82["Segment
[2345, 2352, 0]"] + 77["Path
[2005, 2045, 0]"] + 78["Segment
[2051, 2116, 0]"] + 79["Segment
[2122, 2190, 0]"] + 80["Segment
[2196, 2284, 0]"] + 81["Segment
[2290, 2346, 0]"] + 82["Segment
[2352, 2359, 0]"] 83[Solid2d] end 1["Plane
[12, 31, 0]"] @@ -91,8 +91,8 @@ flowchart LR 17["SweepEdge Adjacent"] 18["SweepEdge Opposite"] 19["SweepEdge Adjacent"] - 45["Sweep RevolveAboutEdge
[1280, 1346, 0]"] - 46["Sweep Extrusion
[1360, 1391, 0]"] + 45["Sweep RevolveAboutEdge
[1287, 1353, 0]"] + 46["Sweep Extrusion
[1367, 1398, 0]"] 47[Wall] 48[Wall] 49[Wall] @@ -104,8 +104,8 @@ flowchart LR 55["SweepEdge Adjacent"] 56["SweepEdge Opposite"] 57["SweepEdge Adjacent"] - 58["Plane
[1404, 1424, 0]"] - 84["Sweep Extrusion
[2366, 2399, 0]"] + 58["Plane
[1411, 1431, 0]"] + 84["Sweep Extrusion
[2373, 2406, 0]"] 85[Wall] 86[Wall] 87[Wall] @@ -120,7 +120,7 @@ flowchart LR 96["SweepEdge Adjacent"] 97["SweepEdge Opposite"] 98["SweepEdge Adjacent"] - 99["Sweep RevolveAboutEdge
[2413, 2458, 0]"] + 99["Sweep RevolveAboutEdge
[2420, 2465, 0]"] 100[Wall] 101[Wall] 102[Wall] @@ -132,7 +132,7 @@ flowchart LR 108["SweepEdge Adjacent"] 109["SweepEdge Opposite"] 110["SweepEdge Adjacent"] - 111["StartSketchOnFace
[308, 340, 0]"] + 111["StartSketchOnFace
[308, 347, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/crazy_multi_profile/ast.snap b/rust/kcl-lib/tests/crazy_multi_profile/ast.snap index 1cc70b3b7..aa48268f6 100644 --- a/rust/kcl-lib/tests/crazy_multi_profile/ast.snap +++ b/rust/kcl-lib/tests/crazy_multi_profile/ast.snap @@ -20,7 +20,7 @@ description: Result of parsing crazy_multi_profile.kcl "init": { "arguments": [ { - "commentStart": 26, + "commentStart": 0, "end": 0, "raw": "'XZ'", "start": 0, @@ -31,10 +31,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 12, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -44,7 +44,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -60,12 +60,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 32, + "commentStart": 0, "declaration": { - "commentStart": 32, + "commentStart": 0, "end": 0, "id": { - "commentStart": 32, + "commentStart": 0, "end": 0, "name": "profile001", "start": 0, @@ -76,10 +76,10 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 60, + "commentStart": 0, "elements": [ { - "commentStart": 61, + "commentStart": 0, "end": 0, "raw": "6.71", "start": 0, @@ -92,7 +92,7 @@ description: Result of parsing crazy_multi_profile.kcl }, { "argument": { - "commentStart": 68, + "commentStart": 0, "end": 0, "raw": "3.66", "start": 0, @@ -103,7 +103,7 @@ description: Result of parsing crazy_multi_profile.kcl "suffix": "None" } }, - "commentStart": 67, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -118,10 +118,10 @@ description: Result of parsing crazy_multi_profile.kcl }, { "abs_path": false, - "commentStart": 75, + "commentStart": 0, "end": 0, "name": { - "commentStart": 75, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -135,10 +135,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 45, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -148,7 +148,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 45, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -159,17 +159,17 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 96, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 102, + "commentStart": 0, "elements": [ { - "commentStart": 103, + "commentStart": 0, "end": 0, "raw": "2.65", "start": 0, @@ -181,7 +181,7 @@ description: Result of parsing crazy_multi_profile.kcl } }, { - "commentStart": 109, + "commentStart": 0, "end": 0, "raw": "9.02", "start": 0, @@ -202,14 +202,14 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 116, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 122, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -220,10 +220,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 91, + "commentStart": 0, "end": 0, "name": { - "commentStart": 91, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -233,7 +233,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 91, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -245,17 +245,17 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 140, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 146, + "commentStart": 0, "elements": [ { - "commentStart": 147, + "commentStart": 0, "end": 0, "raw": "3.73", "start": 0, @@ -268,7 +268,7 @@ description: Result of parsing crazy_multi_profile.kcl }, { "argument": { - "commentStart": 154, + "commentStart": 0, "end": 0, "raw": "9.36", "start": 0, @@ -279,7 +279,7 @@ description: Result of parsing crazy_multi_profile.kcl "suffix": "None" } }, - "commentStart": 153, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -296,14 +296,14 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 161, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 167, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -314,10 +314,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 135, + "commentStart": 0, "end": 0, "name": { - "commentStart": 135, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -327,7 +327,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 135, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -339,19 +339,19 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 185, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 199, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 214, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -360,10 +360,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 200, + "commentStart": 0, "end": 0, "name": { - "commentStart": 200, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -373,7 +373,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 200, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -382,7 +382,7 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 232, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -391,10 +391,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 218, + "commentStart": 0, "end": 0, "name": { - "commentStart": 218, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -404,7 +404,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 218, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -420,10 +420,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 180, + "commentStart": 0, "end": 0, "name": { - "commentStart": 180, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -433,7 +433,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 180, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -444,10 +444,10 @@ description: Result of parsing crazy_multi_profile.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 242, + "commentStart": 0, "end": 0, "name": { - "commentStart": 242, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -457,14 +457,14 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 242, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 45, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -480,12 +480,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 250, + "commentStart": 0, "declaration": { - "commentStart": 250, + "commentStart": 0, "end": 0, "id": { - "commentStart": 250, + "commentStart": 0, "end": 0, "name": "extrude001", "start": 0, @@ -496,14 +496,14 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 283, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 292, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -518,10 +518,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 263, + "commentStart": 0, "end": 0, "name": { - "commentStart": 263, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -531,17 +531,17 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 263, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 271, + "commentStart": 0, "end": 0, "name": { - "commentStart": 271, + "commentStart": 0, "end": 0, "name": "profile001", "start": 0, @@ -563,12 +563,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 296, + "commentStart": 0, "declaration": { - "commentStart": 296, + "commentStart": 0, "end": 0, "id": { - "commentStart": 296, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -577,44 +577,38 @@ description: Result of parsing crazy_multi_profile.kcl "init": { "arguments": [ { - "abs_path": false, - "commentStart": 322, - "end": 0, - "name": { - "commentStart": 322, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 334, - "end": 0, - "name": { - "commentStart": 334, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg01", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg01", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 308, + "commentStart": 0, "end": 0, "name": { - "commentStart": 308, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -624,11 +618,27 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 308, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, "start": 0, "type": "VariableDeclarator" @@ -640,12 +650,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 341, + "commentStart": 0, "declaration": { - "commentStart": 341, + "commentStart": 0, "end": 0, "id": { - "commentStart": 341, + "commentStart": 0, "end": 0, "name": "profile002", "start": 0, @@ -656,10 +666,10 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 369, + "commentStart": 0, "elements": [ { - "commentStart": 370, + "commentStart": 0, "end": 0, "raw": "0.75", "start": 0, @@ -671,7 +681,7 @@ description: Result of parsing crazy_multi_profile.kcl } }, { - "commentStart": 376, + "commentStart": 0, "end": 0, "raw": "13.46", "start": 0, @@ -690,10 +700,10 @@ description: Result of parsing crazy_multi_profile.kcl }, { "abs_path": false, - "commentStart": 384, + "commentStart": 0, "end": 0, "name": { - "commentStart": 384, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -707,10 +717,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 354, + "commentStart": 0, "end": 0, "name": { - "commentStart": 354, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -720,7 +730,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 354, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -731,17 +741,17 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 405, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 411, + "commentStart": 0, "elements": [ { - "commentStart": 412, + "commentStart": 0, "end": 0, "raw": "4.52", "start": 0, @@ -753,7 +763,7 @@ description: Result of parsing crazy_multi_profile.kcl } }, { - "commentStart": 418, + "commentStart": 0, "end": 0, "raw": "3.79", "start": 0, @@ -774,10 +784,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 400, + "commentStart": 0, "end": 0, "name": { - "commentStart": 400, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -787,7 +797,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 400, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -799,17 +809,17 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 435, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 441, + "commentStart": 0, "elements": [ { - "commentStart": 442, + "commentStart": 0, "end": 0, "raw": "5.98", "start": 0, @@ -822,7 +832,7 @@ description: Result of parsing crazy_multi_profile.kcl }, { "argument": { - "commentStart": 449, + "commentStart": 0, "end": 0, "raw": "2.81", "start": 0, @@ -833,7 +843,7 @@ description: Result of parsing crazy_multi_profile.kcl "suffix": "None" } }, - "commentStart": 448, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -850,10 +860,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 430, + "commentStart": 0, "end": 0, "name": { - "commentStart": 430, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -863,7 +873,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 430, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -871,7 +881,7 @@ description: Result of parsing crazy_multi_profile.kcl "unlabeled": null } ], - "commentStart": 354, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -887,12 +897,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 456, + "commentStart": 0, "declaration": { - "commentStart": 456, + "commentStart": 0, "end": 0, "id": { - "commentStart": 456, + "commentStart": 0, "end": 0, "name": "profile003", "start": 0, @@ -903,10 +913,10 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 484, + "commentStart": 0, "elements": [ { - "commentStart": 485, + "commentStart": 0, "end": 0, "raw": "3.19", "start": 0, @@ -918,7 +928,7 @@ description: Result of parsing crazy_multi_profile.kcl } }, { - "commentStart": 491, + "commentStart": 0, "end": 0, "raw": "13.3", "start": 0, @@ -937,10 +947,10 @@ description: Result of parsing crazy_multi_profile.kcl }, { "abs_path": false, - "commentStart": 498, + "commentStart": 0, "end": 0, "name": { - "commentStart": 498, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -954,10 +964,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 469, + "commentStart": 0, "end": 0, "name": { - "commentStart": 469, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -967,7 +977,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 469, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -976,60 +986,74 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 525, - "elements": [ - { - "commentStart": 526, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 529, - "end": 0, - "raw": "6.64", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 6.64, - "suffix": "None" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 536, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "6.64", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 6.64, + "suffix": "None" + } + } }, { - "commentStart": 539, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA001" + } } ], "callee": { "abs_path": false, - "commentStart": 514, + "commentStart": 0, "end": 0, "name": { - "commentStart": 514, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -1039,137 +1063,35 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 514, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 578, - "elements": [ - { - "commentStart": 587, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 594, - "end": 0, - "name": { - "commentStart": 594, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 587, - "end": 0, - "name": { - "commentStart": 587, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 587, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 618, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "commentStart": 629, - "end": 0, - "raw": "2.81", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.81, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 642, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 567, - "end": 0, - "name": { - "commentStart": 567, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 567, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 661, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 677, + "commentStart": 0, "end": 0, "name": { - "commentStart": 677, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA001", "start": 0, @@ -1183,10 +1105,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 670, + "commentStart": 0, "end": 0, "name": { - "commentStart": 670, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -1196,80 +1118,59 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 670, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 715, - "end": 0, - "name": { - "commentStart": 715, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 708, - "end": 0, - "name": { - "commentStart": 708, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 708, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 707, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 745, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "2.81", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.81, + "suffix": "None" + } + } } ], "callee": { "abs_path": false, - "commentStart": 650, + "commentStart": 0, "end": 0, "name": { - "commentStart": 650, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -1279,30 +1180,164 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 650, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 758, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 772, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 787, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1311,10 +1346,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 773, + "commentStart": 0, "end": 0, "name": { - "commentStart": 773, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -1324,7 +1359,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 773, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1333,7 +1368,7 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 805, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1342,10 +1377,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 791, + "commentStart": 0, "end": 0, "name": { - "commentStart": 791, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -1355,7 +1390,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 791, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1371,10 +1406,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 753, + "commentStart": 0, "end": 0, "name": { - "commentStart": 753, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1384,7 +1419,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 753, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1395,10 +1430,10 @@ description: Result of parsing crazy_multi_profile.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 815, + "commentStart": 0, "end": 0, "name": { - "commentStart": 815, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1408,14 +1443,14 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 815, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 469, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1431,12 +1466,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 823, + "commentStart": 0, "declaration": { - "commentStart": 823, + "commentStart": 0, "end": 0, "id": { - "commentStart": 823, + "commentStart": 0, "end": 0, "name": "profile004", "start": 0, @@ -1447,10 +1482,10 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 851, + "commentStart": 0, "elements": [ { - "commentStart": 852, + "commentStart": 0, "end": 0, "raw": "3.15", "start": 0, @@ -1462,7 +1497,7 @@ description: Result of parsing crazy_multi_profile.kcl } }, { - "commentStart": 858, + "commentStart": 0, "end": 0, "raw": "9.39", "start": 0, @@ -1481,10 +1516,10 @@ description: Result of parsing crazy_multi_profile.kcl }, { "abs_path": false, - "commentStart": 865, + "commentStart": 0, "end": 0, "name": { - "commentStart": 865, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -1498,10 +1533,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 836, + "commentStart": 0, "end": 0, "name": { - "commentStart": 836, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1511,7 +1546,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 836, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1522,14 +1557,14 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 887, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 896, + "commentStart": 0, "end": 0, "raw": "6.92", "start": 0, @@ -1544,10 +1579,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 881, + "commentStart": 0, "end": 0, "name": { - "commentStart": 881, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1557,7 +1592,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 881, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1569,18 +1604,18 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 912, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 918, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 920, + "commentStart": 0, "end": 0, "raw": "7.41", "start": 0, @@ -1591,7 +1626,7 @@ description: Result of parsing crazy_multi_profile.kcl "suffix": "None" } }, - "commentStart": 919, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1600,7 +1635,7 @@ description: Result of parsing crazy_multi_profile.kcl }, { "argument": { - "commentStart": 927, + "commentStart": 0, "end": 0, "raw": "2.85", "start": 0, @@ -1611,7 +1646,7 @@ description: Result of parsing crazy_multi_profile.kcl "suffix": "None" } }, - "commentStart": 926, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1628,10 +1663,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 907, + "commentStart": 0, "end": 0, "name": { - "commentStart": 907, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1641,7 +1676,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 907, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1653,19 +1688,19 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 944, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 958, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 973, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1674,10 +1709,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 959, + "commentStart": 0, "end": 0, "name": { - "commentStart": 959, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -1687,7 +1722,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 959, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1696,7 +1731,7 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 991, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1705,10 +1740,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 977, + "commentStart": 0, "end": 0, "name": { - "commentStart": 977, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -1718,7 +1753,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 977, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1734,10 +1769,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 939, + "commentStart": 0, "end": 0, "name": { - "commentStart": 939, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1747,7 +1782,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 939, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1758,10 +1793,10 @@ description: Result of parsing crazy_multi_profile.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1001, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1001, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1771,14 +1806,14 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1001, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 836, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1794,12 +1829,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 1009, + "commentStart": 0, "declaration": { - "commentStart": 1009, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1009, + "commentStart": 0, "end": 0, "name": "profile005", "start": 0, @@ -1810,17 +1845,17 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1040, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1049, + "commentStart": 0, "elements": [ { - "commentStart": 1050, + "commentStart": 0, "end": 0, "raw": "5.15", "start": 0, @@ -1832,7 +1867,7 @@ description: Result of parsing crazy_multi_profile.kcl } }, { - "commentStart": 1056, + "commentStart": 0, "end": 0, "raw": "4.34", "start": 0, @@ -1853,14 +1888,14 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1063, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1072, + "commentStart": 0, "end": 0, "raw": "1.66", "start": 0, @@ -1875,10 +1910,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1022, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1022, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1888,17 +1923,17 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1022, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1029, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1029, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -1920,12 +1955,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 1078, + "commentStart": 0, "declaration": { - "commentStart": 1078, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1078, + "commentStart": 0, "end": 0, "name": "profile006", "start": 0, @@ -1936,10 +1971,10 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 1106, + "commentStart": 0, "elements": [ { - "commentStart": 1107, + "commentStart": 0, "end": 0, "raw": "9.65", "start": 0, @@ -1951,7 +1986,7 @@ description: Result of parsing crazy_multi_profile.kcl } }, { - "commentStart": 1113, + "commentStart": 0, "end": 0, "raw": "3.82", "start": 0, @@ -1970,10 +2005,10 @@ description: Result of parsing crazy_multi_profile.kcl }, { "abs_path": false, - "commentStart": 1120, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1120, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -1987,10 +2022,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1091, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1091, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2000,7 +2035,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1091, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2011,17 +2046,17 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1141, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1147, + "commentStart": 0, "elements": [ { - "commentStart": 1148, + "commentStart": 0, "end": 0, "raw": "2.38", "start": 0, @@ -2033,7 +2068,7 @@ description: Result of parsing crazy_multi_profile.kcl } }, { - "commentStart": 1154, + "commentStart": 0, "end": 0, "raw": "5.62", "start": 0, @@ -2054,10 +2089,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1136, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1136, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2067,7 +2102,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1136, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2079,17 +2114,17 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1171, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1177, + "commentStart": 0, "elements": [ { - "commentStart": 1178, + "commentStart": 0, "end": 0, "raw": "2.13", "start": 0, @@ -2102,7 +2137,7 @@ description: Result of parsing crazy_multi_profile.kcl }, { "argument": { - "commentStart": 1185, + "commentStart": 0, "end": 0, "raw": "5.57", "start": 0, @@ -2113,7 +2148,7 @@ description: Result of parsing crazy_multi_profile.kcl "suffix": "None" } }, - "commentStart": 1184, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2130,10 +2165,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1166, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1166, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2143,7 +2178,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1166, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2155,19 +2190,19 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1202, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1216, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1231, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2176,10 +2211,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1217, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1217, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -2189,7 +2224,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1217, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2198,7 +2233,7 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 1249, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2207,10 +2242,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1235, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1235, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -2220,7 +2255,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1235, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2236,10 +2271,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1197, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1197, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2249,7 +2284,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1197, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2260,10 +2295,10 @@ description: Result of parsing crazy_multi_profile.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1259, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1259, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2273,14 +2308,14 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1259, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1091, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2296,12 +2331,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 1267, + "commentStart": 0, "declaration": { - "commentStart": 1267, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1267, + "commentStart": 0, "end": 0, "name": "revolve001", "start": 0, @@ -2312,14 +2347,14 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1300, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1308, + "commentStart": 0, "end": 0, "raw": "45", "start": 0, @@ -2334,7 +2369,7 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1312, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -2344,10 +2379,10 @@ description: Result of parsing crazy_multi_profile.kcl "arguments": [ { "abs_path": false, - "commentStart": 1339, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1339, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -2361,10 +2396,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1319, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1319, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -2374,7 +2409,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1319, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2384,10 +2419,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1280, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1280, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -2397,17 +2432,17 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1280, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1288, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1288, + "commentStart": 0, "end": 0, "name": "profile004", "start": 0, @@ -2429,12 +2464,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 1347, + "commentStart": 0, "declaration": { - "commentStart": 1347, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1347, + "commentStart": 0, "end": 0, "name": "extrude002", "start": 0, @@ -2445,14 +2480,14 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1380, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1389, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -2467,10 +2502,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1360, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1360, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2480,17 +2515,17 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1360, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1368, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1368, + "commentStart": 0, "end": 0, "name": "profile006", "start": 0, @@ -2512,12 +2547,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 1392, + "commentStart": 0, "declaration": { - "commentStart": 1392, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1392, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -2526,7 +2561,7 @@ description: Result of parsing crazy_multi_profile.kcl "init": { "arguments": [ { - "commentStart": 1418, + "commentStart": 0, "end": 0, "raw": "'-XZ'", "start": 0, @@ -2537,10 +2572,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1404, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1404, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2550,7 +2585,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1404, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2566,12 +2601,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 1425, + "commentStart": 0, "declaration": { - "commentStart": 1425, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1425, + "commentStart": 0, "end": 0, "name": "profile007", "start": 0, @@ -2582,10 +2617,10 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 1453, + "commentStart": 0, "elements": [ { - "commentStart": 1454, + "commentStart": 0, "end": 0, "raw": "4.8", "start": 0, @@ -2597,7 +2632,7 @@ description: Result of parsing crazy_multi_profile.kcl } }, { - "commentStart": 1459, + "commentStart": 0, "end": 0, "raw": "7.55", "start": 0, @@ -2616,10 +2651,10 @@ description: Result of parsing crazy_multi_profile.kcl }, { "abs_path": false, - "commentStart": 1466, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1466, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -2633,10 +2668,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1438, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1438, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2646,7 +2681,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1438, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2657,17 +2692,17 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1487, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1493, + "commentStart": 0, "elements": [ { - "commentStart": 1494, + "commentStart": 0, "end": 0, "raw": "7.39", "start": 0, @@ -2679,7 +2714,7 @@ description: Result of parsing crazy_multi_profile.kcl } }, { - "commentStart": 1500, + "commentStart": 0, "end": 0, "raw": "2.58", "start": 0, @@ -2700,10 +2735,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1482, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1482, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2713,7 +2748,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1482, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2725,17 +2760,17 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1517, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1523, + "commentStart": 0, "elements": [ { - "commentStart": 1524, + "commentStart": 0, "end": 0, "raw": "7.02", "start": 0, @@ -2748,7 +2783,7 @@ description: Result of parsing crazy_multi_profile.kcl }, { "argument": { - "commentStart": 1531, + "commentStart": 0, "end": 0, "raw": "2.85", "start": 0, @@ -2759,7 +2794,7 @@ description: Result of parsing crazy_multi_profile.kcl "suffix": "None" } }, - "commentStart": 1530, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2776,10 +2811,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1512, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1512, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2789,7 +2824,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1512, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2797,7 +2832,7 @@ description: Result of parsing crazy_multi_profile.kcl "unlabeled": null } ], - "commentStart": 1438, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2813,12 +2848,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 1538, + "commentStart": 0, "declaration": { - "commentStart": 1538, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1538, + "commentStart": 0, "end": 0, "name": "profile008", "start": 0, @@ -2829,10 +2864,10 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 1566, + "commentStart": 0, "elements": [ { - "commentStart": 1567, + "commentStart": 0, "end": 0, "raw": "5.54", "start": 0, @@ -2844,7 +2879,7 @@ description: Result of parsing crazy_multi_profile.kcl } }, { - "commentStart": 1573, + "commentStart": 0, "end": 0, "raw": "5.49", "start": 0, @@ -2863,10 +2898,10 @@ description: Result of parsing crazy_multi_profile.kcl }, { "abs_path": false, - "commentStart": 1580, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1580, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -2880,10 +2915,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1551, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1551, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2893,7 +2928,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1551, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2904,17 +2939,17 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1601, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1607, + "commentStart": 0, "elements": [ { - "commentStart": 1608, + "commentStart": 0, "end": 0, "raw": "6.34", "start": 0, @@ -2926,7 +2961,7 @@ description: Result of parsing crazy_multi_profile.kcl } }, { - "commentStart": 1614, + "commentStart": 0, "end": 0, "raw": "2.64", "start": 0, @@ -2947,10 +2982,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1596, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1596, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2960,7 +2995,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1596, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2972,17 +3007,17 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1631, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1637, + "commentStart": 0, "elements": [ { - "commentStart": 1638, + "commentStart": 0, "end": 0, "raw": "6.33", "start": 0, @@ -2995,7 +3030,7 @@ description: Result of parsing crazy_multi_profile.kcl }, { "argument": { - "commentStart": 1645, + "commentStart": 0, "end": 0, "raw": "2.96", "start": 0, @@ -3006,7 +3041,7 @@ description: Result of parsing crazy_multi_profile.kcl "suffix": "None" } }, - "commentStart": 1644, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3023,10 +3058,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1626, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1626, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3036,7 +3071,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1626, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3048,19 +3083,19 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1662, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1676, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1691, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3069,10 +3104,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1677, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1677, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -3082,7 +3117,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1677, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3091,7 +3126,7 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 1709, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3100,10 +3135,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1695, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1695, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -3113,7 +3148,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1695, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3129,10 +3164,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1657, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1657, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3142,7 +3177,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1657, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3153,10 +3188,10 @@ description: Result of parsing crazy_multi_profile.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1719, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1719, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -3166,14 +3201,14 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1719, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1551, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -3189,12 +3224,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 1727, + "commentStart": 0, "declaration": { - "commentStart": 1727, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1727, + "commentStart": 0, "end": 0, "name": "profile009", "start": 0, @@ -3205,10 +3240,10 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 1755, + "commentStart": 0, "elements": [ { - "commentStart": 1756, + "commentStart": 0, "end": 0, "raw": "5.23", "start": 0, @@ -3220,7 +3255,7 @@ description: Result of parsing crazy_multi_profile.kcl } }, { - "commentStart": 1762, + "commentStart": 0, "end": 0, "raw": "1.95", "start": 0, @@ -3239,10 +3274,10 @@ description: Result of parsing crazy_multi_profile.kcl }, { "abs_path": false, - "commentStart": 1769, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1769, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -3256,10 +3291,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1740, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1740, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -3269,7 +3304,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1740, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3280,17 +3315,17 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1790, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1796, + "commentStart": 0, "elements": [ { - "commentStart": 1797, + "commentStart": 0, "end": 0, "raw": "6.8", "start": 0, @@ -3302,7 +3337,7 @@ description: Result of parsing crazy_multi_profile.kcl } }, { - "commentStart": 1802, + "commentStart": 0, "end": 0, "raw": "2.17", "start": 0, @@ -3323,10 +3358,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1785, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1785, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3336,7 +3371,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1785, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3348,17 +3383,17 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1819, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1825, + "commentStart": 0, "elements": [ { - "commentStart": 1826, + "commentStart": 0, "end": 0, "raw": "7.34", "start": 0, @@ -3371,7 +3406,7 @@ description: Result of parsing crazy_multi_profile.kcl }, { "argument": { - "commentStart": 1833, + "commentStart": 0, "end": 0, "raw": "2.75", "start": 0, @@ -3382,7 +3417,7 @@ description: Result of parsing crazy_multi_profile.kcl "suffix": "None" } }, - "commentStart": 1832, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3399,10 +3434,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1814, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1814, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3412,7 +3447,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1814, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3424,19 +3459,19 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1850, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1864, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1879, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3445,10 +3480,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1865, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1865, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -3458,7 +3493,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1865, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3467,7 +3502,7 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 1897, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3476,10 +3511,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1883, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1883, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -3489,7 +3524,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1883, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3505,10 +3540,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1845, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1845, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3518,7 +3553,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1845, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3529,10 +3564,10 @@ description: Result of parsing crazy_multi_profile.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1907, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1907, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -3542,14 +3577,14 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1907, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1740, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -3565,12 +3600,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 1915, + "commentStart": 0, "declaration": { - "commentStart": 1915, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1915, + "commentStart": 0, "end": 0, "name": "profile010", "start": 0, @@ -3581,17 +3616,17 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1946, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1955, + "commentStart": 0, "elements": [ { - "commentStart": 1956, + "commentStart": 0, "end": 0, "raw": "7.18", "start": 0, @@ -3604,7 +3639,7 @@ description: Result of parsing crazy_multi_profile.kcl }, { "argument": { - "commentStart": 1963, + "commentStart": 0, "end": 0, "raw": "2.11", "start": 0, @@ -3615,7 +3650,7 @@ description: Result of parsing crazy_multi_profile.kcl "suffix": "None" } }, - "commentStart": 1962, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3632,14 +3667,14 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 1970, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1979, + "commentStart": 0, "end": 0, "raw": "2.67", "start": 0, @@ -3654,10 +3689,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1928, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1928, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -3667,17 +3702,17 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1928, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1935, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1935, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -3699,12 +3734,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 1985, + "commentStart": 0, "declaration": { - "commentStart": 1985, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1985, + "commentStart": 0, "end": 0, "name": "profile011", "start": 0, @@ -3715,10 +3750,10 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 2013, + "commentStart": 0, "elements": [ { - "commentStart": 2014, + "commentStart": 0, "end": 0, "raw": "5.07", "start": 0, @@ -3731,7 +3766,7 @@ description: Result of parsing crazy_multi_profile.kcl }, { "argument": { - "commentStart": 2021, + "commentStart": 0, "end": 0, "raw": "6.39", "start": 0, @@ -3742,7 +3777,7 @@ description: Result of parsing crazy_multi_profile.kcl "suffix": "None" } }, - "commentStart": 2020, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3757,10 +3792,10 @@ description: Result of parsing crazy_multi_profile.kcl }, { "abs_path": false, - "commentStart": 2028, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2028, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -3774,10 +3809,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 1998, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1998, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -3787,7 +3822,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 1998, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3796,60 +3831,74 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 2055, - "elements": [ - { - "commentStart": 2056, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 2059, - "end": 0, - "raw": "4.54", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 4.54, - "suffix": "None" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 2066, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "4.54", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 4.54, + "suffix": "None" + } + } }, { - "commentStart": 2069, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA002" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA002" + } } ], "callee": { "abs_path": false, - "commentStart": 2044, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2044, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -3859,137 +3908,35 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 2044, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 2108, - "elements": [ - { - "commentStart": 2117, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 2124, - "end": 0, - "name": { - "commentStart": 2124, - "end": 0, - "name": "rectangleSegmentA002", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2117, - "end": 0, - "name": { - "commentStart": 2117, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2117, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 2148, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "commentStart": 2159, - "end": 0, - "raw": "4.17", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 4.17, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2172, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2097, - "end": 0, - "name": { - "commentStart": 2097, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2097, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2191, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 2207, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2207, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA002", "start": 0, @@ -4003,10 +3950,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 2200, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2200, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -4016,80 +3963,59 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 2200, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 2245, - "end": 0, - "name": { - "commentStart": 2245, - "end": 0, - "name": "rectangleSegmentA002", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2238, - "end": 0, - "name": { - "commentStart": 2238, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2238, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 2237, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 2275, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "4.17", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 4.17, + "suffix": "None" + } + } } ], "callee": { "abs_path": false, - "commentStart": 2180, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2180, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -4099,30 +4025,164 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 2180, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2288, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA002", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA002", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2302, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 2317, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4131,10 +4191,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 2303, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2303, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -4144,7 +4204,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 2303, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4153,7 +4213,7 @@ description: Result of parsing crazy_multi_profile.kcl { "arguments": [ { - "commentStart": 2335, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4162,10 +4222,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 2321, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2321, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -4175,7 +4235,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 2321, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4191,10 +4251,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 2283, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2283, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4204,7 +4264,7 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 2283, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4215,10 +4275,10 @@ description: Result of parsing crazy_multi_profile.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2345, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2345, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -4228,14 +4288,14 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 2345, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1998, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -4251,12 +4311,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 2353, + "commentStart": 0, "declaration": { - "commentStart": 2353, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2353, + "commentStart": 0, "end": 0, "name": "extrude003", "start": 0, @@ -4267,14 +4327,14 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 2386, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2395, + "commentStart": 0, "end": 0, "raw": "2.5", "start": 0, @@ -4289,10 +4349,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 2366, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2366, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -4302,17 +4362,17 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 2366, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2374, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2374, + "commentStart": 0, "end": 0, "name": "profile011", "start": 0, @@ -4334,12 +4394,12 @@ description: Result of parsing crazy_multi_profile.kcl "type": "VariableDeclaration" }, { - "commentStart": 2400, + "commentStart": 0, "declaration": { - "commentStart": 2400, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2400, + "commentStart": 0, "end": 0, "name": "revolve002", "start": 0, @@ -4350,14 +4410,14 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 2433, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2441, + "commentStart": 0, "end": 0, "raw": "45", "start": 0, @@ -4372,7 +4432,7 @@ description: Result of parsing crazy_multi_profile.kcl { "type": "LabeledArg", "label": { - "commentStart": 2445, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -4380,10 +4440,10 @@ description: Result of parsing crazy_multi_profile.kcl }, "arg": { "abs_path": false, - "commentStart": 2452, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2452, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -4398,10 +4458,10 @@ description: Result of parsing crazy_multi_profile.kcl ], "callee": { "abs_path": false, - "commentStart": 2413, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2413, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -4411,17 +4471,17 @@ description: Result of parsing crazy_multi_profile.kcl "start": 0, "type": "Name" }, - "commentStart": 2413, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2421, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2421, + "commentStart": 0, "end": 0, "name": "profile008", "start": 0, diff --git a/rust/kcl-lib/tests/crazy_multi_profile/input.kcl b/rust/kcl-lib/tests/crazy_multi_profile/input.kcl index 55a245716..c39f40d09 100644 --- a/rust/kcl-lib/tests/crazy_multi_profile/input.kcl +++ b/rust/kcl-lib/tests/crazy_multi_profile/input.kcl @@ -5,20 +5,14 @@ profile001 = startProfileAt([6.71, -3.66], sketch001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude001 = extrude(profile001, length = 20) -sketch002 = startSketchOn(extrude001, seg01) +sketch002 = startSketchOn(extrude001, face = seg01) profile002 = startProfileAt([0.75, 13.46], sketch002) |> line(end = [4.52, 3.79]) |> line(end = [5.98, -2.81]) profile003 = startProfileAt([3.19, 13.3], sketch002) - |> angledLine([0, 6.64], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 2.81 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 6.64, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 2.81) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() profile004 = startProfileAt([3.15, 9.39], sketch002) @@ -50,15 +44,9 @@ profile009 = startProfileAt([5.23, 1.95], sketch003) |> close() profile010 = circle(sketch003, center = [7.18, -2.11], radius = 2.67) profile011 = startProfileAt([5.07, -6.39], sketch003) - |> angledLine([0, 4.54], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 4.17 - ], %) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %) + |> angledLine(angle = 0, length = 4.54, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 4.17) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude003 = extrude(profile011, length = 2.5) diff --git a/rust/kcl-lib/tests/crazy_multi_profile/ops.snap b/rust/kcl-lib/tests/crazy_multi_profile/ops.snap index 0ebf2b70a..496240a98 100644 --- a/rust/kcl-lib/tests/crazy_multi_profile/ops.snap +++ b/rust/kcl-lib/tests/crazy_multi_profile/ops.snap @@ -5,7 +5,7 @@ description: Operations executed crazy_multi_profile.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XZ" @@ -52,16 +52,7 @@ description: Operations executed crazy_multi_profile.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg01", @@ -73,7 +64,15 @@ description: Operations executed crazy_multi_profile.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "KclStdLibCall", @@ -153,7 +152,7 @@ description: Operations executed crazy_multi_profile.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "-XZ" diff --git a/rust/kcl-lib/tests/crazy_multi_profile/program_memory.snap b/rust/kcl-lib/tests/crazy_multi_profile/program_memory.snap index be57b04f1..320dae8a7 100644 --- a/rust/kcl-lib/tests/crazy_multi_profile/program_memory.snap +++ b/rust/kcl-lib/tests/crazy_multi_profile/program_memory.snap @@ -145,22 +145,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -326,17 +338,26 @@ description: Variables in memory after executing crazy_multi_profile.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -478,22 +499,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -588,9 +621,9 @@ description: Variables in memory after executing crazy_multi_profile.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2069, - "end": 2090, - "start": 2069, + "commentStart": 2094, + "end": 2115, + "start": 2094, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -632,9 +665,9 @@ description: Variables in memory after executing crazy_multi_profile.kcl -6.39 ], "tag": { - "commentStart": 2069, - "end": 2090, - "start": 2069, + "commentStart": 2094, + "end": 2115, + "start": 2094, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -732,22 +765,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -894,22 +939,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1003,17 +1060,26 @@ description: Variables in memory after executing crazy_multi_profile.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1155,22 +1221,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1262,9 +1340,9 @@ description: Variables in memory after executing crazy_multi_profile.kcl 13.3 ], "tag": { - "commentStart": 539, - "end": 560, - "start": 539, + "commentStart": 564, + "end": 585, + "start": 564, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -1362,17 +1440,26 @@ description: Variables in memory after executing crazy_multi_profile.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1514,22 +1601,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1702,17 +1801,26 @@ description: Variables in memory after executing crazy_multi_profile.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1854,22 +1962,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1985,17 +2105,26 @@ description: Variables in memory after executing crazy_multi_profile.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2137,22 +2266,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2319,17 +2460,26 @@ description: Variables in memory after executing crazy_multi_profile.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2471,22 +2621,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2615,22 +2777,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2752,22 +2926,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2889,22 +3075,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2975,22 +3173,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3037,9 +3247,9 @@ description: Variables in memory after executing crazy_multi_profile.kcl -6.39 ], "tag": { - "commentStart": 2069, - "end": 2090, - "start": 2069, + "commentStart": 2094, + "end": 2115, + "start": 2094, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -3137,22 +3347,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3295,17 +3517,26 @@ description: Variables in memory after executing crazy_multi_profile.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3447,22 +3678,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3663,22 +3906,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3735,22 +3990,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3766,17 +4033,26 @@ description: Variables in memory after executing crazy_multi_profile.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3918,22 +4194,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3994,22 +4282,34 @@ description: Variables in memory after executing crazy_multi_profile.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/crazy_multi_profile/unparsed.snap b/rust/kcl-lib/tests/crazy_multi_profile/unparsed.snap index c00813ae5..6a6f69307 100644 --- a/rust/kcl-lib/tests/crazy_multi_profile/unparsed.snap +++ b/rust/kcl-lib/tests/crazy_multi_profile/unparsed.snap @@ -9,20 +9,14 @@ profile001 = startProfileAt([6.71, -3.66], sketch001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude001 = extrude(profile001, length = 20) -sketch002 = startSketchOn(extrude001, seg01) +sketch002 = startSketchOn(extrude001, face = seg01) profile002 = startProfileAt([0.75, 13.46], sketch002) |> line(end = [4.52, 3.79]) |> line(end = [5.98, -2.81]) profile003 = startProfileAt([3.19, 13.3], sketch002) - |> angledLine([0, 6.64], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 2.81 - ], %) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 6.64, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 2.81) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() profile004 = startProfileAt([3.15, 9.39], sketch002) @@ -54,15 +48,9 @@ profile009 = startProfileAt([5.23, 1.95], sketch003) |> close() profile010 = circle(sketch003, center = [7.18, -2.11], radius = 2.67) profile011 = startProfileAt([5.07, -6.39], sketch003) - |> angledLine([0, 4.54], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 4.17 - ], %) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %) + |> angledLine(angle = 0, length = 4.54, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 4.17) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close() extrude003 = extrude(profile011, length = 2.5) diff --git a/rust/kcl-lib/tests/cube/artifact_commands.snap b/rust/kcl-lib/tests/cube/artifact_commands.snap index f25d36f1c..f687cb98f 100644 --- a/rust/kcl-lib/tests/cube/artifact_commands.snap +++ b/rust/kcl-lib/tests/cube/artifact_commands.snap @@ -196,7 +196,8 @@ description: Artifact commands cube.kcl "type": "extrude", "target": "[uuid]", "distance": 40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/cube/ast.snap b/rust/kcl-lib/tests/cube/ast.snap index a6196e5ba..f6c8a8113 100644 --- a/rust/kcl-lib/tests/cube/ast.snap +++ b/rust/kcl-lib/tests/cube/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing cube.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -21,26 +21,26 @@ description: Result of parsing cube.kcl "body": { "body": [ { - "commentStart": 32, + "commentStart": 0, "declaration": { - "commentStart": 32, + "commentStart": 0, "end": 0, "id": { - "commentStart": 32, + "commentStart": 0, "end": 0, "name": "l", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 36, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 36, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36, + "commentStart": 0, "end": 0, "name": "sideLength", "start": 0, @@ -53,7 +53,7 @@ description: Result of parsing cube.kcl }, "operator": "/", "right": { - "commentStart": 49, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -78,23 +78,23 @@ description: Result of parsing cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 53, + "commentStart": 0, "declaration": { - "commentStart": 53, + "commentStart": 0, "end": 0, "id": { - "commentStart": 53, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 57, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 57, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -102,7 +102,7 @@ description: Result of parsing cube.kcl "type": "Identifier" }, "property": { - "commentStart": 64, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -127,23 +127,23 @@ description: Result of parsing cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 69, + "commentStart": 0, "declaration": { - "commentStart": 69, + "commentStart": 0, "end": 0, "id": { - "commentStart": 69, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 73, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 73, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -151,7 +151,7 @@ description: Result of parsing cube.kcl "type": "Identifier" }, "property": { - "commentStart": 80, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -176,30 +176,30 @@ description: Result of parsing cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 85, + "commentStart": 0, "declaration": { - "commentStart": 85, + "commentStart": 0, "end": 0, "id": { - "commentStart": 85, + "commentStart": 0, "end": 0, "name": "p0", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 90, + "commentStart": 0, "elements": [ { - "commentStart": 91, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 92, + "commentStart": 0, "end": 0, "name": { - "commentStart": 92, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -210,7 +210,7 @@ description: Result of parsing cube.kcl "type": "Name", "type": "Name" }, - "commentStart": 91, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -220,10 +220,10 @@ description: Result of parsing cube.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 96, + "commentStart": 0, "end": 0, "name": { - "commentStart": 96, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -239,15 +239,15 @@ description: Result of parsing cube.kcl "type": "BinaryExpression" }, { - "commentStart": 99, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 100, + "commentStart": 0, "end": 0, "name": { - "commentStart": 100, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -258,7 +258,7 @@ description: Result of parsing cube.kcl "type": "Name", "type": "Name" }, - "commentStart": 99, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -268,10 +268,10 @@ description: Result of parsing cube.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 104, + "commentStart": 0, "end": 0, "name": { - "commentStart": 104, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -302,30 +302,30 @@ description: Result of parsing cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 109, + "commentStart": 0, "declaration": { - "commentStart": 109, + "commentStart": 0, "end": 0, "id": { - "commentStart": 109, + "commentStart": 0, "end": 0, "name": "p1", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 114, + "commentStart": 0, "elements": [ { - "commentStart": 115, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 116, + "commentStart": 0, "end": 0, "name": { - "commentStart": 116, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -336,7 +336,7 @@ description: Result of parsing cube.kcl "type": "Name", "type": "Name" }, - "commentStart": 115, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -346,10 +346,10 @@ description: Result of parsing cube.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 120, + "commentStart": 0, "end": 0, "name": { - "commentStart": 120, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -365,14 +365,14 @@ description: Result of parsing cube.kcl "type": "BinaryExpression" }, { - "commentStart": 123, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 123, + "commentStart": 0, "end": 0, "name": { - "commentStart": 123, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -386,10 +386,10 @@ description: Result of parsing cube.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 127, + "commentStart": 0, "end": 0, "name": { - "commentStart": 127, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -420,29 +420,29 @@ description: Result of parsing cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 132, + "commentStart": 0, "declaration": { - "commentStart": 132, + "commentStart": 0, "end": 0, "id": { - "commentStart": 132, + "commentStart": 0, "end": 0, "name": "p2", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 137, + "commentStart": 0, "elements": [ { - "commentStart": 138, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 138, + "commentStart": 0, "end": 0, "name": { - "commentStart": 138, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -456,10 +456,10 @@ description: Result of parsing cube.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 142, + "commentStart": 0, "end": 0, "name": { - "commentStart": 142, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -475,14 +475,14 @@ description: Result of parsing cube.kcl "type": "BinaryExpression" }, { - "commentStart": 145, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 145, + "commentStart": 0, "end": 0, "name": { - "commentStart": 145, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -496,10 +496,10 @@ description: Result of parsing cube.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 149, + "commentStart": 0, "end": 0, "name": { - "commentStart": 149, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -530,29 +530,29 @@ description: Result of parsing cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 154, + "commentStart": 0, "declaration": { - "commentStart": 154, + "commentStart": 0, "end": 0, "id": { - "commentStart": 154, + "commentStart": 0, "end": 0, "name": "p3", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 159, + "commentStart": 0, "elements": [ { - "commentStart": 160, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 160, + "commentStart": 0, "end": 0, "name": { - "commentStart": 160, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -566,10 +566,10 @@ description: Result of parsing cube.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 164, + "commentStart": 0, "end": 0, "name": { - "commentStart": 164, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -585,15 +585,15 @@ description: Result of parsing cube.kcl "type": "BinaryExpression" }, { - "commentStart": 167, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 168, + "commentStart": 0, "end": 0, "name": { - "commentStart": 168, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -604,7 +604,7 @@ description: Result of parsing cube.kcl "type": "Name", "type": "Name" }, - "commentStart": 167, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -614,10 +614,10 @@ description: Result of parsing cube.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 172, + "commentStart": 0, "end": 0, "name": { - "commentStart": 172, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -654,10 +654,10 @@ description: Result of parsing cube.kcl "arguments": [ { "abs_path": false, - "commentStart": 199, + "commentStart": 0, "end": 0, "name": { - "commentStart": 199, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -671,10 +671,10 @@ description: Result of parsing cube.kcl ], "callee": { "abs_path": false, - "commentStart": 185, + "commentStart": 0, "end": 0, "name": { - "commentStart": 185, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -684,7 +684,7 @@ description: Result of parsing cube.kcl "start": 0, "type": "Name" }, - "commentStart": 185, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -694,10 +694,10 @@ description: Result of parsing cube.kcl "arguments": [ { "abs_path": false, - "commentStart": 225, + "commentStart": 0, "end": 0, "name": { - "commentStart": 225, + "commentStart": 0, "end": 0, "name": "p0", "start": 0, @@ -709,7 +709,7 @@ description: Result of parsing cube.kcl "type": "Name" }, { - "commentStart": 229, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -718,10 +718,10 @@ description: Result of parsing cube.kcl ], "callee": { "abs_path": false, - "commentStart": 210, + "commentStart": 0, "end": 0, "name": { - "commentStart": 210, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -731,7 +731,7 @@ description: Result of parsing cube.kcl "start": 0, "type": "Name" }, - "commentStart": 210, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -742,7 +742,7 @@ description: Result of parsing cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 244, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -750,10 +750,10 @@ description: Result of parsing cube.kcl }, "arg": { "abs_path": false, - "commentStart": 258, + "commentStart": 0, "end": 0, "name": { - "commentStart": 258, + "commentStart": 0, "end": 0, "name": "p1", "start": 0, @@ -768,10 +768,10 @@ description: Result of parsing cube.kcl ], "callee": { "abs_path": false, - "commentStart": 239, + "commentStart": 0, "end": 0, "name": { - "commentStart": 239, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -781,7 +781,7 @@ description: Result of parsing cube.kcl "start": 0, "type": "Name" }, - "commentStart": 239, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -793,7 +793,7 @@ description: Result of parsing cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 274, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -801,10 +801,10 @@ description: Result of parsing cube.kcl }, "arg": { "abs_path": false, - "commentStart": 288, + "commentStart": 0, "end": 0, "name": { - "commentStart": 288, + "commentStart": 0, "end": 0, "name": "p2", "start": 0, @@ -819,10 +819,10 @@ description: Result of parsing cube.kcl ], "callee": { "abs_path": false, - "commentStart": 269, + "commentStart": 0, "end": 0, "name": { - "commentStart": 269, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -832,7 +832,7 @@ description: Result of parsing cube.kcl "start": 0, "type": "Name" }, - "commentStart": 269, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -844,7 +844,7 @@ description: Result of parsing cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 304, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -852,10 +852,10 @@ description: Result of parsing cube.kcl }, "arg": { "abs_path": false, - "commentStart": 318, + "commentStart": 0, "end": 0, "name": { - "commentStart": 318, + "commentStart": 0, "end": 0, "name": "p3", "start": 0, @@ -870,10 +870,10 @@ description: Result of parsing cube.kcl ], "callee": { "abs_path": false, - "commentStart": 299, + "commentStart": 0, "end": 0, "name": { - "commentStart": 299, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -883,7 +883,7 @@ description: Result of parsing cube.kcl "start": 0, "type": "Name" }, - "commentStart": 299, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -895,7 +895,7 @@ description: Result of parsing cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 334, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -903,10 +903,10 @@ description: Result of parsing cube.kcl }, "arg": { "abs_path": false, - "commentStart": 348, + "commentStart": 0, "end": 0, "name": { - "commentStart": 348, + "commentStart": 0, "end": 0, "name": "p0", "start": 0, @@ -921,10 +921,10 @@ description: Result of parsing cube.kcl ], "callee": { "abs_path": false, - "commentStart": 329, + "commentStart": 0, "end": 0, "name": { - "commentStart": 329, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -934,7 +934,7 @@ description: Result of parsing cube.kcl "start": 0, "type": "Name" }, - "commentStart": 329, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -945,10 +945,10 @@ description: Result of parsing cube.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 359, + "commentStart": 0, "end": 0, "name": { - "commentStart": 359, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -958,7 +958,7 @@ description: Result of parsing cube.kcl "start": 0, "type": "Name" }, - "commentStart": 359, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -969,7 +969,7 @@ description: Result of parsing cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 382, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -977,10 +977,10 @@ description: Result of parsing cube.kcl }, "arg": { "abs_path": false, - "commentStart": 391, + "commentStart": 0, "end": 0, "name": { - "commentStart": 391, + "commentStart": 0, "end": 0, "name": "sideLength", "start": 0, @@ -995,10 +995,10 @@ description: Result of parsing cube.kcl ], "callee": { "abs_path": false, - "commentStart": 374, + "commentStart": 0, "end": 0, "name": { - "commentStart": 374, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1008,7 +1008,7 @@ description: Result of parsing cube.kcl "start": 0, "type": "Name" }, - "commentStart": 374, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1016,26 +1016,26 @@ description: Result of parsing cube.kcl "unlabeled": null } ], - "commentStart": 185, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, - "commentStart": 174, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 28, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "6": [ { - "commentStart": 174, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1049,13 +1049,13 @@ description: Result of parsing cube.kcl }, "start": 0 }, - "commentStart": 7, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 8, + "commentStart": 0, "end": 0, "name": "sideLength", "start": 0, @@ -1065,7 +1065,7 @@ description: Result of parsing cube.kcl { "type": "Parameter", "identifier": { - "commentStart": 20, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -1087,12 +1087,12 @@ description: Result of parsing cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 404, + "commentStart": 0, "declaration": { - "commentStart": 406, + "commentStart": 0, "end": 0, "id": { - "commentStart": 406, + "commentStart": 0, "end": 0, "name": "myCube", "start": 0, @@ -1103,14 +1103,14 @@ description: Result of parsing cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 420, + "commentStart": 0, "end": 0, "name": "sideLength", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 433, + "commentStart": 0, "end": 0, "raw": "40", "start": 0, @@ -1125,17 +1125,17 @@ description: Result of parsing cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 437, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 446, + "commentStart": 0, "elements": [ { - "commentStart": 447, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1147,7 +1147,7 @@ description: Result of parsing cube.kcl } }, { - "commentStart": 450, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1168,10 +1168,10 @@ description: Result of parsing cube.kcl ], "callee": { "abs_path": false, - "commentStart": 415, + "commentStart": 0, "end": 0, "name": { - "commentStart": 415, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -1181,7 +1181,7 @@ description: Result of parsing cube.kcl "start": 0, "type": "Name" }, - "commentStart": 415, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1204,7 +1204,7 @@ description: Result of parsing cube.kcl "nonCodeNodes": { "0": [ { - "commentStart": 404, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/cube/ops.snap b/rust/kcl-lib/tests/cube/ops.snap index 7fc94aa70..494032c70 100644 --- a/rust/kcl-lib/tests/cube/ops.snap +++ b/rust/kcl-lib/tests/cube/ops.snap @@ -71,7 +71,7 @@ description: Operations executed cube.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/cube/program_memory.snap b/rust/kcl-lib/tests/cube/program_memory.snap index 693183f27..f30828d20 100644 --- a/rust/kcl-lib/tests/cube/program_memory.snap +++ b/rust/kcl-lib/tests/cube/program_memory.snap @@ -150,22 +150,34 @@ description: Variables in memory after executing cube.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/cube_with_error/artifact_commands.snap b/rust/kcl-lib/tests/cube_with_error/artifact_commands.snap index 93b9411b9..f953a7142 100644 --- a/rust/kcl-lib/tests/cube_with_error/artifact_commands.snap +++ b/rust/kcl-lib/tests/cube_with_error/artifact_commands.snap @@ -196,7 +196,8 @@ description: Artifact commands cube_with_error.kcl "type": "extrude", "target": "[uuid]", "distance": 40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/cube_with_error/ast.snap b/rust/kcl-lib/tests/cube_with_error/ast.snap index 91566ec6d..0209a8d5a 100644 --- a/rust/kcl-lib/tests/cube_with_error/ast.snap +++ b/rust/kcl-lib/tests/cube_with_error/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing cube_with_error.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -21,26 +21,26 @@ description: Result of parsing cube_with_error.kcl "body": { "body": [ { - "commentStart": 28, + "commentStart": 0, "declaration": { - "commentStart": 28, + "commentStart": 0, "end": 0, "id": { - "commentStart": 28, + "commentStart": 0, "end": 0, "name": "l", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 32, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -53,7 +53,7 @@ description: Result of parsing cube_with_error.kcl }, "operator": "/", "right": { - "commentStart": 41, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -78,23 +78,23 @@ description: Result of parsing cube_with_error.kcl "type": "VariableDeclaration" }, { - "commentStart": 45, + "commentStart": 0, "declaration": { - "commentStart": 45, + "commentStart": 0, "end": 0, "id": { - "commentStart": 45, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 49, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 49, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -102,7 +102,7 @@ description: Result of parsing cube_with_error.kcl "type": "Identifier" }, "property": { - "commentStart": 56, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -127,23 +127,23 @@ description: Result of parsing cube_with_error.kcl "type": "VariableDeclaration" }, { - "commentStart": 61, + "commentStart": 0, "declaration": { - "commentStart": 61, + "commentStart": 0, "end": 0, "id": { - "commentStart": 61, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 65, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 65, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -151,7 +151,7 @@ description: Result of parsing cube_with_error.kcl "type": "Identifier" }, "property": { - "commentStart": 72, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -176,30 +176,30 @@ description: Result of parsing cube_with_error.kcl "type": "VariableDeclaration" }, { - "commentStart": 77, + "commentStart": 0, "declaration": { - "commentStart": 77, + "commentStart": 0, "end": 0, "id": { - "commentStart": 77, + "commentStart": 0, "end": 0, "name": "p0", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 82, + "commentStart": 0, "elements": [ { - "commentStart": 83, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 84, + "commentStart": 0, "end": 0, "name": { - "commentStart": 84, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -210,7 +210,7 @@ description: Result of parsing cube_with_error.kcl "type": "Name", "type": "Name" }, - "commentStart": 83, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -220,10 +220,10 @@ description: Result of parsing cube_with_error.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 88, + "commentStart": 0, "end": 0, "name": { - "commentStart": 88, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -239,15 +239,15 @@ description: Result of parsing cube_with_error.kcl "type": "BinaryExpression" }, { - "commentStart": 91, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 92, + "commentStart": 0, "end": 0, "name": { - "commentStart": 92, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -258,7 +258,7 @@ description: Result of parsing cube_with_error.kcl "type": "Name", "type": "Name" }, - "commentStart": 91, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -268,10 +268,10 @@ description: Result of parsing cube_with_error.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 96, + "commentStart": 0, "end": 0, "name": { - "commentStart": 96, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -302,30 +302,30 @@ description: Result of parsing cube_with_error.kcl "type": "VariableDeclaration" }, { - "commentStart": 101, + "commentStart": 0, "declaration": { - "commentStart": 101, + "commentStart": 0, "end": 0, "id": { - "commentStart": 101, + "commentStart": 0, "end": 0, "name": "p1", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 106, + "commentStart": 0, "elements": [ { - "commentStart": 107, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 108, + "commentStart": 0, "end": 0, "name": { - "commentStart": 108, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -336,7 +336,7 @@ description: Result of parsing cube_with_error.kcl "type": "Name", "type": "Name" }, - "commentStart": 107, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -346,10 +346,10 @@ description: Result of parsing cube_with_error.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 112, + "commentStart": 0, "end": 0, "name": { - "commentStart": 112, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -365,14 +365,14 @@ description: Result of parsing cube_with_error.kcl "type": "BinaryExpression" }, { - "commentStart": 115, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 115, + "commentStart": 0, "end": 0, "name": { - "commentStart": 115, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -386,10 +386,10 @@ description: Result of parsing cube_with_error.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 119, + "commentStart": 0, "end": 0, "name": { - "commentStart": 119, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -420,29 +420,29 @@ description: Result of parsing cube_with_error.kcl "type": "VariableDeclaration" }, { - "commentStart": 124, + "commentStart": 0, "declaration": { - "commentStart": 124, + "commentStart": 0, "end": 0, "id": { - "commentStart": 124, + "commentStart": 0, "end": 0, "name": "p2", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 129, + "commentStart": 0, "elements": [ { - "commentStart": 130, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 130, + "commentStart": 0, "end": 0, "name": { - "commentStart": 130, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -456,10 +456,10 @@ description: Result of parsing cube_with_error.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 134, + "commentStart": 0, "end": 0, "name": { - "commentStart": 134, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -475,14 +475,14 @@ description: Result of parsing cube_with_error.kcl "type": "BinaryExpression" }, { - "commentStart": 137, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 137, + "commentStart": 0, "end": 0, "name": { - "commentStart": 137, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -496,10 +496,10 @@ description: Result of parsing cube_with_error.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 141, + "commentStart": 0, "end": 0, "name": { - "commentStart": 141, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -530,29 +530,29 @@ description: Result of parsing cube_with_error.kcl "type": "VariableDeclaration" }, { - "commentStart": 146, + "commentStart": 0, "declaration": { - "commentStart": 146, + "commentStart": 0, "end": 0, "id": { - "commentStart": 146, + "commentStart": 0, "end": 0, "name": "p3", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 151, + "commentStart": 0, "elements": [ { - "commentStart": 152, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 152, + "commentStart": 0, "end": 0, "name": { - "commentStart": 152, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -566,10 +566,10 @@ description: Result of parsing cube_with_error.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 156, + "commentStart": 0, "end": 0, "name": { - "commentStart": 156, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -585,15 +585,15 @@ description: Result of parsing cube_with_error.kcl "type": "BinaryExpression" }, { - "commentStart": 159, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 160, + "commentStart": 0, "end": 0, "name": { - "commentStart": 160, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -604,7 +604,7 @@ description: Result of parsing cube_with_error.kcl "type": "Name", "type": "Name" }, - "commentStart": 159, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -614,10 +614,10 @@ description: Result of parsing cube_with_error.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 164, + "commentStart": 0, "end": 0, "name": { - "commentStart": 164, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -654,10 +654,10 @@ description: Result of parsing cube_with_error.kcl "arguments": [ { "abs_path": false, - "commentStart": 191, + "commentStart": 0, "end": 0, "name": { - "commentStart": 191, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -671,10 +671,10 @@ description: Result of parsing cube_with_error.kcl ], "callee": { "abs_path": false, - "commentStart": 177, + "commentStart": 0, "end": 0, "name": { - "commentStart": 177, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -684,7 +684,7 @@ description: Result of parsing cube_with_error.kcl "start": 0, "type": "Name" }, - "commentStart": 177, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -694,10 +694,10 @@ description: Result of parsing cube_with_error.kcl "arguments": [ { "abs_path": false, - "commentStart": 217, + "commentStart": 0, "end": 0, "name": { - "commentStart": 217, + "commentStart": 0, "end": 0, "name": "p0", "start": 0, @@ -709,7 +709,7 @@ description: Result of parsing cube_with_error.kcl "type": "Name" }, { - "commentStart": 221, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -718,10 +718,10 @@ description: Result of parsing cube_with_error.kcl ], "callee": { "abs_path": false, - "commentStart": 202, + "commentStart": 0, "end": 0, "name": { - "commentStart": 202, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -731,7 +731,7 @@ description: Result of parsing cube_with_error.kcl "start": 0, "type": "Name" }, - "commentStart": 202, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -742,7 +742,7 @@ description: Result of parsing cube_with_error.kcl { "type": "LabeledArg", "label": { - "commentStart": 236, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -750,10 +750,10 @@ description: Result of parsing cube_with_error.kcl }, "arg": { "abs_path": false, - "commentStart": 250, + "commentStart": 0, "end": 0, "name": { - "commentStart": 250, + "commentStart": 0, "end": 0, "name": "p1", "start": 0, @@ -768,10 +768,10 @@ description: Result of parsing cube_with_error.kcl ], "callee": { "abs_path": false, - "commentStart": 231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 231, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -781,7 +781,7 @@ description: Result of parsing cube_with_error.kcl "start": 0, "type": "Name" }, - "commentStart": 231, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -793,7 +793,7 @@ description: Result of parsing cube_with_error.kcl { "type": "LabeledArg", "label": { - "commentStart": 266, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -801,10 +801,10 @@ description: Result of parsing cube_with_error.kcl }, "arg": { "abs_path": false, - "commentStart": 280, + "commentStart": 0, "end": 0, "name": { - "commentStart": 280, + "commentStart": 0, "end": 0, "name": "p2", "start": 0, @@ -819,10 +819,10 @@ description: Result of parsing cube_with_error.kcl ], "callee": { "abs_path": false, - "commentStart": 261, + "commentStart": 0, "end": 0, "name": { - "commentStart": 261, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -832,7 +832,7 @@ description: Result of parsing cube_with_error.kcl "start": 0, "type": "Name" }, - "commentStart": 261, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -844,7 +844,7 @@ description: Result of parsing cube_with_error.kcl { "type": "LabeledArg", "label": { - "commentStart": 296, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -852,10 +852,10 @@ description: Result of parsing cube_with_error.kcl }, "arg": { "abs_path": false, - "commentStart": 310, + "commentStart": 0, "end": 0, "name": { - "commentStart": 310, + "commentStart": 0, "end": 0, "name": "p3", "start": 0, @@ -870,10 +870,10 @@ description: Result of parsing cube_with_error.kcl ], "callee": { "abs_path": false, - "commentStart": 291, + "commentStart": 0, "end": 0, "name": { - "commentStart": 291, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -883,7 +883,7 @@ description: Result of parsing cube_with_error.kcl "start": 0, "type": "Name" }, - "commentStart": 291, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -895,7 +895,7 @@ description: Result of parsing cube_with_error.kcl { "type": "LabeledArg", "label": { - "commentStart": 326, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -903,10 +903,10 @@ description: Result of parsing cube_with_error.kcl }, "arg": { "abs_path": false, - "commentStart": 340, + "commentStart": 0, "end": 0, "name": { - "commentStart": 340, + "commentStart": 0, "end": 0, "name": "p0", "start": 0, @@ -921,10 +921,10 @@ description: Result of parsing cube_with_error.kcl ], "callee": { "abs_path": false, - "commentStart": 321, + "commentStart": 0, "end": 0, "name": { - "commentStart": 321, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -934,7 +934,7 @@ description: Result of parsing cube_with_error.kcl "start": 0, "type": "Name" }, - "commentStart": 321, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -945,10 +945,10 @@ description: Result of parsing cube_with_error.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 351, + "commentStart": 0, "end": 0, "name": { - "commentStart": 351, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -958,7 +958,7 @@ description: Result of parsing cube_with_error.kcl "start": 0, "type": "Name" }, - "commentStart": 351, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -969,7 +969,7 @@ description: Result of parsing cube_with_error.kcl { "type": "LabeledArg", "label": { - "commentStart": 374, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -977,10 +977,10 @@ description: Result of parsing cube_with_error.kcl }, "arg": { "abs_path": false, - "commentStart": 383, + "commentStart": 0, "end": 0, "name": { - "commentStart": 383, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -995,10 +995,10 @@ description: Result of parsing cube_with_error.kcl ], "callee": { "abs_path": false, - "commentStart": 366, + "commentStart": 0, "end": 0, "name": { - "commentStart": 366, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1008,7 +1008,7 @@ description: Result of parsing cube_with_error.kcl "start": 0, "type": "Name" }, - "commentStart": 366, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1016,26 +1016,26 @@ description: Result of parsing cube_with_error.kcl "unlabeled": null } ], - "commentStart": 177, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, - "commentStart": 166, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 24, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "6": [ { - "commentStart": 166, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1049,13 +1049,13 @@ description: Result of parsing cube_with_error.kcl }, "start": 0 }, - "commentStart": 7, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 8, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1065,7 +1065,7 @@ description: Result of parsing cube_with_error.kcl { "type": "Parameter", "identifier": { - "commentStart": 16, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -1087,12 +1087,12 @@ description: Result of parsing cube_with_error.kcl "type": "VariableDeclaration" }, { - "commentStart": 392, + "commentStart": 0, "declaration": { - "commentStart": 394, + "commentStart": 0, "end": 0, "id": { - "commentStart": 394, + "commentStart": 0, "end": 0, "name": "myCube", "start": 0, @@ -1101,7 +1101,7 @@ description: Result of parsing cube_with_error.kcl "init": { "arguments": [ { - "commentStart": 408, + "commentStart": 0, "end": 0, "raw": "40", "start": 0, @@ -1113,10 +1113,10 @@ description: Result of parsing cube_with_error.kcl } }, { - "commentStart": 412, + "commentStart": 0, "elements": [ { - "commentStart": 413, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1128,7 +1128,7 @@ description: Result of parsing cube_with_error.kcl } }, { - "commentStart": 416, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1148,10 +1148,10 @@ description: Result of parsing cube_with_error.kcl ], "callee": { "abs_path": false, - "commentStart": 403, + "commentStart": 0, "end": 0, "name": { - "commentStart": 403, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -1161,7 +1161,7 @@ description: Result of parsing cube_with_error.kcl "start": 0, "type": "Name" }, - "commentStart": 403, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1177,14 +1177,14 @@ description: Result of parsing cube_with_error.kcl "type": "VariableDeclaration" }, { - "commentStart": 419, + "commentStart": 0, "end": 0, "expression": { "abs_path": false, - "commentStart": 465, + "commentStart": 0, "end": 0, "name": { - "commentStart": 465, + "commentStart": 0, "end": 0, "name": "foo", "start": 0, @@ -1211,7 +1211,7 @@ description: Result of parsing cube_with_error.kcl "nonCodeNodes": { "0": [ { - "commentStart": 392, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/cube_with_error/ops.snap b/rust/kcl-lib/tests/cube_with_error/ops.snap index b7b76b32f..5233b0ec3 100644 --- a/rust/kcl-lib/tests/cube_with_error/ops.snap +++ b/rust/kcl-lib/tests/cube_with_error/ops.snap @@ -20,7 +20,7 @@ description: Operations executed cube_with_error.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/double_map_fn/ast.snap b/rust/kcl-lib/tests/double_map_fn/ast.snap index 7630a2b4f..6509069b0 100644 --- a/rust/kcl-lib/tests/double_map_fn/ast.snap +++ b/rust/kcl-lib/tests/double_map_fn/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing double_map_fn.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "increment", "start": 0, @@ -22,14 +22,14 @@ description: Result of parsing double_map_fn.kcl "body": [ { "argument": { - "commentStart": 27, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 27, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -42,7 +42,7 @@ description: Result of parsing double_map_fn.kcl }, "operator": "+", "right": { - "commentStart": 31, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -57,24 +57,24 @@ description: Result of parsing double_map_fn.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 20, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 16, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 12, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 13, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -96,22 +96,22 @@ description: Result of parsing double_map_fn.kcl "type": "VariableDeclaration" }, { - "commentStart": 34, + "commentStart": 0, "declaration": { - "commentStart": 36, + "commentStart": 0, "end": 0, "id": { - "commentStart": 36, + "commentStart": 0, "end": 0, "name": "xs", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 41, + "commentStart": 0, "end": 0, "endElement": { - "commentStart": 45, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -125,7 +125,7 @@ description: Result of parsing double_map_fn.kcl "endInclusive": true, "start": 0, "startElement": { - "commentStart": 42, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -149,12 +149,12 @@ description: Result of parsing double_map_fn.kcl "type": "VariableDeclaration" }, { - "commentStart": 48, + "commentStart": 0, "declaration": { - "commentStart": 48, + "commentStart": 0, "end": 0, "id": { - "commentStart": 48, + "commentStart": 0, "end": 0, "name": "ys", "start": 0, @@ -164,10 +164,10 @@ description: Result of parsing double_map_fn.kcl "body": [ { "abs_path": false, - "commentStart": 53, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53, + "commentStart": 0, "end": 0, "name": "xs", "start": 0, @@ -181,7 +181,7 @@ description: Result of parsing double_map_fn.kcl { "arguments": [ { - "commentStart": 65, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -189,10 +189,10 @@ description: Result of parsing double_map_fn.kcl }, { "abs_path": false, - "commentStart": 68, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68, + "commentStart": 0, "end": 0, "name": "increment", "start": 0, @@ -206,10 +206,10 @@ description: Result of parsing double_map_fn.kcl ], "callee": { "abs_path": false, - "commentStart": 61, + "commentStart": 0, "end": 0, "name": { - "commentStart": 61, + "commentStart": 0, "end": 0, "name": "map", "start": 0, @@ -219,7 +219,7 @@ description: Result of parsing double_map_fn.kcl "start": 0, "type": "Name" }, - "commentStart": 61, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -228,7 +228,7 @@ description: Result of parsing double_map_fn.kcl { "arguments": [ { - "commentStart": 88, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -236,10 +236,10 @@ description: Result of parsing double_map_fn.kcl }, { "abs_path": false, - "commentStart": 91, + "commentStart": 0, "end": 0, "name": { - "commentStart": 91, + "commentStart": 0, "end": 0, "name": "increment", "start": 0, @@ -253,10 +253,10 @@ description: Result of parsing double_map_fn.kcl ], "callee": { "abs_path": false, - "commentStart": 84, + "commentStart": 0, "end": 0, "name": { - "commentStart": 84, + "commentStart": 0, "end": 0, "name": "map", "start": 0, @@ -266,14 +266,14 @@ description: Result of parsing double_map_fn.kcl "start": 0, "type": "Name" }, - "commentStart": 84, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 53, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -295,7 +295,7 @@ description: Result of parsing double_map_fn.kcl "nonCodeNodes": { "0": [ { - "commentStart": 34, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/double_map_fn/program_memory.snap b/rust/kcl-lib/tests/double_map_fn/program_memory.snap index 717ea7ef0..50403fd91 100644 --- a/rust/kcl-lib/tests/double_map_fn/program_memory.snap +++ b/rust/kcl-lib/tests/double_map_fn/program_memory.snap @@ -42,21 +42,24 @@ description: Variables in memory after executing double_map_fn.kcl "type": "Number", "value": 2.0, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Count" } }, { "type": "Number", "value": 3.0, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Count" } }, { "type": "Number", "value": 4.0, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Count" } } ] diff --git a/rust/kcl-lib/tests/fillet-and-shell/artifact_commands.snap b/rust/kcl-lib/tests/fillet-and-shell/artifact_commands.snap index e8a8c7f18..ea978319d 100644 --- a/rust/kcl-lib/tests/fillet-and-shell/artifact_commands.snap +++ b/rust/kcl-lib/tests/fillet-and-shell/artifact_commands.snap @@ -306,7 +306,8 @@ description: Artifact commands fillet-and-shell.kcl "type": "extrude", "target": "[uuid]", "distance": 8.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -714,7 +715,8 @@ description: Artifact commands fillet-and-shell.kcl "type": "extrude", "target": "[uuid]", "distance": 4.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1042,7 +1044,8 @@ description: Artifact commands fillet-and-shell.kcl "type": "extrude", "target": "[uuid]", "distance": 4.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1370,7 +1373,8 @@ description: Artifact commands fillet-and-shell.kcl "type": "extrude", "target": "[uuid]", "distance": 4.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1698,7 +1702,8 @@ description: Artifact commands fillet-and-shell.kcl "type": "extrude", "target": "[uuid]", "distance": 4.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/fillet-and-shell/ast.snap b/rust/kcl-lib/tests/fillet-and-shell/ast.snap index bea7a311c..e9b972173 100644 --- a/rust/kcl-lib/tests/fillet-and-shell/ast.snap +++ b/rust/kcl-lib/tests/fillet-and-shell/ast.snap @@ -18,7 +18,7 @@ description: Result of parsing fillet-and-shell.kcl "type": "Identifier" }, "init": { - "commentStart": 12, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -39,19 +39,19 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 15, + "commentStart": 0, "declaration": { - "commentStart": 15, + "commentStart": 0, "end": 0, "id": { - "commentStart": 15, + "commentStart": 0, "end": 0, "name": "rpizLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 28, + "commentStart": 0, "end": 0, "raw": "65", "start": 0, @@ -72,19 +72,19 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 30, + "commentStart": 0, "declaration": { - "commentStart": 32, + "commentStart": 0, "end": 0, "id": { - "commentStart": 32, + "commentStart": 0, "end": 0, "name": "caseThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 48, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -105,19 +105,19 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 49, + "commentStart": 0, "declaration": { - "commentStart": 51, + "commentStart": 0, "end": 0, "id": { - "commentStart": 51, + "commentStart": 0, "end": 0, "name": "border", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 60, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -138,19 +138,19 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 61, + "commentStart": 0, "declaration": { - "commentStart": 63, + "commentStart": 0, "end": 0, "id": { - "commentStart": 63, + "commentStart": 0, "end": 0, "name": "screwHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 77, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -171,26 +171,26 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 78, + "commentStart": 0, "declaration": { - "commentStart": 80, + "commentStart": 0, "end": 0, "id": { - "commentStart": 80, + "commentStart": 0, "end": 0, "name": "caseWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 92, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 92, + "commentStart": 0, "end": 0, "name": { - "commentStart": 92, + "commentStart": 0, "end": 0, "name": "rpizWidth", "start": 0, @@ -203,14 +203,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 104, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 104, + "commentStart": 0, "end": 0, "name": { - "commentStart": 104, + "commentStart": 0, "end": 0, "name": "border", "start": 0, @@ -223,7 +223,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "*", "right": { - "commentStart": 113, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -252,26 +252,26 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 115, + "commentStart": 0, "declaration": { - "commentStart": 115, + "commentStart": 0, "end": 0, "id": { - "commentStart": 115, + "commentStart": 0, "end": 0, "name": "caseLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 128, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 128, + "commentStart": 0, "end": 0, "name": { - "commentStart": 128, + "commentStart": 0, "end": 0, "name": "rpizLength", "start": 0, @@ -284,14 +284,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 141, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 141, + "commentStart": 0, "end": 0, "name": { - "commentStart": 141, + "commentStart": 0, "end": 0, "name": "border", "start": 0, @@ -304,7 +304,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "*", "right": { - "commentStart": 150, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -333,19 +333,19 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 152, + "commentStart": 0, "declaration": { - "commentStart": 152, + "commentStart": 0, "end": 0, "id": { - "commentStart": 152, + "commentStart": 0, "end": 0, "name": "caseHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 165, + "commentStart": 0, "end": 0, "raw": "8", "start": 0, @@ -366,19 +366,19 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 166, + "commentStart": 0, "declaration": { - "commentStart": 168, + "commentStart": 0, "end": 0, "id": { - "commentStart": 168, + "commentStart": 0, "end": 0, "name": "widthBetweenScrews", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 189, + "commentStart": 0, "end": 0, "raw": "23", "start": 0, @@ -399,22 +399,22 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 192, + "commentStart": 0, "declaration": { - "commentStart": 192, + "commentStart": 0, "end": 0, "id": { - "commentStart": 192, + "commentStart": 0, "end": 0, "name": "lengthBetweenScrews", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 214, + "commentStart": 0, "end": 0, "left": { - "commentStart": 214, + "commentStart": 0, "end": 0, "raw": "29", "start": 0, @@ -427,7 +427,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "*", "right": { - "commentStart": 219, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -452,19 +452,19 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 220, + "commentStart": 0, "declaration": { - "commentStart": 222, + "commentStart": 0, "end": 0, "id": { - "commentStart": 222, + "commentStart": 0, "end": 0, "name": "miniHdmiDistance", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 241, + "commentStart": 0, "end": 0, "raw": "12.4", "start": 0, @@ -485,19 +485,19 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 246, + "commentStart": 0, "declaration": { - "commentStart": 246, + "commentStart": 0, "end": 0, "id": { - "commentStart": 246, + "commentStart": 0, "end": 0, "name": "microUsb1Distance", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 266, + "commentStart": 0, "end": 0, "raw": "41.4", "start": 0, @@ -518,19 +518,19 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 271, + "commentStart": 0, "declaration": { - "commentStart": 271, + "commentStart": 0, "end": 0, "id": { - "commentStart": 271, + "commentStart": 0, "end": 0, "name": "microUsb2Distance", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 291, + "commentStart": 0, "end": 0, "raw": "54", "start": 0, @@ -551,19 +551,19 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 293, + "commentStart": 0, "declaration": { - "commentStart": 295, + "commentStart": 0, "end": 0, "id": { - "commentStart": 295, + "commentStart": 0, "end": 0, "name": "miniHdmiWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 311, + "commentStart": 0, "end": 0, "raw": "11.2", "start": 0, @@ -584,19 +584,19 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 316, + "commentStart": 0, "declaration": { - "commentStart": 316, + "commentStart": 0, "end": 0, "id": { - "commentStart": 316, + "commentStart": 0, "end": 0, "name": "microUsbWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 332, + "commentStart": 0, "end": 0, "raw": "7.4", "start": 0, @@ -617,19 +617,19 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 336, + "commentStart": 0, "declaration": { - "commentStart": 336, + "commentStart": 0, "end": 0, "id": { - "commentStart": 336, + "commentStart": 0, "end": 0, "name": "connectorPadding", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 355, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -650,12 +650,12 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 356, + "commentStart": 0, "declaration": { - "commentStart": 358, + "commentStart": 0, "end": 0, "id": { - "commentStart": 358, + "commentStart": 0, "end": 0, "name": "miniHdmiHole", "start": 0, @@ -667,10 +667,10 @@ description: Result of parsing fillet-and-shell.kcl "arguments": [ { "abs_path": false, - "commentStart": 387, + "commentStart": 0, "end": 0, "name": { - "commentStart": 387, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -684,10 +684,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 373, + "commentStart": 0, "end": 0, "name": { - "commentStart": 373, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -697,7 +697,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 373, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -706,10 +706,10 @@ description: Result of parsing fillet-and-shell.kcl { "arguments": [ { - "commentStart": 411, + "commentStart": 0, "elements": [ { - "commentStart": 420, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -721,17 +721,17 @@ description: Result of parsing fillet-and-shell.kcl } }, { - "commentStart": 430, + "commentStart": 0, "end": 0, "left": { - "commentStart": 430, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 430, + "commentStart": 0, "end": 0, "name": { - "commentStart": 430, + "commentStart": 0, "end": 0, "name": "border", "start": 0, @@ -745,10 +745,10 @@ description: Result of parsing fillet-and-shell.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 439, + "commentStart": 0, "end": 0, "name": { - "commentStart": 439, + "commentStart": 0, "end": 0, "name": "miniHdmiDistance", "start": 0, @@ -765,14 +765,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "-", "right": { - "commentStart": 459, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 459, + "commentStart": 0, "end": 0, "name": { - "commentStart": 459, + "commentStart": 0, "end": 0, "name": "miniHdmiWidth", "start": 0, @@ -785,7 +785,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 475, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -811,7 +811,7 @@ description: Result of parsing fillet-and-shell.kcl "type": "ArrayExpression" }, { - "commentStart": 486, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -820,10 +820,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 396, + "commentStart": 0, "end": 0, "name": { - "commentStart": 396, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -833,7 +833,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 396, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -844,17 +844,17 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 499, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 513, + "commentStart": 0, "elements": [ { - "commentStart": 522, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -866,17 +866,17 @@ description: Result of parsing fillet-and-shell.kcl } }, { - "commentStart": 532, + "commentStart": 0, "end": 0, "left": { - "commentStart": 532, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 532, + "commentStart": 0, "end": 0, "name": { - "commentStart": 532, + "commentStart": 0, "end": 0, "name": "border", "start": 0, @@ -890,10 +890,10 @@ description: Result of parsing fillet-and-shell.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 541, + "commentStart": 0, "end": 0, "name": { - "commentStart": 541, + "commentStart": 0, "end": 0, "name": "miniHdmiDistance", "start": 0, @@ -910,14 +910,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 560, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 560, + "commentStart": 0, "end": 0, "name": { - "commentStart": 560, + "commentStart": 0, "end": 0, "name": "miniHdmiWidth", "start": 0, @@ -930,7 +930,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 576, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -959,10 +959,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 494, + "commentStart": 0, "end": 0, "name": { - "commentStart": 494, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -972,7 +972,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 494, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -984,17 +984,17 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 596, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 610, + "commentStart": 0, "elements": [ { - "commentStart": 619, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1006,17 +1006,17 @@ description: Result of parsing fillet-and-shell.kcl } }, { - "commentStart": 629, + "commentStart": 0, "end": 0, "left": { - "commentStart": 629, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 629, + "commentStart": 0, "end": 0, "name": { - "commentStart": 629, + "commentStart": 0, "end": 0, "name": "border", "start": 0, @@ -1030,10 +1030,10 @@ description: Result of parsing fillet-and-shell.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 638, + "commentStart": 0, "end": 0, "name": { - "commentStart": 638, + "commentStart": 0, "end": 0, "name": "miniHdmiDistance", "start": 0, @@ -1050,14 +1050,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 657, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 657, + "commentStart": 0, "end": 0, "name": { - "commentStart": 657, + "commentStart": 0, "end": 0, "name": "miniHdmiWidth", "start": 0, @@ -1070,7 +1070,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 673, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1099,10 +1099,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 591, + "commentStart": 0, "end": 0, "name": { - "commentStart": 591, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1112,7 +1112,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 591, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1124,17 +1124,17 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 693, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 707, + "commentStart": 0, "elements": [ { - "commentStart": 716, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1146,17 +1146,17 @@ description: Result of parsing fillet-and-shell.kcl } }, { - "commentStart": 726, + "commentStart": 0, "end": 0, "left": { - "commentStart": 726, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 726, + "commentStart": 0, "end": 0, "name": { - "commentStart": 726, + "commentStart": 0, "end": 0, "name": "border", "start": 0, @@ -1170,10 +1170,10 @@ description: Result of parsing fillet-and-shell.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 735, + "commentStart": 0, "end": 0, "name": { - "commentStart": 735, + "commentStart": 0, "end": 0, "name": "miniHdmiDistance", "start": 0, @@ -1190,14 +1190,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "-", "right": { - "commentStart": 755, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 755, + "commentStart": 0, "end": 0, "name": { - "commentStart": 755, + "commentStart": 0, "end": 0, "name": "miniHdmiWidth", "start": 0, @@ -1210,7 +1210,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 771, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1239,10 +1239,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 688, + "commentStart": 0, "end": 0, "name": { - "commentStart": 688, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1252,7 +1252,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 688, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1262,7 +1262,7 @@ description: Result of parsing fillet-and-shell.kcl { "arguments": [ { - "commentStart": 793, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1271,10 +1271,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 787, + "commentStart": 0, "end": 0, "name": { - "commentStart": 787, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1284,14 +1284,14 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 787, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 373, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1307,12 +1307,12 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 795, + "commentStart": 0, "declaration": { - "commentStart": 797, + "commentStart": 0, "end": 0, "id": { - "commentStart": 797, + "commentStart": 0, "end": 0, "name": "case", "start": 0, @@ -1323,7 +1323,7 @@ description: Result of parsing fillet-and-shell.kcl { "arguments": [ { - "commentStart": 818, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -1334,10 +1334,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 804, + "commentStart": 0, "end": 0, "name": { - "commentStart": 804, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1347,7 +1347,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 804, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1356,10 +1356,10 @@ description: Result of parsing fillet-and-shell.kcl { "arguments": [ { - "commentStart": 844, + "commentStart": 0, "elements": [ { - "commentStart": 845, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1371,7 +1371,7 @@ description: Result of parsing fillet-and-shell.kcl } }, { - "commentStart": 848, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1389,7 +1389,7 @@ description: Result of parsing fillet-and-shell.kcl "type": "ArrayExpression" }, { - "commentStart": 852, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1398,10 +1398,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 829, + "commentStart": 0, "end": 0, "name": { - "commentStart": 829, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1411,7 +1411,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 829, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1422,21 +1422,21 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 865, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 879, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 880, + "commentStart": 0, "end": 0, "name": { - "commentStart": 880, + "commentStart": 0, "end": 0, "name": "caseWidth", "start": 0, @@ -1448,7 +1448,7 @@ description: Result of parsing fillet-and-shell.kcl "type": "Name" }, { - "commentStart": 891, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1469,14 +1469,14 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 895, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 901, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1487,10 +1487,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 860, + "commentStart": 0, "end": 0, "name": { - "commentStart": 860, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1500,7 +1500,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 860, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1512,21 +1512,21 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 919, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 933, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 934, + "commentStart": 0, "end": 0, "name": { - "commentStart": 934, + "commentStart": 0, "end": 0, "name": "caseWidth", "start": 0, @@ -1539,10 +1539,10 @@ description: Result of parsing fillet-and-shell.kcl }, { "abs_path": false, - "commentStart": 945, + "commentStart": 0, "end": 0, "name": { - "commentStart": 945, + "commentStart": 0, "end": 0, "name": "caseLength", "start": 0, @@ -1563,14 +1563,14 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 958, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 964, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1581,10 +1581,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 914, + "commentStart": 0, "end": 0, "name": { - "commentStart": 914, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1594,7 +1594,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 914, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1606,17 +1606,17 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 982, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 996, + "commentStart": 0, "elements": [ { - "commentStart": 997, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1629,10 +1629,10 @@ description: Result of parsing fillet-and-shell.kcl }, { "abs_path": false, - "commentStart": 1000, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1000, + "commentStart": 0, "end": 0, "name": "caseLength", "start": 0, @@ -1653,14 +1653,14 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 1013, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1019, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1671,10 +1671,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 977, + "commentStart": 0, "end": 0, "name": { - "commentStart": 977, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1684,7 +1684,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 977, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1696,14 +1696,14 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 1038, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1044, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1714,10 +1714,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1032, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1032, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1727,7 +1727,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1032, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1739,7 +1739,7 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 1065, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1747,10 +1747,10 @@ description: Result of parsing fillet-and-shell.kcl }, "arg": { "abs_path": false, - "commentStart": 1074, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1074, + "commentStart": 0, "end": 0, "name": "caseHeight", "start": 0, @@ -1765,10 +1765,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1057, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1057, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1778,7 +1778,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1057, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1790,14 +1790,14 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 1106, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1115, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1812,23 +1812,23 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 1125, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1132, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 1163, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1163, + "commentStart": 0, "end": 0, "name": "edge1", "start": 0, @@ -1842,10 +1842,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1143, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1143, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -1855,7 +1855,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1143, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1865,10 +1865,10 @@ description: Result of parsing fillet-and-shell.kcl "arguments": [ { "abs_path": false, - "commentStart": 1200, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1200, + "commentStart": 0, "end": 0, "name": "edge2", "start": 0, @@ -1882,10 +1882,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1180, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1180, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -1895,7 +1895,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1180, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1905,10 +1905,10 @@ description: Result of parsing fillet-and-shell.kcl "arguments": [ { "abs_path": false, - "commentStart": 1237, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1237, + "commentStart": 0, "end": 0, "name": "edge3", "start": 0, @@ -1922,10 +1922,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1217, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1217, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -1935,7 +1935,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1217, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1945,10 +1945,10 @@ description: Result of parsing fillet-and-shell.kcl "arguments": [ { "abs_path": false, - "commentStart": 1274, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1274, + "commentStart": 0, "end": 0, "name": "edge4", "start": 0, @@ -1962,10 +1962,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1254, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1254, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -1975,7 +1975,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1254, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1991,10 +1991,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1091, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1091, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -2004,7 +2004,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1091, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2012,7 +2012,7 @@ description: Result of parsing fillet-and-shell.kcl "unlabeled": null } ], - "commentStart": 804, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2028,12 +2028,12 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 1297, + "commentStart": 0, "declaration": { - "commentStart": 1302, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1302, + "commentStart": 0, "end": 0, "name": "m25Screw", "start": 0, @@ -2043,12 +2043,12 @@ description: Result of parsing fillet-and-shell.kcl "body": { "body": [ { - "commentStart": 1329, + "commentStart": 0, "declaration": { - "commentStart": 1329, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1329, + "commentStart": 0, "end": 0, "name": "screw", "start": 0, @@ -2059,7 +2059,7 @@ description: Result of parsing fillet-and-shell.kcl { "arguments": [ { - "commentStart": 1351, + "commentStart": 0, "end": 0, "raw": "\"XY\"", "start": 0, @@ -2070,10 +2070,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1337, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1337, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2083,7 +2083,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1337, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2092,10 +2092,10 @@ description: Result of parsing fillet-and-shell.kcl { "arguments": [ { - "commentStart": 1379, + "commentStart": 0, "elements": [ { - "commentStart": 1380, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2107,7 +2107,7 @@ description: Result of parsing fillet-and-shell.kcl } }, { - "commentStart": 1383, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2125,7 +2125,7 @@ description: Result of parsing fillet-and-shell.kcl "type": "ArrayExpression" }, { - "commentStart": 1387, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2134,10 +2134,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1364, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1364, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2147,7 +2147,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1364, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2158,21 +2158,21 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 1404, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1413, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1414, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1414, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -2185,10 +2185,10 @@ description: Result of parsing fillet-and-shell.kcl }, { "abs_path": false, - "commentStart": 1417, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1417, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -2209,14 +2209,14 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 1421, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1430, + "commentStart": 0, "end": 0, "raw": "2.5", "start": 0, @@ -2231,10 +2231,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1397, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1397, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -2244,7 +2244,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1397, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2258,21 +2258,21 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 1454, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1463, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1464, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1464, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -2285,10 +2285,10 @@ description: Result of parsing fillet-and-shell.kcl }, { "abs_path": false, - "commentStart": 1467, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1467, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -2309,14 +2309,14 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 1471, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1480, + "commentStart": 0, "end": 0, "raw": "1.25", "start": 0, @@ -2331,10 +2331,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1447, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1447, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -2344,7 +2344,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1447, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2352,7 +2352,7 @@ description: Result of parsing fillet-and-shell.kcl "unlabeled": null }, { - "commentStart": 1487, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2361,10 +2361,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1442, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1442, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -2374,7 +2374,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1442, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2385,7 +2385,7 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 1505, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2393,10 +2393,10 @@ description: Result of parsing fillet-and-shell.kcl }, "arg": { "abs_path": false, - "commentStart": 1514, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1514, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -2411,10 +2411,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1497, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1497, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2424,7 +2424,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1497, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2432,7 +2432,7 @@ description: Result of parsing fillet-and-shell.kcl "unlabeled": null } ], - "commentStart": 1337, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2450,10 +2450,10 @@ description: Result of parsing fillet-and-shell.kcl { "argument": { "abs_path": false, - "commentStart": 1531, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1531, + "commentStart": 0, "end": 0, "name": "screw", "start": 0, @@ -2464,24 +2464,24 @@ description: Result of parsing fillet-and-shell.kcl "type": "Name", "type": "Name" }, - "commentStart": 1524, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 1325, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 1310, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 1311, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -2491,7 +2491,7 @@ description: Result of parsing fillet-and-shell.kcl { "type": "Parameter", "identifier": { - "commentStart": 1314, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -2501,7 +2501,7 @@ description: Result of parsing fillet-and-shell.kcl { "type": "Parameter", "identifier": { - "commentStart": 1317, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -2523,22 +2523,22 @@ description: Result of parsing fillet-and-shell.kcl "type": "VariableDeclaration" }, { - "commentStart": 1538, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 1549, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1549, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1549, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1549, + "commentStart": 0, "end": 0, "name": "border", "start": 0, @@ -2551,14 +2551,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 1558, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1558, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1558, + "commentStart": 0, "end": 0, "name": "rpizWidth", "start": 0, @@ -2571,7 +2571,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 1570, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2592,14 +2592,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "-", "right": { - "commentStart": 1575, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1575, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1575, + "commentStart": 0, "end": 0, "name": "widthBetweenScrews", "start": 0, @@ -2612,7 +2612,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 1596, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2632,16 +2632,16 @@ description: Result of parsing fillet-and-shell.kcl "type": "BinaryExpression" }, { - "commentStart": 1600, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1600, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1600, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1600, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2655,10 +2655,10 @@ description: Result of parsing fillet-and-shell.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1604, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1604, + "commentStart": 0, "end": 0, "name": "border", "start": 0, @@ -2675,14 +2675,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 1613, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1613, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1613, + "commentStart": 0, "end": 0, "name": "rpizLength", "start": 0, @@ -2695,7 +2695,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 1626, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2716,14 +2716,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "-", "right": { - "commentStart": 1631, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1631, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1631, + "commentStart": 0, "end": 0, "name": "lengthBetweenScrews", "start": 0, @@ -2736,7 +2736,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 1653, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2757,10 +2757,10 @@ description: Result of parsing fillet-and-shell.kcl }, { "abs_path": false, - "commentStart": 1657, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1657, + "commentStart": 0, "end": 0, "name": "screwHeight", "start": 0, @@ -2774,10 +2774,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1540, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1540, + "commentStart": 0, "end": 0, "name": "m25Screw", "start": 0, @@ -2787,7 +2787,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1540, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2798,22 +2798,22 @@ description: Result of parsing fillet-and-shell.kcl "type": "ExpressionStatement" }, { - "commentStart": 1669, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 1680, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1680, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1680, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1680, + "commentStart": 0, "end": 0, "name": "border", "start": 0, @@ -2826,14 +2826,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 1689, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1689, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1689, + "commentStart": 0, "end": 0, "name": "rpizWidth", "start": 0, @@ -2846,7 +2846,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 1701, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2867,14 +2867,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "-", "right": { - "commentStart": 1706, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1706, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1706, + "commentStart": 0, "end": 0, "name": "widthBetweenScrews", "start": 0, @@ -2887,7 +2887,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 1727, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2907,16 +2907,16 @@ description: Result of parsing fillet-and-shell.kcl "type": "BinaryExpression" }, { - "commentStart": 1731, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1731, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1731, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1731, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2930,10 +2930,10 @@ description: Result of parsing fillet-and-shell.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1735, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1735, + "commentStart": 0, "end": 0, "name": "border", "start": 0, @@ -2950,14 +2950,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 1744, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1744, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1744, + "commentStart": 0, "end": 0, "name": "rpizLength", "start": 0, @@ -2970,7 +2970,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 1757, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2991,14 +2991,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 1761, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1761, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1761, + "commentStart": 0, "end": 0, "name": "lengthBetweenScrews", "start": 0, @@ -3011,7 +3011,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 1783, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3032,10 +3032,10 @@ description: Result of parsing fillet-and-shell.kcl }, { "abs_path": false, - "commentStart": 1786, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1786, + "commentStart": 0, "end": 0, "name": "screwHeight", "start": 0, @@ -3049,10 +3049,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1671, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1671, + "commentStart": 0, "end": 0, "name": "m25Screw", "start": 0, @@ -3062,7 +3062,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1671, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3073,22 +3073,22 @@ description: Result of parsing fillet-and-shell.kcl "type": "ExpressionStatement" }, { - "commentStart": 1798, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 1809, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1809, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1809, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1809, + "commentStart": 0, "end": 0, "name": "border", "start": 0, @@ -3101,14 +3101,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 1818, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1818, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1818, + "commentStart": 0, "end": 0, "name": "rpizWidth", "start": 0, @@ -3121,7 +3121,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 1830, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3142,14 +3142,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 1834, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1834, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1834, + "commentStart": 0, "end": 0, "name": "widthBetweenScrews", "start": 0, @@ -3162,7 +3162,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 1855, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3182,16 +3182,16 @@ description: Result of parsing fillet-and-shell.kcl "type": "BinaryExpression" }, { - "commentStart": 1858, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1858, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1858, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1858, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3205,10 +3205,10 @@ description: Result of parsing fillet-and-shell.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1862, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1862, + "commentStart": 0, "end": 0, "name": "border", "start": 0, @@ -3225,14 +3225,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 1871, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1871, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1871, + "commentStart": 0, "end": 0, "name": "rpizLength", "start": 0, @@ -3245,7 +3245,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 1884, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3266,14 +3266,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 1888, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1888, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1888, + "commentStart": 0, "end": 0, "name": "lengthBetweenScrews", "start": 0, @@ -3286,7 +3286,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 1910, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3307,10 +3307,10 @@ description: Result of parsing fillet-and-shell.kcl }, { "abs_path": false, - "commentStart": 1913, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1913, + "commentStart": 0, "end": 0, "name": "screwHeight", "start": 0, @@ -3324,10 +3324,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1800, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1800, + "commentStart": 0, "end": 0, "name": "m25Screw", "start": 0, @@ -3337,7 +3337,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1800, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3348,22 +3348,22 @@ description: Result of parsing fillet-and-shell.kcl "type": "ExpressionStatement" }, { - "commentStart": 1925, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 1936, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1936, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1936, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1936, + "commentStart": 0, "end": 0, "name": "border", "start": 0, @@ -3376,14 +3376,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 1945, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1945, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1945, + "commentStart": 0, "end": 0, "name": "rpizWidth", "start": 0, @@ -3396,7 +3396,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 1957, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3417,14 +3417,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 1961, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1961, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1961, + "commentStart": 0, "end": 0, "name": "widthBetweenScrews", "start": 0, @@ -3437,7 +3437,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 1982, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3457,16 +3457,16 @@ description: Result of parsing fillet-and-shell.kcl "type": "BinaryExpression" }, { - "commentStart": 1985, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1985, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1985, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1985, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3480,10 +3480,10 @@ description: Result of parsing fillet-and-shell.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1989, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1989, + "commentStart": 0, "end": 0, "name": "border", "start": 0, @@ -3500,14 +3500,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "+", "right": { - "commentStart": 1998, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1998, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1998, + "commentStart": 0, "end": 0, "name": "rpizLength", "start": 0, @@ -3520,7 +3520,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 2011, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3541,14 +3541,14 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "-", "right": { - "commentStart": 2016, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2016, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2016, + "commentStart": 0, "end": 0, "name": "lengthBetweenScrews", "start": 0, @@ -3561,7 +3561,7 @@ description: Result of parsing fillet-and-shell.kcl }, "operator": "/", "right": { - "commentStart": 2038, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3582,10 +3582,10 @@ description: Result of parsing fillet-and-shell.kcl }, { "abs_path": false, - "commentStart": 2042, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2042, + "commentStart": 0, "end": 0, "name": "screwHeight", "start": 0, @@ -3599,10 +3599,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 1927, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1927, + "commentStart": 0, "end": 0, "name": "m25Screw", "start": 0, @@ -3612,7 +3612,7 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 1927, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3623,24 +3623,24 @@ description: Result of parsing fillet-and-shell.kcl "type": "ExpressionStatement" }, { - "commentStart": 2054, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2068, + "commentStart": 0, "end": 0, "name": "faces", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2076, + "commentStart": 0, "elements": [ { - "commentStart": 2077, + "commentStart": 0, "end": 0, "raw": "'end'", "start": 0, @@ -3658,7 +3658,7 @@ description: Result of parsing fillet-and-shell.kcl { "type": "LabeledArg", "label": { - "commentStart": 2085, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -3666,10 +3666,10 @@ description: Result of parsing fillet-and-shell.kcl }, "arg": { "abs_path": false, - "commentStart": 2097, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2097, + "commentStart": 0, "end": 0, "name": "caseThickness", "start": 0, @@ -3684,10 +3684,10 @@ description: Result of parsing fillet-and-shell.kcl ], "callee": { "abs_path": false, - "commentStart": 2056, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2056, + "commentStart": 0, "end": 0, "name": "shell", "start": 0, @@ -3697,17 +3697,17 @@ description: Result of parsing fillet-and-shell.kcl "start": 0, "type": "Name" }, - "commentStart": 2056, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2062, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2062, + "commentStart": 0, "end": 0, "name": "case", "start": 0, @@ -3730,7 +3730,7 @@ description: Result of parsing fillet-and-shell.kcl "nonCodeNodes": { "1": [ { - "commentStart": 30, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3741,7 +3741,7 @@ description: Result of parsing fillet-and-shell.kcl ], "2": [ { - "commentStart": 49, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3752,7 +3752,7 @@ description: Result of parsing fillet-and-shell.kcl ], "3": [ { - "commentStart": 61, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3763,7 +3763,7 @@ description: Result of parsing fillet-and-shell.kcl ], "4": [ { - "commentStart": 78, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3774,7 +3774,7 @@ description: Result of parsing fillet-and-shell.kcl ], "7": [ { - "commentStart": 166, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3785,7 +3785,7 @@ description: Result of parsing fillet-and-shell.kcl ], "9": [ { - "commentStart": 220, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3796,7 +3796,7 @@ description: Result of parsing fillet-and-shell.kcl ], "12": [ { - "commentStart": 293, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3807,7 +3807,7 @@ description: Result of parsing fillet-and-shell.kcl ], "15": [ { - "commentStart": 356, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3818,7 +3818,7 @@ description: Result of parsing fillet-and-shell.kcl ], "16": [ { - "commentStart": 795, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3829,7 +3829,7 @@ description: Result of parsing fillet-and-shell.kcl ], "17": [ { - "commentStart": 1297, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3840,7 +3840,7 @@ description: Result of parsing fillet-and-shell.kcl ], "18": [ { - "commentStart": 1538, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3851,7 +3851,7 @@ description: Result of parsing fillet-and-shell.kcl ], "19": [ { - "commentStart": 1669, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3862,7 +3862,7 @@ description: Result of parsing fillet-and-shell.kcl ], "20": [ { - "commentStart": 1798, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3873,7 +3873,7 @@ description: Result of parsing fillet-and-shell.kcl ], "21": [ { - "commentStart": 1925, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3884,7 +3884,7 @@ description: Result of parsing fillet-and-shell.kcl ], "22": [ { - "commentStart": 2054, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/fillet-and-shell/ops.snap b/rust/kcl-lib/tests/fillet-and-shell/ops.snap index 7f68276a8..98ed83ff8 100644 --- a/rust/kcl-lib/tests/fillet-and-shell/ops.snap +++ b/rust/kcl-lib/tests/fillet-and-shell/ops.snap @@ -5,7 +5,7 @@ description: Operations executed fillet-and-shell.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -20,7 +20,7 @@ description: Operations executed fillet-and-shell.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" @@ -138,7 +138,7 @@ description: Operations executed fillet-and-shell.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" @@ -229,7 +229,7 @@ description: Operations executed fillet-and-shell.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" @@ -320,7 +320,7 @@ description: Operations executed fillet-and-shell.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" @@ -411,7 +411,7 @@ description: Operations executed fillet-and-shell.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/fillet-and-shell/program_memory.snap b/rust/kcl-lib/tests/fillet-and-shell/program_memory.snap index e8a813859..acebaa395 100644 --- a/rust/kcl-lib/tests/fillet-and-shell/program_memory.snap +++ b/rust/kcl-lib/tests/fillet-and-shell/program_memory.snap @@ -189,22 +189,34 @@ description: Variables in memory after executing fillet-and-shell.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -259,28 +271,72 @@ description: Variables in memory after executing fillet-and-shell.kcl { "type": "fillet", "id": "[uuid]", - "radius": 1.0, + "radius": { + "n": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 1.0, + "radius": { + "n": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 1.0, + "radius": { + "n": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 1.0, + "radius": { + "n": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -307,7 +363,13 @@ description: Variables in memory after executing fillet-and-shell.kcl "type": "Number", "value": 73.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "caseThickness": { @@ -327,7 +389,13 @@ description: Variables in memory after executing fillet-and-shell.kcl "type": "Number", "value": 38.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "connectorPadding": { @@ -367,7 +435,13 @@ description: Variables in memory after executing fillet-and-shell.kcl "type": "Number", "value": 58.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "m25Screw": { @@ -516,22 +590,34 @@ description: Variables in memory after executing fillet-and-shell.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/fillet-and-shell/unparsed.snap b/rust/kcl-lib/tests/fillet-and-shell/unparsed.snap index b6a895302..2e913b79f 100644 --- a/rust/kcl-lib/tests/fillet-and-shell/unparsed.snap +++ b/rust/kcl-lib/tests/fillet-and-shell/unparsed.snap @@ -79,4 +79,4 @@ m25Screw(border + rpizWidth / 2 + widthBetweenScrews / 2, 0 + border + rpizLengt m25Screw(border + rpizWidth / 2 + widthBetweenScrews / 2, 0 + border + rpizLength / 2 - (lengthBetweenScrews / 2), screwHeight) -shell(case, faces = ['end'], thickness = caseThickness) +shell(case, faces = [END], thickness = caseThickness) diff --git a/rust/kcl-lib/tests/flush_batch_on_end/artifact_commands.snap b/rust/kcl-lib/tests/flush_batch_on_end/artifact_commands.snap index 5983766de..e047e6335 100644 --- a/rust/kcl-lib/tests/flush_batch_on_end/artifact_commands.snap +++ b/rust/kcl-lib/tests/flush_batch_on_end/artifact_commands.snap @@ -255,7 +255,8 @@ description: Artifact commands flush_batch_on_end.kcl "type": "extrude", "target": "[uuid]", "distance": 1.5, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/flush_batch_on_end/ast.snap b/rust/kcl-lib/tests/flush_batch_on_end/ast.snap index e73ca18d0..d71b644b9 100644 --- a/rust/kcl-lib/tests/flush_batch_on_end/ast.snap +++ b/rust/kcl-lib/tests/flush_batch_on_end/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing flush_batch_on_end.kcl "Ok": { "body": [ { - "commentStart": 33, + "commentStart": 0, "declaration": { - "commentStart": 84, + "commentStart": 0, "end": 0, "id": { - "commentStart": 84, + "commentStart": 0, "end": 0, "name": "innerDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 100, + "commentStart": 0, "end": 0, "raw": "0.364", "start": 0, @@ -45,22 +45,22 @@ description: Result of parsing flush_batch_on_end.kcl "type": "VariableDeclaration" }, { - "commentStart": 106, + "commentStart": 0, "declaration": { - "commentStart": 106, + "commentStart": 0, "end": 0, "id": { - "commentStart": 106, + "commentStart": 0, "end": 0, "name": "outerDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 122, + "commentStart": 0, "end": 0, "left": { - "commentStart": 122, + "commentStart": 0, "end": 0, "raw": "35", "start": 0, @@ -73,7 +73,7 @@ description: Result of parsing flush_batch_on_end.kcl }, "operator": "/", "right": { - "commentStart": 127, + "commentStart": 0, "end": 0, "raw": "64", "start": 0, @@ -98,22 +98,22 @@ description: Result of parsing flush_batch_on_end.kcl "type": "VariableDeclaration" }, { - "commentStart": 130, + "commentStart": 0, "declaration": { - "commentStart": 130, + "commentStart": 0, "end": 0, "id": { - "commentStart": 130, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 139, + "commentStart": 0, "end": 0, "left": { - "commentStart": 139, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -126,10 +126,10 @@ description: Result of parsing flush_batch_on_end.kcl }, "operator": "+", "right": { - "commentStart": 143, + "commentStart": 0, "end": 0, "left": { - "commentStart": 143, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -142,7 +142,7 @@ description: Result of parsing flush_batch_on_end.kcl }, "operator": "/", "right": { - "commentStart": 147, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -171,12 +171,12 @@ description: Result of parsing flush_batch_on_end.kcl "type": "VariableDeclaration" }, { - "commentStart": 148, + "commentStart": 0, "declaration": { - "commentStart": 187, + "commentStart": 0, "end": 0, "id": { - "commentStart": 187, + "commentStart": 0, "end": 0, "name": "sketch000", "start": 0, @@ -185,7 +185,7 @@ description: Result of parsing flush_batch_on_end.kcl "init": { "arguments": [ { - "commentStart": 213, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -196,10 +196,10 @@ description: Result of parsing flush_batch_on_end.kcl ], "callee": { "abs_path": false, - "commentStart": 199, + "commentStart": 0, "end": 0, "name": { - "commentStart": 199, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -209,7 +209,7 @@ description: Result of parsing flush_batch_on_end.kcl "start": 0, "type": "Name" }, - "commentStart": 199, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -230,12 +230,12 @@ description: Result of parsing flush_batch_on_end.kcl "type": "VariableDeclaration" }, { - "commentStart": 218, + "commentStart": 0, "declaration": { - "commentStart": 267, + "commentStart": 0, "end": 0, "id": { - "commentStart": 267, + "commentStart": 0, "end": 0, "name": "outerProfile", "start": 0, @@ -246,17 +246,17 @@ description: Result of parsing flush_batch_on_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 305, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 314, + "commentStart": 0, "elements": [ { - "commentStart": 315, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -268,7 +268,7 @@ description: Result of parsing flush_batch_on_end.kcl } }, { - "commentStart": 320, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -289,21 +289,21 @@ description: Result of parsing flush_batch_on_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 328, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 337, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 337, + "commentStart": 0, "end": 0, "name": { - "commentStart": 337, + "commentStart": 0, "end": 0, "name": "outerDiameter", "start": 0, @@ -316,7 +316,7 @@ description: Result of parsing flush_batch_on_end.kcl }, "operator": "/", "right": { - "commentStart": 353, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -335,14 +335,14 @@ description: Result of parsing flush_batch_on_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 358, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 364, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -353,10 +353,10 @@ description: Result of parsing flush_batch_on_end.kcl ], "callee": { "abs_path": false, - "commentStart": 282, + "commentStart": 0, "end": 0, "name": { - "commentStart": 282, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -366,17 +366,17 @@ description: Result of parsing flush_batch_on_end.kcl "start": 0, "type": "Name" }, - "commentStart": 282, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 292, + "commentStart": 0, "end": 0, "name": { - "commentStart": 292, + "commentStart": 0, "end": 0, "name": "sketch000", "start": 0, @@ -403,12 +403,12 @@ description: Result of parsing flush_batch_on_end.kcl "type": "VariableDeclaration" }, { - "commentStart": 374, + "commentStart": 0, "declaration": { - "commentStart": 422, + "commentStart": 0, "end": 0, "id": { - "commentStart": 422, + "commentStart": 0, "end": 0, "name": "innerProfile", "start": 0, @@ -419,17 +419,17 @@ description: Result of parsing flush_batch_on_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 460, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 469, + "commentStart": 0, "elements": [ { - "commentStart": 470, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -441,7 +441,7 @@ description: Result of parsing flush_batch_on_end.kcl } }, { - "commentStart": 475, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -462,21 +462,21 @@ description: Result of parsing flush_batch_on_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 483, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 492, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 492, + "commentStart": 0, "end": 0, "name": { - "commentStart": 492, + "commentStart": 0, "end": 0, "name": "innerDiameter", "start": 0, @@ -489,7 +489,7 @@ description: Result of parsing flush_batch_on_end.kcl }, "operator": "/", "right": { - "commentStart": 508, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -508,14 +508,14 @@ description: Result of parsing flush_batch_on_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 513, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 519, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -526,10 +526,10 @@ description: Result of parsing flush_batch_on_end.kcl ], "callee": { "abs_path": false, - "commentStart": 437, + "commentStart": 0, "end": 0, "name": { - "commentStart": 437, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -539,17 +539,17 @@ description: Result of parsing flush_batch_on_end.kcl "start": 0, "type": "Name" }, - "commentStart": 437, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 447, + "commentStart": 0, "end": 0, "name": { - "commentStart": 447, + "commentStart": 0, "end": 0, "name": "sketch000", "start": 0, @@ -576,12 +576,12 @@ description: Result of parsing flush_batch_on_end.kcl "type": "VariableDeclaration" }, { - "commentStart": 529, + "commentStart": 0, "declaration": { - "commentStart": 587, + "commentStart": 0, "end": 0, "id": { - "commentStart": 587, + "commentStart": 0, "end": 0, "name": "pipeProfile", "start": 0, @@ -591,10 +591,10 @@ description: Result of parsing flush_batch_on_end.kcl "body": [ { "abs_path": false, - "commentStart": 601, + "commentStart": 0, "end": 0, "name": { - "commentStart": 601, + "commentStart": 0, "end": 0, "name": "outerProfile", "start": 0, @@ -609,10 +609,10 @@ description: Result of parsing flush_batch_on_end.kcl "arguments": [ { "abs_path": false, - "commentStart": 624, + "commentStart": 0, "end": 0, "name": { - "commentStart": 624, + "commentStart": 0, "end": 0, "name": "innerProfile", "start": 0, @@ -624,7 +624,7 @@ description: Result of parsing flush_batch_on_end.kcl "type": "Name" }, { - "commentStart": 638, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -633,10 +633,10 @@ description: Result of parsing flush_batch_on_end.kcl ], "callee": { "abs_path": false, - "commentStart": 619, + "commentStart": 0, "end": 0, "name": { - "commentStart": 619, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -646,20 +646,20 @@ description: Result of parsing flush_batch_on_end.kcl "start": 0, "type": "Name" }, - "commentStart": 619, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 601, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 640, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -692,12 +692,12 @@ description: Result of parsing flush_batch_on_end.kcl "type": "VariableDeclaration" }, { - "commentStart": 689, + "commentStart": 0, "declaration": { - "commentStart": 689, + "commentStart": 0, "end": 0, "id": { - "commentStart": 689, + "commentStart": 0, "end": 0, "name": "pipe", "start": 0, @@ -708,7 +708,7 @@ description: Result of parsing flush_batch_on_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 717, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -716,10 +716,10 @@ description: Result of parsing flush_batch_on_end.kcl }, "arg": { "abs_path": false, - "commentStart": 726, + "commentStart": 0, "end": 0, "name": { - "commentStart": 726, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -734,10 +734,10 @@ description: Result of parsing flush_batch_on_end.kcl ], "callee": { "abs_path": false, - "commentStart": 696, + "commentStart": 0, "end": 0, "name": { - "commentStart": 696, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -747,17 +747,17 @@ description: Result of parsing flush_batch_on_end.kcl "start": 0, "type": "Name" }, - "commentStart": 696, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 704, + "commentStart": 0, "end": 0, "name": { - "commentStart": 704, + "commentStart": 0, "end": 0, "name": "pipeProfile", "start": 0, @@ -786,7 +786,7 @@ description: Result of parsing flush_batch_on_end.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 1, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -794,10 +794,10 @@ description: Result of parsing flush_batch_on_end.kcl }, "properties": [ { - "commentStart": 10, + "commentStart": 0, "end": 0, "key": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -807,10 +807,10 @@ description: Result of parsing flush_batch_on_end.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 30, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -831,7 +831,7 @@ description: Result of parsing flush_batch_on_end.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 33, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/flush_batch_on_end/ops.snap b/rust/kcl-lib/tests/flush_batch_on_end/ops.snap index 49eb5a00f..286995c4b 100644 --- a/rust/kcl-lib/tests/flush_batch_on_end/ops.snap +++ b/rust/kcl-lib/tests/flush_batch_on_end/ops.snap @@ -5,7 +5,7 @@ description: Operations executed flush_batch_on_end.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" @@ -51,7 +51,13 @@ description: Operations executed flush_batch_on_end.kcl "type": "Number", "value": 1.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] diff --git a/rust/kcl-lib/tests/flush_batch_on_end/program_memory.snap b/rust/kcl-lib/tests/flush_batch_on_end/program_memory.snap index c1b29e207..cf0894648 100644 --- a/rust/kcl-lib/tests/flush_batch_on_end/program_memory.snap +++ b/rust/kcl-lib/tests/flush_batch_on_end/program_memory.snap @@ -72,22 +72,34 @@ description: Variables in memory after executing flush_batch_on_end.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -128,14 +140,26 @@ description: Variables in memory after executing flush_batch_on_end.kcl "type": "Number", "value": 1.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "outerDiameter": { "type": "Number", "value": 0.5469, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "outerProfile": { @@ -184,22 +208,34 @@ description: Variables in memory after executing flush_batch_on_end.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -301,22 +337,34 @@ description: Variables in memory after executing flush_batch_on_end.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -406,22 +454,34 @@ description: Variables in memory after executing flush_batch_on_end.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -467,22 +527,34 @@ description: Variables in memory after executing flush_batch_on_end.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" diff --git a/rust/kcl-lib/tests/function_sketch/artifact_commands.snap b/rust/kcl-lib/tests/function_sketch/artifact_commands.snap index 3a741b800..546e69fde 100644 --- a/rust/kcl-lib/tests/function_sketch/artifact_commands.snap +++ b/rust/kcl-lib/tests/function_sketch/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands function_sketch.kcl "type": "extrude", "target": "[uuid]", "distance": 3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/function_sketch/ast.snap b/rust/kcl-lib/tests/function_sketch/ast.snap index a26a0ddde..0564a1502 100644 --- a/rust/kcl-lib/tests/function_sketch/ast.snap +++ b/rust/kcl-lib/tests/function_sketch/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing function_sketch.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "box", "start": 0, @@ -21,12 +21,12 @@ description: Result of parsing function_sketch.kcl "body": { "body": [ { - "commentStart": 20, + "commentStart": 0, "declaration": { - "commentStart": 20, + "commentStart": 0, "end": 0, "id": { - "commentStart": 20, + "commentStart": 0, "end": 0, "name": "myBox", "start": 0, @@ -37,7 +37,7 @@ description: Result of parsing function_sketch.kcl { "arguments": [ { - "commentStart": 42, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -48,10 +48,10 @@ description: Result of parsing function_sketch.kcl ], "callee": { "abs_path": false, - "commentStart": 28, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -61,7 +61,7 @@ description: Result of parsing function_sketch.kcl "start": 0, "type": "Name" }, - "commentStart": 28, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -70,10 +70,10 @@ description: Result of parsing function_sketch.kcl { "arguments": [ { - "commentStart": 70, + "commentStart": 0, "elements": [ { - "commentStart": 71, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -85,7 +85,7 @@ description: Result of parsing function_sketch.kcl } }, { - "commentStart": 74, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -103,7 +103,7 @@ description: Result of parsing function_sketch.kcl "type": "ArrayExpression" }, { - "commentStart": 78, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -112,10 +112,10 @@ description: Result of parsing function_sketch.kcl ], "callee": { "abs_path": false, - "commentStart": 55, + "commentStart": 0, "end": 0, "name": { - "commentStart": 55, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -125,7 +125,7 @@ description: Result of parsing function_sketch.kcl "start": 0, "type": "Name" }, - "commentStart": 55, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -136,17 +136,17 @@ description: Result of parsing function_sketch.kcl { "type": "LabeledArg", "label": { - "commentStart": 93, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 99, + "commentStart": 0, "elements": [ { - "commentStart": 100, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -159,10 +159,10 @@ description: Result of parsing function_sketch.kcl }, { "abs_path": false, - "commentStart": 103, + "commentStart": 0, "end": 0, "name": { - "commentStart": 103, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -183,10 +183,10 @@ description: Result of parsing function_sketch.kcl ], "callee": { "abs_path": false, - "commentStart": 88, + "commentStart": 0, "end": 0, "name": { - "commentStart": 88, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -196,7 +196,7 @@ description: Result of parsing function_sketch.kcl "start": 0, "type": "Name" }, - "commentStart": 88, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -208,21 +208,21 @@ description: Result of parsing function_sketch.kcl { "type": "LabeledArg", "label": { - "commentStart": 119, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 125, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 126, + "commentStart": 0, "end": 0, "name": { - "commentStart": 126, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -234,7 +234,7 @@ description: Result of parsing function_sketch.kcl "type": "Name" }, { - "commentStart": 129, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -255,10 +255,10 @@ description: Result of parsing function_sketch.kcl ], "callee": { "abs_path": false, - "commentStart": 114, + "commentStart": 0, "end": 0, "name": { - "commentStart": 114, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -268,7 +268,7 @@ description: Result of parsing function_sketch.kcl "start": 0, "type": "Name" }, - "commentStart": 114, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -280,17 +280,17 @@ description: Result of parsing function_sketch.kcl { "type": "LabeledArg", "label": { - "commentStart": 145, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 151, + "commentStart": 0, "elements": [ { - "commentStart": 152, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -304,10 +304,10 @@ description: Result of parsing function_sketch.kcl { "argument": { "abs_path": false, - "commentStart": 156, + "commentStart": 0, "end": 0, "name": { - "commentStart": 156, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -318,7 +318,7 @@ description: Result of parsing function_sketch.kcl "type": "Name", "type": "Name" }, - "commentStart": 155, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -335,10 +335,10 @@ description: Result of parsing function_sketch.kcl ], "callee": { "abs_path": false, - "commentStart": 140, + "commentStart": 0, "end": 0, "name": { - "commentStart": 140, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -348,7 +348,7 @@ description: Result of parsing function_sketch.kcl "start": 0, "type": "Name" }, - "commentStart": 140, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -358,7 +358,7 @@ description: Result of parsing function_sketch.kcl { "arguments": [ { - "commentStart": 173, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -367,10 +367,10 @@ description: Result of parsing function_sketch.kcl ], "callee": { "abs_path": false, - "commentStart": 167, + "commentStart": 0, "end": 0, "name": { - "commentStart": 167, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -380,7 +380,7 @@ description: Result of parsing function_sketch.kcl "start": 0, "type": "Name" }, - "commentStart": 167, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -391,7 +391,7 @@ description: Result of parsing function_sketch.kcl { "type": "LabeledArg", "label": { - "commentStart": 191, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -399,10 +399,10 @@ description: Result of parsing function_sketch.kcl }, "arg": { "abs_path": false, - "commentStart": 200, + "commentStart": 0, "end": 0, "name": { - "commentStart": 200, + "commentStart": 0, "end": 0, "name": "h", "start": 0, @@ -417,10 +417,10 @@ description: Result of parsing function_sketch.kcl ], "callee": { "abs_path": false, - "commentStart": 183, + "commentStart": 0, "end": 0, "name": { - "commentStart": 183, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -430,7 +430,7 @@ description: Result of parsing function_sketch.kcl "start": 0, "type": "Name" }, - "commentStart": 183, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -438,7 +438,7 @@ description: Result of parsing function_sketch.kcl "unlabeled": null } ], - "commentStart": 28, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -456,10 +456,10 @@ description: Result of parsing function_sketch.kcl { "argument": { "abs_path": false, - "commentStart": 213, + "commentStart": 0, "end": 0, "name": { - "commentStart": 213, + "commentStart": 0, "end": 0, "name": "myBox", "start": 0, @@ -470,20 +470,20 @@ description: Result of parsing function_sketch.kcl "type": "Name", "type": "Name" }, - "commentStart": 202, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 16, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "0": [ { - "commentStart": 202, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -497,13 +497,13 @@ description: Result of parsing function_sketch.kcl }, "start": 0 }, - "commentStart": 6, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 7, + "commentStart": 0, "end": 0, "name": "h", "start": 0, @@ -513,7 +513,7 @@ description: Result of parsing function_sketch.kcl { "type": "Parameter", "identifier": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -523,7 +523,7 @@ description: Result of parsing function_sketch.kcl { "type": "Parameter", "identifier": { - "commentStart": 13, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -545,12 +545,12 @@ description: Result of parsing function_sketch.kcl "type": "VariableDeclaration" }, { - "commentStart": 220, + "commentStart": 0, "declaration": { - "commentStart": 222, + "commentStart": 0, "end": 0, "id": { - "commentStart": 222, + "commentStart": 0, "end": 0, "name": "fnBox", "start": 0, @@ -559,7 +559,7 @@ description: Result of parsing function_sketch.kcl "init": { "arguments": [ { - "commentStart": 234, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -571,7 +571,7 @@ description: Result of parsing function_sketch.kcl } }, { - "commentStart": 237, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -583,7 +583,7 @@ description: Result of parsing function_sketch.kcl } }, { - "commentStart": 240, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -597,10 +597,10 @@ description: Result of parsing function_sketch.kcl ], "callee": { "abs_path": false, - "commentStart": 230, + "commentStart": 0, "end": 0, "name": { - "commentStart": 230, + "commentStart": 0, "end": 0, "name": "box", "start": 0, @@ -610,7 +610,7 @@ description: Result of parsing function_sketch.kcl "start": 0, "type": "Name" }, - "commentStart": 230, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -632,7 +632,7 @@ description: Result of parsing function_sketch.kcl "nonCodeNodes": { "0": [ { - "commentStart": 220, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/function_sketch/ops.snap b/rust/kcl-lib/tests/function_sketch/ops.snap index 59cc38886..8c10ddd24 100644 --- a/rust/kcl-lib/tests/function_sketch/ops.snap +++ b/rust/kcl-lib/tests/function_sketch/ops.snap @@ -20,7 +20,7 @@ description: Operations executed function_sketch.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/function_sketch/program_memory.snap b/rust/kcl-lib/tests/function_sketch/program_memory.snap index e0c4fd07b..76cefaeb0 100644 --- a/rust/kcl-lib/tests/function_sketch/program_memory.snap +++ b/rust/kcl-lib/tests/function_sketch/program_memory.snap @@ -131,22 +131,34 @@ description: Variables in memory after executing function_sketch.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/function_sketch_with_position/artifact_commands.snap b/rust/kcl-lib/tests/function_sketch_with_position/artifact_commands.snap index c05b55d86..a4ea1c48a 100644 --- a/rust/kcl-lib/tests/function_sketch_with_position/artifact_commands.snap +++ b/rust/kcl-lib/tests/function_sketch_with_position/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands function_sketch_with_position.kcl "type": "extrude", "target": "[uuid]", "distance": 3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/function_sketch_with_position/ast.snap b/rust/kcl-lib/tests/function_sketch_with_position/ast.snap index 6e6034a7b..71a643b96 100644 --- a/rust/kcl-lib/tests/function_sketch_with_position/ast.snap +++ b/rust/kcl-lib/tests/function_sketch_with_position/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing function_sketch_with_position.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "box", "start": 0, @@ -21,12 +21,12 @@ description: Result of parsing function_sketch_with_position.kcl "body": { "body": [ { - "commentStart": 23, + "commentStart": 0, "declaration": { - "commentStart": 23, + "commentStart": 0, "end": 0, "id": { - "commentStart": 23, + "commentStart": 0, "end": 0, "name": "myBox", "start": 0, @@ -37,7 +37,7 @@ description: Result of parsing function_sketch_with_position.kcl { "arguments": [ { - "commentStart": 45, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -48,10 +48,10 @@ description: Result of parsing function_sketch_with_position.kcl ], "callee": { "abs_path": false, - "commentStart": 31, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -61,7 +61,7 @@ description: Result of parsing function_sketch_with_position.kcl "start": 0, "type": "Name" }, - "commentStart": 31, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -71,10 +71,10 @@ description: Result of parsing function_sketch_with_position.kcl "arguments": [ { "abs_path": false, - "commentStart": 73, + "commentStart": 0, "end": 0, "name": { - "commentStart": 73, + "commentStart": 0, "end": 0, "name": "p", "start": 0, @@ -86,7 +86,7 @@ description: Result of parsing function_sketch_with_position.kcl "type": "Name" }, { - "commentStart": 76, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -95,10 +95,10 @@ description: Result of parsing function_sketch_with_position.kcl ], "callee": { "abs_path": false, - "commentStart": 58, + "commentStart": 0, "end": 0, "name": { - "commentStart": 58, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -108,7 +108,7 @@ description: Result of parsing function_sketch_with_position.kcl "start": 0, "type": "Name" }, - "commentStart": 58, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -119,17 +119,17 @@ description: Result of parsing function_sketch_with_position.kcl { "type": "LabeledArg", "label": { - "commentStart": 91, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 97, + "commentStart": 0, "elements": [ { - "commentStart": 98, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -142,10 +142,10 @@ description: Result of parsing function_sketch_with_position.kcl }, { "abs_path": false, - "commentStart": 101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 101, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -166,10 +166,10 @@ description: Result of parsing function_sketch_with_position.kcl ], "callee": { "abs_path": false, - "commentStart": 86, + "commentStart": 0, "end": 0, "name": { - "commentStart": 86, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -179,7 +179,7 @@ description: Result of parsing function_sketch_with_position.kcl "start": 0, "type": "Name" }, - "commentStart": 86, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -191,21 +191,21 @@ description: Result of parsing function_sketch_with_position.kcl { "type": "LabeledArg", "label": { - "commentStart": 117, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 123, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 124, + "commentStart": 0, "end": 0, "name": { - "commentStart": 124, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -217,7 +217,7 @@ description: Result of parsing function_sketch_with_position.kcl "type": "Name" }, { - "commentStart": 127, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -238,10 +238,10 @@ description: Result of parsing function_sketch_with_position.kcl ], "callee": { "abs_path": false, - "commentStart": 112, + "commentStart": 0, "end": 0, "name": { - "commentStart": 112, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -251,7 +251,7 @@ description: Result of parsing function_sketch_with_position.kcl "start": 0, "type": "Name" }, - "commentStart": 112, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -263,17 +263,17 @@ description: Result of parsing function_sketch_with_position.kcl { "type": "LabeledArg", "label": { - "commentStart": 143, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 149, + "commentStart": 0, "elements": [ { - "commentStart": 150, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -287,10 +287,10 @@ description: Result of parsing function_sketch_with_position.kcl { "argument": { "abs_path": false, - "commentStart": 154, + "commentStart": 0, "end": 0, "name": { - "commentStart": 154, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -301,7 +301,7 @@ description: Result of parsing function_sketch_with_position.kcl "type": "Name", "type": "Name" }, - "commentStart": 153, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -318,10 +318,10 @@ description: Result of parsing function_sketch_with_position.kcl ], "callee": { "abs_path": false, - "commentStart": 138, + "commentStart": 0, "end": 0, "name": { - "commentStart": 138, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -331,7 +331,7 @@ description: Result of parsing function_sketch_with_position.kcl "start": 0, "type": "Name" }, - "commentStart": 138, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -341,7 +341,7 @@ description: Result of parsing function_sketch_with_position.kcl { "arguments": [ { - "commentStart": 171, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -350,10 +350,10 @@ description: Result of parsing function_sketch_with_position.kcl ], "callee": { "abs_path": false, - "commentStart": 165, + "commentStart": 0, "end": 0, "name": { - "commentStart": 165, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -363,7 +363,7 @@ description: Result of parsing function_sketch_with_position.kcl "start": 0, "type": "Name" }, - "commentStart": 165, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -374,7 +374,7 @@ description: Result of parsing function_sketch_with_position.kcl { "type": "LabeledArg", "label": { - "commentStart": 189, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -382,10 +382,10 @@ description: Result of parsing function_sketch_with_position.kcl }, "arg": { "abs_path": false, - "commentStart": 198, + "commentStart": 0, "end": 0, "name": { - "commentStart": 198, + "commentStart": 0, "end": 0, "name": "h", "start": 0, @@ -400,10 +400,10 @@ description: Result of parsing function_sketch_with_position.kcl ], "callee": { "abs_path": false, - "commentStart": 181, + "commentStart": 0, "end": 0, "name": { - "commentStart": 181, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -413,7 +413,7 @@ description: Result of parsing function_sketch_with_position.kcl "start": 0, "type": "Name" }, - "commentStart": 181, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -421,7 +421,7 @@ description: Result of parsing function_sketch_with_position.kcl "unlabeled": null } ], - "commentStart": 31, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -439,10 +439,10 @@ description: Result of parsing function_sketch_with_position.kcl { "argument": { "abs_path": false, - "commentStart": 211, + "commentStart": 0, "end": 0, "name": { - "commentStart": 211, + "commentStart": 0, "end": 0, "name": "myBox", "start": 0, @@ -453,20 +453,20 @@ description: Result of parsing function_sketch_with_position.kcl "type": "Name", "type": "Name" }, - "commentStart": 200, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 19, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "0": [ { - "commentStart": 200, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -480,13 +480,13 @@ description: Result of parsing function_sketch_with_position.kcl }, "start": 0 }, - "commentStart": 6, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 7, + "commentStart": 0, "end": 0, "name": "p", "start": 0, @@ -496,7 +496,7 @@ description: Result of parsing function_sketch_with_position.kcl { "type": "Parameter", "identifier": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "h", "start": 0, @@ -506,7 +506,7 @@ description: Result of parsing function_sketch_with_position.kcl { "type": "Parameter", "identifier": { - "commentStart": 13, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -516,7 +516,7 @@ description: Result of parsing function_sketch_with_position.kcl { "type": "Parameter", "identifier": { - "commentStart": 16, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -538,12 +538,12 @@ description: Result of parsing function_sketch_with_position.kcl "type": "VariableDeclaration" }, { - "commentStart": 218, + "commentStart": 0, "declaration": { - "commentStart": 220, + "commentStart": 0, "end": 0, "id": { - "commentStart": 220, + "commentStart": 0, "end": 0, "name": "thing", "start": 0, @@ -552,10 +552,10 @@ description: Result of parsing function_sketch_with_position.kcl "init": { "arguments": [ { - "commentStart": 232, + "commentStart": 0, "elements": [ { - "commentStart": 233, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -567,7 +567,7 @@ description: Result of parsing function_sketch_with_position.kcl } }, { - "commentStart": 236, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -585,7 +585,7 @@ description: Result of parsing function_sketch_with_position.kcl "type": "ArrayExpression" }, { - "commentStart": 240, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -597,7 +597,7 @@ description: Result of parsing function_sketch_with_position.kcl } }, { - "commentStart": 243, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -609,7 +609,7 @@ description: Result of parsing function_sketch_with_position.kcl } }, { - "commentStart": 246, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -623,10 +623,10 @@ description: Result of parsing function_sketch_with_position.kcl ], "callee": { "abs_path": false, - "commentStart": 228, + "commentStart": 0, "end": 0, "name": { - "commentStart": 228, + "commentStart": 0, "end": 0, "name": "box", "start": 0, @@ -636,7 +636,7 @@ description: Result of parsing function_sketch_with_position.kcl "start": 0, "type": "Name" }, - "commentStart": 228, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -658,7 +658,7 @@ description: Result of parsing function_sketch_with_position.kcl "nonCodeNodes": { "0": [ { - "commentStart": 218, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/function_sketch_with_position/ops.snap b/rust/kcl-lib/tests/function_sketch_with_position/ops.snap index 4e263844b..6eb820382 100644 --- a/rust/kcl-lib/tests/function_sketch_with_position/ops.snap +++ b/rust/kcl-lib/tests/function_sketch_with_position/ops.snap @@ -20,7 +20,7 @@ description: Operations executed function_sketch_with_position.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/function_sketch_with_position/program_memory.snap b/rust/kcl-lib/tests/function_sketch_with_position/program_memory.snap index bd7dbec85..145e19587 100644 --- a/rust/kcl-lib/tests/function_sketch_with_position/program_memory.snap +++ b/rust/kcl-lib/tests/function_sketch_with_position/program_memory.snap @@ -131,22 +131,34 @@ description: Variables in memory after executing function_sketch_with_position.k "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/helix_ccw/artifact_commands.snap b/rust/kcl-lib/tests/helix_ccw/artifact_commands.snap index 6b40a6102..a81670408 100644 --- a/rust/kcl-lib/tests/helix_ccw/artifact_commands.snap +++ b/rust/kcl-lib/tests/helix_ccw/artifact_commands.snap @@ -153,7 +153,8 @@ description: Artifact commands helix_ccw.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/helix_ccw/ast.snap b/rust/kcl-lib/tests/helix_ccw/ast.snap index 28ea5d2f8..92dc7dc56 100644 --- a/rust/kcl-lib/tests/helix_ccw/ast.snap +++ b/rust/kcl-lib/tests/helix_ccw/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing helix_ccw.kcl { "arguments": [ { - "commentStart": 24, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing helix_ccw.kcl ], "callee": { "abs_path": false, - "commentStart": 10, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing helix_ccw.kcl "start": 0, "type": "Name" }, - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -57,17 +57,17 @@ description: Result of parsing helix_ccw.kcl { "type": "LabeledArg", "label": { - "commentStart": 42, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 51, + "commentStart": 0, "elements": [ { - "commentStart": 52, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -79,7 +79,7 @@ description: Result of parsing helix_ccw.kcl } }, { - "commentStart": 55, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -100,14 +100,14 @@ description: Result of parsing helix_ccw.kcl { "type": "LabeledArg", "label": { - "commentStart": 59, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 68, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -122,10 +122,10 @@ description: Result of parsing helix_ccw.kcl ], "callee": { "abs_path": false, - "commentStart": 35, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -135,7 +135,7 @@ description: Result of parsing helix_ccw.kcl "start": 0, "type": "Name" }, - "commentStart": 35, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -147,14 +147,14 @@ description: Result of parsing helix_ccw.kcl { "type": "LabeledArg", "label": { - "commentStart": 85, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 94, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -169,10 +169,10 @@ description: Result of parsing helix_ccw.kcl ], "callee": { "abs_path": false, - "commentStart": 77, + "commentStart": 0, "end": 0, "name": { - "commentStart": 77, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -182,7 +182,7 @@ description: Result of parsing helix_ccw.kcl "start": 0, "type": "Name" }, - "commentStart": 77, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -194,14 +194,14 @@ description: Result of parsing helix_ccw.kcl { "type": "LabeledArg", "label": { - "commentStart": 117, + "commentStart": 0, "end": 0, "name": "revolutions", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 131, + "commentStart": 0, "end": 0, "raw": "16", "start": 0, @@ -216,14 +216,14 @@ description: Result of parsing helix_ccw.kcl { "type": "LabeledArg", "label": { - "commentStart": 142, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 155, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -238,14 +238,14 @@ description: Result of parsing helix_ccw.kcl { "type": "LabeledArg", "label": { - "commentStart": 165, + "commentStart": 0, "end": 0, "name": "ccw", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 171, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -257,14 +257,14 @@ description: Result of parsing helix_ccw.kcl { "type": "LabeledArg", "label": { - "commentStart": 184, + "commentStart": 0, "end": 0, "name": "cylinder", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 195, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -274,10 +274,10 @@ description: Result of parsing helix_ccw.kcl ], "callee": { "abs_path": false, - "commentStart": 103, + "commentStart": 0, "end": 0, "name": { - "commentStart": 103, + "commentStart": 0, "end": 0, "name": "helix", "start": 0, @@ -287,7 +287,7 @@ description: Result of parsing helix_ccw.kcl "start": 0, "type": "Name" }, - "commentStart": 103, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -295,7 +295,7 @@ description: Result of parsing helix_ccw.kcl "unlabeled": null } ], - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/helix_ccw/ops.snap b/rust/kcl-lib/tests/helix_ccw/ops.snap index 856b5be03..d66464644 100644 --- a/rust/kcl-lib/tests/helix_ccw/ops.snap +++ b/rust/kcl-lib/tests/helix_ccw/ops.snap @@ -5,7 +5,7 @@ description: Operations executed helix_ccw.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/helix_simple/ast.snap b/rust/kcl-lib/tests/helix_simple/ast.snap index 1ab2dd97a..a118e0dc2 100644 --- a/rust/kcl-lib/tests/helix_simple/ast.snap +++ b/rust/kcl-lib/tests/helix_simple/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing helix_simple.kcl { "commentStart": 0, "declaration": { - "commentStart": 34, + "commentStart": 0, "end": 0, "id": { - "commentStart": 34, + "commentStart": 0, "end": 0, "name": "helper001", "start": 0, @@ -22,7 +22,7 @@ description: Result of parsing helix_simple.kcl { "arguments": [ { - "commentStart": 60, + "commentStart": 0, "end": 0, "raw": "'XZ'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing helix_simple.kcl ], "callee": { "abs_path": false, - "commentStart": 46, + "commentStart": 0, "end": 0, "name": { - "commentStart": 46, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing helix_simple.kcl "start": 0, "type": "Name" }, - "commentStart": 46, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing helix_simple.kcl { "arguments": [ { - "commentStart": 86, + "commentStart": 0, "elements": [ { - "commentStart": 87, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing helix_simple.kcl } }, { - "commentStart": 90, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing helix_simple.kcl "type": "ArrayExpression" }, { - "commentStart": 94, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing helix_simple.kcl ], "callee": { "abs_path": false, - "commentStart": 71, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing helix_simple.kcl "start": 0, "type": "Name" }, - "commentStart": 71, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +121,17 @@ description: Result of parsing helix_simple.kcl { "type": "LabeledArg", "label": { - "commentStart": 107, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 113, + "commentStart": 0, "elements": [ { - "commentStart": 114, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -143,7 +143,7 @@ description: Result of parsing helix_simple.kcl } }, { - "commentStart": 117, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -164,14 +164,14 @@ description: Result of parsing helix_simple.kcl { "type": "LabeledArg", "label": { - "commentStart": 122, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 128, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -182,10 +182,10 @@ description: Result of parsing helix_simple.kcl ], "callee": { "abs_path": false, - "commentStart": 102, + "commentStart": 0, "end": 0, "name": { - "commentStart": 102, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -195,7 +195,7 @@ description: Result of parsing helix_simple.kcl "start": 0, "type": "Name" }, - "commentStart": 102, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -203,7 +203,7 @@ description: Result of parsing helix_simple.kcl "unlabeled": null } ], - "commentStart": 46, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -222,12 +222,12 @@ description: Result of parsing helix_simple.kcl "type": "VariableDeclaration" }, { - "commentStart": 137, + "commentStart": 0, "declaration": { - "commentStart": 139, + "commentStart": 0, "end": 0, "id": { - "commentStart": 139, + "commentStart": 0, "end": 0, "name": "helixPath", "start": 0, @@ -238,14 +238,14 @@ description: Result of parsing helix_simple.kcl { "type": "LabeledArg", "label": { - "commentStart": 160, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 173, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -260,14 +260,14 @@ description: Result of parsing helix_simple.kcl { "type": "LabeledArg", "label": { - "commentStart": 178, + "commentStart": 0, "end": 0, "name": "ccw", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 184, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -279,14 +279,14 @@ description: Result of parsing helix_simple.kcl { "type": "LabeledArg", "label": { - "commentStart": 192, + "commentStart": 0, "end": 0, "name": "revolutions", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 206, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -301,14 +301,14 @@ description: Result of parsing helix_simple.kcl { "type": "LabeledArg", "label": { - "commentStart": 211, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 220, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -323,14 +323,14 @@ description: Result of parsing helix_simple.kcl { "type": "LabeledArg", "label": { - "commentStart": 226, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 235, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -345,7 +345,7 @@ description: Result of parsing helix_simple.kcl { "type": "LabeledArg", "label": { - "commentStart": 240, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -353,10 +353,10 @@ description: Result of parsing helix_simple.kcl }, "arg": { "abs_path": false, - "commentStart": 247, + "commentStart": 0, "end": 0, "name": { - "commentStart": 247, + "commentStart": 0, "end": 0, "name": "edge001", "start": 0, @@ -371,10 +371,10 @@ description: Result of parsing helix_simple.kcl ], "callee": { "abs_path": false, - "commentStart": 151, + "commentStart": 0, "end": 0, "name": { - "commentStart": 151, + "commentStart": 0, "end": 0, "name": "helix", "start": 0, @@ -384,7 +384,7 @@ description: Result of parsing helix_simple.kcl "start": 0, "type": "Name" }, - "commentStart": 151, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -407,7 +407,7 @@ description: Result of parsing helix_simple.kcl "nonCodeNodes": { "0": [ { - "commentStart": 137, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/helix_simple/ops.snap b/rust/kcl-lib/tests/helix_simple/ops.snap index f9702e74e..c184a38c0 100644 --- a/rust/kcl-lib/tests/helix_simple/ops.snap +++ b/rust/kcl-lib/tests/helix_simple/ops.snap @@ -5,7 +5,7 @@ description: Operations executed helix_simple.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XZ" diff --git a/rust/kcl-lib/tests/helix_simple/program_memory.snap b/rust/kcl-lib/tests/helix_simple/program_memory.snap index 6b60152bd..92562c142 100644 --- a/rust/kcl-lib/tests/helix_simple/program_memory.snap +++ b/rust/kcl-lib/tests/helix_simple/program_memory.snap @@ -62,22 +62,34 @@ description: Variables in memory after executing helix_simple.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/i_shape/artifact_commands.snap b/rust/kcl-lib/tests/i_shape/artifact_commands.snap index 3f7335fe8..9337fc141 100644 --- a/rust/kcl-lib/tests/i_shape/artifact_commands.snap +++ b/rust/kcl-lib/tests/i_shape/artifact_commands.snap @@ -766,7 +766,8 @@ description: Artifact commands i_shape.kcl "type": "extrude", "target": "[uuid]", "distance": 3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/i_shape/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/i_shape/artifact_graph_flowchart.snap.md index d2a06f43a..589599aec 100644 --- a/rust/kcl-lib/tests/i_shape/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/i_shape/artifact_graph_flowchart.snap.md @@ -3,48 +3,48 @@ flowchart LR subgraph path2 [Path] 2["Path
[422, 459, 0]"] 3["Segment
[465, 505, 0]"] - 4["Segment
[511, 569, 0]"] - 5["Segment
[575, 611, 0]"] - 6["Segment
[617, 676, 0]"] - 7["Segment
[682, 747, 0]"] - 8["Segment
[753, 812, 0]"] - 9["Segment
[818, 876, 0]"] - 10["Segment
[882, 940, 0]"] - 11["Segment
[946, 988, 0]"] - 12["Segment
[994, 1052, 0]"] - 13["Segment
[1058, 1094, 0]"] - 14["Segment
[1100, 1159, 0]"] - 15["Segment
[1165, 1234, 0]"] - 16["Segment
[1240, 1300, 0]"] - 17["Segment
[1306, 1345, 0]"] - 18["Segment
[1351, 1410, 0]"] - 19["Segment
[1416, 1458, 0]"] - 20["Segment
[1464, 1523, 0]"] - 21["Segment
[1529, 1590, 0]"] - 22["Segment
[1596, 1656, 0]"] - 23["Segment
[1662, 1792, 0]"] - 24["Segment
[1798, 1858, 0]"] - 25["Segment
[1864, 1903, 0]"] - 26["Segment
[1909, 1968, 0]"] - 27["Segment
[1974, 1982, 0]"] + 4["Segment
[511, 562, 0]"] + 5["Segment
[568, 604, 0]"] + 6["Segment
[610, 662, 0]"] + 7["Segment
[668, 733, 0]"] + 8["Segment
[739, 791, 0]"] + 9["Segment
[797, 855, 0]"] + 10["Segment
[861, 912, 0]"] + 11["Segment
[918, 960, 0]"] + 12["Segment
[966, 1017, 0]"] + 13["Segment
[1023, 1059, 0]"] + 14["Segment
[1065, 1117, 0]"] + 15["Segment
[1123, 1192, 0]"] + 16["Segment
[1198, 1251, 0]"] + 17["Segment
[1257, 1296, 0]"] + 18["Segment
[1302, 1354, 0]"] + 19["Segment
[1360, 1402, 0]"] + 20["Segment
[1408, 1460, 0]"] + 21["Segment
[1466, 1527, 0]"] + 22["Segment
[1533, 1586, 0]"] + 23["Segment
[1592, 1722, 0]"] + 24["Segment
[1728, 1781, 0]"] + 25["Segment
[1787, 1826, 0]"] + 26["Segment
[1832, 1884, 0]"] + 27["Segment
[1890, 1898, 0]"] 28[Solid2d] end subgraph path30 [Path] - 30["Path
[2015, 2040, 0]"] - 31["Segment
[2046, 2065, 0]"] - 32["Segment
[2071, 2129, 0]"] - 33["Segment
[2135, 2177, 0]"] - 34["Segment
[2183, 2242, 0]"] - 35["Segment
[2248, 2268, 0]"] - 36["Segment
[2274, 2334, 0]"] - 37["Segment
[2340, 2385, 0]"] - 38["Segment
[2391, 2450, 0]"] - 39["Segment
[2456, 2464, 0]"] + 30["Path
[1931, 1956, 0]"] + 31["Segment
[1962, 1981, 0]"] + 32["Segment
[1987, 2038, 0]"] + 33["Segment
[2044, 2086, 0]"] + 34["Segment
[2092, 2144, 0]"] + 35["Segment
[2150, 2170, 0]"] + 36["Segment
[2176, 2229, 0]"] + 37["Segment
[2235, 2280, 0]"] + 38["Segment
[2286, 2338, 0]"] + 39["Segment
[2344, 2352, 0]"] 40[Solid2d] end 1["Plane
[399, 416, 0]"] - 29["Plane
[1992, 2009, 0]"] - 41["Sweep Extrusion
[2510, 2531, 0]"] + 29["Plane
[1908, 1925, 0]"] + 41["Sweep Extrusion
[2398, 2419, 0]"] 42[Wall] 43[Wall] 44[Wall] diff --git a/rust/kcl-lib/tests/i_shape/ast.snap b/rust/kcl-lib/tests/i_shape/ast.snap index d9cd1dce4..eb9a2389d 100644 --- a/rust/kcl-lib/tests/i_shape/ast.snap +++ b/rust/kcl-lib/tests/i_shape/ast.snap @@ -18,10 +18,10 @@ description: Result of parsing i_shape.kcl "type": "Identifier" }, "init": { - "commentStart": 24, + "commentStart": 0, "elements": [ { - "commentStart": 25, + "commentStart": 0, "end": 0, "raw": "22.8", "start": 0, @@ -33,7 +33,7 @@ description: Result of parsing i_shape.kcl } }, { - "commentStart": 31, + "commentStart": 0, "end": 0, "raw": "10.7", "start": 0, @@ -45,7 +45,7 @@ description: Result of parsing i_shape.kcl } }, { - "commentStart": 37, + "commentStart": 0, "end": 0, "raw": "16.4", "start": 0, @@ -57,7 +57,7 @@ description: Result of parsing i_shape.kcl } }, { - "commentStart": 43, + "commentStart": 0, "end": 0, "raw": "18.5", "start": 0, @@ -84,32 +84,32 @@ description: Result of parsing i_shape.kcl "type": "VariableDeclaration" }, { - "commentStart": 49, + "commentStart": 0, "declaration": { - "commentStart": 49, + "commentStart": 0, "end": 0, "id": { - "commentStart": 49, + "commentStart": 0, "end": 0, "name": "width", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 57, + "commentStart": 0, "end": 0, "left": { - "commentStart": 57, + "commentStart": 0, "end": 0, "left": { - "commentStart": 57, + "commentStart": 0, "end": 0, "left": { - "commentStart": 57, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 57, + "commentStart": 0, "end": 0, "name": "d_wrist_circumference", "start": 0, @@ -117,7 +117,7 @@ description: Result of parsing i_shape.kcl "type": "Identifier" }, "property": { - "commentStart": 79, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -134,11 +134,11 @@ description: Result of parsing i_shape.kcl }, "operator": "+", "right": { - "commentStart": 84, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 84, + "commentStart": 0, "end": 0, "name": "d_wrist_circumference", "start": 0, @@ -146,7 +146,7 @@ description: Result of parsing i_shape.kcl "type": "Identifier" }, "property": { - "commentStart": 106, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -167,11 +167,11 @@ description: Result of parsing i_shape.kcl }, "operator": "+", "right": { - "commentStart": 111, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 111, + "commentStart": 0, "end": 0, "name": "d_wrist_circumference", "start": 0, @@ -179,7 +179,7 @@ description: Result of parsing i_shape.kcl "type": "Identifier" }, "property": { - "commentStart": 133, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -200,11 +200,11 @@ description: Result of parsing i_shape.kcl }, "operator": "+", "right": { - "commentStart": 138, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 138, + "commentStart": 0, "end": 0, "name": "d_wrist_circumference", "start": 0, @@ -212,7 +212,7 @@ description: Result of parsing i_shape.kcl "type": "Identifier" }, "property": { - "commentStart": 160, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -241,19 +241,19 @@ description: Result of parsing i_shape.kcl "type": "VariableDeclaration" }, { - "commentStart": 163, + "commentStart": 0, "declaration": { - "commentStart": 163, + "commentStart": 0, "end": 0, "id": { - "commentStart": 163, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 172, + "commentStart": 0, "end": 0, "raw": "120.0", "start": 0, @@ -274,19 +274,19 @@ description: Result of parsing i_shape.kcl "type": "VariableDeclaration" }, { - "commentStart": 178, + "commentStart": 0, "declaration": { - "commentStart": 178, + "commentStart": 0, "end": 0, "id": { - "commentStart": 178, + "commentStart": 0, "end": 0, "name": "hand_thickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 195, + "commentStart": 0, "end": 0, "raw": "24.0", "start": 0, @@ -307,19 +307,19 @@ description: Result of parsing i_shape.kcl "type": "VariableDeclaration" }, { - "commentStart": 200, + "commentStart": 0, "declaration": { - "commentStart": 200, + "commentStart": 0, "end": 0, "id": { - "commentStart": 200, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 216, + "commentStart": 0, "end": 0, "raw": "5.0", "start": 0, @@ -340,12 +340,12 @@ description: Result of parsing i_shape.kcl "type": "VariableDeclaration" }, { - "commentStart": 219, + "commentStart": 0, "declaration": { - "commentStart": 386, + "commentStart": 0, "end": 0, "id": { - "commentStart": 386, + "commentStart": 0, "end": 0, "name": "brace_base", "start": 0, @@ -357,10 +357,10 @@ description: Result of parsing i_shape.kcl "arguments": [ { "abs_path": false, - "commentStart": 413, + "commentStart": 0, "end": 0, "name": { - "commentStart": 413, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -374,10 +374,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 399, + "commentStart": 0, "end": 0, "name": { - "commentStart": 399, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -387,7 +387,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 399, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -396,14 +396,14 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 437, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 438, + "commentStart": 0, "end": 0, "name": { - "commentStart": 438, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -415,7 +415,7 @@ description: Result of parsing i_shape.kcl "type": "Name" }, { - "commentStart": 453, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -433,7 +433,7 @@ description: Result of parsing i_shape.kcl "type": "ArrayExpression" }, { - "commentStart": 457, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -442,10 +442,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 422, + "commentStart": 0, "end": 0, "name": { - "commentStart": 422, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -455,7 +455,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 422, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -466,24 +466,24 @@ description: Result of parsing i_shape.kcl { "type": "LabeledArg", "label": { - "commentStart": 470, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 476, + "commentStart": 0, "elements": [ { - "commentStart": 477, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 477, + "commentStart": 0, "end": 0, "name": { - "commentStart": 477, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -497,10 +497,10 @@ description: Result of parsing i_shape.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 485, + "commentStart": 0, "end": 0, "name": { - "commentStart": 485, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -516,7 +516,7 @@ description: Result of parsing i_shape.kcl "type": "BinaryExpression" }, { - "commentStart": 500, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -537,10 +537,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 465, + "commentStart": 0, "end": 0, "name": { - "commentStart": 465, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -550,7 +550,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 465, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -560,62 +560,65 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 535, - "elements": [ - { - "abs_path": false, - "commentStart": 536, - "end": 0, - "name": { - "commentStart": 536, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "corner_radius", + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 551, - "end": 0, - "name": { - "commentStart": 551, + { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "corner_radius", + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 567, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "Name", + "type": "Name" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 511, + "commentStart": 0, "end": 0, "name": { - "commentStart": 511, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -623,28 +626,29 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 511, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 581, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 590, + "commentStart": 0, "end": 0, "left": { - "commentStart": 590, + "commentStart": 0, "end": 0, "raw": "25.0", "start": 0, @@ -658,10 +662,10 @@ description: Result of parsing i_shape.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 597, + "commentStart": 0, "end": 0, "name": { - "commentStart": 597, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -680,10 +684,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 575, + "commentStart": 0, "end": 0, "name": { - "commentStart": 575, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -693,7 +697,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 575, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -703,15 +707,47 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 641, - "elements": [ - { - "argument": { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + { "abs_path": false, - "commentStart": 643, + "commentStart": 0, "end": 0, "name": { - "commentStart": 643, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -721,52 +757,23 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name", "type": "Name" - }, - "commentStart": 642, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - { - "abs_path": false, - "commentStart": 658, - "end": 0, - "name": { - "commentStart": 658, - "end": 0, - "name": "corner_radius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 674, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 617, + "commentStart": 0, "end": 0, "name": { - "commentStart": 617, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -774,18 +781,19 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 617, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 688, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -793,14 +801,14 @@ description: Result of parsing i_shape.kcl }, "arg": { "argument": { - "commentStart": 699, + "commentStart": 0, "end": 0, "left": { - "commentStart": 699, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 699, + "commentStart": 0, "end": 0, "name": "d_wrist_circumference", "start": 0, @@ -808,7 +816,7 @@ description: Result of parsing i_shape.kcl "type": "Identifier" }, "property": { - "commentStart": 721, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -825,14 +833,14 @@ description: Result of parsing i_shape.kcl }, "operator": "-", "right": { - "commentStart": 727, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 727, + "commentStart": 0, "end": 0, "name": { - "commentStart": 727, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -845,7 +853,7 @@ description: Result of parsing i_shape.kcl }, "operator": "*", "right": { - "commentStart": 743, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -864,7 +872,7 @@ description: Result of parsing i_shape.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 697, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -875,10 +883,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 682, + "commentStart": 0, "end": 0, "name": { - "commentStart": 682, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -888,7 +896,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 682, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -898,15 +906,47 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 777, - "elements": [ - { - "argument": { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + { "abs_path": false, - "commentStart": 779, + "commentStart": 0, "end": 0, "name": { - "commentStart": 779, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -916,52 +956,23 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name", "type": "Name" - }, - "commentStart": 778, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - { - "abs_path": false, - "commentStart": 794, - "end": 0, - "name": { - "commentStart": 794, - "end": 0, - "name": "corner_radius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 810, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 753, + "commentStart": 0, "end": 0, "name": { - "commentStart": 753, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -969,38 +980,39 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 753, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 824, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 833, + "commentStart": 0, "end": 0, "left": { - "commentStart": 833, + "commentStart": 0, "end": 0, "left": { - "commentStart": 833, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 833, + "commentStart": 0, "end": 0, "name": { - "commentStart": 833, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1013,7 +1025,7 @@ description: Result of parsing i_shape.kcl }, "operator": "-", "right": { - "commentStart": 842, + "commentStart": 0, "end": 0, "raw": "25.0", "start": 0, @@ -1030,7 +1042,7 @@ description: Result of parsing i_shape.kcl }, "operator": "-", "right": { - "commentStart": 849, + "commentStart": 0, "end": 0, "raw": "23.0", "start": 0, @@ -1047,14 +1059,14 @@ description: Result of parsing i_shape.kcl }, "operator": "-", "right": { - "commentStart": 857, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 857, + "commentStart": 0, "end": 0, "name": { - "commentStart": 857, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -1067,7 +1079,7 @@ description: Result of parsing i_shape.kcl }, "operator": "*", "right": { - "commentStart": 873, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1090,10 +1102,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 818, + "commentStart": 0, "end": 0, "name": { - "commentStart": 818, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1103,7 +1115,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 818, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1113,62 +1125,65 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 906, - "elements": [ - { - "abs_path": false, - "commentStart": 907, - "end": 0, - "name": { - "commentStart": 907, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "corner_radius", + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 922, - "end": 0, - "name": { - "commentStart": 922, + { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "corner_radius", + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 938, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "Name", + "type": "Name" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 882, + "commentStart": 0, "end": 0, "name": { - "commentStart": 882, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -1176,28 +1191,29 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 882, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 952, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 961, + "commentStart": 0, "end": 0, "left": { - "commentStart": 961, + "commentStart": 0, "end": 0, "raw": "15.0", "start": 0, @@ -1210,14 +1226,14 @@ description: Result of parsing i_shape.kcl }, "operator": "-", "right": { - "commentStart": 969, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 969, + "commentStart": 0, "end": 0, "name": { - "commentStart": 969, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -1230,7 +1246,7 @@ description: Result of parsing i_shape.kcl }, "operator": "*", "right": { - "commentStart": 985, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1253,10 +1269,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 946, + "commentStart": 0, "end": 0, "name": { - "commentStart": 946, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1266,7 +1282,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 946, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1276,62 +1292,65 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 1018, - "elements": [ - { - "abs_path": false, - "commentStart": 1019, - "end": 0, - "name": { - "commentStart": 1019, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "corner_radius", + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 1034, - "end": 0, - "name": { - "commentStart": 1034, + { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "corner_radius", + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1050, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "Name", + "type": "Name" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 994, + "commentStart": 0, "end": 0, "name": { - "commentStart": 994, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -1339,28 +1358,29 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 994, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1064, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1073, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1073, + "commentStart": 0, "end": 0, "raw": "23.0", "start": 0, @@ -1374,10 +1394,10 @@ description: Result of parsing i_shape.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1080, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1080, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -1396,10 +1416,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 1058, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1058, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1409,7 +1429,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1058, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1419,15 +1439,47 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 1124, - "elements": [ - { - "argument": { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + { "abs_path": false, - "commentStart": 1126, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1126, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -1437,52 +1489,23 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name", "type": "Name" - }, - "commentStart": 1125, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - { - "abs_path": false, - "commentStart": 1141, - "end": 0, - "name": { - "commentStart": 1141, - "end": 0, - "name": "corner_radius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1157, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1100, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1100, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -1490,18 +1513,19 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1100, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1171, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1509,20 +1533,20 @@ description: Result of parsing i_shape.kcl }, "arg": { "argument": { - "commentStart": 1182, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1182, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1182, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1182, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1182, + "commentStart": 0, "end": 0, "name": "hand_thickness", "start": 0, @@ -1535,7 +1559,7 @@ description: Result of parsing i_shape.kcl }, "operator": "+", "right": { - "commentStart": 1199, + "commentStart": 0, "end": 0, "raw": "15.0", "start": 0, @@ -1552,7 +1576,7 @@ description: Result of parsing i_shape.kcl }, "operator": "+", "right": { - "commentStart": 1206, + "commentStart": 0, "end": 0, "raw": "15.0", "start": 0, @@ -1569,14 +1593,14 @@ description: Result of parsing i_shape.kcl }, "operator": "-", "right": { - "commentStart": 1214, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1214, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1214, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -1589,7 +1613,7 @@ description: Result of parsing i_shape.kcl }, "operator": "*", "right": { - "commentStart": 1230, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1608,7 +1632,7 @@ description: Result of parsing i_shape.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1180, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1619,10 +1643,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 1165, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1165, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1632,7 +1656,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1165, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1642,78 +1666,81 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 1264, - "elements": [ - { - "argument": { - "abs_path": false, - "commentStart": 1266, - "end": 0, - "name": { - "commentStart": 1266, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "argument": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "corner_radius", + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 1265, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - { - "argument": { - "abs_path": false, - "commentStart": 1282, + "commentStart": 0, "end": 0, - "name": { - "commentStart": 1282, - "end": 0, - "name": "corner_radius", - "start": 0, - "type": "Identifier" - }, - "path": [], + "operator": "-", "start": 0, - "type": "Name", - "type": "Name" + "type": "UnaryExpression", + "type": "UnaryExpression" }, - "commentStart": 1281, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1298, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1240, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1240, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -1721,18 +1748,19 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1240, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1312, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1740,10 +1768,10 @@ description: Result of parsing i_shape.kcl }, "arg": { "argument": { - "commentStart": 1323, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1323, + "commentStart": 0, "end": 0, "raw": "23.0", "start": 0, @@ -1757,10 +1785,10 @@ description: Result of parsing i_shape.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1330, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1330, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -1775,7 +1803,7 @@ description: Result of parsing i_shape.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1321, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1786,10 +1814,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 1306, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1306, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1799,7 +1827,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1306, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1809,31 +1837,23 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 1375, - "elements": [ - { - "abs_path": false, - "commentStart": 1376, - "end": 0, - "name": { - "commentStart": 1376, - "end": 0, - "name": "corner_radius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "argument": { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { "abs_path": false, - "commentStart": 1392, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1392, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -1844,35 +1864,46 @@ description: Result of parsing i_shape.kcl "type": "Name", "type": "Name" }, - "commentStart": 1391, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1408, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1351, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1351, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -1880,28 +1911,29 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1351, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1422, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1431, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1431, + "commentStart": 0, "end": 0, "raw": "15.0", "start": 0, @@ -1914,14 +1946,14 @@ description: Result of parsing i_shape.kcl }, "operator": "-", "right": { - "commentStart": 1439, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1439, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1439, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -1934,7 +1966,7 @@ description: Result of parsing i_shape.kcl }, "operator": "*", "right": { - "commentStart": 1455, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1957,10 +1989,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 1416, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1416, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1970,7 +2002,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1416, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1980,31 +2012,23 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 1488, - "elements": [ - { - "abs_path": false, - "commentStart": 1489, - "end": 0, - "name": { - "commentStart": 1489, - "end": 0, - "name": "corner_radius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "argument": { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { "abs_path": false, - "commentStart": 1505, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1505, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -2015,35 +2039,46 @@ description: Result of parsing i_shape.kcl "type": "Name", "type": "Name" }, - "commentStart": 1504, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1521, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1464, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1464, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -2051,18 +2086,19 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1464, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1535, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2070,20 +2106,20 @@ description: Result of parsing i_shape.kcl }, "arg": { "argument": { - "commentStart": 1546, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1546, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1546, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1546, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1546, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2096,7 +2132,7 @@ description: Result of parsing i_shape.kcl }, "operator": "-", "right": { - "commentStart": 1555, + "commentStart": 0, "end": 0, "raw": "25.0", "start": 0, @@ -2113,7 +2149,7 @@ description: Result of parsing i_shape.kcl }, "operator": "-", "right": { - "commentStart": 1562, + "commentStart": 0, "end": 0, "raw": "23.0", "start": 0, @@ -2130,14 +2166,14 @@ description: Result of parsing i_shape.kcl }, "operator": "-", "right": { - "commentStart": 1570, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1570, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1570, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -2150,7 +2186,7 @@ description: Result of parsing i_shape.kcl }, "operator": "*", "right": { - "commentStart": 1586, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2169,7 +2205,7 @@ description: Result of parsing i_shape.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1544, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2180,10 +2216,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 1529, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1529, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2193,7 +2229,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1529, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2203,78 +2239,81 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 1620, - "elements": [ - { - "argument": { - "abs_path": false, - "commentStart": 1622, - "end": 0, - "name": { - "commentStart": 1622, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "argument": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "corner_radius", + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 1621, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - { - "argument": { - "abs_path": false, - "commentStart": 1638, + "commentStart": 0, "end": 0, - "name": { - "commentStart": 1638, - "end": 0, - "name": "corner_radius", - "start": 0, - "type": "Identifier" - }, - "path": [], + "operator": "-", "start": 0, - "type": "Name", - "type": "Name" + "type": "UnaryExpression", + "type": "UnaryExpression" }, - "commentStart": 1637, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1654, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1596, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1596, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -2282,18 +2321,19 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1596, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1668, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2301,23 +2341,23 @@ description: Result of parsing i_shape.kcl }, "arg": { "argument": { - "commentStart": 1679, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1679, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1679, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1679, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1679, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1679, + "commentStart": 0, "end": 0, "name": "d_wrist_circumference", "start": 0, @@ -2325,7 +2365,7 @@ description: Result of parsing i_shape.kcl "type": "Identifier" }, "property": { - "commentStart": 1701, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2342,11 +2382,11 @@ description: Result of parsing i_shape.kcl }, "operator": "+", "right": { - "commentStart": 1706, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1706, + "commentStart": 0, "end": 0, "name": "d_wrist_circumference", "start": 0, @@ -2354,7 +2394,7 @@ description: Result of parsing i_shape.kcl "type": "Identifier" }, "property": { - "commentStart": 1728, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2375,11 +2415,11 @@ description: Result of parsing i_shape.kcl }, "operator": "+", "right": { - "commentStart": 1733, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1733, + "commentStart": 0, "end": 0, "name": "d_wrist_circumference", "start": 0, @@ -2387,7 +2427,7 @@ description: Result of parsing i_shape.kcl "type": "Identifier" }, "property": { - "commentStart": 1755, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -2409,10 +2449,10 @@ description: Result of parsing i_shape.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1760, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1760, + "commentStart": 0, "end": 0, "name": "hand_thickness", "start": 0, @@ -2430,10 +2470,10 @@ description: Result of parsing i_shape.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1777, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1777, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -2448,7 +2488,7 @@ description: Result of parsing i_shape.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1677, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2459,10 +2499,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 1662, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1662, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2472,7 +2512,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1662, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2482,78 +2522,81 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 1822, - "elements": [ - { - "argument": { - "abs_path": false, - "commentStart": 1824, - "end": 0, - "name": { - "commentStart": 1824, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "argument": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "corner_radius", + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 1823, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - { - "argument": { - "abs_path": false, - "commentStart": 1840, + "commentStart": 0, "end": 0, - "name": { - "commentStart": 1840, - "end": 0, - "name": "corner_radius", - "start": 0, - "type": "Identifier" - }, - "path": [], + "operator": "-", "start": 0, - "type": "Name", - "type": "Name" + "type": "UnaryExpression", + "type": "UnaryExpression" }, - "commentStart": 1839, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1856, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1798, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1798, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -2561,18 +2604,19 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1798, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1870, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2580,10 +2624,10 @@ description: Result of parsing i_shape.kcl }, "arg": { "argument": { - "commentStart": 1881, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1881, + "commentStart": 0, "end": 0, "raw": "25.0", "start": 0, @@ -2597,10 +2641,10 @@ description: Result of parsing i_shape.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1888, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1888, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -2615,7 +2659,7 @@ description: Result of parsing i_shape.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1879, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2626,10 +2670,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 1864, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1864, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2639,7 +2683,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1864, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2649,31 +2693,23 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 1933, - "elements": [ - { - "abs_path": false, - "commentStart": 1934, - "end": 0, - "name": { - "commentStart": 1934, - "end": 0, - "name": "corner_radius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "argument": { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { "abs_path": false, - "commentStart": 1950, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1950, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -2684,35 +2720,46 @@ description: Result of parsing i_shape.kcl "type": "Name", "type": "Name" }, - "commentStart": 1949, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1966, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1909, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1909, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -2720,16 +2767,17 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1909, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1980, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2738,10 +2786,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 1974, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1974, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2751,14 +2799,14 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1974, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 399, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2781,12 +2829,12 @@ description: Result of parsing i_shape.kcl "type": "VariableDeclaration" }, { - "commentStart": 1982, + "commentStart": 0, "declaration": { - "commentStart": 1984, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1984, + "commentStart": 0, "end": 0, "name": "inner", "start": 0, @@ -2798,10 +2846,10 @@ description: Result of parsing i_shape.kcl "arguments": [ { "abs_path": false, - "commentStart": 2006, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2006, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -2815,10 +2863,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 1992, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1992, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2828,7 +2876,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 1992, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2837,10 +2885,10 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 2030, + "commentStart": 0, "elements": [ { - "commentStart": 2031, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2852,7 +2900,7 @@ description: Result of parsing i_shape.kcl } }, { - "commentStart": 2034, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2870,7 +2918,7 @@ description: Result of parsing i_shape.kcl "type": "ArrayExpression" }, { - "commentStart": 2038, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2879,10 +2927,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 2015, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2015, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2892,7 +2940,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 2015, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2903,14 +2951,14 @@ description: Result of parsing i_shape.kcl { "type": "LabeledArg", "label": { - "commentStart": 2052, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2061, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -2925,10 +2973,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 2046, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2046, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2938,7 +2986,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 2046, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2948,62 +2996,65 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 2095, - "elements": [ - { - "abs_path": false, - "commentStart": 2096, - "end": 0, - "name": { - "commentStart": 2096, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "corner_radius", + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 2111, - "end": 0, - "name": { - "commentStart": 2111, + { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "corner_radius", + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2127, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "Name", + "type": "Name" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 2071, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2071, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -3011,28 +3062,29 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 2071, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2141, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2150, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2150, + "commentStart": 0, "end": 0, "raw": "25.0", "start": 0, @@ -3045,14 +3097,14 @@ description: Result of parsing i_shape.kcl }, "operator": "-", "right": { - "commentStart": 2158, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2158, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2158, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -3065,7 +3117,7 @@ description: Result of parsing i_shape.kcl }, "operator": "*", "right": { - "commentStart": 2174, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3088,10 +3140,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 2135, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2135, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -3101,7 +3153,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 2135, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3111,15 +3163,47 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 2207, - "elements": [ - { - "argument": { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + { "abs_path": false, - "commentStart": 2209, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2209, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -3129,52 +3213,23 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name", "type": "Name" - }, - "commentStart": 2208, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - { - "abs_path": false, - "commentStart": 2224, - "end": 0, - "name": { - "commentStart": 2224, - "end": 0, - "name": "corner_radius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2240, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 2183, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2183, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -3182,18 +3237,19 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 2183, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2254, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3201,7 +3257,7 @@ description: Result of parsing i_shape.kcl }, "arg": { "argument": { - "commentStart": 2264, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -3212,7 +3268,7 @@ description: Result of parsing i_shape.kcl "suffix": "None" } }, - "commentStart": 2263, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3223,10 +3279,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 2248, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2248, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -3236,7 +3292,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 2248, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3246,78 +3302,81 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 2298, - "elements": [ - { - "argument": { - "abs_path": false, - "commentStart": 2300, - "end": 0, - "name": { - "commentStart": 2300, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "argument": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "corner_radius", + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 2299, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - { - "argument": { - "abs_path": false, - "commentStart": 2316, + "commentStart": 0, "end": 0, - "name": { - "commentStart": 2316, - "end": 0, - "name": "corner_radius", - "start": 0, - "type": "Identifier" - }, - "path": [], + "operator": "-", "start": 0, - "type": "Name", - "type": "Name" + "type": "UnaryExpression", + "type": "UnaryExpression" }, - "commentStart": 2315, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2332, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 2274, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2274, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -3325,18 +3384,19 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 2274, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2346, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3344,10 +3404,10 @@ description: Result of parsing i_shape.kcl }, "arg": { "argument": { - "commentStart": 2357, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2357, + "commentStart": 0, "end": 0, "raw": "25.0", "start": 0, @@ -3360,14 +3420,14 @@ description: Result of parsing i_shape.kcl }, "operator": "-", "right": { - "commentStart": 2365, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2365, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2365, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -3380,7 +3440,7 @@ description: Result of parsing i_shape.kcl }, "operator": "*", "right": { - "commentStart": 2381, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3399,7 +3459,7 @@ description: Result of parsing i_shape.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 2355, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3410,10 +3470,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 2340, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2340, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -3423,7 +3483,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 2340, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3433,31 +3493,23 @@ description: Result of parsing i_shape.kcl { "arguments": [ { - "commentStart": 2415, - "elements": [ - { - "abs_path": false, - "commentStart": 2416, - "end": 0, - "name": { - "commentStart": 2416, - "end": 0, - "name": "corner_radius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "argument": { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { "abs_path": false, - "commentStart": 2432, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2432, + "commentStart": 0, "end": 0, "name": "corner_radius", "start": 0, @@ -3468,35 +3520,46 @@ description: Result of parsing i_shape.kcl "type": "Name", "type": "Name" }, - "commentStart": 2431, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2448, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "corner_radius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 2391, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2391, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -3504,16 +3567,17 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 2391, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 2462, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3522,10 +3586,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 2456, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2456, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -3535,14 +3599,14 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 2456, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1992, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -3558,12 +3622,12 @@ description: Result of parsing i_shape.kcl "type": "VariableDeclaration" }, { - "commentStart": 2464, + "commentStart": 0, "declaration": { - "commentStart": 2466, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2466, + "commentStart": 0, "end": 0, "name": "final", "start": 0, @@ -3573,10 +3637,10 @@ description: Result of parsing i_shape.kcl "body": [ { "abs_path": false, - "commentStart": 2474, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2474, + "commentStart": 0, "end": 0, "name": "brace_base", "start": 0, @@ -3591,10 +3655,10 @@ description: Result of parsing i_shape.kcl "arguments": [ { "abs_path": false, - "commentStart": 2495, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2495, + "commentStart": 0, "end": 0, "name": "inner", "start": 0, @@ -3606,7 +3670,7 @@ description: Result of parsing i_shape.kcl "type": "Name" }, { - "commentStart": 2502, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3615,10 +3679,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 2490, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2490, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -3628,7 +3692,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 2490, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3639,14 +3703,14 @@ description: Result of parsing i_shape.kcl { "type": "LabeledArg", "label": { - "commentStart": 2518, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2527, + "commentStart": 0, "end": 0, "raw": "3.0", "start": 0, @@ -3661,10 +3725,10 @@ description: Result of parsing i_shape.kcl ], "callee": { "abs_path": false, - "commentStart": 2510, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2510, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3674,7 +3738,7 @@ description: Result of parsing i_shape.kcl "start": 0, "type": "Name" }, - "commentStart": 2510, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3682,7 +3746,7 @@ description: Result of parsing i_shape.kcl "unlabeled": null } ], - "commentStart": 2474, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -3704,7 +3768,7 @@ description: Result of parsing i_shape.kcl "nonCodeNodes": { "5": [ { - "commentStart": 1982, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3715,7 +3779,7 @@ description: Result of parsing i_shape.kcl ], "6": [ { - "commentStart": 2464, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/i_shape/input.kcl b/rust/kcl-lib/tests/i_shape/input.kcl index b0ada6d7c..3e76da0c0 100644 --- a/rust/kcl-lib/tests/i_shape/input.kcl +++ b/rust/kcl-lib/tests/i_shape/input.kcl @@ -10,41 +10,41 @@ corner_radius = 5.0 brace_base = startSketchOn(XY) |> startProfileAt([corner_radius, 0], %) |> line(end = [width - corner_radius, 0.0]) - |> tangentialArcToRelative([corner_radius, corner_radius], %) + |> tangentialArc(end = [corner_radius, corner_radius]) |> yLine(length = 25.0 - corner_radius) - |> tangentialArcToRelative([-corner_radius, corner_radius], %) + |> tangentialArc(end = [-corner_radius, corner_radius]) |> xLine(length = -(d_wrist_circumference[0] - (corner_radius * 2))) - |> tangentialArcToRelative([-corner_radius, corner_radius], %) + |> tangentialArc(end = [-corner_radius, corner_radius]) |> yLine(length = length - 25.0 - 23.0 - (corner_radius * 2)) - |> tangentialArcToRelative([corner_radius, corner_radius], %) + |> tangentialArc(end = [corner_radius, corner_radius]) |> xLine(length = 15.0 - (corner_radius * 2)) - |> tangentialArcToRelative([corner_radius, corner_radius], %) + |> tangentialArc(end = [corner_radius, corner_radius]) |> yLine(length = 23.0 - corner_radius) - |> tangentialArcToRelative([-corner_radius, corner_radius], %) + |> tangentialArc(end = [-corner_radius, corner_radius]) |> xLine(length = -(hand_thickness + 15.0 + 15.0 - (corner_radius * 2))) - |> tangentialArcToRelative([-corner_radius, -corner_radius], %) + |> tangentialArc(end = [-corner_radius, -corner_radius]) |> yLine(length = -(23.0 - corner_radius)) - |> tangentialArcToRelative([corner_radius, -corner_radius], %) + |> tangentialArc(end = [corner_radius, -corner_radius]) |> xLine(length = 15.0 - (corner_radius * 2)) - |> tangentialArcToRelative([corner_radius, -corner_radius], %) + |> tangentialArc(end = [corner_radius, -corner_radius]) |> yLine(length = -(length - 25.0 - 23.0 - (corner_radius * 2))) - |> tangentialArcToRelative([-corner_radius, -corner_radius], %) + |> tangentialArc(end = [-corner_radius, -corner_radius]) |> xLine(length = -(d_wrist_circumference[1] + d_wrist_circumference[2] + d_wrist_circumference[3] - hand_thickness - corner_radius)) - |> tangentialArcToRelative([-corner_radius, -corner_radius], %) + |> tangentialArc(end = [-corner_radius, -corner_radius]) |> yLine(length = -(25.0 - corner_radius)) - |> tangentialArcToRelative([corner_radius, -corner_radius], %) + |> tangentialArc(end = [corner_radius, -corner_radius]) |> close(%) inner = startSketchOn(XY) |> startProfileAt([0, 0], %) |> xLine(length = 1.0) - |> tangentialArcToRelative([corner_radius, corner_radius], %) + |> tangentialArc(end = [corner_radius, corner_radius]) |> yLine(length = 25.0 - (corner_radius * 2)) - |> tangentialArcToRelative([-corner_radius, corner_radius], %) + |> tangentialArc(end = [-corner_radius, corner_radius]) |> xLine(length = -1.0) - |> tangentialArcToRelative([-corner_radius, -corner_radius], %) + |> tangentialArc(end = [-corner_radius, -corner_radius]) |> yLine(length = -(25.0 - (corner_radius * 2))) - |> tangentialArcToRelative([corner_radius, -corner_radius], %) + |> tangentialArc(end = [corner_radius, -corner_radius]) |> close(%) final = brace_base diff --git a/rust/kcl-lib/tests/i_shape/ops.snap b/rust/kcl-lib/tests/i_shape/ops.snap index 4a11c6e95..82cf8925e 100644 --- a/rust/kcl-lib/tests/i_shape/ops.snap +++ b/rust/kcl-lib/tests/i_shape/ops.snap @@ -5,7 +5,7 @@ description: Operations executed i_shape.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -20,7 +20,7 @@ description: Operations executed i_shape.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/i_shape/program_memory.snap b/rust/kcl-lib/tests/i_shape/program_memory.snap index 71335076c..cf388ab17 100644 --- a/rust/kcl-lib/tests/i_shape/program_memory.snap +++ b/rust/kcl-lib/tests/i_shape/program_memory.snap @@ -553,22 +553,34 @@ description: Variables in memory after executing i_shape.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1393,22 +1405,34 @@ description: Variables in memory after executing i_shape.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1665,22 +1689,34 @@ description: Variables in memory after executing i_shape.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/i_shape/unparsed.snap b/rust/kcl-lib/tests/i_shape/unparsed.snap index eb144b2f8..0e47c18ac 100644 --- a/rust/kcl-lib/tests/i_shape/unparsed.snap +++ b/rust/kcl-lib/tests/i_shape/unparsed.snap @@ -14,41 +14,41 @@ corner_radius = 5.0 brace_base = startSketchOn(XY) |> startProfileAt([corner_radius, 0], %) |> line(end = [width - corner_radius, 0.0]) - |> tangentialArcToRelative([corner_radius, corner_radius], %) + |> tangentialArc(end = [corner_radius, corner_radius]) |> yLine(length = 25.0 - corner_radius) - |> tangentialArcToRelative([-corner_radius, corner_radius], %) + |> tangentialArc(end = [-corner_radius, corner_radius]) |> xLine(length = -(d_wrist_circumference[0] - (corner_radius * 2))) - |> tangentialArcToRelative([-corner_radius, corner_radius], %) + |> tangentialArc(end = [-corner_radius, corner_radius]) |> yLine(length = length - 25.0 - 23.0 - (corner_radius * 2)) - |> tangentialArcToRelative([corner_radius, corner_radius], %) + |> tangentialArc(end = [corner_radius, corner_radius]) |> xLine(length = 15.0 - (corner_radius * 2)) - |> tangentialArcToRelative([corner_radius, corner_radius], %) + |> tangentialArc(end = [corner_radius, corner_radius]) |> yLine(length = 23.0 - corner_radius) - |> tangentialArcToRelative([-corner_radius, corner_radius], %) + |> tangentialArc(end = [-corner_radius, corner_radius]) |> xLine(length = -(hand_thickness + 15.0 + 15.0 - (corner_radius * 2))) - |> tangentialArcToRelative([-corner_radius, -corner_radius], %) + |> tangentialArc(end = [-corner_radius, -corner_radius]) |> yLine(length = -(23.0 - corner_radius)) - |> tangentialArcToRelative([corner_radius, -corner_radius], %) + |> tangentialArc(end = [corner_radius, -corner_radius]) |> xLine(length = 15.0 - (corner_radius * 2)) - |> tangentialArcToRelative([corner_radius, -corner_radius], %) + |> tangentialArc(end = [corner_radius, -corner_radius]) |> yLine(length = -(length - 25.0 - 23.0 - (corner_radius * 2))) - |> tangentialArcToRelative([-corner_radius, -corner_radius], %) + |> tangentialArc(end = [-corner_radius, -corner_radius]) |> xLine(length = -(d_wrist_circumference[1] + d_wrist_circumference[2] + d_wrist_circumference[3] - hand_thickness - corner_radius)) - |> tangentialArcToRelative([-corner_radius, -corner_radius], %) + |> tangentialArc(end = [-corner_radius, -corner_radius]) |> yLine(length = -(25.0 - corner_radius)) - |> tangentialArcToRelative([corner_radius, -corner_radius], %) + |> tangentialArc(end = [corner_radius, -corner_radius]) |> close(%) inner = startSketchOn(XY) |> startProfileAt([0, 0], %) |> xLine(length = 1.0) - |> tangentialArcToRelative([corner_radius, corner_radius], %) + |> tangentialArc(end = [corner_radius, corner_radius]) |> yLine(length = 25.0 - (corner_radius * 2)) - |> tangentialArcToRelative([-corner_radius, corner_radius], %) + |> tangentialArc(end = [-corner_radius, corner_radius]) |> xLine(length = -1.0) - |> tangentialArcToRelative([-corner_radius, -corner_radius], %) + |> tangentialArc(end = [-corner_radius, -corner_radius]) |> yLine(length = -(25.0 - (corner_radius * 2))) - |> tangentialArcToRelative([corner_radius, -corner_radius], %) + |> tangentialArc(end = [corner_radius, -corner_radius]) |> close(%) final = brace_base diff --git a/rust/kcl-lib/tests/if_else/ast.snap b/rust/kcl-lib/tests/if_else/ast.snap index f323510b1..0406ae60c 100644 --- a/rust/kcl-lib/tests/if_else/ast.snap +++ b/rust/kcl-lib/tests/if_else/ast.snap @@ -8,19 +8,19 @@ description: Result of parsing if_else.kcl { "commentStart": 0, "declaration": { - "commentStart": 48, + "commentStart": 0, "end": 0, "id": { - "commentStart": 48, + "commentStart": 0, "end": 0, "name": "a", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 52, + "commentStart": 0, "cond": { - "commentStart": 55, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -31,9 +31,9 @@ description: Result of parsing if_else.kcl "digest": null, "else_ifs": [ { - "commentStart": 68, + "commentStart": 0, "cond": { - "commentStart": 76, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -47,10 +47,10 @@ description: Result of parsing if_else.kcl "then_val": { "body": [ { - "commentStart": 85, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 85, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -66,7 +66,7 @@ description: Result of parsing if_else.kcl "type": "ExpressionStatement" } ], - "commentStart": 81, + "commentStart": 0, "end": 0, "start": 0 }, @@ -77,10 +77,10 @@ description: Result of parsing if_else.kcl "final_else": { "body": [ { - "commentStart": 98, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 98, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -96,7 +96,7 @@ description: Result of parsing if_else.kcl "type": "ExpressionStatement" } ], - "commentStart": 98, + "commentStart": 0, "end": 0, "start": 0 }, @@ -104,10 +104,10 @@ description: Result of parsing if_else.kcl "then_val": { "body": [ { - "commentStart": 64, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 64, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -123,7 +123,7 @@ description: Result of parsing if_else.kcl "type": "ExpressionStatement" } ], - "commentStart": 64, + "commentStart": 0, "end": 0, "start": 0 }, @@ -140,16 +140,16 @@ description: Result of parsing if_else.kcl "type": "VariableDeclaration" }, { - "commentStart": 102, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 114, + "commentStart": 0, "end": 0, "name": { - "commentStart": 114, + "commentStart": 0, "end": 0, "name": "a", "start": 0, @@ -161,7 +161,7 @@ description: Result of parsing if_else.kcl "type": "Name" }, { - "commentStart": 117, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -173,7 +173,7 @@ description: Result of parsing if_else.kcl } }, { - "commentStart": 120, + "commentStart": 0, "end": 0, "raw": "0.001", "start": 0, @@ -185,7 +185,7 @@ description: Result of parsing if_else.kcl } }, { - "commentStart": 127, + "commentStart": 0, "end": 0, "raw": "\"the 'if' branch gets returned\"", "start": 0, @@ -196,10 +196,10 @@ description: Result of parsing if_else.kcl ], "callee": { "abs_path": false, - "commentStart": 102, + "commentStart": 0, "end": 0, "name": { - "commentStart": 102, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -209,7 +209,7 @@ description: Result of parsing if_else.kcl "start": 0, "type": "Name" }, - "commentStart": 102, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -220,21 +220,21 @@ description: Result of parsing if_else.kcl "type": "ExpressionStatement" }, { - "commentStart": 159, + "commentStart": 0, "declaration": { - "commentStart": 161, + "commentStart": 0, "end": 0, "id": { - "commentStart": 161, + "commentStart": 0, "end": 0, "name": "b", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 165, + "commentStart": 0, "cond": { - "commentStart": 168, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -245,9 +245,9 @@ description: Result of parsing if_else.kcl "digest": null, "else_ifs": [ { - "commentStart": 182, + "commentStart": 0, "cond": { - "commentStart": 190, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -261,10 +261,10 @@ description: Result of parsing if_else.kcl "then_val": { "body": [ { - "commentStart": 199, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 199, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -280,7 +280,7 @@ description: Result of parsing if_else.kcl "type": "ExpressionStatement" } ], - "commentStart": 195, + "commentStart": 0, "end": 0, "start": 0 }, @@ -291,10 +291,10 @@ description: Result of parsing if_else.kcl "final_else": { "body": [ { - "commentStart": 212, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 212, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -310,7 +310,7 @@ description: Result of parsing if_else.kcl "type": "ExpressionStatement" } ], - "commentStart": 212, + "commentStart": 0, "end": 0, "start": 0 }, @@ -318,10 +318,10 @@ description: Result of parsing if_else.kcl "then_val": { "body": [ { - "commentStart": 178, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 178, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -337,7 +337,7 @@ description: Result of parsing if_else.kcl "type": "ExpressionStatement" } ], - "commentStart": 178, + "commentStart": 0, "end": 0, "start": 0 }, @@ -354,16 +354,16 @@ description: Result of parsing if_else.kcl "type": "VariableDeclaration" }, { - "commentStart": 216, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 228, + "commentStart": 0, "end": 0, "name": { - "commentStart": 228, + "commentStart": 0, "end": 0, "name": "b", "start": 0, @@ -375,7 +375,7 @@ description: Result of parsing if_else.kcl "type": "Name" }, { - "commentStart": 231, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -387,7 +387,7 @@ description: Result of parsing if_else.kcl } }, { - "commentStart": 234, + "commentStart": 0, "end": 0, "raw": "0.001", "start": 0, @@ -399,7 +399,7 @@ description: Result of parsing if_else.kcl } }, { - "commentStart": 241, + "commentStart": 0, "end": 0, "raw": "\"the 'else if' branch gets returned\"", "start": 0, @@ -410,10 +410,10 @@ description: Result of parsing if_else.kcl ], "callee": { "abs_path": false, - "commentStart": 216, + "commentStart": 0, "end": 0, "name": { - "commentStart": 216, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -423,7 +423,7 @@ description: Result of parsing if_else.kcl "start": 0, "type": "Name" }, - "commentStart": 216, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -434,21 +434,21 @@ description: Result of parsing if_else.kcl "type": "ExpressionStatement" }, { - "commentStart": 278, + "commentStart": 0, "declaration": { - "commentStart": 280, + "commentStart": 0, "end": 0, "id": { - "commentStart": 280, + "commentStart": 0, "end": 0, "name": "c", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 284, + "commentStart": 0, "cond": { - "commentStart": 287, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -459,9 +459,9 @@ description: Result of parsing if_else.kcl "digest": null, "else_ifs": [ { - "commentStart": 301, + "commentStart": 0, "cond": { - "commentStart": 309, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -475,10 +475,10 @@ description: Result of parsing if_else.kcl "then_val": { "body": [ { - "commentStart": 319, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 319, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -494,7 +494,7 @@ description: Result of parsing if_else.kcl "type": "ExpressionStatement" } ], - "commentStart": 315, + "commentStart": 0, "end": 0, "start": 0 }, @@ -505,10 +505,10 @@ description: Result of parsing if_else.kcl "final_else": { "body": [ { - "commentStart": 332, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 332, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -524,7 +524,7 @@ description: Result of parsing if_else.kcl "type": "ExpressionStatement" } ], - "commentStart": 332, + "commentStart": 0, "end": 0, "start": 0 }, @@ -532,10 +532,10 @@ description: Result of parsing if_else.kcl "then_val": { "body": [ { - "commentStart": 297, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 297, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -551,7 +551,7 @@ description: Result of parsing if_else.kcl "type": "ExpressionStatement" } ], - "commentStart": 297, + "commentStart": 0, "end": 0, "start": 0 }, @@ -568,16 +568,16 @@ description: Result of parsing if_else.kcl "type": "VariableDeclaration" }, { - "commentStart": 336, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 348, + "commentStart": 0, "end": 0, "name": { - "commentStart": 348, + "commentStart": 0, "end": 0, "name": "c", "start": 0, @@ -589,7 +589,7 @@ description: Result of parsing if_else.kcl "type": "Name" }, { - "commentStart": 351, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -601,7 +601,7 @@ description: Result of parsing if_else.kcl } }, { - "commentStart": 354, + "commentStart": 0, "end": 0, "raw": "0.001", "start": 0, @@ -613,7 +613,7 @@ description: Result of parsing if_else.kcl } }, { - "commentStart": 361, + "commentStart": 0, "end": 0, "raw": "\"the 'else' branch gets returned\"", "start": 0, @@ -624,10 +624,10 @@ description: Result of parsing if_else.kcl ], "callee": { "abs_path": false, - "commentStart": 336, + "commentStart": 0, "end": 0, "name": { - "commentStart": 336, + "commentStart": 0, "end": 0, "name": "assertEqual", "start": 0, @@ -637,7 +637,7 @@ description: Result of parsing if_else.kcl "start": 0, "type": "Name" }, - "commentStart": 336, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -654,7 +654,7 @@ description: Result of parsing if_else.kcl "nonCodeNodes": { "1": [ { - "commentStart": 159, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -665,7 +665,7 @@ description: Result of parsing if_else.kcl ], "3": [ { - "commentStart": 278, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -688,7 +688,7 @@ description: Result of parsing if_else.kcl } }, { - "commentStart": 45, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/import_constant/ast.snap b/rust/kcl-lib/tests/import_constant/ast.snap index 6ab74e12a..150a724d4 100644 --- a/rust/kcl-lib/tests/import_constant/ast.snap +++ b/rust/kcl-lib/tests/import_constant/ast.snap @@ -17,10 +17,10 @@ description: Result of parsing import_constant.kcl "items": [ { "alias": null, - "commentStart": 7, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7, + "commentStart": 0, "end": 0, "name": "three", "start": 0, diff --git a/rust/kcl-lib/tests/import_cycle1/ast.snap b/rust/kcl-lib/tests/import_cycle1/ast.snap index 076681ac7..d2f609bff 100644 --- a/rust/kcl-lib/tests/import_cycle1/ast.snap +++ b/rust/kcl-lib/tests/import_cycle1/ast.snap @@ -6,7 +6,7 @@ description: Result of parsing import_cycle1.kcl "Ok": { "body": [ { - "commentStart": 33, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -17,10 +17,10 @@ description: Result of parsing import_cycle1.kcl "items": [ { "alias": null, - "commentStart": 42, + "commentStart": 0, "end": 0, "name": { - "commentStart": 42, + "commentStart": 0, "end": 0, "name": "two", "start": 0, @@ -36,12 +36,12 @@ description: Result of parsing import_cycle1.kcl "type": "ImportStatement" }, { - "commentStart": 70, + "commentStart": 0, "declaration": { - "commentStart": 82, + "commentStart": 0, "end": 0, "id": { - "commentStart": 82, + "commentStart": 0, "end": 0, "name": "one", "start": 0, @@ -52,16 +52,16 @@ description: Result of parsing import_cycle1.kcl "body": [ { "argument": { - "commentStart": 99, + "commentStart": 0, "end": 0, "left": { "arguments": [], "callee": { "abs_path": false, - "commentStart": 99, + "commentStart": 0, "end": 0, "name": { - "commentStart": 99, + "commentStart": 0, "end": 0, "name": "two", "start": 0, @@ -71,7 +71,7 @@ description: Result of parsing import_cycle1.kcl "start": 0, "type": "Name" }, - "commentStart": 99, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -79,7 +79,7 @@ description: Result of parsing import_cycle1.kcl }, "operator": "-", "right": { - "commentStart": 107, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -94,18 +94,18 @@ description: Result of parsing import_cycle1.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 92, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 88, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 85, + "commentStart": 0, "end": 0, "params": [], "start": 0, @@ -130,7 +130,7 @@ description: Result of parsing import_cycle1.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 1, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -138,10 +138,10 @@ description: Result of parsing import_cycle1.kcl }, "properties": [ { - "commentStart": 10, + "commentStart": 0, "end": 0, "key": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -151,10 +151,10 @@ description: Result of parsing import_cycle1.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 30, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -175,7 +175,7 @@ description: Result of parsing import_cycle1.kcl "nonCodeNodes": { "0": [ { - "commentStart": 70, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -187,7 +187,7 @@ description: Result of parsing import_cycle1.kcl }, "startNodes": [ { - "commentStart": 33, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/import_export/ast.snap b/rust/kcl-lib/tests/import_export/ast.snap index 6b3221f1a..0e15fdab2 100644 --- a/rust/kcl-lib/tests/import_export/ast.snap +++ b/rust/kcl-lib/tests/import_export/ast.snap @@ -17,10 +17,10 @@ description: Result of parsing import_export.kcl "items": [ { "alias": null, - "commentStart": 7, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7, + "commentStart": 0, "end": 0, "name": "three", "start": 0, diff --git a/rust/kcl-lib/tests/import_file_not_exist_error/ast.snap b/rust/kcl-lib/tests/import_file_not_exist_error/ast.snap index 231acb04b..095f423c4 100644 --- a/rust/kcl-lib/tests/import_file_not_exist_error/ast.snap +++ b/rust/kcl-lib/tests/import_file_not_exist_error/ast.snap @@ -17,10 +17,10 @@ description: Result of parsing import_file_not_exist_error.kcl "items": [ { "alias": null, - "commentStart": 7, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7, + "commentStart": 0, "end": 0, "name": "hotdog", "start": 0, diff --git a/rust/kcl-lib/tests/import_file_parse_error/ast.snap b/rust/kcl-lib/tests/import_file_parse_error/ast.snap index 6e60e5de0..18b310fb2 100644 --- a/rust/kcl-lib/tests/import_file_parse_error/ast.snap +++ b/rust/kcl-lib/tests/import_file_parse_error/ast.snap @@ -17,10 +17,10 @@ description: Result of parsing import_file_parse_error.kcl "items": [ { "alias": null, - "commentStart": 7, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7, + "commentStart": 0, "end": 0, "name": "hotdog", "start": 0, diff --git a/rust/kcl-lib/tests/import_foreign/ast.snap b/rust/kcl-lib/tests/import_foreign/ast.snap index ae7c302c7..cfa1ba128 100644 --- a/rust/kcl-lib/tests/import_foreign/ast.snap +++ b/rust/kcl-lib/tests/import_foreign/ast.snap @@ -15,7 +15,7 @@ description: Result of parsing import_foreign.kcl "selector": { "type": "None", "alias": { - "commentStart": 32, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -27,12 +27,12 @@ description: Result of parsing import_foreign.kcl "type": "ImportStatement" }, { - "commentStart": 36, + "commentStart": 0, "declaration": { - "commentStart": 38, + "commentStart": 0, "end": 0, "id": { - "commentStart": 38, + "commentStart": 0, "end": 0, "name": "model", "start": 0, @@ -40,10 +40,10 @@ description: Result of parsing import_foreign.kcl }, "init": { "abs_path": false, - "commentStart": 46, + "commentStart": 0, "end": 0, "name": { - "commentStart": 46, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing import_foreign.kcl "nonCodeNodes": { "0": [ { - "commentStart": 36, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/import_function_not_sketch/ast.snap b/rust/kcl-lib/tests/import_function_not_sketch/ast.snap index 644272835..b68e6096c 100644 --- a/rust/kcl-lib/tests/import_function_not_sketch/ast.snap +++ b/rust/kcl-lib/tests/import_function_not_sketch/ast.snap @@ -6,7 +6,7 @@ description: Result of parsing import_function_not_sketch.kcl "Ok": { "body": [ { - "commentStart": 33, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -17,10 +17,10 @@ description: Result of parsing import_function_not_sketch.kcl "items": [ { "alias": null, - "commentStart": 42, + "commentStart": 0, "end": 0, "name": { - "commentStart": 42, + "commentStart": 0, "end": 0, "name": "two", "start": 0, @@ -36,12 +36,12 @@ description: Result of parsing import_function_not_sketch.kcl "type": "ImportStatement" }, { - "commentStart": 69, + "commentStart": 0, "declaration": { - "commentStart": 81, + "commentStart": 0, "end": 0, "id": { - "commentStart": 81, + "commentStart": 0, "end": 0, "name": "one", "start": 0, @@ -52,16 +52,16 @@ description: Result of parsing import_function_not_sketch.kcl "body": [ { "argument": { - "commentStart": 98, + "commentStart": 0, "end": 0, "left": { "arguments": [], "callee": { "abs_path": false, - "commentStart": 98, + "commentStart": 0, "end": 0, "name": { - "commentStart": 98, + "commentStart": 0, "end": 0, "name": "two", "start": 0, @@ -71,7 +71,7 @@ description: Result of parsing import_function_not_sketch.kcl "start": 0, "type": "Name" }, - "commentStart": 98, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -79,7 +79,7 @@ description: Result of parsing import_function_not_sketch.kcl }, "operator": "-", "right": { - "commentStart": 106, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -94,18 +94,18 @@ description: Result of parsing import_function_not_sketch.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 91, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 87, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 84, + "commentStart": 0, "end": 0, "params": [], "start": 0, @@ -130,7 +130,7 @@ description: Result of parsing import_function_not_sketch.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 1, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -138,10 +138,10 @@ description: Result of parsing import_function_not_sketch.kcl }, "properties": [ { - "commentStart": 10, + "commentStart": 0, "end": 0, "key": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -151,10 +151,10 @@ description: Result of parsing import_function_not_sketch.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 30, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -175,7 +175,7 @@ description: Result of parsing import_function_not_sketch.kcl "nonCodeNodes": { "0": [ { - "commentStart": 69, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -187,7 +187,7 @@ description: Result of parsing import_function_not_sketch.kcl }, "startNodes": [ { - "commentStart": 33, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/import_glob/ast.snap b/rust/kcl-lib/tests/import_glob/ast.snap index 9de80762d..854bec1e2 100644 --- a/rust/kcl-lib/tests/import_glob/ast.snap +++ b/rust/kcl-lib/tests/import_glob/ast.snap @@ -13,7 +13,7 @@ description: Result of parsing import_glob.kcl "filename": "export_constant.kcl" }, "selector": { - "commentStart": 7, + "commentStart": 0, "end": 0, "start": 0, "type": "Glob" diff --git a/rust/kcl-lib/tests/import_side_effect/ast.snap b/rust/kcl-lib/tests/import_side_effect/ast.snap index 5380d3bdf..2fd618675 100644 --- a/rust/kcl-lib/tests/import_side_effect/ast.snap +++ b/rust/kcl-lib/tests/import_side_effect/ast.snap @@ -17,10 +17,10 @@ description: Result of parsing import_side_effect.kcl "items": [ { "alias": null, - "commentStart": 7, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7, + "commentStart": 0, "end": 0, "name": "foo", "start": 0, diff --git a/rust/kcl-lib/tests/import_transform/ast.snap b/rust/kcl-lib/tests/import_transform/ast.snap index a53864849..00011abd5 100644 --- a/rust/kcl-lib/tests/import_transform/ast.snap +++ b/rust/kcl-lib/tests/import_transform/ast.snap @@ -6,7 +6,7 @@ description: Result of parsing import_transform.kcl "Ok": { "body": [ { - "commentStart": 18, + "commentStart": 0, "end": 0, "outerAttrs": [ { @@ -15,10 +15,10 @@ description: Result of parsing import_transform.kcl "name": null, "properties": [ { - "commentStart": 2, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2, + "commentStart": 0, "end": 0, "name": "lengthUnit", "start": 0, @@ -28,10 +28,10 @@ description: Result of parsing import_transform.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 15, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15, + "commentStart": 0, "end": 0, "name": "m", "start": 0, @@ -55,7 +55,7 @@ description: Result of parsing import_transform.kcl "selector": { "type": "None", "alias": { - "commentStart": 56, + "commentStart": 0, "end": 0, "name": "screw", "start": 0, @@ -67,16 +67,16 @@ description: Result of parsing import_transform.kcl "type": "ImportStatement" }, { - "commentStart": 61, + "commentStart": 0, "end": 0, "expression": { "body": [ { "abs_path": false, - "commentStart": 63, + "commentStart": 0, "end": 0, "name": { - "commentStart": 63, + "commentStart": 0, "end": 0, "name": "screw", "start": 0, @@ -92,14 +92,14 @@ description: Result of parsing import_transform.kcl { "type": "LabeledArg", "label": { - "commentStart": 84, + "commentStart": 0, "end": 0, "name": "roll", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 91, + "commentStart": 0, "end": 0, "raw": "3.14", "start": 0, @@ -114,14 +114,14 @@ description: Result of parsing import_transform.kcl { "type": "LabeledArg", "label": { - "commentStart": 97, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 105, + "commentStart": 0, "end": 0, "raw": "3.14", "start": 0, @@ -136,14 +136,14 @@ description: Result of parsing import_transform.kcl { "type": "LabeledArg", "label": { - "commentStart": 111, + "commentStart": 0, "end": 0, "name": "yaw", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 117, + "commentStart": 0, "end": 0, "raw": "3.14", "start": 0, @@ -158,10 +158,10 @@ description: Result of parsing import_transform.kcl ], "callee": { "abs_path": false, - "commentStart": 74, + "commentStart": 0, "end": 0, "name": { - "commentStart": 74, + "commentStart": 0, "end": 0, "name": "rotate", "start": 0, @@ -171,13 +171,13 @@ description: Result of parsing import_transform.kcl "start": 0, "type": "Name" }, - "commentStart": 74, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 81, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -189,14 +189,14 @@ description: Result of parsing import_transform.kcl { "type": "LabeledArg", "label": { - "commentStart": 141, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 145, + "commentStart": 0, "end": 0, "raw": "3.14", "start": 0, @@ -211,14 +211,14 @@ description: Result of parsing import_transform.kcl { "type": "LabeledArg", "label": { - "commentStart": 151, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 155, + "commentStart": 0, "end": 0, "raw": "3.14", "start": 0, @@ -233,14 +233,14 @@ description: Result of parsing import_transform.kcl { "type": "LabeledArg", "label": { - "commentStart": 161, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 165, + "commentStart": 0, "end": 0, "raw": "3.14", "start": 0, @@ -255,10 +255,10 @@ description: Result of parsing import_transform.kcl ], "callee": { "abs_path": false, - "commentStart": 128, + "commentStart": 0, "end": 0, "name": { - "commentStart": 128, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -268,13 +268,13 @@ description: Result of parsing import_transform.kcl "start": 0, "type": "Name" }, - "commentStart": 128, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 138, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -286,14 +286,14 @@ description: Result of parsing import_transform.kcl { "type": "LabeledArg", "label": { - "commentStart": 185, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 189, + "commentStart": 0, "end": 0, "raw": "3.14", "start": 0, @@ -308,14 +308,14 @@ description: Result of parsing import_transform.kcl { "type": "LabeledArg", "label": { - "commentStart": 195, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 199, + "commentStart": 0, "end": 0, "raw": "3.14", "start": 0, @@ -330,14 +330,14 @@ description: Result of parsing import_transform.kcl { "type": "LabeledArg", "label": { - "commentStart": 205, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 209, + "commentStart": 0, "end": 0, "raw": "3.14", "start": 0, @@ -352,10 +352,10 @@ description: Result of parsing import_transform.kcl ], "callee": { "abs_path": false, - "commentStart": 176, + "commentStart": 0, "end": 0, "name": { - "commentStart": 176, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -365,13 +365,13 @@ description: Result of parsing import_transform.kcl "start": 0, "type": "Name" }, - "commentStart": 176, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 182, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -379,7 +379,7 @@ description: Result of parsing import_transform.kcl } } ], - "commentStart": 63, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -396,7 +396,7 @@ description: Result of parsing import_transform.kcl "nonCodeNodes": { "0": [ { - "commentStart": 61, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/import_whole/artifact_commands.snap b/rust/kcl-lib/tests/import_whole/artifact_commands.snap index d5018b761..21b7c15ab 100644 --- a/rust/kcl-lib/tests/import_whole/artifact_commands.snap +++ b/rust/kcl-lib/tests/import_whole/artifact_commands.snap @@ -169,7 +169,8 @@ description: Artifact commands import_whole.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/import_whole/ast.snap b/rust/kcl-lib/tests/import_whole/ast.snap index ae5885e2b..8f3e347a9 100644 --- a/rust/kcl-lib/tests/import_whole/ast.snap +++ b/rust/kcl-lib/tests/import_whole/ast.snap @@ -6,7 +6,7 @@ description: Result of parsing import_whole.kcl "Ok": { "body": [ { - "commentStart": 33, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -15,7 +15,7 @@ description: Result of parsing import_whole.kcl "selector": { "type": "None", "alias": { - "commentStart": 64, + "commentStart": 0, "end": 0, "name": "foo", "start": 0, @@ -27,12 +27,12 @@ description: Result of parsing import_whole.kcl "type": "ImportStatement" }, { - "commentStart": 67, + "commentStart": 0, "declaration": { - "commentStart": 69, + "commentStart": 0, "end": 0, "id": { - "commentStart": 69, + "commentStart": 0, "end": 0, "name": "bar", "start": 0, @@ -42,10 +42,10 @@ description: Result of parsing import_whole.kcl "body": [ { "abs_path": false, - "commentStart": 75, + "commentStart": 0, "end": 0, "name": { - "commentStart": 75, + "commentStart": 0, "end": 0, "name": "foo", "start": 0, @@ -61,17 +61,17 @@ description: Result of parsing import_whole.kcl { "type": "LabeledArg", "label": { - "commentStart": 90, + "commentStart": 0, "end": 0, "name": "faces", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 98, + "commentStart": 0, "elements": [ { - "commentStart": 99, + "commentStart": 0, "end": 0, "raw": "'end'", "start": 0, @@ -89,7 +89,7 @@ description: Result of parsing import_whole.kcl { "type": "LabeledArg", "label": { - "commentStart": 107, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -97,10 +97,10 @@ description: Result of parsing import_whole.kcl }, "arg": { "abs_path": false, - "commentStart": 119, + "commentStart": 0, "end": 0, "name": { - "commentStart": 124, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -108,7 +108,7 @@ description: Result of parsing import_whole.kcl }, "path": [ { - "commentStart": 119, + "commentStart": 0, "end": 0, "name": "foo", "start": 0, @@ -123,10 +123,10 @@ description: Result of parsing import_whole.kcl ], "callee": { "abs_path": false, - "commentStart": 84, + "commentStart": 0, "end": 0, "name": { - "commentStart": 84, + "commentStart": 0, "end": 0, "name": "shell", "start": 0, @@ -136,7 +136,7 @@ description: Result of parsing import_whole.kcl "start": 0, "type": "Name" }, - "commentStart": 84, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -144,7 +144,7 @@ description: Result of parsing import_whole.kcl "unlabeled": null } ], - "commentStart": 75, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -167,7 +167,7 @@ description: Result of parsing import_whole.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 1, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -175,10 +175,10 @@ description: Result of parsing import_whole.kcl }, "properties": [ { - "commentStart": 10, + "commentStart": 0, "end": 0, "key": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -188,10 +188,10 @@ description: Result of parsing import_whole.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 30, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30, + "commentStart": 0, "end": 0, "name": "mm", "start": 0, @@ -212,7 +212,7 @@ description: Result of parsing import_whole.kcl "nonCodeNodes": { "0": [ { - "commentStart": 67, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -224,7 +224,7 @@ description: Result of parsing import_whole.kcl }, "startNodes": [ { - "commentStart": 33, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/import_whole/ops.snap b/rust/kcl-lib/tests/import_whole/ops.snap index cfb851b71..ec5961460 100644 --- a/rust/kcl-lib/tests/import_whole/ops.snap +++ b/rust/kcl-lib/tests/import_whole/ops.snap @@ -14,7 +14,7 @@ description: Operations executed import_whole.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/import_whole/program_memory.snap b/rust/kcl-lib/tests/import_whole/program_memory.snap index be03eed1d..8822ce0f9 100644 --- a/rust/kcl-lib/tests/import_whole/program_memory.snap +++ b/rust/kcl-lib/tests/import_whole/program_memory.snap @@ -56,22 +56,34 @@ description: Variables in memory after executing import_whole.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" diff --git a/rust/kcl-lib/tests/import_whole/unparsed.snap b/rust/kcl-lib/tests/import_whole/unparsed.snap index 4f1da9ae9..b7382cb6f 100644 --- a/rust/kcl-lib/tests/import_whole/unparsed.snap +++ b/rust/kcl-lib/tests/import_whole/unparsed.snap @@ -7,4 +7,4 @@ description: Result of unparsing import_whole.kcl import "exported_mod.kcl" as foo bar = foo - |> shell(faces = ['end'], thickness = foo::thickness) + |> shell(faces = [END], thickness = foo::thickness) diff --git a/rust/kcl-lib/tests/index_of_array/ast.snap b/rust/kcl-lib/tests/index_of_array/ast.snap index 8aa9fceaa..3083ff859 100644 --- a/rust/kcl-lib/tests/index_of_array/ast.snap +++ b/rust/kcl-lib/tests/index_of_array/ast.snap @@ -8,20 +8,20 @@ description: Result of parsing index_of_array.kcl { "commentStart": 0, "declaration": { - "commentStart": 35, + "commentStart": 0, "end": 0, "id": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "arr", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 41, + "commentStart": 0, "elements": [ { - "commentStart": 42, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -33,7 +33,7 @@ description: Result of parsing index_of_array.kcl } }, { - "commentStart": 46, + "commentStart": 0, "end": 0, "raw": "91", "start": 0, @@ -45,7 +45,7 @@ description: Result of parsing index_of_array.kcl } }, { - "commentStart": 50, + "commentStart": 0, "end": 0, "raw": "92", "start": 0, @@ -72,23 +72,23 @@ description: Result of parsing index_of_array.kcl "type": "VariableDeclaration" }, { - "commentStart": 53, + "commentStart": 0, "declaration": { - "commentStart": 81, + "commentStart": 0, "end": 0, "id": { - "commentStart": 81, + "commentStart": 0, "end": 0, "name": "result0", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 91, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 91, + "commentStart": 0, "end": 0, "name": "arr", "start": 0, @@ -96,7 +96,7 @@ description: Result of parsing index_of_array.kcl "type": "Identifier" }, "property": { - "commentStart": 95, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -121,16 +121,16 @@ description: Result of parsing index_of_array.kcl "type": "VariableDeclaration" }, { - "commentStart": 97, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 118, + "commentStart": 0, "end": 0, "name": { - "commentStart": 118, + "commentStart": 0, "end": 0, "name": "result0", "start": 0, @@ -142,7 +142,7 @@ description: Result of parsing index_of_array.kcl "type": "Name" }, { - "commentStart": 127, + "commentStart": 0, "end": 0, "raw": "91", "start": 0, @@ -154,7 +154,7 @@ description: Result of parsing index_of_array.kcl } }, { - "commentStart": 131, + "commentStart": 0, "end": 0, "raw": "\"Literal property lookup\"", "start": 0, @@ -165,10 +165,10 @@ description: Result of parsing index_of_array.kcl ], "callee": { "abs_path": false, - "commentStart": 99, + "commentStart": 0, "end": 0, "name": { - "commentStart": 99, + "commentStart": 0, "end": 0, "name": "assertLessThanOrEq", "start": 0, @@ -178,7 +178,7 @@ description: Result of parsing index_of_array.kcl "start": 0, "type": "Name" }, - "commentStart": 99, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -189,16 +189,16 @@ description: Result of parsing index_of_array.kcl "type": "ExpressionStatement" }, { - "commentStart": 158, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 180, + "commentStart": 0, "end": 0, "name": { - "commentStart": 180, + "commentStart": 0, "end": 0, "name": "result0", "start": 0, @@ -210,7 +210,7 @@ description: Result of parsing index_of_array.kcl "type": "Name" }, { - "commentStart": 189, + "commentStart": 0, "end": 0, "raw": "91", "start": 0, @@ -222,7 +222,7 @@ description: Result of parsing index_of_array.kcl } }, { - "commentStart": 193, + "commentStart": 0, "end": 0, "raw": "\"Literal property lookup\"", "start": 0, @@ -233,10 +233,10 @@ description: Result of parsing index_of_array.kcl ], "callee": { "abs_path": false, - "commentStart": 158, + "commentStart": 0, "end": 0, "name": { - "commentStart": 158, + "commentStart": 0, "end": 0, "name": "assertGreaterThanOrEq", "start": 0, @@ -246,7 +246,7 @@ description: Result of parsing index_of_array.kcl "start": 0, "type": "Name" }, - "commentStart": 158, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -257,12 +257,12 @@ description: Result of parsing index_of_array.kcl "type": "ExpressionStatement" }, { - "commentStart": 219, + "commentStart": 0, "declaration": { - "commentStart": 248, + "commentStart": 0, "end": 0, "id": { - "commentStart": 248, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -271,10 +271,10 @@ description: Result of parsing index_of_array.kcl "init": { "arguments": [ { - "commentStart": 256, + "commentStart": 0, "end": 0, "left": { - "commentStart": 256, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -287,7 +287,7 @@ description: Result of parsing index_of_array.kcl }, "operator": "+", "right": { - "commentStart": 260, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -305,10 +305,10 @@ description: Result of parsing index_of_array.kcl ], "callee": { "abs_path": false, - "commentStart": 252, + "commentStart": 0, "end": 0, "name": { - "commentStart": 252, + "commentStart": 0, "end": 0, "name": "int", "start": 0, @@ -318,7 +318,7 @@ description: Result of parsing index_of_array.kcl "start": 0, "type": "Name" }, - "commentStart": 252, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -334,23 +334,23 @@ description: Result of parsing index_of_array.kcl "type": "VariableDeclaration" }, { - "commentStart": 263, + "commentStart": 0, "declaration": { - "commentStart": 263, + "commentStart": 0, "end": 0, "id": { - "commentStart": 263, + "commentStart": 0, "end": 0, "name": "result1", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 273, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 273, + "commentStart": 0, "end": 0, "name": "arr", "start": 0, @@ -358,7 +358,7 @@ description: Result of parsing index_of_array.kcl "type": "Identifier" }, "property": { - "commentStart": 277, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -379,16 +379,16 @@ description: Result of parsing index_of_array.kcl "type": "VariableDeclaration" }, { - "commentStart": 279, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 300, + "commentStart": 0, "end": 0, "name": { - "commentStart": 300, + "commentStart": 0, "end": 0, "name": "result1", "start": 0, @@ -400,7 +400,7 @@ description: Result of parsing index_of_array.kcl "type": "Name" }, { - "commentStart": 309, + "commentStart": 0, "end": 0, "raw": "91", "start": 0, @@ -412,7 +412,7 @@ description: Result of parsing index_of_array.kcl } }, { - "commentStart": 313, + "commentStart": 0, "end": 0, "raw": "\"Computed property lookup\"", "start": 0, @@ -423,10 +423,10 @@ description: Result of parsing index_of_array.kcl ], "callee": { "abs_path": false, - "commentStart": 281, + "commentStart": 0, "end": 0, "name": { - "commentStart": 281, + "commentStart": 0, "end": 0, "name": "assertLessThanOrEq", "start": 0, @@ -436,7 +436,7 @@ description: Result of parsing index_of_array.kcl "start": 0, "type": "Name" }, - "commentStart": 281, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -447,16 +447,16 @@ description: Result of parsing index_of_array.kcl "type": "ExpressionStatement" }, { - "commentStart": 341, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 363, + "commentStart": 0, "end": 0, "name": { - "commentStart": 363, + "commentStart": 0, "end": 0, "name": "result1", "start": 0, @@ -468,7 +468,7 @@ description: Result of parsing index_of_array.kcl "type": "Name" }, { - "commentStart": 372, + "commentStart": 0, "end": 0, "raw": "91", "start": 0, @@ -480,7 +480,7 @@ description: Result of parsing index_of_array.kcl } }, { - "commentStart": 376, + "commentStart": 0, "end": 0, "raw": "\"Computed property lookup\"", "start": 0, @@ -491,10 +491,10 @@ description: Result of parsing index_of_array.kcl ], "callee": { "abs_path": false, - "commentStart": 341, + "commentStart": 0, "end": 0, "name": { - "commentStart": 341, + "commentStart": 0, "end": 0, "name": "assertGreaterThanOrEq", "start": 0, @@ -504,7 +504,7 @@ description: Result of parsing index_of_array.kcl "start": 0, "type": "Name" }, - "commentStart": 341, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -521,7 +521,7 @@ description: Result of parsing index_of_array.kcl "nonCodeNodes": { "0": [ { - "commentStart": 53, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -532,7 +532,7 @@ description: Result of parsing index_of_array.kcl } }, { - "commentStart": 78, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -543,7 +543,7 @@ description: Result of parsing index_of_array.kcl ], "1": [ { - "commentStart": 97, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -554,7 +554,7 @@ description: Result of parsing index_of_array.kcl ], "3": [ { - "commentStart": 219, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -565,7 +565,7 @@ description: Result of parsing index_of_array.kcl } }, { - "commentStart": 245, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -576,7 +576,7 @@ description: Result of parsing index_of_array.kcl ], "5": [ { - "commentStart": 279, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -599,7 +599,7 @@ description: Result of parsing index_of_array.kcl } }, { - "commentStart": 32, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/intersect_cubes/artifact_commands.snap b/rust/kcl-lib/tests/intersect_cubes/artifact_commands.snap index 665c37255..ddfc05c36 100644 --- a/rust/kcl-lib/tests/intersect_cubes/artifact_commands.snap +++ b/rust/kcl-lib/tests/intersect_cubes/artifact_commands.snap @@ -178,8 +178,9 @@ description: Artifact commands intersect_cubes.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": 10.0, - "faces": null + "distance": 20.0, + "faces": null, + "opposite": "None" } }, { @@ -341,7 +342,7 @@ description: Artifact commands intersect_cubes.kcl "type": "move_path_pen", "path": "[uuid]", "to": { - "x": -2.0, + "x": 2.0, "y": -2.0, "z": 0.0 } @@ -363,7 +364,7 @@ description: Artifact commands intersect_cubes.kcl "segment": { "type": "line", "end": { - "x": 18.0, + "x": 12.0, "y": -2.0, "z": 0.0 }, @@ -380,8 +381,8 @@ description: Artifact commands intersect_cubes.kcl "segment": { "type": "line", "end": { - "x": 18.0, - "y": 18.0, + "x": 12.0, + "y": 8.0, "z": 0.0 }, "relative": false @@ -397,8 +398,8 @@ description: Artifact commands intersect_cubes.kcl "segment": { "type": "line", "end": { - "x": -2.0, - "y": 18.0, + "x": 2.0, + "y": 8.0, "z": 0.0 }, "relative": false @@ -436,7 +437,8 @@ description: Artifact commands intersect_cubes.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -542,5 +544,41 @@ description: Artifact commands intersect_cubes.kcl "edge_id": "[uuid]", "face_id": "[uuid]" } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "set_object_transform", + "object_id": "[uuid]", + "transforms": [ + { + "translate": { + "property": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "set": false, + "is_local": true + }, + "rotate_rpy": null, + "rotate_angle_axis": null, + "scale": null + } + ] + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "boolean_intersection", + "solid_ids": [ + "[uuid]", + "[uuid]" + ], + "tolerance": 0.0000001 + } } ] diff --git a/rust/kcl-lib/tests/intersect_cubes/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/intersect_cubes/artifact_graph_flowchart.snap.md index 0acf8a424..d94dcb7c6 100644 --- a/rust/kcl-lib/tests/intersect_cubes/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/intersect_cubes/artifact_graph_flowchart.snap.md @@ -1,23 +1,23 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[52, 103, 0]"] - 3["Segment
[111, 163, 0]"] - 4["Segment
[171, 223, 0]"] - 5["Segment
[231, 283, 0]"] - 6["Segment
[291, 298, 0]"] + 2["Path
[58, 113, 0]"] + 3["Segment
[121, 177, 0]"] + 4["Segment
[185, 241, 0]"] + 5["Segment
[249, 305, 0]"] + 6["Segment
[313, 320, 0]"] 7[Solid2d] end subgraph path24 [Path] - 24["Path
[52, 103, 0]"] - 25["Segment
[111, 163, 0]"] - 26["Segment
[171, 223, 0]"] - 27["Segment
[231, 283, 0]"] - 28["Segment
[291, 298, 0]"] + 24["Path
[58, 113, 0]"] + 25["Segment
[121, 177, 0]"] + 26["Segment
[185, 241, 0]"] + 27["Segment
[249, 305, 0]"] + 28["Segment
[313, 320, 0]"] 29[Solid2d] end - 1["Plane
[27, 44, 0]"] - 8["Sweep Extrusion
[306, 326, 0]"] + 1["Plane
[33, 50, 0]"] + 8["Sweep Extrusion
[328, 354, 0]"] 9[Wall] 10[Wall] 11[Wall] @@ -32,8 +32,8 @@ flowchart LR 20["SweepEdge Adjacent"] 21["SweepEdge Opposite"] 22["SweepEdge Adjacent"] - 23["Plane
[27, 44, 0]"] - 30["Sweep Extrusion
[306, 326, 0]"] + 23["Plane
[33, 50, 0]"] + 30["Sweep Extrusion
[328, 354, 0]"] 31[Wall] 32[Wall] 33[Wall] diff --git a/rust/kcl-lib/tests/intersect_cubes/ast.snap b/rust/kcl-lib/tests/intersect_cubes/ast.snap index 64038fd9c..d60d26aee 100644 --- a/rust/kcl-lib/tests/intersect_cubes/ast.snap +++ b/rust/kcl-lib/tests/intersect_cubes/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing intersect_cubes.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -27,10 +27,10 @@ description: Result of parsing intersect_cubes.kcl "arguments": [ { "abs_path": false, - "commentStart": 41, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -44,10 +44,10 @@ description: Result of parsing intersect_cubes.kcl ], "callee": { "abs_path": false, - "commentStart": 27, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -57,7 +57,7 @@ description: Result of parsing intersect_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 27, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -66,17 +66,17 @@ description: Result of parsing intersect_cubes.kcl { "arguments": [ { - "commentStart": 67, + "commentStart": 0, "elements": [ { - "commentStart": 68, + "commentStart": 0, "end": 0, "left": { - "commentStart": 68, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 68, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -84,7 +84,7 @@ description: Result of parsing intersect_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 75, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -101,30 +101,34 @@ description: Result of parsing intersect_cubes.kcl }, "operator": "-", "right": { - "commentStart": 80, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, { - "commentStart": 84, + "commentStart": 0, "end": 0, "left": { - "commentStart": 84, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 84, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -132,7 +136,7 @@ description: Result of parsing intersect_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 91, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -149,16 +153,20 @@ description: Result of parsing intersect_cubes.kcl }, "operator": "-", "right": { - "commentStart": 96, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", @@ -171,7 +179,7 @@ description: Result of parsing intersect_cubes.kcl "type": "ArrayExpression" }, { - "commentStart": 101, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -180,10 +188,10 @@ description: Result of parsing intersect_cubes.kcl ], "callee": { "abs_path": false, - "commentStart": 52, + "commentStart": 0, "end": 0, "name": { - "commentStart": 52, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -193,7 +201,7 @@ description: Result of parsing intersect_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 52, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -204,24 +212,24 @@ description: Result of parsing intersect_cubes.kcl { "type": "LabeledArg", "label": { - "commentStart": 116, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 130, + "commentStart": 0, "elements": [ { - "commentStart": 131, + "commentStart": 0, "end": 0, "left": { - "commentStart": 131, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 131, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -229,7 +237,7 @@ description: Result of parsing intersect_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 138, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -246,30 +254,34 @@ description: Result of parsing intersect_cubes.kcl }, "operator": "+", "right": { - "commentStart": 143, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, { - "commentStart": 147, + "commentStart": 0, "end": 0, "left": { - "commentStart": 147, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 147, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -277,7 +289,7 @@ description: Result of parsing intersect_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 154, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -294,16 +306,20 @@ description: Result of parsing intersect_cubes.kcl }, "operator": "-", "right": { - "commentStart": 159, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", @@ -319,10 +335,10 @@ description: Result of parsing intersect_cubes.kcl ], "callee": { "abs_path": false, - "commentStart": 111, + "commentStart": 0, "end": 0, "name": { - "commentStart": 111, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -332,7 +348,7 @@ description: Result of parsing intersect_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 111, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -344,24 +360,24 @@ description: Result of parsing intersect_cubes.kcl { "type": "LabeledArg", "label": { - "commentStart": 176, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 190, + "commentStart": 0, "elements": [ { - "commentStart": 191, + "commentStart": 0, "end": 0, "left": { - "commentStart": 191, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 191, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -369,7 +385,7 @@ description: Result of parsing intersect_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 198, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -386,30 +402,34 @@ description: Result of parsing intersect_cubes.kcl }, "operator": "+", "right": { - "commentStart": 203, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, { - "commentStart": 207, + "commentStart": 0, "end": 0, "left": { - "commentStart": 207, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 207, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -417,7 +437,7 @@ description: Result of parsing intersect_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 214, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -434,16 +454,20 @@ description: Result of parsing intersect_cubes.kcl }, "operator": "+", "right": { - "commentStart": 219, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", @@ -459,10 +483,10 @@ description: Result of parsing intersect_cubes.kcl ], "callee": { "abs_path": false, - "commentStart": 171, + "commentStart": 0, "end": 0, "name": { - "commentStart": 171, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -472,7 +496,7 @@ description: Result of parsing intersect_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 171, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -484,24 +508,24 @@ description: Result of parsing intersect_cubes.kcl { "type": "LabeledArg", "label": { - "commentStart": 236, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 250, + "commentStart": 0, "elements": [ { - "commentStart": 251, + "commentStart": 0, "end": 0, "left": { - "commentStart": 251, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 251, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -509,7 +533,7 @@ description: Result of parsing intersect_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 258, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -526,30 +550,34 @@ description: Result of parsing intersect_cubes.kcl }, "operator": "-", "right": { - "commentStart": 263, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, { - "commentStart": 267, + "commentStart": 0, "end": 0, "left": { - "commentStart": 267, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 267, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -557,7 +585,7 @@ description: Result of parsing intersect_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 274, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -574,16 +602,20 @@ description: Result of parsing intersect_cubes.kcl }, "operator": "+", "right": { - "commentStart": 279, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", @@ -599,10 +631,10 @@ description: Result of parsing intersect_cubes.kcl ], "callee": { "abs_path": false, - "commentStart": 231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 231, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -612,7 +644,7 @@ description: Result of parsing intersect_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 231, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -623,10 +655,10 @@ description: Result of parsing intersect_cubes.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 291, + "commentStart": 0, "end": 0, "name": { - "commentStart": 291, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -636,7 +668,7 @@ description: Result of parsing intersect_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 291, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -647,32 +679,56 @@ description: Result of parsing intersect_cubes.kcl { "type": "LabeledArg", "label": { - "commentStart": 314, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 323, + "commentStart": 0, "end": 0, - "raw": "10", + "left": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "BinaryExpression", + "type": "BinaryExpression" } } ], "callee": { "abs_path": false, - "commentStart": 306, + "commentStart": 0, "end": 0, "name": { - "commentStart": 306, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -682,7 +738,7 @@ description: Result of parsing intersect_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 306, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -690,35 +746,45 @@ description: Result of parsing intersect_cubes.kcl "unlabeled": null } ], - "commentStart": 27, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, - "commentStart": 20, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 16, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 7, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 8, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" } + }, + { + "type": "Parameter", + "identifier": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + } } ], "start": 0, @@ -735,12 +801,12 @@ description: Result of parsing intersect_cubes.kcl "type": "VariableDeclaration" }, { - "commentStart": 328, + "commentStart": 0, "declaration": { - "commentStart": 330, + "commentStart": 0, "end": 0, "id": { - "commentStart": 330, + "commentStart": 0, "end": 0, "name": "part001", "start": 0, @@ -749,10 +815,10 @@ description: Result of parsing intersect_cubes.kcl "init": { "arguments": [ { - "commentStart": 345, + "commentStart": 0, "elements": [ { - "commentStart": 346, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -764,7 +830,7 @@ description: Result of parsing intersect_cubes.kcl } }, { - "commentStart": 349, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -780,14 +846,26 @@ description: Result of parsing intersect_cubes.kcl "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "10", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 10.0, + "suffix": "None" + } } ], "callee": { "abs_path": false, - "commentStart": 340, + "commentStart": 0, "end": 0, "name": { - "commentStart": 340, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -797,7 +875,7 @@ description: Result of parsing intersect_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 340, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -813,73 +891,141 @@ description: Result of parsing intersect_cubes.kcl "type": "VariableDeclaration" }, { - "commentStart": 353, + "commentStart": 0, "declaration": { - "commentStart": 353, + "commentStart": 0, "end": 0, "id": { - "commentStart": 353, + "commentStart": 0, "end": 0, "name": "part002", "start": 0, "type": "Identifier" }, "init": { - "arguments": [ + "body": [ { - "commentStart": 368, - "elements": [ + "arguments": [ { - "commentStart": 369, + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "7", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 7.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "3", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 3.0, + "suffix": "None" + } + } + ], "end": 0, - "raw": "8", "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 8.0, - "suffix": "None" - } + "type": "ArrayExpression", + "type": "ArrayExpression" }, { - "commentStart": 372, + "commentStart": 0, "end": 0, - "raw": "8", + "raw": "5", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 8.0, + "value": 5.0, "suffix": "None" } } ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "cube", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, "end": 0, "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "translate", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null } ], - "callee": { - "abs_path": false, - "commentStart": 363, - "end": 0, - "name": { - "commentStart": 363, - "end": 0, - "name": "cube", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 363, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "PipeExpression", + "type": "PipeExpression" }, "start": 0, "type": "VariableDeclarator" @@ -891,12 +1037,12 @@ description: Result of parsing intersect_cubes.kcl "type": "VariableDeclaration" }, { - "commentStart": 375, + "commentStart": 0, "declaration": { - "commentStart": 377, + "commentStart": 0, "end": 0, "id": { - "commentStart": 377, + "commentStart": 0, "end": 0, "name": "fullPart", "start": 0, @@ -905,14 +1051,14 @@ description: Result of parsing intersect_cubes.kcl "init": { "arguments": [ { - "commentStart": 398, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 399, + "commentStart": 0, "end": 0, "name": { - "commentStart": 399, + "commentStart": 0, "end": 0, "name": "part001", "start": 0, @@ -925,10 +1071,10 @@ description: Result of parsing intersect_cubes.kcl }, { "abs_path": false, - "commentStart": 408, + "commentStart": 0, "end": 0, "name": { - "commentStart": 408, + "commentStart": 0, "end": 0, "name": "part002", "start": 0, @@ -948,10 +1094,10 @@ description: Result of parsing intersect_cubes.kcl ], "callee": { "abs_path": false, - "commentStart": 388, + "commentStart": 0, "end": 0, "name": { - "commentStart": 388, + "commentStart": 0, "end": 0, "name": "intersect", "start": 0, @@ -961,7 +1107,7 @@ description: Result of parsing intersect_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 388, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -983,7 +1129,7 @@ description: Result of parsing intersect_cubes.kcl "nonCodeNodes": { "0": [ { - "commentStart": 328, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -994,7 +1140,7 @@ description: Result of parsing intersect_cubes.kcl ], "2": [ { - "commentStart": 375, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/intersect_cubes/input.kcl b/rust/kcl-lib/tests/intersect_cubes/input.kcl index 962ba4135..221421088 100644 --- a/rust/kcl-lib/tests/intersect_cubes/input.kcl +++ b/rust/kcl-lib/tests/intersect_cubes/input.kcl @@ -1,14 +1,15 @@ -fn cube(center) { +fn cube(center, size) { return startSketchOn(XY) - |> startProfileAt([center[0] - 10, center[1] - 10], %) - |> line(endAbsolute = [center[0] + 10, center[1] - 10]) - |> line(endAbsolute = [center[0] + 10, center[1] + 10]) - |> line(endAbsolute = [center[0] - 10, center[1] + 10]) + |> startProfileAt([center[0] - size, center[1] - size], %) + |> line(endAbsolute = [center[0] + size, center[1] - size]) + |> line(endAbsolute = [center[0] + size, center[1] + size]) + |> line(endAbsolute = [center[0] - size, center[1] + size]) |> close() - |> extrude(length = 10) + |> extrude(length = 2 * size) } -part001 = cube([0, 0]) -part002 = cube([8, 8]) +part001 = cube([0, 0], 10) +part002 = cube([7, 3], 5) + |> translate(z = 1) fullPart = intersect([part001, part002]) diff --git a/rust/kcl-lib/tests/intersect_cubes/ops.snap b/rust/kcl-lib/tests/intersect_cubes/ops.snap index 658446ab4..8b2685972 100644 --- a/rust/kcl-lib/tests/intersect_cubes/ops.snap +++ b/rust/kcl-lib/tests/intersect_cubes/ops.snap @@ -10,7 +10,7 @@ description: Operations executed intersect_cubes.kcl "name": "cube", "functionSourceRange": [ 7, - 328, + 356, 0 ], "unlabeledArg": null, @@ -20,7 +20,7 @@ description: Operations executed intersect_cubes.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -38,7 +38,7 @@ description: Operations executed intersect_cubes.kcl "length": { "value": { "type": "Number", - "value": 10.0, + "value": 20.0, "ty": { "type": "Default", "len": { @@ -75,7 +75,7 @@ description: Operations executed intersect_cubes.kcl "name": "cube", "functionSourceRange": [ 7, - 328, + 356, 0 ], "unlabeledArg": null, @@ -85,7 +85,7 @@ description: Operations executed intersect_cubes.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/intersect_cubes/program_memory.snap b/rust/kcl-lib/tests/intersect_cubes/program_memory.snap index 20d1b1de5..682721c35 100644 --- a/rust/kcl-lib/tests/intersect_cubes/program_memory.snap +++ b/rust/kcl-lib/tests/intersect_cubes/program_memory.snap @@ -131,22 +131,34 @@ description: Variables in memory after executing intersect_cubes.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -176,7 +188,7 @@ description: Variables in memory after executing intersect_cubes.kcl "type": "Mm" } }, - "height": 10.0, + "height": 20.0, "startCapId": "[uuid]", "endCapId": "[uuid]", "units": { @@ -309,22 +321,34 @@ description: Variables in memory after executing intersect_cubes.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -354,7 +378,7 @@ description: Variables in memory after executing intersect_cubes.kcl "type": "Mm" } }, - "height": 10.0, + "height": 20.0, "startCapId": "[uuid]", "endCapId": "[uuid]", "units": { @@ -408,12 +432,12 @@ description: Variables in memory after executing intersect_cubes.kcl "sourceRange": [] }, "from": [ - -2.0, + 2.0, -2.0 ], "tag": null, "to": [ - 18.0, + 12.0, -2.0 ], "type": "ToPoint", @@ -427,13 +451,13 @@ description: Variables in memory after executing intersect_cubes.kcl "sourceRange": [] }, "from": [ - 18.0, + 12.0, -2.0 ], "tag": null, "to": [ - 18.0, - 18.0 + 12.0, + 8.0 ], "type": "ToPoint", "units": { @@ -446,13 +470,13 @@ description: Variables in memory after executing intersect_cubes.kcl "sourceRange": [] }, "from": [ - 18.0, - 18.0 + 12.0, + 8.0 ], "tag": null, "to": [ - -2.0, - 18.0 + 2.0, + 8.0 ], "type": "ToPoint", "units": { @@ -465,12 +489,12 @@ description: Variables in memory after executing intersect_cubes.kcl "sourceRange": [] }, "from": [ - -2.0, - 18.0 + 2.0, + 8.0 ], "tag": null, "to": [ - -2.0, + 2.0, -2.0 ], "type": "ToPoint", @@ -487,22 +511,34 @@ description: Variables in memory after executing intersect_cubes.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -510,11 +546,11 @@ description: Variables in memory after executing intersect_cubes.kcl }, "start": { "from": [ - -2.0, + 2.0, -2.0 ], "to": [ - -2.0, + 2.0, -2.0 ], "units": { diff --git a/rust/kcl-lib/tests/intersect_cubes/rendered_model.png b/rust/kcl-lib/tests/intersect_cubes/rendered_model.png index d565d034a..6c6a2528f 100644 Binary files a/rust/kcl-lib/tests/intersect_cubes/rendered_model.png and b/rust/kcl-lib/tests/intersect_cubes/rendered_model.png differ diff --git a/rust/kcl-lib/tests/intersect_cubes/unparsed.snap b/rust/kcl-lib/tests/intersect_cubes/unparsed.snap index 6a1a7b9ba..bb50b83f2 100644 --- a/rust/kcl-lib/tests/intersect_cubes/unparsed.snap +++ b/rust/kcl-lib/tests/intersect_cubes/unparsed.snap @@ -2,17 +2,18 @@ source: kcl-lib/src/simulation_tests.rs description: Result of unparsing intersect_cubes.kcl --- -fn cube(center) { +fn cube(center, size) { return startSketchOn(XY) - |> startProfileAt([center[0] - 10, center[1] - 10], %) - |> line(endAbsolute = [center[0] + 10, center[1] - 10]) - |> line(endAbsolute = [center[0] + 10, center[1] + 10]) - |> line(endAbsolute = [center[0] - 10, center[1] + 10]) + |> startProfileAt([center[0] - size, center[1] - size], %) + |> line(endAbsolute = [center[0] + size, center[1] - size]) + |> line(endAbsolute = [center[0] + size, center[1] + size]) + |> line(endAbsolute = [center[0] - size, center[1] + size]) |> close() - |> extrude(length = 10) + |> extrude(length = 2 * size) } -part001 = cube([0, 0]) -part002 = cube([8, 8]) +part001 = cube([0, 0], 10) +part002 = cube([7, 3], 5) + |> translate(z = 1) fullPart = intersect([part001, part002]) diff --git a/rust/kcl-lib/tests/invalid_index_fractional/ast.snap b/rust/kcl-lib/tests/invalid_index_fractional/ast.snap index bb305d347..e6cb8d733 100644 --- a/rust/kcl-lib/tests/invalid_index_fractional/ast.snap +++ b/rust/kcl-lib/tests/invalid_index_fractional/ast.snap @@ -18,10 +18,10 @@ description: Result of parsing invalid_index_fractional.kcl "type": "Identifier" }, "init": { - "commentStart": 6, + "commentStart": 0, "elements": [ { - "commentStart": 7, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -33,7 +33,7 @@ description: Result of parsing invalid_index_fractional.kcl } }, { - "commentStart": 10, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -45,7 +45,7 @@ description: Result of parsing invalid_index_fractional.kcl } }, { - "commentStart": 13, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -72,23 +72,23 @@ description: Result of parsing invalid_index_fractional.kcl "type": "VariableDeclaration" }, { - "commentStart": 16, + "commentStart": 0, "declaration": { - "commentStart": 16, + "commentStart": 0, "end": 0, "id": { - "commentStart": 16, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 20, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 20, + "commentStart": 0, "end": 0, "name": "arr", "start": 0, @@ -96,7 +96,7 @@ description: Result of parsing invalid_index_fractional.kcl "type": "Identifier" }, "property": { - "commentStart": 24, + "commentStart": 0, "end": 0, "raw": "1.2", "start": 0, diff --git a/rust/kcl-lib/tests/invalid_index_negative/ast.snap b/rust/kcl-lib/tests/invalid_index_negative/ast.snap index 9ee44b61b..011769b30 100644 --- a/rust/kcl-lib/tests/invalid_index_negative/ast.snap +++ b/rust/kcl-lib/tests/invalid_index_negative/ast.snap @@ -18,10 +18,10 @@ description: Result of parsing invalid_index_negative.kcl "type": "Identifier" }, "init": { - "commentStart": 6, + "commentStart": 0, "elements": [ { - "commentStart": 7, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -33,7 +33,7 @@ description: Result of parsing invalid_index_negative.kcl } }, { - "commentStart": 10, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -45,7 +45,7 @@ description: Result of parsing invalid_index_negative.kcl } }, { - "commentStart": 13, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -72,12 +72,12 @@ description: Result of parsing invalid_index_negative.kcl "type": "VariableDeclaration" }, { - "commentStart": 16, + "commentStart": 0, "declaration": { - "commentStart": 16, + "commentStart": 0, "end": 0, "id": { - "commentStart": 16, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -85,7 +85,7 @@ description: Result of parsing invalid_index_negative.kcl }, "init": { "argument": { - "commentStart": 21, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -96,7 +96,7 @@ description: Result of parsing invalid_index_negative.kcl "suffix": "None" } }, - "commentStart": 20, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -113,23 +113,23 @@ description: Result of parsing invalid_index_negative.kcl "type": "VariableDeclaration" }, { - "commentStart": 23, + "commentStart": 0, "declaration": { - "commentStart": 23, + "commentStart": 0, "end": 0, "id": { - "commentStart": 23, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 27, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 27, + "commentStart": 0, "end": 0, "name": "arr", "start": 0, @@ -137,7 +137,7 @@ description: Result of parsing invalid_index_negative.kcl "type": "Identifier" }, "property": { - "commentStart": 31, + "commentStart": 0, "end": 0, "name": "i", "start": 0, diff --git a/rust/kcl-lib/tests/invalid_index_str/ast.snap b/rust/kcl-lib/tests/invalid_index_str/ast.snap index 841a4f276..7135e6a42 100644 --- a/rust/kcl-lib/tests/invalid_index_str/ast.snap +++ b/rust/kcl-lib/tests/invalid_index_str/ast.snap @@ -18,10 +18,10 @@ description: Result of parsing invalid_index_str.kcl "type": "Identifier" }, "init": { - "commentStart": 6, + "commentStart": 0, "elements": [ { - "commentStart": 7, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -33,7 +33,7 @@ description: Result of parsing invalid_index_str.kcl } }, { - "commentStart": 10, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -45,7 +45,7 @@ description: Result of parsing invalid_index_str.kcl } }, { - "commentStart": 13, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -72,23 +72,23 @@ description: Result of parsing invalid_index_str.kcl "type": "VariableDeclaration" }, { - "commentStart": 16, + "commentStart": 0, "declaration": { - "commentStart": 16, + "commentStart": 0, "end": 0, "id": { - "commentStart": 16, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 20, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 20, + "commentStart": 0, "end": 0, "name": "arr", "start": 0, @@ -96,7 +96,7 @@ description: Result of parsing invalid_index_str.kcl "type": "Identifier" }, "property": { - "commentStart": 24, + "commentStart": 0, "end": 0, "raw": "\"s\"", "start": 0, diff --git a/rust/kcl-lib/tests/invalid_member_object/ast.snap b/rust/kcl-lib/tests/invalid_member_object/ast.snap index ad90075ec..921d15b9c 100644 --- a/rust/kcl-lib/tests/invalid_member_object/ast.snap +++ b/rust/kcl-lib/tests/invalid_member_object/ast.snap @@ -18,7 +18,7 @@ description: Result of parsing invalid_member_object.kcl "type": "Identifier" }, "init": { - "commentStart": 6, + "commentStart": 0, "end": 0, "raw": "999", "start": 0, @@ -39,23 +39,23 @@ description: Result of parsing invalid_member_object.kcl "type": "VariableDeclaration" }, { - "commentStart": 10, + "commentStart": 0, "declaration": { - "commentStart": 10, + "commentStart": 0, "end": 0, "id": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 14, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 14, + "commentStart": 0, "end": 0, "name": "num", "start": 0, @@ -63,7 +63,7 @@ description: Result of parsing invalid_member_object.kcl "type": "Identifier" }, "property": { - "commentStart": 18, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, diff --git a/rust/kcl-lib/tests/invalid_member_object_prop/ast.snap b/rust/kcl-lib/tests/invalid_member_object_prop/ast.snap index 1a76aa275..edf3219a0 100644 --- a/rust/kcl-lib/tests/invalid_member_object_prop/ast.snap +++ b/rust/kcl-lib/tests/invalid_member_object_prop/ast.snap @@ -18,7 +18,7 @@ description: Result of parsing invalid_member_object_prop.kcl "type": "Identifier" }, "init": { - "commentStart": 4, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -36,23 +36,23 @@ description: Result of parsing invalid_member_object_prop.kcl "type": "VariableDeclaration" }, { - "commentStart": 9, + "commentStart": 0, "declaration": { - "commentStart": 9, + "commentStart": 0, "end": 0, "id": { - "commentStart": 9, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 13, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 13, + "commentStart": 0, "end": 0, "name": "b", "start": 0, @@ -60,7 +60,7 @@ description: Result of parsing invalid_member_object_prop.kcl "type": "Identifier" }, "property": { - "commentStart": 15, + "commentStart": 0, "end": 0, "raw": "\"property\"", "start": 0, diff --git a/rust/kcl-lib/tests/kcl_samples/80-20-rail/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/80-20-rail/artifact_commands.snap index abdf82584..89c27f0d1 100644 --- a/rust/kcl-lib/tests/kcl_samples/80-20-rail/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/80-20-rail/artifact_commands.snap @@ -1478,7 +1478,8 @@ description: Artifact commands 80-20-rail.kcl "type": "extrude", "target": "[uuid]", "distance": 48.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/80-20-rail/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/80-20-rail/artifact_graph_flowchart.snap.md index 4a630922b..105b43a0b 100644 --- a/rust/kcl-lib/tests/kcl_samples/80-20-rail/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/80-20-rail/artifact_graph_flowchart.snap.md @@ -9,73 +9,73 @@ flowchart LR 7["Segment
[841, 888, 0]"] 8["Segment
[896, 944, 0]"] 9["Segment
[952, 1001, 0]"] - 10["Segment
[1009, 1126, 0]"] - 11["Segment
[1134, 1182, 0]"] - 12["Segment
[1190, 1298, 0]"] - 13["Segment
[1306, 1355, 0]"] - 14["Segment
[1363, 1412, 0]"] - 15["Segment
[1420, 1453, 0]"] - 16["Segment
[1461, 1570, 0]"] - 17["Segment
[1578, 1610, 0]"] - 18["Segment
[1618, 1727, 0]"] - 19["Segment
[1735, 1838, 0]"] - 20["Segment
[1879, 1989, 0]"] - 21["Segment
[1997, 2029, 0]"] - 22["Segment
[2037, 2147, 0]"] - 23["Segment
[2155, 2202, 0]"] - 24["Segment
[2210, 2260, 0]"] - 25["Segment
[2268, 2318, 0]"] - 26["Segment
[2336, 2465, 0]"] - 27["Segment
[2483, 2532, 0]"] - 28["Segment
[2546, 2660, 0]"] - 29["Segment
[2674, 2724, 0]"] - 30["Segment
[2738, 2787, 0]"] - 31["Segment
[2795, 2828, 0]"] - 32["Segment
[2836, 2946, 0]"] - 33["Segment
[2954, 2986, 0]"] - 34["Segment
[2994, 3104, 0]"] - 35["Segment
[3145, 3247, 0]"] - 36["Segment
[3255, 3365, 0]"] - 37["Segment
[3373, 3406, 0]"] - 38["Segment
[3414, 3524, 0]"] - 39["Segment
[3532, 3581, 0]"] - 40["Segment
[3589, 3639, 0]"] - 41["Segment
[3647, 3696, 0]"] - 42["Segment
[3704, 3832, 0]"] - 43["Segment
[3840, 3890, 0]"] - 44["Segment
[3898, 4013, 0]"] - 45["Segment
[4021, 4070, 0]"] - 46["Segment
[4078, 4127, 0]"] - 47["Segment
[4135, 4169, 0]"] - 48["Segment
[4177, 4287, 0]"] - 49["Segment
[4295, 4328, 0]"] - 50["Segment
[4336, 4446, 0]"] - 51["Segment
[4454, 4558, 0]"] - 52["Segment
[4599, 4709, 0]"] - 53["Segment
[4717, 4750, 0]"] - 54["Segment
[4758, 4868, 0]"] - 55["Segment
[4876, 4925, 0]"] - 56["Segment
[4933, 4982, 0]"] - 57["Segment
[4990, 5039, 0]"] - 58["Segment
[5047, 5166, 0]"] - 59["Segment
[5174, 5224, 0]"] - 60["Segment
[5232, 5340, 0]"] - 61["Segment
[5348, 5397, 0]"] - 62["Segment
[5405, 5455, 0]"] - 63["Segment
[5463, 5497, 0]"] - 64["Segment
[5505, 5615, 0]"] - 65["Segment
[5623, 5656, 0]"] - 66["Segment
[5664, 5774, 0]"] - 67["Segment
[5782, 5789, 0]"] + 10["Segment
[1009, 1107, 0]"] + 11["Segment
[1115, 1163, 0]"] + 12["Segment
[1171, 1260, 0]"] + 13["Segment
[1268, 1317, 0]"] + 14["Segment
[1325, 1374, 0]"] + 15["Segment
[1382, 1415, 0]"] + 16["Segment
[1423, 1532, 0]"] + 17["Segment
[1540, 1572, 0]"] + 18["Segment
[1580, 1689, 0]"] + 19["Segment
[1697, 1800, 0]"] + 20["Segment
[1841, 1951, 0]"] + 21["Segment
[1959, 1991, 0]"] + 22["Segment
[1999, 2109, 0]"] + 23["Segment
[2117, 2164, 0]"] + 24["Segment
[2172, 2222, 0]"] + 25["Segment
[2230, 2280, 0]"] + 26["Segment
[2298, 2408, 0]"] + 27["Segment
[2426, 2475, 0]"] + 28["Segment
[2489, 2584, 0]"] + 29["Segment
[2598, 2648, 0]"] + 30["Segment
[2662, 2711, 0]"] + 31["Segment
[2719, 2752, 0]"] + 32["Segment
[2760, 2870, 0]"] + 33["Segment
[2878, 2910, 0]"] + 34["Segment
[2918, 3028, 0]"] + 35["Segment
[3069, 3171, 0]"] + 36["Segment
[3179, 3289, 0]"] + 37["Segment
[3297, 3330, 0]"] + 38["Segment
[3338, 3448, 0]"] + 39["Segment
[3456, 3505, 0]"] + 40["Segment
[3513, 3563, 0]"] + 41["Segment
[3571, 3620, 0]"] + 42["Segment
[3628, 3737, 0]"] + 43["Segment
[3745, 3795, 0]"] + 44["Segment
[3803, 3899, 0]"] + 45["Segment
[3907, 3956, 0]"] + 46["Segment
[3964, 4013, 0]"] + 47["Segment
[4021, 4055, 0]"] + 48["Segment
[4063, 4173, 0]"] + 49["Segment
[4181, 4214, 0]"] + 50["Segment
[4222, 4332, 0]"] + 51["Segment
[4340, 4444, 0]"] + 52["Segment
[4485, 4595, 0]"] + 53["Segment
[4603, 4636, 0]"] + 54["Segment
[4644, 4754, 0]"] + 55["Segment
[4762, 4811, 0]"] + 56["Segment
[4819, 4868, 0]"] + 57["Segment
[4876, 4925, 0]"] + 58["Segment
[4933, 5033, 0]"] + 59["Segment
[5041, 5091, 0]"] + 60["Segment
[5099, 5188, 0]"] + 61["Segment
[5196, 5245, 0]"] + 62["Segment
[5253, 5303, 0]"] + 63["Segment
[5311, 5345, 0]"] + 64["Segment
[5353, 5463, 0]"] + 65["Segment
[5471, 5504, 0]"] + 66["Segment
[5512, 5622, 0]"] + 67["Segment
[5630, 5637, 0]"] 68[Solid2d] end subgraph path69 [Path] - 69["Path
[5840, 6018, 0]"] - 70["Segment
[5840, 6018, 0]"] + 69["Path
[5688, 5866, 0]"] + 70["Segment
[5688, 5866, 0]"] 71[Solid2d] end 1["Plane
[323, 341, 0]"] - 72["Sweep Extrusion
[6030, 6058, 0]"] + 72["Sweep Extrusion
[5878, 5906, 0]"] 73[Wall] 74[Wall] 75[Wall] @@ -270,38 +270,38 @@ flowchart LR 264["SweepEdge Adjacent"] 265["SweepEdge Opposite"] 266["SweepEdge Adjacent"] - 267["EdgeCut Fillet
[6066, 6771, 0]"] - 268["EdgeCut Fillet
[6066, 6771, 0]"] - 269["EdgeCut Fillet
[6066, 6771, 0]"] - 270["EdgeCut Fillet
[6066, 6771, 0]"] - 271["EdgeCut Fillet
[6066, 6771, 0]"] - 272["EdgeCut Fillet
[6066, 6771, 0]"] - 273["EdgeCut Fillet
[6066, 6771, 0]"] - 274["EdgeCut Fillet
[6066, 6771, 0]"] - 275["EdgeCut Fillet
[6066, 6771, 0]"] - 276["EdgeCut Fillet
[6066, 6771, 0]"] - 277["EdgeCut Fillet
[6066, 6771, 0]"] - 278["EdgeCut Fillet
[6066, 6771, 0]"] - 279["EdgeCut Fillet
[6066, 6771, 0]"] - 280["EdgeCut Fillet
[6066, 6771, 0]"] - 281["EdgeCut Fillet
[6066, 6771, 0]"] - 282["EdgeCut Fillet
[6066, 6771, 0]"] - 283["EdgeCut Fillet
[6779, 7483, 0]"] - 284["EdgeCut Fillet
[6779, 7483, 0]"] - 285["EdgeCut Fillet
[6779, 7483, 0]"] - 286["EdgeCut Fillet
[6779, 7483, 0]"] - 287["EdgeCut Fillet
[6779, 7483, 0]"] - 288["EdgeCut Fillet
[6779, 7483, 0]"] - 289["EdgeCut Fillet
[6779, 7483, 0]"] - 290["EdgeCut Fillet
[6779, 7483, 0]"] - 291["EdgeCut Fillet
[6779, 7483, 0]"] - 292["EdgeCut Fillet
[6779, 7483, 0]"] - 293["EdgeCut Fillet
[6779, 7483, 0]"] - 294["EdgeCut Fillet
[6779, 7483, 0]"] - 295["EdgeCut Fillet
[6779, 7483, 0]"] - 296["EdgeCut Fillet
[6779, 7483, 0]"] - 297["EdgeCut Fillet
[6779, 7483, 0]"] - 298["EdgeCut Fillet
[6779, 7483, 0]"] + 267["EdgeCut Fillet
[5914, 6619, 0]"] + 268["EdgeCut Fillet
[5914, 6619, 0]"] + 269["EdgeCut Fillet
[5914, 6619, 0]"] + 270["EdgeCut Fillet
[5914, 6619, 0]"] + 271["EdgeCut Fillet
[5914, 6619, 0]"] + 272["EdgeCut Fillet
[5914, 6619, 0]"] + 273["EdgeCut Fillet
[5914, 6619, 0]"] + 274["EdgeCut Fillet
[5914, 6619, 0]"] + 275["EdgeCut Fillet
[5914, 6619, 0]"] + 276["EdgeCut Fillet
[5914, 6619, 0]"] + 277["EdgeCut Fillet
[5914, 6619, 0]"] + 278["EdgeCut Fillet
[5914, 6619, 0]"] + 279["EdgeCut Fillet
[5914, 6619, 0]"] + 280["EdgeCut Fillet
[5914, 6619, 0]"] + 281["EdgeCut Fillet
[5914, 6619, 0]"] + 282["EdgeCut Fillet
[5914, 6619, 0]"] + 283["EdgeCut Fillet
[6627, 7331, 0]"] + 284["EdgeCut Fillet
[6627, 7331, 0]"] + 285["EdgeCut Fillet
[6627, 7331, 0]"] + 286["EdgeCut Fillet
[6627, 7331, 0]"] + 287["EdgeCut Fillet
[6627, 7331, 0]"] + 288["EdgeCut Fillet
[6627, 7331, 0]"] + 289["EdgeCut Fillet
[6627, 7331, 0]"] + 290["EdgeCut Fillet
[6627, 7331, 0]"] + 291["EdgeCut Fillet
[6627, 7331, 0]"] + 292["EdgeCut Fillet
[6627, 7331, 0]"] + 293["EdgeCut Fillet
[6627, 7331, 0]"] + 294["EdgeCut Fillet
[6627, 7331, 0]"] + 295["EdgeCut Fillet
[6627, 7331, 0]"] + 296["EdgeCut Fillet
[6627, 7331, 0]"] + 297["EdgeCut Fillet
[6627, 7331, 0]"] + 298["EdgeCut Fillet
[6627, 7331, 0]"] 1 --- 2 1 --- 69 2 --- 3 diff --git a/rust/kcl-lib/tests/kcl_samples/80-20-rail/ast.snap b/rust/kcl-lib/tests/kcl_samples/80-20-rail/ast.snap index 735aed193..1d95ea899 100644 --- a/rust/kcl-lib/tests/kcl_samples/80-20-rail/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/80-20-rail/ast.snap @@ -6,12 +6,12 @@ description: Result of parsing 80-20-rail.kcl "Ok": { "body": [ { - "commentStart": 182, + "commentStart": 0, "declaration": { - "commentStart": 231, + "commentStart": 0, "end": 0, "id": { - "commentStart": 231, + "commentStart": 0, "end": 0, "name": "rail8020", "start": 0, @@ -21,12 +21,12 @@ description: Result of parsing 80-20-rail.kcl "body": { "body": [ { - "commentStart": 278, + "commentStart": 0, "declaration": { - "commentStart": 311, + "commentStart": 0, "end": 0, "id": { - "commentStart": 311, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -39,10 +39,10 @@ description: Result of parsing 80-20-rail.kcl { "argument": { "abs_path": false, - "commentStart": 338, + "commentStart": 0, "end": 0, "name": { - "commentStart": 338, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -53,7 +53,7 @@ description: Result of parsing 80-20-rail.kcl "type": "Name", "type": "Name" }, - "commentStart": 337, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -63,10 +63,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 323, + "commentStart": 0, "end": 0, "name": { - "commentStart": 323, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -76,7 +76,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 323, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -85,14 +85,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 364, + "commentStart": 0, "elements": [ { - "commentStart": 375, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 375, + "commentStart": 0, "end": 0, "name": "originStart", "start": 0, @@ -100,7 +100,7 @@ description: Result of parsing 80-20-rail.kcl "type": "Identifier" }, "property": { - "commentStart": 387, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -116,13 +116,13 @@ description: Result of parsing 80-20-rail.kcl "type": "MemberExpression" }, { - "commentStart": 400, + "commentStart": 0, "end": 0, "left": { - "commentStart": 400, + "commentStart": 0, "end": 0, "left": { - "commentStart": 400, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -136,10 +136,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 406, + "commentStart": 0, "end": 0, "name": { - "commentStart": 406, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -156,11 +156,11 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "+", "right": { - "commentStart": 419, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 419, + "commentStart": 0, "end": 0, "name": "originStart", "start": 0, @@ -168,7 +168,7 @@ description: Result of parsing 80-20-rail.kcl "type": "Identifier" }, "property": { - "commentStart": 431, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -194,7 +194,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ArrayExpression" }, { - "commentStart": 444, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -203,10 +203,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 349, + "commentStart": 0, "end": 0, "name": { - "commentStart": 349, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -216,7 +216,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 349, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -225,14 +225,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 458, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 469, + "commentStart": 0, "end": 0, "key": { - "commentStart": 469, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -241,7 +241,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 482, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -254,10 +254,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 496, + "commentStart": 0, "end": 0, "key": { - "commentStart": 496, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -266,7 +266,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 507, + "commentStart": 0, "end": 0, "raw": "270", "start": 0, @@ -279,10 +279,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 521, + "commentStart": 0, "end": 0, "key": { - "commentStart": 521, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -291,10 +291,10 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 530, + "commentStart": 0, "end": 0, "left": { - "commentStart": 530, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -308,10 +308,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 536, + "commentStart": 0, "end": 0, "name": { - "commentStart": 536, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -333,7 +333,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 557, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -342,10 +342,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 454, + "commentStart": 0, "end": 0, "name": { - "commentStart": 454, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -355,7 +355,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 454, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -364,14 +364,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 571, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 582, + "commentStart": 0, "end": 0, "key": { - "commentStart": 582, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -380,7 +380,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 595, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -393,10 +393,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 609, + "commentStart": 0, "end": 0, "key": { - "commentStart": 609, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -405,7 +405,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 620, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -418,10 +418,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 632, + "commentStart": 0, "end": 0, "key": { - "commentStart": 632, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -430,13 +430,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 641, + "commentStart": 0, "end": 0, "left": { - "commentStart": 641, + "commentStart": 0, "end": 0, "left": { - "commentStart": 641, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -449,7 +449,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 649, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -467,10 +467,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 653, + "commentStart": 0, "end": 0, "name": { - "commentStart": 653, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -492,7 +492,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 674, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -501,10 +501,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 567, + "commentStart": 0, "end": 0, "name": { - "commentStart": 567, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -514,7 +514,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 567, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -525,17 +525,17 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 690, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 699, + "commentStart": 0, "end": 0, "left": { - "commentStart": 699, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -549,10 +549,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 705, + "commentStart": 0, "end": 0, "name": { - "commentStart": 705, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -571,10 +571,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 684, + "commentStart": 0, "end": 0, "name": { - "commentStart": 684, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -584,7 +584,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 684, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -594,14 +594,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 728, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 739, + "commentStart": 0, "end": 0, "key": { - "commentStart": 739, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -610,7 +610,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 752, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -623,10 +623,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 766, + "commentStart": 0, "end": 0, "key": { - "commentStart": 766, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -635,7 +635,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 777, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -648,10 +648,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 789, + "commentStart": 0, "end": 0, "key": { - "commentStart": 789, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -660,13 +660,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 798, + "commentStart": 0, "end": 0, "left": { - "commentStart": 798, + "commentStart": 0, "end": 0, "left": { - "commentStart": 798, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -679,7 +679,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 806, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -697,10 +697,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 810, + "commentStart": 0, "end": 0, "name": { - "commentStart": 810, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -722,7 +722,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 831, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -731,10 +731,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 724, + "commentStart": 0, "end": 0, "name": { - "commentStart": 724, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -744,7 +744,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 724, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -755,17 +755,17 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 847, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 856, + "commentStart": 0, "end": 0, "left": { - "commentStart": 856, + "commentStart": 0, "end": 0, "raw": "0.06", "start": 0, @@ -779,10 +779,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 863, + "commentStart": 0, "end": 0, "name": { - "commentStart": 863, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -801,14 +801,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 875, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 881, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -819,10 +819,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 841, + "commentStart": 0, "end": 0, "name": { - "commentStart": 841, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -832,7 +832,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 841, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -844,17 +844,17 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 902, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 911, + "commentStart": 0, "end": 0, "left": { - "commentStart": 911, + "commentStart": 0, "end": 0, "raw": "0.087", "start": 0, @@ -868,10 +868,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 919, + "commentStart": 0, "end": 0, "name": { - "commentStart": 919, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -890,14 +890,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 931, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 937, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -908,10 +908,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 896, + "commentStart": 0, "end": 0, "name": { - "commentStart": 896, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -921,7 +921,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 896, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -933,18 +933,18 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 958, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 967, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 968, + "commentStart": 0, "end": 0, "raw": "0.183", "start": 0, @@ -955,7 +955,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 967, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -965,10 +965,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 976, + "commentStart": 0, "end": 0, "name": { - "commentStart": 976, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -987,14 +987,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 988, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 994, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1005,10 +1005,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 952, + "commentStart": 0, "end": 0, "name": { - "commentStart": 952, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1018,7 +1018,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 952, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1028,140 +1028,50 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 1023, - "end": 0, - "properties": [ - { - "commentStart": 1034, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "45", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 45.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1034, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1042, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1055, - "end": 0, - "key": { - "commentStart": 1055, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1061, + "left": { + "commentStart": 0, "end": 0, "left": { - "commentStart": 1061, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1061, - "end": 0, - "left": { - "commentStart": 1061, - "end": 0, - "left": { - "commentStart": 1061, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - "operator": "-", - "right": { - "commentStart": 1065, - "end": 0, - "raw": "0.356", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.356, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "/", - "right": { - "commentStart": 1074, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 1078, - "end": 0, - "name": { - "commentStart": 1078, - "end": 0, - "name": "railHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "commentStart": 1091, - "computed": false, - "end": 0, - "object": { - "commentStart": 1091, - "end": 0, - "name": "originStart", - "start": 0, - "type": "Identifier", - "type": "Identifier" - }, - "property": { - "commentStart": 1103, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1172,44 +1082,122 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, + "operator": "-", + "right": { + "commentStart": 0, + "end": 0, + "raw": "0.356", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.356, + "suffix": "None" + } + }, "start": 0, - "type": "MemberExpression", - "type": "MemberExpression" + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "railHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "originStart", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 1116, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1119, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "edge4" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "edge4" + } } ], "callee": { "abs_path": false, - "commentStart": 1009, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1009, + "commentStart": 0, "end": 0, - "name": "angledLineToY", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -1217,28 +1205,29 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 1009, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1140, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1149, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1149, + "commentStart": 0, "end": 0, "raw": "0.232", "start": 0, @@ -1252,10 +1241,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1157, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1157, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -1274,14 +1263,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 1169, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1175, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1292,10 +1281,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 1134, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1134, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1305,270 +1294,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 1134, - "end": 0, - "start": 0, - "type": "CallExpressionKw", - "type": "CallExpressionKw", - "unlabeled": null - }, - { - "arguments": [ - { - "commentStart": 1204, - "end": 0, - "properties": [ - { - "commentStart": 1215, - "end": 0, - "key": { - "commentStart": 1215, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 1224, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - }, - "commentStart": 1223, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - }, - { - "commentStart": 1237, - "end": 0, - "key": { - "commentStart": 1237, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1242, - "end": 0, - "left": { - "commentStart": 1242, - "end": 0, - "left": { - "commentStart": 1242, - "end": 0, - "raw": "0.087", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.087, - "suffix": "None" - } - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 1250, - "end": 0, - "name": { - "commentStart": 1250, - "end": 0, - "name": "railHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "commentStart": 1263, - "computed": false, - "end": 0, - "object": { - "commentStart": 1263, - "end": 0, - "name": "originStart", - "start": 0, - "type": "Identifier", - "type": "Identifier" - }, - "property": { - "commentStart": 1275, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - "start": 0, - "type": "MemberExpression", - "type": "MemberExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1288, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1291, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "edge6" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1190, - "end": 0, - "name": { - "commentStart": 1190, - "end": 0, - "name": "angledLineToY", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1190, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "type": "LabeledArg", - "label": { - "commentStart": 1312, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "arg": { - "commentStart": 1321, - "end": 0, - "left": { - "argument": { - "commentStart": 1322, - "end": 0, - "raw": "0.183", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.183, - "suffix": "None" - } - }, - "commentStart": 1321, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 1330, - "end": 0, - "name": { - "commentStart": 1330, - "end": 0, - "name": "railHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - }, - { - "type": "LabeledArg", - "label": { - "commentStart": 1342, - "end": 0, - "name": "tag", - "start": 0, - "type": "Identifier" - }, - "arg": { - "commentStart": 1348, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "edge7" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 1306, - "end": 0, - "name": { - "commentStart": 1306, - "end": 0, - "name": "xLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1306, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1580,18 +1306,50 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 1369, + "commentStart": 0, "end": 0, - "name": "length", + "name": "angle", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1378, + "argument": { + "commentStart": 0, + "end": 0, + "raw": "45", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 45.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, "end": 0, "left": { - "argument": { - "commentStart": 1379, + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, "raw": "0.087", "start": 0, @@ -1602,7 +1360,130 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 1378, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "railHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "originStart", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "edge6" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "0.183", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.183, + "suffix": "None" + } + }, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1612,10 +1493,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1387, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1387, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -1634,30 +1515,30 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 1399, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1405, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", "type": "TagDeclarator", - "value": "edge8" + "value": "edge7" } } ], "callee": { "abs_path": false, - "commentStart": 1363, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1363, + "commentStart": 0, "end": 0, - "name": "yLine", + "name": "xLine", "start": 0, "type": "Identifier" }, @@ -1665,7 +1546,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 1363, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1677,17 +1558,114 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 1426, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1435, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1435, + "argument": { + "commentStart": 0, + "end": 0, + "raw": "0.087", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.087, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "railHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "edge8" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "yLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, "raw": "0.06", "start": 0, @@ -1701,10 +1679,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1442, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1442, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -1723,10 +1701,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 1420, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1420, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1736,7 +1714,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 1420, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1746,14 +1724,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 1465, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1476, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1476, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -1762,7 +1740,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1489, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -1775,10 +1753,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 1503, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1503, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -1787,7 +1765,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1514, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1800,10 +1778,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 1526, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1526, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -1812,13 +1790,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1535, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1535, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1535, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -1831,7 +1809,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 1543, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -1849,10 +1827,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1547, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1547, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -1874,7 +1852,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 1568, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1883,10 +1861,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 1461, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1461, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -1896,7 +1874,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 1461, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1907,17 +1885,17 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 1584, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1593, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1593, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -1931,10 +1909,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1599, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1599, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -1953,10 +1931,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 1578, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1578, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1966,7 +1944,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 1578, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1976,14 +1954,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 1622, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1633, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1633, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -1992,7 +1970,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1646, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -2005,10 +1983,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 1660, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1660, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -2017,7 +1995,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1671, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2030,10 +2008,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 1683, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1683, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2042,13 +2020,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1692, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1692, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1692, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -2061,7 +2039,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 1700, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -2079,10 +2057,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1704, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1704, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -2104,7 +2082,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 1725, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2113,10 +2091,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 1618, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1618, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -2126,7 +2104,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 1618, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2135,14 +2113,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 1739, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1750, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1750, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -2152,7 +2130,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectProperty", "value": { "argument": { - "commentStart": 1764, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -2163,7 +2141,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 1763, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2172,10 +2150,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 1777, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1777, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -2184,7 +2162,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1788, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2197,10 +2175,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 1800, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1800, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2209,10 +2187,10 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1809, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1809, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -2226,10 +2204,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1815, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1815, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -2251,7 +2229,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 1836, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2260,10 +2238,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 1735, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1735, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -2273,7 +2251,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 1735, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2282,14 +2260,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 1883, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1894, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1894, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -2298,7 +2276,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1907, + "commentStart": 0, "end": 0, "raw": "270", "start": 0, @@ -2311,10 +2289,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 1921, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1921, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -2323,7 +2301,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1932, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -2336,10 +2314,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 1945, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1945, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2348,13 +2326,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1954, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1954, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1954, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -2367,7 +2345,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 1962, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -2385,10 +2363,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1966, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1966, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -2410,7 +2388,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 1987, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2419,10 +2397,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 1879, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1879, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -2432,7 +2410,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 1879, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2443,17 +2421,17 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 2003, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2012, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2012, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -2467,10 +2445,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2018, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2018, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -2489,10 +2467,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 1997, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1997, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2502,7 +2480,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 1997, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2512,14 +2490,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 2041, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 2052, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2052, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -2528,7 +2506,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2065, + "commentStart": 0, "end": 0, "raw": "270", "start": 0, @@ -2541,10 +2519,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 2079, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2079, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -2553,7 +2531,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2090, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -2566,10 +2544,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 2103, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2103, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2578,13 +2556,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2112, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2112, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2112, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -2597,7 +2575,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 2120, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -2615,10 +2593,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2124, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2124, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -2640,7 +2618,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 2145, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2649,10 +2627,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 2037, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2037, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -2662,7 +2640,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 2037, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2673,17 +2651,17 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 2161, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2170, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2170, + "commentStart": 0, "end": 0, "raw": "0.06", "start": 0, @@ -2697,10 +2675,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2177, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2177, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -2719,14 +2697,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 2189, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2195, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2737,10 +2715,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 2155, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2155, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2750,7 +2728,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 2155, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2762,18 +2740,18 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 2216, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2225, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 2226, + "commentStart": 0, "end": 0, "raw": "0.087", "start": 0, @@ -2784,7 +2762,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 2225, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2794,10 +2772,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2234, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2234, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -2816,14 +2794,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 2246, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2252, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2834,10 +2812,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 2210, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2210, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2847,7 +2825,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 2210, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2859,18 +2837,18 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 2274, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2283, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 2284, + "commentStart": 0, "end": 0, "raw": "0.183", "start": 0, @@ -2881,7 +2859,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 2283, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2891,10 +2869,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2292, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2292, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -2913,14 +2891,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 2304, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2310, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2931,10 +2909,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 2268, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2268, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2944,7 +2922,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 2268, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2954,110 +2932,66 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 2350, - "end": 0, - "properties": [ - { - "commentStart": 2361, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "135", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 135.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 2361, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2369, - "end": 0, - "raw": "135", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 135.0, - "suffix": "None" - } - } - }, - { - "commentStart": 2383, - "end": 0, - "key": { - "commentStart": 2383, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2390, + "left": { + "commentStart": 0, "end": 0, "left": { - "commentStart": 2390, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2390, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2390, + "commentStart": 0, "end": 0, - "left": { - "commentStart": 2390, - "end": 0, - "left": { - "commentStart": 2390, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - "operator": "-", - "right": { - "commentStart": 2394, - "end": 0, - "raw": "0.356", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.356, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "/", - "right": { - "commentStart": 2403, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, + "raw": "1", "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } }, - "operator": "+", + "operator": "-", "right": { - "commentStart": 2407, + "commentStart": 0, "end": 0, "raw": "0.356", "start": 0, @@ -3072,22 +3006,18 @@ description: Result of parsing 80-20-rail.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "operator": "*", + "operator": "/", "right": { - "abs_path": false, - "commentStart": 2416, + "commentStart": 0, "end": 0, - "name": { - "commentStart": 2416, - "end": 0, - "name": "railHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], + "raw": "2", "start": 0, - "type": "Name", - "type": "Name" + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } }, "start": 0, "type": "BinaryExpression", @@ -3095,67 +3025,103 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "+", "right": { - "commentStart": 2429, - "computed": false, + "commentStart": 0, "end": 0, - "object": { - "commentStart": 2429, - "end": 0, - "name": "originStart", - "start": 0, - "type": "Identifier", - "type": "Identifier" - }, - "property": { - "commentStart": 2441, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, + "raw": "0.356", "start": 0, - "type": "MemberExpression", - "type": "MemberExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.356, + "suffix": "None" + } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "railHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "originStart", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 2454, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 2457, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "edge12" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "edge12" + } } ], "callee": { "abs_path": false, - "commentStart": 2336, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2336, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -3163,28 +3129,29 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 2336, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2489, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2498, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2498, + "commentStart": 0, "end": 0, "raw": "0.232", "start": 0, @@ -3198,10 +3165,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2506, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2506, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -3220,14 +3187,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 2518, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2524, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3238,10 +3205,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 2483, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2483, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -3251,7 +3218,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 2483, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3261,168 +3228,156 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 2560, - "end": 0, - "properties": [ - { - "commentStart": 2571, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "45", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 45.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 2571, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2579, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - } - }, - { - "commentStart": 2592, - "end": 0, - "key": { - "commentStart": 2592, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2598, + "left": { + "commentStart": 0, "end": 0, "left": { - "commentStart": 2598, + "commentStart": 0, "end": 0, - "left": { - "commentStart": 2598, - "end": 0, - "left": { - "commentStart": 2598, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - "operator": "-", - "right": { - "commentStart": 2602, - "end": 0, - "raw": "0.087", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.087, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 2611, - "end": 0, - "name": { - "commentStart": 2611, - "end": 0, - "name": "railHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, + "raw": "1", "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } }, - "operator": "+", + "operator": "-", "right": { - "commentStart": 2624, - "computed": false, + "commentStart": 0, "end": 0, - "object": { - "commentStart": 2624, - "end": 0, - "name": "originStart", - "start": 0, - "type": "Identifier", - "type": "Identifier" - }, - "property": { - "commentStart": 2636, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, + "raw": "0.087", "start": 0, - "type": "MemberExpression", - "type": "MemberExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.087, + "suffix": "None" + } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "railHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "originStart", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 2649, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 2652, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "edge14" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "edge14" + } } ], "callee": { "abs_path": false, - "commentStart": 2546, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2546, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -3430,29 +3385,30 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 2546, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2680, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2689, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 2690, + "commentStart": 0, "end": 0, "raw": "0.183", "start": 0, @@ -3463,7 +3419,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 2689, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3473,10 +3429,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2698, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2698, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -3495,14 +3451,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 2710, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2716, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3513,10 +3469,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 2674, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2674, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -3526,7 +3482,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 2674, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3538,17 +3494,17 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 2744, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2753, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2753, + "commentStart": 0, "end": 0, "raw": "0.087", "start": 0, @@ -3562,10 +3518,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2761, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2761, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -3584,14 +3540,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 2773, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2779, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3602,10 +3558,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 2738, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2738, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -3615,7 +3571,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 2738, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3627,17 +3583,17 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 2801, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2810, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2810, + "commentStart": 0, "end": 0, "raw": "0.06", "start": 0, @@ -3651,10 +3607,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2817, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2817, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -3673,10 +3629,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 2795, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2795, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -3686,7 +3642,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 2795, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3696,14 +3652,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 2840, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 2851, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2851, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -3712,7 +3668,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2864, + "commentStart": 0, "end": 0, "raw": "270", "start": 0, @@ -3725,10 +3681,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 2878, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2878, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -3737,7 +3693,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2889, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -3750,10 +3706,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 2902, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2902, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -3762,13 +3718,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2911, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2911, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2911, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -3781,7 +3737,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 2919, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -3799,10 +3755,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2923, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2923, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -3824,7 +3780,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 2944, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3833,10 +3789,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 2836, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2836, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -3846,7 +3802,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 2836, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3857,17 +3813,17 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 2960, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2969, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2969, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -3881,10 +3837,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2975, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2975, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -3903,10 +3859,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 2954, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2954, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -3916,7 +3872,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 2954, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3926,14 +3882,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 2998, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 3009, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3009, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -3942,7 +3898,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3022, + "commentStart": 0, "end": 0, "raw": "270", "start": 0, @@ -3955,10 +3911,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 3036, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3036, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -3967,7 +3923,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3047, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -3980,10 +3936,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 3060, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3060, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -3992,13 +3948,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3069, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3069, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3069, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -4011,7 +3967,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 3077, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -4029,10 +3985,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3081, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3081, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -4054,7 +4010,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 3102, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4063,10 +4019,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 2994, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2994, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -4076,7 +4032,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 2994, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4085,14 +4041,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 3149, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 3160, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3160, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -4101,7 +4057,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3173, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4114,10 +4070,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 3185, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3185, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -4126,7 +4082,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3196, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -4139,10 +4095,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 3209, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3209, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -4151,10 +4107,10 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3218, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3218, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -4168,10 +4124,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3224, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3224, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -4193,7 +4149,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 3245, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4202,10 +4158,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 3145, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3145, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -4215,7 +4171,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 3145, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4224,14 +4180,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 3259, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 3270, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3270, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -4240,7 +4196,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3283, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4253,10 +4209,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 3295, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3295, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -4266,7 +4222,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectProperty", "value": { "argument": { - "commentStart": 3307, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -4277,7 +4233,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 3306, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4286,10 +4242,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 3321, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3321, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -4298,13 +4254,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3330, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3330, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3330, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -4317,7 +4273,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 3338, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -4335,10 +4291,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3342, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3342, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -4360,7 +4316,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 3363, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4369,10 +4325,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 3255, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3255, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -4382,7 +4338,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 3255, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4393,18 +4349,18 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 3379, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3388, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 3389, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -4415,7 +4371,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 3388, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4425,10 +4381,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3395, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3395, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -4447,10 +4403,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 3373, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3373, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -4460,7 +4416,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 3373, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4470,14 +4426,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 3418, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 3429, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3429, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -4486,7 +4442,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3442, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4499,10 +4455,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 3454, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3454, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -4512,7 +4468,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectProperty", "value": { "argument": { - "commentStart": 3466, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -4523,7 +4479,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 3465, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4532,10 +4488,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 3480, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3480, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -4544,13 +4500,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3489, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3489, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3489, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -4563,7 +4519,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 3497, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -4581,10 +4537,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3501, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3501, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -4606,7 +4562,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 3522, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4615,10 +4571,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 3414, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3414, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -4628,7 +4584,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 3414, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4639,18 +4595,18 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 3538, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3547, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 3548, + "commentStart": 0, "end": 0, "raw": "0.06", "start": 0, @@ -4661,7 +4617,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 3547, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4671,10 +4627,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3555, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3555, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -4693,14 +4649,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 3567, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3573, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -4711,10 +4667,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 3532, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3532, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -4724,7 +4680,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 3532, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4736,18 +4692,18 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 3595, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3604, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 3605, + "commentStart": 0, "end": 0, "raw": "0.087", "start": 0, @@ -4758,7 +4714,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 3604, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4768,10 +4724,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3613, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3613, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -4790,14 +4746,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 3625, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3631, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -4808,10 +4764,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 3589, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3589, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -4821,7 +4777,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 3589, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4833,17 +4789,17 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 3653, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3662, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3662, + "commentStart": 0, "end": 0, "raw": "0.183", "start": 0, @@ -4857,10 +4813,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3670, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3670, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -4879,14 +4835,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 3682, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3688, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -4897,10 +4853,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 3647, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3647, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -4910,7 +4866,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 3647, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4920,110 +4876,66 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 3718, - "end": 0, - "properties": [ - { - "commentStart": 3729, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "45", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 45.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 3729, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3737, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - } - }, - { - "commentStart": 3750, - "end": 0, - "key": { - "commentStart": 3750, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3757, + "left": { + "commentStart": 0, "end": 0, "left": { - "commentStart": 3757, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3757, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3757, + "commentStart": 0, "end": 0, - "left": { - "commentStart": 3757, - "end": 0, - "left": { - "commentStart": 3757, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - "operator": "-", - "right": { - "commentStart": 3761, - "end": 0, - "raw": "0.356", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.356, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "/", - "right": { - "commentStart": 3770, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, + "raw": "1", "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } }, - "operator": "+", + "operator": "-", "right": { - "commentStart": 3774, + "commentStart": 0, "end": 0, "raw": "0.356", "start": 0, @@ -5038,22 +4950,18 @@ description: Result of parsing 80-20-rail.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "operator": "*", + "operator": "/", "right": { - "abs_path": false, - "commentStart": 3783, + "commentStart": 0, "end": 0, - "name": { - "commentStart": 3783, - "end": 0, - "name": "railHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], + "raw": "2", "start": 0, - "type": "Name", - "type": "Name" + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } }, "start": 0, "type": "BinaryExpression", @@ -5061,67 +4969,103 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "+", "right": { - "commentStart": 3796, - "computed": false, + "commentStart": 0, "end": 0, - "object": { - "commentStart": 3796, - "end": 0, - "name": "originStart", - "start": 0, - "type": "Identifier", - "type": "Identifier" - }, - "property": { - "commentStart": 3808, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, + "raw": "0.356", "start": 0, - "type": "MemberExpression", - "type": "MemberExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.356, + "suffix": "None" + } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "railHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "originStart", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 3821, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 3824, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "edge20" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "edge20" + } } ], "callee": { "abs_path": false, - "commentStart": 3704, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3704, + "commentStart": 0, "end": 0, - "name": "angledLineToY", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -5129,29 +5073,30 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 3704, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 3846, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3855, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 3856, + "commentStart": 0, "end": 0, "raw": "0.232", "start": 0, @@ -5162,7 +5107,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 3855, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5172,10 +5117,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3864, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3864, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -5194,14 +5139,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 3876, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3882, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -5212,10 +5157,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 3840, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3840, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -5225,7 +5170,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 3840, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5235,168 +5180,156 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 3912, - "end": 0, - "properties": [ - { - "commentStart": 3923, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "135", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 135.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 3923, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3931, - "end": 0, - "raw": "135", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 135.0, - "suffix": "None" - } - } - }, - { - "commentStart": 3945, - "end": 0, - "key": { - "commentStart": 3945, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3951, + "left": { + "commentStart": 0, "end": 0, "left": { - "commentStart": 3951, + "commentStart": 0, "end": 0, - "left": { - "commentStart": 3951, - "end": 0, - "left": { - "commentStart": 3951, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - "operator": "-", - "right": { - "commentStart": 3955, - "end": 0, - "raw": "0.087", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.087, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 3964, - "end": 0, - "name": { - "commentStart": 3964, - "end": 0, - "name": "railHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, + "raw": "1", "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } }, - "operator": "+", + "operator": "-", "right": { - "commentStart": 3977, - "computed": false, + "commentStart": 0, "end": 0, - "object": { - "commentStart": 3977, - "end": 0, - "name": "originStart", - "start": 0, - "type": "Identifier", - "type": "Identifier" - }, - "property": { - "commentStart": 3989, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, + "raw": "0.087", "start": 0, - "type": "MemberExpression", - "type": "MemberExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.087, + "suffix": "None" + } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "railHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "originStart", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 4002, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 4005, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "edge22" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "edge22" + } } ], "callee": { "abs_path": false, - "commentStart": 3898, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3898, + "commentStart": 0, "end": 0, - "name": "angledLineToY", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -5404,28 +5337,29 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 3898, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 4027, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4036, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4036, + "commentStart": 0, "end": 0, "raw": "0.183", "start": 0, @@ -5439,10 +5373,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4044, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4044, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -5461,14 +5395,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 4056, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4062, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -5479,10 +5413,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 4021, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4021, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -5492,7 +5426,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 4021, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5504,17 +5438,17 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 4084, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4093, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4093, + "commentStart": 0, "end": 0, "raw": "0.087", "start": 0, @@ -5528,10 +5462,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4101, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -5550,14 +5484,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 4113, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4119, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -5568,10 +5502,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 4078, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4078, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -5581,7 +5515,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 4078, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5593,18 +5527,18 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 4141, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4150, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 4151, + "commentStart": 0, "end": 0, "raw": "0.06", "start": 0, @@ -5615,7 +5549,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 4150, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5625,10 +5559,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4158, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4158, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -5647,10 +5581,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 4135, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4135, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -5660,7 +5594,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 4135, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5670,14 +5604,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 4181, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 4192, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4192, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -5686,7 +5620,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4205, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5699,10 +5633,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 4217, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4217, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -5712,7 +5646,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectProperty", "value": { "argument": { - "commentStart": 4229, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -5723,7 +5657,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 4228, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5732,10 +5666,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 4243, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4243, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -5744,13 +5678,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4252, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4252, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4252, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -5763,7 +5697,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 4260, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -5781,10 +5715,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4264, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4264, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -5806,7 +5740,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 4285, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5815,10 +5749,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 4177, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4177, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -5828,7 +5762,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 4177, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5839,18 +5773,18 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 4301, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4310, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 4311, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -5861,7 +5795,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 4310, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5871,10 +5805,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4317, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4317, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -5893,10 +5827,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 4295, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4295, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -5906,7 +5840,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 4295, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5916,14 +5850,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 4340, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 4351, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4351, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -5932,7 +5866,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4364, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5945,10 +5879,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 4376, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4376, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -5958,7 +5892,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectProperty", "value": { "argument": { - "commentStart": 4388, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -5969,7 +5903,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 4387, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5978,10 +5912,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 4402, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4402, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -5990,13 +5924,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4411, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4411, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4411, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -6009,7 +5943,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 4419, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -6027,10 +5961,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4423, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4423, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -6052,7 +5986,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 4444, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6061,10 +5995,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 4336, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4336, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -6074,7 +6008,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 4336, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6083,14 +6017,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 4458, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 4469, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4469, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -6099,7 +6033,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4482, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -6112,10 +6046,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 4495, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4495, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -6124,7 +6058,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4506, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -6137,10 +6071,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 4520, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4520, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -6149,10 +6083,10 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4529, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4529, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -6166,10 +6100,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4535, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4535, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -6191,7 +6125,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 4556, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6200,10 +6134,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 4454, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4454, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -6213,7 +6147,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 4454, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6222,14 +6156,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 4603, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 4614, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4614, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -6238,7 +6172,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4627, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -6251,10 +6185,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 4640, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4640, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -6264,7 +6198,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectProperty", "value": { "argument": { - "commentStart": 4652, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -6275,7 +6209,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 4651, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6284,10 +6218,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 4665, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4665, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -6296,13 +6230,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4674, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4674, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4674, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -6315,7 +6249,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 4682, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -6333,10 +6267,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4686, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4686, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -6358,7 +6292,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 4707, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6367,10 +6301,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 4599, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4599, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -6380,7 +6314,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 4599, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6391,18 +6325,18 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 4723, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4732, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 4733, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -6413,7 +6347,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 4732, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6423,10 +6357,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4739, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4739, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -6445,10 +6379,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 4717, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4717, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -6458,7 +6392,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 4717, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6468,14 +6402,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 4762, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 4773, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4773, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -6484,7 +6418,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4786, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -6497,10 +6431,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 4799, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4799, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -6510,7 +6444,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectProperty", "value": { "argument": { - "commentStart": 4811, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -6521,7 +6455,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 4810, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6530,10 +6464,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 4824, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4824, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -6542,13 +6476,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4833, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4833, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4833, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -6561,7 +6495,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 4841, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -6579,10 +6513,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4845, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4845, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -6604,7 +6538,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 4866, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6613,10 +6547,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 4758, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4758, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -6626,7 +6560,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 4758, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6637,18 +6571,18 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 4882, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4891, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 4892, + "commentStart": 0, "end": 0, "raw": "0.06", "start": 0, @@ -6659,7 +6593,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 4891, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6669,10 +6603,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4899, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4899, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -6691,14 +6625,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 4911, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4917, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -6709,10 +6643,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 4876, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4876, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -6722,7 +6656,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 4876, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6734,17 +6668,17 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 4939, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4948, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4948, + "commentStart": 0, "end": 0, "raw": "0.087", "start": 0, @@ -6758,10 +6692,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4956, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4956, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -6780,14 +6714,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 4968, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4974, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -6798,10 +6732,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 4933, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4933, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -6811,7 +6745,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 4933, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6823,17 +6757,17 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 4996, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5005, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5005, + "commentStart": 0, "end": 0, "raw": "0.183", "start": 0, @@ -6847,10 +6781,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5013, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5013, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -6869,14 +6803,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 5025, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5031, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -6887,10 +6821,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 4990, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4990, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -6900,7 +6834,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 4990, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6910,188 +6844,176 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 5061, - "end": 0, - "properties": [ - { - "commentStart": 5072, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "135", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 135.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 5072, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 5080, - "end": 0, - "raw": "135", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 135.0, - "suffix": "None" - } - } - }, - { - "commentStart": 5094, - "end": 0, - "key": { - "commentStart": 5094, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 5100, + "left": { + "commentStart": 0, "end": 0, "left": { - "commentStart": 5100, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5100, + "commentStart": 0, "end": 0, - "left": { - "commentStart": 5100, - "end": 0, - "left": { - "commentStart": 5100, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - "operator": "-", - "right": { - "commentStart": 5104, - "end": 0, - "raw": "0.356", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.356, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "/", - "right": { - "commentStart": 5113, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, + "raw": "1", "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } }, - "operator": "*", + "operator": "-", "right": { - "abs_path": false, - "commentStart": 5117, + "commentStart": 0, "end": 0, - "name": { - "commentStart": 5117, - "end": 0, - "name": "railHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], + "raw": "0.356", "start": 0, - "type": "Name", - "type": "Name" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.356, + "suffix": "None" + } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, - "operator": "+", + "operator": "/", "right": { - "commentStart": 5130, - "computed": false, + "commentStart": 0, "end": 0, - "object": { - "commentStart": 5130, - "end": 0, - "name": "originStart", - "start": 0, - "type": "Identifier", - "type": "Identifier" - }, - "property": { - "commentStart": 5142, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, + "raw": "2", "start": 0, - "type": "MemberExpression", - "type": "MemberExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "railHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "originStart", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 5155, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 5158, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "edge28" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "edge28" + } } ], "callee": { "abs_path": false, - "commentStart": 5047, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5047, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -7099,29 +7021,30 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 5047, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 5180, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5189, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 5190, + "commentStart": 0, "end": 0, "raw": "0.232", "start": 0, @@ -7132,7 +7055,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 5189, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7142,10 +7065,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5198, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5198, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -7164,14 +7087,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 5210, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5216, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -7182,10 +7105,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 5174, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5174, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -7195,7 +7118,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 5174, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7205,148 +7128,136 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 5246, - "end": 0, - "properties": [ - { - "commentStart": 5257, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "45", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 45.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 5257, + "left": { + "commentStart": 0, "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 5265, - "end": 0, - "raw": "45", + "raw": "0.087", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 45.0, + "value": 0.087, "suffix": "None" } - } - }, - { - "commentStart": 5278, - "end": 0, - "key": { - "commentStart": 5278, + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "to", + "name": { + "commentStart": 0, + "end": 0, + "name": "railHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 5283, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, "end": 0, - "left": { - "commentStart": 5283, - "end": 0, - "left": { - "commentStart": 5283, - "end": 0, - "raw": "0.087", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.087, - "suffix": "None" - } - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 5291, - "end": 0, - "name": { - "commentStart": 5291, - "end": 0, - "name": "railHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "commentStart": 5304, - "computed": false, - "end": 0, - "object": { - "commentStart": 5304, - "end": 0, - "name": "originStart", - "start": 0, - "type": "Identifier", - "type": "Identifier" - }, - "property": { - "commentStart": 5316, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - "start": 0, - "type": "MemberExpression", - "type": "MemberExpression" - }, + "name": "originStart", "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 5329, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 5332, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "edge30" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "edge30" + } } ], "callee": { "abs_path": false, - "commentStart": 5232, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5232, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -7354,28 +7265,29 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 5232, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 5354, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5363, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5363, + "commentStart": 0, "end": 0, "raw": "0.183", "start": 0, @@ -7389,10 +7301,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5371, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5371, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -7411,14 +7323,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 5383, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5389, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -7429,10 +7341,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 5348, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5348, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -7442,7 +7354,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 5348, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7454,18 +7366,18 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 5411, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5420, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 5421, + "commentStart": 0, "end": 0, "raw": "0.087", "start": 0, @@ -7476,7 +7388,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 5420, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7486,10 +7398,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5429, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5429, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -7508,14 +7420,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 5441, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5447, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -7526,10 +7438,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 5405, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5405, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -7539,7 +7451,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 5405, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7551,18 +7463,18 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 5469, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5478, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 5479, + "commentStart": 0, "end": 0, "raw": "0.06", "start": 0, @@ -7573,7 +7485,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 5478, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7583,10 +7495,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5486, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5486, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -7605,10 +7517,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 5463, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5463, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -7618,7 +7530,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 5463, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7628,14 +7540,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 5509, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 5520, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5520, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -7644,7 +7556,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 5533, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -7657,10 +7569,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 5546, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5546, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -7670,7 +7582,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectProperty", "value": { "argument": { - "commentStart": 5558, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -7681,7 +7593,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 5557, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7690,10 +7602,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 5571, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5571, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -7702,13 +7614,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 5580, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5580, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5580, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -7721,7 +7633,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 5588, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -7739,10 +7651,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5592, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5592, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -7764,7 +7676,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 5613, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -7773,10 +7685,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 5505, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5505, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -7786,7 +7698,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 5505, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7797,18 +7709,18 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 5629, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5638, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 5639, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -7819,7 +7731,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 5638, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7829,10 +7741,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5645, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5645, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -7851,10 +7763,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 5623, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5623, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -7864,7 +7776,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 5623, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7874,14 +7786,14 @@ description: Result of parsing 80-20-rail.kcl { "arguments": [ { - "commentStart": 5668, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 5679, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5679, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -7890,7 +7802,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 5692, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -7903,10 +7815,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 5705, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5705, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -7916,7 +7828,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectProperty", "value": { "argument": { - "commentStart": 5717, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -7927,7 +7839,7 @@ description: Result of parsing 80-20-rail.kcl "suffix": "None" } }, - "commentStart": 5716, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7936,10 +7848,10 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 5730, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5730, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -7948,13 +7860,13 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 5739, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5739, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5739, + "commentStart": 0, "end": 0, "raw": "0.072", "start": 0, @@ -7967,7 +7879,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 5747, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -7985,10 +7897,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5751, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5751, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -8010,7 +7922,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectExpression" }, { - "commentStart": 5772, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -8019,10 +7931,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 5664, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5664, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -8032,7 +7944,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 5664, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8042,10 +7954,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 5782, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5782, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -8055,7 +7967,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 5782, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8068,23 +7980,23 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 5857, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5866, + "commentStart": 0, "elements": [ { - "commentStart": 5879, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5879, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5879, + "commentStart": 0, "end": 0, "raw": ".5", "start": 0, @@ -8098,10 +8010,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5884, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5884, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -8118,11 +8030,11 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "+", "right": { - "commentStart": 5897, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5897, + "commentStart": 0, "end": 0, "name": "originStart", "start": 0, @@ -8130,7 +8042,7 @@ description: Result of parsing 80-20-rail.kcl "type": "Identifier" }, "property": { - "commentStart": 5909, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -8150,13 +8062,13 @@ description: Result of parsing 80-20-rail.kcl "type": "BinaryExpression" }, { - "commentStart": 5924, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5924, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5924, + "commentStart": 0, "end": 0, "raw": ".5", "start": 0, @@ -8170,10 +8082,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5929, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5929, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -8190,11 +8102,11 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "+", "right": { - "commentStart": 5942, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5942, + "commentStart": 0, "end": 0, "name": "originStart", "start": 0, @@ -8202,7 +8114,7 @@ description: Result of parsing 80-20-rail.kcl "type": "Identifier" }, "property": { - "commentStart": 5954, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -8231,20 +8143,20 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 5978, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5987, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5987, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5987, + "commentStart": 0, "end": 0, "raw": ".205", "start": 0, @@ -8258,10 +8170,10 @@ description: Result of parsing 80-20-rail.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5994, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5994, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -8278,7 +8190,7 @@ description: Result of parsing 80-20-rail.kcl }, "operator": "/", "right": { - "commentStart": 6007, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -8297,10 +8209,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 5840, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5840, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -8310,7 +8222,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 5840, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8318,7 +8230,7 @@ description: Result of parsing 80-20-rail.kcl "unlabeled": null }, { - "commentStart": 6020, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -8327,10 +8239,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 5835, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5835, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -8340,7 +8252,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 5835, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8351,7 +8263,7 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 6038, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -8359,10 +8271,10 @@ description: Result of parsing 80-20-rail.kcl }, "arg": { "abs_path": false, - "commentStart": 6047, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6047, + "commentStart": 0, "end": 0, "name": "railLength", "start": 0, @@ -8377,10 +8289,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6030, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6030, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -8390,7 +8302,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6030, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8402,14 +8314,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 6083, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6092, + "commentStart": 0, "end": 0, "raw": "0.06", "start": 0, @@ -8424,23 +8336,23 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 6107, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6114, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 6147, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6147, + "commentStart": 0, "end": 0, "name": "edge3", "start": 0, @@ -8454,10 +8366,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6127, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6127, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -8467,7 +8379,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6127, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8477,10 +8389,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6186, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6186, + "commentStart": 0, "end": 0, "name": "edge4", "start": 0, @@ -8494,10 +8406,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6166, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6166, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -8507,7 +8419,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6166, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8517,10 +8429,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6225, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6225, + "commentStart": 0, "end": 0, "name": "edge5", "start": 0, @@ -8534,10 +8446,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6205, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6205, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -8547,7 +8459,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6205, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8557,10 +8469,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6264, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6264, + "commentStart": 0, "end": 0, "name": "edge6", "start": 0, @@ -8574,10 +8486,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6244, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6244, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -8587,7 +8499,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6244, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8597,10 +8509,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6303, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6303, + "commentStart": 0, "end": 0, "name": "edge11", "start": 0, @@ -8614,10 +8526,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6283, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6283, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -8627,7 +8539,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6283, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8637,10 +8549,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6343, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6343, + "commentStart": 0, "end": 0, "name": "edge12", "start": 0, @@ -8654,10 +8566,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6323, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6323, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -8667,7 +8579,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6323, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8677,10 +8589,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6383, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6383, + "commentStart": 0, "end": 0, "name": "edge13", "start": 0, @@ -8694,10 +8606,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6363, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6363, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -8707,7 +8619,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6363, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8717,10 +8629,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6423, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6423, + "commentStart": 0, "end": 0, "name": "edge14", "start": 0, @@ -8734,10 +8646,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6403, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6403, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -8747,7 +8659,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6403, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8757,10 +8669,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6463, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6463, + "commentStart": 0, "end": 0, "name": "edge19", "start": 0, @@ -8774,10 +8686,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6443, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6443, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -8787,7 +8699,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6443, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8797,10 +8709,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6503, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6503, + "commentStart": 0, "end": 0, "name": "edge20", "start": 0, @@ -8814,10 +8726,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6483, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6483, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -8827,7 +8739,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6483, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8837,10 +8749,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6543, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6543, + "commentStart": 0, "end": 0, "name": "edge21", "start": 0, @@ -8854,10 +8766,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6523, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6523, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -8867,7 +8779,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6523, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8877,10 +8789,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6583, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6583, + "commentStart": 0, "end": 0, "name": "edge22", "start": 0, @@ -8894,10 +8806,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6563, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6563, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -8907,7 +8819,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6563, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8917,10 +8829,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6623, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6623, + "commentStart": 0, "end": 0, "name": "edge27", "start": 0, @@ -8934,10 +8846,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6603, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6603, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -8947,7 +8859,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6603, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8957,10 +8869,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6663, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6663, + "commentStart": 0, "end": 0, "name": "edge28", "start": 0, @@ -8974,10 +8886,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6643, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6643, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -8987,7 +8899,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6643, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8997,10 +8909,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6703, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6703, + "commentStart": 0, "end": 0, "name": "edge29", "start": 0, @@ -9014,10 +8926,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6683, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6683, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9027,7 +8939,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6683, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9037,10 +8949,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6743, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6743, + "commentStart": 0, "end": 0, "name": "edge30", "start": 0, @@ -9054,10 +8966,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6723, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6723, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9067,7 +8979,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6723, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9083,10 +8995,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6066, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6066, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -9096,7 +9008,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6066, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9108,14 +9020,14 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 6796, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6805, + "commentStart": 0, "end": 0, "raw": "0.03", "start": 0, @@ -9130,23 +9042,23 @@ description: Result of parsing 80-20-rail.kcl { "type": "LabeledArg", "label": { - "commentStart": 6820, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6827, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 6860, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6860, + "commentStart": 0, "end": 0, "name": "edge1", "start": 0, @@ -9160,10 +9072,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6840, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6840, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9173,7 +9085,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6840, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9183,10 +9095,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6899, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6899, + "commentStart": 0, "end": 0, "name": "edge2", "start": 0, @@ -9200,10 +9112,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6879, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6879, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9213,7 +9125,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6879, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9223,10 +9135,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6938, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6938, + "commentStart": 0, "end": 0, "name": "edge7", "start": 0, @@ -9240,10 +9152,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6918, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6918, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9253,7 +9165,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6918, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9263,10 +9175,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 6977, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6977, + "commentStart": 0, "end": 0, "name": "edge8", "start": 0, @@ -9280,10 +9192,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6957, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6957, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9293,7 +9205,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6957, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9303,10 +9215,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 7016, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7016, + "commentStart": 0, "end": 0, "name": "edge9", "start": 0, @@ -9320,10 +9232,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6996, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6996, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9333,7 +9245,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6996, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9343,10 +9255,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 7055, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7055, + "commentStart": 0, "end": 0, "name": "edge10", "start": 0, @@ -9360,10 +9272,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 7035, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7035, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9373,7 +9285,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 7035, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9383,10 +9295,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 7095, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7095, + "commentStart": 0, "end": 0, "name": "edge15", "start": 0, @@ -9400,10 +9312,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 7075, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7075, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9413,7 +9325,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 7075, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9423,10 +9335,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 7135, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7135, + "commentStart": 0, "end": 0, "name": "edge16", "start": 0, @@ -9440,10 +9352,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 7115, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7115, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9453,7 +9365,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 7115, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9463,10 +9375,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 7175, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7175, + "commentStart": 0, "end": 0, "name": "edge17", "start": 0, @@ -9480,10 +9392,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 7155, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7155, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9493,7 +9405,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 7155, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9503,10 +9415,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 7215, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7215, + "commentStart": 0, "end": 0, "name": "edge18", "start": 0, @@ -9520,10 +9432,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 7195, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7195, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9533,7 +9445,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 7195, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9543,10 +9455,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 7255, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7255, + "commentStart": 0, "end": 0, "name": "edge23", "start": 0, @@ -9560,10 +9472,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 7235, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7235, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9573,7 +9485,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 7235, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9583,10 +9495,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 7295, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7295, + "commentStart": 0, "end": 0, "name": "edge24", "start": 0, @@ -9600,10 +9512,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 7275, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7275, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9613,7 +9525,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 7275, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9623,10 +9535,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 7335, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7335, + "commentStart": 0, "end": 0, "name": "edge25", "start": 0, @@ -9640,10 +9552,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 7315, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7315, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9653,7 +9565,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 7315, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9663,10 +9575,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 7375, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7375, + "commentStart": 0, "end": 0, "name": "edge26", "start": 0, @@ -9680,10 +9592,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 7355, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7355, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9693,7 +9605,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 7355, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9703,10 +9615,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 7415, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7415, + "commentStart": 0, "end": 0, "name": "edge31", "start": 0, @@ -9720,10 +9632,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 7395, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7395, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9733,7 +9645,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 7395, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9743,10 +9655,10 @@ description: Result of parsing 80-20-rail.kcl "arguments": [ { "abs_path": false, - "commentStart": 7455, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7455, + "commentStart": 0, "end": 0, "name": "edge32", "start": 0, @@ -9760,10 +9672,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 7435, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7435, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -9773,7 +9685,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 7435, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9789,10 +9701,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 6779, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6779, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -9802,7 +9714,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 6779, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9810,13 +9722,13 @@ description: Result of parsing 80-20-rail.kcl "unlabeled": null } ], - "commentStart": 323, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "18": [ { - "commentStart": 1842, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9829,7 +9741,7 @@ description: Result of parsing 80-20-rail.kcl ], "24": [ { - "commentStart": 2318, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9842,7 +9754,7 @@ description: Result of parsing 80-20-rail.kcl ], "25": [ { - "commentStart": 2465, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9855,7 +9767,7 @@ description: Result of parsing 80-20-rail.kcl ], "26": [ { - "commentStart": 2532, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9868,7 +9780,7 @@ description: Result of parsing 80-20-rail.kcl ], "27": [ { - "commentStart": 2660, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9881,7 +9793,7 @@ description: Result of parsing 80-20-rail.kcl ], "28": [ { - "commentStart": 2724, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9894,7 +9806,7 @@ description: Result of parsing 80-20-rail.kcl ], "33": [ { - "commentStart": 3108, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9907,7 +9819,7 @@ description: Result of parsing 80-20-rail.kcl ], "50": [ { - "commentStart": 4562, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9920,7 +9832,7 @@ description: Result of parsing 80-20-rail.kcl ], "66": [ { - "commentStart": 5793, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9953,10 +9865,10 @@ description: Result of parsing 80-20-rail.kcl { "argument": { "abs_path": false, - "commentStart": 7493, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7493, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -9967,24 +9879,24 @@ description: Result of parsing 80-20-rail.kcl "type": "Name", "type": "Name" }, - "commentStart": 7486, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 278, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 239, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 240, + "commentStart": 0, "end": 0, "name": "originStart", "start": 0, @@ -9994,7 +9906,7 @@ description: Result of parsing 80-20-rail.kcl { "type": "Parameter", "identifier": { - "commentStart": 253, + "commentStart": 0, "end": 0, "name": "railHeight", "start": 0, @@ -10004,7 +9916,7 @@ description: Result of parsing 80-20-rail.kcl { "type": "Parameter", "identifier": { - "commentStart": 265, + "commentStart": 0, "end": 0, "name": "railLength", "start": 0, @@ -10029,15 +9941,15 @@ description: Result of parsing 80-20-rail.kcl "type": "VariableDeclaration" }, { - "commentStart": 7504, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 7556, + "commentStart": 0, "elements": [ { - "commentStart": 7557, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -10049,7 +9961,7 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 7560, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -10067,7 +9979,7 @@ description: Result of parsing 80-20-rail.kcl "type": "ArrayExpression" }, { - "commentStart": 7564, + "commentStart": 0, "end": 0, "raw": "1.5", "start": 0, @@ -10079,7 +9991,7 @@ description: Result of parsing 80-20-rail.kcl } }, { - "commentStart": 7569, + "commentStart": 0, "end": 0, "raw": "48", "start": 0, @@ -10093,10 +10005,10 @@ description: Result of parsing 80-20-rail.kcl ], "callee": { "abs_path": false, - "commentStart": 7547, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7547, + "commentStart": 0, "end": 0, "name": "rail8020", "start": 0, @@ -10106,7 +10018,7 @@ description: Result of parsing 80-20-rail.kcl "start": 0, "type": "Name" }, - "commentStart": 7547, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -10129,7 +10041,7 @@ description: Result of parsing 80-20-rail.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 150, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -10144,10 +10056,10 @@ description: Result of parsing 80-20-rail.kcl ], "properties": [ { - "commentStart": 159, + "commentStart": 0, "end": 0, "key": { - "commentStart": 159, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -10157,10 +10069,10 @@ description: Result of parsing 80-20-rail.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 179, + "commentStart": 0, "end": 0, "name": { - "commentStart": 179, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -10181,7 +10093,7 @@ description: Result of parsing 80-20-rail.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 182, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/80-20-rail/ops.snap b/rust/kcl-lib/tests/kcl_samples/80-20-rail/ops.snap index 377439841..611686853 100644 --- a/rust/kcl-lib/tests/kcl_samples/80-20-rail/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/80-20-rail/ops.snap @@ -10,7 +10,7 @@ description: Operations executed 80-20-rail.kcl "name": "rail8020", "functionSourceRange": [ 239, - 7504, + 7352, 0 ], "unlabeledArg": null, @@ -20,7 +20,7 @@ description: Operations executed 80-20-rail.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/kcl_samples/ball-bearing/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/ball-bearing/artifact_commands.snap index 38bd16c17..8d946f7cc 100644 --- a/rust/kcl-lib/tests/kcl_samples/ball-bearing/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/ball-bearing/artifact_commands.snap @@ -269,7 +269,8 @@ description: Artifact commands ball-bearing.kcl "type": "extrude", "target": "[uuid]", "distance": 0.313, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -458,7 +459,8 @@ description: Artifact commands ball-bearing.kcl "unit": "degrees", "value": 360.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -695,7 +697,8 @@ description: Artifact commands ball-bearing.kcl "unit": "degrees", "value": 360.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -938,7 +941,8 @@ description: Artifact commands ball-bearing.kcl "unit": "degrees", "value": 36.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -1231,7 +1235,8 @@ description: Artifact commands ball-bearing.kcl "type": "extrude", "target": "[uuid]", "distance": 0.313, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/ball-bearing/ast.snap b/rust/kcl-lib/tests/kcl_samples/ball-bearing/ast.snap index 1566c7874..4423b008f 100644 --- a/rust/kcl-lib/tests/kcl_samples/ball-bearing/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/ball-bearing/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing ball-bearing.kcl "Ok": { "body": [ { - "commentStart": 295, + "commentStart": 0, "declaration": { - "commentStart": 318, + "commentStart": 0, "end": 0, "id": { - "commentStart": 318, + "commentStart": 0, "end": 0, "name": "outsideDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 336, + "commentStart": 0, "end": 0, "raw": "1.625", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 342, + "commentStart": 0, "declaration": { - "commentStart": 342, + "commentStart": 0, "end": 0, "id": { - "commentStart": 342, + "commentStart": 0, "end": 0, "name": "sphereDia", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 354, + "commentStart": 0, "end": 0, "raw": "0.25", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 359, + "commentStart": 0, "declaration": { - "commentStart": 359, + "commentStart": 0, "end": 0, "id": { - "commentStart": 359, + "commentStart": 0, "end": 0, "name": "shaftDia", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 370, + "commentStart": 0, "end": 0, "raw": "0.75", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 375, + "commentStart": 0, "declaration": { - "commentStart": 375, + "commentStart": 0, "end": 0, "id": { - "commentStart": 375, + "commentStart": 0, "end": 0, "name": "overallThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 394, + "commentStart": 0, "end": 0, "raw": "0.313", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 400, + "commentStart": 0, "declaration": { - "commentStart": 400, + "commentStart": 0, "end": 0, "id": { - "commentStart": 400, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 416, + "commentStart": 0, "end": 0, "raw": "0.100", "start": 0, @@ -174,19 +174,19 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 422, + "commentStart": 0, "declaration": { - "commentStart": 422, + "commentStart": 0, "end": 0, "id": { - "commentStart": 422, + "commentStart": 0, "end": 0, "name": "overHangLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 439, + "commentStart": 0, "end": 0, "raw": ".3", "start": 0, @@ -207,19 +207,19 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 442, + "commentStart": 0, "declaration": { - "commentStart": 442, + "commentStart": 0, "end": 0, "id": { - "commentStart": 442, + "commentStart": 0, "end": 0, "name": "nBalls", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 451, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -240,26 +240,26 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 454, + "commentStart": 0, "declaration": { - "commentStart": 454, + "commentStart": 0, "end": 0, "id": { - "commentStart": 454, + "commentStart": 0, "end": 0, "name": "chainWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 467, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 467, + "commentStart": 0, "end": 0, "name": { - "commentStart": 467, + "commentStart": 0, "end": 0, "name": "sphereDia", "start": 0, @@ -272,7 +272,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 479, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -297,26 +297,26 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 481, + "commentStart": 0, "declaration": { - "commentStart": 481, + "commentStart": 0, "end": 0, "id": { - "commentStart": 481, + "commentStart": 0, "end": 0, "name": "chainThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 498, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 498, + "commentStart": 0, "end": 0, "name": { - "commentStart": 498, + "commentStart": 0, "end": 0, "name": "sphereDia", "start": 0, @@ -329,7 +329,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 510, + "commentStart": 0, "end": 0, "raw": "8", "start": 0, @@ -354,26 +354,26 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 512, + "commentStart": 0, "declaration": { - "commentStart": 512, + "commentStart": 0, "end": 0, "id": { - "commentStart": 512, + "commentStart": 0, "end": 0, "name": "linkDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 527, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 527, + "commentStart": 0, "end": 0, "name": { - "commentStart": 527, + "commentStart": 0, "end": 0, "name": "sphereDia", "start": 0, @@ -386,7 +386,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 539, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -411,12 +411,12 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 540, + "commentStart": 0, "declaration": { - "commentStart": 577, + "commentStart": 0, "end": 0, "id": { - "commentStart": 577, + "commentStart": 0, "end": 0, "name": "insideWallSketch", "start": 0, @@ -431,22 +431,22 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 626, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 635, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 636, + "commentStart": 0, "end": 0, "name": { - "commentStart": 636, + "commentStart": 0, "end": 0, "name": "overallThickness", "start": 0, @@ -457,7 +457,7 @@ description: Result of parsing ball-bearing.kcl "type": "Name", "type": "Name" }, - "commentStart": 635, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -466,7 +466,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 655, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -485,10 +485,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 610, + "commentStart": 0, "end": 0, "name": { - "commentStart": 610, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -498,17 +498,17 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 610, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 622, + "commentStart": 0, "end": 0, "name": { - "commentStart": 622, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -523,10 +523,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 596, + "commentStart": 0, "end": 0, "name": { - "commentStart": 596, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -536,7 +536,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 596, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -547,17 +547,17 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 671, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 680, + "commentStart": 0, "elements": [ { - "commentStart": 681, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -569,7 +569,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 684, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -590,24 +590,24 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 688, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 697, + "commentStart": 0, "end": 0, "left": { - "commentStart": 697, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 697, + "commentStart": 0, "end": 0, "name": { - "commentStart": 697, + "commentStart": 0, "end": 0, "name": "shaftDia", "start": 0, @@ -620,7 +620,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 708, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -638,10 +638,10 @@ description: Result of parsing ball-bearing.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 712, + "commentStart": 0, "end": 0, "name": { - "commentStart": 712, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -660,10 +660,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 664, + "commentStart": 0, "end": 0, "name": { - "commentStart": 664, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -673,7 +673,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 664, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -687,17 +687,17 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 744, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 753, + "commentStart": 0, "elements": [ { - "commentStart": 754, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -709,7 +709,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 757, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -730,21 +730,21 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 761, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 770, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 770, + "commentStart": 0, "end": 0, "name": { - "commentStart": 770, + "commentStart": 0, "end": 0, "name": "shaftDia", "start": 0, @@ -757,7 +757,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 781, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -776,10 +776,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 737, + "commentStart": 0, "end": 0, "name": { - "commentStart": 737, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -789,7 +789,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 737, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -797,7 +797,7 @@ description: Result of parsing ball-bearing.kcl "unlabeled": null }, { - "commentStart": 785, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -806,10 +806,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 732, + "commentStart": 0, "end": 0, "name": { - "commentStart": 732, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -819,20 +819,20 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 732, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 596, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "commentStart": 787, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -865,12 +865,12 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 825, + "commentStart": 0, "declaration": { - "commentStart": 825, + "commentStart": 0, "end": 0, "id": { - "commentStart": 825, + "commentStart": 0, "end": 0, "name": "insideWall", "start": 0, @@ -881,7 +881,7 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 864, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -889,10 +889,10 @@ description: Result of parsing ball-bearing.kcl }, "arg": { "abs_path": false, - "commentStart": 873, + "commentStart": 0, "end": 0, "name": { - "commentStart": 873, + "commentStart": 0, "end": 0, "name": "overallThickness", "start": 0, @@ -907,10 +907,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 838, + "commentStart": 0, "end": 0, "name": { - "commentStart": 838, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -920,17 +920,17 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 838, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 846, + "commentStart": 0, "end": 0, "name": { - "commentStart": 846, + "commentStart": 0, "end": 0, "name": "insideWallSketch", "start": 0, @@ -952,12 +952,12 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 890, + "commentStart": 0, "declaration": { - "commentStart": 933, + "commentStart": 0, "end": 0, "id": { - "commentStart": 933, + "commentStart": 0, "end": 0, "name": "ballsSketch", "start": 0, @@ -969,10 +969,10 @@ description: Result of parsing ball-bearing.kcl "arguments": [ { "abs_path": false, - "commentStart": 961, + "commentStart": 0, "end": 0, "name": { - "commentStart": 961, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -986,10 +986,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 947, + "commentStart": 0, "end": 0, "name": { - "commentStart": 947, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -999,7 +999,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 947, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1008,20 +1008,20 @@ description: Result of parsing ball-bearing.kcl { "arguments": [ { - "commentStart": 985, + "commentStart": 0, "elements": [ { - "commentStart": 986, + "commentStart": 0, "end": 0, "left": { - "commentStart": 986, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 986, + "commentStart": 0, "end": 0, "name": { - "commentStart": 986, + "commentStart": 0, "end": 0, "name": "shaftDia", "start": 0, @@ -1034,7 +1034,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 997, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1052,10 +1052,10 @@ description: Result of parsing ball-bearing.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1001, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1001, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -1071,7 +1071,7 @@ description: Result of parsing ball-bearing.kcl "type": "BinaryExpression" }, { - "commentStart": 1016, + "commentStart": 0, "end": 0, "raw": "0.001", "start": 0, @@ -1089,7 +1089,7 @@ description: Result of parsing ball-bearing.kcl "type": "ArrayExpression" }, { - "commentStart": 1024, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1098,10 +1098,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 970, + "commentStart": 0, "end": 0, "name": { - "commentStart": 970, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1111,7 +1111,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 970, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1120,14 +1120,14 @@ description: Result of parsing ball-bearing.kcl { "arguments": [ { - "commentStart": 1036, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1045, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1045, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -1136,7 +1136,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1056, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1149,10 +1149,10 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 1066, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1066, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -1161,7 +1161,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1079, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -1174,10 +1174,10 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 1091, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1091, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -1186,14 +1186,14 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1100, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1100, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1100, + "commentStart": 0, "end": 0, "name": "sphereDia", "start": 0, @@ -1206,7 +1206,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 1112, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1228,7 +1228,7 @@ description: Result of parsing ball-bearing.kcl "type": "ObjectExpression" }, { - "commentStart": 1122, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1237,10 +1237,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 1032, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1032, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -1250,7 +1250,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 1032, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1260,10 +1260,10 @@ description: Result of parsing ball-bearing.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1130, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1130, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1273,20 +1273,20 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 1130, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 947, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "3": [ { - "commentStart": 1137, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1319,12 +1319,12 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 1211, + "commentStart": 0, "declaration": { - "commentStart": 1211, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1211, + "commentStart": 0, "end": 0, "name": "balls", "start": 0, @@ -1337,7 +1337,7 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 1240, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -1345,10 +1345,10 @@ description: Result of parsing ball-bearing.kcl }, "arg": { "abs_path": false, - "commentStart": 1247, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1247, + "commentStart": 0, "end": 0, "name": "X", "start": 0, @@ -1363,10 +1363,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 1219, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1219, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -1376,17 +1376,17 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 1219, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1227, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1227, + "commentStart": 0, "end": 0, "name": "ballsSketch", "start": 0, @@ -1403,14 +1403,14 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 1281, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1294, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -1425,17 +1425,17 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 1306, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1313, + "commentStart": 0, "elements": [ { - "commentStart": 1314, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1447,7 +1447,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 1317, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1459,7 +1459,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 1320, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1480,17 +1480,17 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 1331, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1340, + "commentStart": 0, "elements": [ { - "commentStart": 1341, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1502,7 +1502,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 1344, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1514,7 +1514,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 1347, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1535,7 +1535,7 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 1358, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -1543,10 +1543,10 @@ description: Result of parsing ball-bearing.kcl }, "arg": { "abs_path": false, - "commentStart": 1370, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1370, + "commentStart": 0, "end": 0, "name": "nBalls", "start": 0, @@ -1561,14 +1561,14 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 1385, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1404, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -1580,10 +1580,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 1255, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1255, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -1593,7 +1593,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 1255, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1601,13 +1601,13 @@ description: Result of parsing ball-bearing.kcl "unlabeled": null } ], - "commentStart": 1219, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 1416, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1635,12 +1635,12 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 1470, + "commentStart": 0, "declaration": { - "commentStart": 1470, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1470, + "commentStart": 0, "end": 0, "name": "chainSketch", "start": 0, @@ -1652,10 +1652,10 @@ description: Result of parsing ball-bearing.kcl "arguments": [ { "abs_path": false, - "commentStart": 1498, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1498, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -1669,10 +1669,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 1484, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1484, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1682,7 +1682,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 1484, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1691,26 +1691,26 @@ description: Result of parsing ball-bearing.kcl { "arguments": [ { - "commentStart": 1522, + "commentStart": 0, "elements": [ { - "commentStart": 1531, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1531, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1531, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1531, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1531, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1531, + "commentStart": 0, "end": 0, "name": "shaftDia", "start": 0, @@ -1723,7 +1723,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 1542, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1741,10 +1741,10 @@ description: Result of parsing ball-bearing.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1546, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1546, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -1761,14 +1761,14 @@ description: Result of parsing ball-bearing.kcl }, "operator": "+", "right": { - "commentStart": 1562, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1562, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1562, + "commentStart": 0, "end": 0, "name": "sphereDia", "start": 0, @@ -1781,7 +1781,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 1574, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1802,14 +1802,14 @@ description: Result of parsing ball-bearing.kcl }, "operator": "-", "right": { - "commentStart": 1579, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1579, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1579, + "commentStart": 0, "end": 0, "name": "chainWidth", "start": 0, @@ -1822,7 +1822,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 1592, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1842,10 +1842,10 @@ description: Result of parsing ball-bearing.kcl "type": "BinaryExpression" }, { - "commentStart": 1603, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1603, + "commentStart": 0, "end": 0, "raw": "0.125", "start": 0, @@ -1862,7 +1862,7 @@ description: Result of parsing ball-bearing.kcl { "arguments": [ { - "commentStart": 1625, + "commentStart": 0, "end": 0, "raw": "60", "start": 0, @@ -1876,10 +1876,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 1615, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1615, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -1889,7 +1889,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 1615, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1898,10 +1898,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 1611, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1611, + "commentStart": 0, "end": 0, "name": "sin", "start": 0, @@ -1911,7 +1911,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 1611, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1928,7 +1928,7 @@ description: Result of parsing ball-bearing.kcl "type": "ArrayExpression" }, { - "commentStart": 1638, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1937,10 +1937,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 1507, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1507, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1950,7 +1950,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 1507, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1959,14 +1959,14 @@ description: Result of parsing ball-bearing.kcl { "arguments": [ { - "commentStart": 1650, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1659, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1659, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -1975,7 +1975,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1670, + "commentStart": 0, "end": 0, "raw": "60", "start": 0, @@ -1988,10 +1988,10 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 1681, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1681, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -2000,7 +2000,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1694, + "commentStart": 0, "end": 0, "raw": "120", "start": 0, @@ -2013,10 +2013,10 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 1706, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1706, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2025,14 +2025,14 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1715, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1715, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1715, + "commentStart": 0, "end": 0, "name": "sphereDia", "start": 0, @@ -2045,7 +2045,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 1727, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2067,7 +2067,7 @@ description: Result of parsing ball-bearing.kcl "type": "ObjectExpression" }, { - "commentStart": 1737, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2076,10 +2076,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 1646, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1646, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -2089,7 +2089,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 1646, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2100,17 +2100,17 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 1750, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1756, + "commentStart": 0, "elements": [ { - "commentStart": 1757, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2123,10 +2123,10 @@ description: Result of parsing ball-bearing.kcl }, { "abs_path": false, - "commentStart": 1760, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1760, + "commentStart": 0, "end": 0, "name": "chainThickness", "start": 0, @@ -2147,10 +2147,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 1745, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1745, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2160,7 +2160,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 1745, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2172,22 +2172,22 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 1787, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1793, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 1795, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1795, + "commentStart": 0, "end": 0, "name": "chainWidth", "start": 0, @@ -2198,7 +2198,7 @@ description: Result of parsing ball-bearing.kcl "type": "Name", "type": "Name" }, - "commentStart": 1794, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2206,7 +2206,7 @@ description: Result of parsing ball-bearing.kcl "type": "UnaryExpression" }, { - "commentStart": 1807, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2227,10 +2227,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 1782, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1782, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2240,7 +2240,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 1782, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2251,10 +2251,10 @@ description: Result of parsing ball-bearing.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1816, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1816, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2264,20 +2264,20 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 1816, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1484, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "5": [ { - "commentStart": 1823, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2305,12 +2305,12 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 1853, + "commentStart": 0, "declaration": { - "commentStart": 1853, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1853, + "commentStart": 0, "end": 0, "name": "chainHead", "start": 0, @@ -2323,7 +2323,7 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 1886, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -2331,10 +2331,10 @@ description: Result of parsing ball-bearing.kcl }, "arg": { "abs_path": false, - "commentStart": 1893, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1893, + "commentStart": 0, "end": 0, "name": "X", "start": 0, @@ -2349,10 +2349,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 1865, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1865, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -2362,17 +2362,17 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 1865, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1873, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1873, + "commentStart": 0, "end": 0, "name": "chainSketch", "start": 0, @@ -2389,14 +2389,14 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 1927, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1940, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -2411,17 +2411,17 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 1952, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1959, + "commentStart": 0, "elements": [ { - "commentStart": 1960, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2433,7 +2433,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 1963, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2445,7 +2445,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 1966, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2466,17 +2466,17 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 1977, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1986, + "commentStart": 0, "elements": [ { - "commentStart": 1987, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2488,7 +2488,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 1990, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2500,7 +2500,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 1993, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2521,7 +2521,7 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2004, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -2529,10 +2529,10 @@ description: Result of parsing ball-bearing.kcl }, "arg": { "abs_path": false, - "commentStart": 2016, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2016, + "commentStart": 0, "end": 0, "name": "nBalls", "start": 0, @@ -2547,14 +2547,14 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2031, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2050, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -2566,10 +2566,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 1901, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1901, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -2579,7 +2579,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 1901, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2587,13 +2587,13 @@ description: Result of parsing ball-bearing.kcl "unlabeled": null } ], - "commentStart": 1865, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 2062, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2621,12 +2621,12 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 2121, + "commentStart": 0, "declaration": { - "commentStart": 2121, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2121, + "commentStart": 0, "end": 0, "name": "linkSketch", "start": 0, @@ -2638,10 +2638,10 @@ description: Result of parsing ball-bearing.kcl "arguments": [ { "abs_path": false, - "commentStart": 2148, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2148, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -2655,10 +2655,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 2134, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2134, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2668,7 +2668,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 2134, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2679,30 +2679,30 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2172, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2181, + "commentStart": 0, "elements": [ { - "commentStart": 2192, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2192, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2192, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2192, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2192, + "commentStart": 0, "end": 0, "name": "shaftDia", "start": 0, @@ -2715,7 +2715,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 2203, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2733,10 +2733,10 @@ description: Result of parsing ball-bearing.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2207, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2207, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -2753,14 +2753,14 @@ description: Result of parsing ball-bearing.kcl }, "operator": "+", "right": { - "commentStart": 2223, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2223, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2223, + "commentStart": 0, "end": 0, "name": "sphereDia", "start": 0, @@ -2773,7 +2773,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 2235, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2793,7 +2793,7 @@ description: Result of parsing ball-bearing.kcl "type": "BinaryExpression" }, { - "commentStart": 2247, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2814,21 +2814,21 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2266, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2275, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2275, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2275, + "commentStart": 0, "end": 0, "name": "linkDiameter", "start": 0, @@ -2841,7 +2841,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 2290, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2860,10 +2860,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 2157, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2157, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -2873,7 +2873,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 2157, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2881,13 +2881,13 @@ description: Result of parsing ball-bearing.kcl "unlabeled": null } ], - "commentStart": 2134, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 2299, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2915,12 +2915,12 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 2328, + "commentStart": 0, "declaration": { - "commentStart": 2328, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2328, + "commentStart": 0, "end": 0, "name": "linkRevolve", "start": 0, @@ -2933,7 +2933,7 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2362, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -2941,10 +2941,10 @@ description: Result of parsing ball-bearing.kcl }, "arg": { "abs_path": false, - "commentStart": 2369, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2369, + "commentStart": 0, "end": 0, "name": "Y", "start": 0, @@ -2959,17 +2959,17 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2372, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2380, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2380, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -2983,10 +2983,10 @@ description: Result of parsing ball-bearing.kcl "operator": "/", "right": { "abs_path": false, - "commentStart": 2386, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2386, + "commentStart": 0, "end": 0, "name": "nBalls", "start": 0, @@ -3005,10 +3005,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 2342, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2342, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -3018,17 +3018,17 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 2342, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2350, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2350, + "commentStart": 0, "end": 0, "name": "linkSketch", "start": 0, @@ -3045,14 +3045,14 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2425, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2438, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -3067,17 +3067,17 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2450, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2457, + "commentStart": 0, "elements": [ { - "commentStart": 2458, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3089,7 +3089,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 2461, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3101,7 +3101,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 2464, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3122,17 +3122,17 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2475, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2484, + "commentStart": 0, "elements": [ { - "commentStart": 2485, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3144,7 +3144,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 2488, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3156,7 +3156,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 2491, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3177,7 +3177,7 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2502, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -3185,10 +3185,10 @@ description: Result of parsing ball-bearing.kcl }, "arg": { "abs_path": false, - "commentStart": 2514, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2514, + "commentStart": 0, "end": 0, "name": "nBalls", "start": 0, @@ -3203,14 +3203,14 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2529, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2548, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -3222,10 +3222,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 2399, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2399, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -3235,7 +3235,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 2399, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3243,13 +3243,13 @@ description: Result of parsing ball-bearing.kcl "unlabeled": null } ], - "commentStart": 2342, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 2560, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3277,12 +3277,12 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 2605, + "commentStart": 0, "declaration": { - "commentStart": 2605, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2605, + "commentStart": 0, "end": 0, "name": "outsideWallSketch", "start": 0, @@ -3297,22 +3297,22 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2655, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2664, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 2665, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2665, + "commentStart": 0, "end": 0, "name": "overallThickness", "start": 0, @@ -3323,7 +3323,7 @@ description: Result of parsing ball-bearing.kcl "type": "Name", "type": "Name" }, - "commentStart": 2664, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3332,7 +3332,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 2684, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3351,10 +3351,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 2639, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2639, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -3364,17 +3364,17 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 2639, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2651, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2651, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -3389,10 +3389,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 2625, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2625, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -3402,7 +3402,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 2625, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3413,17 +3413,17 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2700, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2709, + "commentStart": 0, "elements": [ { - "commentStart": 2710, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3435,7 +3435,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 2713, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3456,21 +3456,21 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2717, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2726, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2726, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2726, + "commentStart": 0, "end": 0, "name": "outsideDiameter", "start": 0, @@ -3483,7 +3483,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 2744, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3502,10 +3502,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 2693, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2693, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -3515,7 +3515,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 2693, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3529,17 +3529,17 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2764, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2773, + "commentStart": 0, "elements": [ { - "commentStart": 2774, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3551,7 +3551,7 @@ description: Result of parsing ball-bearing.kcl } }, { - "commentStart": 2777, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3572,27 +3572,27 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2781, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2790, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2790, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2790, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2790, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2790, + "commentStart": 0, "end": 0, "name": "shaftDia", "start": 0, @@ -3605,7 +3605,7 @@ description: Result of parsing ball-bearing.kcl }, "operator": "/", "right": { - "commentStart": 2801, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3623,10 +3623,10 @@ description: Result of parsing ball-bearing.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2805, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2805, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -3644,10 +3644,10 @@ description: Result of parsing ball-bearing.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2821, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2821, + "commentStart": 0, "end": 0, "name": "sphereDia", "start": 0, @@ -3666,10 +3666,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 2757, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2757, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -3679,7 +3679,7 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 2757, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3687,7 +3687,7 @@ description: Result of parsing ball-bearing.kcl "unlabeled": null }, { - "commentStart": 2833, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3696,10 +3696,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 2752, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2752, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -3709,14 +3709,14 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 2752, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 2625, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -3732,12 +3732,12 @@ description: Result of parsing ball-bearing.kcl "type": "VariableDeclaration" }, { - "commentStart": 2835, + "commentStart": 0, "declaration": { - "commentStart": 2837, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2837, + "commentStart": 0, "end": 0, "name": "outsideWall", "start": 0, @@ -3748,7 +3748,7 @@ description: Result of parsing ball-bearing.kcl { "type": "LabeledArg", "label": { - "commentStart": 2878, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3756,10 +3756,10 @@ description: Result of parsing ball-bearing.kcl }, "arg": { "abs_path": false, - "commentStart": 2887, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2887, + "commentStart": 0, "end": 0, "name": "overallThickness", "start": 0, @@ -3774,10 +3774,10 @@ description: Result of parsing ball-bearing.kcl ], "callee": { "abs_path": false, - "commentStart": 2851, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2851, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3787,17 +3787,17 @@ description: Result of parsing ball-bearing.kcl "start": 0, "type": "Name" }, - "commentStart": 2851, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2859, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2859, + "commentStart": 0, "end": 0, "name": "outsideWallSketch", "start": 0, @@ -3826,7 +3826,7 @@ description: Result of parsing ball-bearing.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 263, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -3841,10 +3841,10 @@ description: Result of parsing ball-bearing.kcl ], "properties": [ { - "commentStart": 272, + "commentStart": 0, "end": 0, "key": { - "commentStart": 272, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -3854,10 +3854,10 @@ description: Result of parsing ball-bearing.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 292, + "commentStart": 0, "end": 0, "name": { - "commentStart": 292, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -3878,7 +3878,7 @@ description: Result of parsing ball-bearing.kcl "nonCodeNodes": { "18": [ { - "commentStart": 2835, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3890,7 +3890,7 @@ description: Result of parsing ball-bearing.kcl }, "startNodes": [ { - "commentStart": 295, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/ball-bearing/ops.snap b/rust/kcl-lib/tests/kcl_samples/ball-bearing/ops.snap index 7fd60aec2..40b7850a0 100644 --- a/rust/kcl-lib/tests/kcl_samples/ball-bearing/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/ball-bearing/ops.snap @@ -10,7 +10,13 @@ description: Operations executed ball-bearing.kcl "type": "Number", "value": -0.1565, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -29,7 +35,7 @@ description: Operations executed ball-bearing.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -102,7 +108,7 @@ description: Operations executed ball-bearing.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -357,7 +363,7 @@ description: Operations executed ball-bearing.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -630,7 +636,7 @@ description: Operations executed ball-bearing.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -666,7 +672,13 @@ description: Operations executed ball-bearing.kcl "type": "Number", "value": 36.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -900,7 +912,13 @@ description: Operations executed ball-bearing.kcl "type": "Number", "value": -0.1565, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -919,7 +937,7 @@ description: Operations executed ball-bearing.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/kcl_samples/ball-bearing/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/ball-bearing/program_memory.snap index 43f8770ec..591736a1d 100644 --- a/rust/kcl-lib/tests/kcl_samples/ball-bearing/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/ball-bearing/program_memory.snap @@ -85,22 +85,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -217,22 +229,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -349,22 +373,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -481,22 +517,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -613,22 +661,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -745,22 +805,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -877,22 +949,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1009,22 +1093,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1141,22 +1237,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1273,22 +1381,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1387,22 +1507,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1567,22 +1699,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1751,22 +1895,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1935,22 +2091,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2119,22 +2287,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2303,22 +2483,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2487,22 +2679,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2671,22 +2875,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2855,22 +3071,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -3039,22 +3267,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -3223,22 +3463,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -3375,22 +3627,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -3425,14 +3689,26 @@ description: Variables in memory after executing ball-bearing.kcl "type": "Number", "value": 0.0313, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "chainWidth": { "type": "Number", "value": 0.125, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "insideWall": { @@ -3488,22 +3764,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": -0.1565 + "z": -0.1565, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -3581,22 +3869,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": -0.1565 + "z": -0.1565, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -3631,7 +3931,13 @@ description: Variables in memory after executing ball-bearing.kcl "type": "Number", "value": 0.0625, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "linkRevolve": { @@ -3690,22 +3996,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -3796,22 +4114,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -3902,22 +4232,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -4008,22 +4350,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -4114,22 +4468,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -4220,22 +4586,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -4326,22 +4704,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -4432,22 +4822,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -4538,22 +4940,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -4644,22 +5058,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -4739,22 +5165,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -4864,22 +5302,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": -0.1565 + "z": -0.1565, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -4957,22 +5407,34 @@ description: Variables in memory after executing ball-bearing.kcl "origin": { "x": 0.0, "y": 0.0, - "z": -0.1565 + "z": -0.1565, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" diff --git a/rust/kcl-lib/tests/kcl_samples/bench/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/bench/artifact_commands.snap index a9d90dc3a..5b11649dc 100644 --- a/rust/kcl-lib/tests/kcl_samples/bench/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/bench/artifact_commands.snap @@ -476,7 +476,8 @@ description: Artifact commands bench.kcl "type": "extrude", "target": "[uuid]", "distance": 2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1342,7 +1343,8 @@ description: Artifact commands bench.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2248,7 +2250,8 @@ description: Artifact commands bench.kcl "type": "extrude", "target": "[uuid]", "distance": 2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3089,7 +3092,8 @@ description: Artifact commands bench.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3995,7 +3999,8 @@ description: Artifact commands bench.kcl "type": "extrude", "target": "[uuid]", "distance": 2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4836,7 +4841,8 @@ description: Artifact commands bench.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5547,7 +5553,8 @@ description: Artifact commands bench.kcl "type": "extrude", "target": "[uuid]", "distance": 56.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5913,7 +5920,8 @@ description: Artifact commands bench.kcl "type": "extrude", "target": "[uuid]", "distance": 56.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6344,7 +6352,8 @@ description: Artifact commands bench.kcl "type": "extrude", "target": "[uuid]", "distance": 60.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6514,7 +6523,8 @@ description: Artifact commands bench.kcl "type": "extrude", "target": "[uuid]", "distance": 60.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6684,7 +6694,8 @@ description: Artifact commands bench.kcl "type": "extrude", "target": "[uuid]", "distance": 60.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -7086,7 +7097,8 @@ description: Artifact commands bench.kcl "type": "extrude", "target": "[uuid]", "distance": 60.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -7256,7 +7268,8 @@ description: Artifact commands bench.kcl "type": "extrude", "target": "[uuid]", "distance": 60.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -7887,6 +7900,15 @@ description: Artifact commands bench.kcl "face_id": "[uuid]" } }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, { "cmdId": "[uuid]", "range": [], @@ -8488,6 +8510,15 @@ description: Artifact commands bench.kcl "hidden": true } }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, { "cmdId": "[uuid]", "range": [], diff --git a/rust/kcl-lib/tests/kcl_samples/bench/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/bench/artifact_graph_flowchart.snap.md index 89829e189..0629f4762 100644 --- a/rust/kcl-lib/tests/kcl_samples/bench/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/bench/artifact_graph_flowchart.snap.md @@ -3,237 +3,237 @@ flowchart LR subgraph path2 [Path] 2["Path
[361, 394, 5]"] 3["Segment
[402, 428, 5]"] - 4["Segment
[436, 489, 5]"] - 5["Segment
[497, 550, 5]"] - 6["Segment
[558, 612, 5]"] - 7["Segment
[620, 645, 5]"] - 8["Segment
[653, 673, 5]"] - 9["Segment
[681, 705, 5]"] - 10["Segment
[713, 766, 5]"] - 11["Segment
[774, 799, 5]"] - 12["Segment
[807, 827, 5]"] - 13["Segment
[835, 859, 5]"] - 14["Segment
[867, 919, 5]"] - 15["Segment
[927, 979, 5]"] - 16["Segment
[987, 1012, 5]"] - 17["Segment
[1020, 1044, 5]"] - 18["Segment
[1052, 1105, 5]"] - 19["Segment
[1113, 1138, 5]"] - 20["Segment
[1146, 1173, 5]"] - 21["Segment
[1181, 1233, 5]"] - 22["Segment
[1241, 1276, 5]"] - 23["Segment
[1284, 1291, 5]"] + 4["Segment
[436, 498, 5]"] + 5["Segment
[506, 568, 5]"] + 6["Segment
[576, 639, 5]"] + 7["Segment
[647, 672, 5]"] + 8["Segment
[680, 700, 5]"] + 9["Segment
[708, 732, 5]"] + 10["Segment
[740, 802, 5]"] + 11["Segment
[810, 835, 5]"] + 12["Segment
[843, 863, 5]"] + 13["Segment
[871, 895, 5]"] + 14["Segment
[903, 964, 5]"] + 15["Segment
[972, 1033, 5]"] + 16["Segment
[1041, 1066, 5]"] + 17["Segment
[1074, 1098, 5]"] + 18["Segment
[1106, 1168, 5]"] + 19["Segment
[1176, 1201, 5]"] + 20["Segment
[1209, 1236, 5]"] + 21["Segment
[1244, 1305, 5]"] + 22["Segment
[1313, 1357, 5]"] + 23["Segment
[1365, 1372, 5]"] 24[Solid2d] end subgraph path89 [Path] 89["Path
[361, 394, 5]"] 90["Segment
[402, 428, 5]"] - 91["Segment
[436, 489, 5]"] - 92["Segment
[497, 550, 5]"] - 93["Segment
[558, 612, 5]"] - 94["Segment
[620, 645, 5]"] - 95["Segment
[653, 673, 5]"] - 96["Segment
[681, 705, 5]"] - 97["Segment
[713, 766, 5]"] - 98["Segment
[774, 799, 5]"] - 99["Segment
[807, 827, 5]"] - 100["Segment
[835, 859, 5]"] - 101["Segment
[867, 919, 5]"] - 102["Segment
[927, 979, 5]"] - 103["Segment
[987, 1012, 5]"] - 104["Segment
[1020, 1044, 5]"] - 105["Segment
[1052, 1105, 5]"] - 106["Segment
[1113, 1138, 5]"] - 107["Segment
[1146, 1173, 5]"] - 108["Segment
[1181, 1233, 5]"] - 109["Segment
[1241, 1276, 5]"] - 110["Segment
[1284, 1291, 5]"] + 91["Segment
[436, 498, 5]"] + 92["Segment
[506, 568, 5]"] + 93["Segment
[576, 639, 5]"] + 94["Segment
[647, 672, 5]"] + 95["Segment
[680, 700, 5]"] + 96["Segment
[708, 732, 5]"] + 97["Segment
[740, 802, 5]"] + 98["Segment
[810, 835, 5]"] + 99["Segment
[843, 863, 5]"] + 100["Segment
[871, 895, 5]"] + 101["Segment
[903, 964, 5]"] + 102["Segment
[972, 1033, 5]"] + 103["Segment
[1041, 1066, 5]"] + 104["Segment
[1074, 1098, 5]"] + 105["Segment
[1106, 1168, 5]"] + 106["Segment
[1176, 1201, 5]"] + 107["Segment
[1209, 1236, 5]"] + 108["Segment
[1244, 1305, 5]"] + 109["Segment
[1313, 1357, 5]"] + 110["Segment
[1365, 1372, 5]"] 111[Solid2d] end subgraph path176 [Path] 176["Path
[361, 394, 5]"] 177["Segment
[402, 428, 5]"] - 178["Segment
[436, 489, 5]"] - 179["Segment
[497, 550, 5]"] - 180["Segment
[558, 612, 5]"] - 181["Segment
[620, 645, 5]"] - 182["Segment
[653, 673, 5]"] - 183["Segment
[681, 705, 5]"] - 184["Segment
[713, 766, 5]"] - 185["Segment
[774, 799, 5]"] - 186["Segment
[807, 827, 5]"] - 187["Segment
[835, 859, 5]"] - 188["Segment
[867, 919, 5]"] - 189["Segment
[927, 979, 5]"] - 190["Segment
[987, 1012, 5]"] - 191["Segment
[1020, 1044, 5]"] - 192["Segment
[1052, 1105, 5]"] - 193["Segment
[1113, 1138, 5]"] - 194["Segment
[1146, 1173, 5]"] - 195["Segment
[1181, 1233, 5]"] - 196["Segment
[1241, 1276, 5]"] - 197["Segment
[1284, 1291, 5]"] + 178["Segment
[436, 498, 5]"] + 179["Segment
[506, 568, 5]"] + 180["Segment
[576, 639, 5]"] + 181["Segment
[647, 672, 5]"] + 182["Segment
[680, 700, 5]"] + 183["Segment
[708, 732, 5]"] + 184["Segment
[740, 802, 5]"] + 185["Segment
[810, 835, 5]"] + 186["Segment
[843, 863, 5]"] + 187["Segment
[871, 895, 5]"] + 188["Segment
[903, 964, 5]"] + 189["Segment
[972, 1033, 5]"] + 190["Segment
[1041, 1066, 5]"] + 191["Segment
[1074, 1098, 5]"] + 192["Segment
[1106, 1168, 5]"] + 193["Segment
[1176, 1201, 5]"] + 194["Segment
[1209, 1236, 5]"] + 195["Segment
[1244, 1305, 5]"] + 196["Segment
[1313, 1357, 5]"] + 197["Segment
[1365, 1372, 5]"] 198[Solid2d] end subgraph path262 [Path] 262["Path
[361, 394, 5]"] 263["Segment
[402, 428, 5]"] - 264["Segment
[436, 489, 5]"] - 265["Segment
[497, 550, 5]"] - 266["Segment
[558, 612, 5]"] - 267["Segment
[620, 645, 5]"] - 268["Segment
[653, 673, 5]"] - 269["Segment
[681, 705, 5]"] - 270["Segment
[713, 766, 5]"] - 271["Segment
[774, 799, 5]"] - 272["Segment
[807, 827, 5]"] - 273["Segment
[835, 859, 5]"] - 274["Segment
[867, 919, 5]"] - 275["Segment
[927, 979, 5]"] - 276["Segment
[987, 1012, 5]"] - 277["Segment
[1020, 1044, 5]"] - 278["Segment
[1052, 1105, 5]"] - 279["Segment
[1113, 1138, 5]"] - 280["Segment
[1146, 1173, 5]"] - 281["Segment
[1181, 1233, 5]"] - 282["Segment
[1241, 1276, 5]"] - 283["Segment
[1284, 1291, 5]"] + 264["Segment
[436, 498, 5]"] + 265["Segment
[506, 568, 5]"] + 266["Segment
[576, 639, 5]"] + 267["Segment
[647, 672, 5]"] + 268["Segment
[680, 700, 5]"] + 269["Segment
[708, 732, 5]"] + 270["Segment
[740, 802, 5]"] + 271["Segment
[810, 835, 5]"] + 272["Segment
[843, 863, 5]"] + 273["Segment
[871, 895, 5]"] + 274["Segment
[903, 964, 5]"] + 275["Segment
[972, 1033, 5]"] + 276["Segment
[1041, 1066, 5]"] + 277["Segment
[1074, 1098, 5]"] + 278["Segment
[1106, 1168, 5]"] + 279["Segment
[1176, 1201, 5]"] + 280["Segment
[1209, 1236, 5]"] + 281["Segment
[1244, 1305, 5]"] + 282["Segment
[1313, 1357, 5]"] + 283["Segment
[1365, 1372, 5]"] 284[Solid2d] end subgraph path349 [Path] 349["Path
[361, 394, 5]"] 350["Segment
[402, 428, 5]"] - 351["Segment
[436, 489, 5]"] - 352["Segment
[497, 550, 5]"] - 353["Segment
[558, 612, 5]"] - 354["Segment
[620, 645, 5]"] - 355["Segment
[653, 673, 5]"] - 356["Segment
[681, 705, 5]"] - 357["Segment
[713, 766, 5]"] - 358["Segment
[774, 799, 5]"] - 359["Segment
[807, 827, 5]"] - 360["Segment
[835, 859, 5]"] - 361["Segment
[867, 919, 5]"] - 362["Segment
[927, 979, 5]"] - 363["Segment
[987, 1012, 5]"] - 364["Segment
[1020, 1044, 5]"] - 365["Segment
[1052, 1105, 5]"] - 366["Segment
[1113, 1138, 5]"] - 367["Segment
[1146, 1173, 5]"] - 368["Segment
[1181, 1233, 5]"] - 369["Segment
[1241, 1276, 5]"] - 370["Segment
[1284, 1291, 5]"] + 351["Segment
[436, 498, 5]"] + 352["Segment
[506, 568, 5]"] + 353["Segment
[576, 639, 5]"] + 354["Segment
[647, 672, 5]"] + 355["Segment
[680, 700, 5]"] + 356["Segment
[708, 732, 5]"] + 357["Segment
[740, 802, 5]"] + 358["Segment
[810, 835, 5]"] + 359["Segment
[843, 863, 5]"] + 360["Segment
[871, 895, 5]"] + 361["Segment
[903, 964, 5]"] + 362["Segment
[972, 1033, 5]"] + 363["Segment
[1041, 1066, 5]"] + 364["Segment
[1074, 1098, 5]"] + 365["Segment
[1106, 1168, 5]"] + 366["Segment
[1176, 1201, 5]"] + 367["Segment
[1209, 1236, 5]"] + 368["Segment
[1244, 1305, 5]"] + 369["Segment
[1313, 1357, 5]"] + 370["Segment
[1365, 1372, 5]"] 371[Solid2d] end subgraph path435 [Path] 435["Path
[361, 394, 5]"] 436["Segment
[402, 428, 5]"] - 437["Segment
[436, 489, 5]"] - 438["Segment
[497, 550, 5]"] - 439["Segment
[558, 612, 5]"] - 440["Segment
[620, 645, 5]"] - 441["Segment
[653, 673, 5]"] - 442["Segment
[681, 705, 5]"] - 443["Segment
[713, 766, 5]"] - 444["Segment
[774, 799, 5]"] - 445["Segment
[807, 827, 5]"] - 446["Segment
[835, 859, 5]"] - 447["Segment
[867, 919, 5]"] - 448["Segment
[927, 979, 5]"] - 449["Segment
[987, 1012, 5]"] - 450["Segment
[1020, 1044, 5]"] - 451["Segment
[1052, 1105, 5]"] - 452["Segment
[1113, 1138, 5]"] - 453["Segment
[1146, 1173, 5]"] - 454["Segment
[1181, 1233, 5]"] - 455["Segment
[1241, 1276, 5]"] - 456["Segment
[1284, 1291, 5]"] + 437["Segment
[436, 498, 5]"] + 438["Segment
[506, 568, 5]"] + 439["Segment
[576, 639, 5]"] + 440["Segment
[647, 672, 5]"] + 441["Segment
[680, 700, 5]"] + 442["Segment
[708, 732, 5]"] + 443["Segment
[740, 802, 5]"] + 444["Segment
[810, 835, 5]"] + 445["Segment
[843, 863, 5]"] + 446["Segment
[871, 895, 5]"] + 447["Segment
[903, 964, 5]"] + 448["Segment
[972, 1033, 5]"] + 449["Segment
[1041, 1066, 5]"] + 450["Segment
[1074, 1098, 5]"] + 451["Segment
[1106, 1168, 5]"] + 452["Segment
[1176, 1201, 5]"] + 453["Segment
[1209, 1236, 5]"] + 454["Segment
[1244, 1305, 5]"] + 455["Segment
[1313, 1357, 5]"] + 456["Segment
[1365, 1372, 5]"] 457[Solid2d] end subgraph path522 [Path] - 522["Path
[1685, 1709, 5]"] + 522["Path
[1762, 1786, 5]"] end subgraph path523 [Path] - 523["Path
[1717, 1847, 5]"] - 524["Segment
[1717, 1847, 5]"] - 525["Segment
[1717, 1847, 5]"] - 526["Segment
[1717, 1847, 5]"] - 527["Segment
[1717, 1847, 5]"] - 528["Segment
[1717, 1847, 5]"] - 529["Segment
[1717, 1847, 5]"] - 530["Segment
[1717, 1847, 5]"] + 523["Path
[1794, 1924, 5]"] + 524["Segment
[1794, 1924, 5]"] + 525["Segment
[1794, 1924, 5]"] + 526["Segment
[1794, 1924, 5]"] + 527["Segment
[1794, 1924, 5]"] + 528["Segment
[1794, 1924, 5]"] + 529["Segment
[1794, 1924, 5]"] + 530["Segment
[1794, 1924, 5]"] 531[Solid2d] end subgraph path553 [Path] - 553["Path
[1685, 1709, 5]"] + 553["Path
[1762, 1786, 5]"] end subgraph path554 [Path] - 554["Path
[1717, 1847, 5]"] - 555["Segment
[1717, 1847, 5]"] - 556["Segment
[1717, 1847, 5]"] - 557["Segment
[1717, 1847, 5]"] - 558["Segment
[1717, 1847, 5]"] - 559["Segment
[1717, 1847, 5]"] - 560["Segment
[1717, 1847, 5]"] - 561["Segment
[1717, 1847, 5]"] + 554["Path
[1794, 1924, 5]"] + 555["Segment
[1794, 1924, 5]"] + 556["Segment
[1794, 1924, 5]"] + 557["Segment
[1794, 1924, 5]"] + 558["Segment
[1794, 1924, 5]"] + 559["Segment
[1794, 1924, 5]"] + 560["Segment
[1794, 1924, 5]"] + 561["Segment
[1794, 1924, 5]"] 562[Solid2d] end subgraph path585 [Path] - 585["Path
[2123, 2150, 5]"] - 586["Segment
[2158, 2180, 5]"] - 587["Segment
[2188, 2210, 5]"] - 588["Segment
[2218, 2240, 5]"] - 589["Segment
[2248, 2271, 5]"] - 590["Segment
[2279, 2302, 5]"] - 591["Segment
[2310, 2345, 5]"] - 592["Segment
[2353, 2360, 5]"] + 585["Path
[2200, 2227, 5]"] + 586["Segment
[2235, 2257, 5]"] + 587["Segment
[2265, 2287, 5]"] + 588["Segment
[2295, 2317, 5]"] + 589["Segment
[2325, 2348, 5]"] + 590["Segment
[2356, 2379, 5]"] + 591["Segment
[2387, 2422, 5]"] + 592["Segment
[2430, 2437, 5]"] 593[Solid2d] end subgraph path618 [Path] - 618["Path
[2632, 2661, 5]"] - 619["Segment
[2669, 2692, 5]"] - 620["Segment
[2700, 2725, 5]"] - 621["Segment
[2733, 2757, 5]"] - 622["Segment
[2765, 2789, 5]"] - 623["Segment
[2797, 2819, 5]"] - 624["Segment
[2827, 2862, 5]"] - 625["Segment
[2870, 2877, 5]"] + 618["Path
[2709, 2738, 5]"] + 619["Segment
[2746, 2781, 5]"] + 620["Segment
[2789, 2814, 5]"] + 621["Segment
[2822, 2858, 5]"] + 622["Segment
[2866, 2890, 5]"] + 623["Segment
[2898, 2932, 5]"] + 624["Segment
[2940, 2975, 5]"] + 625["Segment
[2983, 2990, 5]"] 626[Solid2d] end subgraph path650 [Path] - 650["Path
[3152, 3179, 5]"] - 651["Segment
[3187, 3206, 5]"] - 652["Segment
[3214, 3304, 5]"] + 650["Path
[3265, 3292, 5]"] + 651["Segment
[3300, 3319, 5]"] + 652["Segment
[3327, 3417, 5]"] end subgraph path654 [Path] - 654["Path
[3404, 3437, 5]"] - 655["Segment
[3445, 3464, 5]"] - 656["Segment
[3472, 3494, 5]"] - 657["Segment
[3502, 3525, 5]"] - 658["Segment
[3533, 3553, 5]"] - 659["Segment
[3561, 3585, 5]"] - 660["Segment
[3593, 3616, 5]"] - 661["Segment
[3624, 3631, 5]"] + 654["Path
[3517, 3550, 5]"] + 655["Segment
[3558, 3577, 5]"] + 656["Segment
[3585, 3607, 5]"] + 657["Segment
[3615, 3638, 5]"] + 658["Segment
[3646, 3666, 5]"] + 659["Segment
[3674, 3698, 5]"] + 660["Segment
[3706, 3729, 5]"] + 661["Segment
[3737, 3744, 5]"] 662[Solid2d] end subgraph path688 [Path] - 688["Path
[3152, 3179, 5]"] - 689["Segment
[3187, 3206, 5]"] - 690["Segment
[3214, 3304, 5]"] + 688["Path
[3265, 3292, 5]"] + 689["Segment
[3300, 3319, 5]"] + 690["Segment
[3327, 3417, 5]"] end subgraph path692 [Path] - 692["Path
[3404, 3437, 5]"] - 693["Segment
[3445, 3464, 5]"] - 694["Segment
[3472, 3494, 5]"] - 695["Segment
[3502, 3525, 5]"] - 696["Segment
[3533, 3553, 5]"] - 697["Segment
[3561, 3585, 5]"] - 698["Segment
[3593, 3616, 5]"] - 699["Segment
[3624, 3631, 5]"] + 692["Path
[3517, 3550, 5]"] + 693["Segment
[3558, 3577, 5]"] + 694["Segment
[3585, 3607, 5]"] + 695["Segment
[3615, 3638, 5]"] + 696["Segment
[3646, 3666, 5]"] + 697["Segment
[3674, 3698, 5]"] + 698["Segment
[3706, 3729, 5]"] + 699["Segment
[3737, 3744, 5]"] 700[Solid2d] end 1["Plane
[333, 353, 5]"] - 25["Sweep Extrusion
[1379, 1417, 5]"] + 25["Sweep Extrusion
[1460, 1498, 5]"] 26[Wall] 27[Wall] 28[Wall] @@ -297,7 +297,7 @@ flowchart LR 86["SweepEdge Opposite"] 87["SweepEdge Adjacent"] 88["Plane
[333, 353, 5]"] - 112["Sweep Extrusion
[1455, 1494, 5]"] + 112["Sweep Extrusion
[1536, 1575, 5]"] 113[Wall] 114[Wall] 115[Wall] @@ -361,7 +361,7 @@ flowchart LR 173["SweepEdge Opposite"] 174["SweepEdge Adjacent"] 175["Plane
[823, 865, 0]"] - 199["Sweep Extrusion
[1379, 1417, 5]"] + 199["Sweep Extrusion
[1460, 1498, 5]"] 200[Wall] 201[Wall] 202[Wall] @@ -424,7 +424,7 @@ flowchart LR 259["SweepEdge Adjacent"] 260["SweepEdge Opposite"] 261["SweepEdge Adjacent"] - 285["Sweep Extrusion
[1455, 1494, 5]"] + 285["Sweep Extrusion
[1536, 1575, 5]"] 286[Wall] 287[Wall] 288[Wall] @@ -488,7 +488,7 @@ flowchart LR 346["SweepEdge Opposite"] 347["SweepEdge Adjacent"] 348["Plane
[875, 916, 0]"] - 372["Sweep Extrusion
[1379, 1417, 5]"] + 372["Sweep Extrusion
[1460, 1498, 5]"] 373[Wall] 374[Wall] 375[Wall] @@ -551,7 +551,7 @@ flowchart LR 432["SweepEdge Adjacent"] 433["SweepEdge Opposite"] 434["SweepEdge Adjacent"] - 458["Sweep Extrusion
[1455, 1494, 5]"] + 458["Sweep Extrusion
[1536, 1575, 5]"] 459[Wall] 460[Wall] 461[Wall] @@ -615,7 +615,7 @@ flowchart LR 519["SweepEdge Opposite"] 520["SweepEdge Adjacent"] 521["Plane
[975, 1017, 0]"] - 532["Sweep Extrusion
[1949, 1973, 5]"] + 532["Sweep Extrusion
[2026, 2050, 5]"] 533[Wall] 534[Wall] 535[Wall] @@ -636,7 +636,7 @@ flowchart LR 550["SweepEdge Adjacent"] 551["SweepEdge Opposite"] 552["SweepEdge Adjacent"] - 563["Sweep Extrusion
[2015, 2039, 5]"] + 563["Sweep Extrusion
[2092, 2116, 5]"] 564[Wall] 565[Wall] 566[Wall] @@ -658,7 +658,7 @@ flowchart LR 582["SweepEdge Opposite"] 583["SweepEdge Adjacent"] 584["Plane
[1068, 1135, 0]"] - 594["Sweep Extrusion
[2523, 2547, 5]"] + 594["Sweep Extrusion
[2600, 2624, 5]"] 595[Wall] 596[Wall] 597[Wall] @@ -679,10 +679,10 @@ flowchart LR 612["SweepEdge Adjacent"] 613["SweepEdge Opposite"] 614["SweepEdge Adjacent"] - 615["Sweep Extrusion
[2523, 2547, 5]"] - 616["Sweep Extrusion
[2523, 2547, 5]"] + 615["Sweep Extrusion
[2600, 2624, 5]"] + 616["Sweep Extrusion
[2600, 2624, 5]"] 617["Plane
[1205, 1272, 0]"] - 627["Sweep Extrusion
[3047, 3071, 5]"] + 627["Sweep Extrusion
[3160, 3184, 5]"] 628[Wall] 629[Wall] 630[Wall] @@ -703,10 +703,10 @@ flowchart LR 645["SweepEdge Adjacent"] 646["SweepEdge Opposite"] 647["SweepEdge Adjacent"] - 648["Sweep Extrusion
[3047, 3071, 5]"] - 649["Plane
[3712, 3747, 5]"] - 653["Plane
[3778, 3807, 5]"] - 663["Sweep Sweep
[3819, 3846, 5]"] + 648["Sweep Extrusion
[3160, 3184, 5]"] + 649["Plane
[3825, 3860, 5]"] + 653["Plane
[3891, 3920, 5]"] + 663["Sweep Sweep
[3932, 3959, 5]"] 664[Wall] 665[Wall] 666[Wall] @@ -730,9 +730,9 @@ flowchart LR 684["SweepEdge Adjacent"] 685["SweepEdge Opposite"] 686["SweepEdge Adjacent"] - 687["Plane
[3712, 3747, 5]"] - 691["Plane
[3778, 3807, 5]"] - 701["Sweep Sweep
[3819, 3846, 5]"] + 687["Plane
[3825, 3860, 5]"] + 691["Plane
[3891, 3920, 5]"] + 701["Sweep Sweep
[3932, 3959, 5]"] 702[Wall] 703[Wall] 704[Wall] @@ -760,14 +760,14 @@ flowchart LR 726["StartSketchOnPlane
[333, 353, 5]"] 727["StartSketchOnPlane
[333, 353, 5]"] 728["StartSketchOnPlane
[333, 353, 5]"] - 729["StartSketchOnPlane
[1657, 1677, 5]"] - 730["StartSketchOnPlane
[1657, 1677, 5]"] - 731["StartSketchOnPlane
[2095, 2115, 5]"] - 732["StartSketchOnPlane
[2604, 2624, 5]"] - 733["StartSketchOnPlane
[3124, 3144, 5]"] - 734["StartSketchOnPlane
[3376, 3396, 5]"] - 735["StartSketchOnPlane
[3124, 3144, 5]"] - 736["StartSketchOnPlane
[3376, 3396, 5]"] + 729["StartSketchOnPlane
[1734, 1754, 5]"] + 730["StartSketchOnPlane
[1734, 1754, 5]"] + 731["StartSketchOnPlane
[2172, 2192, 5]"] + 732["StartSketchOnPlane
[2681, 2701, 5]"] + 733["StartSketchOnPlane
[3237, 3257, 5]"] + 734["StartSketchOnPlane
[3489, 3509, 5]"] + 735["StartSketchOnPlane
[3237, 3257, 5]"] + 736["StartSketchOnPlane
[3489, 3509, 5]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/bench/ast.snap b/rust/kcl-lib/tests/kcl_samples/bench/ast.snap index 3efd2ef26..2ed199d72 100644 --- a/rust/kcl-lib/tests/kcl_samples/bench/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/bench/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing bench.kcl "Ok": { "body": [ { - "commentStart": 394, + "commentStart": 0, "declaration": { - "commentStart": 423, + "commentStart": 0, "end": 0, "id": { - "commentStart": 423, + "commentStart": 0, "end": 0, "name": "benchLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 437, + "commentStart": 0, "end": 0, "raw": "56", "start": 0, @@ -42,7 +42,7 @@ description: Result of parsing bench.kcl "type": "VariableDeclaration" }, { - "commentStart": 439, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -58,10 +58,10 @@ description: Result of parsing bench.kcl "items": [ { "alias": null, - "commentStart": 507, + "commentStart": 0, "end": 0, "name": { - "commentStart": 507, + "commentStart": 0, "end": 0, "name": "dividerThickness", "start": 0, @@ -77,7 +77,7 @@ description: Result of parsing bench.kcl "type": "ImportStatement" }, { - "commentStart": 547, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -88,10 +88,10 @@ description: Result of parsing bench.kcl "items": [ { "alias": null, - "commentStart": 554, + "commentStart": 0, "end": 0, "name": { - "commentStart": 554, + "commentStart": 0, "end": 0, "name": "divider", "start": 0, @@ -107,7 +107,7 @@ description: Result of parsing bench.kcl "type": "ImportStatement" }, { - "commentStart": 585, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -118,10 +118,10 @@ description: Result of parsing bench.kcl "items": [ { "alias": null, - "commentStart": 592, + "commentStart": 0, "end": 0, "name": { - "commentStart": 592, + "commentStart": 0, "end": 0, "name": "connector", "start": 0, @@ -137,7 +137,7 @@ description: Result of parsing bench.kcl "type": "ImportStatement" }, { - "commentStart": 625, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -148,10 +148,10 @@ description: Result of parsing bench.kcl "items": [ { "alias": null, - "commentStart": 632, + "commentStart": 0, "end": 0, "name": { - "commentStart": 632, + "commentStart": 0, "end": 0, "name": "seatSlats", "start": 0, @@ -167,7 +167,7 @@ description: Result of parsing bench.kcl "type": "ImportStatement" }, { - "commentStart": 665, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -178,10 +178,10 @@ description: Result of parsing bench.kcl "items": [ { "alias": null, - "commentStart": 672, + "commentStart": 0, "end": 0, "name": { - "commentStart": 672, + "commentStart": 0, "end": 0, "name": "backSlats", "start": 0, @@ -197,7 +197,7 @@ description: Result of parsing bench.kcl "type": "ImportStatement" }, { - "commentStart": 705, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -208,10 +208,10 @@ description: Result of parsing bench.kcl "items": [ { "alias": null, - "commentStart": 712, + "commentStart": 0, "end": 0, "name": { - "commentStart": 712, + "commentStart": 0, "end": 0, "name": "armRest", "start": 0, @@ -227,16 +227,16 @@ description: Result of parsing bench.kcl "type": "ImportStatement" }, { - "commentStart": 742, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 811, + "commentStart": 0, "end": 0, "name": { - "commentStart": 811, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -250,10 +250,10 @@ description: Result of parsing bench.kcl ], "callee": { "abs_path": false, - "commentStart": 803, + "commentStart": 0, "end": 0, "name": { - "commentStart": 803, + "commentStart": 0, "end": 0, "name": "divider", "start": 0, @@ -263,7 +263,7 @@ description: Result of parsing bench.kcl "start": 0, "type": "Name" }, - "commentStart": 803, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -279,7 +279,7 @@ description: Result of parsing bench.kcl "type": "ExpressionStatement" }, { - "commentStart": 815, + "commentStart": 0, "end": 0, "expression": { "arguments": [ @@ -288,21 +288,21 @@ description: Result of parsing bench.kcl { "type": "LabeledArg", "label": { - "commentStart": 840, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 849, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 849, + "commentStart": 0, "end": 0, "name": { - "commentStart": 849, + "commentStart": 0, "end": 0, "name": "benchLength", "start": 0, @@ -315,7 +315,7 @@ description: Result of parsing bench.kcl }, "operator": "/", "right": { - "commentStart": 863, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -334,10 +334,10 @@ description: Result of parsing bench.kcl ], "callee": { "abs_path": false, - "commentStart": 823, + "commentStart": 0, "end": 0, "name": { - "commentStart": 823, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -347,7 +347,7 @@ description: Result of parsing bench.kcl "start": 0, "type": "Name" }, - "commentStart": 823, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -355,10 +355,10 @@ description: Result of parsing bench.kcl "unlabeled": { "argument": { "abs_path": false, - "commentStart": 836, + "commentStart": 0, "end": 0, "name": { - "commentStart": 836, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -369,7 +369,7 @@ description: Result of parsing bench.kcl "type": "Name", "type": "Name" }, - "commentStart": 835, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -380,10 +380,10 @@ description: Result of parsing bench.kcl ], "callee": { "abs_path": false, - "commentStart": 815, + "commentStart": 0, "end": 0, "name": { - "commentStart": 815, + "commentStart": 0, "end": 0, "name": "divider", "start": 0, @@ -393,7 +393,7 @@ description: Result of parsing bench.kcl "start": 0, "type": "Name" }, - "commentStart": 815, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -404,7 +404,7 @@ description: Result of parsing bench.kcl "type": "ExpressionStatement" }, { - "commentStart": 867, + "commentStart": 0, "end": 0, "expression": { "arguments": [ @@ -413,21 +413,21 @@ description: Result of parsing bench.kcl { "type": "LabeledArg", "label": { - "commentStart": 891, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 900, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 900, + "commentStart": 0, "end": 0, "name": { - "commentStart": 900, + "commentStart": 0, "end": 0, "name": "benchLength", "start": 0, @@ -440,7 +440,7 @@ description: Result of parsing bench.kcl }, "operator": "/", "right": { - "commentStart": 914, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -459,10 +459,10 @@ description: Result of parsing bench.kcl ], "callee": { "abs_path": false, - "commentStart": 875, + "commentStart": 0, "end": 0, "name": { - "commentStart": 875, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -472,17 +472,17 @@ description: Result of parsing bench.kcl "start": 0, "type": "Name" }, - "commentStart": 875, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 887, + "commentStart": 0, "end": 0, "name": { - "commentStart": 887, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -497,10 +497,10 @@ description: Result of parsing bench.kcl ], "callee": { "abs_path": false, - "commentStart": 867, + "commentStart": 0, "end": 0, "name": { - "commentStart": 867, + "commentStart": 0, "end": 0, "name": "divider", "start": 0, @@ -510,7 +510,7 @@ description: Result of parsing bench.kcl "start": 0, "type": "Name" }, - "commentStart": 867, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -521,7 +521,7 @@ description: Result of parsing bench.kcl "type": "ExpressionStatement" }, { - "commentStart": 917, + "commentStart": 0, "end": 0, "expression": { "arguments": [ @@ -530,22 +530,22 @@ description: Result of parsing bench.kcl { "type": "LabeledArg", "label": { - "commentStart": 991, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1000, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1001, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1001, + "commentStart": 0, "end": 0, "name": "benchLength", "start": 0, @@ -556,7 +556,7 @@ description: Result of parsing bench.kcl "type": "Name", "type": "Name" }, - "commentStart": 1000, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -565,7 +565,7 @@ description: Result of parsing bench.kcl }, "operator": "/", "right": { - "commentStart": 1015, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -584,10 +584,10 @@ description: Result of parsing bench.kcl ], "callee": { "abs_path": false, - "commentStart": 975, + "commentStart": 0, "end": 0, "name": { - "commentStart": 975, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -597,17 +597,17 @@ description: Result of parsing bench.kcl "start": 0, "type": "Name" }, - "commentStart": 975, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 987, + "commentStart": 0, "end": 0, "name": { - "commentStart": 987, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -621,10 +621,10 @@ description: Result of parsing bench.kcl }, { "abs_path": false, - "commentStart": 1019, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1019, + "commentStart": 0, "end": 0, "name": "benchLength", "start": 0, @@ -638,10 +638,10 @@ description: Result of parsing bench.kcl ], "callee": { "abs_path": false, - "commentStart": 965, + "commentStart": 0, "end": 0, "name": { - "commentStart": 965, + "commentStart": 0, "end": 0, "name": "connector", "start": 0, @@ -651,7 +651,7 @@ description: Result of parsing bench.kcl "start": 0, "type": "Name" }, - "commentStart": 965, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -667,7 +667,7 @@ description: Result of parsing bench.kcl "type": "ExpressionStatement" }, { - "commentStart": 1031, + "commentStart": 0, "end": 0, "expression": { "arguments": [ @@ -676,25 +676,25 @@ description: Result of parsing bench.kcl { "type": "LabeledArg", "label": { - "commentStart": 1084, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1093, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1093, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1094, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1094, + "commentStart": 0, "end": 0, "name": "benchLength", "start": 0, @@ -705,7 +705,7 @@ description: Result of parsing bench.kcl "type": "Name", "type": "Name" }, - "commentStart": 1093, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -714,7 +714,7 @@ description: Result of parsing bench.kcl }, "operator": "/", "right": { - "commentStart": 1108, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -731,14 +731,14 @@ description: Result of parsing bench.kcl }, "operator": "-", "right": { - "commentStart": 1113, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1113, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1113, + "commentStart": 0, "end": 0, "name": "dividerThickness", "start": 0, @@ -751,7 +751,7 @@ description: Result of parsing bench.kcl }, "operator": "/", "right": { - "commentStart": 1132, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -774,10 +774,10 @@ description: Result of parsing bench.kcl ], "callee": { "abs_path": false, - "commentStart": 1068, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1068, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -787,17 +787,17 @@ description: Result of parsing bench.kcl "start": 0, "type": "Name" }, - "commentStart": 1068, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1080, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1080, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -810,14 +810,14 @@ description: Result of parsing bench.kcl } }, { - "commentStart": 1137, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1137, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1137, + "commentStart": 0, "end": 0, "name": "benchLength", "start": 0, @@ -831,10 +831,10 @@ description: Result of parsing bench.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1151, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1151, + "commentStart": 0, "end": 0, "name": "dividerThickness", "start": 0, @@ -852,10 +852,10 @@ description: Result of parsing bench.kcl ], "callee": { "abs_path": false, - "commentStart": 1058, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1058, + "commentStart": 0, "end": 0, "name": "seatSlats", "start": 0, @@ -865,7 +865,7 @@ description: Result of parsing bench.kcl "start": 0, "type": "Name" }, - "commentStart": 1058, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -881,7 +881,7 @@ description: Result of parsing bench.kcl "type": "ExpressionStatement" }, { - "commentStart": 1168, + "commentStart": 0, "end": 0, "expression": { "arguments": [ @@ -890,25 +890,25 @@ description: Result of parsing bench.kcl { "type": "LabeledArg", "label": { - "commentStart": 1221, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1230, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1230, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1231, + "commentStart": 0, "end": 0, "name": "benchLength", "start": 0, @@ -919,7 +919,7 @@ description: Result of parsing bench.kcl "type": "Name", "type": "Name" }, - "commentStart": 1230, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -928,7 +928,7 @@ description: Result of parsing bench.kcl }, "operator": "/", "right": { - "commentStart": 1245, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -945,14 +945,14 @@ description: Result of parsing bench.kcl }, "operator": "-", "right": { - "commentStart": 1250, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1250, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1250, + "commentStart": 0, "end": 0, "name": "dividerThickness", "start": 0, @@ -965,7 +965,7 @@ description: Result of parsing bench.kcl }, "operator": "/", "right": { - "commentStart": 1269, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -988,10 +988,10 @@ description: Result of parsing bench.kcl ], "callee": { "abs_path": false, - "commentStart": 1205, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1205, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -1001,17 +1001,17 @@ description: Result of parsing bench.kcl "start": 0, "type": "Name" }, - "commentStart": 1205, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1217, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1217, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -1024,14 +1024,14 @@ description: Result of parsing bench.kcl } }, { - "commentStart": 1274, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1274, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1274, + "commentStart": 0, "end": 0, "name": "benchLength", "start": 0, @@ -1045,10 +1045,10 @@ description: Result of parsing bench.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1288, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1288, + "commentStart": 0, "end": 0, "name": "dividerThickness", "start": 0, @@ -1066,10 +1066,10 @@ description: Result of parsing bench.kcl ], "callee": { "abs_path": false, - "commentStart": 1195, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1195, + "commentStart": 0, "end": 0, "name": "backSlats", "start": 0, @@ -1079,7 +1079,7 @@ description: Result of parsing bench.kcl "start": 0, "type": "Name" }, - "commentStart": 1195, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1095,17 +1095,17 @@ description: Result of parsing bench.kcl "type": "ExpressionStatement" }, { - "commentStart": 1305, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "argument": { "abs_path": false, - "commentStart": 1340, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1340, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -1116,7 +1116,7 @@ description: Result of parsing bench.kcl "type": "Name", "type": "Name" }, - "commentStart": 1339, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1124,14 +1124,14 @@ description: Result of parsing bench.kcl "type": "UnaryExpression" }, { - "commentStart": 1344, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1344, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1344, + "commentStart": 0, "end": 0, "name": "benchLength", "start": 0, @@ -1144,7 +1144,7 @@ description: Result of parsing bench.kcl }, "operator": "/", "right": { - "commentStart": 1358, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1162,10 +1162,10 @@ description: Result of parsing bench.kcl ], "callee": { "abs_path": false, - "commentStart": 1331, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1331, + "commentStart": 0, "end": 0, "name": "armRest", "start": 0, @@ -1175,7 +1175,7 @@ description: Result of parsing bench.kcl "start": 0, "type": "Name" }, - "commentStart": 1331, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1191,17 +1191,17 @@ description: Result of parsing bench.kcl "type": "ExpressionStatement" }, { - "commentStart": 1361, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "argument": { "abs_path": false, - "commentStart": 1370, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1370, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -1212,7 +1212,7 @@ description: Result of parsing bench.kcl "type": "Name", "type": "Name" }, - "commentStart": 1369, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1220,15 +1220,15 @@ description: Result of parsing bench.kcl "type": "UnaryExpression" }, { - "commentStart": 1374, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1375, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1375, + "commentStart": 0, "end": 0, "name": "benchLength", "start": 0, @@ -1239,7 +1239,7 @@ description: Result of parsing bench.kcl "type": "Name", "type": "Name" }, - "commentStart": 1374, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1248,7 +1248,7 @@ description: Result of parsing bench.kcl }, "operator": "/", "right": { - "commentStart": 1389, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1266,10 +1266,10 @@ description: Result of parsing bench.kcl ], "callee": { "abs_path": false, - "commentStart": 1361, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1361, + "commentStart": 0, "end": 0, "name": "armRest", "start": 0, @@ -1279,7 +1279,7 @@ description: Result of parsing bench.kcl "start": 0, "type": "Name" }, - "commentStart": 1361, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1297,7 +1297,7 @@ description: Result of parsing bench.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 362, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -1312,10 +1312,10 @@ description: Result of parsing bench.kcl ], "properties": [ { - "commentStart": 371, + "commentStart": 0, "end": 0, "key": { - "commentStart": 371, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -1325,10 +1325,10 @@ description: Result of parsing bench.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 391, + "commentStart": 0, "end": 0, "name": { - "commentStart": 391, + "commentStart": 0, "end": 0, "name": "mm", "start": 0, @@ -1349,7 +1349,7 @@ description: Result of parsing bench.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 394, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/bench/ops.snap b/rust/kcl-lib/tests/kcl_samples/bench/ops.snap index 4b9fc9779..b9b797756 100644 --- a/rust/kcl-lib/tests/kcl_samples/bench/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/bench/ops.snap @@ -9,8 +9,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "divider", "functionSourceRange": [ - 1331, - 1606, + 1412, + 1683, 5 ], "unlabeledArg": null, @@ -25,7 +25,7 @@ description: Operations executed bench.kcl "name": "dividerSketch", "functionSourceRange": [ 309, - 1312, + 1393, 5 ], "unlabeledArg": null, @@ -35,7 +35,7 @@ description: Operations executed bench.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -58,7 +58,13 @@ description: Operations executed bench.kcl "type": "Number", "value": 2.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -84,7 +90,7 @@ description: Operations executed bench.kcl "name": "dividerSketch", "functionSourceRange": [ 309, - 1312, + 1393, 5 ], "unlabeledArg": null, @@ -94,7 +100,7 @@ description: Operations executed bench.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -117,7 +123,13 @@ description: Operations executed bench.kcl "type": "Number", "value": -2.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -234,7 +246,13 @@ description: Operations executed bench.kcl "type": "Number", "value": 28.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -257,8 +275,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "divider", "functionSourceRange": [ - 1331, - 1606, + 1412, + 1683, 5 ], "unlabeledArg": null, @@ -273,7 +291,7 @@ description: Operations executed bench.kcl "name": "dividerSketch", "functionSourceRange": [ 309, - 1312, + 1393, 5 ], "unlabeledArg": null, @@ -283,7 +301,7 @@ description: Operations executed bench.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -306,7 +324,13 @@ description: Operations executed bench.kcl "type": "Number", "value": 2.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -332,7 +356,7 @@ description: Operations executed bench.kcl "name": "dividerSketch", "functionSourceRange": [ 309, - 1312, + 1393, 5 ], "unlabeledArg": null, @@ -342,7 +366,7 @@ description: Operations executed bench.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -365,7 +389,13 @@ description: Operations executed bench.kcl "type": "Number", "value": -2.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -482,7 +512,13 @@ description: Operations executed bench.kcl "type": "Number", "value": 28.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -505,8 +541,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "divider", "functionSourceRange": [ - 1331, - 1606, + 1412, + 1683, 5 ], "unlabeledArg": null, @@ -521,7 +557,7 @@ description: Operations executed bench.kcl "name": "dividerSketch", "functionSourceRange": [ 309, - 1312, + 1393, 5 ], "unlabeledArg": null, @@ -531,7 +567,7 @@ description: Operations executed bench.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -554,7 +590,13 @@ description: Operations executed bench.kcl "type": "Number", "value": 2.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -580,7 +622,7 @@ description: Operations executed bench.kcl "name": "dividerSketch", "functionSourceRange": [ 309, - 1312, + 1393, 5 ], "unlabeledArg": null, @@ -590,7 +632,7 @@ description: Operations executed bench.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -613,7 +655,13 @@ description: Operations executed bench.kcl "type": "Number", "value": -2.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -730,7 +778,13 @@ description: Operations executed bench.kcl "type": "Number", "value": -28.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -753,8 +807,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "connector", "functionSourceRange": [ - 1889, - 2052, + 1966, + 2129, 5 ], "unlabeledArg": null, @@ -768,8 +822,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "connectorSketch", "functionSourceRange": [ - 1626, - 1868, + 1703, + 1945, 5 ], "unlabeledArg": null, @@ -779,7 +833,7 @@ description: Operations executed bench.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -833,8 +887,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "connectorSketch", "functionSourceRange": [ - 1626, - 1868, + 1703, + 1945, 5 ], "unlabeledArg": null, @@ -844,7 +898,7 @@ description: Operations executed bench.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -902,7 +956,13 @@ description: Operations executed bench.kcl "type": "Number", "value": -30.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -925,8 +985,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "seatSlats", "functionSourceRange": [ - 2474, - 2560, + 2551, + 2637, 5 ], "unlabeledArg": null, @@ -940,8 +1000,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "seatSlatSketch", "functionSourceRange": [ - 2071, - 2453, + 2148, + 2530, 5 ], "unlabeledArg": null, @@ -951,7 +1011,7 @@ description: Operations executed bench.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1026,7 +1086,13 @@ description: Operations executed bench.kcl "type": "Number", "value": -30.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1049,8 +1115,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "backSlats", "functionSourceRange": [ - 2993, - 3084, + 3106, + 3197, 5 ], "unlabeledArg": null, @@ -1064,8 +1130,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "backSlatsSketch", "functionSourceRange": [ - 2580, - 2972, + 2657, + 3085, 5 ], "unlabeledArg": null, @@ -1075,7 +1141,7 @@ description: Operations executed bench.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1143,8 +1209,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "armRest", "functionSourceRange": [ - 3671, - 3859, + 3784, + 3972, 5 ], "unlabeledArg": null, @@ -1159,7 +1225,13 @@ description: Operations executed bench.kcl "type": "Number", "value": 28.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1182,8 +1254,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "armRestPath", "functionSourceRange": [ - 3100, - 3325, + 3213, + 3438, 5 ], "unlabeledArg": null, @@ -1193,7 +1265,7 @@ description: Operations executed bench.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1245,8 +1317,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "armRestProfile", "functionSourceRange": [ - 3344, - 3652, + 3457, + 3765, 5 ], "unlabeledArg": null, @@ -1256,7 +1328,7 @@ description: Operations executed bench.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1306,8 +1378,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "armRest", "functionSourceRange": [ - 3671, - 3859, + 3784, + 3972, 5 ], "unlabeledArg": null, @@ -1322,7 +1394,13 @@ description: Operations executed bench.kcl "type": "Number", "value": -28.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1345,8 +1423,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "armRestPath", "functionSourceRange": [ - 3100, - 3325, + 3213, + 3438, 5 ], "unlabeledArg": null, @@ -1356,7 +1434,7 @@ description: Operations executed bench.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1408,8 +1486,8 @@ description: Operations executed bench.kcl "type": "FunctionCall", "name": "armRestProfile", "functionSourceRange": [ - 3344, - 3652, + 3457, + 3765, 5 ], "unlabeledArg": null, @@ -1419,7 +1497,7 @@ description: Operations executed bench.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/kcl_samples/bracket/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/bracket/artifact_commands.snap index fa6610892..c1b11d009 100644 --- a/rust/kcl-lib/tests/kcl_samples/bracket/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/bracket/artifact_commands.snap @@ -29,6 +29,14 @@ description: Artifact commands bracket.kcl "hidden": true } }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "set_scene_units", + "unit": "in" + } + }, { "cmdId": "[uuid]", "range": [], @@ -106,7 +114,7 @@ description: Artifact commands bracket.kcl "segment": { "type": "line", "end": { - "x": 4.6487, + "x": 4.6151, "y": 0.0, "z": 0.0 }, @@ -124,7 +132,7 @@ description: Artifact commands bracket.kcl "type": "line", "end": { "x": 0.0, - "y": 0.3513, + "y": 0.3849, "z": 0.0 }, "relative": true @@ -158,7 +166,7 @@ description: Artifact commands bracket.kcl "type": "line", "end": { "x": 0.0, - "y": -2.0, + "y": -2.25, "z": 0.0 }, "relative": true @@ -174,7 +182,7 @@ description: Artifact commands bracket.kcl "segment": { "type": "line", "end": { - "x": 0.3513, + "x": 0.3849, "y": 0.0, "z": 0.0 }, @@ -229,8 +237,9 @@ description: Artifact commands bracket.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": 6.0, - "faces": null + "distance": 5.0, + "faces": null, + "opposite": "None" } }, { @@ -377,118 +386,6 @@ description: Artifact commands bracket.kcl "face_id": "[uuid]" } }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_get_next_adjacent_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "face_id": "[uuid]" - } - }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_get_next_adjacent_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "face_id": "[uuid]" - } - }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_get_opposite_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "face_id": "[uuid]" - } - }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_get_opposite_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "face_id": "[uuid]" - } - }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_fillet_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "radius": 0.601324026261472, - "tolerance": 0.0000001, - "cut_type": "fillet" - } - }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_fillet_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "radius": 0.25, - "tolerance": 0.0000001, - "cut_type": "fillet" - } - }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_fillet_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "radius": 0.25, - "tolerance": 0.0000001, - "cut_type": "fillet" - } - }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_fillet_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "radius": 0.25, - "tolerance": 0.0000001, - "cut_type": "fillet" - } - }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_fillet_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "radius": 0.25, - "tolerance": 0.0000001, - "cut_type": "fillet" - } - }, - { - "cmdId": "[uuid]", - "range": [], - "command": { - "type": "solid3d_fillet_edge", - "object_id": "[uuid]", - "edge_id": "[uuid]", - "radius": 0.25, - "tolerance": 0.0000001, - "cut_type": "fillet" - } - }, { "cmdId": "[uuid]", "range": [], @@ -515,8 +412,8 @@ description: Artifact commands bracket.kcl "type": "move_path_pen", "path": "[uuid]", "to": { - "x": -1.0, - "y": 1.0, + "x": -0.75, + "y": 0.75, "z": 0.0 } } @@ -537,8 +434,8 @@ description: Artifact commands bracket.kcl "segment": { "type": "arc", "center": { - "x": -1.25, - "y": 1.0 + "x": -1.0, + "y": 0.75 }, "radius": 0.25, "start": { @@ -572,7 +469,7 @@ description: Artifact commands bracket.kcl [ { "translate": { - "x": -2.5, + "x": -2.8651438116461088, "y": 0.0, "z": 0.0 }, @@ -613,7 +510,7 @@ description: Artifact commands bracket.kcl { "translate": { "x": 0.0, - "y": 4.0, + "y": 3.5, "z": 0.0 }, "scale": { @@ -653,7 +550,7 @@ description: Artifact commands bracket.kcl { "translate": { "x": 0.0, - "y": 4.0, + "y": 3.5, "z": 0.0 }, "scale": { @@ -699,8 +596,9 @@ description: Artifact commands bracket.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": -0.361324026261472, - "faces": null + "distance": -0.39485618835389114, + "faces": null, + "opposite": "None" } }, { @@ -765,8 +663,9 @@ description: Artifact commands bracket.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": -0.361324026261472, - "faces": null + "distance": -0.39485618835389114, + "faces": null, + "opposite": "None" } }, { @@ -831,8 +730,9 @@ description: Artifact commands bracket.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": -0.361324026261472, - "faces": null + "distance": -0.39485618835389114, + "faces": null, + "opposite": "None" } }, { @@ -897,8 +797,9 @@ description: Artifact commands bracket.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": -0.361324026261472, - "faces": null + "distance": -0.39485618835389114, + "faces": null, + "opposite": "None" } }, { @@ -971,8 +872,8 @@ description: Artifact commands bracket.kcl "type": "move_path_pen", "path": "[uuid]", "to": { - "x": 1.25, - "y": -1.0, + "x": 1.375, + "y": 0.9375, "z": 0.0 } } @@ -993,10 +894,10 @@ description: Artifact commands bracket.kcl "segment": { "type": "arc", "center": { - "x": 1.0, - "y": -1.0 + "x": 1.0625, + "y": 0.9375 }, - "radius": 0.25, + "radius": 0.3125, "start": { "unit": "degrees", "value": 0.0 @@ -1028,8 +929,8 @@ description: Artifact commands bracket.kcl [ { "translate": { - "x": 4.0, - "y": 0.0, + "x": 0.0, + "y": 3.125, "z": 0.0 }, "scale": { @@ -1075,8 +976,9 @@ description: Artifact commands bracket.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": -0.45132402626147194, - "faces": null + "distance": -0.4848561883538911, + "faces": null, + "opposite": "None" } }, { @@ -1141,8 +1043,9 @@ description: Artifact commands bracket.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": -0.45132402626147194, - "faces": null + "distance": -0.4848561883538911, + "faces": null, + "opposite": "None" } }, { @@ -1188,5 +1091,117 @@ description: Artifact commands bracket.kcl "edge_id": "[uuid]", "face_id": "[uuid]" } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_fillet_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "radius": 0.6348561883538911, + "tolerance": 0.0000001, + "cut_type": "fillet" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_fillet_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "radius": 0.25, + "tolerance": 0.0000001, + "cut_type": "fillet" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_fillet_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "radius": 0.5, + "tolerance": 0.0000001, + "cut_type": "fillet" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_fillet_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "radius": 0.5, + "tolerance": 0.0000001, + "cut_type": "fillet" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_fillet_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "radius": 0.5, + "tolerance": 0.0000001, + "cut_type": "fillet" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_fillet_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "radius": 0.5, + "tolerance": 0.0000001, + "cut_type": "fillet" + } } ] diff --git a/rust/kcl-lib/tests/kcl_samples/bracket/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/bracket/artifact_graph_flowchart.snap.md index 9e5dd2358..0cdc96878 100644 --- a/rust/kcl-lib/tests/kcl_samples/bracket/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/bracket/artifact_graph_flowchart.snap.md @@ -1,28 +1,28 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[1085, 1110, 0]"] - 3["Segment
[1116, 1169, 0]"] - 4["Segment
[1175, 1214, 0]"] - 5["Segment
[1220, 1262, 0]"] - 6["Segment
[1268, 1309, 0]"] - 7["Segment
[1315, 1354, 0]"] - 8["Segment
[1360, 1430, 0]"] - 9["Segment
[1436, 1443, 0]"] + 2["Path
[2001, 2026, 0]"] + 3["Segment
[2032, 2090, 0]"] + 4["Segment
[2096, 2135, 0]"] + 5["Segment
[2141, 2188, 0]"] + 6["Segment
[2194, 2240, 0]"] + 7["Segment
[2246, 2285, 0]"] + 8["Segment
[2291, 2361, 0]"] + 9["Segment
[2367, 2374, 0]"] 10[Solid2d] end - subgraph path38 [Path] - 38["Path
[1823, 1885, 0]"] - 39["Segment
[1823, 1885, 0]"] - 40[Solid2d] + subgraph path32 [Path] + 32["Path
[2519, 2709, 0]"] + 33["Segment
[2519, 2709, 0]"] + 34[Solid2d] end - subgraph path48 [Path] - 48["Path
[2112, 2171, 0]"] - 49["Segment
[2112, 2171, 0]"] - 50[Solid2d] + subgraph path42 [Path] + 42["Path
[3143, 3345, 0]"] + 43["Segment
[3143, 3345, 0]"] + 44[Solid2d] end - 1["Plane
[1062, 1079, 0]"] - 11["Sweep Extrusion
[1449, 1475, 0]"] + 1["Plane
[1978, 1995, 0]"] + 11["Sweep Extrusion
[2380, 2406, 0]"] 12[Wall] 13[Wall] 14[Wall] @@ -43,26 +43,26 @@ flowchart LR 29["SweepEdge Adjacent"] 30["SweepEdge Opposite"] 31["SweepEdge Adjacent"] - 32["EdgeCut Fillet
[1481, 1550, 0]"] - 33["EdgeCut Fillet
[1556, 1622, 0]"] - 34["EdgeCut Fillet
[1628, 1697, 0]"] - 35["EdgeCut Fillet
[1628, 1697, 0]"] - 36["EdgeCut Fillet
[1703, 1772, 0]"] - 37["EdgeCut Fillet
[1703, 1772, 0]"] - 41["Sweep Extrusion
[2024, 2061, 0]"] - 42[Wall] - 43["SweepEdge Opposite"] - 44["SweepEdge Adjacent"] - 45["Sweep Extrusion
[2024, 2061, 0]"] - 46["Sweep Extrusion
[2024, 2061, 0]"] - 47["Sweep Extrusion
[2024, 2061, 0]"] - 51["Sweep Extrusion
[2242, 2279, 0]"] - 52[Wall] - 53["SweepEdge Opposite"] - 54["SweepEdge Adjacent"] - 55["Sweep Extrusion
[2242, 2279, 0]"] - 56["StartSketchOnFace
[1786, 1817, 0]"] - 57["StartSketchOnFace
[2075, 2106, 0]"] + 35["Sweep Extrusion
[2995, 3032, 0]"] + 36[Wall] + 37["SweepEdge Opposite"] + 38["SweepEdge Adjacent"] + 39["Sweep Extrusion
[2995, 3032, 0]"] + 40["Sweep Extrusion
[2995, 3032, 0]"] + 41["Sweep Extrusion
[2995, 3032, 0]"] + 45["Sweep Extrusion
[3460, 3497, 0]"] + 46[Wall] + 47["SweepEdge Opposite"] + 48["SweepEdge Adjacent"] + 49["Sweep Extrusion
[3460, 3497, 0]"] + 50["EdgeCut Fillet
[3514, 3594, 0]"] + 51["EdgeCut Fillet
[3595, 3672, 0]"] + 52["EdgeCut Fillet
[3698, 3840, 0]"] + 53["EdgeCut Fillet
[3698, 3840, 0]"] + 54["EdgeCut Fillet
[3698, 3840, 0]"] + 55["EdgeCut Fillet
[3698, 3840, 0]"] + 56["StartSketchOnFace
[2473, 2513, 0]"] + 57["StartSketchOnFace
[3097, 3137, 0]"] 1 --- 2 2 --- 3 2 --- 4 @@ -79,7 +79,7 @@ flowchart LR 4 --- 13 4 --- 22 4 --- 23 - 4 --- 34 + 4 --- 52 5 --- 14 5 --- 24 5 --- 25 @@ -89,7 +89,7 @@ flowchart LR 7 --- 16 7 --- 28 7 --- 29 - 7 --- 36 + 7 --- 54 8 --- 17 8 --- 30 8 --- 31 @@ -113,30 +113,30 @@ flowchart LR 11 --- 29 11 --- 30 11 --- 31 - 14 --- 38 - 15 --- 48 - 25 <--x 32 - 31 <--x 33 - 22 <--x 35 - 28 <--x 37 - 38 --- 39 - 38 ---- 41 - 38 --- 40 - 39 --- 42 - 39 --- 43 - 39 --- 44 - 41 --- 42 - 41 --- 43 - 41 --- 44 - 48 --- 49 - 48 ---- 51 - 48 --- 50 - 49 --- 52 - 49 --- 53 - 49 --- 54 - 51 --- 52 - 51 --- 53 - 51 --- 54 + 14 --- 32 + 15 --- 42 + 32 --- 33 + 32 ---- 35 + 32 --- 34 + 33 --- 36 + 33 --- 37 + 33 --- 38 + 35 --- 36 + 35 --- 37 + 35 --- 38 + 42 --- 43 + 42 ---- 45 + 42 --- 44 + 43 --- 46 + 43 --- 47 + 43 --- 48 + 45 --- 46 + 45 --- 47 + 45 --- 48 + 25 <--x 50 + 31 <--x 51 + 22 <--x 53 + 28 <--x 55 14 <--x 56 15 <--x 57 ``` diff --git a/rust/kcl-lib/tests/kcl_samples/bracket/ast.snap b/rust/kcl-lib/tests/kcl_samples/bracket/ast.snap index f03b96e04..c9163d778 100644 --- a/rust/kcl-lib/tests/kcl_samples/bracket/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/bracket/ast.snap @@ -8,17 +8,17 @@ description: Result of parsing bracket.kcl { "commentStart": 0, "declaration": { - "commentStart": 423, + "commentStart": 0, "end": 0, "id": { - "commentStart": 423, + "commentStart": 0, "end": 0, "name": "sigmaAllow", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 436, + "commentStart": 0, "end": 0, "raw": "35000", "start": 0, @@ -35,37 +35,33 @@ description: Result of parsing bracket.kcl "end": 0, "kind": "const", "preComments": [ - "// Shelf Bracket", - "// This is a bracket that holds a shelf. It is made of aluminum and is designed to hold a force of 300 lbs. The bracket is 6 inches wide and the force is applied at the end of the shelf, 12 inches from the wall. The bracket has a factor of safety of 1.2. The legs of the bracket are 5 inches and 2 inches long. The thickness of the bracket is calculated from the constraints provided.", - "", - "", - "// Define constants" + "// Define parameters" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { - "commentStart": 441, + "commentStart": 0, "declaration": { - "commentStart": 468, + "commentStart": 0, "end": 0, "id": { - "commentStart": 468, + "commentStart": 0, "end": 0, "name": "width", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 476, + "commentStart": 0, "end": 0, - "raw": "6", + "raw": "5.0", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 6.0, + "value": 5.0, "suffix": "None" } }, @@ -79,19 +75,19 @@ description: Result of parsing bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 477, + "commentStart": 0, "declaration": { - "commentStart": 486, + "commentStart": 0, "end": 0, "id": { - "commentStart": 486, + "commentStart": 0, "end": 0, "name": "p", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 490, + "commentStart": 0, "end": 0, "raw": "300", "start": 0, @@ -112,19 +108,19 @@ description: Result of parsing bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 493, + "commentStart": 0, "declaration": { - "commentStart": 518, + "commentStart": 0, "end": 0, "id": { - "commentStart": 518, + "commentStart": 0, "end": 0, - "name": "factorOfSafety", + "name": "fos", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 535, + "commentStart": 0, "end": 0, "raw": "1.2", "start": 0, @@ -145,21 +141,21 @@ description: Result of parsing bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 538, + "commentStart": 0, "declaration": { - "commentStart": 553, + "commentStart": 0, "end": 0, "id": { - "commentStart": 553, + "commentStart": 0, "end": 0, - "name": "shelfMountL", + "name": "shelfMountLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 567, + "commentStart": 0, "end": 0, - "raw": "5", + "raw": "5.0", "start": 0, "type": "Literal", "type": "Literal", @@ -178,26 +174,26 @@ description: Result of parsing bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 568, + "commentStart": 0, "declaration": { - "commentStart": 579, + "commentStart": 0, "end": 0, "id": { - "commentStart": 579, + "commentStart": 0, "end": 0, - "name": "wallMountL", + "name": "wallMountLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 592, + "commentStart": 0, "end": 0, - "raw": "2", + "raw": "2.25", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 2.0, + "value": 2.25, "suffix": "None" } }, @@ -211,19 +207,19 @@ description: Result of parsing bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 593, + "commentStart": 0, "declaration": { - "commentStart": 604, + "commentStart": 0, "end": 0, "id": { - "commentStart": 604, + "commentStart": 0, "end": 0, "name": "shelfDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 617, + "commentStart": 0, "end": 0, "raw": "12", "start": 0, @@ -244,26 +240,92 @@ description: Result of parsing bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 619, + "commentStart": 0, "declaration": { - "commentStart": 665, + "commentStart": 0, "end": 0, "id": { - "commentStart": 665, + "commentStart": 0, + "end": 0, + "name": "shelfMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "raw": ".50", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.5, + "suffix": "None" + } + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "raw": ".625", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.625, + "suffix": "None" + } + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, "end": 0, "name": "moment", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 674, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 674, + "commentStart": 0, "end": 0, "name": { - "commentStart": 674, + "commentStart": 0, "end": 0, "name": "shelfDepth", "start": 0, @@ -277,10 +339,10 @@ description: Result of parsing bracket.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 687, + "commentStart": 0, "end": 0, "name": { - "commentStart": 687, + "commentStart": 0, "end": 0, "name": "p", "start": 0, @@ -300,17 +362,22 @@ description: Result of parsing bracket.kcl }, "end": 0, "kind": "const", + "preComments": [ + "", + "", + "// Calculated parameters" + ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { - "commentStart": 688, + "commentStart": 0, "declaration": { - "commentStart": 816, + "commentStart": 0, "end": 0, "id": { - "commentStart": 816, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -319,20 +386,20 @@ description: Result of parsing bracket.kcl "init": { "arguments": [ { - "commentStart": 833, + "commentStart": 0, "end": 0, "left": { - "commentStart": 833, + "commentStart": 0, "end": 0, "left": { - "commentStart": 833, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 833, + "commentStart": 0, "end": 0, "name": { - "commentStart": 833, + "commentStart": 0, "end": 0, "name": "moment", "start": 0, @@ -346,12 +413,12 @@ description: Result of parsing bracket.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 842, + "commentStart": 0, "end": 0, "name": { - "commentStart": 842, + "commentStart": 0, "end": 0, - "name": "factorOfSafety", + "name": "fos", "start": 0, "type": "Identifier" }, @@ -366,7 +433,7 @@ description: Result of parsing bracket.kcl }, "operator": "*", "right": { - "commentStart": 859, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -383,14 +450,14 @@ description: Result of parsing bracket.kcl }, "operator": "/", "right": { - "commentStart": 864, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 864, + "commentStart": 0, "end": 0, "name": { - "commentStart": 864, + "commentStart": 0, "end": 0, "name": "sigmaAllow", "start": 0, @@ -404,10 +471,10 @@ description: Result of parsing bracket.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 877, + "commentStart": 0, "end": 0, "name": { - "commentStart": 877, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -429,10 +496,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 828, + "commentStart": 0, "end": 0, "name": { - "commentStart": 828, + "commentStart": 0, "end": 0, "name": "sqrt", "start": 0, @@ -442,7 +509,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 828, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -453,29 +520,26 @@ description: Result of parsing bracket.kcl }, "end": 0, "kind": "const", - "preComments": [ - "// Calculate required thickness of bracket" - ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { - "commentStart": 884, + "commentStart": 0, "declaration": { - "commentStart": 960, + "commentStart": 0, "end": 0, "id": { - "commentStart": 960, + "commentStart": 0, "end": 0, - "name": "filletRadius", + "name": "bendRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 975, + "commentStart": 0, "end": 0, - "raw": ".25", + "raw": "0.25", "start": 0, "type": "Literal", "type": "Literal", @@ -494,28 +558,28 @@ description: Result of parsing bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 979, + "commentStart": 0, "declaration": { - "commentStart": 979, + "commentStart": 0, "end": 0, "id": { - "commentStart": 979, + "commentStart": 0, "end": 0, - "name": "extFilletRadius", + "name": "extBendRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 997, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 997, + "commentStart": 0, "end": 0, "name": { - "commentStart": 997, + "commentStart": 0, "end": 0, - "name": "filletRadius", + "name": "bendRadius", "start": 0, "type": "Identifier" }, @@ -527,10 +591,10 @@ description: Result of parsing bracket.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1012, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1012, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -555,21 +619,21 @@ description: Result of parsing bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 1022, + "commentStart": 0, "declaration": { - "commentStart": 1022, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1022, + "commentStart": 0, "end": 0, - "name": "mountingHoleDiameter", + "name": "filletRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1045, + "commentStart": 0, "end": 0, - "raw": "0.5", + "raw": ".5", "start": 0, "type": "Literal", "type": "Literal", @@ -588,14 +652,501 @@ description: Result of parsing bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 1048, + "commentStart": 0, "declaration": { - "commentStart": 1050, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1050, + "commentStart": 0, "end": 0, - "name": "sketch001", + "name": "shelfMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "1.5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.5, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "1.5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.5, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "3", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 3.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "\"Holes not possible. Either decrease hole diameter or increase wallMountLength\"", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "Holes not possible. Either decrease hole diameter or increase wallMountLength" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "assertGreaterThanOrEq", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "preComments": [ + "", + "", + "// Add checks to ensure bracket is possible. These make sure that there is adequate distance between holes and edges." + ], + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "5.5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 5.5, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "\"wallMountLength must be longer for hole sizes to work. Either decrease mounting hole diameters or increase shelfMountLength\"", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "wallMountLength must be longer for hole sizes to work. Either decrease mounting hole diameters or increase shelfMountLength" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "assertGreaterThanOrEq", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "5.5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 5.5, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "\"Holes not possible. Either decrease hole diameter or increase width\"", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "Holes not possible. Either decrease hole diameter or increase width" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "assertGreaterThanOrEq", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHoleDiameter", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "5.5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 5.5, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "\"Holes not possible. Either decrease hole diameter or increase width\"", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "Holes not possible. Either decrease hole diameter or increase width" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "assertGreaterThanOrEq", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "bracketBody", "start": 0, "type": "Identifier" }, @@ -605,10 +1156,10 @@ description: Result of parsing bracket.kcl "arguments": [ { "abs_path": false, - "commentStart": 1076, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1076, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -622,10 +1173,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1062, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1062, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -635,7 +1186,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1062, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -644,10 +1195,10 @@ description: Result of parsing bracket.kcl { "arguments": [ { - "commentStart": 1100, + "commentStart": 0, "elements": [ { - "commentStart": 1101, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -659,7 +1210,7 @@ description: Result of parsing bracket.kcl } }, { - "commentStart": 1104, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -677,7 +1228,7 @@ description: Result of parsing bracket.kcl "type": "ArrayExpression" }, { - "commentStart": 1108, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -686,10 +1237,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1085, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1085, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -699,7 +1250,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1085, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -710,23 +1261,23 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1122, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1131, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1131, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1131, + "commentStart": 0, "end": 0, - "name": "shelfMountL", + "name": "shelfMountLength", "start": 0, "type": "Identifier" }, @@ -738,10 +1289,10 @@ description: Result of parsing bracket.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1145, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1145, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -760,14 +1311,14 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1156, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1162, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -778,10 +1329,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1116, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1116, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -791,7 +1342,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1116, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -803,7 +1354,7 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1181, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -811,10 +1362,10 @@ description: Result of parsing bracket.kcl }, "arg": { "abs_path": false, - "commentStart": 1190, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1190, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -829,14 +1380,14 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1201, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1207, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -847,10 +1398,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1175, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1175, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -860,7 +1411,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1175, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -872,7 +1423,7 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1226, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -881,12 +1432,12 @@ description: Result of parsing bracket.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 1236, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1236, + "commentStart": 0, "end": 0, - "name": "shelfMountL", + "name": "shelfMountLength", "start": 0, "type": "Identifier" }, @@ -895,7 +1446,7 @@ description: Result of parsing bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 1235, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -906,14 +1457,14 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1249, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1255, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -924,10 +1475,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1220, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1220, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -937,7 +1488,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1220, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -949,7 +1500,7 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1274, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -958,12 +1509,12 @@ description: Result of parsing bracket.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 1284, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1284, + "commentStart": 0, "end": 0, - "name": "wallMountL", + "name": "wallMountLength", "start": 0, "type": "Identifier" }, @@ -972,7 +1523,7 @@ description: Result of parsing bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 1283, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -983,14 +1534,14 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1296, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1302, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1001,10 +1552,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1268, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1268, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1014,7 +1565,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1268, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1026,7 +1577,7 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1321, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1034,10 +1585,10 @@ description: Result of parsing bracket.kcl }, "arg": { "abs_path": false, - "commentStart": 1330, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1330, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -1052,14 +1603,14 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1341, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1347, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1070,10 +1621,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1315, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1315, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1083,7 +1634,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1315, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1095,19 +1646,19 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1365, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1379, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1394, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1116,10 +1667,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1380, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1380, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -1129,7 +1680,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1380, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1138,7 +1689,7 @@ description: Result of parsing bracket.kcl { "arguments": [ { - "commentStart": 1412, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1147,10 +1698,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1398, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1398, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -1160,7 +1711,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1398, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1176,14 +1727,14 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1417, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1423, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1194,10 +1745,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1360, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1360, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1207,7 +1758,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1360, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1218,10 +1769,10 @@ description: Result of parsing bracket.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1436, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1436, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1231,7 +1782,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1436, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1242,7 +1793,7 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1460, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1250,10 +1801,10 @@ description: Result of parsing bracket.kcl }, "arg": { "abs_path": false, - "commentStart": 1469, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1469, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -1268,10 +1819,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1449, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1449, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1281,494 +1832,40 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1449, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 1457, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", "type": "PipeSubstitution" } - }, - { - "arguments": [ - { - "type": "LabeledArg", - "label": { - "commentStart": 1488, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "arg": { - "abs_path": false, - "commentStart": 1497, - "end": 0, - "name": { - "commentStart": 1497, - "end": 0, - "name": "extFilletRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - }, - { - "type": "LabeledArg", - "label": { - "commentStart": 1514, - "end": 0, - "name": "tags", - "start": 0, - "type": "Identifier" - }, - "arg": { - "commentStart": 1521, - "elements": [ - { - "arguments": [ - { - "abs_path": false, - "commentStart": 1542, - "end": 0, - "name": { - "commentStart": 1542, - "end": 0, - "name": "seg03", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1522, - "end": 0, - "name": { - "commentStart": 1522, - "end": 0, - "name": "getNextAdjacentEdge", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1522, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 1481, - "end": 0, - "name": { - "commentStart": 1481, - "end": 0, - "name": "fillet", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1481, - "end": 0, - "start": 0, - "type": "CallExpressionKw", - "type": "CallExpressionKw", - "unlabeled": null - }, - { - "arguments": [ - { - "type": "LabeledArg", - "label": { - "commentStart": 1563, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "arg": { - "abs_path": false, - "commentStart": 1572, - "end": 0, - "name": { - "commentStart": 1572, - "end": 0, - "name": "filletRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - }, - { - "type": "LabeledArg", - "label": { - "commentStart": 1586, - "end": 0, - "name": "tags", - "start": 0, - "type": "Identifier" - }, - "arg": { - "commentStart": 1593, - "elements": [ - { - "arguments": [ - { - "abs_path": false, - "commentStart": 1614, - "end": 0, - "name": { - "commentStart": 1614, - "end": 0, - "name": "seg06", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1594, - "end": 0, - "name": { - "commentStart": 1594, - "end": 0, - "name": "getNextAdjacentEdge", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1594, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 1556, - "end": 0, - "name": { - "commentStart": 1556, - "end": 0, - "name": "fillet", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1556, - "end": 0, - "start": 0, - "type": "CallExpressionKw", - "type": "CallExpressionKw", - "unlabeled": null - }, - { - "arguments": [ - { - "type": "LabeledArg", - "label": { - "commentStart": 1635, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "arg": { - "abs_path": false, - "commentStart": 1644, - "end": 0, - "name": { - "commentStart": 1644, - "end": 0, - "name": "filletRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - }, - { - "type": "LabeledArg", - "label": { - "commentStart": 1658, - "end": 0, - "name": "tags", - "start": 0, - "type": "Identifier" - }, - "arg": { - "commentStart": 1665, - "elements": [ - { - "abs_path": false, - "commentStart": 1666, - "end": 0, - "name": { - "commentStart": 1666, - "end": 0, - "name": "seg02", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "arguments": [ - { - "abs_path": false, - "commentStart": 1689, - "end": 0, - "name": { - "commentStart": 1689, - "end": 0, - "name": "seg02", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1673, - "end": 0, - "name": { - "commentStart": 1673, - "end": 0, - "name": "getOppositeEdge", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1673, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 1628, - "end": 0, - "name": { - "commentStart": 1628, - "end": 0, - "name": "fillet", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1628, - "end": 0, - "start": 0, - "type": "CallExpressionKw", - "type": "CallExpressionKw", - "unlabeled": null - }, - { - "arguments": [ - { - "type": "LabeledArg", - "label": { - "commentStart": 1710, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "arg": { - "abs_path": false, - "commentStart": 1719, - "end": 0, - "name": { - "commentStart": 1719, - "end": 0, - "name": "filletRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - }, - { - "type": "LabeledArg", - "label": { - "commentStart": 1733, - "end": 0, - "name": "tags", - "start": 0, - "type": "Identifier" - }, - "arg": { - "commentStart": 1740, - "elements": [ - { - "abs_path": false, - "commentStart": 1741, - "end": 0, - "name": { - "commentStart": 1741, - "end": 0, - "name": "seg05", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "arguments": [ - { - "abs_path": false, - "commentStart": 1764, - "end": 0, - "name": { - "commentStart": 1764, - "end": 0, - "name": "seg05", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1748, - "end": 0, - "name": { - "commentStart": 1748, - "end": 0, - "name": "getOppositeEdge", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1748, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 1703, - "end": 0, - "name": { - "commentStart": 1703, - "end": 0, - "name": "fillet", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1703, - "end": 0, - "start": 0, - "type": "CallExpressionKw", - "type": "CallExpressionKw", - "unlabeled": null } ], - "commentStart": 1062, + "commentStart": 0, "end": 0, + "nonCodeMeta": { + "nonCodeNodes": { + "9": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLineBlockComment", + "value": "Add mounting holes to mount to the shelf", + "style": "line" + } + } + ] + }, + "startNodes": [] + }, "start": 0, "type": "PipeExpression", "type": "PipeExpression" @@ -1778,19 +1875,24 @@ description: Result of parsing bracket.kcl }, "end": 0, "kind": "const", + "preComments": [ + "", + "", + "// Create the body of the bracket" + ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { - "commentStart": 1772, + "commentStart": 0, "declaration": { - "commentStart": 1774, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1774, + "commentStart": 0, "end": 0, - "name": "sketch002", + "name": "shelfMountingHoles", "start": 0, "type": "Identifier" }, @@ -1799,44 +1901,38 @@ description: Result of parsing bracket.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1800, - "end": 0, - "name": { - "commentStart": 1800, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "sketch001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 1811, - "end": 0, - "name": { - "commentStart": 1811, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg03", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg03", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1786, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1786, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1846,40 +1942,84 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1786, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bracketBody", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1830, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1839, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1841, + "commentStart": 0, "end": 0, - "raw": "1.25", + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.25, - "suffix": "None" - } + "type": "BinaryExpression", + "type": "BinaryExpression" }, - "commentStart": 1840, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1887,16 +2027,20 @@ description: Result of parsing bracket.kcl "type": "UnaryExpression" }, { - "commentStart": 1847, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "1", + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" } ], "end": 0, @@ -1908,23 +2052,23 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1851, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1860, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1860, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1860, + "commentStart": 0, "end": 0, - "name": "mountingHoleDiameter", + "name": "shelfMountingHoleDiameter", "start": 0, "type": "Identifier" }, @@ -1935,7 +2079,7 @@ description: Result of parsing bracket.kcl }, "operator": "/", "right": { - "commentStart": 1883, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1954,10 +2098,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1823, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1823, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1967,7 +2111,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1823, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1979,14 +2123,14 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1907, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1919, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2001,40 +2145,124 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1922, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1933, + "commentStart": 0, "end": 0, - "raw": "2.5", + "left": { + "commentStart": 0, + "end": 0, + "left": { + "argument": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extBendRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.5, - "suffix": "None" - } + "type": "BinaryExpression", + "type": "BinaryExpression" } }, { "type": "LabeledArg", "label": { - "commentStart": 1938, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1945, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1947, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2045,7 +2273,7 @@ description: Result of parsing bracket.kcl "suffix": "None" } }, - "commentStart": 1946, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2053,7 +2281,7 @@ description: Result of parsing bracket.kcl "type": "UnaryExpression" }, { - "commentStart": 1950, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2074,10 +2302,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1891, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1891, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -2087,7 +2315,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1891, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2099,14 +2327,14 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1975, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1987, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2121,39 +2349,87 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1990, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2001, + "commentStart": 0, "end": 0, - "raw": "4", + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shelfMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 4.0, - "suffix": "None" - } + "type": "BinaryExpression", + "type": "BinaryExpression" } }, { "type": "LabeledArg", "label": { - "commentStart": 2004, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2011, + "commentStart": 0, "elements": [ { - "commentStart": 2012, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2165,7 +2441,7 @@ description: Result of parsing bracket.kcl } }, { - "commentStart": 2015, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2186,10 +2462,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1959, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1959, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -2199,7 +2475,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1959, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2211,22 +2487,22 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2035, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2044, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 2045, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2045, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -2237,7 +2513,7 @@ description: Result of parsing bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 2044, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2246,7 +2522,7 @@ description: Result of parsing bracket.kcl }, "operator": "-", "right": { - "commentStart": 2057, + "commentStart": 0, "end": 0, "raw": ".01", "start": 0, @@ -2265,10 +2541,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2024, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2024, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2278,13 +2554,13 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2024, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 2032, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2292,8 +2568,26 @@ description: Result of parsing bracket.kcl } } ], - "commentStart": 1786, + "commentStart": 0, "end": 0, + "nonCodeMeta": { + "nonCodeNodes": { + "4": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLineBlockComment", + "value": "Add mounting holes to mount to the wall", + "style": "line" + } + } + ] + }, + "startNodes": [] + }, "start": 0, "type": "PipeExpression", "type": "PipeExpression" @@ -2308,14 +2602,14 @@ description: Result of parsing bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 2061, + "commentStart": 0, "declaration": { - "commentStart": 2063, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2063, + "commentStart": 0, "end": 0, - "name": "sketch003", + "name": "wallMountingHoles", "start": 0, "type": "Identifier" }, @@ -2324,44 +2618,38 @@ description: Result of parsing bracket.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 2089, - "end": 0, - "name": { - "commentStart": 2089, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "sketch001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 2100, - "end": 0, - "name": { - "commentStart": 2100, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg04", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg04", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 2075, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2075, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2371,57 +2659,121 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2075, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bracketBody", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2119, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2128, + "commentStart": 0, "elements": [ { - "commentStart": 2129, + "commentStart": 0, "end": 0, - "raw": "1", + "left": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } + "type": "BinaryExpression", + "type": "BinaryExpression" }, { - "argument": { - "commentStart": 2133, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - "commentStart": 2132, + "abs_path": false, + "commentStart": 0, "end": 0, - "operator": "-", + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "type": "Name", + "type": "Name" } ], "end": 0, @@ -2433,23 +2785,23 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2137, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2146, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2146, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2146, + "commentStart": 0, "end": 0, - "name": "mountingHoleDiameter", + "name": "wallMountingHoleDiameter", "start": 0, "type": "Identifier" }, @@ -2460,7 +2812,7 @@ description: Result of parsing bracket.kcl }, "operator": "/", "right": { - "commentStart": 2169, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2479,10 +2831,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2112, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2112, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -2492,7 +2844,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2112, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2504,14 +2856,14 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2193, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2205, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2526,51 +2878,87 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2208, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2219, + "commentStart": 0, "end": 0, - "raw": "4", + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallMountingHolePlacementOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 4.0, - "suffix": "None" - } + "type": "BinaryExpression", + "type": "BinaryExpression" } }, { "type": "LabeledArg", "label": { - "commentStart": 2222, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2229, + "commentStart": 0, "elements": [ { - "commentStart": 2230, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 2233, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2580,6 +2968,18 @@ description: Result of parsing bracket.kcl "value": 0.0, "suffix": "None" } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } } ], "end": 0, @@ -2591,10 +2991,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2177, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2177, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -2604,7 +3004,7 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2177, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2616,22 +3016,22 @@ description: Result of parsing bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2253, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2262, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 2263, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2263, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -2642,7 +3042,7 @@ description: Result of parsing bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 2262, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2651,7 +3051,7 @@ description: Result of parsing bracket.kcl }, "operator": "-", "right": { - "commentStart": 2275, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -2670,10 +3070,10 @@ description: Result of parsing bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2242, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2242, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2683,13 +3083,13 @@ description: Result of parsing bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2242, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 2250, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2697,8 +3097,26 @@ description: Result of parsing bracket.kcl } } ], - "commentStart": 2075, + "commentStart": 0, "end": 0, + "nonCodeMeta": { + "nonCodeNodes": { + "3": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLineBlockComment", + "value": "Apply bends", + "style": "line" + } + } + ] + }, + "startNodes": [] + }, "start": 0, "type": "PipeExpression", "type": "PipeExpression" @@ -2711,15 +3129,541 @@ description: Result of parsing bracket.kcl "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extBendRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tags", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg03", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "getNextAdjacentEdge", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "fillet", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bracketBody", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tags", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg06", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "getNextAdjacentEdge", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "fillet", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bracketBody", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "filletRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tags", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg02", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg02", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "getOppositeEdge", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg05", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg05", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "getOppositeEdge", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "fillet", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bracketBody", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + "preComments": [ + "", + "", + "// Apply corner fillets" + ], + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" } ], "commentStart": 0, "end": 0, + "innerAttrs": [ + { + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "settings", + "start": 0, + "type": "Identifier" + }, + "preComments": [ + "// Shelf Bracket", + "// This is a bracket that holds a shelf. It is made of aluminum and is designed to hold a force of 300 lbs. The bracket is 6 inches wide and the force is applied at the end of the shelf, 12 inches from the wall. The bracket has a factor of safety of 1.2. The legs of the bracket are 5 inches and 2 inches long. The thickness of the bracket is calculated from the constraints provided.", + "", + "", + "// Set units" + ], + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "defaultLengthUnit", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "in", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "start": 0, + "type": "Annotation" + } + ], "nonCodeMeta": { "nonCodeNodes": { "0": [ { - "commentStart": 441, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2730,22 +3674,9 @@ description: Result of parsing bracket.kcl } } ], - "1": [ - { - "commentStart": 477, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "inlineComment", - "value": "inch", - "style": "line" - } - } - ], "2": [ { - "commentStart": 493, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2758,135 +3689,68 @@ description: Result of parsing bracket.kcl ], "3": [ { - "commentStart": 538, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", "value": { "type": "inlineComment", - "value": "FOS of 1.2", - "style": "line" - } - } - ], - "4": [ - { - "commentStart": 568, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "inlineComment", - "value": "inches", - "style": "line" - } - } - ], - "5": [ - { - "commentStart": 593, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "inlineComment", - "value": "inches", + "value": "Factor of safety of 1.2", "style": "line" } } ], "6": [ { - "commentStart": 619, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", "value": { "type": "inlineComment", - "value": "Shelf is 12 inches in depth from the wall", + "value": "Shelf is 12 inches deep from the wall", "style": "line" } } ], - "7": [ + "9": [ { - "commentStart": 688, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", "value": { "type": "inlineComment", - "value": "assume the force is applied at the end of the shelf to be conservative (lb-in)", + "value": "assume the force is applied at the end of the shelf", "style": "line" } - }, - { - "commentStart": 770, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "newLine" - } } ], - "8": [ + "10": [ { - "commentStart": 884, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", "value": { "type": "inlineComment", - "value": "this is the calculation of two brackets holding up the shelf (inches)", + "value": "required thickness for two brackets to hold up the shelf", "style": "line" } - }, - { - "commentStart": 957, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "newLine" - } - } - ], - "11": [ - { - "commentStart": 1048, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "newLine" - } - } - ], - "12": [ - { - "commentStart": 1772, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "newLine" - } - } - ], - "13": [ - { - "commentStart": 2061, - "end": 0, - "start": 0, - "type": "NonCodeNode", - "value": { - "type": "newLine" - } } ] }, - "startNodes": [] + "startNodes": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLine" + } + } + ] }, "start": 0 } diff --git a/rust/kcl-lib/tests/kcl_samples/bracket/ops.snap b/rust/kcl-lib/tests/kcl_samples/bracket/ops.snap index 36d9da380..5b3f93012 100644 --- a/rust/kcl-lib/tests/kcl_samples/bracket/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/bracket/ops.snap @@ -5,7 +5,7 @@ description: Operations executed bracket.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -23,11 +23,11 @@ description: Operations executed bracket.kcl "length": { "value": { "type": "Number", - "value": 6.0, + "value": 5.0, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" }, "angle": { "type": "Degrees" @@ -52,30 +52,16 @@ description: Operations executed bracket.kcl }, { "labeledArgs": { - "radius": { + "face": { "value": { - "type": "Number", - "value": 0.601324026261472, - "ty": { - "type": "Unknown" - } - }, - "sourceRange": [] - }, - "tags": { - "value": { - "type": "Array", - "value": [ - { - "type": "Uuid", - "value": "[uuid]" - } - ] + "type": "TagIdentifier", + "value": "seg03", + "artifact_id": "[uuid]" }, "sourceRange": [] } }, - "name": "fillet", + "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", "unlabeledArg": { @@ -90,14 +76,136 @@ description: Operations executed bracket.kcl }, { "labeledArgs": { - "radius": { + "length": { "value": { "type": "Number", - "value": 0.25, + "value": -0.39485618835389114, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + } + }, + "name": "extrude", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Array", + "value": [ + { + "type": "Sketch", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Sketch", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Sketch", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Sketch", + "value": { + "artifactId": "[uuid]" + } + } + ] + }, + "sourceRange": [] + } + }, + { + "labeledArgs": { + "face": { + "value": { + "type": "TagIdentifier", + "value": "seg04", + "artifact_id": "[uuid]" + }, + "sourceRange": [] + } + }, + "name": "startSketchOn", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, + { + "labeledArgs": { + "length": { + "value": { + "type": "Number", + "value": -0.4848561883538911, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + } + }, + "name": "extrude", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Array", + "value": [ + { + "type": "Sketch", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Sketch", + "value": { + "artifactId": "[uuid]" + } + } + ] + }, + "sourceRange": [] + } + }, + { + "labeledArgs": { + "radius": { + "value": { + "type": "Number", + "value": 0.6348561883538911, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, "angle": { "type": "Degrees" @@ -141,7 +249,51 @@ description: Operations executed bracket.kcl "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + }, + "tags": { + "value": { + "type": "Array", + "value": [ + { + "type": "Uuid", + "value": "[uuid]" + } + ] + }, + "sourceRange": [] + } + }, + "name": "fillet", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, + { + "labeledArgs": { + "radius": { + "value": { + "type": "Number", + "value": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, "angle": { "type": "Degrees" @@ -162,47 +314,7 @@ description: Operations executed bracket.kcl { "type": "Uuid", "value": "[uuid]" - } - ] - }, - "sourceRange": [] - } - }, - "name": "fillet", - "sourceRange": [], - "type": "StdLibCall", - "unlabeledArg": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - } - }, - { - "labeledArgs": { - "radius": { - "value": { - "type": "Number", - "value": 0.25, - "ty": { - "type": "Default", - "len": { - "type": "Mm" }, - "angle": { - "type": "Degrees" - } - } - }, - "sourceRange": [] - }, - "tags": { - "value": { - "type": "Array", - "value": [ { "type": "TagIdentifier", "value": "seg05", @@ -229,141 +341,5 @@ description: Operations executed bracket.kcl }, "sourceRange": [] } - }, - { - "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { - "value": { - "type": "TagIdentifier", - "value": "seg03", - "artifact_id": "[uuid]" - }, - "sourceRange": [] - } - }, - "name": "startSketchOn", - "sourceRange": [], - "type": "StdLibCall", - "unlabeledArg": null - }, - { - "labeledArgs": { - "length": { - "value": { - "type": "Number", - "value": -0.361324026261472, - "ty": { - "type": "Unknown" - } - }, - "sourceRange": [] - } - }, - "name": "extrude", - "sourceRange": [], - "type": "StdLibCall", - "unlabeledArg": { - "value": { - "type": "Array", - "value": [ - { - "type": "Sketch", - "value": { - "artifactId": "[uuid]" - } - }, - { - "type": "Sketch", - "value": { - "artifactId": "[uuid]" - } - }, - { - "type": "Sketch", - "value": { - "artifactId": "[uuid]" - } - }, - { - "type": "Sketch", - "value": { - "artifactId": "[uuid]" - } - } - ] - }, - "sourceRange": [] - } - }, - { - "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { - "value": { - "type": "TagIdentifier", - "value": "seg04", - "artifact_id": "[uuid]" - }, - "sourceRange": [] - } - }, - "name": "startSketchOn", - "sourceRange": [], - "type": "StdLibCall", - "unlabeledArg": null - }, - { - "labeledArgs": { - "length": { - "value": { - "type": "Number", - "value": -0.45132402626147194, - "ty": { - "type": "Unknown" - } - }, - "sourceRange": [] - } - }, - "name": "extrude", - "sourceRange": [], - "type": "StdLibCall", - "unlabeledArg": { - "value": { - "type": "Array", - "value": [ - { - "type": "Sketch", - "value": { - "artifactId": "[uuid]" - } - }, - { - "type": "Sketch", - "value": { - "artifactId": "[uuid]" - } - } - ] - }, - "sourceRange": [] - } } ] diff --git a/rust/kcl-lib/tests/kcl_samples/bracket/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/bracket/program_memory.snap index 121137cfd..0f75369e1 100644 --- a/rust/kcl-lib/tests/kcl_samples/bracket/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/bracket/program_memory.snap @@ -3,20 +3,385 @@ source: kcl-lib/src/simulation_tests.rs description: Variables in memory after executing bracket.kcl --- { - "extFilletRadius": { + "bendRadius": { "type": "Number", - "value": 0.6013, - "ty": { - "type": "Unknown" - } - }, - "factorOfSafety": { - "type": "Number", - "value": 1.2, + "value": 0.25, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "bracketBody": { + "type": "Solid", + "value": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + 4.6151, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.0 + ], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "to": [ + 4.6151, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.3849 + ], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "to": [ + -0.3849, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + 0.3849 + ], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "to": [ + -0.3849, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + -1.8651 + ], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "to": [ + 0.0, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + -1.8651 + ], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": null, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 0.0, + 0.0 + ], + "to": [ + 0.0, + 0.0 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01" + }, + "seg02": { + "type": "TagIdentifier", + "value": "seg02" + }, + "seg03": { + "type": "TagIdentifier", + "value": "seg03" + }, + "seg04": { + "type": "TagIdentifier", + "value": "seg04" + }, + "seg05": { + "type": "TagIdentifier", + "value": "seg05" + }, + "seg06": { + "type": "TagIdentifier", + "value": "seg06" + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": 5.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Inches" + } + } + }, + "extBendRadius": { + "type": "Number", + "value": 0.6349, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, "angle": { "type": "Degrees" @@ -25,11 +390,24 @@ description: Variables in memory after executing bracket.kcl }, "filletRadius": { "type": "Number", - "value": 0.25, + "value": 0.5, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "fos": { + "type": "Number", + "value": 1.2, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, "angle": { "type": "Degrees" @@ -39,17 +417,10 @@ description: Variables in memory after executing bracket.kcl "moment": { "type": "Number", "value": 3600.0, - "ty": { - "type": "Unknown" - } - }, - "mountingHoleDiameter": { - "type": "Number", - "value": 0.5, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" }, "angle": { "type": "Degrees" @@ -62,7 +433,7 @@ description: Variables in memory after executing bracket.kcl "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" }, "angle": { "type": "Degrees" @@ -105,3401 +476,2930 @@ description: Variables in memory after executing bracket.kcl "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" }, "angle": { "type": "Degrees" } } }, - "shelfMountL": { + "shelfMountLength": { "type": "Number", "value": 5.0, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" }, "angle": { "type": "Degrees" } } }, + "shelfMountingHoleDiameter": { + "type": "Number", + "value": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "shelfMountingHolePlacementOffset": { + "type": "Number", + "value": 0.75, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "shelfMountingHoles": { + "type": "HomArray", + "value": [ + { + "type": "Solid", + "value": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "ccw": true, + "center": [ + -1.0, + 0.75 + ], + "from": [ + -0.75, + 0.75 + ], + "radius": 0.25, + "tag": null, + "to": [ + -0.75, + 0.75 + ], + "type": "Circle", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg03", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + 4.6151, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.0 + ], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "to": [ + 4.6151, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.3849 + ], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "to": [ + -0.3849, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + 0.3849 + ], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "to": [ + -0.3849, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + -1.8651 + ], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "to": [ + 0.0, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + -1.8651 + ], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": null, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 0.0, + 0.0 + ], + "to": [ + 0.0, + 0.0 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01" + }, + "seg02": { + "type": "TagIdentifier", + "value": "seg02" + }, + "seg03": { + "type": "TagIdentifier", + "value": "seg03" + }, + "seg04": { + "type": "TagIdentifier", + "value": "seg04" + }, + "seg05": { + "type": "TagIdentifier", + "value": "seg05" + }, + "seg06": { + "type": "TagIdentifier", + "value": "seg06" + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": 5.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + -0.75, + 0.75 + ], + "to": [ + -0.75, + 0.75 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": -0.39485618835389114, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Inches" + } + } + }, + { + "type": "Solid", + "value": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "ccw": true, + "center": [ + -1.0, + 0.75 + ], + "from": [ + -0.75, + 0.75 + ], + "radius": 0.25, + "tag": null, + "to": [ + -0.75, + 0.75 + ], + "type": "Circle", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg03", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + 4.6151, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.0 + ], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "to": [ + 4.6151, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.3849 + ], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "to": [ + -0.3849, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + 0.3849 + ], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "to": [ + -0.3849, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + -1.8651 + ], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "to": [ + 0.0, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + -1.8651 + ], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": null, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 0.0, + 0.0 + ], + "to": [ + 0.0, + 0.0 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01" + }, + "seg02": { + "type": "TagIdentifier", + "value": "seg02" + }, + "seg03": { + "type": "TagIdentifier", + "value": "seg03" + }, + "seg04": { + "type": "TagIdentifier", + "value": "seg04" + }, + "seg05": { + "type": "TagIdentifier", + "value": "seg05" + }, + "seg06": { + "type": "TagIdentifier", + "value": "seg06" + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": 5.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + -0.75, + 0.75 + ], + "to": [ + -0.75, + 0.75 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": -0.39485618835389114, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Inches" + } + } + }, + { + "type": "Solid", + "value": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "ccw": true, + "center": [ + -1.0, + 0.75 + ], + "from": [ + -0.75, + 0.75 + ], + "radius": 0.25, + "tag": null, + "to": [ + -0.75, + 0.75 + ], + "type": "Circle", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg03", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + 4.6151, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.0 + ], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "to": [ + 4.6151, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.3849 + ], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "to": [ + -0.3849, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + 0.3849 + ], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "to": [ + -0.3849, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + -1.8651 + ], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "to": [ + 0.0, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + -1.8651 + ], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": null, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 0.0, + 0.0 + ], + "to": [ + 0.0, + 0.0 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01" + }, + "seg02": { + "type": "TagIdentifier", + "value": "seg02" + }, + "seg03": { + "type": "TagIdentifier", + "value": "seg03" + }, + "seg04": { + "type": "TagIdentifier", + "value": "seg04" + }, + "seg05": { + "type": "TagIdentifier", + "value": "seg05" + }, + "seg06": { + "type": "TagIdentifier", + "value": "seg06" + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": 5.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + -0.75, + 0.75 + ], + "to": [ + -0.75, + 0.75 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": -0.39485618835389114, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Inches" + } + } + }, + { + "type": "Solid", + "value": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "ccw": true, + "center": [ + -1.0, + 0.75 + ], + "from": [ + -0.75, + 0.75 + ], + "radius": 0.25, + "tag": null, + "to": [ + -0.75, + 0.75 + ], + "type": "Circle", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg03", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + 4.6151, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.0 + ], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "to": [ + 4.6151, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.3849 + ], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "to": [ + -0.3849, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + 0.3849 + ], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "to": [ + -0.3849, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + -1.8651 + ], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "to": [ + 0.0, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + -1.8651 + ], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": null, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 0.0, + 0.0 + ], + "to": [ + 0.0, + 0.0 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01" + }, + "seg02": { + "type": "TagIdentifier", + "value": "seg02" + }, + "seg03": { + "type": "TagIdentifier", + "value": "seg03" + }, + "seg04": { + "type": "TagIdentifier", + "value": "seg04" + }, + "seg05": { + "type": "TagIdentifier", + "value": "seg05" + }, + "seg06": { + "type": "TagIdentifier", + "value": "seg06" + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": 5.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + -0.75, + 0.75 + ], + "to": [ + -0.75, + 0.75 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": -0.39485618835389114, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Inches" + } + } + } + ] + }, "sigmaAllow": { "type": "Number", "value": 35000.0, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" }, "angle": { "type": "Degrees" } } }, - "sketch001": { - "type": "Solid", - "value": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "type": "extrudePlane" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "to": [ - 4.6487, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.0 - ], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "to": [ - 4.6487, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.3513 - ], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "to": [ - -0.3513, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - 0.3513 - ], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "to": [ - -0.3513, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - -1.6487 - ], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "to": [ - -0.0, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.0, - -1.6487 - ], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": null, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "plane", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "XZ", - "origin": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 0.0, - 0.0 - ], - "to": [ - 0.0, - 0.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "tags": { - "seg01": { - "type": "TagIdentifier", - "value": "seg01" - }, - "seg02": { - "type": "TagIdentifier", - "value": "seg02" - }, - "seg03": { - "type": "TagIdentifier", - "value": "seg03" - }, - "seg04": { - "type": "TagIdentifier", - "value": "seg04" - }, - "seg05": { - "type": "TagIdentifier", - "value": "seg05" - }, - "seg06": { - "type": "TagIdentifier", - "value": "seg06" - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": 6.0, - "startCapId": "[uuid]", - "endCapId": "[uuid]", - "edgeCuts": [ - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.601324026261472, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - } - ], - "units": { - "type": "Mm" - } - } - }, - "sketch002": { - "type": "HomArray", - "value": [ - { - "type": "Solid", - "value": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": null, - "type": "extrudeArc" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "ccw": true, - "center": [ - -1.25, - 1.0 - ], - "from": [ - -1.0, - 1.0 - ], - "radius": 0.25, - "tag": null, - "to": [ - -1.0, - 1.0 - ], - "type": "Circle", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "face", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "seg03", - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "solid": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "type": "extrudePlane" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "to": [ - 4.6487, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.0 - ], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "to": [ - 4.6487, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.3513 - ], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "to": [ - -0.3513, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - 0.3513 - ], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "to": [ - -0.3513, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - -1.6487 - ], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "to": [ - -0.0, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.0, - -1.6487 - ], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": null, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "plane", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "XZ", - "origin": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 0.0, - 0.0 - ], - "to": [ - 0.0, - 0.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "tags": { - "seg01": { - "type": "TagIdentifier", - "value": "seg01" - }, - "seg02": { - "type": "TagIdentifier", - "value": "seg02" - }, - "seg03": { - "type": "TagIdentifier", - "value": "seg03" - }, - "seg04": { - "type": "TagIdentifier", - "value": "seg04" - }, - "seg05": { - "type": "TagIdentifier", - "value": "seg05" - }, - "seg06": { - "type": "TagIdentifier", - "value": "seg06" - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": 6.0, - "startCapId": "[uuid]", - "endCapId": "[uuid]", - "edgeCuts": [ - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.601324026261472, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - } - ], - "units": { - "type": "Mm" - } - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - -1.0, - 1.0 - ], - "to": [ - -1.0, - 1.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": -0.361324026261472, - "startCapId": null, - "endCapId": null, - "units": { - "type": "Mm" - } - } - }, - { - "type": "Solid", - "value": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": null, - "type": "extrudeArc" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "ccw": true, - "center": [ - -1.25, - 1.0 - ], - "from": [ - -1.0, - 1.0 - ], - "radius": 0.25, - "tag": null, - "to": [ - -1.0, - 1.0 - ], - "type": "Circle", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "face", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "seg03", - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "solid": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "type": "extrudePlane" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "to": [ - 4.6487, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.0 - ], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "to": [ - 4.6487, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.3513 - ], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "to": [ - -0.3513, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - 0.3513 - ], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "to": [ - -0.3513, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - -1.6487 - ], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "to": [ - -0.0, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.0, - -1.6487 - ], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": null, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "plane", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "XZ", - "origin": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 0.0, - 0.0 - ], - "to": [ - 0.0, - 0.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "tags": { - "seg01": { - "type": "TagIdentifier", - "value": "seg01" - }, - "seg02": { - "type": "TagIdentifier", - "value": "seg02" - }, - "seg03": { - "type": "TagIdentifier", - "value": "seg03" - }, - "seg04": { - "type": "TagIdentifier", - "value": "seg04" - }, - "seg05": { - "type": "TagIdentifier", - "value": "seg05" - }, - "seg06": { - "type": "TagIdentifier", - "value": "seg06" - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": 6.0, - "startCapId": "[uuid]", - "endCapId": "[uuid]", - "edgeCuts": [ - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.601324026261472, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - } - ], - "units": { - "type": "Mm" - } - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - -1.0, - 1.0 - ], - "to": [ - -1.0, - 1.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": -0.361324026261472, - "startCapId": null, - "endCapId": null, - "units": { - "type": "Mm" - } - } - }, - { - "type": "Solid", - "value": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": null, - "type": "extrudeArc" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "ccw": true, - "center": [ - -1.25, - 1.0 - ], - "from": [ - -1.0, - 1.0 - ], - "radius": 0.25, - "tag": null, - "to": [ - -1.0, - 1.0 - ], - "type": "Circle", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "face", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "seg03", - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "solid": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "type": "extrudePlane" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "to": [ - 4.6487, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.0 - ], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "to": [ - 4.6487, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.3513 - ], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "to": [ - -0.3513, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - 0.3513 - ], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "to": [ - -0.3513, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - -1.6487 - ], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "to": [ - -0.0, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.0, - -1.6487 - ], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": null, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "plane", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "XZ", - "origin": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 0.0, - 0.0 - ], - "to": [ - 0.0, - 0.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "tags": { - "seg01": { - "type": "TagIdentifier", - "value": "seg01" - }, - "seg02": { - "type": "TagIdentifier", - "value": "seg02" - }, - "seg03": { - "type": "TagIdentifier", - "value": "seg03" - }, - "seg04": { - "type": "TagIdentifier", - "value": "seg04" - }, - "seg05": { - "type": "TagIdentifier", - "value": "seg05" - }, - "seg06": { - "type": "TagIdentifier", - "value": "seg06" - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": 6.0, - "startCapId": "[uuid]", - "endCapId": "[uuid]", - "edgeCuts": [ - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.601324026261472, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - } - ], - "units": { - "type": "Mm" - } - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - -1.0, - 1.0 - ], - "to": [ - -1.0, - 1.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": -0.361324026261472, - "startCapId": null, - "endCapId": null, - "units": { - "type": "Mm" - } - } - }, - { - "type": "Solid", - "value": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": null, - "type": "extrudeArc" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "ccw": true, - "center": [ - -1.25, - 1.0 - ], - "from": [ - -1.0, - 1.0 - ], - "radius": 0.25, - "tag": null, - "to": [ - -1.0, - 1.0 - ], - "type": "Circle", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "face", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "seg03", - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "solid": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "type": "extrudePlane" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "to": [ - 4.6487, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.0 - ], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "to": [ - 4.6487, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.3513 - ], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "to": [ - -0.3513, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - 0.3513 - ], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "to": [ - -0.3513, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - -1.6487 - ], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "to": [ - -0.0, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.0, - -1.6487 - ], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": null, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "plane", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "XZ", - "origin": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 0.0, - 0.0 - ], - "to": [ - 0.0, - 0.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "tags": { - "seg01": { - "type": "TagIdentifier", - "value": "seg01" - }, - "seg02": { - "type": "TagIdentifier", - "value": "seg02" - }, - "seg03": { - "type": "TagIdentifier", - "value": "seg03" - }, - "seg04": { - "type": "TagIdentifier", - "value": "seg04" - }, - "seg05": { - "type": "TagIdentifier", - "value": "seg05" - }, - "seg06": { - "type": "TagIdentifier", - "value": "seg06" - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": 6.0, - "startCapId": "[uuid]", - "endCapId": "[uuid]", - "edgeCuts": [ - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.601324026261472, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - } - ], - "units": { - "type": "Mm" - } - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - -1.0, - 1.0 - ], - "to": [ - -1.0, - 1.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": -0.361324026261472, - "startCapId": null, - "endCapId": null, - "units": { - "type": "Mm" - } - } - } - ] - }, - "sketch003": { - "type": "HomArray", - "value": [ - { - "type": "Solid", - "value": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": null, - "type": "extrudeArc" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "ccw": true, - "center": [ - 1.0, - -1.0 - ], - "from": [ - 1.25, - -1.0 - ], - "radius": 0.25, - "tag": null, - "to": [ - 1.25, - -1.0 - ], - "type": "Circle", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "face", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "seg04", - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "solid": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "type": "extrudePlane" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "to": [ - 4.6487, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.0 - ], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "to": [ - 4.6487, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.3513 - ], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "to": [ - -0.3513, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - 0.3513 - ], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "to": [ - -0.3513, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - -1.6487 - ], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "to": [ - -0.0, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.0, - -1.6487 - ], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": null, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "plane", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "XZ", - "origin": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 0.0, - 0.0 - ], - "to": [ - 0.0, - 0.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "tags": { - "seg01": { - "type": "TagIdentifier", - "value": "seg01" - }, - "seg02": { - "type": "TagIdentifier", - "value": "seg02" - }, - "seg03": { - "type": "TagIdentifier", - "value": "seg03" - }, - "seg04": { - "type": "TagIdentifier", - "value": "seg04" - }, - "seg05": { - "type": "TagIdentifier", - "value": "seg05" - }, - "seg06": { - "type": "TagIdentifier", - "value": "seg06" - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": 6.0, - "startCapId": "[uuid]", - "endCapId": "[uuid]", - "edgeCuts": [ - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.601324026261472, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - } - ], - "units": { - "type": "Mm" - } - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 1.25, - -1.0 - ], - "to": [ - 1.25, - -1.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": -0.45132402626147194, - "startCapId": null, - "endCapId": null, - "units": { - "type": "Mm" - } - } - }, - { - "type": "Solid", - "value": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": null, - "type": "extrudeArc" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "ccw": true, - "center": [ - 1.0, - -1.0 - ], - "from": [ - 1.25, - -1.0 - ], - "radius": 0.25, - "tag": null, - "to": [ - 1.25, - -1.0 - ], - "type": "Circle", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "face", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "seg04", - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "solid": { - "type": "Solid", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": [ - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "type": "extrudePlane" - }, - { - "faceId": "[uuid]", - "id": "[uuid]", - "sourceRange": [], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "type": "extrudePlane" - } - ], - "sketch": { - "type": "Sketch", - "id": "[uuid]", - "paths": [ - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": { - "commentStart": 1162, - "end": 1168, - "start": 1162, - "type": "TagDeclarator", - "value": "seg01" - }, - "to": [ - 4.6487, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.0 - ], - "tag": { - "commentStart": 1207, - "end": 1213, - "start": 1207, - "type": "TagDeclarator", - "value": "seg02" - }, - "to": [ - 4.6487, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 4.6487, - 0.3513 - ], - "tag": { - "commentStart": 1255, - "end": 1261, - "start": 1255, - "type": "TagDeclarator", - "value": "seg03" - }, - "to": [ - -0.3513, - 0.3513 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - 0.3513 - ], - "tag": { - "commentStart": 1302, - "end": 1308, - "start": 1302, - "type": "TagDeclarator", - "value": "seg04" - }, - "to": [ - -0.3513, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.3513, - -1.6487 - ], - "tag": { - "commentStart": 1347, - "end": 1353, - "start": 1347, - "type": "TagDeclarator", - "value": "seg05" - }, - "to": [ - -0.0, - -1.6487 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - -0.0, - -1.6487 - ], - "tag": { - "commentStart": 1423, - "end": 1429, - "start": 1423, - "type": "TagDeclarator", - "value": "seg06" - }, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - }, - { - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - }, - "from": [ - 0.0, - 0.0 - ], - "tag": null, - "to": [ - 0.0, - 0.0 - ], - "type": "ToPoint", - "units": { - "type": "Mm" - } - } - ], - "on": { - "type": "plane", - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "XZ", - "origin": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 0.0, - 0.0 - ], - "to": [ - 0.0, - 0.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "tags": { - "seg01": { - "type": "TagIdentifier", - "value": "seg01" - }, - "seg02": { - "type": "TagIdentifier", - "value": "seg02" - }, - "seg03": { - "type": "TagIdentifier", - "value": "seg03" - }, - "seg04": { - "type": "TagIdentifier", - "value": "seg04" - }, - "seg05": { - "type": "TagIdentifier", - "value": "seg05" - }, - "seg06": { - "type": "TagIdentifier", - "value": "seg06" - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": 6.0, - "startCapId": "[uuid]", - "endCapId": "[uuid]", - "edgeCuts": [ - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.601324026261472, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - }, - { - "type": "fillet", - "id": "[uuid]", - "radius": 0.25, - "edgeId": "[uuid]", - "tag": null - } - ], - "units": { - "type": "Mm" - } - }, - "units": { - "type": "Mm" - } - }, - "start": { - "from": [ - 1.25, - -1.0 - ], - "to": [ - 1.25, - -1.0 - ], - "units": { - "type": "Mm" - }, - "tag": null, - "__geoMeta": { - "id": "[uuid]", - "sourceRange": [] - } - }, - "artifactId": "[uuid]", - "originalId": "[uuid]", - "units": { - "type": "Mm" - } - }, - "height": -0.45132402626147194, - "startCapId": null, - "endCapId": null, - "units": { - "type": "Mm" - } - } - } - ] - }, "thickness": { "type": "Number", - "value": 0.3513, - "ty": { - "type": "Unknown" - } - }, - "wallMountL": { - "type": "Number", - "value": 2.0, + "value": 0.3849, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" }, "angle": { "type": "Degrees" } } }, - "width": { + "wallMountLength": { "type": "Number", - "value": 6.0, + "value": 2.25, "ty": { "type": "Default", "len": { - "type": "Mm" + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "wallMountingHoleDiameter": { + "type": "Number", + "value": 0.625, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "wallMountingHolePlacementOffset": { + "type": "Number", + "value": 0.9375, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "wallMountingHoles": { + "type": "HomArray", + "value": [ + { + "type": "Solid", + "value": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "ccw": true, + "center": [ + 1.0625, + 0.9375 + ], + "from": [ + 1.375, + 0.9375 + ], + "radius": 0.3125, + "tag": null, + "to": [ + 1.375, + 0.9375 + ], + "type": "Circle", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg04", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + 4.6151, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.0 + ], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "to": [ + 4.6151, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.3849 + ], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "to": [ + -0.3849, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + 0.3849 + ], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "to": [ + -0.3849, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + -1.8651 + ], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "to": [ + 0.0, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + -1.8651 + ], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": null, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 0.0, + 0.0 + ], + "to": [ + 0.0, + 0.0 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01" + }, + "seg02": { + "type": "TagIdentifier", + "value": "seg02" + }, + "seg03": { + "type": "TagIdentifier", + "value": "seg03" + }, + "seg04": { + "type": "TagIdentifier", + "value": "seg04" + }, + "seg05": { + "type": "TagIdentifier", + "value": "seg05" + }, + "seg06": { + "type": "TagIdentifier", + "value": "seg06" + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": 5.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 1.375, + 0.9375 + ], + "to": [ + 1.375, + 0.9375 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": -0.4848561883538911, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Inches" + } + } + }, + { + "type": "Solid", + "value": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudeArc" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "ccw": true, + "center": [ + 1.0625, + 0.9375 + ], + "from": [ + 1.375, + 0.9375 + ], + "radius": 0.3125, + "tag": null, + "to": [ + 1.375, + 0.9375 + ], + "type": "Circle", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "face", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "seg04", + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "solid": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": { + "commentStart": 2083, + "end": 2089, + "start": 2083, + "type": "TagDeclarator", + "value": "seg01" + }, + "to": [ + 4.6151, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.0 + ], + "tag": { + "commentStart": 2128, + "end": 2134, + "start": 2128, + "type": "TagDeclarator", + "value": "seg02" + }, + "to": [ + 4.6151, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 4.6151, + 0.3849 + ], + "tag": { + "commentStart": 2181, + "end": 2187, + "start": 2181, + "type": "TagDeclarator", + "value": "seg03" + }, + "to": [ + -0.3849, + 0.3849 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + 0.3849 + ], + "tag": { + "commentStart": 2233, + "end": 2239, + "start": 2233, + "type": "TagDeclarator", + "value": "seg04" + }, + "to": [ + -0.3849, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -0.3849, + -1.8651 + ], + "tag": { + "commentStart": 2278, + "end": 2284, + "start": 2278, + "type": "TagDeclarator", + "value": "seg05" + }, + "to": [ + 0.0, + -1.8651 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + -1.8651 + ], + "tag": { + "commentStart": 2354, + "end": 2360, + "start": 2354, + "type": "TagDeclarator", + "value": "seg06" + }, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 0.0, + 0.0 + ], + "tag": null, + "to": [ + 0.0, + 0.0 + ], + "type": "ToPoint", + "units": { + "type": "Inches" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XZ", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 0.0, + 0.0 + ], + "to": [ + 0.0, + 0.0 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "tags": { + "seg01": { + "type": "TagIdentifier", + "value": "seg01" + }, + "seg02": { + "type": "TagIdentifier", + "value": "seg02" + }, + "seg03": { + "type": "TagIdentifier", + "value": "seg03" + }, + "seg04": { + "type": "TagIdentifier", + "value": "seg04" + }, + "seg05": { + "type": "TagIdentifier", + "value": "seg05" + }, + "seg06": { + "type": "TagIdentifier", + "value": "seg06" + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": 5.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "units": { + "type": "Inches" + } + }, + "start": { + "from": [ + 1.375, + 0.9375 + ], + "to": [ + 1.375, + 0.9375 + ], + "units": { + "type": "Inches" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Inches" + } + }, + "height": -0.4848561883538911, + "startCapId": null, + "endCapId": null, + "units": { + "type": "Inches" + } + } + } + ] + }, + "width": { + "type": "Number", + "value": 5.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, "angle": { "type": "Degrees" diff --git a/rust/kcl-lib/tests/kcl_samples/bracket/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/bracket/rendered_model.png index 9623aaddf..cbb37657c 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/bracket/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/bracket/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/artifact_commands.snap index 279904952..25e88413a 100644 --- a/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/artifact_commands.snap @@ -169,7 +169,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.25, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -324,7 +325,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -483,7 +485,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.75, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -549,7 +552,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.75, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -615,7 +619,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.75, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -681,7 +686,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.75, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -747,7 +753,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.75, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -970,7 +977,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1108,7 +1116,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.25, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1267,7 +1276,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.25, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1333,7 +1343,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.25, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1399,7 +1410,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.25, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1465,7 +1477,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.25, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1531,7 +1544,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.25, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1690,7 +1704,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1756,7 +1771,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1822,7 +1838,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1888,7 +1905,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1954,7 +1972,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2020,7 +2039,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2086,7 +2106,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2152,7 +2173,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2218,7 +2240,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2284,7 +2307,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2350,7 +2374,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2416,7 +2441,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2482,7 +2508,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2548,7 +2575,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2614,7 +2642,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2680,7 +2709,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2882,7 +2912,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3008,7 +3039,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3134,7 +3166,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3260,7 +3293,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3386,7 +3420,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3648,7 +3683,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3774,7 +3810,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3900,7 +3937,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4026,7 +4064,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4152,7 +4191,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4690,7 +4730,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.475, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4938,7 +4979,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.95, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5117,7 +5159,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.95, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5183,7 +5226,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.95, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5249,7 +5293,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.95, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5315,7 +5360,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.95, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5381,7 +5427,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.95, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5540,7 +5587,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.475, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5606,7 +5654,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.475, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5672,7 +5721,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.475, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5738,7 +5788,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.475, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5804,7 +5855,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.475, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6111,7 +6163,8 @@ description: Artifact commands car-wheel-assembly.kcl "unit": "degrees", "value": 360.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -6403,7 +6456,8 @@ description: Artifact commands car-wheel-assembly.kcl "unit": "degrees", "value": 360.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -6707,7 +6761,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.95, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -7124,7 +7179,8 @@ description: Artifact commands car-wheel-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.95, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -7842,7 +7898,8 @@ description: Artifact commands car-wheel-assembly.kcl "unit": "degrees", "value": 360.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -8440,7 +8497,7 @@ description: Artifact commands car-wheel-assembly.kcl "type": "move_path_pen", "path": "[uuid]", "to": { - "x": 0.47244094488188976, + "x": 0.4724409448818898, "y": 0.0, "z": 0.0 } @@ -8512,7 +8569,7 @@ description: Artifact commands car-wheel-assembly.kcl "path": "[uuid]", "segment": { "type": "tangential_arc", - "radius": 0.11811023622047244, + "radius": 0.11811023622047245, "offset": { "unit": "degrees", "value": 90.0 @@ -8617,7 +8674,8 @@ description: Artifact commands car-wheel-assembly.kcl "unit": "degrees", "value": 360.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -9233,7 +9291,8 @@ description: Artifact commands car-wheel-assembly.kcl "unit": "degrees", "value": -70.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -9958,7 +10017,8 @@ description: Artifact commands car-wheel-assembly.kcl "unit": "degrees", "value": 360.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/artifact_graph_flowchart.snap.md index db394a99a..d42e883b1 100644 --- a/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/artifact_graph_flowchart.snap.md @@ -6,51 +6,51 @@ flowchart LR 4[Solid2d] end subgraph path11 [Path] - 11["Path
[807, 863, 6]"] - 12["Segment
[807, 863, 6]"] + 11["Path
[812, 868, 6]"] + 12["Segment
[812, 868, 6]"] 13[Solid2d] end subgraph path19 [Path] - 19["Path
[988, 1041, 6]"] - 20["Segment
[988, 1041, 6]"] + 19["Path
[998, 1051, 6]"] + 20["Segment
[998, 1051, 6]"] 21[Solid2d] end subgraph path30 [Path] - 30["Path
[1424, 1464, 6]"] - 31["Segment
[1424, 1464, 6]"] + 30["Path
[1439, 1479, 6]"] + 31["Segment
[1439, 1479, 6]"] 32[Solid2d] end subgraph path38 [Path] - 38["Path
[1568, 1619, 6]"] - 39["Segment
[1568, 1619, 6]"] + 38["Path
[1588, 1639, 6]"] + 39["Segment
[1588, 1639, 6]"] 40[Solid2d] end subgraph path47 [Path] - 47["Path
[1752, 1805, 6]"] - 48["Segment
[1752, 1805, 6]"] + 47["Path
[1777, 1830, 6]"] + 48["Segment
[1777, 1830, 6]"] 49[Solid2d] end subgraph path58 [Path] - 58["Path
[2048, 2120, 6]"] - 59["Segment
[2048, 2120, 6]"] + 58["Path
[2078, 2150, 6]"] + 59["Segment
[2078, 2150, 6]"] 60[Solid2d] end subgraph path81 [Path] - 81["Path
[2377, 2408, 6]"] - 82["Segment
[2414, 2434, 6]"] - 83["Segment
[2440, 2460, 6]"] - 84["Segment
[2466, 2487, 6]"] - 85["Segment
[2493, 2549, 6]"] - 86["Segment
[2555, 2562, 6]"] + 81["Path
[2412, 2443, 6]"] + 82["Segment
[2449, 2469, 6]"] + 83["Segment
[2475, 2495, 6]"] + 84["Segment
[2501, 2522, 6]"] + 85["Segment
[2528, 2584, 6]"] + 86["Segment
[2590, 2597, 6]"] 87[Solid2d] end subgraph path106 [Path] - 106["Path
[2864, 2896, 6]"] - 107["Segment
[2902, 2923, 6]"] - 108["Segment
[2929, 2949, 6]"] - 109["Segment
[2955, 2975, 6]"] - 110["Segment
[2981, 3037, 6]"] - 111["Segment
[3043, 3050, 6]"] + 106["Path
[2904, 2936, 6]"] + 107["Segment
[2942, 2963, 6]"] + 108["Segment
[2969, 2989, 6]"] + 109["Segment
[2995, 3015, 6]"] + 110["Segment
[3021, 3077, 6]"] + 111["Segment
[3083, 3090, 6]"] 112[Solid2d] end subgraph path132 [Path] @@ -64,139 +64,139 @@ flowchart LR 137[Solid2d] end subgraph path144 [Path] - 144["Path
[642, 698, 5]"] - 145["Segment
[642, 698, 5]"] + 144["Path
[647, 703, 5]"] + 145["Segment
[647, 703, 5]"] 146[Solid2d] end subgraph path147 [Path] - 147["Path
[709, 765, 5]"] - 148["Segment
[709, 765, 5]"] + 147["Path
[714, 770, 5]"] + 148["Segment
[714, 770, 5]"] 149[Solid2d] end subgraph path156 [Path] - 156["Path
[909, 963, 5]"] - 157["Segment
[909, 963, 5]"] + 156["Path
[919, 973, 5]"] + 157["Segment
[919, 973, 5]"] 158[Solid2d] end subgraph path167 [Path] - 167["Path
[1241, 1301, 5]"] - 168["Segment
[1241, 1301, 5]"] + 167["Path
[1256, 1317, 5]"] + 168["Segment
[1256, 1317, 5]"] 169[Solid2d] end subgraph path179 [Path] - 179["Path
[1659, 1705, 5]"] - 180["Segment
[1711, 1763, 5]"] - 181["Segment
[1769, 1874, 5]"] - 182["Segment
[1880, 1902, 5]"] - 183["Segment
[1908, 1964, 5]"] - 184["Segment
[1970, 1977, 5]"] + 179["Path
[1675, 1721, 5]"] + 180["Segment
[1727, 1779, 5]"] + 181["Segment
[1785, 1890, 5]"] + 182["Segment
[1896, 1918, 5]"] + 183["Segment
[1924, 1980, 5]"] + 184["Segment
[1986, 1993, 5]"] 185[Solid2d] end subgraph path195 [Path] - 195["Path
[2109, 2155, 5]"] - 196["Segment
[2161, 2213, 5]"] - 197["Segment
[2219, 2326, 5]"] - 198["Segment
[2332, 2369, 5]"] - 199["Segment
[2375, 2431, 5]"] - 200["Segment
[2437, 2444, 5]"] + 195["Path
[2125, 2171, 5]"] + 196["Segment
[2177, 2229, 5]"] + 197["Segment
[2235, 2342, 5]"] + 198["Segment
[2348, 2385, 5]"] + 199["Segment
[2391, 2447, 5]"] + 200["Segment
[2453, 2460, 5]"] 201[Solid2d] end subgraph path212 [Path] - 212["Path
[2953, 3000, 5]"] - 213["Segment
[3008, 3348, 5]"] - 214["Segment
[3356, 3388, 5]"] - 215["Segment
[3396, 3740, 5]"] - 216["Segment
[3748, 3804, 5]"] - 217["Segment
[3812, 3819, 5]"] + 212["Path
[2941, 2988, 5]"] + 213["Segment
[2996, 3336, 5]"] + 214["Segment
[3344, 3376, 5]"] + 215["Segment
[3384, 3728, 5]"] + 216["Segment
[3736, 3792, 5]"] + 217["Segment
[3800, 3807, 5]"] 218[Solid2d] end subgraph path235 [Path] - 235["Path
[2953, 3000, 5]"] - 236["Segment
[3008, 3348, 5]"] - 237["Segment
[3356, 3388, 5]"] - 238["Segment
[3396, 3740, 5]"] - 239["Segment
[3748, 3804, 5]"] - 240["Segment
[3812, 3819, 5]"] + 235["Path
[2941, 2988, 5]"] + 236["Segment
[2996, 3336, 5]"] + 237["Segment
[3344, 3376, 5]"] + 238["Segment
[3384, 3728, 5]"] + 239["Segment
[3736, 3792, 5]"] + 240["Segment
[3800, 3807, 5]"] 241[Solid2d] end subgraph path258 [Path] - 258["Path
[4347, 4442, 5]"] - 259["Segment
[4448, 4481, 5]"] - 260["Segment
[4487, 4538, 5]"] - 261["Segment
[4544, 4577, 5]"] - 262["Segment
[4583, 4633, 5]"] - 263["Segment
[4639, 4680, 5]"] - 264["Segment
[4686, 4735, 5]"] - 265["Segment
[4741, 4774, 5]"] - 266["Segment
[4780, 4814, 5]"] - 267["Segment
[4820, 4854, 5]"] - 268["Segment
[4860, 4912, 5]"] - 269["Segment
[4918, 4952, 5]"] - 270["Segment
[4958, 5034, 5]"] - 271["Segment
[5040, 5073, 5]"] - 272["Segment
[5079, 5155, 5]"] - 273["Segment
[5161, 5195, 5]"] - 274["Segment
[5201, 5275, 5]"] - 275["Segment
[5281, 5315, 5]"] - 276["Segment
[5321, 5372, 5]"] - 277["Segment
[5378, 5440, 5]"] - 278["Segment
[5446, 5497, 5]"] - 279["Segment
[5503, 5537, 5]"] - 280["Segment
[5543, 5576, 5]"] - 281["Segment
[5582, 5615, 5]"] - 282["Segment
[5621, 5628, 5]"] + 258["Path
[4335, 4430, 5]"] + 259["Segment
[4436, 4469, 5]"] + 260["Segment
[4475, 4526, 5]"] + 261["Segment
[4532, 4565, 5]"] + 262["Segment
[4571, 4621, 5]"] + 263["Segment
[4627, 4668, 5]"] + 264["Segment
[4674, 4723, 5]"] + 265["Segment
[4729, 4762, 5]"] + 266["Segment
[4768, 4802, 5]"] + 267["Segment
[4808, 4842, 5]"] + 268["Segment
[4848, 4900, 5]"] + 269["Segment
[4906, 4940, 5]"] + 270["Segment
[4946, 5022, 5]"] + 271["Segment
[5028, 5061, 5]"] + 272["Segment
[5067, 5143, 5]"] + 273["Segment
[5149, 5183, 5]"] + 274["Segment
[5189, 5263, 5]"] + 275["Segment
[5269, 5303, 5]"] + 276["Segment
[5309, 5360, 5]"] + 277["Segment
[5366, 5428, 5]"] + 278["Segment
[5434, 5485, 5]"] + 279["Segment
[5491, 5525, 5]"] + 280["Segment
[5531, 5564, 5]"] + 281["Segment
[5570, 5603, 5]"] + 282["Segment
[5609, 5616, 5]"] 283[Solid2d] end subgraph path334 [Path] - 334["Path
[744, 784, 8]"] - 335["Segment
[792, 854, 8]"] - 336["Segment
[862, 898, 8]"] - 337["Segment
[906, 936, 8]"] - 338["Segment
[944, 996, 8]"] - 339["Segment
[1004, 1044, 8]"] - 340["Segment
[1052, 1087, 8]"] - 341["Segment
[1095, 1133, 8]"] - 342["Segment
[1141, 1163, 8]"] - 343["Segment
[1171, 1178, 8]"] + 334["Path
[713, 753, 8]"] + 335["Segment
[761, 808, 8]"] + 336["Segment
[816, 852, 8]"] + 337["Segment
[860, 890, 8]"] + 338["Segment
[898, 943, 8]"] + 339["Segment
[951, 991, 8]"] + 340["Segment
[999, 1034, 8]"] + 341["Segment
[1042, 1080, 8]"] + 342["Segment
[1088, 1110, 8]"] + 343["Segment
[1118, 1125, 8]"] 344[Solid2d] end subgraph path365 [Path] 365["Path
[511, 592, 7]"] 366["Segment
[598, 699, 7]"] - 367["Segment
[705, 790, 7]"] - 368["Segment
[796, 880, 7]"] - 369["Segment
[886, 972, 7]"] - 370["Segment
[978, 1063, 7]"] - 371["Segment
[1069, 1155, 7]"] - 372["Segment
[1161, 1284, 7]"] - 373["Segment
[1290, 1376, 7]"] - 374["Segment
[1382, 1517, 7]"] - 375["Segment
[1523, 1609, 7]"] - 376["Segment
[1615, 1739, 7]"] - 377["Segment
[1745, 1831, 7]"] - 378["Segment
[1837, 1922, 7]"] - 379["Segment
[1928, 2014, 7]"] - 380["Segment
[2020, 2105, 7]"] - 381["Segment
[2111, 2196, 7]"] - 382["Segment
[2202, 2209, 7]"] + 367["Segment
[705, 763, 7]"] + 368["Segment
[769, 853, 7]"] + 369["Segment
[859, 918, 7]"] + 370["Segment
[924, 1009, 7]"] + 371["Segment
[1015, 1074, 7]"] + 372["Segment
[1080, 1203, 7]"] + 373["Segment
[1209, 1268, 7]"] + 374["Segment
[1274, 1409, 7]"] + 375["Segment
[1415, 1474, 7]"] + 376["Segment
[1480, 1604, 7]"] + 377["Segment
[1610, 1669, 7]"] + 378["Segment
[1675, 1760, 7]"] + 379["Segment
[1766, 1825, 7]"] + 380["Segment
[1831, 1916, 7]"] + 381["Segment
[1922, 1980, 7]"] + 382["Segment
[1986, 1993, 7]"] 383[Solid2d] end subgraph path439 [Path] 439["Path
[487, 544, 9]"] 440["Segment
[550, 684, 9]"] - 441["Segment
[690, 745, 9]"] - 442["Segment
[751, 848, 9]"] - 443["Segment
[854, 886, 9]"] - 444["Segment
[892, 924, 9]"] - 445["Segment
[930, 961, 9]"] - 446["Segment
[967, 1082, 9]"] - 447["Segment
[1088, 1120, 9]"] - 448["Segment
[1126, 1158, 9]"] - 449["Segment
[1164, 1195, 9]"] - 450["Segment
[1201, 1294, 9]"] - 451["Segment
[1300, 1355, 9]"] - 452["Segment
[1361, 1434, 9]"] - 453["Segment
[1440, 1447, 9]"] + 441["Segment
[690, 737, 9]"] + 442["Segment
[743, 840, 9]"] + 443["Segment
[846, 878, 9]"] + 444["Segment
[884, 916, 9]"] + 445["Segment
[922, 953, 9]"] + 446["Segment
[959, 1074, 9]"] + 447["Segment
[1080, 1112, 9]"] + 448["Segment
[1118, 1150, 9]"] + 449["Segment
[1156, 1187, 9]"] + 450["Segment
[1193, 1286, 9]"] + 451["Segment
[1292, 1339, 9]"] + 452["Segment
[1345, 1418, 9]"] + 453["Segment
[1424, 1431, 9]"] 454[Solid2d] end 1["Plane
[548, 565, 6]"] @@ -206,59 +206,59 @@ flowchart LR 8["Cap End"] 9["SweepEdge Opposite"] 10["SweepEdge Adjacent"] - 14["Sweep Extrusion
[876, 938, 6]"] + 14["Sweep Extrusion
[881, 943, 6]"] 15[Wall] 16["Cap End"] 17["SweepEdge Opposite"] 18["SweepEdge Adjacent"] - 22["Sweep Extrusion
[1188, 1267, 6]"] + 22["Sweep Extrusion
[1198, 1277, 6]"] 23[Wall] 24["SweepEdge Opposite"] 25["SweepEdge Adjacent"] - 26["Sweep Extrusion
[1188, 1267, 6]"] - 27["Sweep Extrusion
[1188, 1267, 6]"] - 28["Sweep Extrusion
[1188, 1267, 6]"] - 29["Sweep Extrusion
[1188, 1267, 6]"] - 33["Sweep Extrusion
[1470, 1503, 6]"] + 26["Sweep Extrusion
[1198, 1277, 6]"] + 27["Sweep Extrusion
[1198, 1277, 6]"] + 28["Sweep Extrusion
[1198, 1277, 6]"] + 29["Sweep Extrusion
[1198, 1277, 6]"] + 33["Sweep Extrusion
[1485, 1518, 6]"] 34[Wall] 35["Cap End"] 36["SweepEdge Opposite"] 37["SweepEdge Adjacent"] - 41["Sweep Extrusion
[1634, 1699, 6]"] + 41["Sweep Extrusion
[1654, 1719, 6]"] 42[Wall] 43["Cap Start"] 44["Cap End"] 45["SweepEdge Opposite"] 46["SweepEdge Adjacent"] - 50["Sweep Extrusion
[1952, 1996, 6]"] + 50["Sweep Extrusion
[1977, 2021, 6]"] 51[Wall] 52["SweepEdge Opposite"] 53["SweepEdge Adjacent"] - 54["Sweep Extrusion
[1952, 1996, 6]"] - 55["Sweep Extrusion
[1952, 1996, 6]"] - 56["Sweep Extrusion
[1952, 1996, 6]"] - 57["Sweep Extrusion
[1952, 1996, 6]"] - 61["Sweep Extrusion
[2275, 2319, 6]"] + 54["Sweep Extrusion
[1977, 2021, 6]"] + 55["Sweep Extrusion
[1977, 2021, 6]"] + 56["Sweep Extrusion
[1977, 2021, 6]"] + 57["Sweep Extrusion
[1977, 2021, 6]"] + 61["Sweep Extrusion
[2305, 2349, 6]"] 62[Wall] 63["Cap End"] 64["SweepEdge Opposite"] 65["SweepEdge Adjacent"] - 66["Sweep Extrusion
[2275, 2319, 6]"] - 67["Sweep Extrusion
[2275, 2319, 6]"] - 68["Sweep Extrusion
[2275, 2319, 6]"] - 69["Sweep Extrusion
[2275, 2319, 6]"] - 70["Sweep Extrusion
[2275, 2319, 6]"] - 71["Sweep Extrusion
[2275, 2319, 6]"] - 72["Sweep Extrusion
[2275, 2319, 6]"] - 73["Sweep Extrusion
[2275, 2319, 6]"] - 74["Sweep Extrusion
[2275, 2319, 6]"] - 75["Sweep Extrusion
[2275, 2319, 6]"] - 76["Sweep Extrusion
[2275, 2319, 6]"] - 77["Sweep Extrusion
[2275, 2319, 6]"] - 78["Sweep Extrusion
[2275, 2319, 6]"] - 79["Sweep Extrusion
[2275, 2319, 6]"] - 80["Sweep Extrusion
[2275, 2319, 6]"] - 88["Sweep Extrusion
[2728, 2796, 6]"] + 66["Sweep Extrusion
[2305, 2349, 6]"] + 67["Sweep Extrusion
[2305, 2349, 6]"] + 68["Sweep Extrusion
[2305, 2349, 6]"] + 69["Sweep Extrusion
[2305, 2349, 6]"] + 70["Sweep Extrusion
[2305, 2349, 6]"] + 71["Sweep Extrusion
[2305, 2349, 6]"] + 72["Sweep Extrusion
[2305, 2349, 6]"] + 73["Sweep Extrusion
[2305, 2349, 6]"] + 74["Sweep Extrusion
[2305, 2349, 6]"] + 75["Sweep Extrusion
[2305, 2349, 6]"] + 76["Sweep Extrusion
[2305, 2349, 6]"] + 77["Sweep Extrusion
[2305, 2349, 6]"] + 78["Sweep Extrusion
[2305, 2349, 6]"] + 79["Sweep Extrusion
[2305, 2349, 6]"] + 80["Sweep Extrusion
[2305, 2349, 6]"] + 88["Sweep Extrusion
[2763, 2831, 6]"] 89[Wall] 90[Wall] 91[Wall] @@ -272,11 +272,11 @@ flowchart LR 99["SweepEdge Adjacent"] 100["SweepEdge Opposite"] 101["SweepEdge Adjacent"] - 102["Sweep Extrusion
[2728, 2796, 6]"] - 103["Sweep Extrusion
[2728, 2796, 6]"] - 104["Sweep Extrusion
[2728, 2796, 6]"] - 105["Sweep Extrusion
[2728, 2796, 6]"] - 113["Sweep Extrusion
[3202, 3276, 6]"] + 102["Sweep Extrusion
[2763, 2831, 6]"] + 103["Sweep Extrusion
[2763, 2831, 6]"] + 104["Sweep Extrusion
[2763, 2831, 6]"] + 105["Sweep Extrusion
[2763, 2831, 6]"] + 113["Sweep Extrusion
[3242, 3316, 6]"] 114[Wall] 115[Wall] 116[Wall] @@ -290,10 +290,10 @@ flowchart LR 124["SweepEdge Adjacent"] 125["SweepEdge Opposite"] 126["SweepEdge Adjacent"] - 127["Sweep Extrusion
[3202, 3276, 6]"] - 128["Sweep Extrusion
[3202, 3276, 6]"] - 129["Sweep Extrusion
[3202, 3276, 6]"] - 130["Sweep Extrusion
[3202, 3276, 6]"] + 127["Sweep Extrusion
[3242, 3316, 6]"] + 128["Sweep Extrusion
[3242, 3316, 6]"] + 129["Sweep Extrusion
[3242, 3316, 6]"] + 130["Sweep Extrusion
[3242, 3316, 6]"] 131["Plane
[331, 348, 5]"] 138["Sweep Extrusion
[487, 520, 5]"] 139[Wall] @@ -301,30 +301,30 @@ flowchart LR 141["Cap End"] 142["SweepEdge Opposite"] 143["SweepEdge Adjacent"] - 150["Sweep Extrusion
[775, 808, 5]"] + 150["Sweep Extrusion
[780, 813, 5]"] 151[Wall] 152["Cap Start"] 153["Cap End"] 154["SweepEdge Opposite"] 155["SweepEdge Adjacent"] - 159["Sweep Extrusion
[1110, 1144, 5]"] + 159["Sweep Extrusion
[1120, 1154, 5]"] 160[Wall] 161["SweepEdge Opposite"] 162["SweepEdge Adjacent"] - 163["Sweep Extrusion
[1110, 1144, 5]"] - 164["Sweep Extrusion
[1110, 1144, 5]"] - 165["Sweep Extrusion
[1110, 1144, 5]"] - 166["Sweep Extrusion
[1110, 1144, 5]"] - 170["Sweep Extrusion
[1448, 1482, 5]"] + 163["Sweep Extrusion
[1120, 1154, 5]"] + 164["Sweep Extrusion
[1120, 1154, 5]"] + 165["Sweep Extrusion
[1120, 1154, 5]"] + 166["Sweep Extrusion
[1120, 1154, 5]"] + 170["Sweep Extrusion
[1464, 1498, 5]"] 171[Wall] 172["SweepEdge Opposite"] 173["SweepEdge Adjacent"] - 174["Sweep Extrusion
[1448, 1482, 5]"] - 175["Sweep Extrusion
[1448, 1482, 5]"] - 176["Sweep Extrusion
[1448, 1482, 5]"] - 177["Sweep Extrusion
[1448, 1482, 5]"] - 178["Plane
[1636, 1653, 5]"] - 186["Sweep Revolve
[1983, 2000, 5]"] + 174["Sweep Extrusion
[1464, 1498, 5]"] + 175["Sweep Extrusion
[1464, 1498, 5]"] + 176["Sweep Extrusion
[1464, 1498, 5]"] + 177["Sweep Extrusion
[1464, 1498, 5]"] + 178["Plane
[1652, 1669, 5]"] + 186["Sweep Revolve
[1999, 2016, 5]"] 187[Wall] 188[Wall] 189[Wall] @@ -332,8 +332,8 @@ flowchart LR 191["SweepEdge Adjacent"] 192["SweepEdge Adjacent"] 193["SweepEdge Adjacent"] - 194["Plane
[2086, 2103, 5]"] - 202["Sweep Revolve
[2450, 2467, 5]"] + 194["Plane
[2102, 2119, 5]"] + 202["Sweep Revolve
[2466, 2483, 5]"] 203[Wall] 204[Wall] 205[Wall] @@ -342,8 +342,8 @@ flowchart LR 208["SweepEdge Adjacent"] 209["SweepEdge Adjacent"] 210["SweepEdge Adjacent"] - 211["Plane
[2922, 2945, 5]"] - 219["Sweep Extrusion
[3867, 3913, 5]"] + 211["Plane
[2910, 2933, 5]"] + 219["Sweep Extrusion
[3855, 3901, 5]"] 220[Wall] 221[Wall] 222[Wall] @@ -358,8 +358,8 @@ flowchart LR 231["SweepEdge Adjacent"] 232["SweepEdge Opposite"] 233["SweepEdge Adjacent"] - 234["Plane
[2922, 2945, 5]"] - 242["Sweep Extrusion
[3867, 3913, 5]"] + 234["Plane
[2910, 2933, 5]"] + 242["Sweep Extrusion
[3855, 3901, 5]"] 243[Wall] 244[Wall] 245[Wall] @@ -374,8 +374,8 @@ flowchart LR 254["SweepEdge Adjacent"] 255["SweepEdge Opposite"] 256["SweepEdge Adjacent"] - 257["Plane
[4324, 4341, 5]"] - 284["Sweep Revolve
[5634, 5651, 5]"] + 257["Plane
[4312, 4329, 5]"] + 284["Sweep Revolve
[5622, 5639, 5]"] 285[Wall] 286[Wall] 287[Wall] @@ -424,8 +424,8 @@ flowchart LR 330["SweepEdge Adjacent"] 331["SweepEdge Adjacent"] 332["SweepEdge Adjacent"] - 333["Plane
[710, 736, 8]"] - 345["Sweep Revolve
[1186, 1203, 8]"] + 333["Plane
[679, 705, 8]"] + 345["Sweep Revolve
[1133, 1150, 8]"] 346[Wall] 347[Wall] 348[Wall] @@ -445,7 +445,7 @@ flowchart LR 362["SweepEdge Adjacent"] 363["SweepEdge Adjacent"] 364["Plane
[488, 505, 7]"] - 384["Sweep Revolve
[2247, 2297, 7]"] + 384["Sweep Revolve
[2031, 2081, 7]"] 385[Wall] 386[Wall] 387[Wall] @@ -500,7 +500,7 @@ flowchart LR 436["SweepEdge Opposite"] 437["SweepEdge Adjacent"] 438["Plane
[464, 481, 9]"] - 455["Sweep Revolve
[1490, 1519, 9]"] + 455["Sweep Revolve
[1474, 1503, 9]"] 456[Wall] 457[Wall] 458[Wall] @@ -529,17 +529,17 @@ flowchart LR 481["SweepEdge Adjacent"] 482["SweepEdge Adjacent"] 483["SweepEdge Adjacent"] - 484["StartSketchOnFace
[774, 801, 6]"] - 485["StartSketchOnFace
[951, 982, 6]"] - 486["StartSketchOnFace
[1389, 1418, 6]"] - 487["StartSketchOnFace
[1528, 1562, 6]"] - 488["StartSketchOnFace
[1713, 1746, 6]"] - 489["StartSketchOnFace
[2013, 2042, 6]"] - 490["StartSketchOnFace
[2342, 2371, 6]"] - 491["StartSketchOnFace
[2825, 2858, 6]"] - 492["StartSketchOnFace
[607, 636, 5]"] - 493["StartSketchOnFace
[869, 903, 5]"] - 494["StartSketchOnFace
[1206, 1235, 5]"] + 484["StartSketchOnFace
[774, 806, 6]"] + 485["StartSketchOnFace
[956, 992, 6]"] + 486["StartSketchOnFace
[1399, 1433, 6]"] + 487["StartSketchOnFace
[1543, 1582, 6]"] + 488["StartSketchOnFace
[1733, 1771, 6]"] + 489["StartSketchOnFace
[2038, 2072, 6]"] + 490["StartSketchOnFace
[2372, 2406, 6]"] + 491["StartSketchOnFace
[2860, 2898, 6]"] + 492["StartSketchOnFace
[607, 641, 5]"] + 493["StartSketchOnFace
[874, 913, 5]"] + 494["StartSketchOnFace
[1216, 1250, 5]"] 1 --- 2 2 --- 3 2 ---- 5 diff --git a/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/ast.snap b/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/ast.snap index f9d5df141..a54682606 100644 --- a/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/ast.snap @@ -6,7 +6,7 @@ description: Result of parsing car-wheel-assembly.kcl "Ok": { "body": [ { - "commentStart": 127, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -18,7 +18,7 @@ description: Result of parsing car-wheel-assembly.kcl "selector": { "type": "None", "alias": { - "commentStart": 171, + "commentStart": 0, "end": 0, "name": "carWheel", "start": 0, @@ -30,7 +30,7 @@ description: Result of parsing car-wheel-assembly.kcl "type": "ImportStatement" }, { - "commentStart": 180, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -39,7 +39,7 @@ description: Result of parsing car-wheel-assembly.kcl "selector": { "type": "None", "alias": { - "commentStart": 206, + "commentStart": 0, "end": 0, "name": "carRotor", "start": 0, @@ -51,7 +51,7 @@ description: Result of parsing car-wheel-assembly.kcl "type": "ImportStatement" }, { - "commentStart": 215, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -60,7 +60,7 @@ description: Result of parsing car-wheel-assembly.kcl "selector": { "type": "None", "alias": { - "commentStart": 245, + "commentStart": 0, "end": 0, "name": "brakeCaliper", "start": 0, @@ -72,7 +72,7 @@ description: Result of parsing car-wheel-assembly.kcl "type": "ImportStatement" }, { - "commentStart": 258, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -81,7 +81,7 @@ description: Result of parsing car-wheel-assembly.kcl "selector": { "type": "None", "alias": { - "commentStart": 282, + "commentStart": 0, "end": 0, "name": "lugNut", "start": 0, @@ -93,7 +93,7 @@ description: Result of parsing car-wheel-assembly.kcl "type": "ImportStatement" }, { - "commentStart": 289, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -102,7 +102,7 @@ description: Result of parsing car-wheel-assembly.kcl "selector": { "type": "None", "alias": { - "commentStart": 314, + "commentStart": 0, "end": 0, "name": "carTire", "start": 0, @@ -114,7 +114,7 @@ description: Result of parsing car-wheel-assembly.kcl "type": "ImportStatement" }, { - "commentStart": 321, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -126,7 +126,7 @@ description: Result of parsing car-wheel-assembly.kcl "// Import parameters" ], "selector": { - "commentStart": 351, + "commentStart": 0, "end": 0, "start": 0, "type": "Glob" @@ -136,16 +136,16 @@ description: Result of parsing car-wheel-assembly.kcl "type": "ImportStatement" }, { - "commentStart": 374, + "commentStart": 0, "end": 0, "expression": { "body": [ { "abs_path": false, - "commentStart": 399, + "commentStart": 0, "end": 0, "name": { - "commentStart": 399, + "commentStart": 0, "end": 0, "name": "carRotor", "start": 0, @@ -161,14 +161,14 @@ description: Result of parsing car-wheel-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 423, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 427, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -183,14 +183,14 @@ description: Result of parsing car-wheel-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 430, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 434, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -205,14 +205,14 @@ description: Result of parsing car-wheel-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 439, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 443, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -227,10 +227,10 @@ description: Result of parsing car-wheel-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 413, + "commentStart": 0, "end": 0, "name": { - "commentStart": 413, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -240,7 +240,7 @@ description: Result of parsing car-wheel-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 413, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -248,13 +248,13 @@ description: Result of parsing car-wheel-assembly.kcl "unlabeled": null } ], - "commentStart": 399, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 445, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -282,14 +282,14 @@ description: Result of parsing car-wheel-assembly.kcl "type": "ExpressionStatement" }, { - "commentStart": 470, + "commentStart": 0, "end": 0, "expression": { "abs_path": false, - "commentStart": 470, + "commentStart": 0, "end": 0, "name": { - "commentStart": 470, + "commentStart": 0, "end": 0, "name": "carWheel", "start": 0, @@ -305,16 +305,16 @@ description: Result of parsing car-wheel-assembly.kcl "type": "ExpressionStatement" }, { - "commentStart": 478, + "commentStart": 0, "end": 0, "expression": { "body": [ { "abs_path": false, - "commentStart": 502, + "commentStart": 0, "end": 0, "name": { - "commentStart": 502, + "commentStart": 0, "end": 0, "name": "lugNut", "start": 0, @@ -330,14 +330,14 @@ description: Result of parsing car-wheel-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 540, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 553, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -352,17 +352,17 @@ description: Result of parsing car-wheel-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 565, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 572, + "commentStart": 0, "elements": [ { - "commentStart": 573, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -374,7 +374,7 @@ description: Result of parsing car-wheel-assembly.kcl } }, { - "commentStart": 576, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -386,7 +386,7 @@ description: Result of parsing car-wheel-assembly.kcl } }, { - "commentStart": 579, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -407,17 +407,17 @@ description: Result of parsing car-wheel-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 590, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 599, + "commentStart": 0, "elements": [ { - "commentStart": 600, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -429,7 +429,7 @@ description: Result of parsing car-wheel-assembly.kcl } }, { - "commentStart": 603, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -441,7 +441,7 @@ description: Result of parsing car-wheel-assembly.kcl } }, { - "commentStart": 606, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -462,7 +462,7 @@ description: Result of parsing car-wheel-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 617, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -470,10 +470,10 @@ description: Result of parsing car-wheel-assembly.kcl }, "arg": { "abs_path": false, - "commentStart": 629, + "commentStart": 0, "end": 0, "name": { - "commentStart": 629, + "commentStart": 0, "end": 0, "name": "lugCount", "start": 0, @@ -488,14 +488,14 @@ description: Result of parsing car-wheel-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 646, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 665, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -507,10 +507,10 @@ description: Result of parsing car-wheel-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 514, + "commentStart": 0, "end": 0, "name": { - "commentStart": 514, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -520,7 +520,7 @@ description: Result of parsing car-wheel-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 514, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -528,13 +528,13 @@ description: Result of parsing car-wheel-assembly.kcl "unlabeled": null } ], - "commentStart": 502, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 678, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -562,16 +562,16 @@ description: Result of parsing car-wheel-assembly.kcl "type": "ExpressionStatement" }, { - "commentStart": 707, + "commentStart": 0, "end": 0, "expression": { "body": [ { "abs_path": false, - "commentStart": 707, + "commentStart": 0, "end": 0, "name": { - "commentStart": 707, + "commentStart": 0, "end": 0, "name": "brakeCaliper", "start": 0, @@ -587,14 +587,14 @@ description: Result of parsing car-wheel-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 735, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 739, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -609,14 +609,14 @@ description: Result of parsing car-wheel-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 742, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 746, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -631,14 +631,14 @@ description: Result of parsing car-wheel-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 751, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 755, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -653,10 +653,10 @@ description: Result of parsing car-wheel-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 725, + "commentStart": 0, "end": 0, "name": { - "commentStart": 725, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -666,7 +666,7 @@ description: Result of parsing car-wheel-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 725, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -674,13 +674,13 @@ description: Result of parsing car-wheel-assembly.kcl "unlabeled": null } ], - "commentStart": 707, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 757, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -703,14 +703,14 @@ description: Result of parsing car-wheel-assembly.kcl "type": "ExpressionStatement" }, { - "commentStart": 781, + "commentStart": 0, "end": 0, "expression": { "abs_path": false, - "commentStart": 781, + "commentStart": 0, "end": 0, "name": { - "commentStart": 781, + "commentStart": 0, "end": 0, "name": "carTire", "start": 0, @@ -733,7 +733,7 @@ description: Result of parsing car-wheel-assembly.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 95, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -748,10 +748,10 @@ description: Result of parsing car-wheel-assembly.kcl ], "properties": [ { - "commentStart": 104, + "commentStart": 0, "end": 0, "key": { - "commentStart": 104, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -761,10 +761,10 @@ description: Result of parsing car-wheel-assembly.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 124, + "commentStart": 0, "end": 0, "name": { - "commentStart": 124, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -785,7 +785,7 @@ description: Result of parsing car-wheel-assembly.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 127, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/ops.snap b/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/ops.snap index 165bebca9..09e4b45a8 100644 --- a/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/ops.snap @@ -14,7 +14,7 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -61,16 +61,7 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -81,7 +72,15 @@ description: Operations executed car-wheel-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -117,16 +116,7 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -137,7 +127,15 @@ description: Operations executed car-wheel-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -202,16 +200,7 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -222,7 +211,15 @@ description: Operations executed car-wheel-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -231,7 +228,13 @@ description: Operations executed car-wheel-assembly.kcl "type": "Number", "value": 0.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -252,16 +255,7 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -272,7 +266,15 @@ description: Operations executed car-wheel-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -308,16 +310,7 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -328,7 +321,15 @@ description: Operations executed car-wheel-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -393,16 +394,7 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -413,7 +405,15 @@ description: Operations executed car-wheel-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -422,7 +422,13 @@ description: Operations executed car-wheel-assembly.kcl "type": "Number", "value": 0.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -538,19 +544,10 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -558,7 +555,15 @@ description: Operations executed car-wheel-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -567,7 +572,13 @@ description: Operations executed car-wheel-assembly.kcl "type": "Number", "value": -0.125, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -617,19 +628,10 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -637,7 +639,15 @@ description: Operations executed car-wheel-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -646,7 +656,13 @@ description: Operations executed car-wheel-assembly.kcl "type": "Number", "value": -0.125, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -708,7 +724,7 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -754,7 +770,13 @@ description: Operations executed car-wheel-assembly.kcl "type": "Number", "value": 0.475, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -775,19 +797,10 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -795,7 +808,15 @@ description: Operations executed car-wheel-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -830,7 +851,13 @@ description: Operations executed car-wheel-assembly.kcl "type": "Number", "value": 0.95, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -851,19 +878,10 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -871,7 +889,15 @@ description: Operations executed car-wheel-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -880,7 +906,13 @@ description: Operations executed car-wheel-assembly.kcl "type": "Number", "value": -0.95, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -930,19 +962,10 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -950,7 +973,15 @@ description: Operations executed car-wheel-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -959,7 +990,13 @@ description: Operations executed car-wheel-assembly.kcl "type": "Number", "value": -0.475, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1009,7 +1046,7 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1110,7 +1147,7 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1215,8 +1252,8 @@ description: Operations executed car-wheel-assembly.kcl "type": "FunctionCall", "name": "spoke", "functionSourceRange": [ - 2620, - 4193, + 2636, + 4181, 5 ], "unlabeledArg": null, @@ -1226,184 +1263,185 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.1, - "ty": { - "type": "Unknown" - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.02, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.1, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.02, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -1605,8 +1643,8 @@ description: Operations executed car-wheel-assembly.kcl "type": "FunctionCall", "name": "spoke", "functionSourceRange": [ - 2620, - 4193, + 2636, + 4181, 5 ], "unlabeledArg": null, @@ -1616,184 +1654,185 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": -0.1, - "ty": { - "type": "Unknown" - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": -0.02, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": -0.1, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": -0.02, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -1991,7 +2030,7 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -2108,8 +2147,8 @@ description: Operations executed car-wheel-assembly.kcl "type": "FunctionCall", "name": "lug", "functionSourceRange": [ - 668, - 1293, + 637, + 1240, 8 ], "unlabeledArg": null, @@ -2119,174 +2158,181 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { + "origin": { "type": "Object", "value": { - "origin": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 2.25, - "ty": { - "type": "Unknown" - } + "x": { + "type": "Number", + "value": 2.25, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": -1.1811023622047243, - "ty": { - "type": "Unknown" - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "xAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": -1.1811023622047243, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "yAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": -1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "xAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "zAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "z": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "yAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": -1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + } + }, + "zAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" } } } @@ -2554,7 +2600,7 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -2688,7 +2734,7 @@ description: Operations executed car-wheel-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/program_memory.snap index 2b1658919..8fba2f395 100644 --- a/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/car-wheel-assembly/program_memory.snap @@ -145,14 +145,26 @@ description: Variables in memory after executing car-wheel-assembly.kcl "type": "Number", "value": 0.9449, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "lugHeadLength": { "type": "Number", "value": 0.4724, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "lugHolePatternDia": { @@ -172,7 +184,13 @@ description: Variables in memory after executing car-wheel-assembly.kcl "type": "Number", "value": 1.1811, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "lugNut": { @@ -183,28 +201,52 @@ description: Variables in memory after executing car-wheel-assembly.kcl "type": "Number", "value": 4.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "lugThreadDepth": { "type": "Number", "value": 0.6811, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "lugThreadDiameter": { "type": "Number", "value": 0.4016, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "offset": { "type": "Number", "value": -1.378, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "rotorDiameter": { @@ -302,7 +344,13 @@ description: Variables in memory after executing car-wheel-assembly.kcl "type": "Number", "value": 0.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "spacerPatternDiameter": { diff --git a/rust/kcl-lib/tests/kcl_samples/color-cube/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/color-cube/artifact_commands.snap index 5495016cb..86894f24c 100644 --- a/rust/kcl-lib/tests/kcl_samples/color-cube/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/color-cube/artifact_commands.snap @@ -413,7 +413,8 @@ description: Artifact commands color-cube.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -679,7 +680,8 @@ description: Artifact commands color-cube.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -945,7 +947,8 @@ description: Artifact commands color-cube.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1211,7 +1214,8 @@ description: Artifact commands color-cube.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1477,7 +1481,8 @@ description: Artifact commands color-cube.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1743,7 +1748,8 @@ description: Artifact commands color-cube.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/color-cube/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/color-cube/artifact_graph_flowchart.snap.md index 54f3cf876..f7fa141ae 100644 --- a/rust/kcl-lib/tests/kcl_samples/color-cube/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/color-cube/artifact_graph_flowchart.snap.md @@ -2,54 +2,54 @@ flowchart LR subgraph path7 [Path] 7["Path
[773, 813, 0]"] - 8["Segment
[821, 868, 0]"] - 9["Segment
[876, 982, 0]"] - 10["Segment
[990, 1116, 0]"] + 8["Segment
[821, 886, 0]"] + 9["Segment
[894, 991, 0]"] + 10["Segment
[999, 1116, 0]"] 11["Segment
[1124, 1180, 0]"] 12["Segment
[1188, 1195, 0]"] 13[Solid2d] end subgraph path29 [Path] 29["Path
[773, 813, 0]"] - 30["Segment
[821, 868, 0]"] - 31["Segment
[876, 982, 0]"] - 32["Segment
[990, 1116, 0]"] + 30["Segment
[821, 886, 0]"] + 31["Segment
[894, 991, 0]"] + 32["Segment
[999, 1116, 0]"] 33["Segment
[1124, 1180, 0]"] 34["Segment
[1188, 1195, 0]"] 35[Solid2d] end subgraph path51 [Path] 51["Path
[773, 813, 0]"] - 52["Segment
[821, 868, 0]"] - 53["Segment
[876, 982, 0]"] - 54["Segment
[990, 1116, 0]"] + 52["Segment
[821, 886, 0]"] + 53["Segment
[894, 991, 0]"] + 54["Segment
[999, 1116, 0]"] 55["Segment
[1124, 1180, 0]"] 56["Segment
[1188, 1195, 0]"] 57[Solid2d] end subgraph path73 [Path] 73["Path
[773, 813, 0]"] - 74["Segment
[821, 868, 0]"] - 75["Segment
[876, 982, 0]"] - 76["Segment
[990, 1116, 0]"] + 74["Segment
[821, 886, 0]"] + 75["Segment
[894, 991, 0]"] + 76["Segment
[999, 1116, 0]"] 77["Segment
[1124, 1180, 0]"] 78["Segment
[1188, 1195, 0]"] 79[Solid2d] end subgraph path95 [Path] 95["Path
[773, 813, 0]"] - 96["Segment
[821, 868, 0]"] - 97["Segment
[876, 982, 0]"] - 98["Segment
[990, 1116, 0]"] + 96["Segment
[821, 886, 0]"] + 97["Segment
[894, 991, 0]"] + 98["Segment
[999, 1116, 0]"] 99["Segment
[1124, 1180, 0]"] 100["Segment
[1188, 1195, 0]"] 101[Solid2d] end subgraph path117 [Path] 117["Path
[773, 813, 0]"] - 118["Segment
[821, 868, 0]"] - 119["Segment
[876, 982, 0]"] - 120["Segment
[990, 1116, 0]"] + 118["Segment
[821, 886, 0]"] + 119["Segment
[894, 991, 0]"] + 120["Segment
[999, 1116, 0]"] 121["Segment
[1124, 1180, 0]"] 122["Segment
[1188, 1195, 0]"] 123[Solid2d] @@ -60,7 +60,7 @@ flowchart LR 4["Plane
[504, 540, 0]"] 5["Plane
[552, 602, 0]"] 6["Plane
[615, 650, 0]"] - 14["Sweep Extrusion
[1203, 1237, 0]"] + 14["Sweep Extrusion
[1203, 1234, 0]"] 15[Wall] 16[Wall] 17[Wall] @@ -75,7 +75,7 @@ flowchart LR 26["SweepEdge Adjacent"] 27["SweepEdge Opposite"] 28["SweepEdge Adjacent"] - 36["Sweep Extrusion
[1203, 1237, 0]"] + 36["Sweep Extrusion
[1203, 1234, 0]"] 37[Wall] 38[Wall] 39[Wall] @@ -90,7 +90,7 @@ flowchart LR 48["SweepEdge Adjacent"] 49["SweepEdge Opposite"] 50["SweepEdge Adjacent"] - 58["Sweep Extrusion
[1203, 1237, 0]"] + 58["Sweep Extrusion
[1203, 1234, 0]"] 59[Wall] 60[Wall] 61[Wall] @@ -105,7 +105,7 @@ flowchart LR 70["SweepEdge Adjacent"] 71["SweepEdge Opposite"] 72["SweepEdge Adjacent"] - 80["Sweep Extrusion
[1203, 1237, 0]"] + 80["Sweep Extrusion
[1203, 1234, 0]"] 81[Wall] 82[Wall] 83[Wall] @@ -120,7 +120,7 @@ flowchart LR 92["SweepEdge Adjacent"] 93["SweepEdge Opposite"] 94["SweepEdge Adjacent"] - 102["Sweep Extrusion
[1203, 1237, 0]"] + 102["Sweep Extrusion
[1203, 1234, 0]"] 103[Wall] 104[Wall] 105[Wall] @@ -135,7 +135,7 @@ flowchart LR 114["SweepEdge Adjacent"] 115["SweepEdge Opposite"] 116["SweepEdge Adjacent"] - 124["Sweep Extrusion
[1203, 1237, 0]"] + 124["Sweep Extrusion
[1203, 1234, 0]"] 125[Wall] 126[Wall] 127[Wall] diff --git a/rust/kcl-lib/tests/kcl_samples/color-cube/ast.snap b/rust/kcl-lib/tests/kcl_samples/color-cube/ast.snap index d715e0573..2a971e13b 100644 --- a/rust/kcl-lib/tests/kcl_samples/color-cube/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/color-cube/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing color-cube.kcl "Ok": { "body": [ { - "commentStart": 167, + "commentStart": 0, "declaration": { - "commentStart": 211, + "commentStart": 0, "end": 0, "id": { - "commentStart": 211, + "commentStart": 0, "end": 0, "name": "size", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 218, + "commentStart": 0, "end": 0, "raw": "100", "start": 0, @@ -42,26 +42,26 @@ description: Result of parsing color-cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 222, + "commentStart": 0, "declaration": { - "commentStart": 222, + "commentStart": 0, "end": 0, "id": { - "commentStart": 222, + "commentStart": 0, "end": 0, "name": "halfSize", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 233, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 233, + "commentStart": 0, "end": 0, "name": { - "commentStart": 233, + "commentStart": 0, "end": 0, "name": "size", "start": 0, @@ -74,7 +74,7 @@ description: Result of parsing color-cube.kcl }, "operator": "/", "right": { - "commentStart": 240, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -99,19 +99,19 @@ description: Result of parsing color-cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 242, + "commentStart": 0, "declaration": { - "commentStart": 242, + "commentStart": 0, "end": 0, "id": { - "commentStart": 242, + "commentStart": 0, "end": 0, "name": "extrudeLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 258, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -132,19 +132,19 @@ description: Result of parsing color-cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 262, + "commentStart": 0, "declaration": { - "commentStart": 262, + "commentStart": 0, "end": 0, "id": { - "commentStart": 262, + "commentStart": 0, "end": 0, "name": "metalConstant", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 278, + "commentStart": 0, "end": 0, "raw": "50", "start": 0, @@ -165,19 +165,19 @@ description: Result of parsing color-cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 281, + "commentStart": 0, "declaration": { - "commentStart": 281, + "commentStart": 0, "end": 0, "id": { - "commentStart": 281, + "commentStart": 0, "end": 0, "name": "roughnessConstant", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 301, + "commentStart": 0, "end": 0, "raw": "50", "start": 0, @@ -198,12 +198,12 @@ description: Result of parsing color-cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 303, + "commentStart": 0, "declaration": { - "commentStart": 344, + "commentStart": 0, "end": 0, "id": { - "commentStart": 344, + "commentStart": 0, "end": 0, "name": "bluePlane", "start": 0, @@ -214,7 +214,7 @@ description: Result of parsing color-cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 372, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -222,10 +222,10 @@ description: Result of parsing color-cube.kcl }, "arg": { "abs_path": false, - "commentStart": 381, + "commentStart": 0, "end": 0, "name": { - "commentStart": 381, + "commentStart": 0, "end": 0, "name": "halfSize", "start": 0, @@ -240,10 +240,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 356, + "commentStart": 0, "end": 0, "name": { - "commentStart": 356, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -253,17 +253,17 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 356, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 368, + "commentStart": 0, "end": 0, "name": { - "commentStart": 368, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -290,12 +290,12 @@ description: Result of parsing color-cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 391, + "commentStart": 0, "declaration": { - "commentStart": 391, + "commentStart": 0, "end": 0, "id": { - "commentStart": 391, + "commentStart": 0, "end": 0, "name": "yellowPlane", "start": 0, @@ -306,7 +306,7 @@ description: Result of parsing color-cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 421, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -315,10 +315,10 @@ description: Result of parsing color-cube.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 431, + "commentStart": 0, "end": 0, "name": { - "commentStart": 431, + "commentStart": 0, "end": 0, "name": "halfSize", "start": 0, @@ -329,7 +329,7 @@ description: Result of parsing color-cube.kcl "type": "Name", "type": "Name" }, - "commentStart": 430, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -340,10 +340,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 405, + "commentStart": 0, "end": 0, "name": { - "commentStart": 405, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -353,17 +353,17 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 405, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 417, + "commentStart": 0, "end": 0, "name": { - "commentStart": 417, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -385,12 +385,12 @@ description: Result of parsing color-cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 441, + "commentStart": 0, "declaration": { - "commentStart": 441, + "commentStart": 0, "end": 0, "id": { - "commentStart": 441, + "commentStart": 0, "end": 0, "name": "greenPlane", "start": 0, @@ -401,7 +401,7 @@ description: Result of parsing color-cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 470, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -410,10 +410,10 @@ description: Result of parsing color-cube.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 480, + "commentStart": 0, "end": 0, "name": { - "commentStart": 480, + "commentStart": 0, "end": 0, "name": "halfSize", "start": 0, @@ -424,7 +424,7 @@ description: Result of parsing color-cube.kcl "type": "Name", "type": "Name" }, - "commentStart": 479, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -435,10 +435,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 454, + "commentStart": 0, "end": 0, "name": { - "commentStart": 454, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -448,17 +448,17 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 454, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 466, + "commentStart": 0, "end": 0, "name": { - "commentStart": 466, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -480,12 +480,12 @@ description: Result of parsing color-cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 490, + "commentStart": 0, "declaration": { - "commentStart": 490, + "commentStart": 0, "end": 0, "id": { - "commentStart": 490, + "commentStart": 0, "end": 0, "name": "purplePlane", "start": 0, @@ -496,7 +496,7 @@ description: Result of parsing color-cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 521, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -505,10 +505,10 @@ description: Result of parsing color-cube.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 531, + "commentStart": 0, "end": 0, "name": { - "commentStart": 531, + "commentStart": 0, "end": 0, "name": "halfSize", "start": 0, @@ -519,7 +519,7 @@ description: Result of parsing color-cube.kcl "type": "Name", "type": "Name" }, - "commentStart": 530, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -530,10 +530,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 504, + "commentStart": 0, "end": 0, "name": { - "commentStart": 504, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -543,7 +543,7 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 504, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -551,10 +551,10 @@ description: Result of parsing color-cube.kcl "unlabeled": { "argument": { "abs_path": false, - "commentStart": 517, + "commentStart": 0, "end": 0, "name": { - "commentStart": 517, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -565,7 +565,7 @@ description: Result of parsing color-cube.kcl "type": "Name", "type": "Name" }, - "commentStart": 516, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -583,12 +583,12 @@ description: Result of parsing color-cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 541, + "commentStart": 0, "declaration": { - "commentStart": 541, + "commentStart": 0, "end": 0, "id": { - "commentStart": 541, + "commentStart": 0, "end": 0, "name": "redPlane", "start": 0, @@ -599,21 +599,21 @@ description: Result of parsing color-cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 568, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 577, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 577, + "commentStart": 0, "end": 0, "name": { - "commentStart": 577, + "commentStart": 0, "end": 0, "name": "halfSize", "start": 0, @@ -627,10 +627,10 @@ description: Result of parsing color-cube.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 588, + "commentStart": 0, "end": 0, "name": { - "commentStart": 588, + "commentStart": 0, "end": 0, "name": "extrudeLength", "start": 0, @@ -649,10 +649,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 552, + "commentStart": 0, "end": 0, "name": { - "commentStart": 552, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -662,17 +662,17 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 552, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 564, + "commentStart": 0, "end": 0, "name": { - "commentStart": 564, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -694,12 +694,12 @@ description: Result of parsing color-cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 603, + "commentStart": 0, "declaration": { - "commentStart": 603, + "commentStart": 0, "end": 0, "id": { - "commentStart": 603, + "commentStart": 0, "end": 0, "name": "tealPlane", "start": 0, @@ -710,7 +710,7 @@ description: Result of parsing color-cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 631, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -719,10 +719,10 @@ description: Result of parsing color-cube.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 641, + "commentStart": 0, "end": 0, "name": { - "commentStart": 641, + "commentStart": 0, "end": 0, "name": "halfSize", "start": 0, @@ -733,7 +733,7 @@ description: Result of parsing color-cube.kcl "type": "Name", "type": "Name" }, - "commentStart": 640, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -744,10 +744,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 615, + "commentStart": 0, "end": 0, "name": { - "commentStart": 615, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -757,17 +757,17 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 615, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 627, + "commentStart": 0, "end": 0, "name": { - "commentStart": 627, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -789,12 +789,12 @@ description: Result of parsing color-cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 650, + "commentStart": 0, "declaration": { - "commentStart": 715, + "commentStart": 0, "end": 0, "id": { - "commentStart": 715, + "commentStart": 0, "end": 0, "name": "sketchRectangle", "start": 0, @@ -808,10 +808,10 @@ description: Result of parsing color-cube.kcl "body": [ { "abs_path": false, - "commentStart": 758, + "commentStart": 0, "end": 0, "name": { - "commentStart": 758, + "commentStart": 0, "end": 0, "name": "profile", "start": 0, @@ -825,15 +825,15 @@ description: Result of parsing color-cube.kcl { "arguments": [ { - "commentStart": 788, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 790, + "commentStart": 0, "end": 0, "name": { - "commentStart": 790, + "commentStart": 0, "end": 0, "name": "halfSize", "start": 0, @@ -844,7 +844,7 @@ description: Result of parsing color-cube.kcl "type": "Name", "type": "Name" }, - "commentStart": 789, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -853,10 +853,10 @@ description: Result of parsing color-cube.kcl }, { "abs_path": false, - "commentStart": 800, + "commentStart": 0, "end": 0, "name": { - "commentStart": 800, + "commentStart": 0, "end": 0, "name": "halfSize", "start": 0, @@ -874,7 +874,7 @@ description: Result of parsing color-cube.kcl "type": "ArrayExpression" }, { - "commentStart": 811, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -883,10 +883,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 773, + "commentStart": 0, "end": 0, "name": { - "commentStart": 773, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -896,7 +896,7 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 773, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -905,64 +905,78 @@ description: Result of parsing color-cube.kcl { "arguments": [ { - "commentStart": 832, - "elements": [ - { - "commentStart": 833, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "abs_path": false, - "commentStart": 836, - "end": 0, - "name": { - "commentStart": 836, - "end": 0, - "name": "size", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 843, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 846, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA001" + } } ], "callee": { "abs_path": false, - "commentStart": 821, + "commentStart": 0, "end": 0, "name": { - "commentStart": 821, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -972,149 +986,35 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 821, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 887, - "elements": [ - { - "commentStart": 898, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 905, - "end": 0, - "name": { - "commentStart": 905, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 898, - "end": 0, - "name": { - "commentStart": 898, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 898, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 929, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "abs_path": false, - "commentStart": 942, - "end": 0, - "name": { - "commentStart": 942, - "end": 0, - "name": "size", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 957, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 960, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentB001" - } - ], - "callee": { - "abs_path": false, - "commentStart": 876, - "end": 0, - "name": { - "commentStart": 876, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 876, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1001, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 1019, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1019, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA001", "start": 0, @@ -1128,10 +1028,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 1012, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1012, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -1141,88 +1041,81 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 1012, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 1059, - "end": 0, - "name": { - "commentStart": 1059, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1052, - "end": 0, - "name": { - "commentStart": 1052, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1052, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 1051, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 1091, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 1094, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentC001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentB001" + } } ], "callee": { "abs_path": false, - "commentStart": 990, + "commentStart": 0, "end": 0, "name": { - "commentStart": 990, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -1232,30 +1125,182 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 990, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1129, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentC001" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1143, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1158, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1264,10 +1309,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 1144, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1144, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -1277,7 +1322,7 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 1144, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1286,7 +1331,7 @@ description: Result of parsing color-cube.kcl { "arguments": [ { - "commentStart": 1176, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1295,10 +1340,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 1162, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1162, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -1308,7 +1353,7 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 1162, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1324,10 +1369,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 1124, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1124, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1337,7 +1382,7 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 1124, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1348,10 +1393,10 @@ description: Result of parsing color-cube.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1188, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1188, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1361,7 +1406,7 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 1188, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1372,7 +1417,7 @@ description: Result of parsing color-cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 1214, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1380,10 +1425,10 @@ description: Result of parsing color-cube.kcl }, "arg": { "abs_path": false, - "commentStart": 1223, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1223, + "commentStart": 0, "end": 0, "name": "extrudeLength", "start": 0, @@ -1398,10 +1443,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 1203, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1203, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1411,25 +1456,19 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 1203, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", - "unlabeled": { - "commentStart": 1211, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1256, + "commentStart": 0, "end": 0, "name": "color", "start": 0, @@ -1437,10 +1476,10 @@ description: Result of parsing color-cube.kcl }, "arg": { "abs_path": false, - "commentStart": 1264, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1264, + "commentStart": 0, "end": 0, "name": "color", "start": 0, @@ -1455,7 +1494,7 @@ description: Result of parsing color-cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 1271, + "commentStart": 0, "end": 0, "name": "metalness", "start": 0, @@ -1463,10 +1502,10 @@ description: Result of parsing color-cube.kcl }, "arg": { "abs_path": false, - "commentStart": 1283, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1283, + "commentStart": 0, "end": 0, "name": "metalConstant", "start": 0, @@ -1481,7 +1520,7 @@ description: Result of parsing color-cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 1298, + "commentStart": 0, "end": 0, "name": "roughness", "start": 0, @@ -1489,10 +1528,10 @@ description: Result of parsing color-cube.kcl }, "arg": { "abs_path": false, - "commentStart": 1310, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1310, + "commentStart": 0, "end": 0, "name": "roughnessConstant", "start": 0, @@ -1507,10 +1546,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 1245, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1245, + "commentStart": 0, "end": 0, "name": "appearance", "start": 0, @@ -1520,7 +1559,7 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 1245, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1528,30 +1567,30 @@ description: Result of parsing color-cube.kcl "unlabeled": null } ], - "commentStart": 758, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, - "commentStart": 751, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 747, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 730, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 731, + "commentStart": 0, "end": 0, "name": "profile", "start": 0, @@ -1561,7 +1600,7 @@ description: Result of parsing color-cube.kcl { "type": "Parameter", "identifier": { - "commentStart": 740, + "commentStart": 0, "end": 0, "name": "color", "start": 0, @@ -1588,16 +1627,16 @@ description: Result of parsing color-cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 1330, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 1380, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1380, + "commentStart": 0, "end": 0, "name": "bluePlane", "start": 0, @@ -1609,7 +1648,7 @@ description: Result of parsing color-cube.kcl "type": "Name" }, { - "commentStart": 1391, + "commentStart": 0, "end": 0, "raw": "'#0000FF'", "start": 0, @@ -1620,10 +1659,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 1364, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1364, + "commentStart": 0, "end": 0, "name": "sketchRectangle", "start": 0, @@ -1633,7 +1672,7 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 1364, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1649,16 +1688,16 @@ description: Result of parsing color-cube.kcl "type": "ExpressionStatement" }, { - "commentStart": 1402, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 1418, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1418, + "commentStart": 0, "end": 0, "name": "yellowPlane", "start": 0, @@ -1670,7 +1709,7 @@ description: Result of parsing color-cube.kcl "type": "Name" }, { - "commentStart": 1431, + "commentStart": 0, "end": 0, "raw": "'#FFFF00'", "start": 0, @@ -1681,10 +1720,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 1402, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1402, + "commentStart": 0, "end": 0, "name": "sketchRectangle", "start": 0, @@ -1694,7 +1733,7 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 1402, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1705,16 +1744,16 @@ description: Result of parsing color-cube.kcl "type": "ExpressionStatement" }, { - "commentStart": 1442, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 1458, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1458, + "commentStart": 0, "end": 0, "name": "greenPlane", "start": 0, @@ -1726,7 +1765,7 @@ description: Result of parsing color-cube.kcl "type": "Name" }, { - "commentStart": 1470, + "commentStart": 0, "end": 0, "raw": "'#00FF00'", "start": 0, @@ -1737,10 +1776,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 1442, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1442, + "commentStart": 0, "end": 0, "name": "sketchRectangle", "start": 0, @@ -1750,7 +1789,7 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 1442, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1761,16 +1800,16 @@ description: Result of parsing color-cube.kcl "type": "ExpressionStatement" }, { - "commentStart": 1481, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 1497, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1497, + "commentStart": 0, "end": 0, "name": "redPlane", "start": 0, @@ -1782,7 +1821,7 @@ description: Result of parsing color-cube.kcl "type": "Name" }, { - "commentStart": 1507, + "commentStart": 0, "end": 0, "raw": "'#FF0000'", "start": 0, @@ -1793,10 +1832,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 1481, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1481, + "commentStart": 0, "end": 0, "name": "sketchRectangle", "start": 0, @@ -1806,7 +1845,7 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 1481, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1817,16 +1856,16 @@ description: Result of parsing color-cube.kcl "type": "ExpressionStatement" }, { - "commentStart": 1518, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 1534, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1534, + "commentStart": 0, "end": 0, "name": "tealPlane", "start": 0, @@ -1838,7 +1877,7 @@ description: Result of parsing color-cube.kcl "type": "Name" }, { - "commentStart": 1545, + "commentStart": 0, "end": 0, "raw": "'#00FFFF'", "start": 0, @@ -1849,10 +1888,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 1518, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1518, + "commentStart": 0, "end": 0, "name": "sketchRectangle", "start": 0, @@ -1862,7 +1901,7 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 1518, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1873,16 +1912,16 @@ description: Result of parsing color-cube.kcl "type": "ExpressionStatement" }, { - "commentStart": 1556, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 1572, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1572, + "commentStart": 0, "end": 0, "name": "purplePlane", "start": 0, @@ -1894,7 +1933,7 @@ description: Result of parsing color-cube.kcl "type": "Name" }, { - "commentStart": 1585, + "commentStart": 0, "end": 0, "raw": "'#FF00FF'", "start": 0, @@ -1905,10 +1944,10 @@ description: Result of parsing color-cube.kcl ], "callee": { "abs_path": false, - "commentStart": 1556, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1556, + "commentStart": 0, "end": 0, "name": "sketchRectangle", "start": 0, @@ -1918,7 +1957,7 @@ description: Result of parsing color-cube.kcl "start": 0, "type": "Name" }, - "commentStart": 1556, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1936,7 +1975,7 @@ description: Result of parsing color-cube.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 135, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -1951,10 +1990,10 @@ description: Result of parsing color-cube.kcl ], "properties": [ { - "commentStart": 144, + "commentStart": 0, "end": 0, "key": { - "commentStart": 144, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -1964,10 +2003,10 @@ description: Result of parsing color-cube.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 164, + "commentStart": 0, "end": 0, "name": { - "commentStart": 164, + "commentStart": 0, "end": 0, "name": "mm", "start": 0, @@ -1988,7 +2027,7 @@ description: Result of parsing color-cube.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 167, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/color-cube/ops.snap b/rust/kcl-lib/tests/kcl_samples/color-cube/ops.snap index 9fb3115c1..8b1b4ccaa 100644 --- a/rust/kcl-lib/tests/kcl_samples/color-cube/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/color-cube/ops.snap @@ -10,7 +10,13 @@ description: Operations executed color-cube.kcl "type": "Number", "value": 50.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -34,7 +40,13 @@ description: Operations executed color-cube.kcl "type": "Number", "value": -50.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -58,7 +70,13 @@ description: Operations executed color-cube.kcl "type": "Number", "value": -50.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -82,7 +100,13 @@ description: Operations executed color-cube.kcl "type": "Number", "value": -50.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -106,7 +130,13 @@ description: Operations executed color-cube.kcl "type": "Number", "value": 49.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -130,7 +160,13 @@ description: Operations executed color-cube.kcl "type": "Number", "value": -50.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -154,7 +190,7 @@ description: Operations executed color-cube.kcl "name": "sketchRectangle", "functionSourceRange": [ 730, - 1330, + 1327, 0 ], "unlabeledArg": null, @@ -204,7 +240,7 @@ description: Operations executed color-cube.kcl "name": "sketchRectangle", "functionSourceRange": [ 730, - 1330, + 1327, 0 ], "unlabeledArg": null, @@ -254,7 +290,7 @@ description: Operations executed color-cube.kcl "name": "sketchRectangle", "functionSourceRange": [ 730, - 1330, + 1327, 0 ], "unlabeledArg": null, @@ -304,7 +340,7 @@ description: Operations executed color-cube.kcl "name": "sketchRectangle", "functionSourceRange": [ 730, - 1330, + 1327, 0 ], "unlabeledArg": null, @@ -354,7 +390,7 @@ description: Operations executed color-cube.kcl "name": "sketchRectangle", "functionSourceRange": [ 730, - 1330, + 1327, 0 ], "unlabeledArg": null, @@ -404,7 +440,7 @@ description: Operations executed color-cube.kcl "name": "sketchRectangle", "functionSourceRange": [ 730, - 1330, + 1327, 0 ], "unlabeledArg": null, diff --git a/rust/kcl-lib/tests/kcl_samples/color-cube/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/color-cube/program_memory.snap index a1716179a..3045566b5 100644 --- a/rust/kcl-lib/tests/kcl_samples/color-cube/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/color-cube/program_memory.snap @@ -12,22 +12,34 @@ description: Variables in memory after executing color-cube.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 50.0 + "z": 50.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -56,22 +68,34 @@ description: Variables in memory after executing color-cube.kcl "origin": { "x": 0.0, "y": 50.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -82,7 +106,13 @@ description: Variables in memory after executing color-cube.kcl "type": "Number", "value": 50.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "metalConstant": { @@ -107,22 +137,34 @@ description: Variables in memory after executing color-cube.kcl "origin": { "x": 0.0, "y": -50.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": -0.0, "y": 1.0, - "z": -0.0 + "z": -0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -138,22 +180,34 @@ description: Variables in memory after executing color-cube.kcl "origin": { "x": 49.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -198,22 +252,34 @@ description: Variables in memory after executing color-cube.kcl "origin": { "x": -50.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -229,22 +295,34 @@ description: Variables in memory after executing color-cube.kcl "origin": { "x": 0.0, "y": 0.0, - "z": -50.0 + "z": -50.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/artifact_graph_flowchart.snap.md index 8a44ca201..b1def1e22 100644 --- a/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/artifact_graph_flowchart.snap.md @@ -3,43 +3,43 @@ flowchart LR subgraph path2 [Path] 2["Path
[631, 865, 0]"] 3["Segment
[875, 1008, 0]"] - 4["Segment
[1018, 1109, 0]"] - 5["Segment
[1119, 1174, 0]"] - 6["Segment
[1184, 1275, 0]"] - 7["Segment
[1285, 1340, 0]"] - 8["Segment
[1350, 1406, 0]"] - 9["Segment
[1416, 1424, 0]"] + 4["Segment
[1018, 1070, 0]"] + 5["Segment
[1080, 1127, 0]"] + 6["Segment
[1137, 1189, 0]"] + 7["Segment
[1199, 1246, 0]"] + 8["Segment
[1256, 1321, 0]"] + 9["Segment
[1331, 1339, 0]"] 10[Solid2d] end subgraph path11 [Path] - 11["Path
[1439, 1489, 0]"] - 12["Segment
[1439, 1489, 0]"] + 11["Path
[1354, 1404, 0]"] + 12["Segment
[1354, 1404, 0]"] 13[Solid2d] end subgraph path15 [Path] 15["Path
[631, 865, 0]"] 16["Segment
[875, 1008, 0]"] - 17["Segment
[1018, 1109, 0]"] - 18["Segment
[1119, 1174, 0]"] - 19["Segment
[1184, 1275, 0]"] - 20["Segment
[1285, 1340, 0]"] - 21["Segment
[1350, 1406, 0]"] - 22["Segment
[1416, 1424, 0]"] + 17["Segment
[1018, 1070, 0]"] + 18["Segment
[1080, 1127, 0]"] + 19["Segment
[1137, 1189, 0]"] + 20["Segment
[1199, 1246, 0]"] + 21["Segment
[1256, 1321, 0]"] + 22["Segment
[1331, 1339, 0]"] 23[Solid2d] end subgraph path24 [Path] - 24["Path
[1439, 1489, 0]"] - 25["Segment
[1439, 1489, 0]"] + 24["Path
[1354, 1404, 0]"] + 25["Segment
[1354, 1404, 0]"] 26[Solid2d] end subgraph path28 [Path] 28["Path
[631, 865, 0]"] - 35["Segment
[1416, 1424, 0]"] + 35["Segment
[1331, 1339, 0]"] 36[Solid2d] end subgraph path37 [Path] - 37["Path
[1439, 1489, 0]"] - 38["Segment
[1439, 1489, 0]"] + 37["Path
[1354, 1404, 0]"] + 38["Segment
[1354, 1404, 0]"] 39[Solid2d] end 1["Plane
[587, 620, 0]"] @@ -51,7 +51,7 @@ flowchart LR 32["SweepEdge Opposite"] 33["SweepEdge Opposite"] 34["SweepEdge Opposite"] - 40["Sweep Loft
[1619, 1708, 0]"] + 40["Sweep Loft
[1534, 1623, 0]"] 41[Wall] 42[Wall] 43[Wall] diff --git a/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ast.snap b/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ast.snap index b0a4f0906..3394ccb51 100644 --- a/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ast.snap @@ -6,12 +6,12 @@ description: Result of parsing cycloidal-gear.kcl "Ok": { "body": [ { - "commentStart": 203, + "commentStart": 0, "declaration": { - "commentStart": 252, + "commentStart": 0, "end": 0, "id": { - "commentStart": 252, + "commentStart": 0, "end": 0, "name": "cycloidalGear", "start": 0, @@ -21,12 +21,12 @@ description: Result of parsing cycloidal-gear.kcl "body": { "body": [ { - "commentStart": 316, + "commentStart": 0, "declaration": { - "commentStart": 481, + "commentStart": 0, "end": 0, "id": { - "commentStart": 481, + "commentStart": 0, "end": 0, "name": "gearSketch", "start": 0, @@ -36,29 +36,29 @@ description: Result of parsing cycloidal-gear.kcl "body": { "body": [ { - "commentStart": 507, + "commentStart": 0, "declaration": { - "commentStart": 507, + "commentStart": 0, "end": 0, "id": { - "commentStart": 507, + "commentStart": 0, "end": 0, "name": "helixAngleP", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 521, + "commentStart": 0, "end": 0, "left": { - "commentStart": 521, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 521, + "commentStart": 0, "end": 0, "name": { - "commentStart": 521, + "commentStart": 0, "end": 0, "name": "helixAngle", "start": 0, @@ -72,10 +72,10 @@ description: Result of parsing cycloidal-gear.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 534, + "commentStart": 0, "end": 0, "name": { - "commentStart": 534, + "commentStart": 0, "end": 0, "name": "gHeight", "start": 0, @@ -93,10 +93,10 @@ description: Result of parsing cycloidal-gear.kcl "operator": "/", "right": { "abs_path": false, - "commentStart": 544, + "commentStart": 0, "end": 0, "name": { - "commentStart": 544, + "commentStart": 0, "end": 0, "name": "gearHeight", "start": 0, @@ -121,12 +121,12 @@ description: Result of parsing cycloidal-gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 559, + "commentStart": 0, "declaration": { - "commentStart": 559, + "commentStart": 0, "end": 0, "id": { - "commentStart": 559, + "commentStart": 0, "end": 0, "name": "gearProfile", "start": 0, @@ -141,7 +141,7 @@ description: Result of parsing cycloidal-gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 603, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -149,10 +149,10 @@ description: Result of parsing cycloidal-gear.kcl }, "arg": { "abs_path": false, - "commentStart": 612, + "commentStart": 0, "end": 0, "name": { - "commentStart": 612, + "commentStart": 0, "end": 0, "name": "gHeight", "start": 0, @@ -167,10 +167,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 587, + "commentStart": 0, "end": 0, "name": { - "commentStart": 587, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -180,17 +180,17 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 587, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 599, + "commentStart": 0, "end": 0, "name": { - "commentStart": 599, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -205,10 +205,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 573, + "commentStart": 0, "end": 0, "name": { - "commentStart": 573, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -218,7 +218,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 573, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -227,23 +227,23 @@ description: Result of parsing cycloidal-gear.kcl { "arguments": [ { - "commentStart": 646, + "commentStart": 0, "elements": [ { - "commentStart": 659, + "commentStart": 0, "end": 0, "left": { - "commentStart": 659, + "commentStart": 0, "end": 0, "left": { - "commentStart": 659, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 659, + "commentStart": 0, "end": 0, "name": { - "commentStart": 659, + "commentStart": 0, "end": 0, "name": "gearPitch", "start": 0, @@ -256,7 +256,7 @@ description: Result of parsing cycloidal-gear.kcl }, "operator": "*", "right": { - "commentStart": 671, + "commentStart": 0, "end": 0, "raw": "1.55", "start": 0, @@ -278,10 +278,10 @@ description: Result of parsing cycloidal-gear.kcl "arguments": [ { "abs_path": false, - "commentStart": 692, + "commentStart": 0, "end": 0, "name": { - "commentStart": 692, + "commentStart": 0, "end": 0, "name": "helixAngleP", "start": 0, @@ -295,10 +295,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 682, + "commentStart": 0, "end": 0, "name": { - "commentStart": 682, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -308,7 +308,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 682, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -317,10 +317,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 678, + "commentStart": 0, "end": 0, "name": { - "commentStart": 678, + "commentStart": 0, "end": 0, "name": "cos", "start": 0, @@ -330,7 +330,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 678, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -342,14 +342,14 @@ description: Result of parsing cycloidal-gear.kcl }, "operator": "+", "right": { - "commentStart": 708, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 708, + "commentStart": 0, "end": 0, "name": { - "commentStart": 708, + "commentStart": 0, "end": 0, "name": "gearPitch", "start": 0, @@ -368,10 +368,10 @@ description: Result of parsing cycloidal-gear.kcl { "argument": { "abs_path": false, - "commentStart": 735, + "commentStart": 0, "end": 0, "name": { - "commentStart": 735, + "commentStart": 0, "end": 0, "name": "helixAngleP", "start": 0, @@ -382,7 +382,7 @@ description: Result of parsing cycloidal-gear.kcl "type": "Name", "type": "Name" }, - "commentStart": 734, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -392,10 +392,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 724, + "commentStart": 0, "end": 0, "name": { - "commentStart": 724, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -405,7 +405,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 724, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -414,10 +414,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 720, + "commentStart": 0, "end": 0, "name": { - "commentStart": 720, + "commentStart": 0, "end": 0, "name": "sin", "start": 0, @@ -427,7 +427,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 720, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -442,20 +442,20 @@ description: Result of parsing cycloidal-gear.kcl "type": "BinaryExpression" }, { - "commentStart": 761, + "commentStart": 0, "end": 0, "left": { - "commentStart": 761, + "commentStart": 0, "end": 0, "left": { - "commentStart": 761, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 761, + "commentStart": 0, "end": 0, "name": { - "commentStart": 761, + "commentStart": 0, "end": 0, "name": "gearPitch", "start": 0, @@ -468,7 +468,7 @@ description: Result of parsing cycloidal-gear.kcl }, "operator": "*", "right": { - "commentStart": 773, + "commentStart": 0, "end": 0, "raw": "1.55", "start": 0, @@ -490,10 +490,10 @@ description: Result of parsing cycloidal-gear.kcl "arguments": [ { "abs_path": false, - "commentStart": 794, + "commentStart": 0, "end": 0, "name": { - "commentStart": 794, + "commentStart": 0, "end": 0, "name": "helixAngleP", "start": 0, @@ -507,10 +507,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 784, + "commentStart": 0, "end": 0, "name": { - "commentStart": 784, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -520,7 +520,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 784, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -529,10 +529,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 780, + "commentStart": 0, "end": 0, "name": { - "commentStart": 780, + "commentStart": 0, "end": 0, "name": "sin", "start": 0, @@ -542,7 +542,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 780, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -554,14 +554,14 @@ description: Result of parsing cycloidal-gear.kcl }, "operator": "+", "right": { - "commentStart": 810, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 810, + "commentStart": 0, "end": 0, "name": { - "commentStart": 810, + "commentStart": 0, "end": 0, "name": "gearPitch", "start": 0, @@ -580,10 +580,10 @@ description: Result of parsing cycloidal-gear.kcl { "argument": { "abs_path": false, - "commentStart": 837, + "commentStart": 0, "end": 0, "name": { - "commentStart": 837, + "commentStart": 0, "end": 0, "name": "helixAngleP", "start": 0, @@ -594,7 +594,7 @@ description: Result of parsing cycloidal-gear.kcl "type": "Name", "type": "Name" }, - "commentStart": 836, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -604,10 +604,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 826, + "commentStart": 0, "end": 0, "name": { - "commentStart": 826, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -617,7 +617,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 826, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -626,10 +626,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 822, + "commentStart": 0, "end": 0, "name": { - "commentStart": 822, + "commentStart": 0, "end": 0, "name": "cos", "start": 0, @@ -639,7 +639,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 822, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -660,7 +660,7 @@ description: Result of parsing cycloidal-gear.kcl "type": "ArrayExpression" }, { - "commentStart": 863, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -669,10 +669,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 631, + "commentStart": 0, "end": 0, "name": { - "commentStart": 631, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -682,7 +682,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 631, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -691,14 +691,14 @@ description: Result of parsing cycloidal-gear.kcl { "arguments": [ { - "commentStart": 879, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 892, + "commentStart": 0, "end": 0, "key": { - "commentStart": 892, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -707,10 +707,10 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 905, + "commentStart": 0, "end": 0, "left": { - "commentStart": 905, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -724,10 +724,10 @@ description: Result of parsing cycloidal-gear.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 910, + "commentStart": 0, "end": 0, "name": { - "commentStart": 910, + "commentStart": 0, "end": 0, "name": "helixAngleP", "start": 0, @@ -744,10 +744,10 @@ description: Result of parsing cycloidal-gear.kcl } }, { - "commentStart": 934, + "commentStart": 0, "end": 0, "key": { - "commentStart": 934, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -756,11 +756,11 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 945, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 946, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -771,7 +771,7 @@ description: Result of parsing cycloidal-gear.kcl "suffix": "None" } }, - "commentStart": 945, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -781,10 +781,10 @@ description: Result of parsing cycloidal-gear.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 951, + "commentStart": 0, "end": 0, "name": { - "commentStart": 951, + "commentStart": 0, "end": 0, "name": "helixAngleP", "start": 0, @@ -801,10 +801,10 @@ description: Result of parsing cycloidal-gear.kcl } }, { - "commentStart": 975, + "commentStart": 0, "end": 0, "key": { - "commentStart": 975, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -814,10 +814,10 @@ description: Result of parsing cycloidal-gear.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 984, + "commentStart": 0, "end": 0, "name": { - "commentStart": 984, + "commentStart": 0, "end": 0, "name": "gearPitch", "start": 0, @@ -835,7 +835,7 @@ description: Result of parsing cycloidal-gear.kcl "type": "ObjectExpression" }, { - "commentStart": 1006, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -844,10 +844,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 875, + "commentStart": 0, "end": 0, "name": { - "commentStart": 875, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -857,7 +857,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 875, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -866,318 +866,441 @@ description: Result of parsing cycloidal-gear.kcl { "arguments": [ { - "commentStart": 1032, - "end": 0, - "properties": [ - { - "commentStart": 1045, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1045, + "name": { + "commentStart": 0, "end": 0, - "name": "radius", + "name": "gearPitch", "start": 0, "type": "Identifier" }, + "path": [], "start": 0, - "type": "ObjectProperty", + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "1.67", + "start": 0, + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1054, + "value": 1.67, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "60", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 60.0, + "suffix": "None" + } + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "gearPitch", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "180", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 180.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "left": { + "name": "gearPitch", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "1.67", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.67, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "60", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 60.0, + "suffix": "None" + } + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "gearPitch", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "180", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 180.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "arguments": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { "abs_path": false, - "commentStart": 1054, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1054, + "commentStart": 0, "end": 0, - "name": "gearPitch", + "name": "profileStartX", "start": 0, "type": "Identifier" }, "path": [], "start": 0, - "type": "Name", "type": "Name" }, - "operator": "*", - "right": { - "commentStart": 1066, - "end": 0, - "raw": "1.67", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.67, - "suffix": "None" + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeSubstitution", + "type": "PipeSubstitution" } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - }, - { - "commentStart": 1083, - "end": 0, - "key": { - "commentStart": 1083, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1092, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1107, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1018, - "end": 0, - "name": { - "commentStart": 1018, - "end": 0, - "name": "tangentialArc", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1018, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1133, - "end": 0, - "properties": [ - { - "commentStart": 1135, - "end": 0, - "key": { - "commentStart": 1135, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1144, - "end": 0, - "name": { - "commentStart": 1144, - "end": 0, - "name": "gearPitch", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - }, - { - "commentStart": 1155, - "end": 0, - "key": { - "commentStart": 1155, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 1165, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, - "commentStart": 1164, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1172, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1119, - "end": 0, - "name": { - "commentStart": 1119, - "end": 0, - "name": "tangentialArc", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1119, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1198, - "end": 0, - "properties": [ - { - "commentStart": 1211, - "end": 0, - "key": { - "commentStart": 1211, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1220, - "end": 0, - "left": { + ], + "callee": { "abs_path": false, - "commentStart": 1220, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1220, + "commentStart": 0, "end": 0, - "name": "gearPitch", + "name": "profileStartY", "start": 0, "type": "Identifier" }, "path": [], "start": 0, - "type": "Name", "type": "Name" }, - "operator": "*", - "right": { - "commentStart": 1232, - "end": 0, - "raw": "1.67", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.67, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - }, - { - "commentStart": 1249, - "end": 0, - "key": { - "commentStart": 1249, + "commentStart": 0, "end": 0, - "name": "offset", "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1258, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } + "type": "CallExpression", + "type": "CallExpression" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1273, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1184, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1184, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -1187,87 +1310,17 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1184, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1299, - "end": 0, - "properties": [ - { - "commentStart": 1301, - "end": 0, - "key": { - "commentStart": 1301, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1310, - "end": 0, - "name": { - "commentStart": 1310, - "end": 0, - "name": "gearPitch", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - }, - { - "commentStart": 1321, - "end": 0, - "key": { - "commentStart": 1321, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 1331, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, - "commentStart": 1330, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1338, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1276,143 +1329,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1285, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1285, - "end": 0, - "name": "tangentialArc", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1285, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1366, - "elements": [ - { - "arguments": [ - { - "commentStart": 1381, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1367, - "end": 0, - "name": { - "commentStart": 1367, - "end": 0, - "name": "profileStartX", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1367, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1399, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1385, - "end": 0, - "name": { - "commentStart": 1385, - "end": 0, - "name": "profileStartY", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1385, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1404, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1350, - "end": 0, - "name": { - "commentStart": 1350, - "end": 0, - "name": "tangentialArcTo", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1350, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1422, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1416, - "end": 0, - "name": { - "commentStart": 1416, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1422,7 +1342,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1416, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1435,17 +1355,17 @@ description: Result of parsing cycloidal-gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 1446, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1455, + "commentStart": 0, "elements": [ { - "commentStart": 1456, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1457,7 +1377,7 @@ description: Result of parsing cycloidal-gear.kcl } }, { - "commentStart": 1459, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1478,21 +1398,21 @@ description: Result of parsing cycloidal-gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 1463, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1472, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1472, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1472, + "commentStart": 0, "end": 0, "name": "holeDiameter", "start": 0, @@ -1505,7 +1425,7 @@ description: Result of parsing cycloidal-gear.kcl }, "operator": "/", "right": { - "commentStart": 1487, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1524,10 +1444,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1439, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1439, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1537,7 +1457,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1439, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1545,7 +1465,7 @@ description: Result of parsing cycloidal-gear.kcl "unlabeled": null }, { - "commentStart": 1491, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1554,10 +1474,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1434, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1434, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -1567,14 +1487,14 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1434, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 573, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1592,10 +1512,10 @@ description: Result of parsing cycloidal-gear.kcl { "argument": { "abs_path": false, - "commentStart": 1505, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1505, + "commentStart": 0, "end": 0, "name": "gearProfile", "start": 0, @@ -1606,24 +1526,24 @@ description: Result of parsing cycloidal-gear.kcl "type": "Name", "type": "Name" }, - "commentStart": 1498, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 501, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 491, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 492, + "commentStart": 0, "end": 0, "name": "gHeight", "start": 0, @@ -1648,12 +1568,12 @@ description: Result of parsing cycloidal-gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 1522, + "commentStart": 0, "declaration": { - "commentStart": 1608, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1608, + "commentStart": 0, "end": 0, "name": "gearLoft", "start": 0, @@ -1662,12 +1582,12 @@ description: Result of parsing cycloidal-gear.kcl "init": { "arguments": [ { - "commentStart": 1624, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1641, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1681,10 +1601,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1630, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1630, + "commentStart": 0, "end": 0, "name": "gearSketch", "start": 0, @@ -1694,7 +1614,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1630, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1703,14 +1623,14 @@ description: Result of parsing cycloidal-gear.kcl { "arguments": [ { - "commentStart": 1660, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1660, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1660, + "commentStart": 0, "end": 0, "name": "gearHeight", "start": 0, @@ -1723,7 +1643,7 @@ description: Result of parsing cycloidal-gear.kcl }, "operator": "/", "right": { - "commentStart": 1673, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1741,10 +1661,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1649, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1649, + "commentStart": 0, "end": 0, "name": "gearSketch", "start": 0, @@ -1754,7 +1674,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1649, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1764,10 +1684,10 @@ description: Result of parsing cycloidal-gear.kcl "arguments": [ { "abs_path": false, - "commentStart": 1692, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1692, + "commentStart": 0, "end": 0, "name": "gearHeight", "start": 0, @@ -1781,10 +1701,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1681, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1681, + "commentStart": 0, "end": 0, "name": "gearSketch", "start": 0, @@ -1794,7 +1714,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1681, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1809,10 +1729,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1619, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1619, + "commentStart": 0, "end": 0, "name": "loft", "start": 0, @@ -1822,7 +1742,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1619, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1845,10 +1765,10 @@ description: Result of parsing cycloidal-gear.kcl { "argument": { "abs_path": false, - "commentStart": 1719, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1719, + "commentStart": 0, "end": 0, "name": "gearLoft", "start": 0, @@ -1859,20 +1779,20 @@ description: Result of parsing cycloidal-gear.kcl "type": "Name", "type": "Name" }, - "commentStart": 1708, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 316, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 1708, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1886,13 +1806,13 @@ description: Result of parsing cycloidal-gear.kcl }, "start": 0 }, - "commentStart": 265, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 266, + "commentStart": 0, "end": 0, "name": "gearPitch", "start": 0, @@ -1902,7 +1822,7 @@ description: Result of parsing cycloidal-gear.kcl { "type": "Parameter", "identifier": { - "commentStart": 277, + "commentStart": 0, "end": 0, "name": "gearHeight", "start": 0, @@ -1912,7 +1832,7 @@ description: Result of parsing cycloidal-gear.kcl { "type": "Parameter", "identifier": { - "commentStart": 289, + "commentStart": 0, "end": 0, "name": "holeDiameter", "start": 0, @@ -1922,7 +1842,7 @@ description: Result of parsing cycloidal-gear.kcl { "type": "Parameter", "identifier": { - "commentStart": 303, + "commentStart": 0, "end": 0, "name": "helixAngle", "start": 0, @@ -1947,12 +1867,12 @@ description: Result of parsing cycloidal-gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 1729, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 1781, + "commentStart": 0, "end": 0, "raw": ".3", "start": 0, @@ -1964,7 +1884,7 @@ description: Result of parsing cycloidal-gear.kcl } }, { - "commentStart": 1785, + "commentStart": 0, "end": 0, "raw": "1.5", "start": 0, @@ -1976,7 +1896,7 @@ description: Result of parsing cycloidal-gear.kcl } }, { - "commentStart": 1790, + "commentStart": 0, "end": 0, "raw": "0.297", "start": 0, @@ -1989,7 +1909,7 @@ description: Result of parsing cycloidal-gear.kcl }, { "argument": { - "commentStart": 1798, + "commentStart": 0, "end": 0, "raw": "80", "start": 0, @@ -2000,7 +1920,7 @@ description: Result of parsing cycloidal-gear.kcl "suffix": "None" } }, - "commentStart": 1797, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2010,10 +1930,10 @@ description: Result of parsing cycloidal-gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1767, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1767, + "commentStart": 0, "end": 0, "name": "cycloidalGear", "start": 0, @@ -2023,7 +1943,7 @@ description: Result of parsing cycloidal-gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1767, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2046,7 +1966,7 @@ description: Result of parsing cycloidal-gear.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 171, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -2061,10 +1981,10 @@ description: Result of parsing cycloidal-gear.kcl ], "properties": [ { - "commentStart": 180, + "commentStart": 0, "end": 0, "key": { - "commentStart": 180, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -2074,10 +1994,10 @@ description: Result of parsing cycloidal-gear.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 200, + "commentStart": 0, "end": 0, "name": { - "commentStart": 200, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -2098,7 +2018,7 @@ description: Result of parsing cycloidal-gear.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 203, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ops.snap b/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ops.snap index c0abd3cff..49112be9a 100644 --- a/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/cycloidal-gear/ops.snap @@ -10,7 +10,7 @@ description: Operations executed cycloidal-gear.kcl "name": "cycloidalGear", "functionSourceRange": [ 265, - 1729, + 1644, 0 ], "unlabeledArg": null, @@ -25,7 +25,7 @@ description: Operations executed cycloidal-gear.kcl "name": "gearSketch", "functionSourceRange": [ 491, - 1520, + 1435, 0 ], "unlabeledArg": null, @@ -65,7 +65,7 @@ description: Operations executed cycloidal-gear.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -186,7 +186,7 @@ description: Operations executed cycloidal-gear.kcl "name": "gearSketch", "functionSourceRange": [ 491, - 1520, + 1435, 0 ], "unlabeledArg": null, @@ -201,7 +201,13 @@ description: Operations executed cycloidal-gear.kcl "type": "Number", "value": 0.75, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -220,7 +226,7 @@ description: Operations executed cycloidal-gear.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -341,7 +347,7 @@ description: Operations executed cycloidal-gear.kcl "name": "gearSketch", "functionSourceRange": [ 491, - 1520, + 1435, 0 ], "unlabeledArg": null, @@ -381,7 +387,7 @@ description: Operations executed cycloidal-gear.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_commands.snap index 53558e1ab..79e939304 100644 --- a/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_commands.snap @@ -382,7 +382,8 @@ description: Artifact commands dodecahedron.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -532,7 +533,8 @@ description: Artifact commands dodecahedron.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_graph_flowchart.snap.md index b0fef67d6..1316f2d5a 100644 --- a/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/dodecahedron/artifact_graph_flowchart.snap.md @@ -1,28 +1,28 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[1162, 1274, 0]"] - 3["Segment
[1162, 1274, 0]"] - 4["Segment
[1162, 1274, 0]"] - 5["Segment
[1162, 1274, 0]"] - 6["Segment
[1162, 1274, 0]"] - 7["Segment
[1162, 1274, 0]"] - 8["Segment
[1162, 1274, 0]"] + 2["Path
[1130, 1242, 0]"] + 3["Segment
[1130, 1242, 0]"] + 4["Segment
[1130, 1242, 0]"] + 5["Segment
[1130, 1242, 0]"] + 6["Segment
[1130, 1242, 0]"] + 7["Segment
[1130, 1242, 0]"] + 8["Segment
[1130, 1242, 0]"] 9[Solid2d] end subgraph path11 [Path] - 11["Path
[1319, 1431, 0]"] - 12["Segment
[1319, 1431, 0]"] - 13["Segment
[1319, 1431, 0]"] - 14["Segment
[1319, 1431, 0]"] - 15["Segment
[1319, 1431, 0]"] - 16["Segment
[1319, 1431, 0]"] - 17["Segment
[1319, 1431, 0]"] + 11["Path
[1287, 1399, 0]"] + 12["Segment
[1287, 1399, 0]"] + 13["Segment
[1287, 1399, 0]"] + 14["Segment
[1287, 1399, 0]"] + 15["Segment
[1287, 1399, 0]"] + 16["Segment
[1287, 1399, 0]"] + 17["Segment
[1287, 1399, 0]"] 18[Solid2d] end - 1["Plane
[1139, 1156, 0]"] - 10["Plane
[1293, 1313, 0]"] - 19["Sweep Extrusion
[1477, 1520, 0]"] + 1["Plane
[1107, 1124, 0]"] + 10["Plane
[1261, 1281, 0]"] + 19["Sweep Extrusion
[1445, 1488, 0]"] 20[Wall] 21[Wall] 22[Wall] @@ -40,7 +40,7 @@ flowchart LR 34["SweepEdge Adjacent"] 35["SweepEdge Opposite"] 36["SweepEdge Adjacent"] - 37["Sweep Extrusion
[1534, 1581, 0]"] + 37["Sweep Extrusion
[1502, 1549, 0]"] 38[Wall] 39[Wall] 40[Wall] diff --git a/rust/kcl-lib/tests/kcl_samples/dodecahedron/ast.snap b/rust/kcl-lib/tests/kcl_samples/dodecahedron/ast.snap index 452c880e5..6cac78142 100644 --- a/rust/kcl-lib/tests/kcl_samples/dodecahedron/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/dodecahedron/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing dodecahedron.kcl "Ok": { "body": [ { - "commentStart": 305, + "commentStart": 0, "declaration": { - "commentStart": 351, + "commentStart": 0, "end": 0, "id": { - "commentStart": 351, + "commentStart": 0, "end": 0, "name": "circR", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 359, + "commentStart": 0, "end": 0, "raw": "25", "start": 0, @@ -43,26 +43,26 @@ description: Result of parsing dodecahedron.kcl "type": "VariableDeclaration" }, { - "commentStart": 361, + "commentStart": 0, "declaration": { - "commentStart": 421, + "commentStart": 0, "end": 0, "id": { - "commentStart": 421, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 437, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 437, + "commentStart": 0, "end": 0, "name": { - "commentStart": 437, + "commentStart": 0, "end": 0, "name": "circR", "start": 0, @@ -75,7 +75,7 @@ description: Result of parsing dodecahedron.kcl }, "operator": "*", "right": { - "commentStart": 445, + "commentStart": 0, "end": 0, "raw": "0.2", "start": 0, @@ -106,12 +106,12 @@ description: Result of parsing dodecahedron.kcl "type": "VariableDeclaration" }, { - "commentStart": 448, + "commentStart": 0, "declaration": { - "commentStart": 484, + "commentStart": 0, "end": 0, "id": { - "commentStart": 484, + "commentStart": 0, "end": 0, "name": "dihedral", "start": 0, @@ -121,12 +121,12 @@ description: Result of parsing dodecahedron.kcl "arguments": [ { "argument": { - "commentStart": 502, + "commentStart": 0, "end": 0, "left": { "arguments": [ { - "commentStart": 507, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -140,10 +140,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 502, + "commentStart": 0, "end": 0, "name": { - "commentStart": 502, + "commentStart": 0, "end": 0, "name": "sqrt", "start": 0, @@ -153,7 +153,7 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 502, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -161,7 +161,7 @@ description: Result of parsing dodecahedron.kcl }, "operator": "/", "right": { - "commentStart": 512, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -176,7 +176,7 @@ description: Result of parsing dodecahedron.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 500, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -186,10 +186,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 495, + "commentStart": 0, "end": 0, "name": { - "commentStart": 495, + "commentStart": 0, "end": 0, "name": "acos", "start": 0, @@ -199,7 +199,7 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 495, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -220,29 +220,29 @@ description: Result of parsing dodecahedron.kcl "type": "VariableDeclaration" }, { - "commentStart": 515, + "commentStart": 0, "declaration": { - "commentStart": 537, + "commentStart": 0, "end": 0, "id": { - "commentStart": 537, + "commentStart": 0, "end": 0, "name": "inscR", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 545, + "commentStart": 0, "end": 0, "left": { - "commentStart": 545, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 545, + "commentStart": 0, "end": 0, "name": { - "commentStart": 545, + "commentStart": 0, "end": 0, "name": "circR", "start": 0, @@ -255,7 +255,7 @@ description: Result of parsing dodecahedron.kcl }, "operator": "/", "right": { - "commentStart": 553, + "commentStart": 0, "end": 0, "raw": "15", "start": 0, @@ -274,10 +274,10 @@ description: Result of parsing dodecahedron.kcl "right": { "arguments": [ { - "commentStart": 563, + "commentStart": 0, "end": 0, "left": { - "commentStart": 563, + "commentStart": 0, "end": 0, "raw": "75", "start": 0, @@ -290,10 +290,10 @@ description: Result of parsing dodecahedron.kcl }, "operator": "+", "right": { - "commentStart": 568, + "commentStart": 0, "end": 0, "left": { - "commentStart": 568, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -308,7 +308,7 @@ description: Result of parsing dodecahedron.kcl "right": { "arguments": [ { - "commentStart": 578, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -322,10 +322,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 573, + "commentStart": 0, "end": 0, "name": { - "commentStart": 573, + "commentStart": 0, "end": 0, "name": "sqrt", "start": 0, @@ -335,7 +335,7 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 573, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -352,10 +352,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 558, + "commentStart": 0, "end": 0, "name": { - "commentStart": 558, + "commentStart": 0, "end": 0, "name": "sqrt", "start": 0, @@ -365,7 +365,7 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 558, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -390,25 +390,25 @@ description: Result of parsing dodecahedron.kcl "type": "VariableDeclaration" }, { - "commentStart": 581, + "commentStart": 0, "declaration": { - "commentStart": 607, + "commentStart": 0, "end": 0, "id": { - "commentStart": 607, + "commentStart": 0, "end": 0, "name": "edgeL", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 615, + "commentStart": 0, "end": 0, "left": { - "commentStart": 615, + "commentStart": 0, "end": 0, "left": { - "commentStart": 615, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -422,10 +422,10 @@ description: Result of parsing dodecahedron.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 619, + "commentStart": 0, "end": 0, "name": { - "commentStart": 619, + "commentStart": 0, "end": 0, "name": "circR", "start": 0, @@ -442,12 +442,12 @@ description: Result of parsing dodecahedron.kcl }, "operator": "/", "right": { - "commentStart": 628, + "commentStart": 0, "end": 0, "left": { "arguments": [ { - "commentStart": 633, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -461,10 +461,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 628, + "commentStart": 0, "end": 0, "name": { - "commentStart": 628, + "commentStart": 0, "end": 0, "name": "sqrt", "start": 0, @@ -474,7 +474,7 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 628, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -482,10 +482,10 @@ description: Result of parsing dodecahedron.kcl }, "operator": "*", "right": { - "commentStart": 639, + "commentStart": 0, "end": 0, "left": { - "commentStart": 639, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -500,7 +500,7 @@ description: Result of parsing dodecahedron.kcl "right": { "arguments": [ { - "commentStart": 648, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -514,10 +514,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 643, + "commentStart": 0, "end": 0, "name": { - "commentStart": 643, + "commentStart": 0, "end": 0, "name": "sqrt", "start": 0, @@ -527,7 +527,7 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 643, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -560,29 +560,29 @@ description: Result of parsing dodecahedron.kcl "type": "VariableDeclaration" }, { - "commentStart": 652, + "commentStart": 0, "declaration": { - "commentStart": 673, + "commentStart": 0, "end": 0, "id": { - "commentStart": 673, + "commentStart": 0, "end": 0, "name": "pentR", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 681, + "commentStart": 0, "end": 0, "left": { - "commentStart": 681, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 681, + "commentStart": 0, "end": 0, "name": { - "commentStart": 681, + "commentStart": 0, "end": 0, "name": "edgeL", "start": 0, @@ -595,7 +595,7 @@ description: Result of parsing dodecahedron.kcl }, "operator": "/", "right": { - "commentStart": 689, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -616,7 +616,7 @@ description: Result of parsing dodecahedron.kcl { "arguments": [ { - "commentStart": 707, + "commentStart": 0, "end": 0, "raw": "36", "start": 0, @@ -630,10 +630,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 697, + "commentStart": 0, "end": 0, "name": { - "commentStart": 697, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -643,7 +643,7 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 697, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -652,10 +652,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 693, + "commentStart": 0, "end": 0, "name": { - "commentStart": 693, + "commentStart": 0, "end": 0, "name": "sin", "start": 0, @@ -665,7 +665,7 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 693, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -690,153 +690,98 @@ description: Result of parsing dodecahedron.kcl "type": "VariableDeclaration" }, { - "commentStart": 711, + "commentStart": 0, "declaration": { - "commentStart": 758, + "commentStart": 0, "end": 0, "id": { - "commentStart": 758, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 766, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 770, + "commentStart": 0, "end": 0, "key": { - "commentStart": 770, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 778, - "end": 0, - "properties": [ + "commentStart": 0, + "elements": [ { - "commentStart": 784, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 784, - "end": 0, - "name": "origin", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 793, - "elements": [ - { - "commentStart": 801, + "left": { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "left": { - "argument": { - "abs_path": false, - "commentStart": 802, + "name": "inscR", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "operator": "*", + "right": { + "arguments": [ + { + "arguments": [ + { + "commentStart": 0, "end": 0, - "name": { - "commentStart": 802, - "end": 0, - "name": "inscR", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 801, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - "operator": "*", - "right": { - "arguments": [ - { + "left": { "arguments": [ { - "commentStart": 824, + "abs_path": false, + "commentStart": 0, "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 834, - "end": 0, - "name": { - "commentStart": 834, - "end": 0, - "name": "dihedral", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 824, - "end": 0, - "name": { - "commentStart": 824, - "end": 0, - "name": "toDegrees", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 824, + "name": { + "commentStart": 0, "end": 0, + "name": "dihedral", "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 846, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } + "type": "Identifier" }, + "path": [], "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "Name", + "type": "Name" } ], "callee": { "abs_path": false, - "commentStart": 814, + "commentStart": 0, "end": 0, "name": { - "commentStart": 814, + "commentStart": 0, "end": 0, - "name": "toRadians", + "name": "toDegrees", "start": 0, "type": "Identifier" }, @@ -844,163 +789,163 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 814, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" - } - ], - "callee": { - "abs_path": false, - "commentStart": 810, - "end": 0, - "name": { - "commentStart": 810, - "end": 0, - "name": "cos", - "start": 0, - "type": "Identifier" }, - "path": [], + "operator": "-", + "right": { + "commentStart": 0, + "end": 0, + "raw": "90", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, "start": 0, - "type": "Name" - }, - "commentStart": 810, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "commentStart": 858, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 867, - "end": 0, - "left": { + "type": "BinaryExpression", + "type": "BinaryExpression" + } + ], + "callee": { "abs_path": false, - "commentStart": 867, + "commentStart": 0, "end": 0, "name": { - "commentStart": 867, + "commentStart": 0, "end": 0, - "name": "inscR", + "name": "toRadians", "start": 0, "type": "Identifier" }, "path": [], "start": 0, - "type": "Name", "type": "Name" }, - "operator": "-", - "right": { - "commentStart": 876, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 876, - "end": 0, - "name": { - "commentStart": 876, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "cos", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "inscR", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "inscR", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "arguments": [ + { + "arguments": [ + { + "commentStart": 0, "end": 0, - "name": "inscR", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "*", - "right": { - "arguments": [ - { + "left": { "arguments": [ { - "commentStart": 898, + "abs_path": false, + "commentStart": 0, "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 908, - "end": 0, - "name": { - "commentStart": 908, - "end": 0, - "name": "dihedral", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 898, - "end": 0, - "name": { - "commentStart": 898, - "end": 0, - "name": "toDegrees", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 898, + "name": { + "commentStart": 0, "end": 0, + "name": "dihedral", "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 920, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } + "type": "Identifier" }, + "path": [], "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "Name", + "type": "Name" } ], "callee": { "abs_path": false, - "commentStart": 888, + "commentStart": 0, "end": 0, "name": { - "commentStart": 888, + "commentStart": 0, "end": 0, - "name": "toRadians", + "name": "toDegrees", "start": 0, "type": "Identifier" }, @@ -1008,316 +953,38 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 888, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" - } - ], - "callee": { - "abs_path": false, - "commentStart": 884, - "end": 0, - "name": { - "commentStart": 884, - "end": 0, - "name": "sin", - "start": 0, - "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 884, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - }, - { - "commentStart": 937, - "end": 0, - "key": { - "commentStart": 937, - "end": 0, - "name": "xAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 945, - "elements": [ - { - "arguments": [ - { - "abs_path": false, - "commentStart": 950, - "end": 0, - "name": { - "commentStart": 950, - "end": 0, - "name": "dihedral", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 946, - "end": 0, - "name": { - "commentStart": 946, - "end": 0, - "name": "cos", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 946, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "commentStart": 961, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "arguments": [ - { - "abs_path": false, - "commentStart": 970, - "end": 0, - "name": { - "commentStart": 970, - "end": 0, - "name": "dihedral", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 966, - "end": 0, - "name": { - "commentStart": 966, - "end": 0, - "name": "sin", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 966, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - }, - { - "commentStart": 986, - "end": 0, - "key": { - "commentStart": 986, - "end": 0, - "name": "yAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 994, - "elements": [ - { - "commentStart": 995, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 998, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 1001, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - }, - { - "commentStart": 1009, - "end": 0, - "key": { - "commentStart": 1009, - "end": 0, - "name": "zAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1017, - "elements": [ - { - "arguments": [ - { - "abs_path": false, - "commentStart": 1022, - "end": 0, - "name": { - "commentStart": 1022, - "end": 0, - "name": "dihedral", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1018, - "end": 0, - "name": { - "commentStart": 1018, - "end": 0, - "name": "sin", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1018, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "commentStart": 1033, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 1041, - "end": 0, - "name": { - "commentStart": 1041, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "name": "dihedral", + "raw": "90", "start": 0, - "type": "Identifier" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } }, - "path": [], "start": 0, - "type": "Name", - "type": "Name" + "type": "BinaryExpression", + "type": "BinaryExpression" } ], "callee": { "abs_path": false, - "commentStart": 1037, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1037, + "commentStart": 0, "end": 0, - "name": "cos", + "name": "toRadians", "start": 0, "type": "Identifier" }, @@ -1325,30 +992,341 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 1037, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" - }, - "commentStart": 1036, + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, "end": 0, - "operator": "-", + "name": { + "commentStart": 0, + "end": 0, + "name": "sin", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "xAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "dihedral", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "cos", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "dihedral", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "sin", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } } ], + "end": 0, "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "dihedral", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "sin", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "dihedral", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "cos", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" } } ], @@ -1371,12 +1349,12 @@ description: Result of parsing dodecahedron.kcl "type": "VariableDeclaration" }, { - "commentStart": 1057, + "commentStart": 0, "declaration": { - "commentStart": 1126, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1126, + "commentStart": 0, "end": 0, "name": "bottomFace", "start": 0, @@ -1388,10 +1366,10 @@ description: Result of parsing dodecahedron.kcl "arguments": [ { "abs_path": false, - "commentStart": 1153, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1153, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -1405,10 +1383,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 1139, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1139, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1418,7 +1396,7 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 1139, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1427,14 +1405,14 @@ description: Result of parsing dodecahedron.kcl { "arguments": [ { - "commentStart": 1170, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1179, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1179, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -1444,10 +1422,10 @@ description: Result of parsing dodecahedron.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 1188, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1188, + "commentStart": 0, "end": 0, "name": "pentR", "start": 0, @@ -1460,10 +1438,10 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 1202, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1202, + "commentStart": 0, "end": 0, "name": "numSides", "start": 0, @@ -1472,7 +1450,7 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1213, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -1485,10 +1463,10 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 1223, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1223, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -1497,10 +1475,10 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1232, + "commentStart": 0, "elements": [ { - "commentStart": 1233, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1512,7 +1490,7 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 1236, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1531,10 +1509,10 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 1247, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1247, + "commentStart": 0, "end": 0, "name": "inscribed", "start": 0, @@ -1543,7 +1521,7 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1259, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -1558,7 +1536,7 @@ description: Result of parsing dodecahedron.kcl "type": "ObjectExpression" }, { - "commentStart": 1272, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1567,10 +1545,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 1162, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1162, + "commentStart": 0, "end": 0, "name": "polygon", "start": 0, @@ -1580,14 +1558,14 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 1162, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1139, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1608,12 +1586,12 @@ description: Result of parsing dodecahedron.kcl "type": "VariableDeclaration" }, { - "commentStart": 1274, + "commentStart": 0, "declaration": { - "commentStart": 1276, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1276, + "commentStart": 0, "end": 0, "name": "bottomSideFace", "start": 0, @@ -1625,10 +1603,10 @@ description: Result of parsing dodecahedron.kcl "arguments": [ { "abs_path": false, - "commentStart": 1307, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1307, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -1642,10 +1620,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 1293, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1293, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1655,7 +1633,7 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 1293, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1664,14 +1642,14 @@ description: Result of parsing dodecahedron.kcl { "arguments": [ { - "commentStart": 1327, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1336, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1336, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -1681,10 +1659,10 @@ description: Result of parsing dodecahedron.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 1345, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1345, + "commentStart": 0, "end": 0, "name": "pentR", "start": 0, @@ -1697,10 +1675,10 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 1359, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1359, + "commentStart": 0, "end": 0, "name": "numSides", "start": 0, @@ -1709,7 +1687,7 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1370, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -1722,10 +1700,10 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 1380, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1380, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -1734,10 +1712,10 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1389, + "commentStart": 0, "elements": [ { - "commentStart": 1390, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1749,7 +1727,7 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 1393, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1768,10 +1746,10 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 1404, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1404, + "commentStart": 0, "end": 0, "name": "inscribed", "start": 0, @@ -1780,7 +1758,7 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1416, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -1795,7 +1773,7 @@ description: Result of parsing dodecahedron.kcl "type": "ObjectExpression" }, { - "commentStart": 1429, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1804,10 +1782,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 1319, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1319, + "commentStart": 0, "end": 0, "name": "polygon", "start": 0, @@ -1817,20 +1795,20 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 1319, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1293, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 1431, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1858,12 +1836,12 @@ description: Result of parsing dodecahedron.kcl "type": "VariableDeclaration" }, { - "commentStart": 1468, + "commentStart": 0, "declaration": { - "commentStart": 1468, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1468, + "commentStart": 0, "end": 0, "name": "bottom", "start": 0, @@ -1874,7 +1852,7 @@ description: Result of parsing dodecahedron.kcl { "type": "LabeledArg", "label": { - "commentStart": 1497, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1882,10 +1860,10 @@ description: Result of parsing dodecahedron.kcl }, "arg": { "abs_path": false, - "commentStart": 1506, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1506, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -1900,10 +1878,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 1477, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1477, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1913,17 +1891,17 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 1477, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1485, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1485, + "commentStart": 0, "end": 0, "name": "bottomFace", "start": 0, @@ -1945,12 +1923,12 @@ description: Result of parsing dodecahedron.kcl "type": "VariableDeclaration" }, { - "commentStart": 1521, + "commentStart": 0, "declaration": { - "commentStart": 1521, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1521, + "commentStart": 0, "end": 0, "name": "bottomSide", "start": 0, @@ -1961,7 +1939,7 @@ description: Result of parsing dodecahedron.kcl { "type": "LabeledArg", "label": { - "commentStart": 1558, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1969,10 +1947,10 @@ description: Result of parsing dodecahedron.kcl }, "arg": { "abs_path": false, - "commentStart": 1567, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1567, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -1987,10 +1965,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 1534, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1534, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2000,17 +1978,17 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 1534, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1542, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1542, + "commentStart": 0, "end": 0, "name": "bottomSideFace", "start": 0, @@ -2032,12 +2010,12 @@ description: Result of parsing dodecahedron.kcl "type": "VariableDeclaration" }, { - "commentStart": 1581, + "commentStart": 0, "declaration": { - "commentStart": 1635, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1635, + "commentStart": 0, "end": 0, "name": "bottomBowl", "start": 0, @@ -2048,14 +2026,14 @@ description: Result of parsing dodecahedron.kcl { "type": "LabeledArg", "label": { - "commentStart": 1683, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1695, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -2070,17 +2048,17 @@ description: Result of parsing dodecahedron.kcl { "type": "LabeledArg", "label": { - "commentStart": 1700, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1707, + "commentStart": 0, "elements": [ { - "commentStart": 1708, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2092,7 +2070,7 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 1711, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2104,7 +2082,7 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 1714, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2125,17 +2103,17 @@ description: Result of parsing dodecahedron.kcl { "type": "LabeledArg", "label": { - "commentStart": 1720, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1729, + "commentStart": 0, "elements": [ { - "commentStart": 1730, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2147,7 +2125,7 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 1733, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2159,7 +2137,7 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 1736, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2180,14 +2158,14 @@ description: Result of parsing dodecahedron.kcl { "type": "LabeledArg", "label": { - "commentStart": 1742, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1755, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -2202,14 +2180,14 @@ description: Result of parsing dodecahedron.kcl { "type": "LabeledArg", "label": { - "commentStart": 1762, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1781, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -2221,10 +2199,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 1648, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1648, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -2234,17 +2212,17 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 1648, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1669, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1669, + "commentStart": 0, "end": 0, "name": "bottomSide", "start": 0, @@ -2271,21 +2249,21 @@ description: Result of parsing dodecahedron.kcl "type": "VariableDeclaration" }, { - "commentStart": 1788, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1866, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1878, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2300,17 +2278,17 @@ description: Result of parsing dodecahedron.kcl { "type": "LabeledArg", "label": { - "commentStart": 1883, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1890, + "commentStart": 0, "elements": [ { - "commentStart": 1891, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2322,7 +2300,7 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 1894, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2334,7 +2312,7 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 1897, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2355,17 +2333,17 @@ description: Result of parsing dodecahedron.kcl { "type": "LabeledArg", "label": { - "commentStart": 1903, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1912, + "commentStart": 0, "elements": [ { - "commentStart": 1913, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2377,7 +2355,7 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 1916, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2390,10 +2368,10 @@ description: Result of parsing dodecahedron.kcl }, { "abs_path": false, - "commentStart": 1919, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1919, + "commentStart": 0, "end": 0, "name": "inscR", "start": 0, @@ -2414,14 +2392,14 @@ description: Result of parsing dodecahedron.kcl { "type": "LabeledArg", "label": { - "commentStart": 1929, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1942, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -2436,14 +2414,14 @@ description: Result of parsing dodecahedron.kcl { "type": "LabeledArg", "label": { - "commentStart": 1949, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1968, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -2455,10 +2433,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 1835, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1835, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -2468,17 +2446,17 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 1835, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1856, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1856, + "commentStart": 0, "end": 0, "name": "bottom", "start": 0, @@ -2500,21 +2478,21 @@ description: Result of parsing dodecahedron.kcl "type": "ExpressionStatement" }, { - "commentStart": 1975, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2065, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2077, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2529,17 +2507,17 @@ description: Result of parsing dodecahedron.kcl { "type": "LabeledArg", "label": { - "commentStart": 2082, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2089, + "commentStart": 0, "elements": [ { - "commentStart": 2090, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2551,7 +2529,7 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 2093, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2563,7 +2541,7 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 2096, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2584,17 +2562,17 @@ description: Result of parsing dodecahedron.kcl { "type": "LabeledArg", "label": { - "commentStart": 2102, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2111, + "commentStart": 0, "elements": [ { - "commentStart": 2112, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2606,7 +2584,7 @@ description: Result of parsing dodecahedron.kcl } }, { - "commentStart": 2115, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2619,10 +2597,10 @@ description: Result of parsing dodecahedron.kcl }, { "abs_path": false, - "commentStart": 2118, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2118, + "commentStart": 0, "end": 0, "name": "inscR", "start": 0, @@ -2643,14 +2621,14 @@ description: Result of parsing dodecahedron.kcl { "type": "LabeledArg", "label": { - "commentStart": 2128, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2141, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -2665,14 +2643,14 @@ description: Result of parsing dodecahedron.kcl { "type": "LabeledArg", "label": { - "commentStart": 2148, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2167, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -2684,10 +2662,10 @@ description: Result of parsing dodecahedron.kcl ], "callee": { "abs_path": false, - "commentStart": 2030, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2030, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -2697,17 +2675,17 @@ description: Result of parsing dodecahedron.kcl "start": 0, "type": "Name" }, - "commentStart": 2030, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2051, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2051, + "commentStart": 0, "end": 0, "name": "bottomBowl", "start": 0, @@ -2736,7 +2714,7 @@ description: Result of parsing dodecahedron.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 273, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -2751,10 +2729,10 @@ description: Result of parsing dodecahedron.kcl ], "properties": [ { - "commentStart": 282, + "commentStart": 0, "end": 0, "key": { - "commentStart": 282, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -2764,10 +2742,10 @@ description: Result of parsing dodecahedron.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 302, + "commentStart": 0, "end": 0, "name": { - "commentStart": 302, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -2788,7 +2766,7 @@ description: Result of parsing dodecahedron.kcl "nonCodeNodes": { "7": [ { - "commentStart": 1274, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2800,7 +2778,7 @@ description: Result of parsing dodecahedron.kcl }, "startNodes": [ { - "commentStart": 305, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/dodecahedron/ops.snap b/rust/kcl-lib/tests/kcl_samples/dodecahedron/ops.snap index 87dfe6842..9c5f614b8 100644 --- a/rust/kcl-lib/tests/kcl_samples/dodecahedron/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/dodecahedron/ops.snap @@ -131,7 +131,7 @@ description: Operations executed dodecahedron.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -146,158 +146,165 @@ description: Operations executed dodecahedron.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": -17.76901418668612, - "ty": { - "type": "Unknown" - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": -17.76901418668612, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 10.981854713951094, - "ty": { - "type": "Unknown" - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": -0.4472135954999579, - "ty": { - "type": "Known", - "type": "Count" - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.8944271909999159, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 10.981854713951094, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.8944271909999159, - "ty": { - "type": "Known", - "type": "Count" - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.4472135954999579, - "ty": { - "type": "Known", - "type": "Count" - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": -0.4472135954999579, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.8944271909999159, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.8944271909999159, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.4472135954999579, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] } } }, @@ -316,7 +323,13 @@ description: Operations executed dodecahedron.kcl "type": "Number", "value": 5.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -342,7 +355,13 @@ description: Operations executed dodecahedron.kcl "type": "Number", "value": 5.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -609,7 +628,13 @@ description: Operations executed dodecahedron.kcl "type": "Number", "value": 19.866361807294155, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } } ] @@ -752,7 +777,13 @@ description: Operations executed dodecahedron.kcl "type": "Number", "value": 19.866361807294155, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } } ] diff --git a/rust/kcl-lib/tests/kcl_samples/dodecahedron/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/dodecahedron/program_memory.snap index ab5f3857f..e468cdd06 100644 --- a/rust/kcl-lib/tests/kcl_samples/dodecahedron/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/dodecahedron/program_memory.snap @@ -154,22 +154,34 @@ description: Variables in memory after executing dodecahedron.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -361,22 +373,34 @@ description: Variables in memory after executing dodecahedron.kcl "origin": { "x": -17.76901418668612, "y": 0.0, - "z": 10.981854713951094 + "z": 10.981854713951094, + "units": { + "type": "Inches" + } }, "xAxis": { "x": -0.4472135954999579, "y": 0.0, - "z": 0.8944271909999159 + "z": 0.8944271909999159, + "units": { + "type": "Unknown" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 0.8944271909999159, "y": 0.0, - "z": 0.4472135954999579 + "z": 0.4472135954999579, + "units": { + "type": "Unknown" + } }, "units": { "type": "Inches" @@ -565,22 +589,34 @@ description: Variables in memory after executing dodecahedron.kcl "origin": { "x": -17.76901418668612, "y": 0.0, - "z": 10.981854713951094 + "z": 10.981854713951094, + "units": { + "type": "Inches" + } }, "xAxis": { "x": -0.4472135954999579, "y": 0.0, - "z": 0.8944271909999159 + "z": 0.8944271909999159, + "units": { + "type": "Unknown" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 0.8944271909999159, "y": 0.0, - "z": 0.4472135954999579 + "z": 0.4472135954999579, + "units": { + "type": "Unknown" + } }, "units": { "type": "Inches" @@ -769,22 +805,34 @@ description: Variables in memory after executing dodecahedron.kcl "origin": { "x": -17.76901418668612, "y": 0.0, - "z": 10.981854713951094 + "z": 10.981854713951094, + "units": { + "type": "Inches" + } }, "xAxis": { "x": -0.4472135954999579, "y": 0.0, - "z": 0.8944271909999159 + "z": 0.8944271909999159, + "units": { + "type": "Unknown" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 0.8944271909999159, "y": 0.0, - "z": 0.4472135954999579 + "z": 0.4472135954999579, + "units": { + "type": "Unknown" + } }, "units": { "type": "Inches" @@ -973,22 +1021,34 @@ description: Variables in memory after executing dodecahedron.kcl "origin": { "x": -17.76901418668612, "y": 0.0, - "z": 10.981854713951094 + "z": 10.981854713951094, + "units": { + "type": "Inches" + } }, "xAxis": { "x": -0.4472135954999579, "y": 0.0, - "z": 0.8944271909999159 + "z": 0.8944271909999159, + "units": { + "type": "Unknown" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 0.8944271909999159, "y": 0.0, - "z": 0.4472135954999579 + "z": 0.4472135954999579, + "units": { + "type": "Unknown" + } }, "units": { "type": "Inches" @@ -1177,22 +1237,34 @@ description: Variables in memory after executing dodecahedron.kcl "origin": { "x": -17.76901418668612, "y": 0.0, - "z": 10.981854713951094 + "z": 10.981854713951094, + "units": { + "type": "Inches" + } }, "xAxis": { "x": -0.4472135954999579, "y": 0.0, - "z": 0.8944271909999159 + "z": 0.8944271909999159, + "units": { + "type": "Unknown" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 0.8944271909999159, "y": 0.0, - "z": 0.4472135954999579 + "z": 0.4472135954999579, + "units": { + "type": "Unknown" + } }, "units": { "type": "Inches" @@ -1342,22 +1414,34 @@ description: Variables in memory after executing dodecahedron.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1539,22 +1623,34 @@ description: Variables in memory after executing dodecahedron.kcl "origin": { "x": -17.76901418668612, "y": 0.0, - "z": 10.981854713951094 + "z": 10.981854713951094, + "units": { + "type": "Inches" + } }, "xAxis": { "x": -0.4472135954999579, "y": 0.0, - "z": 0.8944271909999159 + "z": 0.8944271909999159, + "units": { + "type": "Unknown" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 0.8944271909999159, "y": 0.0, - "z": 0.4472135954999579 + "z": 0.4472135954999579, + "units": { + "type": "Unknown" + } }, "units": { "type": "Inches" @@ -1702,22 +1798,34 @@ description: Variables in memory after executing dodecahedron.kcl "origin": { "x": -17.76901418668612, "y": 0.0, - "z": 10.981854713951094 + "z": 10.981854713951094, + "units": { + "type": "Inches" + } }, "xAxis": { "x": -0.4472135954999579, "y": 0.0, - "z": 0.8944271909999159 + "z": 0.8944271909999159, + "units": { + "type": "Unknown" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 0.8944271909999159, "y": 0.0, - "z": 0.4472135954999579 + "z": 0.4472135954999579, + "units": { + "type": "Unknown" + } }, "units": { "type": "Inches" @@ -1765,181 +1873,208 @@ description: Variables in memory after executing dodecahedron.kcl "type": "Number", "value": 2.0344, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Radians" } }, "edgeL": { "type": "Number", "value": 17.8411, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "inscR": { "type": "Number", "value": 19.8664, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "pentR": { "type": "Number", "value": 15.1765, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "plane": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": -17.769, - "ty": { - "type": "Unknown" - } + "origin": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": -17.769, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 10.9819, - "ty": { - "type": "Unknown" - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": -0.4472, - "ty": { - "type": "Known", - "type": "Count" - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.8944, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 10.9819, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.8944, - "ty": { - "type": "Known", - "type": "Count" - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.4472, - "ty": { - "type": "Known", - "type": "Count" - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": -0.4472, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.8944, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "yAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.8944, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.4472, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] } } }, @@ -1947,7 +2082,13 @@ description: Variables in memory after executing dodecahedron.kcl "type": "Number", "value": 5.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } } } diff --git a/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/artifact_commands.snap index 507f89a8f..487d388db 100644 --- a/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/artifact_commands.snap @@ -462,7 +462,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 834.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -592,7 +593,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 834.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -722,7 +724,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 834.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -852,7 +855,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 834.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -982,7 +986,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 834.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1112,7 +1117,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 834.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1242,7 +1248,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 834.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1372,7 +1379,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 834.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1849,7 +1857,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 13.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1979,7 +1988,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 13.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2109,7 +2119,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 13.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2239,7 +2250,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 13.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2369,7 +2381,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 13.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2499,7 +2512,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 13.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2788,7 +2802,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 13.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2918,7 +2933,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 13.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3395,7 +3411,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 671.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3525,7 +3542,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 671.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3655,7 +3673,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 671.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3785,7 +3804,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 671.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3915,7 +3935,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 671.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4045,7 +4066,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 671.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4373,7 +4395,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": -13.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4503,7 +4526,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": -13.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4792,7 +4816,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": -13.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4922,7 +4947,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": -13.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5210,7 +5236,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5491,7 +5518,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 200.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5617,7 +5645,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 200.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5898,7 +5927,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": -200.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6024,7 +6054,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": -200.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6468,7 +6499,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 667.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6598,7 +6630,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 667.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6728,7 +6761,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 667.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6858,7 +6892,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 667.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6988,7 +7023,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 667.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -7118,7 +7154,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 667.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -7407,7 +7444,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 667.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -7537,7 +7575,8 @@ description: Artifact commands dual-basin-utility-sink.kcl "type": "extrude", "target": "[uuid]", "distance": 667.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -7960,6 +7999,15 @@ description: Artifact commands dual-basin-utility-sink.kcl "face_id": "[uuid]" } }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, { "cmdId": "[uuid]", "range": [], diff --git a/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/artifact_graph_flowchart.snap.md index 2a97ac77b..6cc347a8e 100644 --- a/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/artifact_graph_flowchart.snap.md @@ -64,52 +64,52 @@ flowchart LR 164[Solid2d] end subgraph path180 [Path] - 180["Path
[4350, 4418, 0]"] - 181["Segment
[4424, 4450, 0]"] - 182["Segment
[4456, 4482, 0]"] - 183["Segment
[4488, 4515, 0]"] - 184["Segment
[4521, 4577, 0]"] - 185["Segment
[4583, 4590, 0]"] + 180["Path
[4355, 4423, 0]"] + 181["Segment
[4429, 4455, 0]"] + 182["Segment
[4461, 4487, 0]"] + 183["Segment
[4493, 4520, 0]"] + 184["Segment
[4526, 4582, 0]"] + 185["Segment
[4588, 4595, 0]"] 186[Solid2d] end subgraph path202 [Path] - 202["Path
[4779, 4900, 0]"] - 203["Segment
[4906, 4955, 0]"] - 204["Segment
[4961, 5009, 0]"] - 205["Segment
[5015, 5063, 0]"] - 206["Segment
[5069, 5125, 0]"] - 207["Segment
[5131, 5138, 0]"] + 202["Path
[4789, 4910, 0]"] + 203["Segment
[4916, 4965, 0]"] + 204["Segment
[4971, 5019, 0]"] + 205["Segment
[5025, 5073, 0]"] + 206["Segment
[5079, 5135, 0]"] + 207["Segment
[5141, 5148, 0]"] 208[Solid2d] end subgraph path225 [Path] - 225["Path
[5670, 5711, 0]"] - 226["Segment
[5717, 5749, 0]"] - 227["Segment
[5755, 5780, 0]"] - 228["Segment
[5786, 5819, 0]"] - 229["Segment
[5825, 5881, 0]"] - 230["Segment
[5887, 5894, 0]"] + 225["Path
[5680, 5721, 0]"] + 226["Segment
[5727, 5759, 0]"] + 227["Segment
[5765, 5790, 0]"] + 228["Segment
[5796, 5829, 0]"] + 229["Segment
[5835, 5891, 0]"] + 230["Segment
[5897, 5904, 0]"] 231[Solid2d] end subgraph path252 [Path] - 252["Path
[6181, 6222, 0]"] - 253["Segment
[6228, 6254, 0]"] - 254["Segment
[6260, 6292, 0]"] - 255["Segment
[6298, 6325, 0]"] - 256["Segment
[6331, 6387, 0]"] - 257["Segment
[6393, 6400, 0]"] + 252["Path
[6191, 6232, 0]"] + 253["Segment
[6238, 6264, 0]"] + 254["Segment
[6270, 6302, 0]"] + 255["Segment
[6308, 6335, 0]"] + 256["Segment
[6341, 6397, 0]"] + 257["Segment
[6403, 6410, 0]"] 258[Solid2d] end subgraph path276 [Path] - 276["Path
[6877, 6927, 0]"] - 277["Segment
[6933, 6970, 0]"] - 278["Segment
[6976, 7060, 0]"] - 279["Segment
[7066, 7102, 0]"] - 280["Segment
[7108, 7200, 0]"] - 281["Segment
[7206, 7242, 0]"] + 276["Path
[6887, 6937, 0]"] + 277["Segment
[6943, 6980, 0]"] + 278["Segment
[6986, 7079, 0]"] + 279["Segment
[7085, 7121, 0]"] + 280["Segment
[7127, 7228, 0]"] + 281["Segment
[7234, 7270, 0]"] end subgraph path283 [Path] - 283["Path
[7305, 7416, 0]"] - 284["Segment
[7305, 7416, 0]"] + 283["Path
[7333, 7444, 0]"] + 284["Segment
[7333, 7444, 0]"] 285[Solid2d] end 1["Plane
[565, 582, 0]"] @@ -242,7 +242,7 @@ flowchart LR 177["SweepEdge Adjacent"] 178["SweepEdge Opposite"] 179["SweepEdge Adjacent"] - 187["Sweep Extrusion
[4680, 4707, 0]"] + 187["Sweep Extrusion
[4685, 4712, 0]"] 188[Wall] 189[Wall] 190[Wall] @@ -256,8 +256,8 @@ flowchart LR 198["SweepEdge Adjacent"] 199["SweepEdge Opposite"] 200["SweepEdge Adjacent"] - 201["Sweep Extrusion
[4680, 4707, 0]"] - 209["Sweep Extrusion
[5227, 5255, 0]"] + 201["Sweep Extrusion
[4685, 4712, 0]"] + 209["Sweep Extrusion
[5237, 5265, 0]"] 210[Wall] 211[Wall] 212[Wall] @@ -271,9 +271,9 @@ flowchart LR 220["SweepEdge Adjacent"] 221["SweepEdge Opposite"] 222["SweepEdge Adjacent"] - 223["Sweep Extrusion
[5227, 5255, 0]"] - 224["Plane
[5608, 5657, 0]"] - 232["Sweep Extrusion
[5993, 6021, 0]"] + 223["Sweep Extrusion
[5237, 5265, 0]"] + 224["Plane
[5618, 5667, 0]"] + 232["Sweep Extrusion
[6003, 6031, 0]"] 233[Wall] 234[Wall] 235[Wall] @@ -288,12 +288,12 @@ flowchart LR 244["SweepEdge Adjacent"] 245["SweepEdge Opposite"] 246["SweepEdge Adjacent"] - 247["Sweep Extrusion
[5993, 6021, 0]"] - 248["Sweep Extrusion
[5993, 6021, 0]"] - 249["Sweep Extrusion
[5993, 6021, 0]"] - 250["Sweep Extrusion
[5993, 6021, 0]"] - 251["Sweep Extrusion
[5993, 6021, 0]"] - 259["Sweep Extrusion
[6482, 6510, 0]"] + 247["Sweep Extrusion
[6003, 6031, 0]"] + 248["Sweep Extrusion
[6003, 6031, 0]"] + 249["Sweep Extrusion
[6003, 6031, 0]"] + 250["Sweep Extrusion
[6003, 6031, 0]"] + 251["Sweep Extrusion
[6003, 6031, 0]"] + 259["Sweep Extrusion
[6492, 6520, 0]"] 260[Wall] 261[Wall] 262[Wall] @@ -308,10 +308,10 @@ flowchart LR 271["SweepEdge Adjacent"] 272["SweepEdge Opposite"] 273["SweepEdge Adjacent"] - 274["Sweep Extrusion
[6482, 6510, 0]"] - 275["Plane
[6803, 6854, 0]"] - 282["Plane
[7264, 7281, 0]"] - 286["Sweep Sweep
[7430, 7483, 0]"] + 274["Sweep Extrusion
[6492, 6520, 0]"] + 275["Plane
[6813, 6864, 0]"] + 282["Plane
[7292, 7309, 0]"] + 286["Sweep Sweep
[7458, 7511, 0]"] 287[Wall] 288["Cap Start"] 289["Cap Start"] @@ -321,10 +321,10 @@ flowchart LR 293["StartSketchOnPlane
[2276, 2342, 0]"] 294["StartSketchOnPlane
[2912, 2964, 0]"] 295["StartSketchOnPlane
[3791, 3843, 0]"] - 296["StartSketchOnFace
[4295, 4331, 0]"] - 297["StartSketchOnFace
[4727, 4761, 0]"] - 298["StartSketchOnPlane
[5594, 5658, 0]"] - 299["StartSketchOnPlane
[6789, 6855, 0]"] + 296["StartSketchOnFace
[4295, 4336, 0]"] + 297["StartSketchOnFace
[4732, 4771, 0]"] + 298["StartSketchOnPlane
[5604, 5668, 0]"] + 299["StartSketchOnPlane
[6799, 6865, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/ast.snap b/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/ast.snap index a18408de2..bca7dc670 100644 --- a/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "Ok": { "body": [ { - "commentStart": 178, + "commentStart": 0, "declaration": { - "commentStart": 201, + "commentStart": 0, "end": 0, "id": { - "commentStart": 201, + "commentStart": 0, "end": 0, "name": "tableHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 215, + "commentStart": 0, "end": 0, "raw": "850", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 219, + "commentStart": 0, "declaration": { - "commentStart": 219, + "commentStart": 0, "end": 0, "id": { - "commentStart": 219, + "commentStart": 0, "end": 0, "name": "tableWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 232, + "commentStart": 0, "end": 0, "raw": "3400", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 237, + "commentStart": 0, "declaration": { - "commentStart": 237, + "commentStart": 0, "end": 0, "id": { - "commentStart": 237, + "commentStart": 0, "end": 0, "name": "tableDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 250, + "commentStart": 0, "end": 0, "raw": "400", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 253, + "commentStart": 0, "declaration": { - "commentStart": 255, + "commentStart": 0, "end": 0, "id": { - "commentStart": 255, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 274, + "commentStart": 0, "end": 0, "raw": "13", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 277, + "commentStart": 0, "declaration": { - "commentStart": 277, + "commentStart": 0, "end": 0, "id": { - "commentStart": 277, + "commentStart": 0, "end": 0, "name": "metalThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 294, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -174,19 +174,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 295, + "commentStart": 0, "declaration": { - "commentStart": 297, + "commentStart": 0, "end": 0, "id": { - "commentStart": 297, + "commentStart": 0, "end": 0, "name": "blockCount", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 310, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -207,29 +207,29 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 312, + "commentStart": 0, "declaration": { - "commentStart": 312, + "commentStart": 0, "end": 0, "id": { - "commentStart": 312, + "commentStart": 0, "end": 0, "name": "blockWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 326, + "commentStart": 0, "end": 0, "left": { - "commentStart": 326, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 326, + "commentStart": 0, "end": 0, "name": { - "commentStart": 326, + "commentStart": 0, "end": 0, "name": "tableWidth", "start": 0, @@ -243,10 +243,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 339, + "commentStart": 0, "end": 0, "name": { - "commentStart": 339, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -263,7 +263,7 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "/", "right": { - "commentStart": 359, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -288,29 +288,29 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 361, + "commentStart": 0, "declaration": { - "commentStart": 361, + "commentStart": 0, "end": 0, "id": { - "commentStart": 361, + "commentStart": 0, "end": 0, "name": "blockHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 375, + "commentStart": 0, "end": 0, "left": { - "commentStart": 375, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 375, + "commentStart": 0, "end": 0, "name": { - "commentStart": 375, + "commentStart": 0, "end": 0, "name": "tableHeight", "start": 0, @@ -324,10 +324,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 389, + "commentStart": 0, "end": 0, "name": { - "commentStart": 389, + "commentStart": 0, "end": 0, "name": "metalThickness", "start": 0, @@ -344,7 +344,7 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "-", "right": { - "commentStart": 406, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -369,26 +369,26 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 410, + "commentStart": 0, "declaration": { - "commentStart": 410, + "commentStart": 0, "end": 0, "id": { - "commentStart": 410, + "commentStart": 0, "end": 0, "name": "blockDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 423, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 423, + "commentStart": 0, "end": 0, "name": { - "commentStart": 423, + "commentStart": 0, "end": 0, "name": "tableDepth", "start": 0, @@ -402,10 +402,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 436, + "commentStart": 0, "end": 0, "name": { - "commentStart": 436, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -430,19 +430,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 452, + "commentStart": 0, "declaration": { - "commentStart": 454, + "commentStart": 0, "end": 0, "id": { - "commentStart": 454, + "commentStart": 0, "end": 0, "name": "blockSubdivisionCount", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 478, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -463,26 +463,26 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 480, + "commentStart": 0, "declaration": { - "commentStart": 480, + "commentStart": 0, "end": 0, "id": { - "commentStart": 480, + "commentStart": 0, "end": 0, "name": "blockSubdivisionWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 504, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 504, + "commentStart": 0, "end": 0, "name": { - "commentStart": 504, + "commentStart": 0, "end": 0, "name": "blockWidth", "start": 0, @@ -496,10 +496,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "/", "right": { "abs_path": false, - "commentStart": 517, + "commentStart": 0, "end": 0, "name": { - "commentStart": 517, + "commentStart": 0, "end": 0, "name": "blockSubdivisionCount", "start": 0, @@ -524,12 +524,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 538, + "commentStart": 0, "declaration": { - "commentStart": 552, + "commentStart": 0, "end": 0, "id": { - "commentStart": 552, + "commentStart": 0, "end": 0, "name": "floorPlane", "start": 0, @@ -539,10 +539,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arguments": [ { "abs_path": false, - "commentStart": 579, + "commentStart": 0, "end": 0, "name": { - "commentStart": 579, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -556,10 +556,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 565, + "commentStart": 0, "end": 0, "name": { - "commentStart": 565, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -569,7 +569,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 565, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -590,26 +590,26 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 582, + "commentStart": 0, "declaration": { - "commentStart": 592, + "commentStart": 0, "end": 0, "id": { - "commentStart": 592, + "commentStart": 0, "end": 0, "name": "legHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 604, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 604, + "commentStart": 0, "end": 0, "name": { - "commentStart": 604, + "commentStart": 0, "end": 0, "name": "blockHeight", "start": 0, @@ -623,10 +623,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 618, + "commentStart": 0, "end": 0, "name": { - "commentStart": 618, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -656,26 +656,26 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 635, + "commentStart": 0, "declaration": { - "commentStart": 635, + "commentStart": 0, "end": 0, "id": { - "commentStart": 635, + "commentStart": 0, "end": 0, "name": "legCount", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 646, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 646, + "commentStart": 0, "end": 0, "name": { - "commentStart": 646, + "commentStart": 0, "end": 0, "name": "blockCount", "start": 0, @@ -688,7 +688,7 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "+", "right": { - "commentStart": 659, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -713,12 +713,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 660, + "commentStart": 0, "declaration": { - "commentStart": 662, + "commentStart": 0, "end": 0, "id": { - "commentStart": 662, + "commentStart": 0, "end": 0, "name": "legBody", "start": 0, @@ -729,10 +729,10 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 687, + "commentStart": 0, "elements": [ { - "commentStart": 688, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -744,7 +744,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 691, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -763,10 +763,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 695, + "commentStart": 0, "end": 0, "name": { - "commentStart": 695, + "commentStart": 0, "end": 0, "name": "floorPlane", "start": 0, @@ -780,10 +780,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 672, + "commentStart": 0, "end": 0, "name": { - "commentStart": 672, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -793,7 +793,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 672, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -804,7 +804,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 718, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -812,10 +812,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 727, + "commentStart": 0, "end": 0, "name": { - "commentStart": 727, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -830,10 +830,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 712, + "commentStart": 0, "end": 0, "name": { - "commentStart": 712, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -843,7 +843,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 712, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -855,7 +855,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 756, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -863,10 +863,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 765, + "commentStart": 0, "end": 0, "name": { - "commentStart": 765, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -881,10 +881,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 750, + "commentStart": 0, "end": 0, "name": { - "commentStart": 750, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -894,7 +894,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 750, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -906,7 +906,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 794, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -915,10 +915,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 804, + "commentStart": 0, "end": 0, "name": { - "commentStart": 804, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -929,7 +929,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 803, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -940,10 +940,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 788, + "commentStart": 0, "end": 0, "name": { - "commentStart": 788, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -953,7 +953,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 788, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -965,19 +965,19 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 832, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 846, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 861, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -986,10 +986,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 847, + "commentStart": 0, "end": 0, "name": { - "commentStart": 847, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -999,7 +999,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 847, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1008,7 +1008,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 879, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1017,10 +1017,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 865, + "commentStart": 0, "end": 0, "name": { - "commentStart": 865, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -1030,7 +1030,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 865, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1046,10 +1046,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 827, + "commentStart": 0, "end": 0, "name": { - "commentStart": 827, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1059,7 +1059,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 827, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1070,10 +1070,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 889, + "commentStart": 0, "end": 0, "name": { - "commentStart": 889, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1083,7 +1083,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 889, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1094,17 +1094,17 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 918, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 925, + "commentStart": 0, "elements": [ { - "commentStart": 926, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1116,7 +1116,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 929, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1137,7 +1137,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 933, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -1145,10 +1145,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 945, + "commentStart": 0, "end": 0, "name": { - "commentStart": 945, + "commentStart": 0, "end": 0, "name": "legCount", "start": 0, @@ -1163,7 +1163,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 955, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -1171,10 +1171,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 966, + "commentStart": 0, "end": 0, "name": { - "commentStart": 966, + "commentStart": 0, "end": 0, "name": "blockWidth", "start": 0, @@ -1189,10 +1189,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 902, + "commentStart": 0, "end": 0, "name": { - "commentStart": 902, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -1202,7 +1202,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 902, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1214,17 +1214,17 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 999, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1006, + "commentStart": 0, "elements": [ { - "commentStart": 1007, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1236,7 +1236,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 1010, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1257,14 +1257,14 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1014, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1026, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1279,7 +1279,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1029, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -1287,10 +1287,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 1040, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1040, + "commentStart": 0, "end": 0, "name": "blockDepth", "start": 0, @@ -1305,10 +1305,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 983, + "commentStart": 0, "end": 0, "name": { - "commentStart": 983, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -1318,7 +1318,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 983, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1330,7 +1330,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1065, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1338,10 +1338,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 1074, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1074, + "commentStart": 0, "end": 0, "name": "legHeight", "start": 0, @@ -1356,10 +1356,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1057, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1057, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1369,7 +1369,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1057, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1377,13 +1377,13 @@ description: Result of parsing dual-basin-utility-sink.kcl "unlabeled": null } ], - "commentStart": 672, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "8": [ { - "commentStart": 1084, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1411,19 +1411,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 1100, + "commentStart": 0, "declaration": { - "commentStart": 1100, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1100, + "commentStart": 0, "end": 0, "name": "lowerBeltHeightAboveTheFloor", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1131, + "commentStart": 0, "end": 0, "raw": "150", "start": 0, @@ -1444,26 +1444,26 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 1135, + "commentStart": 0, "declaration": { - "commentStart": 1135, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1135, + "commentStart": 0, "end": 0, "name": "lowerBeltLengthX", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1154, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1154, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1154, + "commentStart": 0, "end": 0, "name": "blockWidth", "start": 0, @@ -1477,10 +1477,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1167, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1167, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -1505,12 +1505,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 1183, + "commentStart": 0, "declaration": { - "commentStart": 1185, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1185, + "commentStart": 0, "end": 0, "name": "lowerBeltPlane", "start": 0, @@ -1523,7 +1523,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1232, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -1531,10 +1531,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 1241, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1241, + "commentStart": 0, "end": 0, "name": "lowerBeltHeightAboveTheFloor", "start": 0, @@ -1549,10 +1549,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1216, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1216, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -1562,17 +1562,17 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1216, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1228, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1228, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -1587,10 +1587,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1202, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1202, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1600,7 +1600,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1202, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1616,12 +1616,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 1272, + "commentStart": 0, "declaration": { - "commentStart": 1272, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1272, + "commentStart": 0, "end": 0, "name": "lowerBeltBodyX", "start": 0, @@ -1632,14 +1632,14 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 1304, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1305, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1305, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -1651,7 +1651,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name" }, { - "commentStart": 1323, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1670,10 +1670,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 1327, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1327, + "commentStart": 0, "end": 0, "name": "lowerBeltPlane", "start": 0, @@ -1687,10 +1687,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1289, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1289, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1700,7 +1700,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1289, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1711,7 +1711,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1354, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1719,10 +1719,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 1363, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1363, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -1737,10 +1737,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1348, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1348, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1750,7 +1750,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1348, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1762,7 +1762,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1392, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1770,10 +1770,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 1401, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1401, + "commentStart": 0, "end": 0, "name": "lowerBeltLengthX", "start": 0, @@ -1788,10 +1788,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1386, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1386, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1801,7 +1801,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1386, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1813,7 +1813,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1430, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1822,10 +1822,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 1440, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1440, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -1836,7 +1836,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 1439, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1847,10 +1847,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1424, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1424, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1860,7 +1860,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1424, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1872,19 +1872,19 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1468, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1482, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1497, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1893,10 +1893,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1483, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1483, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -1906,7 +1906,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1483, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1915,7 +1915,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 1515, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1924,10 +1924,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1501, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1501, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -1937,7 +1937,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1501, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1953,10 +1953,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1463, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1463, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1966,7 +1966,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1463, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1977,10 +1977,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1525, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1525, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1990,7 +1990,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1525, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2001,17 +2001,17 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1554, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1561, + "commentStart": 0, "elements": [ { - "commentStart": 1562, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2023,7 +2023,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 1565, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2044,7 +2044,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1569, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -2052,10 +2052,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 1581, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1581, + "commentStart": 0, "end": 0, "name": "blockCount", "start": 0, @@ -2070,7 +2070,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1593, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -2078,10 +2078,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 1604, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1604, + "commentStart": 0, "end": 0, "name": "blockWidth", "start": 0, @@ -2096,10 +2096,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1538, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1538, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -2109,7 +2109,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1538, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2121,17 +2121,17 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1637, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1644, + "commentStart": 0, "elements": [ { - "commentStart": 1645, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2143,7 +2143,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 1648, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2164,14 +2164,14 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1652, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1664, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2186,7 +2186,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1667, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -2194,10 +2194,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 1678, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1678, + "commentStart": 0, "end": 0, "name": "blockDepth", "start": 0, @@ -2212,10 +2212,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1621, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1621, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -2225,7 +2225,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1621, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2237,7 +2237,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1703, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2245,10 +2245,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 1712, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1712, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -2263,10 +2263,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1695, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1695, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2276,7 +2276,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1695, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2284,7 +2284,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "unlabeled": null } ], - "commentStart": 1289, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2300,26 +2300,26 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 1729, + "commentStart": 0, "declaration": { - "commentStart": 1731, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1731, + "commentStart": 0, "end": 0, "name": "lowerBeltLengthY", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1750, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1750, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1750, + "commentStart": 0, "end": 0, "name": "blockDepth", "start": 0, @@ -2333,10 +2333,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1763, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1763, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -2361,12 +2361,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 1780, + "commentStart": 0, "declaration": { - "commentStart": 1780, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1780, + "commentStart": 0, "end": 0, "name": "lowerBeltBodyY", "start": 0, @@ -2377,10 +2377,10 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 1812, + "commentStart": 0, "elements": [ { - "commentStart": 1813, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2393,10 +2393,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 1816, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1816, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -2415,10 +2415,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 1835, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1835, + "commentStart": 0, "end": 0, "name": "lowerBeltPlane", "start": 0, @@ -2432,10 +2432,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1797, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1797, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2445,7 +2445,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1797, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2456,7 +2456,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1862, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2464,10 +2464,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 1871, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1871, + "commentStart": 0, "end": 0, "name": "lowerBeltLengthY", "start": 0, @@ -2482,10 +2482,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1856, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1856, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2495,7 +2495,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1856, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2507,7 +2507,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1900, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2515,10 +2515,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 1909, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1909, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -2533,10 +2533,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1894, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1894, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2546,7 +2546,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1894, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2558,7 +2558,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1938, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2567,10 +2567,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 1948, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1948, + "commentStart": 0, "end": 0, "name": "lowerBeltLengthY", "start": 0, @@ -2581,7 +2581,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 1947, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2592,10 +2592,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1932, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1932, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2605,7 +2605,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1932, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2617,19 +2617,19 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 1976, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1990, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 2005, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2638,10 +2638,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1991, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1991, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -2651,7 +2651,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1991, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2660,7 +2660,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 2023, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2669,10 +2669,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2009, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2009, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -2682,7 +2682,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2009, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2698,10 +2698,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 1971, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1971, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2711,7 +2711,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 1971, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2722,10 +2722,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2033, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2033, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2735,7 +2735,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2033, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2746,17 +2746,17 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2062, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2069, + "commentStart": 0, "elements": [ { - "commentStart": 2070, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2768,7 +2768,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 2073, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2789,14 +2789,14 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2077, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2089, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2811,21 +2811,21 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2092, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2103, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2103, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2103, + "commentStart": 0, "end": 0, "name": "tableWidth", "start": 0, @@ -2839,10 +2839,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 2116, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2116, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -2861,10 +2861,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2046, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2046, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -2874,7 +2874,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2046, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2886,7 +2886,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2147, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2894,10 +2894,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 2156, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2156, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -2912,10 +2912,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2139, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2139, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2925,7 +2925,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2139, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2933,13 +2933,13 @@ description: Result of parsing dual-basin-utility-sink.kcl "unlabeled": null } ], - "commentStart": 1797, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "7": [ { - "commentStart": 2173, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2967,26 +2967,26 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 2186, + "commentStart": 0, "declaration": { - "commentStart": 2186, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2186, + "commentStart": 0, "end": 0, "name": "pillarHeightAboveTheFloor", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 2214, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2214, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2214, + "commentStart": 0, "end": 0, "name": "lowerBeltHeightAboveTheFloor", "start": 0, @@ -3000,10 +3000,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2245, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2245, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -3028,12 +3028,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 2262, + "commentStart": 0, "declaration": { - "commentStart": 2262, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2262, + "commentStart": 0, "end": 0, "name": "pillarPlane", "start": 0, @@ -3046,7 +3046,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2306, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -3054,10 +3054,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 2315, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2315, + "commentStart": 0, "end": 0, "name": "pillarHeightAboveTheFloor", "start": 0, @@ -3072,10 +3072,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2290, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2290, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -3085,17 +3085,17 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2290, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2302, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2302, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -3110,10 +3110,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2276, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2276, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -3123,7 +3123,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2276, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3139,29 +3139,29 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 2343, + "commentStart": 0, "declaration": { - "commentStart": 2343, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2343, + "commentStart": 0, "end": 0, "name": "pillarTotalHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 2363, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2363, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2363, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2363, + "commentStart": 0, "end": 0, "name": "blockHeight", "start": 0, @@ -3175,10 +3175,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 2377, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2377, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -3196,10 +3196,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 2396, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2396, + "commentStart": 0, "end": 0, "name": "pillarHeightAboveTheFloor", "start": 0, @@ -3224,12 +3224,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 2421, + "commentStart": 0, "declaration": { - "commentStart": 2423, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2423, + "commentStart": 0, "end": 0, "name": "pillarBody", "start": 0, @@ -3240,14 +3240,14 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 2451, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 2452, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2452, + "commentStart": 0, "end": 0, "name": "blockSubdivisionWidth", "start": 0, @@ -3259,7 +3259,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name" }, { - "commentStart": 2475, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3278,10 +3278,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 2479, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2479, + "commentStart": 0, "end": 0, "name": "pillarPlane", "start": 0, @@ -3295,10 +3295,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2436, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2436, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -3308,7 +3308,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2436, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3319,7 +3319,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2503, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3327,10 +3327,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 2512, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2512, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -3345,10 +3345,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2497, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2497, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -3358,7 +3358,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2497, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3370,7 +3370,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2541, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3378,10 +3378,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 2550, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2550, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -3396,10 +3396,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2535, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2535, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -3409,7 +3409,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2535, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3421,7 +3421,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2579, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3430,10 +3430,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 2589, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2589, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -3444,7 +3444,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 2588, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3455,10 +3455,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2573, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2573, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -3468,7 +3468,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2573, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3480,19 +3480,19 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2617, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2631, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 2646, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3501,10 +3501,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2632, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2632, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -3514,7 +3514,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2632, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3523,7 +3523,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 2664, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3532,10 +3532,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2650, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2650, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -3545,7 +3545,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2650, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3561,10 +3561,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2612, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2612, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3574,7 +3574,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2612, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3585,10 +3585,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2674, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2674, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -3598,7 +3598,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2674, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3609,17 +3609,17 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2703, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2710, + "commentStart": 0, "elements": [ { - "commentStart": 2711, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3631,7 +3631,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 2714, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3652,7 +3652,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2718, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -3660,10 +3660,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 2730, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2730, + "commentStart": 0, "end": 0, "name": "blockCount", "start": 0, @@ -3678,7 +3678,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2742, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -3686,10 +3686,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 2753, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2753, + "commentStart": 0, "end": 0, "name": "blockWidth", "start": 0, @@ -3704,10 +3704,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2687, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2687, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -3717,7 +3717,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2687, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3729,17 +3729,17 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2786, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2793, + "commentStart": 0, "elements": [ { - "commentStart": 2794, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3751,7 +3751,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 2797, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3772,14 +3772,14 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2801, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2813, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3794,7 +3794,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2816, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -3802,10 +3802,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 2827, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2827, + "commentStart": 0, "end": 0, "name": "blockDepth", "start": 0, @@ -3820,10 +3820,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2770, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2770, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -3833,7 +3833,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2770, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3845,7 +3845,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2852, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3853,10 +3853,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 2861, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2861, + "commentStart": 0, "end": 0, "name": "pillarTotalHeight", "start": 0, @@ -3871,10 +3871,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2844, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2844, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3884,7 +3884,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2844, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3892,13 +3892,13 @@ description: Result of parsing dual-basin-utility-sink.kcl "unlabeled": null } ], - "commentStart": 2436, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "8": [ { - "commentStart": 2879, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3926,12 +3926,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 2895, + "commentStart": 0, "declaration": { - "commentStart": 2895, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2895, + "commentStart": 0, "end": 0, "name": "upperBeltPlane", "start": 0, @@ -3944,7 +3944,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 2942, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -3952,10 +3952,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 2951, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2951, + "commentStart": 0, "end": 0, "name": "blockHeight", "start": 0, @@ -3970,10 +3970,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2926, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2926, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -3983,17 +3983,17 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2926, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2938, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2938, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -4008,10 +4008,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2912, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2912, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -4021,7 +4021,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2912, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4037,12 +4037,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 2964, + "commentStart": 0, "declaration": { - "commentStart": 2966, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2966, + "commentStart": 0, "end": 0, "name": "upperBeltBodyX", "start": 0, @@ -4053,10 +4053,10 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 2998, + "commentStart": 0, "elements": [ { - "commentStart": 2999, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4068,7 +4068,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 3002, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4087,10 +4087,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 3006, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3006, + "commentStart": 0, "end": 0, "name": "upperBeltPlane", "start": 0, @@ -4104,10 +4104,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 2983, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2983, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -4117,7 +4117,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 2983, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4128,7 +4128,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3033, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4136,10 +4136,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 3042, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3042, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -4154,10 +4154,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3027, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3027, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -4167,7 +4167,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3027, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4179,7 +4179,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3071, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4187,10 +4187,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 3080, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3080, + "commentStart": 0, "end": 0, "name": "tableWidth", "start": 0, @@ -4205,10 +4205,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3065, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3065, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -4218,7 +4218,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3065, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4230,7 +4230,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3103, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4239,10 +4239,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 3113, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3113, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -4253,7 +4253,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 3112, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4264,10 +4264,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3097, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3097, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -4277,7 +4277,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3097, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4289,19 +4289,19 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3141, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3155, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 3170, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4310,10 +4310,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3156, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3156, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -4323,7 +4323,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3156, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4332,7 +4332,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 3188, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4341,10 +4341,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3174, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3174, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -4354,7 +4354,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3174, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4370,10 +4370,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3136, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3136, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4383,7 +4383,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3136, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4394,10 +4394,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 3198, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3198, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -4407,7 +4407,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3198, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4418,17 +4418,17 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3227, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3234, + "commentStart": 0, "elements": [ { - "commentStart": 3235, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4440,7 +4440,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 3238, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -4461,14 +4461,14 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3242, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3254, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4483,7 +4483,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3257, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -4491,10 +4491,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 3268, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3268, + "commentStart": 0, "end": 0, "name": "blockDepth", "start": 0, @@ -4509,10 +4509,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3211, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3211, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -4522,7 +4522,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3211, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4534,7 +4534,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3293, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4543,10 +4543,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 3303, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3303, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -4557,7 +4557,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 3302, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4568,10 +4568,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3285, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3285, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -4581,7 +4581,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3285, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4589,7 +4589,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "unlabeled": null } ], - "commentStart": 2983, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -4605,26 +4605,26 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 3320, + "commentStart": 0, "declaration": { - "commentStart": 3322, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3322, + "commentStart": 0, "end": 0, "name": "upperBeltLengthY", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 3341, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3341, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3341, + "commentStart": 0, "end": 0, "name": "blockDepth", "start": 0, @@ -4638,10 +4638,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 3354, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3354, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -4666,12 +4666,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 3371, + "commentStart": 0, "declaration": { - "commentStart": 3371, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3371, + "commentStart": 0, "end": 0, "name": "upperBeltBodyY", "start": 0, @@ -4682,10 +4682,10 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 3403, + "commentStart": 0, "elements": [ { - "commentStart": 3404, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4698,10 +4698,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 3407, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3407, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -4720,10 +4720,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 3426, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3426, + "commentStart": 0, "end": 0, "name": "upperBeltPlane", "start": 0, @@ -4737,10 +4737,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3388, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3388, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -4750,7 +4750,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3388, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4761,7 +4761,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3453, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4769,10 +4769,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 3462, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3462, + "commentStart": 0, "end": 0, "name": "upperBeltLengthY", "start": 0, @@ -4787,10 +4787,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3447, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3447, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -4800,7 +4800,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3447, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4812,7 +4812,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3491, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4820,10 +4820,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 3500, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3500, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -4838,10 +4838,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3485, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3485, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -4851,7 +4851,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3485, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4863,7 +4863,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3529, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4872,10 +4872,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 3539, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3539, + "commentStart": 0, "end": 0, "name": "upperBeltLengthY", "start": 0, @@ -4886,7 +4886,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 3538, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4897,10 +4897,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3523, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3523, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -4910,7 +4910,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3523, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4922,19 +4922,19 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3567, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3581, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 3596, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4943,10 +4943,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3582, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3582, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -4956,7 +4956,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3582, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4965,7 +4965,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 3614, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4974,10 +4974,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3600, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3600, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -4987,7 +4987,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3600, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5003,10 +5003,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3562, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3562, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5016,7 +5016,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3562, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5027,10 +5027,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 3624, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3624, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -5040,7 +5040,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3624, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5051,17 +5051,17 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3653, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3660, + "commentStart": 0, "elements": [ { - "commentStart": 3661, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -5073,7 +5073,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 3664, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5094,14 +5094,14 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3668, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3680, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5116,21 +5116,21 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3683, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3694, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3694, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3694, + "commentStart": 0, "end": 0, "name": "tableWidth", "start": 0, @@ -5144,10 +5144,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 3707, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3707, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -5166,10 +5166,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3637, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3637, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -5179,7 +5179,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3637, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5191,7 +5191,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3738, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -5200,10 +5200,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 3748, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3748, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -5214,7 +5214,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 3747, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5225,10 +5225,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3730, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3730, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -5238,7 +5238,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3730, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5246,13 +5246,13 @@ description: Result of parsing dual-basin-utility-sink.kcl "unlabeled": null } ], - "commentStart": 3388, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "7": [ { - "commentStart": 3765, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5280,12 +5280,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 3775, + "commentStart": 0, "declaration": { - "commentStart": 3775, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3775, + "commentStart": 0, "end": 0, "name": "tableTopPlane", "start": 0, @@ -5298,7 +5298,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3821, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -5306,10 +5306,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 3830, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3830, + "commentStart": 0, "end": 0, "name": "tableHeight", "start": 0, @@ -5324,10 +5324,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3805, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3805, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -5337,17 +5337,17 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3805, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 3817, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3817, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -5362,10 +5362,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3791, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3791, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -5375,7 +5375,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3791, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5391,12 +5391,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 3844, + "commentStart": 0, "declaration": { - "commentStart": 3844, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3844, + "commentStart": 0, "end": 0, "name": "tableTopBody", "start": 0, @@ -5407,10 +5407,10 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 3874, + "commentStart": 0, "elements": [ { - "commentStart": 3875, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5422,7 +5422,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 3878, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5441,10 +5441,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 3882, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3882, + "commentStart": 0, "end": 0, "name": "tableTopPlane", "start": 0, @@ -5458,10 +5458,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3859, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3859, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -5471,7 +5471,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3859, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5482,7 +5482,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3908, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -5490,10 +5490,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 3917, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3917, + "commentStart": 0, "end": 0, "name": "tableDepth", "start": 0, @@ -5508,10 +5508,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3902, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3902, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -5521,7 +5521,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3902, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5533,7 +5533,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3940, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -5541,10 +5541,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 3949, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3949, + "commentStart": 0, "end": 0, "name": "tableWidth", "start": 0, @@ -5559,10 +5559,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3934, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3934, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -5572,7 +5572,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3934, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5584,7 +5584,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 3972, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -5593,10 +5593,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 3982, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3982, + "commentStart": 0, "end": 0, "name": "tableDepth", "start": 0, @@ -5607,7 +5607,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 3981, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5618,10 +5618,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3966, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3966, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -5631,7 +5631,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3966, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5643,19 +5643,19 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 4004, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4018, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 4033, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5664,10 +5664,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 4019, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4019, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -5677,7 +5677,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4019, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5686,7 +5686,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 4051, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5695,10 +5695,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 4037, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4037, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -5708,7 +5708,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4037, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5724,10 +5724,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 3999, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3999, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5737,7 +5737,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 3999, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5748,10 +5748,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 4061, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4061, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -5761,7 +5761,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4061, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5772,7 +5772,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 4082, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -5781,10 +5781,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 4092, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4092, + "commentStart": 0, "end": 0, "name": "metalThickness", "start": 0, @@ -5795,7 +5795,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 4091, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5806,10 +5806,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 4074, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4074, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -5819,7 +5819,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4074, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5827,7 +5827,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "unlabeled": null } ], - "commentStart": 3859, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -5843,19 +5843,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 4107, + "commentStart": 0, "declaration": { - "commentStart": 4109, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4109, + "commentStart": 0, "end": 0, "name": "sinkCount", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4121, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5876,19 +5876,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 4123, + "commentStart": 0, "declaration": { - "commentStart": 4123, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4123, + "commentStart": 0, "end": 0, "name": "sinkWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4135, + "commentStart": 0, "end": 0, "raw": "1000", "start": 0, @@ -5909,19 +5909,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 4140, + "commentStart": 0, "declaration": { - "commentStart": 4140, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4140, + "commentStart": 0, "end": 0, "name": "sinkLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4153, + "commentStart": 0, "end": 0, "raw": "250", "start": 0, @@ -5942,19 +5942,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 4157, + "commentStart": 0, "declaration": { - "commentStart": 4157, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4157, + "commentStart": 0, "end": 0, "name": "sinkDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4169, + "commentStart": 0, "end": 0, "raw": "200", "start": 0, @@ -5975,19 +5975,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 4173, + "commentStart": 0, "declaration": { - "commentStart": 4173, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4173, + "commentStart": 0, "end": 0, "name": "sinkOffsetFront", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4191, + "commentStart": 0, "end": 0, "raw": "40", "start": 0, @@ -6008,19 +6008,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 4194, + "commentStart": 0, "declaration": { - "commentStart": 4194, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4194, + "commentStart": 0, "end": 0, "name": "sinkOffsetLeft", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4211, + "commentStart": 0, "end": 0, "raw": "350", "start": 0, @@ -6041,29 +6041,29 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 4215, + "commentStart": 0, "declaration": { - "commentStart": 4215, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4215, + "commentStart": 0, "end": 0, "name": "sinkSpacing", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4229, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4229, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4229, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4229, + "commentStart": 0, "end": 0, "name": "tableWidth", "start": 0, @@ -6077,10 +6077,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 4242, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4242, + "commentStart": 0, "end": 0, "name": "sinkWidth", "start": 0, @@ -6097,14 +6097,14 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "-", "right": { - "commentStart": 4255, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4255, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4255, + "commentStart": 0, "end": 0, "name": "sinkOffsetLeft", "start": 0, @@ -6117,7 +6117,7 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "*", "right": { - "commentStart": 4272, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6146,12 +6146,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 4274, + "commentStart": 0, "declaration": { - "commentStart": 4276, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4276, + "commentStart": 0, "end": 0, "name": "sinkPlaneOutside", "start": 0, @@ -6160,37 +6160,38 @@ description: Result of parsing dual-basin-utility-sink.kcl "init": { "arguments": [ { - "abs_path": false, - "commentStart": 4309, - "end": 0, - "name": { - "commentStart": 4309, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "tableTopBody", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 4323, - "end": 0, - "raw": "'START'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "START" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 4295, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4295, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -6200,11 +6201,27 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4295, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tableTopBody", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, "start": 0, "type": "VariableDeclarator" @@ -6216,12 +6233,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 4332, + "commentStart": 0, "declaration": { - "commentStart": 4332, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4332, + "commentStart": 0, "end": 0, "name": "sinkBodyOutside", "start": 0, @@ -6232,15 +6249,15 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 4365, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 4367, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4367, + "commentStart": 0, "end": 0, "name": "sinkOffsetLeft", "start": 0, @@ -6251,7 +6268,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 4366, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6260,10 +6277,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 4383, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4383, + "commentStart": 0, "end": 0, "name": "sinkOffsetFront", "start": 0, @@ -6282,10 +6299,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 4401, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4401, + "commentStart": 0, "end": 0, "name": "sinkPlaneOutside", "start": 0, @@ -6299,10 +6316,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 4350, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4350, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -6312,7 +6329,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4350, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6323,7 +6340,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 4430, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6331,10 +6348,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 4439, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4439, + "commentStart": 0, "end": 0, "name": "sinkLength", "start": 0, @@ -6349,10 +6366,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 4424, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4424, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -6362,7 +6379,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4424, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6374,7 +6391,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 4462, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6383,10 +6400,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 4472, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4472, + "commentStart": 0, "end": 0, "name": "sinkWidth", "start": 0, @@ -6397,7 +6414,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 4471, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6408,10 +6425,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 4456, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4456, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -6421,7 +6438,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4456, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6433,7 +6450,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 4494, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6442,10 +6459,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 4504, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4504, + "commentStart": 0, "end": 0, "name": "sinkLength", "start": 0, @@ -6456,7 +6473,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 4503, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6467,10 +6484,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 4488, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4488, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -6480,7 +6497,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4488, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6492,19 +6509,19 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 4526, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4540, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 4555, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6513,10 +6530,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 4541, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4541, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -6526,7 +6543,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4541, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6535,7 +6552,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 4573, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6544,10 +6561,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 4559, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4559, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -6557,7 +6574,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4559, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6573,10 +6590,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 4521, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4521, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6586,7 +6603,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4521, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6597,10 +6614,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 4583, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4583, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -6610,7 +6627,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4583, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6621,18 +6638,18 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 4612, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4619, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 4621, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6643,7 +6660,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "suffix": "None" } }, - "commentStart": 4620, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6651,7 +6668,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "UnaryExpression" }, { - "commentStart": 4624, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6672,7 +6689,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 4628, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -6680,10 +6697,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 4640, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4640, + "commentStart": 0, "end": 0, "name": "sinkCount", "start": 0, @@ -6698,7 +6715,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 4651, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -6706,10 +6723,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 4662, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4662, + "commentStart": 0, "end": 0, "name": "sinkSpacing", "start": 0, @@ -6724,10 +6741,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 4596, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4596, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -6737,7 +6754,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4596, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6749,7 +6766,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 4688, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6757,10 +6774,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 4697, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4697, + "commentStart": 0, "end": 0, "name": "sinkDepth", "start": 0, @@ -6775,10 +6792,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 4680, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4680, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -6788,7 +6805,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4680, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6796,7 +6813,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "unlabeled": null } ], - "commentStart": 4350, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -6812,12 +6829,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 4707, + "commentStart": 0, "declaration": { - "commentStart": 4709, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4709, + "commentStart": 0, "end": 0, "name": "sinkPlaneInside", "start": 0, @@ -6826,37 +6843,38 @@ description: Result of parsing dual-basin-utility-sink.kcl "init": { "arguments": [ { - "abs_path": false, - "commentStart": 4741, - "end": 0, - "name": { - "commentStart": 4741, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "tableTopBody", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 4755, - "end": 0, - "raw": "'END'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 4727, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4727, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -6866,11 +6884,27 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4727, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tableTopBody", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, "start": 0, "type": "VariableDeclarator" @@ -6882,12 +6916,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 4762, + "commentStart": 0, "declaration": { - "commentStart": 4762, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4762, + "commentStart": 0, "end": 0, "name": "sinkBodyInside", "start": 0, @@ -6898,17 +6932,17 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 4794, + "commentStart": 0, "elements": [ { - "commentStart": 4803, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4803, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4803, + "commentStart": 0, "end": 0, "name": "sinkOffsetLeft", "start": 0, @@ -6922,10 +6956,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 4820, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4820, + "commentStart": 0, "end": 0, "name": "metalThickness", "start": 0, @@ -6941,14 +6975,14 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "BinaryExpression" }, { - "commentStart": 4843, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4843, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4843, + "commentStart": 0, "end": 0, "name": "sinkOffsetFront", "start": 0, @@ -6962,10 +6996,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 4861, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4861, + "commentStart": 0, "end": 0, "name": "metalThickness", "start": 0, @@ -6988,10 +7022,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 4884, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4884, + "commentStart": 0, "end": 0, "name": "sinkPlaneInside", "start": 0, @@ -7005,10 +7039,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 4779, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4779, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -7018,7 +7052,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4779, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7029,21 +7063,21 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 4912, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4921, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4921, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4921, + "commentStart": 0, "end": 0, "name": "sinkLength", "start": 0, @@ -7056,14 +7090,14 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "-", "right": { - "commentStart": 4935, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4935, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4935, + "commentStart": 0, "end": 0, "name": "metalThickness", "start": 0, @@ -7076,7 +7110,7 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "*", "right": { - "commentStart": 4952, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -7099,10 +7133,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 4906, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4906, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -7112,7 +7146,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4906, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7124,21 +7158,21 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 4967, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4976, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4976, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4976, + "commentStart": 0, "end": 0, "name": "sinkWidth", "start": 0, @@ -7151,14 +7185,14 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "-", "right": { - "commentStart": 4989, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4989, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4989, + "commentStart": 0, "end": 0, "name": "metalThickness", "start": 0, @@ -7171,7 +7205,7 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "*", "right": { - "commentStart": 5006, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -7194,10 +7228,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 4961, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4961, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -7207,7 +7241,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 4961, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7219,22 +7253,22 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 5021, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5030, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 5031, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5031, + "commentStart": 0, "end": 0, "name": "sinkLength", "start": 0, @@ -7245,7 +7279,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 5030, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7254,14 +7288,14 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "+", "right": { - "commentStart": 5044, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5044, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5044, + "commentStart": 0, "end": 0, "name": "metalThickness", "start": 0, @@ -7274,7 +7308,7 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "*", "right": { - "commentStart": 5061, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -7297,10 +7331,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5015, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5015, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -7310,7 +7344,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5015, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7322,19 +7356,19 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 5074, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5088, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 5103, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -7343,10 +7377,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5089, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5089, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -7356,7 +7390,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5089, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7365,7 +7399,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 5121, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -7374,10 +7408,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5107, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5107, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -7387,7 +7421,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5107, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7403,10 +7437,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5069, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5069, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7416,7 +7450,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5069, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7427,10 +7461,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 5131, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5131, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -7440,7 +7474,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5131, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7451,17 +7485,17 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 5160, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5167, + "commentStart": 0, "elements": [ { - "commentStart": 5168, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -7473,7 +7507,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 5171, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -7494,7 +7528,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 5175, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -7502,10 +7536,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 5187, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5187, + "commentStart": 0, "end": 0, "name": "sinkCount", "start": 0, @@ -7520,7 +7554,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 5198, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -7528,10 +7562,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 5209, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5209, + "commentStart": 0, "end": 0, "name": "sinkSpacing", "start": 0, @@ -7546,10 +7580,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5144, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5144, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -7559,7 +7593,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5144, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7571,7 +7605,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 5235, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -7580,10 +7614,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 5245, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5245, + "commentStart": 0, "end": 0, "name": "sinkDepth", "start": 0, @@ -7594,7 +7628,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 5244, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7605,10 +7639,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5227, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5227, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -7618,7 +7652,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5227, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7626,13 +7660,13 @@ description: Result of parsing dual-basin-utility-sink.kcl "unlabeled": null } ], - "commentStart": 4779, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "7": [ { - "commentStart": 5255, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -7660,19 +7694,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 5272, + "commentStart": 0, "declaration": { - "commentStart": 5272, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5272, + "commentStart": 0, "end": 0, "name": "doorGap", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 5282, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -7693,29 +7727,29 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 5284, + "commentStart": 0, "declaration": { - "commentStart": 5284, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5284, + "commentStart": 0, "end": 0, "name": "doorWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 5296, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5296, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5296, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5296, + "commentStart": 0, "end": 0, "name": "blockSubdivisionWidth", "start": 0, @@ -7729,10 +7763,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 5320, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5320, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -7749,14 +7783,14 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "-", "right": { - "commentStart": 5340, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5340, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5340, + "commentStart": 0, "end": 0, "name": "doorGap", "start": 0, @@ -7769,7 +7803,7 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "*", "right": { - "commentStart": 5350, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -7798,26 +7832,26 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 5353, + "commentStart": 0, "declaration": { - "commentStart": 5353, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5353, + "commentStart": 0, "end": 0, "name": "doorStart", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 5365, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5365, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5365, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -7831,10 +7865,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 5384, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5384, + "commentStart": 0, "end": 0, "name": "doorGap", "start": 0, @@ -7859,26 +7893,26 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 5392, + "commentStart": 0, "declaration": { - "commentStart": 5392, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5392, + "commentStart": 0, "end": 0, "name": "doorHeightAboveTheFloor", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 5418, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5418, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5418, + "commentStart": 0, "end": 0, "name": "pillarHeightAboveTheFloor", "start": 0, @@ -7892,10 +7926,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 5446, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5446, + "commentStart": 0, "end": 0, "name": "doorGap", "start": 0, @@ -7920,32 +7954,32 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 5454, + "commentStart": 0, "declaration": { - "commentStart": 5454, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5454, + "commentStart": 0, "end": 0, "name": "doorHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 5467, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5467, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5467, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5467, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5467, + "commentStart": 0, "end": 0, "name": "blockHeight", "start": 0, @@ -7959,10 +7993,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 5481, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5481, + "commentStart": 0, "end": 0, "name": "doorHeightAboveTheFloor", "start": 0, @@ -7980,10 +8014,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 5507, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5507, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -8001,10 +8035,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 5526, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5526, + "commentStart": 0, "end": 0, "name": "doorGap", "start": 0, @@ -8029,26 +8063,26 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 5534, + "commentStart": 0, "declaration": { - "commentStart": 5534, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5534, + "commentStart": 0, "end": 0, "name": "doorCount", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 5546, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5546, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5546, + "commentStart": 0, "end": 0, "name": "blockCount", "start": 0, @@ -8062,10 +8096,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5559, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5559, + "commentStart": 0, "end": 0, "name": "blockSubdivisionCount", "start": 0, @@ -8090,12 +8124,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 5580, + "commentStart": 0, "declaration": { - "commentStart": 5582, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5582, + "commentStart": 0, "end": 0, "name": "doorPlane", "start": 0, @@ -8108,7 +8142,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 5624, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -8116,10 +8150,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 5633, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5633, + "commentStart": 0, "end": 0, "name": "doorHeightAboveTheFloor", "start": 0, @@ -8134,10 +8168,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5608, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5608, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -8147,17 +8181,17 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5608, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 5620, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5620, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -8172,10 +8206,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5594, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5594, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -8185,7 +8219,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5594, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8201,12 +8235,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 5659, + "commentStart": 0, "declaration": { - "commentStart": 5659, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5659, + "commentStart": 0, "end": 0, "name": "doorBody", "start": 0, @@ -8217,14 +8251,14 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 5685, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 5686, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5686, + "commentStart": 0, "end": 0, "name": "doorStart", "start": 0, @@ -8236,7 +8270,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name" }, { - "commentStart": 5697, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -8255,10 +8289,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 5701, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5701, + "commentStart": 0, "end": 0, "name": "doorPlane", "start": 0, @@ -8272,10 +8306,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5670, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5670, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -8285,7 +8319,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5670, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8296,7 +8330,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 5723, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -8304,10 +8338,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 5732, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5732, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -8322,10 +8356,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5717, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5717, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -8335,7 +8369,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5717, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8347,7 +8381,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 5761, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -8355,10 +8389,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 5770, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5770, + "commentStart": 0, "end": 0, "name": "doorWidth", "start": 0, @@ -8373,10 +8407,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5755, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5755, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -8386,7 +8420,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5755, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8398,7 +8432,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 5792, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -8407,10 +8441,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 5802, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5802, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -8421,7 +8455,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 5801, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8432,10 +8466,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5786, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5786, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -8445,7 +8479,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5786, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8457,19 +8491,19 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 5830, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5844, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 5859, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -8478,10 +8512,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5845, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5845, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -8491,7 +8525,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5845, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8500,7 +8534,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 5877, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -8509,10 +8543,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5863, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5863, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -8522,7 +8556,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5863, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8538,10 +8572,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5825, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5825, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8551,7 +8585,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5825, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8562,10 +8596,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 5887, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5887, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -8575,7 +8609,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5887, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8586,17 +8620,17 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 5916, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5923, + "commentStart": 0, "elements": [ { - "commentStart": 5924, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -8608,7 +8642,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 5927, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -8629,7 +8663,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 5931, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -8637,10 +8671,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 5943, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5943, + "commentStart": 0, "end": 0, "name": "doorCount", "start": 0, @@ -8655,7 +8689,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 5954, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -8663,10 +8697,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 5965, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5965, + "commentStart": 0, "end": 0, "name": "blockSubdivisionWidth", "start": 0, @@ -8681,10 +8715,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5900, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5900, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -8694,7 +8728,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5900, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8706,7 +8740,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 6001, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -8714,10 +8748,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 6010, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6010, + "commentStart": 0, "end": 0, "name": "doorHeight", "start": 0, @@ -8732,10 +8766,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 5993, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5993, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -8745,7 +8779,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 5993, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8753,13 +8787,13 @@ description: Result of parsing dual-basin-utility-sink.kcl "unlabeled": null } ], - "commentStart": 5670, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "7": [ { - "commentStart": 6021, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -8787,29 +8821,29 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 6038, + "commentStart": 0, "declaration": { - "commentStart": 6038, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6038, + "commentStart": 0, "end": 0, "name": "panelWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6051, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6051, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6051, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6051, + "commentStart": 0, "end": 0, "name": "blockDepth", "start": 0, @@ -8823,10 +8857,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 6064, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6064, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -8843,14 +8877,14 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "-", "right": { - "commentStart": 6084, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6084, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6084, + "commentStart": 0, "end": 0, "name": "doorGap", "start": 0, @@ -8863,7 +8897,7 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "*", "right": { - "commentStart": 6094, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -8892,26 +8926,26 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 6097, + "commentStart": 0, "declaration": { - "commentStart": 6097, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6097, + "commentStart": 0, "end": 0, "name": "panelCount", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6110, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6110, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6110, + "commentStart": 0, "end": 0, "name": "doorCount", "start": 0, @@ -8924,7 +8958,7 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "+", "right": { - "commentStart": 6122, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -8949,26 +8983,26 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 6124, + "commentStart": 0, "declaration": { - "commentStart": 6124, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6124, + "commentStart": 0, "end": 0, "name": "panelSpacing", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6139, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6139, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6139, + "commentStart": 0, "end": 0, "name": "tableWidth", "start": 0, @@ -8982,10 +9016,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 6152, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6152, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -9010,12 +9044,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 6169, + "commentStart": 0, "declaration": { - "commentStart": 6169, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6169, + "commentStart": 0, "end": 0, "name": "panelBody", "start": 0, @@ -9026,10 +9060,10 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 6196, + "commentStart": 0, "elements": [ { - "commentStart": 6197, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -9042,10 +9076,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 6200, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6200, + "commentStart": 0, "end": 0, "name": "doorStart", "start": 0, @@ -9064,10 +9098,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 6212, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6212, + "commentStart": 0, "end": 0, "name": "doorPlane", "start": 0, @@ -9081,10 +9115,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 6181, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6181, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -9094,7 +9128,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 6181, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9105,7 +9139,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 6234, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -9113,10 +9147,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 6243, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6243, + "commentStart": 0, "end": 0, "name": "panelWidth", "start": 0, @@ -9131,10 +9165,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 6228, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6228, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -9144,7 +9178,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 6228, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9156,7 +9190,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 6266, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -9164,10 +9198,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 6275, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6275, + "commentStart": 0, "end": 0, "name": "profileThickness", "start": 0, @@ -9182,10 +9216,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 6260, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6260, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -9195,7 +9229,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 6260, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9207,7 +9241,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 6304, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -9216,10 +9250,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 6314, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6314, + "commentStart": 0, "end": 0, "name": "panelWidth", "start": 0, @@ -9230,7 +9264,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 6313, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9241,10 +9275,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 6298, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6298, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -9254,7 +9288,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 6298, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9266,19 +9300,19 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 6336, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6350, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 6365, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -9287,10 +9321,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 6351, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6351, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -9300,7 +9334,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 6351, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9309,7 +9343,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 6383, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -9318,10 +9352,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 6369, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6369, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -9331,7 +9365,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 6369, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9347,10 +9381,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 6331, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6331, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9360,7 +9394,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 6331, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9371,10 +9405,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 6393, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6393, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -9384,7 +9418,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 6393, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9395,17 +9429,17 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 6422, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6429, + "commentStart": 0, "elements": [ { - "commentStart": 6430, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -9417,7 +9451,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 6433, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -9438,14 +9472,14 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 6437, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6449, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9460,7 +9494,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 6452, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -9468,10 +9502,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 6463, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6463, + "commentStart": 0, "end": 0, "name": "panelSpacing", "start": 0, @@ -9486,10 +9520,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 6406, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6406, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -9499,7 +9533,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 6406, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9511,7 +9545,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 6490, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -9519,10 +9553,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 6499, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6499, + "commentStart": 0, "end": 0, "name": "doorHeight", "start": 0, @@ -9537,10 +9571,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 6482, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6482, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -9550,7 +9584,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 6482, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9558,13 +9592,13 @@ description: Result of parsing dual-basin-utility-sink.kcl "unlabeled": null } ], - "commentStart": 6181, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "7": [ { - "commentStart": 6510, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9592,19 +9626,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 6522, + "commentStart": 0, "declaration": { - "commentStart": 6522, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6522, + "commentStart": 0, "end": 0, "name": "handleDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6536, + "commentStart": 0, "end": 0, "raw": "40", "start": 0, @@ -9625,19 +9659,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 6539, + "commentStart": 0, "declaration": { - "commentStart": 6539, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6539, + "commentStart": 0, "end": 0, "name": "handleWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6553, + "commentStart": 0, "end": 0, "raw": "120", "start": 0, @@ -9658,19 +9692,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 6557, + "commentStart": 0, "declaration": { - "commentStart": 6557, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6557, + "commentStart": 0, "end": 0, "name": "handleFillet", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6572, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -9691,19 +9725,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 6575, + "commentStart": 0, "declaration": { - "commentStart": 6575, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6575, + "commentStart": 0, "end": 0, "name": "handleHeightAboveTheFloor", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6603, + "commentStart": 0, "end": 0, "raw": "780", "start": 0, @@ -9724,29 +9758,29 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 6607, + "commentStart": 0, "declaration": { - "commentStart": 6607, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6607, + "commentStart": 0, "end": 0, "name": "handleOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6622, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6622, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6622, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6622, + "commentStart": 0, "end": 0, "name": "doorStart", "start": 0, @@ -9759,14 +9793,14 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "+", "right": { - "commentStart": 6634, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6634, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6634, + "commentStart": 0, "end": 0, "name": "doorWidth", "start": 0, @@ -9779,7 +9813,7 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "/", "right": { - "commentStart": 6646, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9800,14 +9834,14 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "-", "right": { - "commentStart": 6651, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6651, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6651, + "commentStart": 0, "end": 0, "name": "handleWidth", "start": 0, @@ -9820,7 +9854,7 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "/", "right": { - "commentStart": 6665, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9849,26 +9883,26 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 6668, + "commentStart": 0, "declaration": { - "commentStart": 6668, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6668, + "commentStart": 0, "end": 0, "name": "handleLengthSegmentA", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6691, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6691, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6691, + "commentStart": 0, "end": 0, "name": "handleDepth", "start": 0, @@ -9882,10 +9916,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 6705, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6705, + "commentStart": 0, "end": 0, "name": "handleFillet", "start": 0, @@ -9910,26 +9944,26 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 6718, + "commentStart": 0, "declaration": { - "commentStart": 6718, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6718, + "commentStart": 0, "end": 0, "name": "handleLengthSegmentB", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6741, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6741, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6741, + "commentStart": 0, "end": 0, "name": "handleWidth", "start": 0, @@ -9942,14 +9976,14 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "-", "right": { - "commentStart": 6756, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6756, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6756, + "commentStart": 0, "end": 0, "name": "handleFillet", "start": 0, @@ -9962,7 +9996,7 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "operator": "*", "right": { - "commentStart": 6771, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9991,12 +10025,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 6773, + "commentStart": 0, "declaration": { - "commentStart": 6775, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6775, + "commentStart": 0, "end": 0, "name": "handlePlane", "start": 0, @@ -10009,7 +10043,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 6819, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -10017,10 +10051,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 6828, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6828, + "commentStart": 0, "end": 0, "name": "handleHeightAboveTheFloor", "start": 0, @@ -10035,10 +10069,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 6803, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6803, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -10048,17 +10082,17 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 6803, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 6815, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6815, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -10073,10 +10107,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 6789, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6789, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -10086,7 +10120,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 6789, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -10102,12 +10136,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 6855, + "commentStart": 0, "declaration": { - "commentStart": 6857, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6857, + "commentStart": 0, "end": 0, "name": "handleProfilePath", "start": 0, @@ -10118,13 +10152,13 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 6892, + "commentStart": 0, "elements": [ { - "commentStart": 6893, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6893, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -10138,10 +10172,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 6897, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6897, + "commentStart": 0, "end": 0, "name": "handleOffset", "start": 0, @@ -10157,7 +10191,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "BinaryExpression" }, { - "commentStart": 6911, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -10176,10 +10210,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 6915, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6915, + "commentStart": 0, "end": 0, "name": "handlePlane", "start": 0, @@ -10193,10 +10227,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 6877, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6877, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -10206,7 +10240,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 6877, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -10217,7 +10251,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 6939, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -10226,10 +10260,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 6949, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6949, + "commentStart": 0, "end": 0, "name": "handleLengthSegmentA", "start": 0, @@ -10240,7 +10274,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "Name", "type": "Name" }, - "commentStart": 6948, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10251,10 +10285,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 6933, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6933, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -10264,7 +10298,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 6933, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10274,94 +10308,97 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 6992, - "elements": [ - { - "commentStart": 7001, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 7001, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, "end": 0, - "name": { - "commentStart": 7001, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "handleFillet", + "name": { + "commentStart": 0, + "end": 0, + "name": "handleFillet", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "handleOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" }, - "path": [], "start": 0, - "type": "Name", - "type": "Name" + "type": "BinaryExpression", + "type": "BinaryExpression" }, - "operator": "+", - "right": { - "abs_path": false, - "commentStart": 7016, + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "handleDepth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, "end": 0, - "name": { - "commentStart": 7016, - "end": 0, - "name": "handleOffset", - "start": 0, - "type": "Identifier" - }, - "path": [], + "operator": "-", "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "argument": { - "abs_path": false, - "commentStart": 7038, - "end": 0, - "name": { - "commentStart": 7038, - "end": 0, - "name": "handleDepth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 7037, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 7058, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 6976, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6976, + "commentStart": 0, "end": 0, - "name": "tangentialArcTo", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -10369,18 +10406,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 6976, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 7072, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -10388,10 +10426,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 7081, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7081, + "commentStart": 0, "end": 0, "name": "handleLengthSegmentB", "start": 0, @@ -10406,10 +10444,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 7066, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7066, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -10419,7 +10457,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 7066, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10429,94 +10467,97 @@ description: Result of parsing dual-basin-utility-sink.kcl { "arguments": [ { - "commentStart": 7124, - "elements": [ - { - "commentStart": 7133, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 7133, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, "end": 0, - "name": { - "commentStart": 7133, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "handleOffset", + "name": { + "commentStart": 0, + "end": 0, + "name": "handleOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "handleWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" }, - "path": [], "start": 0, - "type": "Name", - "type": "Name" + "type": "BinaryExpression", + "type": "BinaryExpression" }, - "operator": "+", - "right": { - "abs_path": false, - "commentStart": 7148, + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "handleLengthSegmentA", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, "end": 0, - "name": { - "commentStart": 7148, - "end": 0, - "name": "handleWidth", - "start": 0, - "type": "Identifier" - }, - "path": [], + "operator": "-", "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "argument": { - "abs_path": false, - "commentStart": 7169, - "end": 0, - "name": { - "commentStart": 7169, - "end": 0, - "name": "handleLengthSegmentA", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 7168, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 7198, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 7108, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7108, + "commentStart": 0, "end": 0, - "name": "tangentialArcTo", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -10524,18 +10565,19 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 7108, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 7212, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -10543,10 +10585,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 7221, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7221, + "commentStart": 0, "end": 0, "name": "handleLengthSegmentA", "start": 0, @@ -10561,10 +10603,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 7206, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7206, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -10574,7 +10616,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 7206, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10582,7 +10624,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "unlabeled": null } ], - "commentStart": 6877, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -10598,12 +10640,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 7243, + "commentStart": 0, "declaration": { - "commentStart": 7243, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7243, + "commentStart": 0, "end": 0, "name": "handleSectionPlane", "start": 0, @@ -10613,10 +10655,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "arguments": [ { "abs_path": false, - "commentStart": 7278, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7278, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -10630,10 +10672,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 7264, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7264, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -10643,7 +10685,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 7264, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -10659,12 +10701,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 7282, + "commentStart": 0, "declaration": { - "commentStart": 7282, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7282, + "commentStart": 0, "end": 0, "name": "handleProfileSection", "start": 0, @@ -10675,21 +10717,21 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 7337, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7346, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 7352, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7352, + "commentStart": 0, "end": 0, "name": "handleOffset", "start": 0, @@ -10702,10 +10744,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, { "abs_path": false, - "commentStart": 7370, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7370, + "commentStart": 0, "end": 0, "name": "handleHeightAboveTheFloor", "start": 0, @@ -10726,14 +10768,14 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 7403, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7412, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -10748,10 +10790,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 7305, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7305, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -10761,17 +10803,17 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 7305, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 7315, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7315, + "commentStart": 0, "end": 0, "name": "handleSectionPlane", "start": 0, @@ -10793,12 +10835,12 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "VariableDeclaration" }, { - "commentStart": 7417, + "commentStart": 0, "declaration": { - "commentStart": 7417, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7417, + "commentStart": 0, "end": 0, "name": "handleBody", "start": 0, @@ -10811,7 +10853,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 7458, + "commentStart": 0, "end": 0, "name": "path", "start": 0, @@ -10819,10 +10861,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 7465, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7465, + "commentStart": 0, "end": 0, "name": "handleProfilePath", "start": 0, @@ -10837,10 +10879,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 7430, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7430, + "commentStart": 0, "end": 0, "name": "sweep", "start": 0, @@ -10850,17 +10892,17 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 7430, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 7436, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7436, + "commentStart": 0, "end": 0, "name": "handleProfileSection", "start": 0, @@ -10877,17 +10919,17 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 7505, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7512, + "commentStart": 0, "elements": [ { - "commentStart": 7513, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -10899,7 +10941,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 7516, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -10911,7 +10953,7 @@ description: Result of parsing dual-basin-utility-sink.kcl } }, { - "commentStart": 7519, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -10932,7 +10974,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 7523, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -10940,10 +10982,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 7535, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7535, + "commentStart": 0, "end": 0, "name": "doorCount", "start": 0, @@ -10958,7 +11000,7 @@ description: Result of parsing dual-basin-utility-sink.kcl { "type": "LabeledArg", "label": { - "commentStart": 7546, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -10966,10 +11008,10 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "arg": { "abs_path": false, - "commentStart": 7557, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7557, + "commentStart": 0, "end": 0, "name": "blockSubdivisionWidth", "start": 0, @@ -10984,10 +11026,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "callee": { "abs_path": false, - "commentStart": 7489, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7489, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -10997,7 +11039,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "start": 0, "type": "Name" }, - "commentStart": 7489, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11005,7 +11047,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "unlabeled": null } ], - "commentStart": 7430, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -11028,7 +11070,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 146, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -11043,10 +11085,10 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "properties": [ { - "commentStart": 155, + "commentStart": 0, "end": 0, "key": { - "commentStart": 155, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -11056,10 +11098,10 @@ description: Result of parsing dual-basin-utility-sink.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 175, + "commentStart": 0, "end": 0, "name": { - "commentStart": 175, + "commentStart": 0, "end": 0, "name": "mm", "start": 0, @@ -11080,7 +11122,7 @@ description: Result of parsing dual-basin-utility-sink.kcl "nonCodeNodes": { "2": [ { - "commentStart": 253, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11091,7 +11133,7 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "4": [ { - "commentStart": 295, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11102,7 +11144,7 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "8": [ { - "commentStart": 452, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11113,7 +11155,7 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "13": [ { - "commentStart": 660, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11124,7 +11166,7 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "16": [ { - "commentStart": 1183, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11135,7 +11177,7 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "18": [ { - "commentStart": 1729, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11146,7 +11188,7 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "23": [ { - "commentStart": 2421, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11157,7 +11199,7 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "25": [ { - "commentStart": 2964, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11168,7 +11210,7 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "26": [ { - "commentStart": 3320, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11179,7 +11221,7 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "30": [ { - "commentStart": 4107, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11190,7 +11232,7 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "37": [ { - "commentStart": 4274, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11201,7 +11243,7 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "39": [ { - "commentStart": 4707, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11212,7 +11254,7 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "47": [ { - "commentStart": 5580, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11223,7 +11265,7 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "60": [ { - "commentStart": 6773, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11234,7 +11276,7 @@ description: Result of parsing dual-basin-utility-sink.kcl ], "61": [ { - "commentStart": 6855, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11246,7 +11288,7 @@ description: Result of parsing dual-basin-utility-sink.kcl }, "startNodes": [ { - "commentStart": 178, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/ops.snap b/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/ops.snap index a52071515..2af1ad38e 100644 --- a/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/ops.snap @@ -5,7 +5,7 @@ description: Operations executed dual-basin-utility-sink.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -129,7 +129,7 @@ description: Operations executed dual-basin-utility-sink.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -284,7 +284,7 @@ description: Operations executed dual-basin-utility-sink.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -396,7 +396,7 @@ description: Operations executed dual-basin-utility-sink.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -527,7 +527,7 @@ description: Operations executed dual-basin-utility-sink.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -574,19 +574,10 @@ description: Operations executed dual-basin-utility-sink.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -594,7 +585,15 @@ description: Operations executed dual-basin-utility-sink.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -641,19 +640,10 @@ description: Operations executed dual-basin-utility-sink.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -661,7 +651,15 @@ description: Operations executed dual-basin-utility-sink.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -738,7 +736,7 @@ description: Operations executed dual-basin-utility-sink.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -893,7 +891,7 @@ description: Operations executed dual-basin-utility-sink.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -908,7 +906,7 @@ description: Operations executed dual-basin-utility-sink.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1000,7 +998,13 @@ description: Operations executed dual-basin-utility-sink.kcl "type": "Number", "value": 564.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1010,7 +1014,13 @@ description: Operations executed dual-basin-utility-sink.kcl "type": "Number", "value": 6.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] diff --git a/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/program_memory.snap index f57531f63..cf88e75e1 100644 --- a/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/program_memory.snap @@ -59,14 +59,26 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "type": "Number", "value": 564.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "blockWidth": { "type": "Number", "value": 1129.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "doorBody": { @@ -216,22 +228,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 165.0 + "z": 165.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -384,22 +408,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 165.0 + "z": 165.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -552,22 +588,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 165.0 + "z": 165.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -720,22 +768,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 165.0 + "z": 165.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -888,22 +948,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 165.0 + "z": 165.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1056,22 +1128,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 165.0 + "z": 165.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1115,7 +1199,13 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "type": "Number", "value": 6.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "doorGap": { @@ -1166,22 +1256,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 165.0 + "z": 165.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1205,7 +1307,13 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "type": "Number", "value": 547.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "floorPlane": { @@ -1217,22 +1325,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1295,22 +1415,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1401,22 +1533,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1507,22 +1651,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1613,22 +1769,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1719,22 +1887,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1825,22 +2005,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1936,14 +2128,26 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "type": "Number", "value": 80.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "handleOffset": { "type": "Number", "value": 228.75, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "handlePlane": { @@ -1955,22 +2159,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 780.0 + "z": 780.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2097,22 +2313,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 780.0 + "z": 780.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2183,22 +2411,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2238,22 +2478,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2420,22 +2672,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2588,22 +2852,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2756,22 +3032,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2924,22 +3212,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3092,22 +3392,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3260,22 +3572,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3428,22 +3752,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3596,22 +3932,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3824,22 +4172,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 150.0 + "z": 150.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3992,22 +4352,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 150.0 + "z": 150.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4160,22 +4532,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 150.0 + "z": 150.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4328,22 +4712,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 150.0 + "z": 150.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4496,22 +4892,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 150.0 + "z": 150.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4664,22 +5072,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 150.0 + "z": 150.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4866,22 +5286,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 150.0 + "z": 150.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5034,22 +5466,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 150.0 + "z": 150.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5106,7 +5550,13 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "type": "Number", "value": 1116.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "lowerBeltLengthY": { @@ -5131,22 +5581,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 150.0 + "z": 150.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5313,22 +5775,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 165.0 + "z": 165.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5481,22 +5955,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 165.0 + "z": 165.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5540,7 +6026,13 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "type": "Number", "value": 7.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "panelSpacing": { @@ -5560,7 +6052,13 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "type": "Number", "value": 370.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "pillarBody": { @@ -5710,22 +6208,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 163.0 + "z": 163.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5878,22 +6388,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 163.0 + "z": 163.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6046,22 +6568,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 163.0 + "z": 163.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6214,22 +6748,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 163.0 + "z": 163.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6382,22 +6928,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 163.0 + "z": 163.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6550,22 +7108,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 163.0 + "z": 163.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6627,22 +7197,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 163.0 + "z": 163.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6822,17 +7404,26 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -6976,22 +7567,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 850.0 + "z": 850.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7208,17 +7811,26 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -7362,22 +7974,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 850.0 + "z": 850.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7599,17 +8223,26 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -7753,22 +8386,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 850.0 + "z": 850.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7985,17 +8630,26 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -8139,22 +8793,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 850.0 + "z": 850.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8303,17 +8969,26 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -8457,22 +9132,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 850.0 + "z": 850.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8523,17 +9210,26 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -8677,22 +9373,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 850.0 + "z": 850.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8738,7 +9446,13 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "type": "Number", "value": 1700.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sinkWidth": { @@ -8924,22 +9638,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 850.0 + "z": 850.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8986,22 +9712,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 850.0 + "z": 850.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9168,22 +9906,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 847.5 + "z": 847.5, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9336,22 +10086,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 847.5 + "z": 847.5, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9538,22 +10300,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 847.5 + "z": 847.5, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9706,22 +10480,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 847.5 + "z": 847.5, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9783,22 +10569,34 @@ description: Variables in memory after executing dual-basin-utility-sink.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 847.5 + "z": 847.5, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/rendered_model.png index 90e6bab66..ac38d909f 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/dual-basin-utility-sink/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/enclosure/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/enclosure/artifact_commands.snap index 334e24779..658d6165d 100644 --- a/rust/kcl-lib/tests/kcl_samples/enclosure/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/enclosure/artifact_commands.snap @@ -204,7 +204,8 @@ description: Artifact commands enclosure.kcl "type": "extrude", "target": "[uuid]", "distance": 70.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -630,7 +631,8 @@ description: Artifact commands enclosure.kcl "type": "extrude", "target": "[uuid]", "distance": 67.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -915,7 +917,8 @@ description: Artifact commands enclosure.kcl "type": "extrude", "target": "[uuid]", "distance": 67.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1200,7 +1203,8 @@ description: Artifact commands enclosure.kcl "type": "extrude", "target": "[uuid]", "distance": 67.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1485,7 +1489,8 @@ description: Artifact commands enclosure.kcl "type": "extrude", "target": "[uuid]", "distance": 67.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2095,7 +2100,8 @@ description: Artifact commands enclosure.kcl "type": "extrude", "target": "[uuid]", "distance": 3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2864,7 +2870,8 @@ description: Artifact commands enclosure.kcl "type": "extrude", "target": "[uuid]", "distance": 3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/enclosure/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/enclosure/artifact_graph_flowchart.snap.md index 0356ab2e6..21bb08186 100644 --- a/rust/kcl-lib/tests/kcl_samples/enclosure/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/enclosure/artifact_graph_flowchart.snap.md @@ -2,113 +2,113 @@ flowchart LR subgraph path2 [Path] 2["Path
[287, 312, 0]"] - 3["Segment
[318, 366, 0]"] - 4["Segment
[372, 474, 0]"] - 5["Segment
[480, 600, 0]"] - 6["Segment
[606, 691, 0]"] - 7["Segment
[697, 704, 0]"] + 3["Segment
[318, 384, 0]"] + 4["Segment
[390, 489, 0]"] + 5["Segment
[495, 612, 0]"] + 6["Segment
[618, 703, 0]"] + 7["Segment
[709, 716, 0]"] 8[Solid2d] end subgraph path29 [Path] - 29["Path
[1615, 1698, 0]"] - 30["Segment
[1615, 1698, 0]"] + 29["Path
[1597, 1680, 0]"] + 30["Segment
[1597, 1680, 0]"] 31[Solid2d] end subgraph path32 [Path] - 32["Path
[1711, 1778, 0]"] - 33["Segment
[1711, 1778, 0]"] + 32["Path
[1693, 1760, 0]"] + 33["Segment
[1693, 1760, 0]"] 34[Solid2d] end subgraph path42 [Path] - 42["Path
[1615, 1698, 0]"] - 43["Segment
[1615, 1698, 0]"] + 42["Path
[1597, 1680, 0]"] + 43["Segment
[1597, 1680, 0]"] 44[Solid2d] end subgraph path45 [Path] - 45["Path
[1711, 1778, 0]"] - 46["Segment
[1711, 1778, 0]"] + 45["Path
[1693, 1760, 0]"] + 46["Segment
[1693, 1760, 0]"] 47[Solid2d] end subgraph path55 [Path] - 55["Path
[1615, 1698, 0]"] - 56["Segment
[1615, 1698, 0]"] + 55["Path
[1597, 1680, 0]"] + 56["Segment
[1597, 1680, 0]"] 57[Solid2d] end subgraph path58 [Path] - 58["Path
[1711, 1778, 0]"] - 59["Segment
[1711, 1778, 0]"] + 58["Path
[1693, 1760, 0]"] + 59["Segment
[1693, 1760, 0]"] 60[Solid2d] end subgraph path68 [Path] - 68["Path
[1615, 1698, 0]"] - 69["Segment
[1615, 1698, 0]"] + 68["Path
[1597, 1680, 0]"] + 69["Segment
[1597, 1680, 0]"] 70[Solid2d] end subgraph path71 [Path] - 71["Path
[1711, 1778, 0]"] - 72["Segment
[1711, 1778, 0]"] + 71["Path
[1693, 1760, 0]"] + 72["Segment
[1693, 1760, 0]"] 73[Solid2d] end subgraph path81 [Path] - 81["Path
[2349, 2384, 0]"] - 82["Segment
[2390, 2438, 0]"] - 83["Segment
[2444, 2546, 0]"] - 84["Segment
[2552, 2672, 0]"] - 85["Segment
[2678, 2763, 0]"] - 86["Segment
[2769, 2776, 0]"] + 81["Path
[2331, 2366, 0]"] + 82["Segment
[2372, 2438, 0]"] + 83["Segment
[2444, 2543, 0]"] + 84["Segment
[2549, 2666, 0]"] + 85["Segment
[2672, 2757, 0]"] + 86["Segment
[2763, 2770, 0]"] 87[Solid2d] end subgraph path88 [Path] - 88["Path
[2787, 2943, 0]"] - 89["Segment
[2787, 2943, 0]"] + 88["Path
[2781, 2937, 0]"] + 89["Segment
[2781, 2937, 0]"] 90[Solid2d] end subgraph path91 [Path] - 91["Path
[2958, 3125, 0]"] - 92["Segment
[2958, 3125, 0]"] + 91["Path
[2952, 3119, 0]"] + 92["Segment
[2952, 3119, 0]"] 93[Solid2d] end subgraph path94 [Path] - 94["Path
[3140, 3298, 0]"] - 95["Segment
[3140, 3298, 0]"] + 94["Path
[3134, 3292, 0]"] + 95["Segment
[3134, 3292, 0]"] 96[Solid2d] end subgraph path97 [Path] - 97["Path
[3313, 3482, 0]"] - 98["Segment
[3313, 3482, 0]"] + 97["Path
[3307, 3476, 0]"] + 98["Segment
[3307, 3476, 0]"] 99[Solid2d] end subgraph path119 [Path] - 119["Path
[3923, 4007, 0]"] - 120["Segment
[4013, 4083, 0]"] - 121["Segment
[4089, 4213, 0]"] - 122["Segment
[4219, 4339, 0]"] - 123["Segment
[4345, 4430, 0]"] - 124["Segment
[4436, 4443, 0]"] + 119["Path
[3922, 4006, 0]"] + 120["Segment
[4012, 4100, 0]"] + 121["Segment
[4106, 4227, 0]"] + 122["Segment
[4233, 4350, 0]"] + 123["Segment
[4356, 4441, 0]"] + 124["Segment
[4447, 4454, 0]"] 125[Solid2d] end subgraph path126 [Path] - 126["Path
[4454, 4626, 0]"] - 127["Segment
[4454, 4626, 0]"] + 126["Path
[4465, 4637, 0]"] + 127["Segment
[4465, 4637, 0]"] 128[Solid2d] end subgraph path129 [Path] - 129["Path
[4641, 4824, 0]"] - 130["Segment
[4641, 4824, 0]"] + 129["Path
[4652, 4835, 0]"] + 130["Segment
[4652, 4835, 0]"] 131[Solid2d] end subgraph path132 [Path] - 132["Path
[4839, 5013, 0]"] - 133["Segment
[4839, 5013, 0]"] + 132["Path
[4850, 5024, 0]"] + 133["Segment
[4850, 5024, 0]"] 134[Solid2d] end subgraph path135 [Path] - 135["Path
[5028, 5213, 0]"] - 136["Segment
[5028, 5213, 0]"] + 135["Path
[5039, 5224, 0]"] + 136["Segment
[5039, 5224, 0]"] 137[Solid2d] end 1["Plane
[264, 281, 0]"] - 9["Sweep Extrusion
[718, 753, 0]"] + 9["Sweep Extrusion
[730, 765, 0]"] 10[Wall] 11[Wall] 12[Wall] @@ -123,40 +123,40 @@ flowchart LR 21["SweepEdge Adjacent"] 22["SweepEdge Opposite"] 23["SweepEdge Adjacent"] - 24["EdgeCut Fillet
[759, 1041, 0]"] - 25["EdgeCut Fillet
[759, 1041, 0]"] - 26["EdgeCut Fillet
[759, 1041, 0]"] - 27["EdgeCut Fillet
[759, 1041, 0]"] - 28["Plane
[1584, 1607, 0]"] - 35["Sweep Extrusion
[1798, 1849, 0]"] + 24["EdgeCut Fillet
[771, 1053, 0]"] + 25["EdgeCut Fillet
[771, 1053, 0]"] + 26["EdgeCut Fillet
[771, 1053, 0]"] + 27["EdgeCut Fillet
[771, 1053, 0]"] + 28["Plane
[1566, 1589, 0]"] + 35["Sweep Extrusion
[1780, 1831, 0]"] 36[Wall] 37["Cap Start"] 38["Cap End"] 39["SweepEdge Opposite"] 40["SweepEdge Adjacent"] - 41["Plane
[1584, 1607, 0]"] - 48["Sweep Extrusion
[1798, 1849, 0]"] + 41["Plane
[1566, 1589, 0]"] + 48["Sweep Extrusion
[1780, 1831, 0]"] 49[Wall] 50["Cap Start"] 51["Cap End"] 52["SweepEdge Opposite"] 53["SweepEdge Adjacent"] - 54["Plane
[1584, 1607, 0]"] - 61["Sweep Extrusion
[1798, 1849, 0]"] + 54["Plane
[1566, 1589, 0]"] + 61["Sweep Extrusion
[1780, 1831, 0]"] 62[Wall] 63["Cap Start"] 64["Cap End"] 65["SweepEdge Opposite"] 66["SweepEdge Adjacent"] - 67["Plane
[1584, 1607, 0]"] - 74["Sweep Extrusion
[1798, 1849, 0]"] + 67["Plane
[1566, 1589, 0]"] + 74["Sweep Extrusion
[1780, 1831, 0]"] 75[Wall] 76["Cap Start"] 77["Cap End"] 78["SweepEdge Opposite"] 79["SweepEdge Adjacent"] - 80["Plane
[2326, 2343, 0]"] - 100["Sweep Extrusion
[3500, 3542, 0]"] + 80["Plane
[2308, 2325, 0]"] + 100["Sweep Extrusion
[3494, 3536, 0]"] 101[Wall] 102[Wall] 103[Wall] @@ -171,11 +171,11 @@ flowchart LR 112["SweepEdge Adjacent"] 113["SweepEdge Opposite"] 114["SweepEdge Adjacent"] - 115["EdgeCut Fillet
[3548, 3830, 0]"] - 116["EdgeCut Fillet
[3548, 3830, 0]"] - 117["EdgeCut Fillet
[3548, 3830, 0]"] - 118["EdgeCut Fillet
[3548, 3830, 0]"] - 138["Sweep Extrusion
[5231, 5273, 0]"] + 115["EdgeCut Fillet
[3542, 3824, 0]"] + 116["EdgeCut Fillet
[3542, 3824, 0]"] + 117["EdgeCut Fillet
[3542, 3824, 0]"] + 118["EdgeCut Fillet
[3542, 3824, 0]"] + 138["Sweep Extrusion
[5242, 5284, 0]"] 139[Wall] 140[Wall] 141[Wall] @@ -190,11 +190,11 @@ flowchart LR 150["SweepEdge Adjacent"] 151["SweepEdge Opposite"] 152["SweepEdge Adjacent"] - 153["EdgeCut Fillet
[5279, 5561, 0]"] - 154["EdgeCut Fillet
[5279, 5561, 0]"] - 155["EdgeCut Fillet
[5279, 5561, 0]"] - 156["EdgeCut Fillet
[5279, 5561, 0]"] - 157["StartSketchOnFace
[3885, 3917, 0]"] + 153["EdgeCut Fillet
[5290, 5572, 0]"] + 154["EdgeCut Fillet
[5290, 5572, 0]"] + 155["EdgeCut Fillet
[5290, 5572, 0]"] + 156["EdgeCut Fillet
[5290, 5572, 0]"] + 157["StartSketchOnFace
[3879, 3916, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/enclosure/ast.snap b/rust/kcl-lib/tests/kcl_samples/enclosure/ast.snap index 7f16e0e1d..a894c43e6 100644 --- a/rust/kcl-lib/tests/kcl_samples/enclosure/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/enclosure/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing enclosure.kcl "Ok": { "body": [ { - "commentStart": 115, + "commentStart": 0, "declaration": { - "commentStart": 138, + "commentStart": 0, "end": 0, "id": { - "commentStart": 138, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 147, + "commentStart": 0, "end": 0, "raw": "175", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing enclosure.kcl "type": "VariableDeclaration" }, { - "commentStart": 151, + "commentStart": 0, "declaration": { - "commentStart": 151, + "commentStart": 0, "end": 0, "id": { - "commentStart": 151, + "commentStart": 0, "end": 0, "name": "width", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 159, + "commentStart": 0, "end": 0, "raw": "125", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing enclosure.kcl "type": "VariableDeclaration" }, { - "commentStart": 163, + "commentStart": 0, "declaration": { - "commentStart": 163, + "commentStart": 0, "end": 0, "id": { - "commentStart": 163, + "commentStart": 0, "end": 0, "name": "height", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 172, + "commentStart": 0, "end": 0, "raw": "70", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing enclosure.kcl "type": "VariableDeclaration" }, { - "commentStart": 175, + "commentStart": 0, "declaration": { - "commentStart": 175, + "commentStart": 0, "end": 0, "id": { - "commentStart": 175, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 191, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing enclosure.kcl "type": "VariableDeclaration" }, { - "commentStart": 193, + "commentStart": 0, "declaration": { - "commentStart": 193, + "commentStart": 0, "end": 0, "id": { - "commentStart": 193, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 203, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -174,12 +174,12 @@ description: Result of parsing enclosure.kcl "type": "VariableDeclaration" }, { - "commentStart": 204, + "commentStart": 0, "declaration": { - "commentStart": 252, + "commentStart": 0, "end": 0, "id": { - "commentStart": 252, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -191,10 +191,10 @@ description: Result of parsing enclosure.kcl "arguments": [ { "abs_path": false, - "commentStart": 278, + "commentStart": 0, "end": 0, "name": { - "commentStart": 278, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -208,10 +208,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 264, + "commentStart": 0, "end": 0, "name": { - "commentStart": 264, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -221,7 +221,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 264, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -230,10 +230,10 @@ description: Result of parsing enclosure.kcl { "arguments": [ { - "commentStart": 302, + "commentStart": 0, "elements": [ { - "commentStart": 303, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -245,7 +245,7 @@ description: Result of parsing enclosure.kcl } }, { - "commentStart": 306, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -263,7 +263,7 @@ description: Result of parsing enclosure.kcl "type": "ArrayExpression" }, { - "commentStart": 310, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -272,10 +272,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 287, + "commentStart": 0, "end": 0, "name": { - "commentStart": 287, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -285,7 +285,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 287, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -294,64 +294,78 @@ description: Result of parsing enclosure.kcl { "arguments": [ { - "commentStart": 329, - "elements": [ - { - "commentStart": 330, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "abs_path": false, - "commentStart": 333, - "end": 0, - "name": { - "commentStart": 333, - "end": 0, - "name": "width", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 341, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 344, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA001" + } } ], "callee": { "abs_path": false, - "commentStart": 318, + "commentStart": 0, "end": 0, "name": { - "commentStart": 318, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -361,149 +375,35 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 318, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 383, - "elements": [ - { - "commentStart": 392, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 399, - "end": 0, - "name": { - "commentStart": 399, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 392, - "end": 0, - "name": { - "commentStart": 392, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 392, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "+", - "right": { - "commentStart": 423, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "abs_path": false, - "commentStart": 434, - "end": 0, - "name": { - "commentStart": 434, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 449, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 452, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentB001" - } - ], - "callee": { - "abs_path": false, - "commentStart": 372, - "end": 0, - "name": { - "commentStart": 372, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 372, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 491, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 507, + "commentStart": 0, "end": 0, "name": { - "commentStart": 507, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA001", "start": 0, @@ -517,10 +417,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 500, + "commentStart": 0, "end": 0, "name": { - "commentStart": 500, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -530,88 +430,81 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 500, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 545, - "end": 0, - "name": { - "commentStart": 545, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 538, - "end": 0, - "name": { - "commentStart": 538, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 538, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 537, + "operator": "+", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 575, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 578, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentC001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentB001" + } } ], "callee": { "abs_path": false, - "commentStart": 480, + "commentStart": 0, "end": 0, "name": { - "commentStart": 480, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -621,30 +514,182 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 480, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 611, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentC001" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 625, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 640, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -653,10 +698,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 626, + "commentStart": 0, "end": 0, "name": { - "commentStart": 626, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -666,7 +711,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 626, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -675,7 +720,7 @@ description: Result of parsing enclosure.kcl { "arguments": [ { - "commentStart": 658, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -684,10 +729,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 644, + "commentStart": 0, "end": 0, "name": { - "commentStart": 644, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -697,7 +742,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 644, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -713,14 +758,14 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 663, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 669, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -731,10 +776,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 606, + "commentStart": 0, "end": 0, "name": { - "commentStart": 606, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -744,7 +789,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 606, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -755,10 +800,10 @@ description: Result of parsing enclosure.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 697, + "commentStart": 0, "end": 0, "name": { - "commentStart": 697, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -768,14 +813,14 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 697, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 264, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -796,12 +841,12 @@ description: Result of parsing enclosure.kcl "type": "VariableDeclaration" }, { - "commentStart": 705, + "commentStart": 0, "declaration": { - "commentStart": 705, + "commentStart": 0, "end": 0, "id": { - "commentStart": 705, + "commentStart": 0, "end": 0, "name": "extrude001", "start": 0, @@ -814,7 +859,7 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 737, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -822,10 +867,10 @@ description: Result of parsing enclosure.kcl }, "arg": { "abs_path": false, - "commentStart": 746, + "commentStart": 0, "end": 0, "name": { - "commentStart": 746, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -840,10 +885,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 718, + "commentStart": 0, "end": 0, "name": { - "commentStart": 718, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -853,17 +898,17 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 718, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 726, + "commentStart": 0, "end": 0, "name": { - "commentStart": 726, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -880,21 +925,21 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 774, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 783, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 783, + "commentStart": 0, "end": 0, "name": { - "commentStart": 783, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -907,7 +952,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 799, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -926,23 +971,23 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 809, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 816, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 847, + "commentStart": 0, "end": 0, "name": { - "commentStart": 847, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA001", "start": 0, @@ -956,10 +1001,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 827, + "commentStart": 0, "end": 0, "name": { - "commentStart": 827, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -969,7 +1014,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 827, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -979,10 +1024,10 @@ description: Result of parsing enclosure.kcl "arguments": [ { "abs_path": false, - "commentStart": 899, + "commentStart": 0, "end": 0, "name": { - "commentStart": 899, + "commentStart": 0, "end": 0, "name": "rectangleSegmentB001", "start": 0, @@ -996,10 +1041,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 879, + "commentStart": 0, "end": 0, "name": { - "commentStart": 879, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -1009,7 +1054,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 879, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1019,10 +1064,10 @@ description: Result of parsing enclosure.kcl "arguments": [ { "abs_path": false, - "commentStart": 951, + "commentStart": 0, "end": 0, "name": { - "commentStart": 951, + "commentStart": 0, "end": 0, "name": "rectangleSegmentC001", "start": 0, @@ -1036,10 +1081,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 931, + "commentStart": 0, "end": 0, "name": { - "commentStart": 931, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -1049,7 +1094,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 931, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1059,10 +1104,10 @@ description: Result of parsing enclosure.kcl "arguments": [ { "abs_path": false, - "commentStart": 1003, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1003, + "commentStart": 0, "end": 0, "name": "rectangleSegmentD001", "start": 0, @@ -1076,10 +1121,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 983, + "commentStart": 0, "end": 0, "name": { - "commentStart": 983, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -1089,7 +1134,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 983, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1105,10 +1150,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 759, + "commentStart": 0, "end": 0, "name": { - "commentStart": 759, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -1118,7 +1163,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 759, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1130,23 +1175,30 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 1126, + "commentStart": 0, "end": 0, "name": "faces", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1134, + "commentStart": 0, "elements": [ { - "commentStart": 1135, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "\"end\"", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "end" + "type": "Name", + "type": "Name" } ], "end": 0, @@ -1158,7 +1210,7 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 1143, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -1166,10 +1218,10 @@ description: Result of parsing enclosure.kcl }, "arg": { "abs_path": false, - "commentStart": 1155, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1155, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -1184,10 +1236,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 1120, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1120, + "commentStart": 0, "end": 0, "name": "shell", "start": 0, @@ -1197,7 +1249,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 1120, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1205,13 +1257,13 @@ description: Result of parsing enclosure.kcl "unlabeled": null } ], - "commentStart": 718, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 1043, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1224,7 +1276,7 @@ description: Result of parsing enclosure.kcl ], "2": [ { - "commentStart": 1169, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1252,12 +1304,12 @@ description: Result of parsing enclosure.kcl "type": "VariableDeclaration" }, { - "commentStart": 1261, + "commentStart": 0, "declaration": { - "commentStart": 1264, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1264, + "commentStart": 0, "end": 0, "name": "function001", "start": 0, @@ -1267,277 +1319,255 @@ description: Result of parsing enclosure.kcl "body": { "body": [ { - "commentStart": 1290, + "commentStart": 0, "declaration": { - "commentStart": 1341, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1341, + "commentStart": 0, "end": 0, "name": "plane001", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1352, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1358, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1358, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1366, + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], "end": 0, - "properties": [ + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "xAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ { - "commentStart": 1374, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1374, - "end": 0, - "name": "origin", - "start": 0, - "type": "Identifier" - }, + "raw": "1.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1383, - "elements": [ - { - "commentStart": 1384, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 1389, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "abs_path": false, - "commentStart": 1394, - "end": 0, - "name": { - "commentStart": 1394, - "end": 0, - "name": "wallThickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 1.0, + "suffix": "None" } }, { - "commentStart": 1416, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1416, - "end": 0, - "name": "xAxis", - "start": 0, - "type": "Identifier" - }, + "raw": "0.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1424, - "elements": [ - { - "commentStart": 1425, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 1430, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 1435, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.0, + "suffix": "None" } }, { - "commentStart": 1447, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1447, - "end": 0, - "name": "yAxis", - "start": 0, - "type": "Identifier" - }, + "raw": "0.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1455, - "elements": [ - { - "commentStart": 1456, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 1461, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 1466, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - }, - { - "commentStart": 1478, - "end": 0, - "key": { - "commentStart": 1478, - "end": 0, - "name": "zAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1486, - "elements": [ - { - "commentStart": 1487, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 1492, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 1497, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.0, + "suffix": "None" } } ], + "end": 0, "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" } } ], @@ -1558,12 +1588,12 @@ description: Result of parsing enclosure.kcl "type": "VariableDeclaration" }, { - "commentStart": 1513, + "commentStart": 0, "declaration": { - "commentStart": 1572, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1572, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -1575,10 +1605,10 @@ description: Result of parsing enclosure.kcl "arguments": [ { "abs_path": false, - "commentStart": 1598, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1598, + "commentStart": 0, "end": 0, "name": "plane001", "start": 0, @@ -1592,10 +1622,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 1584, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1584, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1605,7 +1635,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 1584, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1616,21 +1646,21 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 1622, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1631, + "commentStart": 0, "elements": [ { - "commentStart": 1632, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1632, + "commentStart": 0, "end": 0, "name": "originStart", "start": 0, @@ -1638,7 +1668,7 @@ description: Result of parsing enclosure.kcl "type": "Identifier" }, "property": { - "commentStart": 1644, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1654,11 +1684,11 @@ description: Result of parsing enclosure.kcl "type": "MemberExpression" }, { - "commentStart": 1648, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1648, + "commentStart": 0, "end": 0, "name": "originStart", "start": 0, @@ -1666,7 +1696,7 @@ description: Result of parsing enclosure.kcl "type": "Identifier" }, "property": { - "commentStart": 1660, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1691,21 +1721,21 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 1665, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1674, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1674, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1674, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -1719,10 +1749,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1684, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1684, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -1741,10 +1771,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 1615, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1615, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1754,7 +1784,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 1615, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1768,21 +1798,21 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 1718, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1727, + "commentStart": 0, "elements": [ { - "commentStart": 1728, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1728, + "commentStart": 0, "end": 0, "name": "originStart", "start": 0, @@ -1790,7 +1820,7 @@ description: Result of parsing enclosure.kcl "type": "Identifier" }, "property": { - "commentStart": 1740, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1806,11 +1836,11 @@ description: Result of parsing enclosure.kcl "type": "MemberExpression" }, { - "commentStart": 1744, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1744, + "commentStart": 0, "end": 0, "name": "originStart", "start": 0, @@ -1818,7 +1848,7 @@ description: Result of parsing enclosure.kcl "type": "Identifier" }, "property": { - "commentStart": 1756, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1843,7 +1873,7 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 1761, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -1851,10 +1881,10 @@ description: Result of parsing enclosure.kcl }, "arg": { "abs_path": false, - "commentStart": 1770, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1770, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -1869,10 +1899,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 1711, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1711, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1882,7 +1912,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 1711, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1890,7 +1920,7 @@ description: Result of parsing enclosure.kcl "unlabeled": null }, { - "commentStart": 1780, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1899,10 +1929,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 1706, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1706, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -1912,14 +1942,14 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 1706, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1584, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1940,12 +1970,12 @@ description: Result of parsing enclosure.kcl "type": "VariableDeclaration" }, { - "commentStart": 1785, + "commentStart": 0, "declaration": { - "commentStart": 1785, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1785, + "commentStart": 0, "end": 0, "name": "extrude002", "start": 0, @@ -1956,21 +1986,21 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 1817, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1826, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1826, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1826, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -1984,10 +2014,10 @@ description: Result of parsing enclosure.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1835, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1835, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -2006,10 +2036,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 1798, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1798, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2019,17 +2049,17 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 1798, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1806, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1806, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -2053,10 +2083,10 @@ description: Result of parsing enclosure.kcl { "argument": { "abs_path": false, - "commentStart": 1860, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1860, + "commentStart": 0, "end": 0, "name": "extrude002", "start": 0, @@ -2067,20 +2097,20 @@ description: Result of parsing enclosure.kcl "type": "Name", "type": "Name" }, - "commentStart": 1849, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 1290, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "commentStart": 1849, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2094,13 +2124,13 @@ description: Result of parsing enclosure.kcl }, "start": 0 }, - "commentStart": 1275, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 1276, + "commentStart": 0, "end": 0, "name": "originStart", "start": 0, @@ -2122,25 +2152,25 @@ description: Result of parsing enclosure.kcl "type": "VariableDeclaration" }, { - "commentStart": 1872, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 1930, + "commentStart": 0, "elements": [ { - "commentStart": 1934, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1934, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1934, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1934, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -2153,7 +2183,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 1950, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -2171,10 +2201,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1954, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1954, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -2190,17 +2220,17 @@ description: Result of parsing enclosure.kcl "type": "BinaryExpression" }, { - "commentStart": 1965, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1965, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1965, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1965, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -2213,7 +2243,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 1981, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -2231,10 +2261,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1985, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1985, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -2258,10 +2288,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 1918, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1918, + "commentStart": 0, "end": 0, "name": "function001", "start": 0, @@ -2271,7 +2301,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 1918, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2287,25 +2317,25 @@ description: Result of parsing enclosure.kcl "type": "ExpressionStatement" }, { - "commentStart": 1996, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 2008, + "commentStart": 0, "elements": [ { - "commentStart": 2012, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2012, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2012, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2012, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -2318,7 +2348,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 2028, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -2336,10 +2366,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2032, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2032, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -2355,14 +2385,14 @@ description: Result of parsing enclosure.kcl "type": "BinaryExpression" }, { - "commentStart": 2043, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2043, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2043, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2375,17 +2405,17 @@ description: Result of parsing enclosure.kcl }, "operator": "-", "right": { - "commentStart": 2053, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2053, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2053, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2053, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -2398,7 +2428,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 2069, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -2416,10 +2446,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2073, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2073, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -2447,10 +2477,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 1996, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1996, + "commentStart": 0, "end": 0, "name": "function001", "start": 0, @@ -2460,7 +2490,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 1996, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2471,22 +2501,22 @@ description: Result of parsing enclosure.kcl "type": "ExpressionStatement" }, { - "commentStart": 2085, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 2097, + "commentStart": 0, "elements": [ { - "commentStart": 2101, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2101, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -2499,17 +2529,17 @@ description: Result of parsing enclosure.kcl }, "operator": "-", "right": { - "commentStart": 2110, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2110, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2110, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2110, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -2522,7 +2552,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 2126, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -2540,10 +2570,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2130, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2130, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -2563,17 +2593,17 @@ description: Result of parsing enclosure.kcl "type": "BinaryExpression" }, { - "commentStart": 2142, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2142, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2142, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2142, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -2586,7 +2616,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 2158, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -2604,10 +2634,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2162, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2162, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -2631,10 +2661,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 2085, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2085, + "commentStart": 0, "end": 0, "name": "function001", "start": 0, @@ -2644,7 +2674,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 2085, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2655,22 +2685,22 @@ description: Result of parsing enclosure.kcl "type": "ExpressionStatement" }, { - "commentStart": 2173, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 2185, + "commentStart": 0, "elements": [ { - "commentStart": 2189, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2189, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2189, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -2683,17 +2713,17 @@ description: Result of parsing enclosure.kcl }, "operator": "-", "right": { - "commentStart": 2198, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2198, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2198, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2198, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -2706,7 +2736,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 2214, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -2724,10 +2754,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2218, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2218, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -2747,14 +2777,14 @@ description: Result of parsing enclosure.kcl "type": "BinaryExpression" }, { - "commentStart": 2230, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2230, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2230, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2767,17 +2797,17 @@ description: Result of parsing enclosure.kcl }, "operator": "-", "right": { - "commentStart": 2240, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2240, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2240, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2240, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -2790,7 +2820,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 2256, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -2808,10 +2838,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2260, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2260, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -2839,10 +2869,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 2173, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2173, + "commentStart": 0, "end": 0, "name": "function001", "start": 0, @@ -2852,7 +2882,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 2173, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2863,12 +2893,12 @@ description: Result of parsing enclosure.kcl "type": "ExpressionStatement" }, { - "commentStart": 2271, + "commentStart": 0, "declaration": { - "commentStart": 2314, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2314, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -2880,10 +2910,10 @@ description: Result of parsing enclosure.kcl "arguments": [ { "abs_path": false, - "commentStart": 2340, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2340, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -2897,10 +2927,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 2326, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2326, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2910,7 +2940,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 2326, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2919,17 +2949,17 @@ description: Result of parsing enclosure.kcl { "arguments": [ { - "commentStart": 2364, + "commentStart": 0, "elements": [ { - "commentStart": 2365, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2365, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2365, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -2942,7 +2972,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 2373, + "commentStart": 0, "end": 0, "raw": "1.2", "start": 0, @@ -2958,7 +2988,7 @@ description: Result of parsing enclosure.kcl "type": "BinaryExpression" }, { - "commentStart": 2378, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2976,7 +3006,7 @@ description: Result of parsing enclosure.kcl "type": "ArrayExpression" }, { - "commentStart": 2382, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2985,10 +3015,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 2349, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2349, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2998,7 +3028,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 2349, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3007,64 +3037,78 @@ description: Result of parsing enclosure.kcl { "arguments": [ { - "commentStart": 2401, - "elements": [ - { - "commentStart": 2402, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "abs_path": false, - "commentStart": 2405, - "end": 0, - "name": { - "commentStart": 2405, - "end": 0, - "name": "width", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 2413, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 2416, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA002" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA002" + } } ], "callee": { "abs_path": false, - "commentStart": 2390, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2390, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -3074,149 +3118,35 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 2390, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 2455, - "elements": [ - { - "commentStart": 2464, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 2471, - "end": 0, - "name": { - "commentStart": 2471, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2464, - "end": 0, - "name": { - "commentStart": 2464, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2464, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "+", - "right": { - "commentStart": 2495, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "abs_path": false, - "commentStart": 2506, - "end": 0, - "name": { - "commentStart": 2506, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2521, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 2524, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentB002" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2444, - "end": 0, - "name": { - "commentStart": 2444, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2444, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2563, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 2579, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2579, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA001", "start": 0, @@ -3230,10 +3160,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 2572, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2572, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -3243,88 +3173,81 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 2572, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 2617, - "end": 0, - "name": { - "commentStart": 2617, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2610, - "end": 0, - "name": { - "commentStart": 2610, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2610, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 2609, + "operator": "+", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 2647, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 2650, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentC002" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentB002" + } } ], "callee": { "abs_path": false, - "commentStart": 2552, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2552, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -3334,30 +3257,182 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 2552, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2683, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentC002" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2697, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 2712, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3366,10 +3441,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 2698, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2698, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -3379,7 +3454,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 2698, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3388,7 +3463,7 @@ description: Result of parsing enclosure.kcl { "arguments": [ { - "commentStart": 2730, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3397,10 +3472,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 2716, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2716, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -3410,7 +3485,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 2716, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3426,14 +3501,14 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 2735, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2741, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3444,10 +3519,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 2678, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2678, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3457,7 +3532,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 2678, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3468,10 +3543,10 @@ description: Result of parsing enclosure.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2769, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2769, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -3481,7 +3556,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 2769, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3494,30 +3569,30 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 2802, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2811, + "commentStart": 0, "elements": [ { - "commentStart": 2822, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2822, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2822, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2822, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2822, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -3530,7 +3605,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 2830, + "commentStart": 0, "end": 0, "raw": "1.2", "start": 0, @@ -3547,14 +3622,14 @@ description: Result of parsing enclosure.kcl }, "operator": "+", "right": { - "commentStart": 2836, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2836, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2836, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -3567,7 +3642,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 2852, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -3589,10 +3664,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2856, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2856, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -3608,17 +3683,17 @@ description: Result of parsing enclosure.kcl "type": "BinaryExpression" }, { - "commentStart": 2874, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2874, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2874, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2874, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -3631,7 +3706,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 2890, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -3649,10 +3724,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2894, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2894, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -3677,7 +3752,7 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 2919, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -3685,10 +3760,10 @@ description: Result of parsing enclosure.kcl }, "arg": { "abs_path": false, - "commentStart": 2928, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2928, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -3703,10 +3778,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 2787, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2787, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -3716,7 +3791,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 2787, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3724,7 +3799,7 @@ description: Result of parsing enclosure.kcl "unlabeled": null }, { - "commentStart": 2945, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3733,10 +3808,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 2782, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2782, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -3746,7 +3821,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 2782, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3759,30 +3834,30 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 2973, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2982, + "commentStart": 0, "elements": [ { - "commentStart": 2993, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2993, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2993, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2993, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2993, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -3795,7 +3870,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 3001, + "commentStart": 0, "end": 0, "raw": "1.2", "start": 0, @@ -3812,14 +3887,14 @@ description: Result of parsing enclosure.kcl }, "operator": "+", "right": { - "commentStart": 3007, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3007, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3007, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -3832,7 +3907,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 3023, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -3854,10 +3929,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3027, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3027, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -3873,14 +3948,14 @@ description: Result of parsing enclosure.kcl "type": "BinaryExpression" }, { - "commentStart": 3045, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3045, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3045, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3893,17 +3968,17 @@ description: Result of parsing enclosure.kcl }, "operator": "-", "right": { - "commentStart": 3055, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3055, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3055, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3055, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -3916,7 +3991,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 3071, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -3934,10 +4009,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3075, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3075, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -3966,7 +4041,7 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 3101, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -3974,10 +4049,10 @@ description: Result of parsing enclosure.kcl }, "arg": { "abs_path": false, - "commentStart": 3110, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3110, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -3992,10 +4067,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 2958, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2958, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -4005,7 +4080,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 2958, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4013,7 +4088,7 @@ description: Result of parsing enclosure.kcl "unlabeled": null }, { - "commentStart": 3127, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4022,10 +4097,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 2953, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2953, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -4035,7 +4110,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 2953, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4048,27 +4123,27 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 3155, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3164, + "commentStart": 0, "elements": [ { - "commentStart": 3175, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3175, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3175, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3175, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -4081,7 +4156,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 3183, + "commentStart": 0, "end": 0, "raw": "2.2", "start": 0, @@ -4098,17 +4173,17 @@ description: Result of parsing enclosure.kcl }, "operator": "-", "right": { - "commentStart": 3190, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3190, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3190, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3190, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -4121,7 +4196,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 3206, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -4139,10 +4214,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3210, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3210, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -4162,17 +4237,17 @@ description: Result of parsing enclosure.kcl "type": "BinaryExpression" }, { - "commentStart": 3229, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3229, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3229, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3229, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -4185,7 +4260,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 3245, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -4203,10 +4278,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3249, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3249, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -4231,7 +4306,7 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 3274, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -4239,10 +4314,10 @@ description: Result of parsing enclosure.kcl }, "arg": { "abs_path": false, - "commentStart": 3283, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3283, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -4257,10 +4332,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 3140, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3140, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -4270,7 +4345,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 3140, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4278,7 +4353,7 @@ description: Result of parsing enclosure.kcl "unlabeled": null }, { - "commentStart": 3300, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4287,10 +4362,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 3135, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3135, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -4300,7 +4375,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 3135, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4313,27 +4388,27 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 3328, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3337, + "commentStart": 0, "elements": [ { - "commentStart": 3348, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3348, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3348, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3348, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -4346,7 +4421,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 3356, + "commentStart": 0, "end": 0, "raw": "2.2", "start": 0, @@ -4363,17 +4438,17 @@ description: Result of parsing enclosure.kcl }, "operator": "-", "right": { - "commentStart": 3363, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3363, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3363, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3363, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -4386,7 +4461,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 3379, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -4404,10 +4479,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3383, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3383, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -4427,14 +4502,14 @@ description: Result of parsing enclosure.kcl "type": "BinaryExpression" }, { - "commentStart": 3402, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3402, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3402, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4447,17 +4522,17 @@ description: Result of parsing enclosure.kcl }, "operator": "-", "right": { - "commentStart": 3412, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3412, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3412, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3412, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -4470,7 +4545,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 3428, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -4488,10 +4563,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3432, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3432, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -4520,7 +4595,7 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 3458, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -4528,10 +4603,10 @@ description: Result of parsing enclosure.kcl }, "arg": { "abs_path": false, - "commentStart": 3467, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3467, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -4546,10 +4621,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 3313, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3313, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -4559,7 +4634,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 3313, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4567,7 +4642,7 @@ description: Result of parsing enclosure.kcl "unlabeled": null }, { - "commentStart": 3484, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4576,10 +4651,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 3308, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3308, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -4589,14 +4664,14 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 3308, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 2326, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -4617,12 +4692,12 @@ description: Result of parsing enclosure.kcl "type": "VariableDeclaration" }, { - "commentStart": 3487, + "commentStart": 0, "declaration": { - "commentStart": 3487, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3487, + "commentStart": 0, "end": 0, "name": "extrude003", "start": 0, @@ -4635,7 +4710,7 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 3519, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4643,10 +4718,10 @@ description: Result of parsing enclosure.kcl }, "arg": { "abs_path": false, - "commentStart": 3528, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3528, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -4661,10 +4736,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 3500, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3500, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -4674,17 +4749,17 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 3500, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 3508, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3508, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -4701,21 +4776,21 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 3563, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3572, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3572, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3572, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -4728,7 +4803,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 3588, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -4747,23 +4822,23 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 3598, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3605, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 3636, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3636, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA002", "start": 0, @@ -4777,10 +4852,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 3616, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3616, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -4790,7 +4865,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 3616, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4800,10 +4875,10 @@ description: Result of parsing enclosure.kcl "arguments": [ { "abs_path": false, - "commentStart": 3688, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3688, + "commentStart": 0, "end": 0, "name": "rectangleSegmentB002", "start": 0, @@ -4817,10 +4892,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 3668, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3668, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -4830,7 +4905,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 3668, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4840,10 +4915,10 @@ description: Result of parsing enclosure.kcl "arguments": [ { "abs_path": false, - "commentStart": 3740, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3740, + "commentStart": 0, "end": 0, "name": "rectangleSegmentC002", "start": 0, @@ -4857,10 +4932,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 3720, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3720, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -4870,7 +4945,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 3720, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4880,10 +4955,10 @@ description: Result of parsing enclosure.kcl "arguments": [ { "abs_path": false, - "commentStart": 3792, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3792, + "commentStart": 0, "end": 0, "name": "rectangleSegmentD002", "start": 0, @@ -4897,10 +4972,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 3772, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3772, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -4910,7 +4985,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 3772, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4926,10 +5001,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 3548, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3548, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -4939,7 +5014,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 3548, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4947,13 +5022,13 @@ description: Result of parsing enclosure.kcl "unlabeled": null } ], - "commentStart": 3500, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 3830, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4981,12 +5056,12 @@ description: Result of parsing enclosure.kcl "type": "VariableDeclaration" }, { - "commentStart": 3873, + "commentStart": 0, "declaration": { - "commentStart": 3873, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3873, + "commentStart": 0, "end": 0, "name": "sketch004", "start": 0, @@ -4997,37 +5072,38 @@ description: Result of parsing enclosure.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 3899, - "end": 0, - "name": { - "commentStart": 3899, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude003", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 3911, - "end": 0, - "raw": "'END'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 3885, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3885, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -5037,29 +5113,45 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 3885, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude003", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 3938, + "commentStart": 0, "elements": [ { - "commentStart": 3947, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3947, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3947, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3947, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -5072,7 +5164,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 3955, + "commentStart": 0, "end": 0, "raw": "1.2", "start": 0, @@ -5090,10 +5182,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3961, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3961, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -5110,10 +5202,10 @@ description: Result of parsing enclosure.kcl }, { "abs_path": false, - "commentStart": 3983, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3983, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -5131,7 +5223,7 @@ description: Result of parsing enclosure.kcl "type": "ArrayExpression" }, { - "commentStart": 4005, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5140,10 +5232,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 3923, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3923, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -5153,7 +5245,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 3923, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5162,199 +5254,80 @@ description: Result of parsing enclosure.kcl { "arguments": [ { - "commentStart": 4024, - "elements": [ - { - "commentStart": 4025, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 4028, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 4028, - "end": 0, - "name": { - "commentStart": 4028, - "end": 0, - "name": "width", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "-", - "right": { - "commentStart": 4037, - "end": 0, - "left": { - "commentStart": 4037, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 4041, - "end": 0, - "name": { - "commentStart": 4041, - "end": 0, - "name": "wallThickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 4058, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 4061, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA003" - } - ], - "callee": { - "abs_path": false, - "commentStart": 4013, - "end": 0, - "name": { - "commentStart": 4013, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 4013, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 4100, - "elements": [ - { - "commentStart": 4109, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 4116, - "end": 0, - "name": { - "commentStart": 4116, - "end": 0, - "name": "rectangleSegmentA003", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 4109, - "end": 0, - "name": { - "commentStart": 4109, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 4109, + "commentStart": 0, "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "+", - "right": { - "commentStart": 4140, - "end": 0, - "raw": "90", + "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 90.0, + "value": 2.0, "suffix": "None" } }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "commentStart": 4151, - "end": 0, - "left": { + "operator": "*", + "right": { "abs_path": false, - "commentStart": 4151, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4151, + "commentStart": 0, "end": 0, - "name": "length", + "name": "wallThickness", "start": 0, "type": "Identifier" }, @@ -5363,75 +5336,40 @@ description: Result of parsing enclosure.kcl "type": "Name", "type": "Name" }, - "operator": "-", - "right": { - "commentStart": 4161, - "end": 0, - "left": { - "commentStart": 4161, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 4165, - "end": 0, - "name": { - "commentStart": 4165, - "end": 0, - "name": "wallThickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 4188, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 4191, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentB003" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA003" + } } ], "callee": { "abs_path": false, - "commentStart": 4089, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4089, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -5441,25 +5379,35 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 4089, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 4230, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 4246, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4246, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA003", "start": 0, @@ -5473,10 +5421,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 4239, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4239, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -5486,88 +5434,125 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 4239, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 4284, - "end": 0, - "name": { - "commentStart": 4284, - "end": 0, - "name": "rectangleSegmentA003", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 4277, - "end": 0, - "name": { - "commentStart": 4277, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 4277, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 4276, + "operator": "+", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 4314, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 4317, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentC003" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentB003" + } } ], "callee": { "abs_path": false, - "commentStart": 4219, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4219, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -5577,30 +5562,182 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 4219, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 4350, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA003", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA003", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentC003" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4364, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 4379, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5609,10 +5746,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 4365, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4365, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -5622,7 +5759,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 4365, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5631,7 +5768,7 @@ description: Result of parsing enclosure.kcl { "arguments": [ { - "commentStart": 4397, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5640,10 +5777,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 4383, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4383, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -5653,7 +5790,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 4383, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5669,14 +5806,14 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 4402, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4408, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -5687,10 +5824,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 4345, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4345, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5700,7 +5837,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 4345, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5711,10 +5848,10 @@ description: Result of parsing enclosure.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 4436, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4436, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -5724,7 +5861,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 4436, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5737,30 +5874,30 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 4469, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4478, + "commentStart": 0, "elements": [ { - "commentStart": 4489, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4489, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4489, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4489, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4489, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -5773,7 +5910,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 4497, + "commentStart": 0, "end": 0, "raw": "1.2", "start": 0, @@ -5790,14 +5927,14 @@ description: Result of parsing enclosure.kcl }, "operator": "+", "right": { - "commentStart": 4503, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4503, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4503, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -5810,7 +5947,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 4519, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -5832,10 +5969,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 4523, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4523, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -5851,17 +5988,17 @@ description: Result of parsing enclosure.kcl "type": "BinaryExpression" }, { - "commentStart": 4541, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4541, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4541, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4541, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -5874,7 +6011,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 4557, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -5892,10 +6029,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 4561, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4561, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -5920,21 +6057,21 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 4586, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4595, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4595, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4595, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -5948,10 +6085,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 4605, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4605, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -5970,10 +6107,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 4454, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4454, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -5983,7 +6120,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 4454, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5991,7 +6128,7 @@ description: Result of parsing enclosure.kcl "unlabeled": null }, { - "commentStart": 4628, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6000,10 +6137,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 4449, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4449, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -6013,7 +6150,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 4449, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6026,30 +6163,30 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 4656, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4665, + "commentStart": 0, "elements": [ { - "commentStart": 4676, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4676, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4676, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4676, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4676, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -6062,7 +6199,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 4684, + "commentStart": 0, "end": 0, "raw": "1.2", "start": 0, @@ -6079,14 +6216,14 @@ description: Result of parsing enclosure.kcl }, "operator": "+", "right": { - "commentStart": 4690, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4690, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4690, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -6099,7 +6236,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 4706, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -6121,10 +6258,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 4710, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4710, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -6140,14 +6277,14 @@ description: Result of parsing enclosure.kcl "type": "BinaryExpression" }, { - "commentStart": 4728, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4728, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4728, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6160,17 +6297,17 @@ description: Result of parsing enclosure.kcl }, "operator": "-", "right": { - "commentStart": 4738, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4738, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4738, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4738, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -6183,7 +6320,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 4754, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -6201,10 +6338,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 4758, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4758, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -6233,21 +6370,21 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 4784, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4793, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4793, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4793, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -6261,10 +6398,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 4803, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4803, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -6283,10 +6420,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 4641, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4641, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -6296,7 +6433,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 4641, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6304,7 +6441,7 @@ description: Result of parsing enclosure.kcl "unlabeled": null }, { - "commentStart": 4826, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6313,10 +6450,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 4636, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4636, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -6326,7 +6463,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 4636, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6339,27 +6476,27 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 4854, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4863, + "commentStart": 0, "elements": [ { - "commentStart": 4874, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4874, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4874, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4874, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -6372,7 +6509,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 4882, + "commentStart": 0, "end": 0, "raw": "2.2", "start": 0, @@ -6389,17 +6526,17 @@ description: Result of parsing enclosure.kcl }, "operator": "-", "right": { - "commentStart": 4889, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4889, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4889, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4889, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -6412,7 +6549,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 4905, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -6430,10 +6567,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 4909, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4909, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -6453,17 +6590,17 @@ description: Result of parsing enclosure.kcl "type": "BinaryExpression" }, { - "commentStart": 4928, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4928, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4928, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4928, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -6476,7 +6613,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 4944, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -6494,10 +6631,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 4948, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4948, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -6522,21 +6659,21 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 4973, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4982, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4982, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4982, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -6550,10 +6687,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 4992, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4992, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -6572,10 +6709,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 4839, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4839, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -6585,7 +6722,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 4839, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6593,7 +6730,7 @@ description: Result of parsing enclosure.kcl "unlabeled": null }, { - "commentStart": 5015, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6602,10 +6739,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 4834, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4834, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -6615,7 +6752,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 4834, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6628,27 +6765,27 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 5043, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5052, + "commentStart": 0, "elements": [ { - "commentStart": 5063, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5063, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5063, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5063, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -6661,7 +6798,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 5071, + "commentStart": 0, "end": 0, "raw": "2.2", "start": 0, @@ -6678,17 +6815,17 @@ description: Result of parsing enclosure.kcl }, "operator": "-", "right": { - "commentStart": 5078, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5078, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5078, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5078, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -6701,7 +6838,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 5094, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -6719,10 +6856,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 5098, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5098, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -6742,14 +6879,14 @@ description: Result of parsing enclosure.kcl "type": "BinaryExpression" }, { - "commentStart": 5117, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5117, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5117, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6762,17 +6899,17 @@ description: Result of parsing enclosure.kcl }, "operator": "-", "right": { - "commentStart": 5127, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5127, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5127, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5127, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -6785,7 +6922,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 5143, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -6803,10 +6940,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 5147, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5147, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -6835,21 +6972,21 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 5173, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5182, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5182, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5182, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -6863,10 +7000,10 @@ description: Result of parsing enclosure.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 5192, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5192, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -6885,10 +7022,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 5028, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5028, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -6898,7 +7035,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 5028, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6906,7 +7043,7 @@ description: Result of parsing enclosure.kcl "unlabeled": null }, { - "commentStart": 5215, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6915,10 +7052,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 5023, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5023, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -6928,14 +7065,14 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 5023, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 3885, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -6951,12 +7088,12 @@ description: Result of parsing enclosure.kcl "type": "VariableDeclaration" }, { - "commentStart": 5218, + "commentStart": 0, "declaration": { - "commentStart": 5218, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5218, + "commentStart": 0, "end": 0, "name": "extrude004", "start": 0, @@ -6969,7 +7106,7 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 5250, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6977,10 +7114,10 @@ description: Result of parsing enclosure.kcl }, "arg": { "abs_path": false, - "commentStart": 5259, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5259, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -6995,10 +7132,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 5231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5231, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -7008,17 +7145,17 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 5231, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 5239, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5239, + "commentStart": 0, "end": 0, "name": "sketch004", "start": 0, @@ -7035,21 +7172,21 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 5294, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5303, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5303, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5303, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -7062,7 +7199,7 @@ description: Result of parsing enclosure.kcl }, "operator": "*", "right": { - "commentStart": 5319, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -7081,23 +7218,23 @@ description: Result of parsing enclosure.kcl { "type": "LabeledArg", "label": { - "commentStart": 5329, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5336, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 5367, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5367, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA003", "start": 0, @@ -7111,10 +7248,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 5347, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5347, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -7124,7 +7261,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 5347, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7134,10 +7271,10 @@ description: Result of parsing enclosure.kcl "arguments": [ { "abs_path": false, - "commentStart": 5419, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5419, + "commentStart": 0, "end": 0, "name": "rectangleSegmentB003", "start": 0, @@ -7151,10 +7288,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 5399, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5399, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -7164,7 +7301,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 5399, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7174,10 +7311,10 @@ description: Result of parsing enclosure.kcl "arguments": [ { "abs_path": false, - "commentStart": 5471, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5471, + "commentStart": 0, "end": 0, "name": "rectangleSegmentC003", "start": 0, @@ -7191,10 +7328,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 5451, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5451, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -7204,7 +7341,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 5451, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7214,10 +7351,10 @@ description: Result of parsing enclosure.kcl "arguments": [ { "abs_path": false, - "commentStart": 5523, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5523, + "commentStart": 0, "end": 0, "name": "rectangleSegmentD003", "start": 0, @@ -7231,10 +7368,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 5503, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5503, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -7244,7 +7381,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 5503, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7260,10 +7397,10 @@ description: Result of parsing enclosure.kcl ], "callee": { "abs_path": false, - "commentStart": 5279, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5279, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -7273,7 +7410,7 @@ description: Result of parsing enclosure.kcl "start": 0, "type": "Name" }, - "commentStart": 5279, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7281,7 +7418,7 @@ description: Result of parsing enclosure.kcl "unlabeled": null } ], - "commentStart": 5231, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -7304,7 +7441,7 @@ description: Result of parsing enclosure.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 83, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -7319,10 +7456,10 @@ description: Result of parsing enclosure.kcl ], "properties": [ { - "commentStart": 92, + "commentStart": 0, "end": 0, "key": { - "commentStart": 92, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -7332,10 +7469,10 @@ description: Result of parsing enclosure.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 112, + "commentStart": 0, "end": 0, "name": { - "commentStart": 112, + "commentStart": 0, "end": 0, "name": "mm", "start": 0, @@ -7356,7 +7493,7 @@ description: Result of parsing enclosure.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 115, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/enclosure/ops.snap b/rust/kcl-lib/tests/kcl_samples/enclosure/ops.snap index 80aba3238..704849f51 100644 --- a/rust/kcl-lib/tests/kcl_samples/enclosure/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/enclosure/ops.snap @@ -5,7 +5,7 @@ description: Operations executed enclosure.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -57,7 +57,13 @@ description: Operations executed enclosure.kcl "type": "Number", "value": 12.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -150,8 +156,8 @@ description: Operations executed enclosure.kcl "type": "FunctionCall", "name": "function001", "functionSourceRange": [ - 1275, - 1872, + 1285, + 1854, 0 ], "unlabeledArg": null, @@ -161,190 +167,185 @@ description: Operations executed enclosure.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 3.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 3.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -423,8 +424,8 @@ description: Operations executed enclosure.kcl "type": "FunctionCall", "name": "function001", "functionSourceRange": [ - 1275, - 1872, + 1285, + 1854, 0 ], "unlabeledArg": null, @@ -434,190 +435,185 @@ description: Operations executed enclosure.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 3.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 3.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -696,8 +692,8 @@ description: Operations executed enclosure.kcl "type": "FunctionCall", "name": "function001", "functionSourceRange": [ - 1275, - 1872, + 1285, + 1854, 0 ], "unlabeledArg": null, @@ -707,190 +703,185 @@ description: Operations executed enclosure.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 3.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 3.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -969,8 +960,8 @@ description: Operations executed enclosure.kcl "type": "FunctionCall", "name": "function001", "functionSourceRange": [ - 1275, - 1872, + 1285, + 1854, 0 ], "unlabeledArg": null, @@ -980,190 +971,185 @@ description: Operations executed enclosure.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 3.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 3.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -1238,7 +1224,7 @@ description: Operations executed enclosure.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1394,7 +1380,13 @@ description: Operations executed enclosure.kcl "type": "Number", "value": 12.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1439,19 +1431,10 @@ description: Operations executed enclosure.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -1459,7 +1442,15 @@ description: Operations executed enclosure.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1604,7 +1595,13 @@ description: Operations executed enclosure.kcl "type": "Number", "value": 9.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] diff --git a/rust/kcl-lib/tests/kcl_samples/enclosure/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/enclosure/program_memory.snap index 9d2693feb..a84257b96 100644 --- a/rust/kcl-lib/tests/kcl_samples/enclosure/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/enclosure/program_memory.snap @@ -15,9 +15,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 344, - "end": 365, - "start": 344, + "commentStart": 362, + "end": 383, + "start": 362, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -28,9 +28,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 452, - "end": 473, - "start": 452, + "commentStart": 467, + "end": 488, + "start": 467, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -41,9 +41,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 578, - "end": 599, - "start": 578, + "commentStart": 590, + "end": 611, + "start": 590, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -54,9 +54,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 669, - "end": 690, - "start": 669, + "commentStart": 681, + "end": 702, + "start": 681, "type": "TagDeclarator", "value": "rectangleSegmentD001" }, @@ -77,9 +77,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 344, - "end": 365, - "start": 344, + "commentStart": 362, + "end": 383, + "start": 362, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -102,9 +102,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 452, - "end": 473, - "start": 452, + "commentStart": 467, + "end": 488, + "start": 467, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -127,9 +127,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 578, - "end": 599, - "start": 578, + "commentStart": 590, + "end": 611, + "start": 590, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -152,9 +152,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 669, - "end": 690, - "start": 669, + "commentStart": 681, + "end": 702, + "start": 681, "type": "TagDeclarator", "value": "rectangleSegmentD001" }, @@ -195,22 +195,34 @@ description: Variables in memory after executing enclosure.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -265,28 +277,72 @@ description: Variables in memory after executing enclosure.kcl { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -321,9 +377,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2524, - "end": 2545, - "start": 2524, + "commentStart": 2521, + "end": 2542, + "start": 2521, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -334,9 +390,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2650, - "end": 2671, - "start": 2650, + "commentStart": 2644, + "end": 2665, + "start": 2644, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -347,9 +403,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2741, - "end": 2762, - "start": 2741, + "commentStart": 2735, + "end": 2756, + "start": 2735, "type": "TagDeclarator", "value": "rectangleSegmentD002" }, @@ -395,9 +451,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 2524, - "end": 2545, - "start": 2524, + "commentStart": 2521, + "end": 2542, + "start": 2521, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -420,9 +476,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2650, - "end": 2671, - "start": 2650, + "commentStart": 2644, + "end": 2665, + "start": 2644, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -445,9 +501,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2741, - "end": 2762, - "start": 2741, + "commentStart": 2735, + "end": 2756, + "start": 2735, "type": "TagDeclarator", "value": "rectangleSegmentD002" }, @@ -488,22 +544,34 @@ description: Variables in memory after executing enclosure.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -558,28 +626,72 @@ description: Variables in memory after executing enclosure.kcl { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -601,9 +713,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4061, - "end": 4082, - "start": 4061, + "commentStart": 4078, + "end": 4099, + "start": 4078, "type": "TagDeclarator", "value": "rectangleSegmentA003" }, @@ -614,9 +726,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4191, - "end": 4212, - "start": 4191, + "commentStart": 4205, + "end": 4226, + "start": 4205, "type": "TagDeclarator", "value": "rectangleSegmentB003" }, @@ -627,9 +739,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4317, - "end": 4338, - "start": 4317, + "commentStart": 4328, + "end": 4349, + "start": 4328, "type": "TagDeclarator", "value": "rectangleSegmentC003" }, @@ -640,9 +752,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4408, - "end": 4429, - "start": 4408, + "commentStart": 4419, + "end": 4440, + "start": 4419, "type": "TagDeclarator", "value": "rectangleSegmentD003" }, @@ -663,9 +775,9 @@ description: Variables in memory after executing enclosure.kcl 3.0 ], "tag": { - "commentStart": 4061, - "end": 4082, - "start": 4061, + "commentStart": 4078, + "end": 4099, + "start": 4078, "type": "TagDeclarator", "value": "rectangleSegmentA003" }, @@ -688,9 +800,9 @@ description: Variables in memory after executing enclosure.kcl 3.0 ], "tag": { - "commentStart": 4191, - "end": 4212, - "start": 4191, + "commentStart": 4205, + "end": 4226, + "start": 4205, "type": "TagDeclarator", "value": "rectangleSegmentB003" }, @@ -713,9 +825,9 @@ description: Variables in memory after executing enclosure.kcl 172.0 ], "tag": { - "commentStart": 4317, - "end": 4338, - "start": 4317, + "commentStart": 4328, + "end": 4349, + "start": 4328, "type": "TagDeclarator", "value": "rectangleSegmentC003" }, @@ -738,9 +850,9 @@ description: Variables in memory after executing enclosure.kcl 172.0 ], "tag": { - "commentStart": 4408, - "end": 4429, - "start": 4408, + "commentStart": 4419, + "end": 4440, + "start": 4419, "type": "TagDeclarator", "value": "rectangleSegmentD003" }, @@ -781,17 +893,26 @@ description: Variables in memory after executing enclosure.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -816,9 +937,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2524, - "end": 2545, - "start": 2524, + "commentStart": 2521, + "end": 2542, + "start": 2521, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -829,9 +950,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2650, - "end": 2671, - "start": 2650, + "commentStart": 2644, + "end": 2665, + "start": 2644, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -842,9 +963,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2741, - "end": 2762, - "start": 2741, + "commentStart": 2735, + "end": 2756, + "start": 2735, "type": "TagDeclarator", "value": "rectangleSegmentD002" }, @@ -890,9 +1011,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 2524, - "end": 2545, - "start": 2524, + "commentStart": 2521, + "end": 2542, + "start": 2521, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -915,9 +1036,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2650, - "end": 2671, - "start": 2650, + "commentStart": 2644, + "end": 2665, + "start": 2644, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -940,9 +1061,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2741, - "end": 2762, - "start": 2741, + "commentStart": 2735, + "end": 2756, + "start": 2735, "type": "TagDeclarator", "value": "rectangleSegmentD002" }, @@ -983,22 +1104,34 @@ description: Variables in memory after executing enclosure.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1053,28 +1186,72 @@ description: Variables in memory after executing enclosure.kcl { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -1136,28 +1313,72 @@ description: Variables in memory after executing enclosure.kcl { "type": "fillet", "id": "[uuid]", - "radius": 9.0, + "radius": { + "n": 9.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 9.0, + "radius": { + "n": 9.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 9.0, + "radius": { + "n": 9.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 9.0, + "radius": { + "n": 9.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -1285,9 +1506,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 344, - "end": 365, - "start": 344, + "commentStart": 362, + "end": 383, + "start": 362, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -1310,9 +1531,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 452, - "end": 473, - "start": 452, + "commentStart": 467, + "end": 488, + "start": 467, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -1335,9 +1556,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 578, - "end": 599, - "start": 578, + "commentStart": 590, + "end": 611, + "start": 590, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -1360,9 +1581,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 669, - "end": 690, - "start": 669, + "commentStart": 681, + "end": 702, + "start": 681, "type": "TagDeclarator", "value": "rectangleSegmentD001" }, @@ -1403,22 +1624,34 @@ description: Variables in memory after executing enclosure.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1508,9 +1741,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 2524, - "end": 2545, - "start": 2524, + "commentStart": 2521, + "end": 2542, + "start": 2521, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -1533,9 +1766,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2650, - "end": 2671, - "start": 2650, + "commentStart": 2644, + "end": 2665, + "start": 2644, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -1558,9 +1791,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2741, - "end": 2762, - "start": 2741, + "commentStart": 2735, + "end": 2756, + "start": 2735, "type": "TagDeclarator", "value": "rectangleSegmentD002" }, @@ -1601,22 +1834,34 @@ description: Variables in memory after executing enclosure.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1681,9 +1926,9 @@ description: Variables in memory after executing enclosure.kcl 3.0 ], "tag": { - "commentStart": 4061, - "end": 4082, - "start": 4061, + "commentStart": 4078, + "end": 4099, + "start": 4078, "type": "TagDeclarator", "value": "rectangleSegmentA003" }, @@ -1706,9 +1951,9 @@ description: Variables in memory after executing enclosure.kcl 3.0 ], "tag": { - "commentStart": 4191, - "end": 4212, - "start": 4191, + "commentStart": 4205, + "end": 4226, + "start": 4205, "type": "TagDeclarator", "value": "rectangleSegmentB003" }, @@ -1731,9 +1976,9 @@ description: Variables in memory after executing enclosure.kcl 172.0 ], "tag": { - "commentStart": 4317, - "end": 4338, - "start": 4317, + "commentStart": 4328, + "end": 4349, + "start": 4328, "type": "TagDeclarator", "value": "rectangleSegmentC003" }, @@ -1756,9 +2001,9 @@ description: Variables in memory after executing enclosure.kcl 172.0 ], "tag": { - "commentStart": 4408, - "end": 4429, - "start": 4408, + "commentStart": 4419, + "end": 4440, + "start": 4419, "type": "TagDeclarator", "value": "rectangleSegmentD003" }, @@ -1799,17 +2044,26 @@ description: Variables in memory after executing enclosure.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1834,9 +2088,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2524, - "end": 2545, - "start": 2524, + "commentStart": 2521, + "end": 2542, + "start": 2521, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -1847,9 +2101,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2650, - "end": 2671, - "start": 2650, + "commentStart": 2644, + "end": 2665, + "start": 2644, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -1860,9 +2114,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2741, - "end": 2762, - "start": 2741, + "commentStart": 2735, + "end": 2756, + "start": 2735, "type": "TagDeclarator", "value": "rectangleSegmentD002" }, @@ -1908,9 +2162,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 2524, - "end": 2545, - "start": 2524, + "commentStart": 2521, + "end": 2542, + "start": 2521, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -1933,9 +2187,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2650, - "end": 2671, - "start": 2650, + "commentStart": 2644, + "end": 2665, + "start": 2644, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -1958,9 +2212,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2741, - "end": 2762, - "start": 2741, + "commentStart": 2735, + "end": 2756, + "start": 2735, "type": "TagDeclarator", "value": "rectangleSegmentD002" }, @@ -2001,22 +2255,34 @@ description: Variables in memory after executing enclosure.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2071,28 +2337,72 @@ description: Variables in memory after executing enclosure.kcl { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 12.0, + "radius": { + "n": 12.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } diff --git a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/artifact_commands.snap index 4968f640a..81122ad1b 100644 --- a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/artifact_commands.snap @@ -431,6 +431,15 @@ description: Artifact commands exhaust-manifold.kcl "face_id": "[uuid]" } }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, { "cmdId": "[uuid]", "range": [], @@ -825,6 +834,15 @@ description: Artifact commands exhaust-manifold.kcl "face_id": "[uuid]" } }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, { "cmdId": "[uuid]", "range": [], @@ -1219,6 +1237,15 @@ description: Artifact commands exhaust-manifold.kcl "face_id": "[uuid]" } }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, { "cmdId": "[uuid]", "range": [], @@ -1613,6 +1640,15 @@ description: Artifact commands exhaust-manifold.kcl "face_id": "[uuid]" } }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, { "cmdId": "[uuid]", "range": [], @@ -2728,7 +2764,8 @@ description: Artifact commands exhaust-manifold.kcl "type": "extrude", "target": "[uuid]", "distance": 0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/artifact_graph_flowchart.snap.md index c6361889d..bc00e27b9 100644 --- a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/artifact_graph_flowchart.snap.md @@ -1,172 +1,172 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[817, 852, 0]"] - 3["Segment
[860, 886, 0]"] - 4["Segment
[894, 957, 0]"] - 5["Segment
[965, 1056, 0]"] - 6["Segment
[1064, 1126, 0]"] - 7["Segment
[1134, 1225, 0]"] + 2["Path
[781, 816, 0]"] + 3["Segment
[824, 850, 0]"] + 4["Segment
[858, 919, 0]"] + 5["Segment
[927, 986, 0]"] + 6["Segment
[994, 1054, 0]"] + 7["Segment
[1062, 1121, 0]"] end subgraph path9 [Path] - 9["Path
[1327, 1389, 0]"] - 10["Segment
[1327, 1389, 0]"] + 9["Path
[1223, 1285, 0]"] + 10["Segment
[1223, 1285, 0]"] 11[Solid2d] end subgraph path12 [Path] - 12["Path
[1402, 1480, 0]"] - 13["Segment
[1402, 1480, 0]"] + 12["Path
[1298, 1376, 0]"] + 13["Segment
[1298, 1376, 0]"] 14[Solid2d] end subgraph path22 [Path] - 22["Path
[817, 852, 0]"] - 23["Segment
[860, 886, 0]"] - 24["Segment
[894, 957, 0]"] - 25["Segment
[965, 1056, 0]"] - 26["Segment
[1064, 1126, 0]"] - 27["Segment
[1134, 1225, 0]"] + 22["Path
[781, 816, 0]"] + 23["Segment
[824, 850, 0]"] + 24["Segment
[858, 919, 0]"] + 25["Segment
[927, 986, 0]"] + 26["Segment
[994, 1054, 0]"] + 27["Segment
[1062, 1121, 0]"] end subgraph path29 [Path] - 29["Path
[1327, 1389, 0]"] - 30["Segment
[1327, 1389, 0]"] + 29["Path
[1223, 1285, 0]"] + 30["Segment
[1223, 1285, 0]"] 31[Solid2d] end subgraph path32 [Path] - 32["Path
[1402, 1480, 0]"] - 33["Segment
[1402, 1480, 0]"] + 32["Path
[1298, 1376, 0]"] + 33["Segment
[1298, 1376, 0]"] 34[Solid2d] end subgraph path42 [Path] - 42["Path
[817, 852, 0]"] - 43["Segment
[860, 886, 0]"] - 44["Segment
[894, 957, 0]"] - 45["Segment
[965, 1056, 0]"] - 46["Segment
[1064, 1126, 0]"] - 47["Segment
[1134, 1225, 0]"] + 42["Path
[781, 816, 0]"] + 43["Segment
[824, 850, 0]"] + 44["Segment
[858, 919, 0]"] + 45["Segment
[927, 986, 0]"] + 46["Segment
[994, 1054, 0]"] + 47["Segment
[1062, 1121, 0]"] end subgraph path49 [Path] - 49["Path
[1327, 1389, 0]"] - 50["Segment
[1327, 1389, 0]"] + 49["Path
[1223, 1285, 0]"] + 50["Segment
[1223, 1285, 0]"] 51[Solid2d] end subgraph path52 [Path] - 52["Path
[1402, 1480, 0]"] - 53["Segment
[1402, 1480, 0]"] + 52["Path
[1298, 1376, 0]"] + 53["Segment
[1298, 1376, 0]"] 54[Solid2d] end subgraph path62 [Path] - 62["Path
[817, 852, 0]"] - 63["Segment
[860, 886, 0]"] - 64["Segment
[894, 957, 0]"] - 65["Segment
[965, 1056, 0]"] - 66["Segment
[1064, 1126, 0]"] - 67["Segment
[1134, 1225, 0]"] + 62["Path
[781, 816, 0]"] + 63["Segment
[824, 850, 0]"] + 64["Segment
[858, 919, 0]"] + 65["Segment
[927, 986, 0]"] + 66["Segment
[994, 1054, 0]"] + 67["Segment
[1062, 1121, 0]"] end subgraph path69 [Path] - 69["Path
[1327, 1389, 0]"] - 70["Segment
[1327, 1389, 0]"] + 69["Path
[1223, 1285, 0]"] + 70["Segment
[1223, 1285, 0]"] 71[Solid2d] end subgraph path72 [Path] - 72["Path
[1402, 1480, 0]"] - 73["Segment
[1402, 1480, 0]"] + 72["Path
[1298, 1376, 0]"] + 73["Segment
[1298, 1376, 0]"] 74[Solid2d] end subgraph path82 [Path] - 82["Path
[1807, 1842, 0]"] - 83["Segment
[1848, 1882, 0]"] - 84["Segment
[1888, 1935, 0]"] - 85["Segment
[1941, 1987, 0]"] - 86["Segment
[1993, 2040, 0]"] - 87["Segment
[2046, 2080, 0]"] - 88["Segment
[2086, 2129, 0]"] - 89["Segment
[2135, 2168, 0]"] - 90["Segment
[2174, 2221, 0]"] - 91["Segment
[2227, 2274, 0]"] - 92["Segment
[2280, 2327, 0]"] - 93["Segment
[2333, 2376, 0]"] - 94["Segment
[2382, 2433, 0]"] - 95["Segment
[2439, 2483, 0]"] - 96["Segment
[2489, 2536, 0]"] - 97["Segment
[2542, 2588, 0]"] - 98["Segment
[2594, 2650, 0]"] - 99["Segment
[2656, 2663, 0]"] + 82["Path
[1703, 1738, 0]"] + 83["Segment
[1744, 1778, 0]"] + 84["Segment
[1784, 1823, 0]"] + 85["Segment
[1829, 1867, 0]"] + 86["Segment
[1873, 1912, 0]"] + 87["Segment
[1918, 1952, 0]"] + 88["Segment
[1958, 2001, 0]"] + 89["Segment
[2007, 2040, 0]"] + 90["Segment
[2046, 2085, 0]"] + 91["Segment
[2091, 2130, 0]"] + 92["Segment
[2136, 2175, 0]"] + 93["Segment
[2181, 2224, 0]"] + 94["Segment
[2230, 2281, 0]"] + 95["Segment
[2287, 2331, 0]"] + 96["Segment
[2337, 2376, 0]"] + 97["Segment
[2382, 2420, 0]"] + 98["Segment
[2426, 2491, 0]"] + 99["Segment
[2497, 2504, 0]"] 100[Solid2d] end subgraph path101 [Path] - 101["Path
[2735, 2808, 0]"] - 102["Segment
[2735, 2808, 0]"] + 101["Path
[2576, 2649, 0]"] + 102["Segment
[2576, 2649, 0]"] 103[Solid2d] end subgraph path104 [Path] - 104["Path
[2823, 2896, 0]"] - 105["Segment
[2823, 2896, 0]"] + 104["Path
[2664, 2737, 0]"] + 105["Segment
[2664, 2737, 0]"] 106[Solid2d] end subgraph path107 [Path] - 107["Path
[2911, 2984, 0]"] - 108["Segment
[2911, 2984, 0]"] + 107["Path
[2752, 2825, 0]"] + 108["Segment
[2752, 2825, 0]"] 109[Solid2d] end subgraph path110 [Path] - 110["Path
[2999, 3072, 0]"] - 111["Segment
[2999, 3072, 0]"] + 110["Path
[2840, 2913, 0]"] + 111["Segment
[2840, 2913, 0]"] 112[Solid2d] end subgraph path113 [Path] - 113["Path
[3126, 3265, 0]"] - 114["Segment
[3126, 3265, 0]"] + 113["Path
[2967, 3106, 0]"] + 114["Segment
[2967, 3106, 0]"] 115[Solid2d] end subgraph path116 [Path] - 116["Path
[3280, 3417, 0]"] - 117["Segment
[3280, 3417, 0]"] + 116["Path
[3121, 3258, 0]"] + 117["Segment
[3121, 3258, 0]"] 118[Solid2d] end subgraph path119 [Path] - 119["Path
[3432, 3579, 0]"] - 120["Segment
[3432, 3579, 0]"] + 119["Path
[3273, 3420, 0]"] + 120["Segment
[3273, 3420, 0]"] 121[Solid2d] end subgraph path122 [Path] - 122["Path
[3594, 3740, 0]"] - 123["Segment
[3594, 3740, 0]"] + 122["Path
[3435, 3581, 0]"] + 123["Segment
[3435, 3581, 0]"] 124[Solid2d] end - 1["Plane
[784, 809, 0]"] - 8["Plane
[1302, 1319, 0]"] - 15["Sweep Sweep
[1492, 1515, 0]"] + 1["Plane
[748, 773, 0]"] + 8["Plane
[1198, 1215, 0]"] + 15["Sweep Sweep
[1388, 1411, 0]"] 16[Wall] 17["Cap Start"] 18["Cap End"] 19["SweepEdge Opposite"] 20["SweepEdge Adjacent"] - 21["Plane
[784, 809, 0]"] - 28["Plane
[1302, 1319, 0]"] - 35["Sweep Sweep
[1492, 1515, 0]"] + 21["Plane
[748, 773, 0]"] + 28["Plane
[1198, 1215, 0]"] + 35["Sweep Sweep
[1388, 1411, 0]"] 36[Wall] 37["Cap Start"] 38["Cap End"] 39["SweepEdge Opposite"] 40["SweepEdge Adjacent"] - 41["Plane
[784, 809, 0]"] - 48["Plane
[1302, 1319, 0]"] - 55["Sweep Sweep
[1492, 1515, 0]"] + 41["Plane
[748, 773, 0]"] + 48["Plane
[1198, 1215, 0]"] + 55["Sweep Sweep
[1388, 1411, 0]"] 56[Wall] 57["Cap Start"] 58["Cap End"] 59["SweepEdge Opposite"] 60["SweepEdge Adjacent"] - 61["Plane
[784, 809, 0]"] - 68["Plane
[1302, 1319, 0]"] - 75["Sweep Sweep
[1492, 1515, 0]"] + 61["Plane
[748, 773, 0]"] + 68["Plane
[1198, 1215, 0]"] + 75["Sweep Sweep
[1388, 1411, 0]"] 76[Wall] 77["Cap Start"] 78["Cap End"] 79["SweepEdge Opposite"] 80["SweepEdge Adjacent"] - 81["Plane
[1784, 1801, 0]"] - 125["Sweep Extrusion
[3796, 3825, 0]"] + 81["Plane
[1680, 1697, 0]"] + 125["Sweep Extrusion
[3637, 3666, 0]"] 126[Wall] 127[Wall] 128[Wall] @@ -217,10 +217,10 @@ flowchart LR 173["SweepEdge Adjacent"] 174["SweepEdge Opposite"] 175["SweepEdge Adjacent"] - 176["EdgeCut Fillet
[3831, 3965, 0]"] - 177["EdgeCut Fillet
[3831, 3965, 0]"] - 178["EdgeCut Fillet
[3971, 4105, 0]"] - 179["EdgeCut Fillet
[3971, 4105, 0]"] + 176["EdgeCut Fillet
[3672, 3806, 0]"] + 177["EdgeCut Fillet
[3672, 3806, 0]"] + 178["EdgeCut Fillet
[3812, 3946, 0]"] + 179["EdgeCut Fillet
[3812, 3946, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ast.snap b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ast.snap index 3e264fbcb..da9ff35e2 100644 --- a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing exhaust-manifold.kcl "Ok": { "body": [ { - "commentStart": 126, + "commentStart": 0, "declaration": { - "commentStart": 149, + "commentStart": 0, "end": 0, "id": { - "commentStart": 149, + "commentStart": 0, "end": 0, "name": "primaryTubeDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 171, + "commentStart": 0, "end": 0, "raw": "1.625", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing exhaust-manifold.kcl "type": "VariableDeclaration" }, { - "commentStart": 177, + "commentStart": 0, "declaration": { - "commentStart": 177, + "commentStart": 0, "end": 0, "id": { - "commentStart": 177, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 193, + "commentStart": 0, "end": 0, "raw": "0.080", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing exhaust-manifold.kcl "type": "VariableDeclaration" }, { - "commentStart": 199, + "commentStart": 0, "declaration": { - "commentStart": 199, + "commentStart": 0, "end": 0, "id": { - "commentStart": 199, + "commentStart": 0, "end": 0, "name": "plateHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 213, + "commentStart": 0, "end": 0, "raw": "0.125", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing exhaust-manifold.kcl "type": "VariableDeclaration" }, { - "commentStart": 219, + "commentStart": 0, "declaration": { - "commentStart": 219, + "commentStart": 0, "end": 0, "id": { - "commentStart": 219, + "commentStart": 0, "end": 0, "name": "bendRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 232, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -141,12 +141,12 @@ description: Result of parsing exhaust-manifold.kcl "type": "VariableDeclaration" }, { - "commentStart": 233, + "commentStart": 0, "declaration": { - "commentStart": 319, + "commentStart": 0, "end": 0, "id": { - "commentStart": 319, + "commentStart": 0, "end": 0, "name": "primaryTube", "start": 0, @@ -156,26 +156,26 @@ description: Result of parsing exhaust-manifold.kcl "body": { "body": [ { - "commentStart": 378, + "commentStart": 0, "declaration": { - "commentStart": 419, + "commentStart": 0, "end": 0, "id": { - "commentStart": 419, + "commentStart": 0, "end": 0, "name": "pos001", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 428, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 428, + "commentStart": 0, "end": 0, "name": { - "commentStart": 428, + "commentStart": 0, "end": 0, "name": "n", "start": 0, @@ -188,7 +188,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "*", "right": { - "commentStart": 432, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -216,397 +216,375 @@ description: Result of parsing exhaust-manifold.kcl "type": "VariableDeclaration" }, { - "commentStart": 435, + "commentStart": 0, "declaration": { - "commentStart": 497, + "commentStart": 0, "end": 0, "id": { - "commentStart": 497, + "commentStart": 0, "end": 0, "name": "sweepPlane", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 510, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 516, + "commentStart": 0, "end": 0, "key": { - "commentStart": 516, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 524, - "end": 0, - "properties": [ + "commentStart": 0, + "elements": [ { - "commentStart": 532, + "abs_path": false, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 532, + "name": { + "commentStart": 0, "end": 0, - "name": "origin", + "name": "pos001", "start": 0, "type": "Identifier" }, + "path": [], "start": 0, - "type": "ObjectProperty", + "type": "Name", + "type": "Name" + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 541, - "elements": [ - { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "xAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "arguments": [ + { + "arguments": [ + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angle001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "callee": { "abs_path": false, - "commentStart": 542, + "commentStart": 0, "end": 0, "name": { - "commentStart": 542, + "commentStart": 0, "end": 0, - "name": "pos001", + "name": "toRadians", "start": 0, "type": "Identifier" }, "path": [], "start": 0, - "type": "Name", "type": "Name" }, - { - "commentStart": 550, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 555, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "sin", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" }, { - "commentStart": 565, - "end": 0, - "key": { - "commentStart": 565, - "end": 0, - "name": "xAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 573, - "elements": [ - { - "arguments": [ - { - "arguments": [ - { - "argument": { - "abs_path": false, - "commentStart": 598, - "end": 0, - "name": { - "commentStart": 598, - "end": 0, - "name": "angle001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 597, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "callee": { - "abs_path": false, - "commentStart": 587, + "arguments": [ + { + "arguments": [ + { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "name": { - "commentStart": 587, - "end": 0, - "name": "toRadians", - "start": 0, - "type": "Identifier" - }, - "path": [], + "name": "angle001", "start": 0, - "type": "Name" + "type": "Identifier" }, - "commentStart": 587, - "end": 0, + "path": [], "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "callee": { - "abs_path": false, - "commentStart": 583, - "end": 0, - "name": { - "commentStart": 583, - "end": 0, - "name": "sin", - "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 583, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "arguments": [ - { - "argument": { - "abs_path": false, - "commentStart": 633, - "end": 0, - "name": { - "commentStart": 633, - "end": 0, - "name": "angle001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 632, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "callee": { - "abs_path": false, - "commentStart": 622, - "end": 0, - "name": { - "commentStart": 622, - "end": 0, - "name": "toRadians", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 622, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "callee": { - "abs_path": false, - "commentStart": 618, + "commentStart": 0, "end": 0, - "name": { - "commentStart": 618, - "end": 0, - "name": "cos", - "start": 0, - "type": "Identifier" - }, - "path": [], + "operator": "-", "start": 0, - "type": "Name" - }, - "commentStart": 618, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "commentStart": 653, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" + "type": "UnaryExpression", + "type": "UnaryExpression" } - } - ], + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "toRadians", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "cos", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" }, { - "commentStart": 672, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 672, - "end": 0, - "name": "yAxis", - "start": 0, - "type": "Identifier" - }, + "raw": "0.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 680, - "elements": [ - { - "commentStart": 681, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 686, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 691, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - }, - { - "commentStart": 703, - "end": 0, - "key": { - "commentStart": 703, - "end": 0, - "name": "zAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 711, - "elements": [ - { - "commentStart": 712, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 717, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 722, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.0, + "suffix": "None" } } ], + "end": 0, "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" } } ], @@ -629,12 +607,12 @@ description: Result of parsing exhaust-manifold.kcl "type": "VariableDeclaration" }, { - "commentStart": 738, + "commentStart": 0, "declaration": { - "commentStart": 772, + "commentStart": 0, "end": 0, "id": { - "commentStart": 772, + "commentStart": 0, "end": 0, "name": "sweepPath", "start": 0, @@ -646,10 +624,10 @@ description: Result of parsing exhaust-manifold.kcl "arguments": [ { "abs_path": false, - "commentStart": 798, + "commentStart": 0, "end": 0, "name": { - "commentStart": 798, + "commentStart": 0, "end": 0, "name": "sweepPlane", "start": 0, @@ -663,10 +641,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 784, + "commentStart": 0, "end": 0, "name": { - "commentStart": 784, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -676,7 +654,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 784, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -685,10 +663,10 @@ description: Result of parsing exhaust-manifold.kcl { "arguments": [ { - "commentStart": 832, + "commentStart": 0, "elements": [ { - "commentStart": 833, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -701,10 +679,10 @@ description: Result of parsing exhaust-manifold.kcl }, { "abs_path": false, - "commentStart": 836, + "commentStart": 0, "end": 0, "name": { - "commentStart": 836, + "commentStart": 0, "end": 0, "name": "plateHeight", "start": 0, @@ -722,7 +700,7 @@ description: Result of parsing exhaust-manifold.kcl "type": "ArrayExpression" }, { - "commentStart": 850, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -731,10 +709,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 817, + "commentStart": 0, "end": 0, "name": { - "commentStart": 817, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -744,7 +722,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 817, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -755,17 +733,17 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 865, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 871, + "commentStart": 0, "elements": [ { - "commentStart": 872, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -778,10 +756,10 @@ description: Result of parsing exhaust-manifold.kcl }, { "abs_path": false, - "commentStart": 875, + "commentStart": 0, "end": 0, "name": { - "commentStart": 875, + "commentStart": 0, "end": 0, "name": "length001", "start": 0, @@ -802,10 +780,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 860, + "commentStart": 0, "end": 0, "name": { - "commentStart": 860, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -815,7 +793,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 860, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -825,98 +803,86 @@ description: Result of parsing exhaust-manifold.kcl { "arguments": [ { - "commentStart": 908, - "end": 0, - "properties": [ - { - "commentStart": 910, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 910, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, + "raw": "80", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "argument": { - "commentStart": 920, - "end": 0, - "raw": "80", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 80.0, - "suffix": "None" - } - }, - "commentStart": 919, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "value": 80.0, + "suffix": "None" } }, - { - "commentStart": 924, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 924, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, + "name": "bendRadius", "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 933, - "end": 0, - "name": { - "commentStart": 933, - "end": 0, - "name": "bendRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 947, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 950, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "arc01" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "arc01" + } } ], "callee": { "abs_path": false, - "commentStart": 894, + "commentStart": 0, "end": 0, "name": { - "commentStart": 894, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -926,91 +892,34 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 894, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 976, - "end": 0, - "properties": [ - { - "commentStart": 987, - "end": 0, - "key": { - "commentStart": 987, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "arguments": [ - { - "abs_path": false, - "commentStart": 1008, - "end": 0, - "name": { - "commentStart": 1008, - "end": 0, - "name": "arc01", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 995, - "end": 0, - "name": { - "commentStart": 995, - "end": 0, - "name": "tangentToEnd", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 995, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - }, - { - "commentStart": 1025, - "end": 0, - "key": { - "commentStart": 1025, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { "abs_path": false, - "commentStart": 1034, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1034, + "commentStart": 0, "end": 0, - "name": "length002", + "name": "arc01", "start": 0, "type": "Identifier" }, @@ -1019,26 +928,62 @@ description: Result of parsing exhaust-manifold.kcl "type": "Name", "type": "Name" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentToEnd", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } }, { - "commentStart": 1054, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "length002", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 965, + "commentStart": 0, "end": 0, "name": { - "commentStart": 965, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -1048,99 +993,88 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 965, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1078, - "end": 0, - "properties": [ - { - "commentStart": 1080, - "end": 0, - "key": { - "commentStart": 1080, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1089, - "end": 0, - "raw": "85", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 85.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1093, - "end": 0, - "key": { - "commentStart": 1093, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1102, - "end": 0, - "name": { - "commentStart": 1102, - "end": 0, - "name": "bendRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "85", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 85.0, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 1116, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 1119, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "arc02" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "arc02" + } } ], "callee": { "abs_path": false, - "commentStart": 1064, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1064, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -1150,91 +1084,34 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 1064, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1145, - "end": 0, - "properties": [ - { - "commentStart": 1156, - "end": 0, - "key": { - "commentStart": 1156, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "arguments": [ - { - "abs_path": false, - "commentStart": 1177, - "end": 0, - "name": { - "commentStart": 1177, - "end": 0, - "name": "arc02", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1164, - "end": 0, - "name": { - "commentStart": 1164, - "end": 0, - "name": "tangentToEnd", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1164, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - }, - { - "commentStart": 1194, - "end": 0, - "key": { - "commentStart": 1194, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { "abs_path": false, - "commentStart": 1203, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1203, + "commentStart": 0, "end": 0, - "name": "length003", + "name": "arc02", "start": 0, "type": "Identifier" }, @@ -1243,26 +1120,62 @@ description: Result of parsing exhaust-manifold.kcl "type": "Name", "type": "Name" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentToEnd", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } }, { - "commentStart": 1223, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "length003", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1134, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1134, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -1272,20 +1185,21 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 1134, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null } ], - "commentStart": 784, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "6": [ { - "commentStart": 1227, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1318,12 +1232,12 @@ description: Result of parsing exhaust-manifold.kcl "type": "VariableDeclaration" }, { - "commentStart": 1287, + "commentStart": 0, "declaration": { - "commentStart": 1287, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1287, + "commentStart": 0, "end": 0, "name": "sweepProfile", "start": 0, @@ -1335,10 +1249,10 @@ description: Result of parsing exhaust-manifold.kcl "arguments": [ { "abs_path": false, - "commentStart": 1316, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1316, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -1352,10 +1266,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 1302, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1302, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1365,7 +1279,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 1302, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1376,21 +1290,21 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 1334, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1343, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1344, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1344, + "commentStart": 0, "end": 0, "name": "pos001", "start": 0, @@ -1402,7 +1316,7 @@ description: Result of parsing exhaust-manifold.kcl "type": "Name" }, { - "commentStart": 1352, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1423,21 +1337,21 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 1356, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1365, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1365, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1365, + "commentStart": 0, "end": 0, "name": "primaryTubeDiameter", "start": 0, @@ -1450,7 +1364,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "/", "right": { - "commentStart": 1387, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1469,10 +1383,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 1327, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1327, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1482,7 +1396,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 1327, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1496,21 +1410,21 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 1409, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1418, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1419, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1419, + "commentStart": 0, "end": 0, "name": "pos001", "start": 0, @@ -1522,7 +1436,7 @@ description: Result of parsing exhaust-manifold.kcl "type": "Name" }, { - "commentStart": 1427, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1543,24 +1457,24 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 1431, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1440, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1440, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1440, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1440, + "commentStart": 0, "end": 0, "name": "primaryTubeDiameter", "start": 0, @@ -1573,7 +1487,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "/", "right": { - "commentStart": 1462, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1591,10 +1505,10 @@ description: Result of parsing exhaust-manifold.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1466, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1466, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -1613,10 +1527,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 1402, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1402, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1626,7 +1540,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 1402, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1634,7 +1548,7 @@ description: Result of parsing exhaust-manifold.kcl "unlabeled": null }, { - "commentStart": 1482, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1643,10 +1557,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 1397, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1397, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -1656,7 +1570,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 1397, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1667,7 +1581,7 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 1498, + "commentStart": 0, "end": 0, "name": "path", "start": 0, @@ -1675,10 +1589,10 @@ description: Result of parsing exhaust-manifold.kcl }, "arg": { "abs_path": false, - "commentStart": 1505, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1505, + "commentStart": 0, "end": 0, "name": "sweepPath", "start": 0, @@ -1693,10 +1607,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 1492, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1492, + "commentStart": 0, "end": 0, "name": "sweep", "start": 0, @@ -1706,7 +1620,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 1492, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1714,7 +1628,7 @@ description: Result of parsing exhaust-manifold.kcl "unlabeled": null } ], - "commentStart": 1302, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1731,27 +1645,27 @@ description: Result of parsing exhaust-manifold.kcl }, { "argument": { - "commentStart": 1526, + "commentStart": 0, "end": 0, "properties": [], "start": 0, "type": "ObjectExpression", "type": "ObjectExpression" }, - "commentStart": 1515, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 378, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "3": [ { - "commentStart": 1515, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1765,13 +1679,13 @@ description: Result of parsing exhaust-manifold.kcl }, "start": 0 }, - "commentStart": 330, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 331, + "commentStart": 0, "end": 0, "name": "n", "start": 0, @@ -1781,7 +1695,7 @@ description: Result of parsing exhaust-manifold.kcl { "type": "Parameter", "identifier": { - "commentStart": 334, + "commentStart": 0, "end": 0, "name": "angle001", "start": 0, @@ -1791,7 +1705,7 @@ description: Result of parsing exhaust-manifold.kcl { "type": "Parameter", "identifier": { - "commentStart": 344, + "commentStart": 0, "end": 0, "name": "length001", "start": 0, @@ -1801,7 +1715,7 @@ description: Result of parsing exhaust-manifold.kcl { "type": "Parameter", "identifier": { - "commentStart": 355, + "commentStart": 0, "end": 0, "name": "length002", "start": 0, @@ -1811,7 +1725,7 @@ description: Result of parsing exhaust-manifold.kcl { "type": "Parameter", "identifier": { - "commentStart": 366, + "commentStart": 0, "end": 0, "name": "length003", "start": 0, @@ -1838,12 +1752,12 @@ description: Result of parsing exhaust-manifold.kcl "type": "VariableDeclaration" }, { - "commentStart": 1532, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 1621, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1855,7 +1769,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1624, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1867,7 +1781,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1627, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -1879,7 +1793,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1630, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -1891,7 +1805,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1633, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -1905,10 +1819,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 1609, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1609, + "commentStart": 0, "end": 0, "name": "primaryTube", "start": 0, @@ -1918,7 +1832,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 1609, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1934,12 +1848,12 @@ description: Result of parsing exhaust-manifold.kcl "type": "ExpressionStatement" }, { - "commentStart": 1636, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 1648, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1951,7 +1865,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1651, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1963,7 +1877,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1654, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -1975,7 +1889,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1657, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -1987,7 +1901,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1660, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -2001,10 +1915,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 1636, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1636, + "commentStart": 0, "end": 0, "name": "primaryTube", "start": 0, @@ -2014,7 +1928,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 1636, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2025,12 +1939,12 @@ description: Result of parsing exhaust-manifold.kcl "type": "ExpressionStatement" }, { - "commentStart": 1663, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 1675, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2042,7 +1956,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1678, + "commentStart": 0, "end": 0, "raw": "24.3", "start": 0, @@ -2054,7 +1968,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1684, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -2066,7 +1980,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1687, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -2078,7 +1992,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1690, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -2092,10 +2006,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 1663, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1663, + "commentStart": 0, "end": 0, "name": "primaryTube", "start": 0, @@ -2105,7 +2019,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 1663, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2116,12 +2030,12 @@ description: Result of parsing exhaust-manifold.kcl "type": "ExpressionStatement" }, { - "commentStart": 1693, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 1705, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -2133,7 +2047,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1708, + "commentStart": 0, "end": 0, "raw": "25.2", "start": 0, @@ -2145,7 +2059,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1714, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -2157,7 +2071,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1717, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -2169,7 +2083,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 1720, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -2183,10 +2097,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 1693, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1693, + "commentStart": 0, "end": 0, "name": "primaryTube", "start": 0, @@ -2196,7 +2110,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 1693, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2207,12 +2121,12 @@ description: Result of parsing exhaust-manifold.kcl "type": "ExpressionStatement" }, { - "commentStart": 1722, + "commentStart": 0, "declaration": { - "commentStart": 1769, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1769, + "commentStart": 0, "end": 0, "name": "flangeSketch", "start": 0, @@ -2224,10 +2138,10 @@ description: Result of parsing exhaust-manifold.kcl "arguments": [ { "abs_path": false, - "commentStart": 1798, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1798, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -2241,10 +2155,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 1784, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1784, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2254,7 +2168,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 1784, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2263,13 +2177,13 @@ description: Result of parsing exhaust-manifold.kcl { "arguments": [ { - "commentStart": 1822, + "commentStart": 0, "elements": [ { - "commentStart": 1823, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1823, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -2282,7 +2196,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "+", "right": { - "commentStart": 1827, + "commentStart": 0, "end": 0, "raw": "1.3", "start": 0, @@ -2299,7 +2213,7 @@ description: Result of parsing exhaust-manifold.kcl }, { "argument": { - "commentStart": 1833, + "commentStart": 0, "end": 0, "raw": "1.25", "start": 0, @@ -2310,7 +2224,7 @@ description: Result of parsing exhaust-manifold.kcl "suffix": "None" } }, - "commentStart": 1832, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2324,7 +2238,7 @@ description: Result of parsing exhaust-manifold.kcl "type": "ArrayExpression" }, { - "commentStart": 1840, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2333,10 +2247,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 1807, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1807, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2346,7 +2260,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 1807, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2357,7 +2271,7 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 1854, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2365,7 +2279,7 @@ description: Result of parsing exhaust-manifold.kcl }, "arg": { "argument": { - "commentStart": 1864, + "commentStart": 0, "end": 0, "raw": "2.6", "start": 0, @@ -2376,7 +2290,7 @@ description: Result of parsing exhaust-manifold.kcl "suffix": "None" } }, - "commentStart": 1863, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2387,14 +2301,14 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 1869, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1875, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2405,10 +2319,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 1848, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1848, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2418,7 +2332,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 1848, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2428,86 +2342,64 @@ description: Result of parsing exhaust-manifold.kcl { "arguments": [ { - "commentStart": 1902, - "end": 0, - "properties": [ - { - "commentStart": 1904, - "end": 0, - "key": { - "commentStart": 1904, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1913, - "end": 0, - "raw": ".3", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.3, - "suffix": "None" - } - } - }, - { - "commentStart": 1917, - "end": 0, - "key": { - "commentStart": 1917, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 1927, - "end": 0, - "raw": "40", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 40.0, - "suffix": "None" - } - }, - "commentStart": 1926, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": ".3", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.3, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 1933, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "40", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 40.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1888, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1888, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -2517,206 +2409,165 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 1888, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1955, - "end": 0, - "properties": [ - { - "commentStart": 1957, - "end": 0, - "key": { - "commentStart": 1957, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1966, - "end": 0, - "raw": ".9", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.9, - "suffix": "None" - } - } - }, - { - "commentStart": 1970, - "end": 0, - "key": { - "commentStart": 1970, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1979, - "end": 0, - "raw": "80", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 80.0, - "suffix": "None" - } - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1985, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1941, - "end": 0, - "name": { - "commentStart": 1941, - "end": 0, - "name": "tangentialArc", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1941, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2007, - "end": 0, - "properties": [ - { - "commentStart": 2009, - "end": 0, - "key": { - "commentStart": 2009, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2018, - "end": 0, - "raw": ".3", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.3, - "suffix": "None" - } - } - }, - { - "commentStart": 2022, - "end": 0, - "key": { - "commentStart": 2022, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 2032, - "end": 0, - "raw": "40", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 40.0, - "suffix": "None" - } - }, - "commentStart": 2031, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 2038, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1993, - "end": 0, - "name": { - "commentStart": 1993, - "end": 0, - "name": "tangentialArc", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1993, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2052, + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": ".9", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.9, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "80", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 80.0, + "suffix": "None" + } + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": ".3", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.3, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "40", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 40.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2724,7 +2575,7 @@ description: Result of parsing exhaust-manifold.kcl }, "arg": { "argument": { - "commentStart": 2062, + "commentStart": 0, "end": 0, "raw": "1.4", "start": 0, @@ -2735,7 +2586,7 @@ description: Result of parsing exhaust-manifold.kcl "suffix": "None" } }, - "commentStart": 2061, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2746,14 +2597,14 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2067, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2073, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2764,10 +2615,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2046, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2046, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2777,7 +2628,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2046, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2789,7 +2640,7 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2092, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2799,10 +2650,10 @@ description: Result of parsing exhaust-manifold.kcl "arguments": [ { "abs_path": false, - "commentStart": 2108, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2108, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -2816,10 +2667,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2101, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -2829,7 +2680,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2101, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2839,14 +2690,14 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2116, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2122, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2857,10 +2708,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2086, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2086, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2870,7 +2721,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2086, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2882,14 +2733,14 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2141, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2150, + "commentStart": 0, "end": 0, "raw": "3.1", "start": 0, @@ -2904,14 +2755,14 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2155, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2161, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2922,10 +2773,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2135, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2135, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2935,7 +2786,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2135, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2945,86 +2796,64 @@ description: Result of parsing exhaust-manifold.kcl { "arguments": [ { - "commentStart": 2188, - "end": 0, - "properties": [ - { - "commentStart": 2190, - "end": 0, - "key": { - "commentStart": 2190, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2199, - "end": 0, - "raw": ".3", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.3, - "suffix": "None" - } - } - }, - { - "commentStart": 2203, - "end": 0, - "key": { - "commentStart": 2203, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 2213, - "end": 0, - "raw": "40", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 40.0, - "suffix": "None" - } - }, - "commentStart": 2212, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": ".3", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.3, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 2219, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "40", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 40.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 2174, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2174, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -3034,206 +2863,165 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2174, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2241, - "end": 0, - "properties": [ - { - "commentStart": 2243, - "end": 0, - "key": { - "commentStart": 2243, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2252, - "end": 0, - "raw": "1.5", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.5, - "suffix": "None" - } - } - }, - { - "commentStart": 2257, - "end": 0, - "key": { - "commentStart": 2257, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2266, - "end": 0, - "raw": "80", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 80.0, - "suffix": "None" - } - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 2272, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2227, - "end": 0, - "name": { - "commentStart": 2227, - "end": 0, - "name": "tangentialArc", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2227, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2294, - "end": 0, - "properties": [ - { - "commentStart": 2296, - "end": 0, - "key": { - "commentStart": 2296, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2305, - "end": 0, - "raw": ".3", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.3, - "suffix": "None" - } - } - }, - { - "commentStart": 2309, - "end": 0, - "key": { - "commentStart": 2309, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 2319, - "end": 0, - "raw": "40", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 40.0, - "suffix": "None" - } - }, - "commentStart": 2318, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 2325, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2280, - "end": 0, - "name": { - "commentStart": 2280, - "end": 0, - "name": "tangentialArc", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2280, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2339, + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "1.5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.5, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "80", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 80.0, + "suffix": "None" + } + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": ".3", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.3, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "40", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 40.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3243,10 +3031,10 @@ description: Result of parsing exhaust-manifold.kcl "arguments": [ { "abs_path": false, - "commentStart": 2355, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2355, + "commentStart": 0, "end": 0, "name": "seg05", "start": 0, @@ -3260,10 +3048,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2348, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2348, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -3273,7 +3061,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2348, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3283,14 +3071,14 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2363, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2369, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3301,10 +3089,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2333, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2333, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -3314,7 +3102,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2333, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3326,7 +3114,7 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2388, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -3335,7 +3123,7 @@ description: Result of parsing exhaust-manifold.kcl "arg": { "arguments": [ { - "commentStart": 2416, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3344,10 +3132,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2402, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2402, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -3357,7 +3145,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2402, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3367,14 +3155,14 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2420, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2426, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3385,10 +3173,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2382, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2382, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -3398,7 +3186,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2382, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3410,7 +3198,7 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2445, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3421,10 +3209,10 @@ description: Result of parsing exhaust-manifold.kcl "arguments": [ { "abs_path": false, - "commentStart": 2462, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2462, + "commentStart": 0, "end": 0, "name": "seg03", "start": 0, @@ -3438,10 +3226,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2455, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2455, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -3451,13 +3239,13 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2455, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - "commentStart": 2454, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3468,14 +3256,14 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2470, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2476, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3486,10 +3274,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2439, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2439, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -3499,7 +3287,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2439, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3509,86 +3297,239 @@ description: Result of parsing exhaust-manifold.kcl { "arguments": [ { - "commentStart": 2503, - "end": 0, - "properties": [ - { - "commentStart": 2505, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": ".3", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.3, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 2505, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, + "raw": "40", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 2514, - "end": 0, - "raw": ".3", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.3, - "suffix": "None" - } + "value": 40.0, + "suffix": "None" } }, - { - "commentStart": 2518, - "end": 0, - "key": { - "commentStart": 2518, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 2528, - "end": 0, - "raw": "40", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 40.0, - "suffix": "None" + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": ".9", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.9, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "80", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 80.0, + "suffix": "None" + } + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "arguments": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeSubstitution", + "type": "PipeSubstitution" } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "profileStartX", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" }, - "commentStart": 2527, + "commentStart": 0, "end": 0, - "operator": "-", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "profileStartY", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 2534, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 2489, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2489, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -3598,212 +3539,21 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2489, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2556, - "end": 0, - "properties": [ - { - "commentStart": 2558, - "end": 0, - "key": { - "commentStart": 2558, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2567, - "end": 0, - "raw": ".9", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.9, - "suffix": "None" - } - } - }, - { - "commentStart": 2571, - "end": 0, - "key": { - "commentStart": 2571, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2580, - "end": 0, - "raw": "80", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 80.0, - "suffix": "None" - } - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 2586, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2542, - "end": 0, - "name": { - "commentStart": 2542, - "end": 0, - "name": "tangentialArc", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2542, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2610, - "elements": [ - { - "arguments": [ - { - "commentStart": 2625, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2611, - "end": 0, - "name": { - "commentStart": 2611, - "end": 0, - "name": "profileStartX", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2611, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2643, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2629, - "end": 0, - "name": { - "commentStart": 2629, - "end": 0, - "name": "profileStartY", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2629, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2648, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2594, - "end": 0, - "name": { - "commentStart": 2594, - "end": 0, - "name": "tangentialArcTo", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2594, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [], "callee": { "abs_path": false, - "commentStart": 2656, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2656, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -3813,7 +3563,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2656, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3826,17 +3576,17 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2742, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2751, + "commentStart": 0, "elements": [ { - "commentStart": 2752, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3848,7 +3598,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 2755, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3869,24 +3619,24 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2759, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2768, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2768, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2768, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2768, + "commentStart": 0, "end": 0, "name": "primaryTubeDiameter", "start": 0, @@ -3899,7 +3649,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "/", "right": { - "commentStart": 2790, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3917,10 +3667,10 @@ description: Result of parsing exhaust-manifold.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 2794, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2794, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -3939,10 +3689,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2735, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2735, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -3952,7 +3702,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2735, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3960,7 +3710,7 @@ description: Result of parsing exhaust-manifold.kcl "unlabeled": null }, { - "commentStart": 2810, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3969,10 +3719,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2730, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2730, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -3982,7 +3732,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2730, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3995,17 +3745,17 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2830, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2839, + "commentStart": 0, "elements": [ { - "commentStart": 2840, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4017,7 +3767,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 2843, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4038,24 +3788,24 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2847, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2856, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2856, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2856, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2856, + "commentStart": 0, "end": 0, "name": "primaryTubeDiameter", "start": 0, @@ -4068,7 +3818,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "/", "right": { - "commentStart": 2878, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4086,10 +3836,10 @@ description: Result of parsing exhaust-manifold.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 2882, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2882, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -4108,10 +3858,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2823, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2823, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -4121,7 +3871,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2823, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4129,7 +3879,7 @@ description: Result of parsing exhaust-manifold.kcl "unlabeled": null }, { - "commentStart": 2898, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4138,10 +3888,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2818, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2818, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -4151,7 +3901,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2818, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4164,17 +3914,17 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2918, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2927, + "commentStart": 0, "elements": [ { - "commentStart": 2928, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -4186,7 +3936,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 2931, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4207,24 +3957,24 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 2935, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2944, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2944, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2944, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2944, + "commentStart": 0, "end": 0, "name": "primaryTubeDiameter", "start": 0, @@ -4237,7 +3987,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "/", "right": { - "commentStart": 2966, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4255,10 +4005,10 @@ description: Result of parsing exhaust-manifold.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 2970, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2970, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -4277,10 +4027,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2911, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2911, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -4290,7 +4040,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2911, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4298,7 +4048,7 @@ description: Result of parsing exhaust-manifold.kcl "unlabeled": null }, { - "commentStart": 2986, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4307,10 +4057,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2906, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2906, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -4320,7 +4070,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2906, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4333,17 +4083,17 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 3006, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3015, + "commentStart": 0, "elements": [ { - "commentStart": 3016, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -4355,7 +4105,7 @@ description: Result of parsing exhaust-manifold.kcl } }, { - "commentStart": 3019, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4376,24 +4126,24 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 3023, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3032, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3032, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3032, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3032, + "commentStart": 0, "end": 0, "name": "primaryTubeDiameter", "start": 0, @@ -4406,7 +4156,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "/", "right": { - "commentStart": 3054, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4424,10 +4174,10 @@ description: Result of parsing exhaust-manifold.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 3058, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3058, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -4446,10 +4196,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2999, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2999, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -4459,7 +4209,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2999, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4467,7 +4217,7 @@ description: Result of parsing exhaust-manifold.kcl "unlabeled": null }, { - "commentStart": 3074, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4476,10 +4226,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 2994, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2994, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -4489,7 +4239,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 2994, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4502,25 +4252,25 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 3141, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3150, + "commentStart": 0, "elements": [ { - "commentStart": 3161, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 3162, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3162, + "commentStart": 0, "end": 0, "name": "primaryTubeDiameter", "start": 0, @@ -4531,7 +4281,7 @@ description: Result of parsing exhaust-manifold.kcl "type": "Name", "type": "Name" }, - "commentStart": 3161, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4540,7 +4290,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "*", "right": { - "commentStart": 3184, + "commentStart": 0, "end": 0, "raw": ".6", "start": 0, @@ -4556,15 +4306,15 @@ description: Result of parsing exhaust-manifold.kcl "type": "BinaryExpression" }, { - "commentStart": 3197, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 3198, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3198, + "commentStart": 0, "end": 0, "name": "primaryTubeDiameter", "start": 0, @@ -4575,7 +4325,7 @@ description: Result of parsing exhaust-manifold.kcl "type": "Name", "type": "Name" }, - "commentStart": 3197, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4584,7 +4334,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "*", "right": { - "commentStart": 3220, + "commentStart": 0, "end": 0, "raw": ".6", "start": 0, @@ -4609,17 +4359,17 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 3240, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3249, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3249, + "commentStart": 0, "end": 0, "raw": "0.25", "start": 0, @@ -4632,7 +4382,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "/", "right": { - "commentStart": 3256, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4651,10 +4401,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 3126, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3126, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -4664,7 +4414,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 3126, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4672,7 +4422,7 @@ description: Result of parsing exhaust-manifold.kcl "unlabeled": null }, { - "commentStart": 3267, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4681,10 +4431,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 3121, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3121, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -4694,7 +4444,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 3121, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4707,24 +4457,24 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 3295, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3304, + "commentStart": 0, "elements": [ { - "commentStart": 3315, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3315, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3315, + "commentStart": 0, "end": 0, "name": "primaryTubeDiameter", "start": 0, @@ -4737,7 +4487,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "*", "right": { - "commentStart": 3337, + "commentStart": 0, "end": 0, "raw": ".6", "start": 0, @@ -4753,14 +4503,14 @@ description: Result of parsing exhaust-manifold.kcl "type": "BinaryExpression" }, { - "commentStart": 3350, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3350, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3350, + "commentStart": 0, "end": 0, "name": "primaryTubeDiameter", "start": 0, @@ -4773,7 +4523,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "*", "right": { - "commentStart": 3372, + "commentStart": 0, "end": 0, "raw": ".6", "start": 0, @@ -4798,17 +4548,17 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 3392, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3401, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3401, + "commentStart": 0, "end": 0, "raw": "0.25", "start": 0, @@ -4821,7 +4571,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "/", "right": { - "commentStart": 3408, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4840,10 +4590,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 3280, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3280, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -4853,7 +4603,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 3280, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4861,7 +4611,7 @@ description: Result of parsing exhaust-manifold.kcl "unlabeled": null }, { - "commentStart": 3419, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4870,10 +4620,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 3275, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3275, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -4883,7 +4633,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 3275, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4896,23 +4646,23 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 3447, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3456, + "commentStart": 0, "elements": [ { - "commentStart": 3467, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3467, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3467, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -4925,7 +4675,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "*", "right": { - "commentStart": 3471, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4942,14 +4692,14 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "-", "right": { - "commentStart": 3476, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3476, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3476, + "commentStart": 0, "end": 0, "name": "primaryTubeDiameter", "start": 0, @@ -4962,7 +4712,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "*", "right": { - "commentStart": 3498, + "commentStart": 0, "end": 0, "raw": ".6", "start": 0, @@ -4982,14 +4732,14 @@ description: Result of parsing exhaust-manifold.kcl "type": "BinaryExpression" }, { - "commentStart": 3512, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3512, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3512, + "commentStart": 0, "end": 0, "name": "primaryTubeDiameter", "start": 0, @@ -5002,7 +4752,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "*", "right": { - "commentStart": 3534, + "commentStart": 0, "end": 0, "raw": ".6", "start": 0, @@ -5027,17 +4777,17 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 3554, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3563, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3563, + "commentStart": 0, "end": 0, "raw": "0.25", "start": 0, @@ -5050,7 +4800,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "/", "right": { - "commentStart": 3570, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5069,10 +4819,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 3432, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3432, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -5082,7 +4832,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 3432, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5090,7 +4840,7 @@ description: Result of parsing exhaust-manifold.kcl "unlabeled": null }, { - "commentStart": 3581, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5099,10 +4849,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 3427, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3427, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -5112,7 +4862,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 3427, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5125,23 +4875,23 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 3609, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3618, + "commentStart": 0, "elements": [ { - "commentStart": 3629, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3629, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3629, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -5154,7 +4904,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "*", "right": { - "commentStart": 3633, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5171,14 +4921,14 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "+", "right": { - "commentStart": 3637, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3637, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3637, + "commentStart": 0, "end": 0, "name": "primaryTubeDiameter", "start": 0, @@ -5191,7 +4941,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "*", "right": { - "commentStart": 3659, + "commentStart": 0, "end": 0, "raw": ".6", "start": 0, @@ -5211,15 +4961,15 @@ description: Result of parsing exhaust-manifold.kcl "type": "BinaryExpression" }, { - "commentStart": 3672, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 3673, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3673, + "commentStart": 0, "end": 0, "name": "primaryTubeDiameter", "start": 0, @@ -5230,7 +4980,7 @@ description: Result of parsing exhaust-manifold.kcl "type": "Name", "type": "Name" }, - "commentStart": 3672, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5239,7 +4989,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "*", "right": { - "commentStart": 3695, + "commentStart": 0, "end": 0, "raw": ".6", "start": 0, @@ -5264,17 +5014,17 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 3715, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3724, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3724, + "commentStart": 0, "end": 0, "raw": "0.25", "start": 0, @@ -5287,7 +5037,7 @@ description: Result of parsing exhaust-manifold.kcl }, "operator": "/", "right": { - "commentStart": 3731, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5306,10 +5056,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 3594, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3594, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -5319,7 +5069,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 3594, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5327,7 +5077,7 @@ description: Result of parsing exhaust-manifold.kcl "unlabeled": null }, { - "commentStart": 3742, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5336,10 +5086,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 3589, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3589, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -5349,7 +5099,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 3589, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5360,7 +5110,7 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 3804, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -5368,10 +5118,10 @@ description: Result of parsing exhaust-manifold.kcl }, "arg": { "abs_path": false, - "commentStart": 3813, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3813, + "commentStart": 0, "end": 0, "name": "plateHeight", "start": 0, @@ -5386,10 +5136,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 3796, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3796, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -5399,7 +5149,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 3796, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5411,14 +5161,14 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 3846, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3855, + "commentStart": 0, "end": 0, "raw": "1.5", "start": 0, @@ -5433,23 +5183,23 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 3867, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3874, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 3905, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3905, + "commentStart": 0, "end": 0, "name": "seg04", "start": 0, @@ -5463,10 +5213,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 3885, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3885, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -5476,7 +5226,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 3885, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5486,10 +5236,10 @@ description: Result of parsing exhaust-manifold.kcl "arguments": [ { "abs_path": false, - "commentStart": 3942, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3942, + "commentStart": 0, "end": 0, "name": "seg07", "start": 0, @@ -5503,10 +5253,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 3922, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3922, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -5516,7 +5266,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 3922, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5532,10 +5282,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 3831, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3831, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -5545,7 +5295,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 3831, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5557,14 +5307,14 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 3986, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3995, + "commentStart": 0, "end": 0, "raw": ".25", "start": 0, @@ -5579,23 +5329,23 @@ description: Result of parsing exhaust-manifold.kcl { "type": "LabeledArg", "label": { - "commentStart": 4007, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4014, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 4045, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4045, + "commentStart": 0, "end": 0, "name": "seg03", "start": 0, @@ -5609,10 +5359,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 4025, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4025, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -5622,7 +5372,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 4025, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5632,10 +5382,10 @@ description: Result of parsing exhaust-manifold.kcl "arguments": [ { "abs_path": false, - "commentStart": 4082, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4082, + "commentStart": 0, "end": 0, "name": "seg08", "start": 0, @@ -5649,10 +5399,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 4062, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4062, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -5662,7 +5412,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 4062, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5678,10 +5428,10 @@ description: Result of parsing exhaust-manifold.kcl ], "callee": { "abs_path": false, - "commentStart": 3971, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3971, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -5691,7 +5441,7 @@ description: Result of parsing exhaust-manifold.kcl "start": 0, "type": "Name" }, - "commentStart": 3971, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5699,13 +5449,13 @@ description: Result of parsing exhaust-manifold.kcl "unlabeled": null } ], - "commentStart": 1784, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "18": [ { - "commentStart": 2665, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5718,7 +5468,7 @@ description: Result of parsing exhaust-manifold.kcl ], "22": [ { - "commentStart": 3078, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5731,7 +5481,7 @@ description: Result of parsing exhaust-manifold.kcl ], "26": [ { - "commentStart": 3746, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5771,7 +5521,7 @@ description: Result of parsing exhaust-manifold.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 94, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -5786,10 +5536,10 @@ description: Result of parsing exhaust-manifold.kcl ], "properties": [ { - "commentStart": 103, + "commentStart": 0, "end": 0, "key": { - "commentStart": 103, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -5799,10 +5549,10 @@ description: Result of parsing exhaust-manifold.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 123, + "commentStart": 0, "end": 0, "name": { - "commentStart": 123, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -5823,7 +5573,7 @@ description: Result of parsing exhaust-manifold.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 126, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ops.snap b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ops.snap index a31c5f1ca..75a75bffa 100644 --- a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/ops.snap @@ -10,7 +10,7 @@ description: Operations executed exhaust-manifold.kcl "name": "primaryTube", "functionSourceRange": [ 330, - 1532, + 1428, 0 ], "unlabeledArg": null, @@ -56,174 +56,175 @@ description: Operations executed exhaust-manifold.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Unknown" - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": -0.0, - "ty": { - "type": "Known", - "type": "Count" - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Known", - "type": "Count" - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": -0.0, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -237,7 +238,7 @@ description: Operations executed exhaust-manifold.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -311,7 +312,7 @@ description: Operations executed exhaust-manifold.kcl "name": "primaryTube", "functionSourceRange": [ 330, - 1532, + 1428, 0 ], "unlabeledArg": null, @@ -357,174 +358,175 @@ description: Operations executed exhaust-manifold.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 2.0, - "ty": { - "type": "Unknown" - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 2.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": -0.01745240643728351, - "ty": { - "type": "Known", - "type": "Count" - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.9998476951563913, - "ty": { - "type": "Known", - "type": "Count" - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": -0.01745240643728351, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.9998476951563913, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -538,7 +540,7 @@ description: Operations executed exhaust-manifold.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -612,7 +614,7 @@ description: Operations executed exhaust-manifold.kcl "name": "primaryTube", "functionSourceRange": [ 330, - 1532, + 1428, 0 ], "unlabeledArg": null, @@ -658,174 +660,175 @@ description: Operations executed exhaust-manifold.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 4.0, - "ty": { - "type": "Unknown" - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": -0.4115143586051088, - "ty": { - "type": "Known", - "type": "Count" - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.9114032766354453, - "ty": { - "type": "Known", - "type": "Count" - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": -0.4115143586051088, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.9114032766354453, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -839,7 +842,7 @@ description: Operations executed exhaust-manifold.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -913,7 +916,7 @@ description: Operations executed exhaust-manifold.kcl "name": "primaryTube", "functionSourceRange": [ 330, - 1532, + 1428, 0 ], "unlabeledArg": null, @@ -959,174 +962,175 @@ description: Operations executed exhaust-manifold.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 6.0, - "ty": { - "type": "Unknown" - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 6.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": -0.42577929156507266, - "ty": { - "type": "Known", - "type": "Count" - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.9048270524660196, - "ty": { - "type": "Known", - "type": "Count" - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": -0.42577929156507266, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.9048270524660196, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -1140,7 +1144,7 @@ description: Operations executed exhaust-manifold.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1209,7 +1213,7 @@ description: Operations executed exhaust-manifold.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/program_memory.snap index fcd9932d5..ebfcdc34d 100644 --- a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/program_memory.snap @@ -28,9 +28,9 @@ description: Variables in memory after executing exhaust-manifold.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1875, - "end": 1881, - "start": 1875, + "commentStart": 1771, + "end": 1777, + "start": 1771, "type": "TagDeclarator", "value": "seg01" }, @@ -62,9 +62,9 @@ description: Variables in memory after executing exhaust-manifold.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2073, - "end": 2079, - "start": 2073, + "commentStart": 1945, + "end": 1951, + "start": 1945, "type": "TagDeclarator", "value": "seg03" }, @@ -75,9 +75,9 @@ description: Variables in memory after executing exhaust-manifold.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2122, - "end": 2128, - "start": 2122, + "commentStart": 1994, + "end": 2000, + "start": 1994, "type": "TagDeclarator", "value": "seg04" }, @@ -88,9 +88,9 @@ description: Variables in memory after executing exhaust-manifold.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2161, - "end": 2167, - "start": 2161, + "commentStart": 2033, + "end": 2039, + "start": 2033, "type": "TagDeclarator", "value": "seg05" }, @@ -122,9 +122,9 @@ description: Variables in memory after executing exhaust-manifold.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2369, - "end": 2375, - "start": 2369, + "commentStart": 2217, + "end": 2223, + "start": 2217, "type": "TagDeclarator", "value": "seg07" }, @@ -135,9 +135,9 @@ description: Variables in memory after executing exhaust-manifold.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2426, - "end": 2432, - "start": 2426, + "commentStart": 2274, + "end": 2280, + "start": 2274, "type": "TagDeclarator", "value": "seg08" }, @@ -148,9 +148,9 @@ description: Variables in memory after executing exhaust-manifold.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2476, - "end": 2482, - "start": 2476, + "commentStart": 2324, + "end": 2330, + "start": 2324, "type": "TagDeclarator", "value": "seg09" }, @@ -192,9 +192,9 @@ description: Variables in memory after executing exhaust-manifold.kcl -1.25 ], "tag": { - "commentStart": 1875, - "end": 1881, - "start": 1875, + "commentStart": 1771, + "end": 1777, + "start": 1771, "type": "TagDeclarator", "value": "seg01" }, @@ -289,9 +289,9 @@ description: Variables in memory after executing exhaust-manifold.kcl -1.25 ], "tag": { - "commentStart": 2073, - "end": 2079, - "start": 2073, + "commentStart": 1945, + "end": 1951, + "start": 1945, "type": "TagDeclarator", "value": "seg03" }, @@ -314,9 +314,9 @@ description: Variables in memory after executing exhaust-manifold.kcl -1.25 ], "tag": { - "commentStart": 2122, - "end": 2128, - "start": 2122, + "commentStart": 1994, + "end": 2000, + "start": 1994, "type": "TagDeclarator", "value": "seg04" }, @@ -339,9 +339,9 @@ description: Variables in memory after executing exhaust-manifold.kcl 1.35 ], "tag": { - "commentStart": 2161, - "end": 2167, - "start": 2161, + "commentStart": 2033, + "end": 2039, + "start": 2033, "type": "TagDeclarator", "value": "seg05" }, @@ -436,9 +436,9 @@ description: Variables in memory after executing exhaust-manifold.kcl 1.35 ], "tag": { - "commentStart": 2369, - "end": 2375, - "start": 2369, + "commentStart": 2217, + "end": 2223, + "start": 2217, "type": "TagDeclarator", "value": "seg07" }, @@ -461,9 +461,9 @@ description: Variables in memory after executing exhaust-manifold.kcl 1.35 ], "tag": { - "commentStart": 2426, - "end": 2432, - "start": 2426, + "commentStart": 2274, + "end": 2280, + "start": 2274, "type": "TagDeclarator", "value": "seg08" }, @@ -486,9 +486,9 @@ description: Variables in memory after executing exhaust-manifold.kcl -1.25 ], "tag": { - "commentStart": 2476, - "end": 2482, - "start": 2476, + "commentStart": 2324, + "end": 2330, + "start": 2324, "type": "TagDeclarator", "value": "seg09" }, @@ -601,22 +601,34 @@ description: Variables in memory after executing exhaust-manifold.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -683,28 +695,72 @@ description: Variables in memory after executing exhaust-manifold.kcl { "type": "fillet", "id": "[uuid]", - "radius": 1.5, + "radius": { + "n": 1.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 1.5, + "radius": { + "n": 1.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.25, + "radius": { + "n": 0.25, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.25, + "radius": { + "n": 0.25, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } diff --git a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/rendered_model.png b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/rendered_model.png index 7a1cd7643..1118d4f26 100644 Binary files a/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/rendered_model.png and b/rust/kcl-lib/tests/kcl_samples/exhaust-manifold/rendered_model.png differ diff --git a/rust/kcl-lib/tests/kcl_samples/flange/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/flange/artifact_commands.snap index c13d2870a..7b786ea56 100644 --- a/rust/kcl-lib/tests/kcl_samples/flange/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/flange/artifact_commands.snap @@ -355,7 +355,8 @@ description: Artifact commands flange.kcl "type": "extrude", "target": "[uuid]", "distance": 0.625, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -573,7 +574,8 @@ description: Artifact commands flange.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1279999999999999, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -711,7 +713,8 @@ description: Artifact commands flange.kcl "type": "extrude", "target": "[uuid]", "distance": 0.06, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -849,7 +852,8 @@ description: Artifact commands flange.kcl "type": "extrude", "target": "[uuid]", "distance": -0.813, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/flange/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/flange/artifact_graph_flowchart.snap.md index 974bf2419..c060eea00 100644 --- a/rust/kcl-lib/tests/kcl_samples/flange/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/flange/artifact_graph_flowchart.snap.md @@ -11,18 +11,18 @@ flowchart LR 8[Solid2d] end subgraph path15 [Path] - 15["Path
[1385, 1439, 0]"] - 16["Segment
[1385, 1439, 0]"] + 15["Path
[1390, 1444, 0]"] + 16["Segment
[1390, 1444, 0]"] 17[Solid2d] end subgraph path23 [Path] - 23["Path
[1597, 1654, 0]"] - 24["Segment
[1597, 1654, 0]"] + 23["Path
[1607, 1664, 0]"] + 24["Segment
[1607, 1664, 0]"] 25[Solid2d] end subgraph path31 [Path] - 31["Path
[1784, 1829, 0]"] - 32["Segment
[1784, 1829, 0]"] + 31["Path
[1799, 1844, 0]"] + 32["Segment
[1799, 1844, 0]"] 33[Solid2d] end 1["Plane
[827, 844, 0]"] @@ -33,23 +33,23 @@ flowchart LR 12["Cap End"] 13["SweepEdge Opposite"] 14["SweepEdge Adjacent"] - 18["Sweep Extrusion
[1445, 1480, 0]"] + 18["Sweep Extrusion
[1450, 1485, 0]"] 19[Wall] 20["Cap End"] 21["SweepEdge Opposite"] 22["SweepEdge Adjacent"] - 26["Sweep Extrusion
[1660, 1693, 0]"] + 26["Sweep Extrusion
[1670, 1703, 0]"] 27[Wall] 28["Cap End"] 29["SweepEdge Opposite"] 30["SweepEdge Adjacent"] - 34["Sweep Extrusion
[1835, 1910, 0]"] + 34["Sweep Extrusion
[1850, 1925, 0]"] 35[Wall] 36["SweepEdge Opposite"] 37["SweepEdge Adjacent"] - 38["StartSketchOnFace
[1347, 1379, 0]"] - 39["StartSketchOnFace
[1557, 1591, 0]"] - 40["StartSketchOnFace
[1744, 1778, 0]"] + 38["StartSketchOnFace
[1347, 1384, 0]"] + 39["StartSketchOnFace
[1562, 1601, 0]"] + 40["StartSketchOnFace
[1754, 1793, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/flange/ast.snap b/rust/kcl-lib/tests/kcl_samples/flange/ast.snap index fd5820862..b12a8402a 100644 --- a/rust/kcl-lib/tests/kcl_samples/flange/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/flange/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing flange.kcl "Ok": { "body": [ { - "commentStart": 333, + "commentStart": 0, "declaration": { - "commentStart": 356, + "commentStart": 0, "end": 0, "id": { - "commentStart": 356, + "commentStart": 0, "end": 0, "name": "mountingHoleDia", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 374, + "commentStart": 0, "end": 0, "raw": ".625", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing flange.kcl "type": "VariableDeclaration" }, { - "commentStart": 379, + "commentStart": 0, "declaration": { - "commentStart": 379, + "commentStart": 0, "end": 0, "id": { - "commentStart": 379, + "commentStart": 0, "end": 0, "name": "baseDia", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 389, + "commentStart": 0, "end": 0, "raw": "4.625", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing flange.kcl "type": "VariableDeclaration" }, { - "commentStart": 395, + "commentStart": 0, "declaration": { - "commentStart": 395, + "commentStart": 0, "end": 0, "id": { - "commentStart": 395, + "commentStart": 0, "end": 0, "name": "pipeDia", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 405, + "commentStart": 0, "end": 0, "raw": "1.25", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing flange.kcl "type": "VariableDeclaration" }, { - "commentStart": 410, + "commentStart": 0, "declaration": { - "commentStart": 410, + "commentStart": 0, "end": 0, "id": { - "commentStart": 410, + "commentStart": 0, "end": 0, "name": "totalThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 427, + "commentStart": 0, "end": 0, "raw": "0.813", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing flange.kcl "type": "VariableDeclaration" }, { - "commentStart": 433, + "commentStart": 0, "declaration": { - "commentStart": 433, + "commentStart": 0, "end": 0, "id": { - "commentStart": 433, + "commentStart": 0, "end": 0, "name": "topTotalDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 452, + "commentStart": 0, "end": 0, "raw": "2.313", "start": 0, @@ -174,19 +174,19 @@ description: Result of parsing flange.kcl "type": "VariableDeclaration" }, { - "commentStart": 458, + "commentStart": 0, "declaration": { - "commentStart": 458, + "commentStart": 0, "end": 0, "id": { - "commentStart": 458, + "commentStart": 0, "end": 0, "name": "bottomThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 476, + "commentStart": 0, "end": 0, "raw": "0.06", "start": 0, @@ -207,19 +207,19 @@ description: Result of parsing flange.kcl "type": "VariableDeclaration" }, { - "commentStart": 481, + "commentStart": 0, "declaration": { - "commentStart": 481, + "commentStart": 0, "end": 0, "id": { - "commentStart": 481, + "commentStart": 0, "end": 0, "name": "bottomTotalDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 503, + "commentStart": 0, "end": 0, "raw": "2.5", "start": 0, @@ -240,19 +240,19 @@ description: Result of parsing flange.kcl "type": "VariableDeclaration" }, { - "commentStart": 507, + "commentStart": 0, "declaration": { - "commentStart": 507, + "commentStart": 0, "end": 0, "id": { - "commentStart": 507, + "commentStart": 0, "end": 0, "name": "mountingHolePlacementDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 539, + "commentStart": 0, "end": 0, "raw": "3.5", "start": 0, @@ -273,19 +273,19 @@ description: Result of parsing flange.kcl "type": "VariableDeclaration" }, { - "commentStart": 543, + "commentStart": 0, "declaration": { - "commentStart": 543, + "commentStart": 0, "end": 0, "id": { - "commentStart": 543, + "commentStart": 0, "end": 0, "name": "baseThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 559, + "commentStart": 0, "end": 0, "raw": ".625", "start": 0, @@ -306,26 +306,26 @@ description: Result of parsing flange.kcl "type": "VariableDeclaration" }, { - "commentStart": 564, + "commentStart": 0, "declaration": { - "commentStart": 564, + "commentStart": 0, "end": 0, "id": { - "commentStart": 564, + "commentStart": 0, "end": 0, "name": "topTotalThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 584, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 584, + "commentStart": 0, "end": 0, "name": { - "commentStart": 584, + "commentStart": 0, "end": 0, "name": "totalThickness", "start": 0, @@ -338,14 +338,14 @@ description: Result of parsing flange.kcl }, "operator": "-", "right": { - "commentStart": 602, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 602, + "commentStart": 0, "end": 0, "name": { - "commentStart": 602, + "commentStart": 0, "end": 0, "name": "bottomThickness", "start": 0, @@ -359,10 +359,10 @@ description: Result of parsing flange.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 620, + "commentStart": 0, "end": 0, "name": { - "commentStart": 620, + "commentStart": 0, "end": 0, "name": "baseThickness", "start": 0, @@ -391,19 +391,19 @@ description: Result of parsing flange.kcl "type": "VariableDeclaration" }, { - "commentStart": 635, + "commentStart": 0, "declaration": { - "commentStart": 635, + "commentStart": 0, "end": 0, "id": { - "commentStart": 635, + "commentStart": 0, "end": 0, "name": "nHoles", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 644, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -424,16 +424,16 @@ description: Result of parsing flange.kcl "type": "VariableDeclaration" }, { - "commentStart": 645, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 718, + "commentStart": 0, "end": 0, "name": { - "commentStart": 718, + "commentStart": 0, "end": 0, "name": "nHoles", "start": 0, @@ -445,7 +445,7 @@ description: Result of parsing flange.kcl "type": "Name" }, { - "commentStart": 726, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -457,7 +457,7 @@ description: Result of parsing flange.kcl } }, { - "commentStart": 729, + "commentStart": 0, "end": 0, "raw": "\"nHoles must be greater than 1\"", "start": 0, @@ -468,10 +468,10 @@ description: Result of parsing flange.kcl ], "callee": { "abs_path": false, - "commentStart": 700, + "commentStart": 0, "end": 0, "name": { - "commentStart": 700, + "commentStart": 0, "end": 0, "name": "assertGreaterThan", "start": 0, @@ -481,7 +481,7 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 700, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -497,12 +497,12 @@ description: Result of parsing flange.kcl "type": "ExpressionStatement" }, { - "commentStart": 761, + "commentStart": 0, "declaration": { - "commentStart": 817, + "commentStart": 0, "end": 0, "id": { - "commentStart": 817, + "commentStart": 0, "end": 0, "name": "circles", "start": 0, @@ -514,10 +514,10 @@ description: Result of parsing flange.kcl "arguments": [ { "abs_path": false, - "commentStart": 841, + "commentStart": 0, "end": 0, "name": { - "commentStart": 841, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -531,10 +531,10 @@ description: Result of parsing flange.kcl ], "callee": { "abs_path": false, - "commentStart": 827, + "commentStart": 0, "end": 0, "name": { - "commentStart": 827, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -544,7 +544,7 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 827, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -555,24 +555,24 @@ description: Result of parsing flange.kcl { "type": "LabeledArg", "label": { - "commentStart": 857, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 866, + "commentStart": 0, "elements": [ { - "commentStart": 867, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 867, + "commentStart": 0, "end": 0, "name": { - "commentStart": 867, + "commentStart": 0, "end": 0, "name": "mountingHolePlacementDiameter", "start": 0, @@ -585,7 +585,7 @@ description: Result of parsing flange.kcl }, "operator": "/", "right": { - "commentStart": 899, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -601,7 +601,7 @@ description: Result of parsing flange.kcl "type": "BinaryExpression" }, { - "commentStart": 902, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -622,21 +622,21 @@ description: Result of parsing flange.kcl { "type": "LabeledArg", "label": { - "commentStart": 906, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 915, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 915, + "commentStart": 0, "end": 0, "name": { - "commentStart": 915, + "commentStart": 0, "end": 0, "name": "mountingHoleDia", "start": 0, @@ -649,7 +649,7 @@ description: Result of parsing flange.kcl }, "operator": "/", "right": { - "commentStart": 933, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -668,10 +668,10 @@ description: Result of parsing flange.kcl ], "callee": { "abs_path": false, - "commentStart": 850, + "commentStart": 0, "end": 0, "name": { - "commentStart": 850, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -681,7 +681,7 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 850, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -693,14 +693,14 @@ description: Result of parsing flange.kcl { "type": "LabeledArg", "label": { - "commentStart": 967, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 980, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -715,17 +715,17 @@ description: Result of parsing flange.kcl { "type": "LabeledArg", "label": { - "commentStart": 992, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1001, + "commentStart": 0, "elements": [ { - "commentStart": 1002, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -737,7 +737,7 @@ description: Result of parsing flange.kcl } }, { - "commentStart": 1005, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -758,7 +758,7 @@ description: Result of parsing flange.kcl { "type": "LabeledArg", "label": { - "commentStart": 1016, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -766,10 +766,10 @@ description: Result of parsing flange.kcl }, "arg": { "abs_path": false, - "commentStart": 1028, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1028, + "commentStart": 0, "end": 0, "name": "nHoles", "start": 0, @@ -784,14 +784,14 @@ description: Result of parsing flange.kcl { "type": "LabeledArg", "label": { - "commentStart": 1043, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1062, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -803,10 +803,10 @@ description: Result of parsing flange.kcl ], "callee": { "abs_path": false, - "commentStart": 941, + "commentStart": 0, "end": 0, "name": { - "commentStart": 941, + "commentStart": 0, "end": 0, "name": "patternCircular2d", "start": 0, @@ -816,7 +816,7 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 941, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -824,13 +824,13 @@ description: Result of parsing flange.kcl "unlabeled": null } ], - "commentStart": 827, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "commentStart": 1074, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -863,12 +863,12 @@ description: Result of parsing flange.kcl "type": "VariableDeclaration" }, { - "commentStart": 1136, + "commentStart": 0, "declaration": { - "commentStart": 1136, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1136, + "commentStart": 0, "end": 0, "name": "flangeBase", "start": 0, @@ -880,10 +880,10 @@ description: Result of parsing flange.kcl "arguments": [ { "abs_path": false, - "commentStart": 1163, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1163, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -897,10 +897,10 @@ description: Result of parsing flange.kcl ], "callee": { "abs_path": false, - "commentStart": 1149, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1149, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -910,7 +910,7 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 1149, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -921,17 +921,17 @@ description: Result of parsing flange.kcl { "type": "LabeledArg", "label": { - "commentStart": 1179, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1188, + "commentStart": 0, "elements": [ { - "commentStart": 1189, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -943,7 +943,7 @@ description: Result of parsing flange.kcl } }, { - "commentStart": 1192, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -964,21 +964,21 @@ description: Result of parsing flange.kcl { "type": "LabeledArg", "label": { - "commentStart": 1196, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1205, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1205, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1205, + "commentStart": 0, "end": 0, "name": "baseDia", "start": 0, @@ -991,7 +991,7 @@ description: Result of parsing flange.kcl }, "operator": "/", "right": { - "commentStart": 1215, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1010,10 +1010,10 @@ description: Result of parsing flange.kcl ], "callee": { "abs_path": false, - "commentStart": 1172, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1172, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1023,7 +1023,7 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 1172, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1034,10 +1034,10 @@ description: Result of parsing flange.kcl "arguments": [ { "abs_path": false, - "commentStart": 1228, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1228, + "commentStart": 0, "end": 0, "name": "circles", "start": 0, @@ -1049,7 +1049,7 @@ description: Result of parsing flange.kcl "type": "Name" }, { - "commentStart": 1237, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1058,10 +1058,10 @@ description: Result of parsing flange.kcl ], "callee": { "abs_path": false, - "commentStart": 1223, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1223, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -1071,7 +1071,7 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 1223, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1082,7 +1082,7 @@ description: Result of parsing flange.kcl { "type": "LabeledArg", "label": { - "commentStart": 1253, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1090,10 +1090,10 @@ description: Result of parsing flange.kcl }, "arg": { "abs_path": false, - "commentStart": 1262, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1262, + "commentStart": 0, "end": 0, "name": "baseThickness", "start": 0, @@ -1108,10 +1108,10 @@ description: Result of parsing flange.kcl ], "callee": { "abs_path": false, - "commentStart": 1245, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1245, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1121,7 +1121,7 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 1245, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1129,13 +1129,13 @@ description: Result of parsing flange.kcl "unlabeled": null } ], - "commentStart": 1149, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "3": [ { - "commentStart": 1276, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1163,12 +1163,12 @@ description: Result of parsing flange.kcl "type": "VariableDeclaration" }, { - "commentStart": 1332, + "commentStart": 0, "declaration": { - "commentStart": 1332, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1332, + "commentStart": 0, "end": 0, "name": "topExtrusion", "start": 0, @@ -1179,37 +1179,38 @@ description: Result of parsing flange.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1361, - "end": 0, - "name": { - "commentStart": 1361, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "flangeBase", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 1373, - "end": 0, - "raw": "'end'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "end" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1347, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1347, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1219,28 +1220,44 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 1347, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "flangeBase", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1392, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1401, + "commentStart": 0, "elements": [ { - "commentStart": 1402, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1252,7 +1269,7 @@ description: Result of parsing flange.kcl } }, { - "commentStart": 1405, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1273,21 +1290,21 @@ description: Result of parsing flange.kcl { "type": "LabeledArg", "label": { - "commentStart": 1409, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1418, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1418, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1418, + "commentStart": 0, "end": 0, "name": "topTotalDiameter", "start": 0, @@ -1300,7 +1317,7 @@ description: Result of parsing flange.kcl }, "operator": "/", "right": { - "commentStart": 1437, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1319,10 +1336,10 @@ description: Result of parsing flange.kcl ], "callee": { "abs_path": false, - "commentStart": 1385, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1385, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1332,7 +1349,7 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 1385, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1344,7 +1361,7 @@ description: Result of parsing flange.kcl { "type": "LabeledArg", "label": { - "commentStart": 1453, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1352,10 +1369,10 @@ description: Result of parsing flange.kcl }, "arg": { "abs_path": false, - "commentStart": 1462, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1462, + "commentStart": 0, "end": 0, "name": "topTotalThickness", "start": 0, @@ -1370,10 +1387,10 @@ description: Result of parsing flange.kcl ], "callee": { "abs_path": false, - "commentStart": 1445, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1445, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1383,7 +1400,7 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 1445, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1391,13 +1408,13 @@ description: Result of parsing flange.kcl "unlabeled": null } ], - "commentStart": 1347, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "commentStart": 1480, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1425,12 +1442,12 @@ description: Result of parsing flange.kcl "type": "VariableDeclaration" }, { - "commentStart": 1539, + "commentStart": 0, "declaration": { - "commentStart": 1539, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1539, + "commentStart": 0, "end": 0, "name": "bottomExtrusion", "start": 0, @@ -1441,37 +1458,38 @@ description: Result of parsing flange.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1571, - "end": 0, - "name": { - "commentStart": 1571, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "flangeBase", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 1583, - "end": 0, - "raw": "'start'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "start" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1557, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1557, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1481,28 +1499,44 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 1557, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "flangeBase", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1604, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1613, + "commentStart": 0, "elements": [ { - "commentStart": 1614, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1514,7 +1548,7 @@ description: Result of parsing flange.kcl } }, { - "commentStart": 1617, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1535,21 +1569,21 @@ description: Result of parsing flange.kcl { "type": "LabeledArg", "label": { - "commentStart": 1621, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1630, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1630, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1630, + "commentStart": 0, "end": 0, "name": "bottomTotalDiameter", "start": 0, @@ -1562,7 +1596,7 @@ description: Result of parsing flange.kcl }, "operator": "/", "right": { - "commentStart": 1652, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1581,10 +1615,10 @@ description: Result of parsing flange.kcl ], "callee": { "abs_path": false, - "commentStart": 1597, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1597, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1594,7 +1628,7 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 1597, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1606,7 +1640,7 @@ description: Result of parsing flange.kcl { "type": "LabeledArg", "label": { - "commentStart": 1668, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1614,10 +1648,10 @@ description: Result of parsing flange.kcl }, "arg": { "abs_path": false, - "commentStart": 1677, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1677, + "commentStart": 0, "end": 0, "name": "bottomThickness", "start": 0, @@ -1632,10 +1666,10 @@ description: Result of parsing flange.kcl ], "callee": { "abs_path": false, - "commentStart": 1660, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1660, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1645,7 +1679,7 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 1660, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1653,13 +1687,13 @@ description: Result of parsing flange.kcl "unlabeled": null } ], - "commentStart": 1557, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "commentStart": 1693, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1687,12 +1721,12 @@ description: Result of parsing flange.kcl "type": "VariableDeclaration" }, { - "commentStart": 1733, + "commentStart": 0, "declaration": { - "commentStart": 1733, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1733, + "commentStart": 0, "end": 0, "name": "pipeHole", "start": 0, @@ -1703,37 +1737,38 @@ description: Result of parsing flange.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1758, - "end": 0, - "name": { - "commentStart": 1758, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "topExtrusion", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 1772, - "end": 0, - "raw": "'end'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "end" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1744, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1744, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1743,28 +1778,44 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 1744, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "topExtrusion", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1791, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1800, + "commentStart": 0, "elements": [ { - "commentStart": 1801, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1776,7 +1827,7 @@ description: Result of parsing flange.kcl } }, { - "commentStart": 1804, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1797,21 +1848,21 @@ description: Result of parsing flange.kcl { "type": "LabeledArg", "label": { - "commentStart": 1808, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1817, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1817, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1817, + "commentStart": 0, "end": 0, "name": "pipeDia", "start": 0, @@ -1824,7 +1875,7 @@ description: Result of parsing flange.kcl }, "operator": "/", "right": { - "commentStart": 1827, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1843,10 +1894,10 @@ description: Result of parsing flange.kcl ], "callee": { "abs_path": false, - "commentStart": 1784, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1784, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1856,7 +1907,7 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 1784, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1868,7 +1919,7 @@ description: Result of parsing flange.kcl { "type": "LabeledArg", "label": { - "commentStart": 1846, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1876,17 +1927,17 @@ description: Result of parsing flange.kcl }, "arg": { "argument": { - "commentStart": 1857, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1857, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1857, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1857, + "commentStart": 0, "end": 0, "name": "topTotalThickness", "start": 0, @@ -1900,10 +1951,10 @@ description: Result of parsing flange.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1877, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1877, + "commentStart": 0, "end": 0, "name": "baseThickness", "start": 0, @@ -1921,10 +1972,10 @@ description: Result of parsing flange.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1893, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1893, + "commentStart": 0, "end": 0, "name": "bottomThickness", "start": 0, @@ -1939,7 +1990,7 @@ description: Result of parsing flange.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1855, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1950,10 +2001,10 @@ description: Result of parsing flange.kcl ], "callee": { "abs_path": false, - "commentStart": 1835, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1835, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1963,13 +2014,13 @@ description: Result of parsing flange.kcl "start": 0, "type": "Name" }, - "commentStart": 1835, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 1843, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1977,7 +2028,7 @@ description: Result of parsing flange.kcl } } ], - "commentStart": 1744, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2000,7 +2051,7 @@ description: Result of parsing flange.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 301, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -2015,10 +2066,10 @@ description: Result of parsing flange.kcl ], "properties": [ { - "commentStart": 310, + "commentStart": 0, "end": 0, "key": { - "commentStart": 310, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -2028,10 +2079,10 @@ description: Result of parsing flange.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 330, + "commentStart": 0, "end": 0, "name": { - "commentStart": 330, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -2052,7 +2103,7 @@ description: Result of parsing flange.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 333, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/flange/ops.snap b/rust/kcl-lib/tests/kcl_samples/flange/ops.snap index 66c9454ec..37ee3f992 100644 --- a/rust/kcl-lib/tests/kcl_samples/flange/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/flange/ops.snap @@ -5,7 +5,7 @@ description: Operations executed flange.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -20,7 +20,7 @@ description: Operations executed flange.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -116,16 +116,7 @@ description: Operations executed flange.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -136,7 +127,15 @@ description: Operations executed flange.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -172,16 +171,7 @@ description: Operations executed flange.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -192,7 +182,15 @@ description: Operations executed flange.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -228,16 +226,7 @@ description: Operations executed flange.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -248,7 +237,15 @@ description: Operations executed flange.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/kcl_samples/flange/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/flange/program_memory.snap index 9b9228acd..039fcd8fa 100644 --- a/rust/kcl-lib/tests/kcl_samples/flange/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/flange/program_memory.snap @@ -82,17 +82,26 @@ description: Variables in memory after executing flange.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -145,22 +154,34 @@ description: Variables in memory after executing flange.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -302,22 +323,34 @@ description: Variables in memory after executing flange.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -388,22 +421,34 @@ description: Variables in memory after executing flange.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -474,22 +519,34 @@ description: Variables in memory after executing flange.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -560,22 +617,34 @@ description: Variables in memory after executing flange.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -661,22 +730,34 @@ description: Variables in memory after executing flange.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -819,17 +900,26 @@ description: Variables in memory after executing flange.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -882,17 +972,26 @@ description: Variables in memory after executing flange.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -945,22 +1044,34 @@ description: Variables in memory after executing flange.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1121,17 +1232,26 @@ description: Variables in memory after executing flange.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1184,22 +1304,34 @@ description: Variables in memory after executing flange.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" diff --git a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/artifact_commands.snap index 44bcedd6c..e8f90a397 100644 --- a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/artifact_commands.snap @@ -255,7 +255,8 @@ description: Artifact commands focusrite-scarlett-mounting-bracket.kcl "type": "extrude", "target": "[uuid]", "distance": 88.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -726,7 +727,8 @@ description: Artifact commands focusrite-scarlett-mounting-bracket.kcl "type": "extrude", "target": "[uuid]", "distance": -4.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1181,7 +1183,8 @@ description: Artifact commands focusrite-scarlett-mounting-bracket.kcl "type": "extrude", "target": "[uuid]", "distance": -4.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1525,7 +1528,8 @@ description: Artifact commands focusrite-scarlett-mounting-bracket.kcl "type": "extrude", "target": "[uuid]", "distance": 104.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1762,7 +1766,8 @@ description: Artifact commands focusrite-scarlett-mounting-bracket.kcl "type": "extrude", "target": "[uuid]", "distance": 104.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/artifact_graph_flowchart.snap.md index 238cba6ea..9189b7cdc 100644 --- a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/artifact_graph_flowchart.snap.md @@ -1,60 +1,60 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[1260, 1298, 0]"] - 3["Segment
[1306, 1356, 0]"] - 4["Segment
[1364, 1413, 0]"] - 5["Segment
[1421, 1473, 0]"] - 6["Segment
[1481, 1529, 0]"] - 7["Segment
[1537, 1581, 0]"] - 8["Segment
[1589, 1634, 0]"] - 9["Segment
[1642, 1691, 0]"] - 10["Segment
[1699, 1718, 0]"] + 2["Path
[1234, 1272, 0]"] + 3["Segment
[1280, 1330, 0]"] + 4["Segment
[1338, 1387, 0]"] + 5["Segment
[1395, 1447, 0]"] + 6["Segment
[1455, 1503, 0]"] + 7["Segment
[1511, 1555, 0]"] + 8["Segment
[1563, 1608, 0]"] + 9["Segment
[1616, 1665, 0]"] + 10["Segment
[1673, 1692, 0]"] 11[Solid2d] end subgraph path40 [Path] - 40["Path
[2433, 2487, 0]"] - 41["Segment
[2493, 2546, 0]"] - 42["Segment
[2552, 2602, 0]"] - 43["Segment
[2608, 2662, 0]"] - 44["Segment
[2668, 2688, 0]"] + 40["Path
[2383, 2437, 0]"] + 41["Segment
[2443, 2496, 0]"] + 42["Segment
[2502, 2552, 0]"] + 43["Segment
[2558, 2612, 0]"] + 44["Segment
[2618, 2638, 0]"] 45[Solid2d] end subgraph path46 [Path] - 46["Path
[2699, 2862, 0]"] - 47["Segment
[2699, 2862, 0]"] + 46["Path
[2649, 2812, 0]"] + 47["Segment
[2649, 2812, 0]"] 48[Solid2d] end subgraph path67 [Path] - 67["Path
[3247, 3302, 0]"] - 68["Segment
[3308, 3362, 0]"] - 69["Segment
[3368, 3418, 0]"] - 70["Segment
[3424, 3477, 0]"] - 71["Segment
[3483, 3503, 0]"] + 67["Path
[3197, 3252, 0]"] + 68["Segment
[3258, 3312, 0]"] + 69["Segment
[3318, 3368, 0]"] + 70["Segment
[3374, 3427, 0]"] + 71["Segment
[3433, 3453, 0]"] 72[Solid2d] end subgraph path73 [Path] - 73["Path
[3514, 3680, 0]"] - 74["Segment
[3514, 3680, 0]"] + 73["Path
[3464, 3630, 0]"] + 74["Segment
[3464, 3630, 0]"] 75[Solid2d] end subgraph path94 [Path] - 94["Path
[4287, 4328, 0]"] - 95["Segment
[4334, 4354, 0]"] - 96["Segment
[4360, 4383, 0]"] - 97["Segment
[4389, 4396, 0]"] + 94["Path
[4213, 4254, 0]"] + 95["Segment
[4260, 4280, 0]"] + 96["Segment
[4286, 4309, 0]"] + 97["Segment
[4315, 4322, 0]"] 98[Solid2d] end subgraph path112 [Path] - 112["Path
[4511, 4551, 0]"] - 113["Segment
[4557, 4577, 0]"] - 114["Segment
[4583, 4604, 0]"] - 115["Segment
[4610, 4631, 0]"] - 116["Segment
[4637, 4644, 0]"] + 112["Path
[4437, 4477, 0]"] + 113["Segment
[4483, 4503, 0]"] + 114["Segment
[4509, 4530, 0]"] + 115["Segment
[4536, 4557, 0]"] + 116["Segment
[4563, 4570, 0]"] 117[Solid2d] end - 1["Plane
[1225, 1252, 0]"] - 12["Sweep Extrusion
[1826, 1860, 0]"] + 1["Plane
[1199, 1226, 0]"] + 12["Sweep Extrusion
[1800, 1834, 0]"] 13[Wall] 14[Wall] 15[Wall] @@ -81,8 +81,8 @@ flowchart LR 36["SweepEdge Adjacent"] 37["SweepEdge Opposite"] 38["SweepEdge Adjacent"] - 39["Plane
[2404, 2427, 0]"] - 49["Sweep Extrusion
[2872, 2897, 0]"] + 39["Plane
[2354, 2377, 0]"] + 49["Sweep Extrusion
[2822, 2847, 0]"] 50[Wall] 51[Wall] 52[Wall] @@ -97,10 +97,10 @@ flowchart LR 61["SweepEdge Adjacent"] 62["SweepEdge Opposite"] 63["SweepEdge Adjacent"] - 64["EdgeCut Fillet
[2903, 3048, 0]"] - 65["EdgeCut Fillet
[2903, 3048, 0]"] - 66["Plane
[3218, 3241, 0]"] - 76["Sweep Extrusion
[3690, 3715, 0]"] + 64["EdgeCut Fillet
[2853, 2998, 0]"] + 65["EdgeCut Fillet
[2853, 2998, 0]"] + 66["Plane
[3168, 3191, 0]"] + 76["Sweep Extrusion
[3640, 3665, 0]"] 77[Wall] 78[Wall] 79[Wall] @@ -115,10 +115,10 @@ flowchart LR 88["SweepEdge Adjacent"] 89["SweepEdge Opposite"] 90["SweepEdge Adjacent"] - 91["EdgeCut Fillet
[3721, 3866, 0]"] - 92["EdgeCut Fillet
[3721, 3866, 0]"] - 93["Plane
[4258, 4281, 0]"] - 99["Sweep Extrusion
[4402, 4430, 0]"] + 91["EdgeCut Fillet
[3671, 3816, 0]"] + 92["EdgeCut Fillet
[3671, 3816, 0]"] + 93["Plane
[4184, 4207, 0]"] + 99["Sweep Extrusion
[4328, 4356, 0]"] 100[Wall] 101[Wall] 102[Wall] @@ -130,8 +130,8 @@ flowchart LR 108["SweepEdge Adjacent"] 109["SweepEdge Opposite"] 110["SweepEdge Adjacent"] - 111["Plane
[4482, 4505, 0]"] - 118["Sweep Extrusion
[4650, 4678, 0]"] + 111["Plane
[4408, 4431, 0]"] + 118["Sweep Extrusion
[4576, 4604, 0]"] 119[Wall] 120[Wall] 121[Wall] @@ -146,10 +146,10 @@ flowchart LR 130["SweepEdge Adjacent"] 131["SweepEdge Opposite"] 132["SweepEdge Adjacent"] - 133["EdgeCut Fillet
[1866, 2125, 0]"] - 134["EdgeCut Fillet
[1866, 2125, 0]"] - 135["EdgeCut Fillet
[1866, 2125, 0]"] - 136["EdgeCut Fillet
[1866, 2125, 0]"] + 133["EdgeCut Fillet
[1840, 2099, 0]"] + 134["EdgeCut Fillet
[1840, 2099, 0]"] + 135["EdgeCut Fillet
[1840, 2099, 0]"] + 136["EdgeCut Fillet
[1840, 2099, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ast.snap b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ast.snap index 7cd63db1b..feab342a3 100644 --- a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "Ok": { "body": [ { - "commentStart": 357, + "commentStart": 0, "declaration": { - "commentStart": 380, + "commentStart": 0, "end": 0, "id": { - "commentStart": 380, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 389, + "commentStart": 0, "end": 0, "raw": "6.0", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 393, + "commentStart": 0, "declaration": { - "commentStart": 393, + "commentStart": 0, "end": 0, "id": { - "commentStart": 393, + "commentStart": 0, "end": 0, "name": "width", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 401, + "commentStart": 0, "end": 0, "raw": "144.0", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 407, + "commentStart": 0, "declaration": { - "commentStart": 407, + "commentStart": 0, "end": 0, "id": { - "commentStart": 407, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 416, + "commentStart": 0, "end": 0, "raw": "80.0", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 421, + "commentStart": 0, "declaration": { - "commentStart": 421, + "commentStart": 0, "end": 0, "id": { - "commentStart": 421, + "commentStart": 0, "end": 0, "name": "depth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 429, + "commentStart": 0, "end": 0, "raw": "45.0", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 434, + "commentStart": 0, "declaration": { - "commentStart": 434, + "commentStart": 0, "end": 0, "id": { - "commentStart": 434, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 440, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -174,19 +174,19 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 442, + "commentStart": 0, "declaration": { - "commentStart": 442, + "commentStart": 0, "end": 0, "id": { - "commentStart": 442, + "commentStart": 0, "end": 0, "name": "holeDiam", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 453, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -207,19 +207,19 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 455, + "commentStart": 0, "declaration": { - "commentStart": 455, + "commentStart": 0, "end": 0, "id": { - "commentStart": 455, + "commentStart": 0, "end": 0, "name": "tabLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 467, + "commentStart": 0, "end": 0, "raw": "25", "start": 0, @@ -240,19 +240,19 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 470, + "commentStart": 0, "declaration": { - "commentStart": 470, + "commentStart": 0, "end": 0, "id": { - "commentStart": 470, + "commentStart": 0, "end": 0, "name": "tabWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 481, + "commentStart": 0, "end": 0, "raw": "12", "start": 0, @@ -273,19 +273,19 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 484, + "commentStart": 0, "declaration": { - "commentStart": 484, + "commentStart": 0, "end": 0, "id": { - "commentStart": 484, + "commentStart": 0, "end": 0, "name": "tabThk", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 493, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -306,12 +306,12 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 494, + "commentStart": 0, "declaration": { - "commentStart": 534, + "commentStart": 0, "end": 0, "id": { - "commentStart": 534, + "commentStart": 0, "end": 0, "name": "rectShape", "start": 0, @@ -321,12 +321,12 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "body": { "body": [ { - "commentStart": 559, + "commentStart": 0, "declaration": { - "commentStart": 559, + "commentStart": 0, "end": 0, "id": { - "commentStart": 559, + "commentStart": 0, "end": 0, "name": "rr", "start": 0, @@ -337,21 +337,28 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "arguments": [ { - "commentStart": 578, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'xy'", + "name": { + "commentStart": 0, + "end": 0, + "name": "XY", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "xy" + "type": "Name", + "type": "Name" } ], "callee": { "abs_path": false, - "commentStart": 564, + "commentStart": 0, "end": 0, "name": { - "commentStart": 564, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -361,7 +368,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 564, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -370,17 +377,17 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "arguments": [ { - "commentStart": 606, + "commentStart": 0, "elements": [ { - "commentStart": 607, + "commentStart": 0, "end": 0, "left": { - "commentStart": 607, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 607, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -388,7 +395,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Identifier" }, "property": { - "commentStart": 611, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -405,14 +412,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "-", "right": { - "commentStart": 617, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 617, + "commentStart": 0, "end": 0, "name": { - "commentStart": 617, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -425,7 +432,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 621, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -445,14 +452,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 625, + "commentStart": 0, "end": 0, "left": { - "commentStart": 625, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 625, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -460,7 +467,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Identifier" }, "property": { - "commentStart": 629, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -477,14 +484,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "-", "right": { - "commentStart": 635, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 635, + "commentStart": 0, "end": 0, "name": { - "commentStart": 635, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -497,7 +504,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 639, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -523,7 +530,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "ArrayExpression" }, { - "commentStart": 644, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -532,10 +539,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 591, + "commentStart": 0, "end": 0, "name": { - "commentStart": 591, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -545,7 +552,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 591, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -556,24 +563,24 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 659, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 673, + "commentStart": 0, "elements": [ { - "commentStart": 674, + "commentStart": 0, "end": 0, "left": { - "commentStart": 674, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 674, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -581,7 +588,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Identifier" }, "property": { - "commentStart": 678, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -598,14 +605,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "+", "right": { - "commentStart": 683, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 683, + "commentStart": 0, "end": 0, "name": { - "commentStart": 683, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -618,7 +625,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 687, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -638,14 +645,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 690, + "commentStart": 0, "end": 0, "left": { - "commentStart": 690, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 690, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -653,7 +660,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Identifier" }, "property": { - "commentStart": 694, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -670,14 +677,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "-", "right": { - "commentStart": 700, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 700, + "commentStart": 0, "end": 0, "name": { - "commentStart": 700, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -690,7 +697,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 704, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -719,14 +726,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 709, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 715, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -737,10 +744,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 654, + "commentStart": 0, "end": 0, "name": { - "commentStart": 654, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -750,7 +757,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 654, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -762,24 +769,24 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 736, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 750, + "commentStart": 0, "elements": [ { - "commentStart": 751, + "commentStart": 0, "end": 0, "left": { - "commentStart": 751, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 751, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -787,7 +794,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Identifier" }, "property": { - "commentStart": 755, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -804,14 +811,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "+", "right": { - "commentStart": 760, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 760, + "commentStart": 0, "end": 0, "name": { - "commentStart": 760, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -824,7 +831,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 764, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -844,14 +851,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 767, + "commentStart": 0, "end": 0, "left": { - "commentStart": 767, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 767, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -859,7 +866,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Identifier" }, "property": { - "commentStart": 771, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -876,14 +883,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "+", "right": { - "commentStart": 776, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 776, + "commentStart": 0, "end": 0, "name": { - "commentStart": 776, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -896,7 +903,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 780, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -925,14 +932,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 784, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 790, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -943,10 +950,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 731, + "commentStart": 0, "end": 0, "name": { - "commentStart": 731, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -956,7 +963,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 731, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -968,24 +975,24 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 811, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 825, + "commentStart": 0, "elements": [ { - "commentStart": 826, + "commentStart": 0, "end": 0, "left": { - "commentStart": 826, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 826, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -993,7 +1000,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Identifier" }, "property": { - "commentStart": 830, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1010,14 +1017,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "-", "right": { - "commentStart": 836, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 836, + "commentStart": 0, "end": 0, "name": { - "commentStart": 836, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -1030,7 +1037,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 840, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1050,14 +1057,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 844, + "commentStart": 0, "end": 0, "left": { - "commentStart": 844, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 844, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -1065,7 +1072,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Identifier" }, "property": { - "commentStart": 848, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1082,14 +1089,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "+", "right": { - "commentStart": 853, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 853, + "commentStart": 0, "end": 0, "name": { - "commentStart": 853, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -1102,7 +1109,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 857, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1131,14 +1138,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 861, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 867, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1149,10 +1156,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 806, + "commentStart": 0, "end": 0, "name": { - "commentStart": 806, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1162,7 +1169,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 806, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1174,14 +1181,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 889, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 895, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1192,10 +1199,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 883, + "commentStart": 0, "end": 0, "name": { - "commentStart": 883, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1205,7 +1212,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 883, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1213,7 +1220,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "unlabeled": null } ], - "commentStart": 564, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1231,10 +1238,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "argument": { "abs_path": false, - "commentStart": 913, + "commentStart": 0, "end": 0, "name": { - "commentStart": 913, + "commentStart": 0, "end": 0, "name": "rr", "start": 0, @@ -1245,24 +1252,24 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 906, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 555, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 543, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 544, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -1272,7 +1279,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "Parameter", "identifier": { - "commentStart": 549, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -1282,7 +1289,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "Parameter", "identifier": { - "commentStart": 552, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -1309,479 +1316,457 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 917, + "commentStart": 0, "declaration": { - "commentStart": 947, + "commentStart": 0, "end": 0, "id": { - "commentStart": 947, + "commentStart": 0, "end": 0, "name": "bracketPlane", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 962, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 966, + "commentStart": 0, "end": 0, "key": { - "commentStart": 966, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 974, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 980, + "commentStart": 0, "end": 0, "key": { - "commentStart": 980, + "commentStart": 0, "end": 0, - "name": "origin", + "name": "x", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 989, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 991, - "end": 0, - "key": { - "commentStart": 991, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 995, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 998, - "end": 0, - "key": { - "commentStart": 998, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1002, - "end": 0, - "left": { - "commentStart": 1002, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 1002, - "end": 0, - "name": { - "commentStart": 1002, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "/", - "right": { - "commentStart": 1011, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "abs_path": false, - "commentStart": 1015, - "end": 0, - "name": { - "commentStart": 1015, - "end": 0, - "name": "thk", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - }, - { - "commentStart": 1020, - "end": 0, - "key": { - "commentStart": 1020, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1024, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - } - ], + "raw": "0", "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } } }, { - "commentStart": 1033, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1033, + "commentStart": 0, "end": 0, - "name": "xAxis", + "name": "y", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1041, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 1043, + "left": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1043, + "name": { + "commentStart": 0, "end": 0, - "name": "x", + "name": "length", "start": 0, "type": "Identifier" }, + "path": [], "start": 0, - "type": "ObjectProperty", + "type": "Name", + "type": "Name" + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1047, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } + "value": 2.0, + "suffix": "None" } }, - { - "commentStart": 1050, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1050, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, + "name": "thk", "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1054, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } + "type": "Identifier" }, - { - "commentStart": 1057, - "end": 0, - "key": { - "commentStart": 1057, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1061, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - } - ], + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "BinaryExpression", + "type": "BinaryExpression" } }, { - "commentStart": 1070, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1070, + "commentStart": 0, "end": 0, - "name": "yAxis", + "name": "z", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1078, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 1080, - "end": 0, - "key": { - "commentStart": 1080, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1084, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1087, - "end": 0, - "key": { - "commentStart": 1087, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1091, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1094, - "end": 0, - "key": { - "commentStart": 1094, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1098, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - } - ], + "raw": "0", "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "xAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } } }, { - "commentStart": 1107, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1107, + "commentStart": 0, "end": 0, - "name": "zAxis", + "name": "y", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1115, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 1117, - "end": 0, - "key": { - "commentStart": 1117, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1121, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1124, - "end": 0, - "key": { - "commentStart": 1124, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 1129, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - "commentStart": 1128, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - }, - { - "commentStart": 1132, - "end": 0, - "key": { - "commentStart": 1132, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1136, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - } - ], + "raw": "0", "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } } } ], @@ -1810,12 +1795,12 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 1145, + "commentStart": 0, "declaration": { - "commentStart": 1194, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1194, + "commentStart": 0, "end": 0, "name": "bracketSketch", "start": 0, @@ -1825,12 +1810,12 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "body": { "body": [ { - "commentStart": 1221, + "commentStart": 0, "declaration": { - "commentStart": 1221, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1221, + "commentStart": 0, "end": 0, "name": "s", "start": 0, @@ -1842,10 +1827,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "arguments": [ { "abs_path": false, - "commentStart": 1239, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1239, + "commentStart": 0, "end": 0, "name": "bracketPlane", "start": 0, @@ -1859,10 +1844,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1225, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1225, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1872,7 +1857,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1225, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1881,21 +1866,21 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "arguments": [ { - "commentStart": 1275, + "commentStart": 0, "elements": [ { - "commentStart": 1276, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1276, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1277, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1277, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -1906,7 +1891,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 1276, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1915,7 +1900,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 1281, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1933,10 +1918,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1285, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1285, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -1952,14 +1937,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 1288, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1288, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1288, + "commentStart": 0, "end": 0, "name": "d", "start": 0, @@ -1973,10 +1958,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1292, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1292, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -1998,7 +1983,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "ArrayExpression" }, { - "commentStart": 1296, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2007,10 +1992,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1260, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1260, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2020,7 +2005,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1260, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2031,28 +2016,28 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1311, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1325, + "commentStart": 0, "elements": [ { - "commentStart": 1326, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1326, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1327, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1327, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -2063,7 +2048,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 1326, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2072,7 +2057,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 1331, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2090,10 +2075,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1335, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1335, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -2111,10 +2096,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "argument": { "abs_path": false, - "commentStart": 1339, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1339, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -2125,7 +2110,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 1338, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2142,14 +2127,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1343, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1349, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2160,10 +2145,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1306, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1306, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2173,7 +2158,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1306, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2185,27 +2170,27 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1369, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1383, + "commentStart": 0, "elements": [ { - "commentStart": 1384, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1384, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1384, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1384, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -2218,7 +2203,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 1388, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2236,10 +2221,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1392, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1392, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -2257,10 +2242,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "argument": { "abs_path": false, - "commentStart": 1396, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1396, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -2271,7 +2256,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 1395, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2288,14 +2273,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1400, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1406, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2306,10 +2291,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1364, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1364, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2319,7 +2304,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1364, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2331,27 +2316,27 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1426, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1440, + "commentStart": 0, "elements": [ { - "commentStart": 1441, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1441, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1441, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1441, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -2364,7 +2349,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 1445, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2382,10 +2367,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1449, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1449, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -2401,14 +2386,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 1452, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1452, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1452, + "commentStart": 0, "end": 0, "name": "d", "start": 0, @@ -2422,10 +2407,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1456, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1456, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -2450,14 +2435,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1460, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1466, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2468,10 +2453,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1421, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1421, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2481,7 +2466,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1421, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2493,24 +2478,24 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1486, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1500, + "commentStart": 0, "elements": [ { - "commentStart": 1501, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1501, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1501, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -2523,7 +2508,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 1505, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2539,14 +2524,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 1508, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1508, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1508, + "commentStart": 0, "end": 0, "name": "d", "start": 0, @@ -2560,10 +2545,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1512, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1512, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -2588,14 +2573,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1516, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1522, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2606,10 +2591,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1481, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1481, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2619,7 +2604,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1481, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2631,24 +2616,24 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1542, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1556, + "commentStart": 0, "elements": [ { - "commentStart": 1557, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1557, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1557, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -2661,7 +2646,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 1561, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2677,7 +2662,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 1564, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2698,14 +2683,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1568, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1574, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2716,10 +2701,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1537, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1537, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2729,7 +2714,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1537, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2741,25 +2726,25 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1594, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1608, + "commentStart": 0, "elements": [ { - "commentStart": 1609, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1610, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1610, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -2770,7 +2755,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 1609, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2779,7 +2764,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 1614, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2795,7 +2780,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 1617, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2816,14 +2801,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1621, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1627, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2834,10 +2819,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1589, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1589, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2847,7 +2832,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1589, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2859,25 +2844,25 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1647, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1661, + "commentStart": 0, "elements": [ { - "commentStart": 1662, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1663, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1663, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -2888,7 +2873,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 1662, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2897,7 +2882,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 1667, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2913,14 +2898,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 1670, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1670, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1670, + "commentStart": 0, "end": 0, "name": "d", "start": 0, @@ -2934,10 +2919,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1674, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1674, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -2962,14 +2947,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1678, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1684, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2980,10 +2965,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1642, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1642, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2993,7 +2978,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1642, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3005,14 +2990,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1705, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1711, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3023,10 +3008,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1699, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1699, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -3036,7 +3021,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1699, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3044,7 +3029,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "unlabeled": null } ], - "commentStart": 1225, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -3062,10 +3047,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "argument": { "abs_path": false, - "commentStart": 1728, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1728, + "commentStart": 0, "end": 0, "name": "s", "start": 0, @@ -3076,24 +3061,24 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 1721, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 1217, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 1207, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 1208, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -3103,7 +3088,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "Parameter", "identifier": { - "commentStart": 1211, + "commentStart": 0, "end": 0, "name": "d", "start": 0, @@ -3113,7 +3098,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "Parameter", "identifier": { - "commentStart": 1214, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -3140,12 +3125,12 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 1731, + "commentStart": 0, "declaration": { - "commentStart": 1766, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1766, + "commentStart": 0, "end": 0, "name": "bs", "start": 0, @@ -3155,10 +3140,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "arguments": [ { "abs_path": false, - "commentStart": 1785, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1785, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -3171,10 +3156,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, { "abs_path": false, - "commentStart": 1792, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1792, + "commentStart": 0, "end": 0, "name": "depth", "start": 0, @@ -3187,10 +3172,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, { "abs_path": false, - "commentStart": 1799, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1799, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -3204,10 +3189,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1771, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1771, + "commentStart": 0, "end": 0, "name": "bracketSketch", "start": 0, @@ -3217,7 +3202,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1771, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3238,12 +3223,12 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 1804, + "commentStart": 0, "declaration": { - "commentStart": 1804, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1804, + "commentStart": 0, "end": 0, "name": "bracketBody", "start": 0, @@ -3253,10 +3238,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "body": [ { "abs_path": false, - "commentStart": 1818, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1818, + "commentStart": 0, "end": 0, "name": "bs", "start": 0, @@ -3272,21 +3257,21 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1834, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1843, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1843, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1843, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3299,10 +3284,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "+", "right": { - "commentStart": 1852, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1852, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3316,10 +3301,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1856, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1856, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -3342,10 +3327,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1826, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1826, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3355,7 +3340,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1826, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3367,7 +3352,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1881, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -3375,10 +3360,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "arg": { "abs_path": false, - "commentStart": 1890, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1890, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -3393,27 +3378,27 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1905, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1912, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1947, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1947, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1947, + "commentStart": 0, "end": 0, "name": "bs", "start": 0, @@ -3421,7 +3406,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Identifier" }, "property": { - "commentStart": 1950, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -3433,7 +3418,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "MemberExpression" }, "property": { - "commentStart": 1955, + "commentStart": 0, "end": 0, "name": "edge7", "start": 0, @@ -3447,10 +3432,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1923, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1923, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -3460,7 +3445,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1923, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3469,15 +3454,15 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "arguments": [ { - "commentStart": 1996, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1996, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1996, + "commentStart": 0, "end": 0, "name": "bs", "start": 0, @@ -3485,7 +3470,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Identifier" }, "property": { - "commentStart": 1999, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -3497,7 +3482,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "MemberExpression" }, "property": { - "commentStart": 2004, + "commentStart": 0, "end": 0, "name": "edge2", "start": 0, @@ -3511,10 +3496,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1972, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1972, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -3524,7 +3509,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1972, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3533,15 +3518,15 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "arguments": [ { - "commentStart": 2045, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 2045, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 2045, + "commentStart": 0, "end": 0, "name": "bs", "start": 0, @@ -3549,7 +3534,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Identifier" }, "property": { - "commentStart": 2048, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -3561,7 +3546,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "MemberExpression" }, "property": { - "commentStart": 2053, + "commentStart": 0, "end": 0, "name": "edge3", "start": 0, @@ -3575,10 +3560,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2021, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2021, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -3588,7 +3573,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2021, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3597,15 +3582,15 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "arguments": [ { - "commentStart": 2094, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 2094, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 2094, + "commentStart": 0, "end": 0, "name": "bs", "start": 0, @@ -3613,7 +3598,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Identifier" }, "property": { - "commentStart": 2097, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -3625,7 +3610,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "MemberExpression" }, "property": { - "commentStart": 2102, + "commentStart": 0, "end": 0, "name": "edge6", "start": 0, @@ -3639,10 +3624,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2070, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2070, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -3652,7 +3637,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2070, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3668,10 +3653,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1866, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1866, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -3681,7 +3666,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1866, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3689,13 +3674,13 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "unlabeled": null } ], - "commentStart": 1818, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "commentStart": 2125, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3723,451 +3708,429 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 2151, + "commentStart": 0, "declaration": { - "commentStart": 2151, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2151, + "commentStart": 0, "end": 0, "name": "tabPlane", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 2162, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 2166, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2166, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2174, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 2180, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2180, + "commentStart": 0, "end": 0, - "name": "origin", + "name": "x", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2189, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 2191, - "end": 0, - "key": { - "commentStart": 2191, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2195, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 2198, - "end": 0, - "key": { - "commentStart": 2198, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2202, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 2205, - "end": 0, - "key": { - "commentStart": 2205, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2209, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 2209, - "end": 0, - "name": { - "commentStart": 2209, - "end": 0, - "name": "depth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "+", - "right": { - "abs_path": false, - "commentStart": 2217, - "end": 0, - "name": { - "commentStart": 2217, - "end": 0, - "name": "thk", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - } - ], + "raw": "0", "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } } }, { - "commentStart": 2228, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2228, + "commentStart": 0, "end": 0, - "name": "xAxis", + "name": "y", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2236, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 2238, - "end": 0, - "key": { - "commentStart": 2238, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2242, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - }, - { - "commentStart": 2245, - "end": 0, - "key": { - "commentStart": 2245, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2249, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 2252, - "end": 0, - "key": { - "commentStart": 2252, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2256, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - } - ], + "raw": "0", "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } } }, { - "commentStart": 2265, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2265, + "commentStart": 0, "end": 0, - "name": "yAxis", + "name": "z", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2273, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 2275, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 2275, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, + "name": "depth", "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2279, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } + "type": "Identifier" }, - { - "commentStart": 2282, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 2282, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, + "name": "thk", "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2286, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } + "type": "Identifier" }, - { - "commentStart": 2289, - "end": 0, - "key": { - "commentStart": 2289, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2293, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - } - ], + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "BinaryExpression", + "type": "BinaryExpression" + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "xAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } } }, { - "commentStart": 2302, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2302, + "commentStart": 0, "end": 0, - "name": "zAxis", + "name": "y", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2310, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 2312, - "end": 0, - "key": { - "commentStart": 2312, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2316, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 2319, - "end": 0, - "key": { - "commentStart": 2319, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2323, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 2326, - "end": 0, - "key": { - "commentStart": 2326, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2330, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - } - ], + "raw": "0", "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } } } ], @@ -4191,12 +4154,12 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 2339, + "commentStart": 0, "declaration": { - "commentStart": 2396, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2396, + "commentStart": 0, "end": 0, "name": "tabsR", "start": 0, @@ -4208,10 +4171,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "arguments": [ { "abs_path": false, - "commentStart": 2418, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2418, + "commentStart": 0, "end": 0, "name": "tabPlane", "start": 0, @@ -4225,10 +4188,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2404, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2404, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -4238,7 +4201,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2404, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4247,20 +4210,20 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "arguments": [ { - "commentStart": 2448, + "commentStart": 0, "elements": [ { - "commentStart": 2449, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2449, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2449, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2449, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -4273,7 +4236,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 2457, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4291,10 +4254,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2461, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2461, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -4310,17 +4273,17 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 2466, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2466, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2466, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2466, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4333,7 +4296,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 2475, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4351,10 +4314,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2479, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2479, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -4376,7 +4339,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "ArrayExpression" }, { - "commentStart": 2485, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4385,10 +4348,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2433, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2433, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -4398,7 +4361,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2433, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4409,21 +4372,21 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2498, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2504, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 2505, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2505, + "commentStart": 0, "end": 0, "name": "tabWidth", "start": 0, @@ -4435,15 +4398,15 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name" }, { - "commentStart": 2515, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 2516, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2516, + "commentStart": 0, "end": 0, "name": "tabLength", "start": 0, @@ -4454,7 +4417,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 2515, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4463,7 +4426,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 2528, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -4488,14 +4451,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2532, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2538, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -4506,10 +4469,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2493, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2493, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4519,7 +4482,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2493, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4531,17 +4494,17 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2557, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2563, + "commentStart": 0, "elements": [ { - "commentStart": 2564, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4553,18 +4516,18 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl } }, { - "commentStart": 2567, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2567, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 2568, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2568, + "commentStart": 0, "end": 0, "name": "tabLength", "start": 0, @@ -4575,7 +4538,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 2567, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4584,7 +4547,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 2580, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -4601,7 +4564,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "*", "right": { - "commentStart": 2584, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4626,14 +4589,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2588, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2594, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -4644,10 +4607,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2552, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2552, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4657,7 +4620,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2552, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4669,22 +4632,22 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2613, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2619, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 2621, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2621, + "commentStart": 0, "end": 0, "name": "tabWidth", "start": 0, @@ -4695,7 +4658,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 2620, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4703,15 +4666,15 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "UnaryExpression" }, { - "commentStart": 2631, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 2632, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2632, + "commentStart": 0, "end": 0, "name": "tabLength", "start": 0, @@ -4722,7 +4685,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 2631, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4731,7 +4694,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 2644, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -4756,14 +4719,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2648, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2654, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -4774,10 +4737,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2608, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2608, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4787,7 +4750,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2608, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4799,14 +4762,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2674, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2680, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -4817,10 +4780,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2668, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2668, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -4830,7 +4793,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2668, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4844,30 +4807,30 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2714, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2723, + "commentStart": 0, "elements": [ { - "commentStart": 2734, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2734, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2734, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2734, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2734, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -4880,7 +4843,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 2742, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4898,10 +4861,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2746, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2746, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -4918,14 +4881,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "+", "right": { - "commentStart": 2752, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2752, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2752, + "commentStart": 0, "end": 0, "name": "tabWidth", "start": 0, @@ -4938,7 +4901,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 2763, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4958,20 +4921,20 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 2775, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2775, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2775, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2775, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2775, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4984,7 +4947,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 2784, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5002,10 +4965,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2788, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2788, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -5022,14 +4985,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "-", "right": { - "commentStart": 2795, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2795, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2795, + "commentStart": 0, "end": 0, "name": "tabLength", "start": 0, @@ -5042,10 +5005,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 2808, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2808, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -5058,7 +5021,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 2812, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5091,21 +5054,21 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2833, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2842, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2842, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2842, + "commentStart": 0, "end": 0, "name": "holeDiam", "start": 0, @@ -5118,7 +5081,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 2853, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5137,10 +5100,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2699, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2699, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -5150,7 +5113,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2699, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5158,7 +5121,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "unlabeled": null }, { - "commentStart": 2864, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5167,10 +5130,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2694, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2694, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -5180,7 +5143,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2694, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5191,7 +5154,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2880, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -5200,10 +5163,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 2890, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2890, + "commentStart": 0, "end": 0, "name": "tabThk", "start": 0, @@ -5214,7 +5177,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 2889, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5225,10 +5188,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2872, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2872, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -5238,7 +5201,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2872, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5250,21 +5213,21 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2918, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2927, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2927, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2927, + "commentStart": 0, "end": 0, "name": "holeDiam", "start": 0, @@ -5277,7 +5240,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 2938, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5296,23 +5259,23 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2948, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2955, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 2986, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2986, + "commentStart": 0, "end": 0, "name": "edge11", "start": 0, @@ -5326,10 +5289,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2966, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2966, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -5339,7 +5302,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2966, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5349,10 +5312,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "arguments": [ { "abs_path": false, - "commentStart": 3024, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3024, + "commentStart": 0, "end": 0, "name": "edge12", "start": 0, @@ -5366,10 +5329,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3004, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3004, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -5379,7 +5342,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3004, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5395,10 +5358,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2903, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2903, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -5408,7 +5371,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2903, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5420,17 +5383,17 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3070, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3077, + "commentStart": 0, "elements": [ { - "commentStart": 3078, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5443,7 +5406,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, { "argument": { - "commentStart": 3082, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -5454,7 +5417,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "suffix": "None" } }, - "commentStart": 3081, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5462,7 +5425,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "UnaryExpression" }, { - "commentStart": 3085, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5483,14 +5446,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3089, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3101, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5505,24 +5468,24 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3104, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3115, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3115, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3115, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3115, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -5535,10 +5498,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "+", "right": { - "commentStart": 3124, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3124, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5552,10 +5515,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3128, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3128, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -5576,17 +5539,17 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "-", "right": { - "commentStart": 3135, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3135, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3135, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3135, + "commentStart": 0, "end": 0, "name": "tabLength", "start": 0, @@ -5599,7 +5562,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "*", "right": { - "commentStart": 3147, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -5616,7 +5579,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3151, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -5639,10 +5602,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3054, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3054, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -5652,7 +5615,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3054, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5660,13 +5623,13 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "unlabeled": null } ], - "commentStart": 2404, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "9": [ { - "commentStart": 3154, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5699,12 +5662,12 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 3210, + "commentStart": 0, "declaration": { - "commentStart": 3210, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3210, + "commentStart": 0, "end": 0, "name": "tabsL", "start": 0, @@ -5716,10 +5679,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "arguments": [ { "abs_path": false, - "commentStart": 3232, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3232, + "commentStart": 0, "end": 0, "name": "tabPlane", "start": 0, @@ -5733,10 +5696,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3218, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3218, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -5746,7 +5709,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3218, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5755,21 +5718,21 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "arguments": [ { - "commentStart": 3262, + "commentStart": 0, "elements": [ { - "commentStart": 3263, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3263, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 3264, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3264, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -5780,7 +5743,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 3263, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5789,7 +5752,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3272, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5807,10 +5770,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 3276, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3276, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -5826,17 +5789,17 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 3281, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3281, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3281, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3281, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -5849,7 +5812,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3290, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5867,10 +5830,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3294, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3294, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -5892,7 +5855,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "ArrayExpression" }, { - "commentStart": 3300, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5901,10 +5864,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3247, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3247, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -5914,7 +5877,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3247, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5925,22 +5888,22 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3313, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3319, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 3321, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3321, + "commentStart": 0, "end": 0, "name": "tabWidth", "start": 0, @@ -5951,7 +5914,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 3320, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5959,15 +5922,15 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "UnaryExpression" }, { - "commentStart": 3331, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 3332, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3332, + "commentStart": 0, "end": 0, "name": "tabLength", "start": 0, @@ -5978,7 +5941,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 3331, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5987,7 +5950,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3344, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -6012,14 +5975,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3348, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3354, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -6030,10 +5993,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3308, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3308, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6043,7 +6006,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3308, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6055,17 +6018,17 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3373, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3379, + "commentStart": 0, "elements": [ { - "commentStart": 3380, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6077,18 +6040,18 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl } }, { - "commentStart": 3383, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3383, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 3384, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3384, + "commentStart": 0, "end": 0, "name": "tabLength", "start": 0, @@ -6099,7 +6062,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 3383, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6108,7 +6071,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3396, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -6125,7 +6088,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "*", "right": { - "commentStart": 3400, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6150,14 +6113,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3404, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3410, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -6168,10 +6131,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3368, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3368, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6181,7 +6144,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3368, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6193,21 +6156,21 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3429, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3435, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 3436, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3436, + "commentStart": 0, "end": 0, "name": "tabWidth", "start": 0, @@ -6219,15 +6182,15 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name" }, { - "commentStart": 3446, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 3447, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3447, + "commentStart": 0, "end": 0, "name": "tabLength", "start": 0, @@ -6238,7 +6201,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 3446, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6247,7 +6210,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3459, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -6272,14 +6235,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3463, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3469, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -6290,10 +6253,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3424, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3424, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6303,7 +6266,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3424, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6315,14 +6278,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3489, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3495, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -6333,10 +6296,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3483, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3483, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -6346,7 +6309,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3483, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6360,31 +6323,31 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3529, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3538, + "commentStart": 0, "elements": [ { - "commentStart": 3549, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3549, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3549, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 3550, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3550, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -6395,7 +6358,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 3549, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6404,7 +6367,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3558, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6422,10 +6385,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 3562, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3562, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -6442,14 +6405,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "-", "right": { - "commentStart": 3569, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3569, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3569, + "commentStart": 0, "end": 0, "name": "tabWidth", "start": 0, @@ -6462,7 +6425,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3580, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6482,20 +6445,20 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 3593, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3593, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3593, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3593, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3593, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6508,7 +6471,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3602, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6526,10 +6489,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3606, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3606, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -6546,14 +6509,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "-", "right": { - "commentStart": 3613, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3613, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3613, + "commentStart": 0, "end": 0, "name": "tabLength", "start": 0, @@ -6566,10 +6529,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3626, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3626, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -6582,7 +6545,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3630, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6615,21 +6578,21 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3651, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3660, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3660, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3660, + "commentStart": 0, "end": 0, "name": "holeDiam", "start": 0, @@ -6642,7 +6605,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3671, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6661,10 +6624,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3514, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3514, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -6674,7 +6637,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3514, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6682,7 +6645,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "unlabeled": null }, { - "commentStart": 3682, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6691,10 +6654,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3509, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3509, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -6704,7 +6667,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3509, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6715,7 +6678,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3698, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6724,10 +6687,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 3708, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3708, + "commentStart": 0, "end": 0, "name": "tabThk", "start": 0, @@ -6738,7 +6701,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 3707, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6749,10 +6712,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3690, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3690, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -6762,7 +6725,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3690, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6774,21 +6737,21 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3736, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3745, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3745, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3745, + "commentStart": 0, "end": 0, "name": "holeDiam", "start": 0, @@ -6801,7 +6764,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3756, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6820,23 +6783,23 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3766, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3773, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 3804, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3804, + "commentStart": 0, "end": 0, "name": "edge21", "start": 0, @@ -6850,10 +6813,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3784, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3784, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -6863,7 +6826,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3784, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6873,10 +6836,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "arguments": [ { "abs_path": false, - "commentStart": 3842, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3842, + "commentStart": 0, "end": 0, "name": "edge22", "start": 0, @@ -6890,10 +6853,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3822, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3822, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -6903,7 +6866,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3822, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6919,10 +6882,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3721, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3721, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -6932,7 +6895,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3721, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6944,17 +6907,17 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3888, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3895, + "commentStart": 0, "elements": [ { - "commentStart": 3896, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6967,7 +6930,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, { "argument": { - "commentStart": 3900, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6978,7 +6941,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "suffix": "None" } }, - "commentStart": 3899, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6986,7 +6949,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "UnaryExpression" }, { - "commentStart": 3903, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -7007,14 +6970,14 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3907, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3919, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -7029,24 +6992,24 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3922, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3933, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3933, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3933, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3933, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -7059,10 +7022,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "+", "right": { - "commentStart": 3942, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3942, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -7076,10 +7039,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3946, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3946, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -7100,17 +7063,17 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "-", "right": { - "commentStart": 3953, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3953, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3953, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3953, + "commentStart": 0, "end": 0, "name": "tabLength", "start": 0, @@ -7123,7 +7086,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "*", "right": { - "commentStart": 3965, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -7140,7 +7103,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3969, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -7163,10 +7126,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3872, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3872, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -7176,7 +7139,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3872, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7184,13 +7147,13 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "unlabeled": null } ], - "commentStart": 3218, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "9": [ { - "commentStart": 3972, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -7218,475 +7181,453 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 4012, + "commentStart": 0, "declaration": { - "commentStart": 4012, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4012, + "commentStart": 0, "end": 0, "name": "retPlane", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4023, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 4027, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4027, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4035, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 4041, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4041, + "commentStart": 0, "end": 0, - "name": "origin", + "name": "x", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4050, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 4052, - "end": 0, - "key": { - "commentStart": 4052, + "left": { + "commentStart": 0, + "end": 0, + "left": { + "argument": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4056, - "end": 0, - "left": { - "commentStart": 4056, + "name": { + "commentStart": 0, "end": 0, - "left": { - "argument": { - "abs_path": false, - "commentStart": 4057, - "end": 0, - "name": { - "commentStart": 4057, - "end": 0, - "name": "width", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 4056, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - "operator": "/", - "right": { - "commentStart": 4065, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, + "name": "width", "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "commentStart": 4069, - "end": 0, - "raw": "20", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 20.0, - "suffix": "None" - } + "type": "Identifier" }, + "path": [], "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" } }, - { - "commentStart": 4073, - "end": 0, - "key": { - "commentStart": 4073, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4077, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 4080, - "end": 0, - "key": { - "commentStart": 4080, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4084, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "raw": "20", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 20.0, + "suffix": "None" } - ], + }, "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "BinaryExpression", + "type": "BinaryExpression" } }, { - "commentStart": 4093, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4093, + "commentStart": 0, "end": 0, - "name": "xAxis", + "name": "y", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4101, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 4103, - "end": 0, - "key": { - "commentStart": 4103, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4107, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 4110, - "end": 0, - "key": { - "commentStart": 4110, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4114, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - }, - { - "commentStart": 4117, - "end": 0, - "key": { - "commentStart": 4117, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4121, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - } - ], + "raw": "0", "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } } }, { - "commentStart": 4130, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4130, + "commentStart": 0, "end": 0, - "name": "yAxis", + "name": "z", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4138, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 4140, - "end": 0, - "key": { - "commentStart": 4140, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4144, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 4147, - "end": 0, - "key": { - "commentStart": 4147, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4151, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 4154, - "end": 0, - "key": { - "commentStart": 4154, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4158, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - } - ], + "raw": "0", "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } } - }, + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "xAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ { - "commentStart": 4167, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4167, + "commentStart": 0, "end": 0, - "name": "zAxis", + "name": "x", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4175, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 4177, - "end": 0, - "key": { - "commentStart": 4177, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4181, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - }, - { - "commentStart": 4184, - "end": 0, - "key": { - "commentStart": 4184, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4188, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 4191, - "end": 0, - "key": { - "commentStart": 4191, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4195, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - } - ], + "raw": "0", "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } } } ], @@ -7710,12 +7651,12 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 4204, + "commentStart": 0, "declaration": { - "commentStart": 4247, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4247, + "commentStart": 0, "end": 0, "name": "retFront", "start": 0, @@ -7727,10 +7668,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "arguments": [ { "abs_path": false, - "commentStart": 4272, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4272, + "commentStart": 0, "end": 0, "name": "retPlane", "start": 0, @@ -7744,10 +7685,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 4258, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4258, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -7757,7 +7698,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4258, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7766,21 +7707,21 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "arguments": [ { - "commentStart": 4302, + "commentStart": 0, "elements": [ { - "commentStart": 4303, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4303, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 4304, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4304, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -7791,7 +7732,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 4303, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7800,7 +7741,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 4313, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -7818,10 +7759,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 4317, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4317, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -7837,7 +7778,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 4322, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -7855,7 +7796,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "ArrayExpression" }, { - "commentStart": 4326, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -7864,10 +7805,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 4287, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4287, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -7877,7 +7818,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4287, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7888,17 +7829,17 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4339, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4345, + "commentStart": 0, "elements": [ { - "commentStart": 4346, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -7911,10 +7852,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, { "abs_path": false, - "commentStart": 4349, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4349, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -7935,10 +7876,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 4334, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4334, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7948,7 +7889,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4334, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7960,21 +7901,21 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4365, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4371, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 4372, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4372, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -7988,10 +7929,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "argument": { "abs_path": false, - "commentStart": 4378, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4378, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -8002,7 +7943,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 4377, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8019,10 +7960,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 4360, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4360, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8032,7 +7973,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4360, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8043,10 +7984,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 4389, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4389, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -8056,7 +7997,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4389, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8067,21 +8008,21 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4410, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4419, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4419, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4419, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -8094,7 +8035,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "-", "right": { - "commentStart": 4427, + "commentStart": 0, "end": 0, "raw": "40", "start": 0, @@ -8113,10 +8054,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 4402, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4402, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -8126,7 +8067,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4402, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8134,13 +8075,13 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "unlabeled": null } ], - "commentStart": 4258, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "5": [ { - "commentStart": 4430, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -8173,12 +8114,12 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 4472, + "commentStart": 0, "declaration": { - "commentStart": 4472, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4472, + "commentStart": 0, "end": 0, "name": "retBack", "start": 0, @@ -8190,10 +8131,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "arguments": [ { "abs_path": false, - "commentStart": 4496, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4496, + "commentStart": 0, "end": 0, "name": "retPlane", "start": 0, @@ -8207,10 +8148,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 4482, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4482, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -8220,7 +8161,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4482, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8229,20 +8170,20 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "arguments": [ { - "commentStart": 4526, + "commentStart": 0, "elements": [ { - "commentStart": 4527, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4527, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4527, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4527, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -8255,7 +8196,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "/", "right": { - "commentStart": 4536, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -8273,10 +8214,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 4540, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4540, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -8292,7 +8233,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 4545, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -8310,7 +8251,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "ArrayExpression" }, { - "commentStart": 4549, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -8319,10 +8260,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 4511, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4511, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -8332,7 +8273,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4511, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8343,17 +8284,17 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4562, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4568, + "commentStart": 0, "elements": [ { - "commentStart": 4569, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -8366,10 +8307,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, { "abs_path": false, - "commentStart": 4572, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4572, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -8390,10 +8331,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 4557, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4557, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8403,7 +8344,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4557, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8415,22 +8356,22 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4588, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4594, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 4596, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4596, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -8441,7 +8382,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 4595, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8449,7 +8390,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "UnaryExpression" }, { - "commentStart": 4601, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -8470,10 +8411,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 4583, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4583, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8483,7 +8424,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4583, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8495,17 +8436,17 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4615, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4621, + "commentStart": 0, "elements": [ { - "commentStart": 4622, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -8519,10 +8460,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "argument": { "abs_path": false, - "commentStart": 4626, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4626, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -8533,7 +8474,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 4625, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8550,10 +8491,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 4610, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4610, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8563,7 +8504,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4610, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8574,10 +8515,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 4637, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4637, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -8587,7 +8528,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4637, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8598,21 +8539,21 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4658, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4667, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4667, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4667, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -8625,7 +8566,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl }, "operator": "-", "right": { - "commentStart": 4675, + "commentStart": 0, "end": 0, "raw": "40", "start": 0, @@ -8644,10 +8585,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 4650, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4650, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -8657,7 +8598,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4650, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8665,7 +8606,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "unlabeled": null } ], - "commentStart": 4482, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -8688,7 +8629,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 325, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -8703,10 +8644,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl ], "properties": [ { - "commentStart": 334, + "commentStart": 0, "end": 0, "key": { - "commentStart": 334, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -8716,10 +8657,10 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 354, + "commentStart": 0, "end": 0, "name": { - "commentStart": 354, + "commentStart": 0, "end": 0, "name": "mm", "start": 0, @@ -8740,7 +8681,7 @@ description: Result of parsing focusrite-scarlett-mounting-bracket.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 357, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ops.snap b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ops.snap index 3c40011b4..294bb456a 100644 --- a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/ops.snap @@ -9,8 +9,8 @@ description: Operations executed focusrite-scarlett-mounting-bracket.kcl "type": "FunctionCall", "name": "bracketSketch", "functionSourceRange": [ - 1207, - 1731, + 1181, + 1705, 0 ], "unlabeledArg": null, @@ -20,180 +20,181 @@ description: Operations executed focusrite-scarlett-mounting-bracket.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { + "origin": { "type": "Object", "value": { - "origin": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 44.0, - "ty": { - "type": "Unknown" - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "xAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 44.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "yAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "xAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "zAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": -1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "yAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + } + }, + "zAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": -1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" } } } @@ -219,7 +220,13 @@ description: Operations executed focusrite-scarlett-mounting-bracket.kcl "type": "Number", "value": 88.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -296,186 +303,181 @@ description: Operations executed focusrite-scarlett-mounting-bracket.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { + "origin": { "type": "Object", "value": { - "origin": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 49.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "xAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "yAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "z": { + "type": "Number", + "value": 49.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "xAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "zAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "yAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + } + }, + "zAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" } } } @@ -556,7 +558,13 @@ description: Operations executed focusrite-scarlett-mounting-bracket.kcl "type": "Number", "value": 2.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -645,7 +653,13 @@ description: Operations executed focusrite-scarlett-mounting-bracket.kcl "type": "Number", "value": 54.666666666666664, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -682,186 +696,181 @@ description: Operations executed focusrite-scarlett-mounting-bracket.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { + "origin": { "type": "Object", "value": { - "origin": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 49.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "xAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "yAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "z": { + "type": "Number", + "value": 49.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "xAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "zAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "yAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + } + }, + "zAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" } } } @@ -942,7 +951,13 @@ description: Operations executed focusrite-scarlett-mounting-bracket.kcl "type": "Number", "value": 2.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1031,7 +1046,13 @@ description: Operations executed focusrite-scarlett-mounting-bracket.kcl "type": "Number", "value": 54.666666666666664, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1068,180 +1089,181 @@ description: Operations executed focusrite-scarlett-mounting-bracket.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { + "origin": { "type": "Object", "value": { - "origin": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": -52.0, - "ty": { - "type": "Unknown" - } + "x": { + "type": "Number", + "value": -52.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "xAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "yAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "xAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "zAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "yAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + } + }, + "zAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" } } } @@ -1291,180 +1313,181 @@ description: Operations executed focusrite-scarlett-mounting-bracket.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { + "origin": { "type": "Object", "value": { - "origin": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": -52.0, - "ty": { - "type": "Unknown" - } + "x": { + "type": "Number", + "value": -52.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "xAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "yAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "xAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "zAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "yAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + } + }, + "zAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" } } } diff --git a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/program_memory.snap index c50f3e247..f8364a5c6 100644 --- a/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/focusrite-scarlett-mounting-bracket/program_memory.snap @@ -15,9 +15,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1349, - "end": 1355, - "start": 1349, + "commentStart": 1323, + "end": 1329, + "start": 1323, "type": "TagDeclarator", "value": "edge1" }, @@ -28,9 +28,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1406, - "end": 1412, - "start": 1406, + "commentStart": 1380, + "end": 1386, + "start": 1380, "type": "TagDeclarator", "value": "edge2" }, @@ -41,9 +41,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1466, - "end": 1472, - "start": 1466, + "commentStart": 1440, + "end": 1446, + "start": 1440, "type": "TagDeclarator", "value": "edge3" }, @@ -54,9 +54,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1522, - "end": 1528, - "start": 1522, + "commentStart": 1496, + "end": 1502, + "start": 1496, "type": "TagDeclarator", "value": "edge4" }, @@ -67,9 +67,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1574, - "end": 1580, - "start": 1574, + "commentStart": 1548, + "end": 1554, + "start": 1548, "type": "TagDeclarator", "value": "edge5" }, @@ -80,9 +80,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1627, - "end": 1633, - "start": 1627, + "commentStart": 1601, + "end": 1607, + "start": 1601, "type": "TagDeclarator", "value": "edge6" }, @@ -93,9 +93,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1684, - "end": 1690, - "start": 1684, + "commentStart": 1658, + "end": 1664, + "start": 1658, "type": "TagDeclarator", "value": "edge7" }, @@ -106,9 +106,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1711, - "end": 1717, - "start": 1711, + "commentStart": 1685, + "end": 1691, + "start": 1685, "type": "TagDeclarator", "value": "edge8" }, @@ -129,9 +129,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 49.0 ], "tag": { - "commentStart": 1349, - "end": 1355, - "start": 1349, + "commentStart": 1323, + "end": 1329, + "start": 1323, "type": "TagDeclarator", "value": "edge1" }, @@ -154,9 +154,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra -4.0 ], "tag": { - "commentStart": 1406, - "end": 1412, - "start": 1406, + "commentStart": 1380, + "end": 1386, + "start": 1380, "type": "TagDeclarator", "value": "edge2" }, @@ -179,9 +179,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra -4.0 ], "tag": { - "commentStart": 1466, - "end": 1472, - "start": 1466, + "commentStart": 1440, + "end": 1446, + "start": 1440, "type": "TagDeclarator", "value": "edge3" }, @@ -204,9 +204,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 49.0 ], "tag": { - "commentStart": 1522, - "end": 1528, - "start": 1522, + "commentStart": 1496, + "end": 1502, + "start": 1496, "type": "TagDeclarator", "value": "edge4" }, @@ -229,9 +229,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 49.0 ], "tag": { - "commentStart": 1574, - "end": 1580, - "start": 1574, + "commentStart": 1548, + "end": 1554, + "start": 1548, "type": "TagDeclarator", "value": "edge5" }, @@ -254,9 +254,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 0.0 ], "tag": { - "commentStart": 1627, - "end": 1633, - "start": 1627, + "commentStart": 1601, + "end": 1607, + "start": 1601, "type": "TagDeclarator", "value": "edge6" }, @@ -279,9 +279,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 0.0 ], "tag": { - "commentStart": 1684, - "end": 1690, - "start": 1684, + "commentStart": 1658, + "end": 1664, + "start": 1658, "type": "TagDeclarator", "value": "edge7" }, @@ -304,9 +304,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 49.0 ], "tag": { - "commentStart": 1711, - "end": 1717, - "start": 1711, + "commentStart": 1685, + "end": 1691, + "start": 1685, "type": "TagDeclarator", "value": "edge8" }, @@ -328,22 +328,34 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "origin": { "x": 0.0, "y": 44.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -414,28 +426,72 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra { "type": "fillet", "id": "[uuid]", - "radius": 6.0, + "radius": { + "n": 6.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 6.0, + "radius": { + "n": 6.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 6.0, + "radius": { + "n": 6.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 6.0, + "radius": { + "n": 6.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -448,176 +504,177 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "bracketPlane": { "type": "Object", "value": { - "plane": { + "origin": { "type": "Object", "value": { - "origin": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 44.0, - "ty": { - "type": "Unknown" - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "xAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 44.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "yAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "xAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "zAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": -1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "yAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + } + }, + "zAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": -1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" } } } @@ -644,9 +701,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 49.0 ], "tag": { - "commentStart": 1349, - "end": 1355, - "start": 1349, + "commentStart": 1323, + "end": 1329, + "start": 1323, "type": "TagDeclarator", "value": "edge1" }, @@ -669,9 +726,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra -4.0 ], "tag": { - "commentStart": 1406, - "end": 1412, - "start": 1406, + "commentStart": 1380, + "end": 1386, + "start": 1380, "type": "TagDeclarator", "value": "edge2" }, @@ -694,9 +751,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra -4.0 ], "tag": { - "commentStart": 1466, - "end": 1472, - "start": 1466, + "commentStart": 1440, + "end": 1446, + "start": 1440, "type": "TagDeclarator", "value": "edge3" }, @@ -719,9 +776,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 49.0 ], "tag": { - "commentStart": 1522, - "end": 1528, - "start": 1522, + "commentStart": 1496, + "end": 1502, + "start": 1496, "type": "TagDeclarator", "value": "edge4" }, @@ -744,9 +801,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 49.0 ], "tag": { - "commentStart": 1574, - "end": 1580, - "start": 1574, + "commentStart": 1548, + "end": 1554, + "start": 1548, "type": "TagDeclarator", "value": "edge5" }, @@ -769,9 +826,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 0.0 ], "tag": { - "commentStart": 1627, - "end": 1633, - "start": 1627, + "commentStart": 1601, + "end": 1607, + "start": 1601, "type": "TagDeclarator", "value": "edge6" }, @@ -794,9 +851,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 0.0 ], "tag": { - "commentStart": 1684, - "end": 1690, - "start": 1684, + "commentStart": 1658, + "end": 1664, + "start": 1658, "type": "TagDeclarator", "value": "edge7" }, @@ -819,9 +876,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 49.0 ], "tag": { - "commentStart": 1711, - "end": 1717, - "start": 1711, + "commentStart": 1685, + "end": 1691, + "start": 1685, "type": "TagDeclarator", "value": "edge8" }, @@ -843,22 +900,34 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "origin": { "x": 0.0, "y": 44.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1183,22 +1252,34 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "origin": { "x": -52.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1335,22 +1416,34 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "origin": { "x": -52.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1391,176 +1484,177 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "retPlane": { "type": "Object", "value": { - "plane": { + "origin": { "type": "Object", "value": { - "origin": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": -52.0, - "ty": { - "type": "Unknown" - } + "x": { + "type": "Number", + "value": -52.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "xAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "yAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "xAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "zAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "yAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + } + }, + "zAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" } } } @@ -1584,182 +1678,177 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "tabPlane": { "type": "Object", "value": { - "plane": { + "origin": { "type": "Object", "value": { - "origin": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 49.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "xAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "yAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "z": { + "type": "Number", + "value": 49.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "xAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "zAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - "z": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "yAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + } + }, + "zAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" } } } @@ -1808,9 +1897,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 3354, - "end": 3361, - "start": 3354, + "commentStart": 3304, + "end": 3311, + "start": 3304, "type": "TagDeclarator", "value": "edge21" }, @@ -1821,9 +1910,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 3410, - "end": 3417, - "start": 3410, + "commentStart": 3360, + "end": 3367, + "start": 3360, "type": "TagDeclarator", "value": "edge22" }, @@ -1834,9 +1923,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 3469, - "end": 3476, - "start": 3469, + "commentStart": 3419, + "end": 3426, + "start": 3419, "type": "TagDeclarator", "value": "edge23" }, @@ -1847,9 +1936,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 3495, - "end": 3502, - "start": 3495, + "commentStart": 3445, + "end": 3452, + "start": 3445, "type": "TagDeclarator", "value": "edge24" }, @@ -1870,9 +1959,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 44.0 ], "tag": { - "commentStart": 3354, - "end": 3361, - "start": 3354, + "commentStart": 3304, + "end": 3311, + "start": 3304, "type": "TagDeclarator", "value": "edge21" }, @@ -1895,9 +1984,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 35.6667 ], "tag": { - "commentStart": 3410, - "end": 3417, - "start": 3410, + "commentStart": 3360, + "end": 3367, + "start": 3360, "type": "TagDeclarator", "value": "edge22" }, @@ -1920,9 +2009,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 19.0 ], "tag": { - "commentStart": 3469, - "end": 3476, - "start": 3469, + "commentStart": 3419, + "end": 3426, + "start": 3419, "type": "TagDeclarator", "value": "edge23" }, @@ -1945,9 +2034,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 10.6667 ], "tag": { - "commentStart": 3495, - "end": 3502, - "start": 3495, + "commentStart": 3445, + "end": 3452, + "start": 3445, "type": "TagDeclarator", "value": "edge24" }, @@ -1969,22 +2058,34 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "origin": { "x": 0.0, "y": 0.0, - "z": 49.0 + "z": 49.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2039,14 +2140,36 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra { "type": "fillet", "id": "[uuid]", - "radius": 2.5, + "radius": { + "n": 2.5, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 2.5, + "radius": { + "n": 2.5, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -2068,9 +2191,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 3354, - "end": 3361, - "start": 3354, + "commentStart": 3304, + "end": 3311, + "start": 3304, "type": "TagDeclarator", "value": "edge21" }, @@ -2081,9 +2204,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 3410, - "end": 3417, - "start": 3410, + "commentStart": 3360, + "end": 3367, + "start": 3360, "type": "TagDeclarator", "value": "edge22" }, @@ -2094,9 +2217,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 3469, - "end": 3476, - "start": 3469, + "commentStart": 3419, + "end": 3426, + "start": 3419, "type": "TagDeclarator", "value": "edge23" }, @@ -2107,9 +2230,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 3495, - "end": 3502, - "start": 3495, + "commentStart": 3445, + "end": 3452, + "start": 3445, "type": "TagDeclarator", "value": "edge24" }, @@ -2130,9 +2253,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 44.0 ], "tag": { - "commentStart": 3354, - "end": 3361, - "start": 3354, + "commentStart": 3304, + "end": 3311, + "start": 3304, "type": "TagDeclarator", "value": "edge21" }, @@ -2155,9 +2278,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 35.6667 ], "tag": { - "commentStart": 3410, - "end": 3417, - "start": 3410, + "commentStart": 3360, + "end": 3367, + "start": 3360, "type": "TagDeclarator", "value": "edge22" }, @@ -2180,9 +2303,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 19.0 ], "tag": { - "commentStart": 3469, - "end": 3476, - "start": 3469, + "commentStart": 3419, + "end": 3426, + "start": 3419, "type": "TagDeclarator", "value": "edge23" }, @@ -2205,9 +2328,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 10.6667 ], "tag": { - "commentStart": 3495, - "end": 3502, - "start": 3495, + "commentStart": 3445, + "end": 3452, + "start": 3445, "type": "TagDeclarator", "value": "edge24" }, @@ -2229,22 +2352,34 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "origin": { "x": 0.0, "y": 0.0, - "z": 49.0 + "z": 49.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2299,14 +2434,36 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra { "type": "fillet", "id": "[uuid]", - "radius": 2.5, + "radius": { + "n": 2.5, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 2.5, + "radius": { + "n": 2.5, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -2333,9 +2490,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2538, - "end": 2545, - "start": 2538, + "commentStart": 2488, + "end": 2495, + "start": 2488, "type": "TagDeclarator", "value": "edge11" }, @@ -2346,9 +2503,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2594, - "end": 2601, - "start": 2594, + "commentStart": 2544, + "end": 2551, + "start": 2544, "type": "TagDeclarator", "value": "edge12" }, @@ -2359,9 +2516,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2654, - "end": 2661, - "start": 2654, + "commentStart": 2604, + "end": 2611, + "start": 2604, "type": "TagDeclarator", "value": "edge13" }, @@ -2372,9 +2529,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2680, - "end": 2687, - "start": 2680, + "commentStart": 2630, + "end": 2637, + "start": 2630, "type": "TagDeclarator", "value": "edge14" }, @@ -2395,9 +2552,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 44.0 ], "tag": { - "commentStart": 2538, - "end": 2545, - "start": 2538, + "commentStart": 2488, + "end": 2495, + "start": 2488, "type": "TagDeclarator", "value": "edge11" }, @@ -2420,9 +2577,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 35.6667 ], "tag": { - "commentStart": 2594, - "end": 2601, - "start": 2594, + "commentStart": 2544, + "end": 2551, + "start": 2544, "type": "TagDeclarator", "value": "edge12" }, @@ -2445,9 +2602,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 19.0 ], "tag": { - "commentStart": 2654, - "end": 2661, - "start": 2654, + "commentStart": 2604, + "end": 2611, + "start": 2604, "type": "TagDeclarator", "value": "edge13" }, @@ -2470,9 +2627,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 10.6667 ], "tag": { - "commentStart": 2680, - "end": 2687, - "start": 2680, + "commentStart": 2630, + "end": 2637, + "start": 2630, "type": "TagDeclarator", "value": "edge14" }, @@ -2494,22 +2651,34 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "origin": { "x": 0.0, "y": 0.0, - "z": 49.0 + "z": 49.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2564,14 +2733,36 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra { "type": "fillet", "id": "[uuid]", - "radius": 2.5, + "radius": { + "n": 2.5, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 2.5, + "radius": { + "n": 2.5, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -2593,9 +2784,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2538, - "end": 2545, - "start": 2538, + "commentStart": 2488, + "end": 2495, + "start": 2488, "type": "TagDeclarator", "value": "edge11" }, @@ -2606,9 +2797,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2594, - "end": 2601, - "start": 2594, + "commentStart": 2544, + "end": 2551, + "start": 2544, "type": "TagDeclarator", "value": "edge12" }, @@ -2619,9 +2810,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2654, - "end": 2661, - "start": 2654, + "commentStart": 2604, + "end": 2611, + "start": 2604, "type": "TagDeclarator", "value": "edge13" }, @@ -2632,9 +2823,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2680, - "end": 2687, - "start": 2680, + "commentStart": 2630, + "end": 2637, + "start": 2630, "type": "TagDeclarator", "value": "edge14" }, @@ -2655,9 +2846,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 44.0 ], "tag": { - "commentStart": 2538, - "end": 2545, - "start": 2538, + "commentStart": 2488, + "end": 2495, + "start": 2488, "type": "TagDeclarator", "value": "edge11" }, @@ -2680,9 +2871,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 35.6667 ], "tag": { - "commentStart": 2594, - "end": 2601, - "start": 2594, + "commentStart": 2544, + "end": 2551, + "start": 2544, "type": "TagDeclarator", "value": "edge12" }, @@ -2705,9 +2896,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 19.0 ], "tag": { - "commentStart": 2654, - "end": 2661, - "start": 2654, + "commentStart": 2604, + "end": 2611, + "start": 2604, "type": "TagDeclarator", "value": "edge13" }, @@ -2730,9 +2921,9 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra 10.6667 ], "tag": { - "commentStart": 2680, - "end": 2687, - "start": 2680, + "commentStart": 2630, + "end": 2637, + "start": 2630, "type": "TagDeclarator", "value": "edge14" }, @@ -2754,22 +2945,34 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra "origin": { "x": 0.0, "y": 0.0, - "z": 49.0 + "z": 49.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2824,14 +3027,36 @@ description: Variables in memory after executing focusrite-scarlett-mounting-bra { "type": "fillet", "id": "[uuid]", - "radius": 2.5, + "radius": { + "n": 2.5, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 2.5, + "radius": { + "n": 2.5, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } diff --git a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/artifact_commands.snap index c20d6b22b..a65f35cd5 100644 --- a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/artifact_commands.snap @@ -620,7 +620,8 @@ description: Artifact commands food-service-spatula.kcl "type": "extrude", "target": "[uuid]", "distance": 3.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1222,7 +1223,8 @@ description: Artifact commands food-service-spatula.kcl "type": "extrude", "target": "[uuid]", "distance": 15.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1676,7 +1678,8 @@ description: Artifact commands food-service-spatula.kcl "type": "extrude", "target": "[uuid]", "distance": -150.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1996,7 +1999,8 @@ description: Artifact commands food-service-spatula.kcl "type": "extrude", "target": "[uuid]", "distance": -30.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/artifact_graph_flowchart.snap.md index 0734c3e6e..ef39ace49 100644 --- a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/artifact_graph_flowchart.snap.md @@ -1,76 +1,76 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[1476, 1526, 0]"] - 3["Segment
[1532, 1564, 0]"] - 4["Segment
[1570, 1607, 0]"] - 5["Segment
[1613, 1646, 0]"] - 6["Segment
[1652, 1752, 0]"] - 7["Segment
[1758, 1765, 0]"] + 2["Path
[1445, 1499, 0]"] + 3["Segment
[1505, 1537, 0]"] + 4["Segment
[1543, 1580, 0]"] + 5["Segment
[1586, 1619, 0]"] + 6["Segment
[1625, 1725, 0]"] + 7["Segment
[1731, 1738, 0]"] 8[Solid2d] end subgraph path9 [Path] 9["Path
[1001, 1042, 0]"] - 10["Segment
[1050, 1107, 0]"] - 11["Segment
[1115, 1178, 0]"] - 12["Segment
[1186, 1244, 0]"] - 13["Segment
[1252, 1317, 0]"] - 14["Segment
[1325, 1332, 0]"] + 10["Segment
[1050, 1090, 0]"] + 11["Segment
[1098, 1144, 0]"] + 12["Segment
[1152, 1193, 0]"] + 13["Segment
[1201, 1266, 0]"] + 14["Segment
[1274, 1281, 0]"] 15[Solid2d] end subgraph path16 [Path] 16["Path
[1001, 1042, 0]"] - 17["Segment
[1050, 1107, 0]"] - 18["Segment
[1115, 1178, 0]"] - 19["Segment
[1186, 1244, 0]"] - 20["Segment
[1252, 1317, 0]"] - 21["Segment
[1325, 1332, 0]"] + 17["Segment
[1050, 1090, 0]"] + 18["Segment
[1098, 1144, 0]"] + 19["Segment
[1152, 1193, 0]"] + 20["Segment
[1201, 1266, 0]"] + 21["Segment
[1274, 1281, 0]"] 22[Solid2d] end subgraph path23 [Path] 23["Path
[1001, 1042, 0]"] - 24["Segment
[1050, 1107, 0]"] - 25["Segment
[1115, 1178, 0]"] - 26["Segment
[1186, 1244, 0]"] - 27["Segment
[1252, 1317, 0]"] - 28["Segment
[1325, 1332, 0]"] + 24["Segment
[1050, 1090, 0]"] + 25["Segment
[1098, 1144, 0]"] + 26["Segment
[1152, 1193, 0]"] + 27["Segment
[1201, 1266, 0]"] + 28["Segment
[1274, 1281, 0]"] 29[Solid2d] end subgraph path49 [Path] - 49["Path
[2753, 2803, 0]"] - 50["Segment
[2809, 2868, 0]"] - 51["Segment
[2874, 2909, 0]"] - 52["Segment
[2915, 2948, 0]"] - 53["Segment
[2954, 3013, 0]"] - 54["Segment
[3019, 3055, 0]"] - 55["Segment
[3061, 3085, 0]"] - 56["Segment
[3091, 3098, 0]"] + 49["Path
[2741, 2794, 0]"] + 50["Segment
[2800, 2859, 0]"] + 51["Segment
[2865, 2900, 0]"] + 52["Segment
[2906, 2939, 0]"] + 53["Segment
[2945, 3004, 0]"] + 54["Segment
[3010, 3046, 0]"] + 55["Segment
[3052, 3076, 0]"] + 56["Segment
[3082, 3089, 0]"] 57[Solid2d] end subgraph path83 [Path] - 83["Path
[3727, 3773, 0]"] - 84["Segment
[3779, 3829, 0]"] - 85["Segment
[3835, 3934, 0]"] - 86["Segment
[3940, 3991, 0]"] - 87["Segment
[3997, 4095, 0]"] - 88["Segment
[4101, 4154, 0]"] - 89["Segment
[4160, 4260, 0]"] - 90["Segment
[4266, 4340, 0]"] - 91["Segment
[4346, 4447, 0]"] - 92["Segment
[4453, 4460, 0]"] + 83["Path
[3684, 3731, 0]"] + 84["Segment
[3737, 3787, 0]"] + 85["Segment
[3793, 3892, 0]"] + 86["Segment
[3898, 3949, 0]"] + 87["Segment
[3955, 4053, 0]"] + 88["Segment
[4059, 4112, 0]"] + 89["Segment
[4118, 4218, 0]"] + 90["Segment
[4224, 4298, 0]"] + 91["Segment
[4304, 4405, 0]"] + 92["Segment
[4411, 4418, 0]"] 93[Solid2d] end subgraph path121 [Path] 121["Path
[1001, 1042, 0]"] - 122["Segment
[1050, 1107, 0]"] - 123["Segment
[1115, 1178, 0]"] - 124["Segment
[1186, 1244, 0]"] - 125["Segment
[1252, 1317, 0]"] - 126["Segment
[1325, 1332, 0]"] + 122["Segment
[1050, 1090, 0]"] + 123["Segment
[1098, 1144, 0]"] + 124["Segment
[1152, 1193, 0]"] + 125["Segment
[1201, 1266, 0]"] + 126["Segment
[1274, 1281, 0]"] 127[Solid2d] end - 1["Plane
[1405, 1422, 0]"] - 30["Sweep Extrusion
[2328, 2378, 0]"] + 1["Plane
[1374, 1391, 0]"] + 30["Sweep Extrusion
[2313, 2363, 0]"] 31[Wall] 32[Wall] 33[Wall] @@ -88,8 +88,8 @@ flowchart LR 45["SweepEdge Adjacent"] 46["SweepEdge Opposite"] 47["SweepEdge Adjacent"] - 48["Plane
[2650, 2692, 0]"] - 58["Sweep Extrusion
[3143, 3187, 0]"] + 48["Plane
[2638, 2680, 0]"] + 58["Sweep Extrusion
[3123, 3167, 0]"] 59[Wall] 60[Wall] 61[Wall] @@ -113,8 +113,8 @@ flowchart LR 79["SweepEdge Adjacent"] 80["SweepEdge Opposite"] 81["SweepEdge Adjacent"] - 82["Plane
[3653, 3679, 0]"] - 94["Sweep Extrusion
[4516, 4558, 0]"] + 82["Plane
[3610, 3636, 0]"] + 94["Sweep Extrusion
[4474, 4516, 0]"] 95[Wall] 96[Wall] 97[Wall] @@ -141,7 +141,7 @@ flowchart LR 118["SweepEdge Adjacent"] 119["SweepEdge Opposite"] 120["SweepEdge Adjacent"] - 128["Sweep Extrusion
[4784, 4834, 0]"] + 128["Sweep Extrusion
[4751, 4801, 0]"] 129[Wall] 130[Wall] 131[Wall] @@ -154,12 +154,12 @@ flowchart LR 138["SweepEdge Adjacent"] 139["SweepEdge Opposite"] 140["SweepEdge Adjacent"] - 141["EdgeCut Fillet
[2415, 2556, 0]"] - 142["EdgeCut Fillet
[2415, 2556, 0]"] - 143["EdgeCut Fillet
[3230, 3361, 0]"] - 144["EdgeCut Fillet
[3230, 3361, 0]"] - 145["StartSketchOnPlane
[2636, 2693, 0]"] - 146["StartSketchOnFace
[4616, 4648, 0]"] + 141["EdgeCut Fillet
[2400, 2541, 0]"] + 142["EdgeCut Fillet
[2400, 2541, 0]"] + 143["EdgeCut Fillet
[3210, 3341, 0]"] + 144["EdgeCut Fillet
[3210, 3341, 0]"] + 145["StartSketchOnPlane
[2624, 2681, 0]"] + 146["StartSketchOnFace
[4575, 4614, 0]"] 1 --- 2 1 --- 9 1 --- 16 diff --git a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ast.snap b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ast.snap index 6930a730c..54e706100 100644 --- a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing food-service-spatula.kcl "Ok": { "body": [ { - "commentStart": 129, + "commentStart": 0, "declaration": { - "commentStart": 152, + "commentStart": 0, "end": 0, "id": { - "commentStart": 152, + "commentStart": 0, "end": 0, "name": "flipperThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 171, + "commentStart": 0, "end": 0, "raw": "3.5", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 175, + "commentStart": 0, "declaration": { - "commentStart": 175, + "commentStart": 0, "end": 0, "id": { - "commentStart": 175, + "commentStart": 0, "end": 0, "name": "flipperLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 191, + "commentStart": 0, "end": 0, "raw": "70.0", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 196, + "commentStart": 0, "declaration": { - "commentStart": 196, + "commentStart": 0, "end": 0, "id": { - "commentStart": 196, + "commentStart": 0, "end": 0, "name": "handleWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 210, + "commentStart": 0, "end": 0, "raw": "15.0", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 215, + "commentStart": 0, "declaration": { - "commentStart": 215, + "commentStart": 0, "end": 0, "id": { - "commentStart": 215, + "commentStart": 0, "end": 0, "name": "gripLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 228, + "commentStart": 0, "end": 0, "raw": "150.0", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 234, + "commentStart": 0, "declaration": { - "commentStart": 234, + "commentStart": 0, "end": 0, "id": { - "commentStart": 234, + "commentStart": 0, "end": 0, "name": "flipperFilletRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 256, + "commentStart": 0, "end": 0, "raw": "5.0", "start": 0, @@ -174,19 +174,19 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 260, + "commentStart": 0, "declaration": { - "commentStart": 260, + "commentStart": 0, "end": 0, "id": { - "commentStart": 260, + "commentStart": 0, "end": 0, "name": "flipperSlotWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 279, + "commentStart": 0, "end": 0, "raw": "10.0", "start": 0, @@ -207,19 +207,19 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 284, + "commentStart": 0, "declaration": { - "commentStart": 284, + "commentStart": 0, "end": 0, "id": { - "commentStart": 284, + "commentStart": 0, "end": 0, "name": "gripWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 296, + "commentStart": 0, "end": 0, "raw": "10.0", "start": 0, @@ -240,19 +240,19 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 301, + "commentStart": 0, "declaration": { - "commentStart": 301, + "commentStart": 0, "end": 0, "id": { - "commentStart": 301, + "commentStart": 0, "end": 0, "name": "gripHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 314, + "commentStart": 0, "end": 0, "raw": "20.0", "start": 0, @@ -273,19 +273,19 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 319, + "commentStart": 0, "declaration": { - "commentStart": 319, + "commentStart": 0, "end": 0, "id": { - "commentStart": 319, + "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 338, + "commentStart": 0, "end": 0, "raw": "3.0", "start": 0, @@ -306,19 +306,19 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 342, + "commentStart": 0, "declaration": { - "commentStart": 342, + "commentStart": 0, "end": 0, "id": { - "commentStart": 342, + "commentStart": 0, "end": 0, "name": "gripSlotWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 358, + "commentStart": 0, "end": 0, "raw": "8.0", "start": 0, @@ -339,12 +339,12 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 361, + "commentStart": 0, "declaration": { - "commentStart": 458, + "commentStart": 0, "end": 0, "id": { - "commentStart": 458, + "commentStart": 0, "end": 0, "name": "slot", "start": 0, @@ -354,28 +354,28 @@ description: Result of parsing food-service-spatula.kcl "body": { "body": [ { - "commentStart": 495, + "commentStart": 0, "declaration": { - "commentStart": 495, + "commentStart": 0, "end": 0, "id": { - "commentStart": 495, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 503, + "commentStart": 0, "cond": { - "commentStart": 506, + "commentStart": 0, "end": 0, "left": { - "commentStart": 506, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 506, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -383,7 +383,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 512, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -400,11 +400,11 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "==", "right": { - "commentStart": 518, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 518, + "commentStart": 0, "end": 0, "name": "end", "start": 0, @@ -412,7 +412,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 522, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -437,19 +437,19 @@ description: Result of parsing food-service-spatula.kcl "final_else": { "body": [ { - "commentStart": 607, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 607, + "commentStart": 0, "cond": { - "commentStart": 610, + "commentStart": 0, "end": 0, "left": { - "commentStart": 610, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 610, + "commentStart": 0, "end": 0, "name": "end", "start": 0, @@ -457,7 +457,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 614, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -474,11 +474,11 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "<", "right": { - "commentStart": 619, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 619, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -486,7 +486,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 625, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -511,24 +511,24 @@ description: Result of parsing food-service-spatula.kcl "final_else": { "body": [ { - "commentStart": 720, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "arguments": [ { - "commentStart": 742, + "commentStart": 0, "end": 0, "left": { - "commentStart": 742, + "commentStart": 0, "end": 0, "left": { - "commentStart": 742, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 742, + "commentStart": 0, "end": 0, "name": "end", "start": 0, @@ -536,7 +536,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 746, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -553,11 +553,11 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "-", "right": { - "commentStart": 751, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 751, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -565,7 +565,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 757, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -586,14 +586,14 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "/", "right": { - "commentStart": 764, + "commentStart": 0, "end": 0, "left": { - "commentStart": 764, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 764, + "commentStart": 0, "end": 0, "name": "end", "start": 0, @@ -601,7 +601,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 768, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -618,11 +618,11 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "-", "right": { - "commentStart": 773, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 773, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -630,7 +630,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 779, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -656,10 +656,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 736, + "commentStart": 0, "end": 0, "name": { - "commentStart": 736, + "commentStart": 0, "end": 0, "name": "atan", "start": 0, @@ -669,7 +669,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 736, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -678,10 +678,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 720, + "commentStart": 0, "end": 0, "name": { - "commentStart": 720, + "commentStart": 0, "end": 0, "name": "toDegrees", "start": 0, @@ -691,7 +691,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 720, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -702,7 +702,7 @@ description: Result of parsing food-service-spatula.kcl "type": "ExpressionStatement" } ], - "commentStart": 720, + "commentStart": 0, "end": 0, "start": 0 }, @@ -710,27 +710,27 @@ description: Result of parsing food-service-spatula.kcl "then_val": { "body": [ { - "commentStart": 636, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 636, + "commentStart": 0, "end": 0, "left": { "arguments": [ { "arguments": [ { - "commentStart": 652, + "commentStart": 0, "end": 0, "left": { - "commentStart": 652, + "commentStart": 0, "end": 0, "left": { - "commentStart": 652, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 652, + "commentStart": 0, "end": 0, "name": "end", "start": 0, @@ -738,7 +738,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 656, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -755,11 +755,11 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "-", "right": { - "commentStart": 661, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 661, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -767,7 +767,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 667, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -788,14 +788,14 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "/", "right": { - "commentStart": 674, + "commentStart": 0, "end": 0, "left": { - "commentStart": 674, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 674, + "commentStart": 0, "end": 0, "name": "end", "start": 0, @@ -803,7 +803,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 678, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -820,11 +820,11 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "-", "right": { - "commentStart": 683, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 683, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -832,7 +832,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 689, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -858,10 +858,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 646, + "commentStart": 0, "end": 0, "name": { - "commentStart": 646, + "commentStart": 0, "end": 0, "name": "atan", "start": 0, @@ -871,7 +871,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 646, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -880,10 +880,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 636, + "commentStart": 0, "end": 0, "name": { - "commentStart": 636, + "commentStart": 0, "end": 0, "name": "toDegrees", "start": 0, @@ -893,7 +893,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 636, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -901,7 +901,7 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "+", "right": { - "commentStart": 697, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -921,7 +921,7 @@ description: Result of parsing food-service-spatula.kcl "type": "ExpressionStatement" } ], - "commentStart": 636, + "commentStart": 0, "end": 0, "start": 0 }, @@ -933,7 +933,7 @@ description: Result of parsing food-service-spatula.kcl "type": "ExpressionStatement" } ], - "commentStart": 607, + "commentStart": 0, "end": 0, "start": 0 }, @@ -941,19 +941,19 @@ description: Result of parsing food-service-spatula.kcl "then_val": { "body": [ { - "commentStart": 531, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 531, + "commentStart": 0, "cond": { - "commentStart": 534, + "commentStart": 0, "end": 0, "left": { - "commentStart": 534, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 534, + "commentStart": 0, "end": 0, "name": "end", "start": 0, @@ -961,7 +961,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 538, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -978,11 +978,11 @@ description: Result of parsing food-service-spatula.kcl }, "operator": ">", "right": { - "commentStart": 543, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 543, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -990,7 +990,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 549, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1015,10 +1015,10 @@ description: Result of parsing food-service-spatula.kcl "final_else": { "body": [ { - "commentStart": 582, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 582, + "commentStart": 0, "end": 0, "raw": "270", "start": 0, @@ -1034,7 +1034,7 @@ description: Result of parsing food-service-spatula.kcl "type": "ExpressionStatement" } ], - "commentStart": 582, + "commentStart": 0, "end": 0, "start": 0 }, @@ -1042,10 +1042,10 @@ description: Result of parsing food-service-spatula.kcl "then_val": { "body": [ { - "commentStart": 560, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 560, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1061,7 +1061,7 @@ description: Result of parsing food-service-spatula.kcl "type": "ExpressionStatement" } ], - "commentStart": 560, + "commentStart": 0, "end": 0, "start": 0 }, @@ -1073,7 +1073,7 @@ description: Result of parsing food-service-spatula.kcl "type": "ExpressionStatement" } ], - "commentStart": 531, + "commentStart": 0, "end": 0, "start": 0 }, @@ -1090,12 +1090,12 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 797, + "commentStart": 0, "declaration": { - "commentStart": 797, + "commentStart": 0, "end": 0, "id": { - "commentStart": 797, + "commentStart": 0, "end": 0, "name": "dist", "start": 0, @@ -1104,19 +1104,19 @@ description: Result of parsing food-service-spatula.kcl "init": { "arguments": [ { - "commentStart": 809, + "commentStart": 0, "end": 0, "left": { "arguments": [ { - "commentStart": 813, + "commentStart": 0, "end": 0, "left": { - "commentStart": 813, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 813, + "commentStart": 0, "end": 0, "name": "end", "start": 0, @@ -1124,7 +1124,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 817, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1141,11 +1141,11 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "-", "right": { - "commentStart": 822, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 822, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -1153,7 +1153,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 828, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1173,7 +1173,7 @@ description: Result of parsing food-service-spatula.kcl "type": "BinaryExpression" }, { - "commentStart": 832, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1187,10 +1187,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 809, + "commentStart": 0, "end": 0, "name": { - "commentStart": 809, + "commentStart": 0, "end": 0, "name": "pow", "start": 0, @@ -1200,7 +1200,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 809, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1210,14 +1210,14 @@ description: Result of parsing food-service-spatula.kcl "right": { "arguments": [ { - "commentStart": 841, + "commentStart": 0, "end": 0, "left": { - "commentStart": 841, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 841, + "commentStart": 0, "end": 0, "name": "end", "start": 0, @@ -1225,7 +1225,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 845, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1242,11 +1242,11 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "-", "right": { - "commentStart": 850, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 850, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -1254,7 +1254,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 856, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1274,7 +1274,7 @@ description: Result of parsing food-service-spatula.kcl "type": "BinaryExpression" }, { - "commentStart": 860, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1288,10 +1288,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 837, + "commentStart": 0, "end": 0, "name": { - "commentStart": 837, + "commentStart": 0, "end": 0, "name": "pow", "start": 0, @@ -1301,7 +1301,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 837, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1314,10 +1314,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 804, + "commentStart": 0, "end": 0, "name": { - "commentStart": 804, + "commentStart": 0, "end": 0, "name": "sqrt", "start": 0, @@ -1327,7 +1327,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 804, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1343,32 +1343,32 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 866, + "commentStart": 0, "declaration": { - "commentStart": 866, + "commentStart": 0, "end": 0, "id": { - "commentStart": 866, + "commentStart": 0, "end": 0, "name": "xstart", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 875, + "commentStart": 0, "end": 0, "left": { - "commentStart": 875, + "commentStart": 0, "end": 0, "left": { - "commentStart": 875, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 875, + "commentStart": 0, "end": 0, "name": { - "commentStart": 875, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -1381,7 +1381,7 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "/", "right": { - "commentStart": 883, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1402,14 +1402,14 @@ description: Result of parsing food-service-spatula.kcl { "arguments": [ { - "commentStart": 901, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 901, + "commentStart": 0, "end": 0, "name": { - "commentStart": 901, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, @@ -1422,7 +1422,7 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "-", "right": { - "commentStart": 909, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1440,10 +1440,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 891, + "commentStart": 0, "end": 0, "name": { - "commentStart": 891, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -1453,7 +1453,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 891, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1462,10 +1462,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 887, + "commentStart": 0, "end": 0, "name": { - "commentStart": 887, + "commentStart": 0, "end": 0, "name": "cos", "start": 0, @@ -1475,7 +1475,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 887, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1487,11 +1487,11 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "+", "right": { - "commentStart": 916, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 916, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -1499,7 +1499,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 922, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1528,32 +1528,32 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 927, + "commentStart": 0, "declaration": { - "commentStart": 927, + "commentStart": 0, "end": 0, "id": { - "commentStart": 927, + "commentStart": 0, "end": 0, "name": "ystart", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 936, + "commentStart": 0, "end": 0, "left": { - "commentStart": 936, + "commentStart": 0, "end": 0, "left": { - "commentStart": 936, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 936, + "commentStart": 0, "end": 0, "name": { - "commentStart": 936, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -1566,7 +1566,7 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "/", "right": { - "commentStart": 944, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1587,14 +1587,14 @@ description: Result of parsing food-service-spatula.kcl { "arguments": [ { - "commentStart": 962, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 962, + "commentStart": 0, "end": 0, "name": { - "commentStart": 962, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, @@ -1607,7 +1607,7 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "-", "right": { - "commentStart": 970, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1625,10 +1625,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 952, + "commentStart": 0, "end": 0, "name": { - "commentStart": 952, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -1638,7 +1638,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 952, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1647,10 +1647,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 948, + "commentStart": 0, "end": 0, "name": { - "commentStart": 948, + "commentStart": 0, "end": 0, "name": "sin", "start": 0, @@ -1660,7 +1660,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 948, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1672,11 +1672,11 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "+", "right": { - "commentStart": 977, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 977, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -1684,7 +1684,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Identifier" }, "property": { - "commentStart": 983, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1713,12 +1713,12 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 988, + "commentStart": 0, "declaration": { - "commentStart": 988, + "commentStart": 0, "end": 0, "id": { - "commentStart": 988, + "commentStart": 0, "end": 0, "name": "slotSketch", "start": 0, @@ -1729,14 +1729,14 @@ description: Result of parsing food-service-spatula.kcl { "arguments": [ { - "commentStart": 1016, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1017, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1017, + "commentStart": 0, "end": 0, "name": "xstart", "start": 0, @@ -1749,10 +1749,10 @@ description: Result of parsing food-service-spatula.kcl }, { "abs_path": false, - "commentStart": 1025, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1025, + "commentStart": 0, "end": 0, "name": "ystart", "start": 0, @@ -1771,10 +1771,10 @@ description: Result of parsing food-service-spatula.kcl }, { "abs_path": false, - "commentStart": 1034, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1034, + "commentStart": 0, "end": 0, "name": "sketch1", "start": 0, @@ -1788,10 +1788,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 1001, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1001, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1801,7 +1801,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 1001, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1810,94 +1810,64 @@ description: Result of parsing food-service-spatula.kcl { "arguments": [ { - "commentStart": 1061, - "end": 0, - "properties": [ - { - "commentStart": 1063, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1063, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "name": "angle", "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1071, - "end": 0, - "name": { - "commentStart": 1071, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "Identifier" }, - { - "commentStart": 1078, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1078, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, + "name": "dist", "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1087, - "end": 0, - "name": { - "commentStart": 1087, - "end": 0, - "name": "dist", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1095, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1098, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "line000" + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1050, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1050, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -1907,119 +1877,90 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 1050, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1129, - "end": 0, - "properties": [ - { - "commentStart": 1131, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1131, + "name": { + "commentStart": 0, "end": 0, - "name": "radius", + "name": "width", "start": 0, "type": "Identifier" }, + "path": [], "start": 0, - "type": "ObjectProperty", + "type": "Name", + "type": "Name" + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1140, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 1140, - "end": 0, - "name": { - "commentStart": 1140, - "end": 0, - "name": "width", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "/", - "right": { - "commentStart": 1148, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "value": 2.0, + "suffix": "None" } }, - { - "commentStart": 1151, - "end": 0, - "key": { - "commentStart": 1151, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1160, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - } + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "180", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 180.0, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1167, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1170, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "arc000" + } } ], "callee": { "abs_path": false, - "commentStart": 1115, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1115, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -2029,111 +1970,82 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 1115, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1197, - "end": 0, - "properties": [ - { - "commentStart": 1199, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1199, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "name": "angle", "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1207, - "end": 0, - "name": { - "commentStart": 1207, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "Identifier" }, - { - "commentStart": 1214, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "abs_path": false, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1214, + "name": { + "commentStart": 0, "end": 0, - "name": "length", + "name": "dist", "start": 0, "type": "Identifier" }, + "path": [], "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "abs_path": false, - "commentStart": 1224, - "end": 0, - "name": { - "commentStart": 1224, - "end": 0, - "name": "dist", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 1223, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1232, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1235, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "line001" + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1186, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1186, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -2143,109 +2055,105 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 1186, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1268, - "elements": [ - { - "arguments": [ - { - "commentStart": 1283, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "arguments": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "profileStartX", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1269, - "end": 0, - "name": { - "commentStart": 1269, - "end": 0, - "name": "profileStartX", - "start": 0, - "type": "Identifier" + "type": "Name" }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1269, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1301, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1287, + "commentStart": 0, "end": 0, - "name": { - "commentStart": 1287, - "end": 0, - "name": "profileStartY", - "start": 0, - "type": "Identifier" - }, - "path": [], "start": 0, - "type": "Name" + "type": "CallExpression", + "type": "CallExpression" }, - "commentStart": 1287, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1306, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1309, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "arc001" + { + "arguments": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "profileStartY", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1252, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1252, + "commentStart": 0, "end": 0, - "name": "tangentialArcTo", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -2253,20 +2161,21 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 1252, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [], "callee": { "abs_path": false, - "commentStart": 1325, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1325, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2276,14 +2185,14 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 1325, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1001, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2301,10 +2210,10 @@ description: Result of parsing food-service-spatula.kcl { "argument": { "abs_path": false, - "commentStart": 1342, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1342, + "commentStart": 0, "end": 0, "name": "slotSketch", "start": 0, @@ -2315,24 +2224,24 @@ description: Result of parsing food-service-spatula.kcl "type": "Name", "type": "Name" }, - "commentStart": 1335, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 491, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 462, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 463, + "commentStart": 0, "end": 0, "name": "sketch1", "start": 0, @@ -2342,7 +2251,7 @@ description: Result of parsing food-service-spatula.kcl { "type": "Parameter", "identifier": { - "commentStart": 472, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -2352,7 +2261,7 @@ description: Result of parsing food-service-spatula.kcl { "type": "Parameter", "identifier": { - "commentStart": 479, + "commentStart": 0, "end": 0, "name": "end", "start": 0, @@ -2362,7 +2271,7 @@ description: Result of parsing food-service-spatula.kcl { "type": "Parameter", "identifier": { - "commentStart": 484, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -2389,14 +2298,14 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 1354, + "commentStart": 0, "declaration": { - "commentStart": 1393, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1393, + "commentStart": 0, "end": 0, - "name": "sketch000", + "name": "flipperSketch", "start": 0, "type": "Identifier" }, @@ -2404,10 +2313,10 @@ description: Result of parsing food-service-spatula.kcl "arguments": [ { "abs_path": false, - "commentStart": 1419, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1419, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -2421,10 +2330,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 1405, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1405, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2434,7 +2343,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 1405, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2448,19 +2357,19 @@ description: Result of parsing food-service-spatula.kcl "preComments": [ "", "", - "// Create a sketch on the \"XY\" plane" + "// Create a sketch on the \"XY\" plane for the flipper" ], "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { - "commentStart": 1422, + "commentStart": 0, "declaration": { - "commentStart": 1459, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1459, + "commentStart": 0, "end": 0, "name": "flipperProfile", "start": 0, @@ -2471,15 +2380,15 @@ description: Result of parsing food-service-spatula.kcl { "arguments": [ { - "commentStart": 1491, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 1493, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1493, + "commentStart": 0, "end": 0, "name": "flipperLength", "start": 0, @@ -2490,7 +2399,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Name", "type": "Name" }, - "commentStart": 1492, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2499,7 +2408,7 @@ description: Result of parsing food-service-spatula.kcl }, { "argument": { - "commentStart": 1509, + "commentStart": 0, "end": 0, "raw": "32.0", "start": 0, @@ -2510,7 +2419,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 1508, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2525,12 +2434,12 @@ description: Result of parsing food-service-spatula.kcl }, { "abs_path": false, - "commentStart": 1516, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1516, + "commentStart": 0, "end": 0, - "name": "sketch000", + "name": "flipperSketch", "start": 0, "type": "Identifier" }, @@ -2542,10 +2451,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 1476, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1476, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2555,7 +2464,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 1476, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2566,21 +2475,21 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 1537, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1543, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1544, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1544, + "commentStart": 0, "end": 0, "name": "flipperLength", "start": 0, @@ -2592,7 +2501,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Name" }, { - "commentStart": 1559, + "commentStart": 0, "end": 0, "raw": "2.0", "start": 0, @@ -2613,10 +2522,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 1532, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1532, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2626,7 +2535,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 1532, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2638,14 +2547,14 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 1576, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1585, + "commentStart": 0, "end": 0, "raw": "60.0", "start": 0, @@ -2660,14 +2569,14 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 1591, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1597, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2678,10 +2587,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 1570, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1570, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2691,7 +2600,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 1570, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2703,22 +2612,22 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 1618, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1624, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 1626, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1626, + "commentStart": 0, "end": 0, "name": "flipperLength", "start": 0, @@ -2729,7 +2638,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Name", "type": "Name" }, - "commentStart": 1625, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2737,7 +2646,7 @@ description: Result of parsing food-service-spatula.kcl "type": "UnaryExpression" }, { - "commentStart": 1641, + "commentStart": 0, "end": 0, "raw": "2.0", "start": 0, @@ -2758,10 +2667,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 1613, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1613, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2771,7 +2680,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 1613, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2781,14 +2690,14 @@ description: Result of parsing food-service-spatula.kcl { "arguments": [ { - "commentStart": 1656, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1665, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1665, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -2797,7 +2706,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1676, + "commentStart": 0, "end": 0, "raw": "196.912390", "start": 0, @@ -2810,10 +2719,10 @@ description: Result of parsing food-service-spatula.kcl } }, { - "commentStart": 1695, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1695, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -2822,7 +2731,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1708, + "commentStart": 0, "end": 0, "raw": "163.087610", "start": 0, @@ -2835,10 +2744,10 @@ description: Result of parsing food-service-spatula.kcl } }, { - "commentStart": 1727, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1727, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2847,7 +2756,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1736, + "commentStart": 0, "end": 0, "raw": "110.0", "start": 0, @@ -2865,7 +2774,7 @@ description: Result of parsing food-service-spatula.kcl "type": "ObjectExpression" }, { - "commentStart": 1750, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2874,10 +2783,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 1652, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1652, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -2887,7 +2796,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 1652, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2897,10 +2806,10 @@ description: Result of parsing food-service-spatula.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1758, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1758, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2910,20 +2819,20 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 1758, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1476, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "5": [ { - "commentStart": 1765, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2956,12 +2865,12 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 1801, + "commentStart": 0, "declaration": { - "commentStart": 1801, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1801, + "commentStart": 0, "end": 0, "name": "slotProfile000", "start": 0, @@ -2971,12 +2880,12 @@ description: Result of parsing food-service-spatula.kcl "arguments": [ { "abs_path": false, - "commentStart": 1823, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1823, + "commentStart": 0, "end": 0, - "name": "sketch000", + "name": "flipperSketch", "start": 0, "type": "Identifier" }, @@ -2986,11 +2895,11 @@ description: Result of parsing food-service-spatula.kcl "type": "Name" }, { - "commentStart": 1834, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1836, + "commentStart": 0, "end": 0, "raw": "25", "start": 0, @@ -3001,7 +2910,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 1835, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3009,7 +2918,7 @@ description: Result of parsing food-service-spatula.kcl "type": "UnaryExpression" }, { - "commentStart": 1840, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3027,11 +2936,11 @@ description: Result of parsing food-service-spatula.kcl "type": "ArrayExpression" }, { - "commentStart": 1844, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1846, + "commentStart": 0, "end": 0, "raw": "55", "start": 0, @@ -3042,7 +2951,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 1845, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3050,7 +2959,7 @@ description: Result of parsing food-service-spatula.kcl "type": "UnaryExpression" }, { - "commentStart": 1850, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3069,10 +2978,10 @@ description: Result of parsing food-service-spatula.kcl }, { "abs_path": false, - "commentStart": 1854, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1854, + "commentStart": 0, "end": 0, "name": "flipperSlotWidth", "start": 0, @@ -3086,10 +2995,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 1818, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1818, + "commentStart": 0, "end": 0, "name": "slot", "start": 0, @@ -3099,7 +3008,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 1818, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3115,12 +3024,12 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 1871, + "commentStart": 0, "declaration": { - "commentStart": 1909, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1909, + "commentStart": 0, "end": 0, "name": "slotProfile001", "start": 0, @@ -3130,12 +3039,12 @@ description: Result of parsing food-service-spatula.kcl "arguments": [ { "abs_path": false, - "commentStart": 1931, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1931, + "commentStart": 0, "end": 0, - "name": "sketch000", + "name": "flipperSketch", "start": 0, "type": "Identifier" }, @@ -3145,11 +3054,11 @@ description: Result of parsing food-service-spatula.kcl "type": "Name" }, { - "commentStart": 1942, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1944, + "commentStart": 0, "end": 0, "raw": "25", "start": 0, @@ -3160,7 +3069,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 1943, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3168,7 +3077,7 @@ description: Result of parsing food-service-spatula.kcl "type": "UnaryExpression" }, { - "commentStart": 1948, + "commentStart": 0, "end": 0, "raw": "18", "start": 0, @@ -3186,11 +3095,11 @@ description: Result of parsing food-service-spatula.kcl "type": "ArrayExpression" }, { - "commentStart": 1953, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1955, + "commentStart": 0, "end": 0, "raw": "55", "start": 0, @@ -3201,7 +3110,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 1954, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3209,7 +3118,7 @@ description: Result of parsing food-service-spatula.kcl "type": "UnaryExpression" }, { - "commentStart": 1959, + "commentStart": 0, "end": 0, "raw": "19", "start": 0, @@ -3228,10 +3137,10 @@ description: Result of parsing food-service-spatula.kcl }, { "abs_path": false, - "commentStart": 1964, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1964, + "commentStart": 0, "end": 0, "name": "flipperSlotWidth", "start": 0, @@ -3245,10 +3154,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 1926, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1926, + "commentStart": 0, "end": 0, "name": "slot", "start": 0, @@ -3258,7 +3167,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 1926, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3279,12 +3188,12 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 1981, + "commentStart": 0, "declaration": { - "commentStart": 2022, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2022, + "commentStart": 0, "end": 0, "name": "slotProfile002", "start": 0, @@ -3294,12 +3203,12 @@ description: Result of parsing food-service-spatula.kcl "arguments": [ { "abs_path": false, - "commentStart": 2044, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2044, + "commentStart": 0, "end": 0, - "name": "sketch000", + "name": "flipperSketch", "start": 0, "type": "Identifier" }, @@ -3309,11 +3218,11 @@ description: Result of parsing food-service-spatula.kcl "type": "Name" }, { - "commentStart": 2055, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 2057, + "commentStart": 0, "end": 0, "raw": "25", "start": 0, @@ -3324,7 +3233,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 2056, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3333,7 +3242,7 @@ description: Result of parsing food-service-spatula.kcl }, { "argument": { - "commentStart": 2062, + "commentStart": 0, "end": 0, "raw": "18", "start": 0, @@ -3344,7 +3253,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 2061, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3358,11 +3267,11 @@ description: Result of parsing food-service-spatula.kcl "type": "ArrayExpression" }, { - "commentStart": 2067, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 2069, + "commentStart": 0, "end": 0, "raw": "55", "start": 0, @@ -3373,7 +3282,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 2068, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3382,7 +3291,7 @@ description: Result of parsing food-service-spatula.kcl }, { "argument": { - "commentStart": 2074, + "commentStart": 0, "end": 0, "raw": "19", "start": 0, @@ -3393,7 +3302,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 2073, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3408,10 +3317,10 @@ description: Result of parsing food-service-spatula.kcl }, { "abs_path": false, - "commentStart": 2079, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2079, + "commentStart": 0, "end": 0, "name": "flipperSlotWidth", "start": 0, @@ -3425,10 +3334,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 2039, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2039, + "commentStart": 0, "end": 0, "name": "slot", "start": 0, @@ -3438,7 +3347,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 2039, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3459,12 +3368,12 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 2096, + "commentStart": 0, "declaration": { - "commentStart": 2145, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2145, + "commentStart": 0, "end": 0, "name": "spatulaProfile", "start": 0, @@ -3474,10 +3383,10 @@ description: Result of parsing food-service-spatula.kcl "body": [ { "abs_path": false, - "commentStart": 2162, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2162, + "commentStart": 0, "end": 0, "name": "flipperProfile", "start": 0, @@ -3492,10 +3401,10 @@ description: Result of parsing food-service-spatula.kcl "arguments": [ { "abs_path": false, - "commentStart": 2187, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2187, + "commentStart": 0, "end": 0, "name": "slotProfile000", "start": 0, @@ -3507,7 +3416,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Name" }, { - "commentStart": 2203, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3516,10 +3425,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 2182, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2182, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -3529,7 +3438,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 2182, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3539,10 +3448,10 @@ description: Result of parsing food-service-spatula.kcl "arguments": [ { "abs_path": false, - "commentStart": 2216, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2216, + "commentStart": 0, "end": 0, "name": "slotProfile001", "start": 0, @@ -3554,7 +3463,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Name" }, { - "commentStart": 2232, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3563,10 +3472,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 2211, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2211, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -3576,7 +3485,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 2211, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3586,10 +3495,10 @@ description: Result of parsing food-service-spatula.kcl "arguments": [ { "abs_path": false, - "commentStart": 2245, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2245, + "commentStart": 0, "end": 0, "name": "slotProfile002", "start": 0, @@ -3601,7 +3510,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Name" }, { - "commentStart": 2261, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3610,10 +3519,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 2240, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2240, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -3623,20 +3532,20 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 2240, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 2162, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "3": [ { - "commentStart": 2263, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3669,12 +3578,12 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 2318, + "commentStart": 0, "declaration": { - "commentStart": 2318, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2318, + "commentStart": 0, "end": 0, "name": "flipper", "start": 0, @@ -3685,7 +3594,7 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 2352, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3693,10 +3602,10 @@ description: Result of parsing food-service-spatula.kcl }, "arg": { "abs_path": false, - "commentStart": 2361, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2361, + "commentStart": 0, "end": 0, "name": "flipperThickness", "start": 0, @@ -3711,10 +3620,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 2328, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2328, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3724,17 +3633,17 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 2328, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2336, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2336, + "commentStart": 0, "end": 0, "name": "spatulaProfile", "start": 0, @@ -3756,14 +3665,14 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 2378, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2436, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -3771,10 +3680,10 @@ description: Result of parsing food-service-spatula.kcl }, "arg": { "abs_path": false, - "commentStart": 2445, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2445, + "commentStart": 0, "end": 0, "name": "flipperFilletRadius", "start": 0, @@ -3789,23 +3698,23 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 2468, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2475, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 2501, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2501, + "commentStart": 0, "end": 0, "name": "backEdge", "start": 0, @@ -3819,10 +3728,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 2481, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2481, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -3832,7 +3741,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 2481, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3842,10 +3751,10 @@ description: Result of parsing food-service-spatula.kcl "arguments": [ { "abs_path": false, - "commentStart": 2540, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2540, + "commentStart": 0, "end": 0, "name": "backEdge", "start": 0, @@ -3859,10 +3768,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 2516, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2516, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -3872,7 +3781,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 2516, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3888,10 +3797,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 2415, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2415, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -3901,17 +3810,17 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 2415, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2425, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2425, + "commentStart": 0, "end": 0, "name": "flipper", "start": 0, @@ -3933,14 +3842,14 @@ description: Result of parsing food-service-spatula.kcl "type": "ExpressionStatement" }, { - "commentStart": 2556, + "commentStart": 0, "declaration": { - "commentStart": 2624, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2624, + "commentStart": 0, "end": 0, - "name": "sketch001", + "name": "handleSketch", "start": 0, "type": "Identifier" }, @@ -3951,22 +3860,22 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 2666, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2675, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 2676, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2676, + "commentStart": 0, "end": 0, "name": "handleWidth", "start": 0, @@ -3977,7 +3886,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Name", "type": "Name" }, - "commentStart": 2675, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3986,7 +3895,7 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "/", "right": { - "commentStart": 2690, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4005,10 +3914,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 2650, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2650, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -4018,17 +3927,17 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 2650, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2662, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2662, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -4043,10 +3952,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 2636, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2636, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -4056,7 +3965,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 2636, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4077,12 +3986,12 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 2693, + "commentStart": 0, "declaration": { - "commentStart": 2737, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2737, + "commentStart": 0, "end": 0, "name": "handleProfile", "start": 0, @@ -4093,10 +4002,10 @@ description: Result of parsing food-service-spatula.kcl { "arguments": [ { - "commentStart": 2768, + "commentStart": 0, "elements": [ { - "commentStart": 2769, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -4109,10 +4018,10 @@ description: Result of parsing food-service-spatula.kcl }, { "abs_path": false, - "commentStart": 2774, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2774, + "commentStart": 0, "end": 0, "name": "flipperThickness", "start": 0, @@ -4131,12 +4040,12 @@ description: Result of parsing food-service-spatula.kcl }, { "abs_path": false, - "commentStart": 2793, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2793, + "commentStart": 0, "end": 0, - "name": "sketch001", + "name": "handleSketch", "start": 0, "type": "Identifier" }, @@ -4148,10 +4057,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 2753, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2753, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -4161,7 +4070,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 2753, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4172,17 +4081,17 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 2814, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2820, + "commentStart": 0, "elements": [ { - "commentStart": 2821, + "commentStart": 0, "end": 0, "raw": "31.819805", "start": 0, @@ -4194,7 +4103,7 @@ description: Result of parsing food-service-spatula.kcl } }, { - "commentStart": 2832, + "commentStart": 0, "end": 0, "raw": "31.819805", "start": 0, @@ -4215,14 +4124,14 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 2844, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2850, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -4233,10 +4142,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 2809, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2809, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4246,7 +4155,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 2809, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4258,17 +4167,17 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 2879, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2885, + "commentStart": 0, "elements": [ { - "commentStart": 2886, + "commentStart": 0, "end": 0, "raw": "140.953893", "start": 0, @@ -4280,7 +4189,7 @@ description: Result of parsing food-service-spatula.kcl } }, { - "commentStart": 2898, + "commentStart": 0, "end": 0, "raw": "51.303021", "start": 0, @@ -4301,10 +4210,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 2874, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2874, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4314,7 +4223,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 2874, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4326,18 +4235,18 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 2920, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2926, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 2928, + "commentStart": 0, "end": 0, "raw": "1.710101", "start": 0, @@ -4348,7 +4257,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 2927, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4356,7 +4265,7 @@ description: Result of parsing food-service-spatula.kcl "type": "UnaryExpression" }, { - "commentStart": 2938, + "commentStart": 0, "end": 0, "raw": "4.698463", "start": 0, @@ -4377,10 +4286,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 2915, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2915, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4390,7 +4299,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 2915, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4402,18 +4311,18 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 2959, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2965, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 2967, + "commentStart": 0, "end": 0, "raw": "141.995517", "start": 0, @@ -4424,7 +4333,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 2966, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4433,7 +4342,7 @@ description: Result of parsing food-service-spatula.kcl }, { "argument": { - "commentStart": 2980, + "commentStart": 0, "end": 0, "raw": "51.682142", "start": 0, @@ -4444,7 +4353,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 2979, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4461,14 +4370,14 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 2992, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2998, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -4479,10 +4388,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 2954, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2954, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4492,7 +4401,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 2954, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4504,18 +4413,18 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 3024, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3030, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 3032, + "commentStart": 0, "end": 0, "raw": "36.139148", "start": 0, @@ -4526,7 +4435,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 3031, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4535,7 +4444,7 @@ description: Result of parsing food-service-spatula.kcl }, { "argument": { - "commentStart": 3044, + "commentStart": 0, "end": 0, "raw": "36.139148", "start": 0, @@ -4546,7 +4455,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 3043, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4563,10 +4472,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 3019, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3019, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4576,7 +4485,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 3019, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4588,14 +4497,14 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 3067, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3076, + "commentStart": 0, "end": 0, "raw": "7.071068", "start": 0, @@ -4610,10 +4519,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 3061, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3061, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -4623,7 +4532,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 3061, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4634,10 +4543,10 @@ description: Result of parsing food-service-spatula.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 3091, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3091, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -4647,26 +4556,26 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 3091, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 2753, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "7": [ { - "commentStart": 3098, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", "value": { "type": "newLineBlockComment", - "value": "Create an extrusion extrude001", + "value": "Create an extrusion", "style": "line" } } @@ -4693,12 +4602,12 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 3134, + "commentStart": 0, "declaration": { - "commentStart": 3134, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3134, + "commentStart": 0, "end": 0, "name": "handle", "start": 0, @@ -4709,7 +4618,7 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 3166, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4717,10 +4626,10 @@ description: Result of parsing food-service-spatula.kcl }, "arg": { "abs_path": false, - "commentStart": 3175, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3175, + "commentStart": 0, "end": 0, "name": "handleWidth", "start": 0, @@ -4735,10 +4644,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 3143, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3143, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -4748,17 +4657,17 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 3143, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 3151, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3151, + "commentStart": 0, "end": 0, "name": "handleProfile", "start": 0, @@ -4780,21 +4689,21 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 3187, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 3250, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3259, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -4809,23 +4718,23 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 3264, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3271, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 3297, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3297, + "commentStart": 0, "end": 0, "name": "handleBottomEdge", "start": 0, @@ -4839,10 +4748,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 3277, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3277, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -4852,7 +4761,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 3277, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4862,10 +4771,10 @@ description: Result of parsing food-service-spatula.kcl "arguments": [ { "abs_path": false, - "commentStart": 3340, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3340, + "commentStart": 0, "end": 0, "name": "handleTopEdge", "start": 0, @@ -4879,10 +4788,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 3320, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3320, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -4892,7 +4801,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 3320, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4908,10 +4817,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 3230, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3230, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -4921,17 +4830,17 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 3230, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 3240, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3240, + "commentStart": 0, "end": 0, "name": "handle", "start": 0, @@ -4953,297 +4862,275 @@ description: Result of parsing food-service-spatula.kcl "type": "ExpressionStatement" }, { - "commentStart": 3361, + "commentStart": 0, "declaration": { - "commentStart": 3415, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3415, + "commentStart": 0, "end": 0, "name": "handlePlane", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 3429, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 3433, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3433, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3441, - "end": 0, - "properties": [ + "commentStart": 0, + "elements": [ { - "commentStart": 3447, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 3447, - "end": 0, - "name": "origin", - "start": 0, - "type": "Identifier" - }, + "raw": "208.593833", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 3456, - "elements": [ - { - "commentStart": 3457, - "end": 0, - "raw": "208.593833", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 208.593833, - "suffix": "None" - } - }, - { - "commentStart": 3469, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 3474, - "end": 0, - "raw": "75.921946", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 75.921946, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 208.593833, + "suffix": "None" } }, { - "commentStart": 3490, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 3490, - "end": 0, - "name": "xAxis", - "start": 0, - "type": "Identifier" - }, + "raw": "0.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 3498, - "elements": [ - { - "commentStart": 3499, - "end": 0, - "raw": "0.342020", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.34202, - "suffix": "None" - } - }, - { - "argument": { - "commentStart": 3510, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - "commentStart": 3509, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - { - "argument": { - "commentStart": 3516, - "end": 0, - "raw": "0.939693", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.939693, - "suffix": "None" - } - }, - "commentStart": 3515, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.0, + "suffix": "None" } }, { - "commentStart": 3531, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 3531, - "end": 0, - "name": "yAxis", - "start": 0, - "type": "Identifier" - }, + "raw": "75.921946", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 3539, - "elements": [ - { - "commentStart": 3540, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 3545, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 3550, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - }, - { - "commentStart": 3560, - "end": 0, - "key": { - "commentStart": 3560, - "end": 0, - "name": "zAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3568, - "elements": [ - { - "commentStart": 3569, - "end": 0, - "raw": "0.939693", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.939693, - "suffix": "None" - } - }, - { - "argument": { - "commentStart": 3580, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - "commentStart": 3579, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - { - "commentStart": 3585, - "end": 0, - "raw": "0.342020", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.34202, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 75.921946, + "suffix": "None" } } ], + "end": 0, "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "xAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.342020", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.34202, + "suffix": "None" + } + }, + { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "0.939693", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.939693, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.939693", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.939693, + "suffix": "None" + } + }, + { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.342020", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.34202, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" } } ], @@ -5266,14 +5153,14 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 3600, + "commentStart": 0, "declaration": { - "commentStart": 3641, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3641, + "commentStart": 0, "end": 0, - "name": "sketch002", + "name": "gripSketch", "start": 0, "type": "Identifier" }, @@ -5281,10 +5168,10 @@ description: Result of parsing food-service-spatula.kcl "arguments": [ { "abs_path": false, - "commentStart": 3667, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3667, + "commentStart": 0, "end": 0, "name": "handlePlane", "start": 0, @@ -5298,10 +5185,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 3653, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3653, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -5311,7 +5198,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 3653, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5332,12 +5219,12 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 3679, + "commentStart": 0, "declaration": { - "commentStart": 3713, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3713, + "commentStart": 0, "end": 0, "name": "gripProfile", "start": 0, @@ -5348,11 +5235,11 @@ description: Result of parsing food-service-spatula.kcl { "arguments": [ { - "commentStart": 3742, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 3744, + "commentStart": 0, "end": 0, "raw": "26.806746", "start": 0, @@ -5363,7 +5250,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 3743, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5372,7 +5259,7 @@ description: Result of parsing food-service-spatula.kcl }, { "argument": { - "commentStart": 3756, + "commentStart": 0, "end": 0, "raw": "10.0", "start": 0, @@ -5383,7 +5270,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 3755, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5398,12 +5285,12 @@ description: Result of parsing food-service-spatula.kcl }, { "abs_path": false, - "commentStart": 3763, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3763, + "commentStart": 0, "end": 0, - "name": "sketch002", + "name": "gripSketch", "start": 0, "type": "Identifier" }, @@ -5415,10 +5302,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 3727, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3727, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -5428,7 +5315,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 3727, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5439,21 +5326,21 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 3785, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3794, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3794, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3794, + "commentStart": 0, "end": 0, "name": "gripWidth", "start": 0, @@ -5466,10 +5353,10 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "-", "right": { - "commentStart": 3807, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3807, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5483,10 +5370,10 @@ description: Result of parsing food-service-spatula.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3811, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3811, + "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, @@ -5509,10 +5396,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 3779, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3779, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -5522,7 +5409,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 3779, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5532,14 +5419,14 @@ description: Result of parsing food-service-spatula.kcl { "arguments": [ { - "commentStart": 3839, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 3848, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3848, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -5549,7 +5436,7 @@ description: Result of parsing food-service-spatula.kcl "type": "ObjectProperty", "value": { "argument": { - "commentStart": 3862, + "commentStart": 0, "end": 0, "raw": "90.0", "start": 0, @@ -5560,7 +5447,7 @@ description: Result of parsing food-service-spatula.kcl "suffix": "None" } }, - "commentStart": 3861, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5569,10 +5456,10 @@ description: Result of parsing food-service-spatula.kcl } }, { - "commentStart": 3875, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3875, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -5581,7 +5468,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3886, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -5594,10 +5481,10 @@ description: Result of parsing food-service-spatula.kcl } }, { - "commentStart": 3898, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3898, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -5607,10 +5494,10 @@ description: Result of parsing food-service-spatula.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 3907, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3907, + "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, @@ -5628,7 +5515,7 @@ description: Result of parsing food-service-spatula.kcl "type": "ObjectExpression" }, { - "commentStart": 3932, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5637,10 +5524,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 3835, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3835, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -5650,7 +5537,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 3835, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5661,21 +5548,21 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 3946, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3955, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3955, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3955, + "commentStart": 0, "end": 0, "name": "gripHeight", "start": 0, @@ -5688,10 +5575,10 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "-", "right": { - "commentStart": 3969, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3969, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5705,10 +5592,10 @@ description: Result of parsing food-service-spatula.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3973, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3973, + "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, @@ -5731,10 +5618,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 3940, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3940, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -5744,7 +5631,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 3940, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5754,14 +5641,14 @@ description: Result of parsing food-service-spatula.kcl { "arguments": [ { - "commentStart": 4001, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 4010, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4010, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -5770,7 +5657,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4023, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -5783,10 +5670,10 @@ description: Result of parsing food-service-spatula.kcl } }, { - "commentStart": 4035, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4035, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -5795,7 +5682,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4046, + "commentStart": 0, "end": 0, "raw": "90.0", "start": 0, @@ -5808,10 +5695,10 @@ description: Result of parsing food-service-spatula.kcl } }, { - "commentStart": 4059, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4059, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -5821,10 +5708,10 @@ description: Result of parsing food-service-spatula.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 4068, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4068, + "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, @@ -5842,7 +5729,7 @@ description: Result of parsing food-service-spatula.kcl "type": "ObjectExpression" }, { - "commentStart": 4093, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5851,10 +5738,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 3997, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3997, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -5864,7 +5751,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 3997, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5875,7 +5762,7 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 4107, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -5883,14 +5770,14 @@ description: Result of parsing food-service-spatula.kcl }, "arg": { "argument": { - "commentStart": 4118, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4118, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4118, + "commentStart": 0, "end": 0, "name": "gripWidth", "start": 0, @@ -5903,10 +5790,10 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "-", "right": { - "commentStart": 4131, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4131, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5920,10 +5807,10 @@ description: Result of parsing food-service-spatula.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4135, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4135, + "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, @@ -5942,7 +5829,7 @@ description: Result of parsing food-service-spatula.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 4116, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5953,10 +5840,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 4101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4101, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -5966,7 +5853,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 4101, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5976,14 +5863,14 @@ description: Result of parsing food-service-spatula.kcl { "arguments": [ { - "commentStart": 4164, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 4173, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4173, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -5992,7 +5879,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4186, + "commentStart": 0, "end": 0, "raw": "90.0", "start": 0, @@ -6005,10 +5892,10 @@ description: Result of parsing food-service-spatula.kcl } }, { - "commentStart": 4199, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4199, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -6017,7 +5904,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4210, + "commentStart": 0, "end": 0, "raw": "180.0", "start": 0, @@ -6030,10 +5917,10 @@ description: Result of parsing food-service-spatula.kcl } }, { - "commentStart": 4224, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4224, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -6043,10 +5930,10 @@ description: Result of parsing food-service-spatula.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 4233, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4233, + "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, @@ -6064,7 +5951,7 @@ description: Result of parsing food-service-spatula.kcl "type": "ObjectExpression" }, { - "commentStart": 4258, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6073,10 +5960,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 4160, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4160, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -6086,7 +5973,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 4160, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6097,7 +5984,7 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 4272, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6105,14 +5992,14 @@ description: Result of parsing food-service-spatula.kcl }, "arg": { "argument": { - "commentStart": 4283, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4283, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4283, + "commentStart": 0, "end": 0, "name": "gripHeight", "start": 0, @@ -6125,10 +6012,10 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "-", "right": { - "commentStart": 4297, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4297, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6142,10 +6029,10 @@ description: Result of parsing food-service-spatula.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4301, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4301, + "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, @@ -6164,7 +6051,7 @@ description: Result of parsing food-service-spatula.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 4281, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6175,14 +6062,14 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 4321, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4327, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -6193,10 +6080,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 4266, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4266, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -6206,7 +6093,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 4266, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6216,14 +6103,14 @@ description: Result of parsing food-service-spatula.kcl { "arguments": [ { - "commentStart": 4350, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 4359, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4359, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -6232,7 +6119,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4372, + "commentStart": 0, "end": 0, "raw": "180.0", "start": 0, @@ -6245,10 +6132,10 @@ description: Result of parsing food-service-spatula.kcl } }, { - "commentStart": 4386, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4386, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -6257,7 +6144,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4397, + "commentStart": 0, "end": 0, "raw": "270.0", "start": 0, @@ -6270,10 +6157,10 @@ description: Result of parsing food-service-spatula.kcl } }, { - "commentStart": 4411, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4411, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -6283,10 +6170,10 @@ description: Result of parsing food-service-spatula.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 4420, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4420, + "commentStart": 0, "end": 0, "name": "gripFilletRadius", "start": 0, @@ -6304,7 +6191,7 @@ description: Result of parsing food-service-spatula.kcl "type": "ObjectExpression" }, { - "commentStart": 4445, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6313,10 +6200,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 4346, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4346, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -6326,7 +6213,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 4346, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6336,10 +6223,10 @@ description: Result of parsing food-service-spatula.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 4453, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4453, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -6349,20 +6236,20 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 4453, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 3727, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "9": [ { - "commentStart": 4460, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -6395,12 +6282,12 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 4509, + "commentStart": 0, "declaration": { - "commentStart": 4509, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4509, + "commentStart": 0, "end": 0, "name": "grip", "start": 0, @@ -6411,7 +6298,7 @@ description: Result of parsing food-service-spatula.kcl { "type": "LabeledArg", "label": { - "commentStart": 4537, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6420,10 +6307,10 @@ description: Result of parsing food-service-spatula.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 4547, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4547, + "commentStart": 0, "end": 0, "name": "gripLength", "start": 0, @@ -6434,7 +6321,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Name", "type": "Name" }, - "commentStart": 4546, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6445,10 +6332,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 4516, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4516, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -6458,17 +6345,17 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 4516, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 4524, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4524, + "commentStart": 0, "end": 0, "name": "gripProfile", "start": 0, @@ -6490,58 +6377,52 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 4558, + "commentStart": 0, "declaration": { - "commentStart": 4604, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4604, + "commentStart": 0, "end": 0, - "name": "sketch003", + "name": "holeSketch", "start": 0, "type": "Identifier" }, "init": { "arguments": [ { - "abs_path": false, - "commentStart": 4630, - "end": 0, - "name": { - "commentStart": 4630, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "grip", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 4636, - "end": 0, - "name": { - "commentStart": 4636, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "gripEdgeTop", + "name": { + "commentStart": 0, + "end": 0, + "name": "gripEdgeTop", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 4616, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4616, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -6551,11 +6432,27 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 4616, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "grip", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, "start": 0, "type": "VariableDeclarator" @@ -6572,12 +6469,12 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 4648, + "commentStart": 0, "declaration": { - "commentStart": 4688, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4688, + "commentStart": 0, "end": 0, "name": "gripHoleProfile", "start": 0, @@ -6587,12 +6484,12 @@ description: Result of parsing food-service-spatula.kcl "arguments": [ { "abs_path": false, - "commentStart": 4711, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4711, + "commentStart": 0, "end": 0, - "name": "sketch003", + "name": "holeSketch", "start": 0, "type": "Identifier" }, @@ -6602,10 +6499,10 @@ description: Result of parsing food-service-spatula.kcl "type": "Name" }, { - "commentStart": 4722, + "commentStart": 0, "elements": [ { - "commentStart": 4723, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6617,7 +6514,7 @@ description: Result of parsing food-service-spatula.kcl } }, { - "commentStart": 4726, + "commentStart": 0, "end": 0, "raw": "200", "start": 0, @@ -6635,10 +6532,10 @@ description: Result of parsing food-service-spatula.kcl "type": "ArrayExpression" }, { - "commentStart": 4732, + "commentStart": 0, "elements": [ { - "commentStart": 4733, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6650,7 +6547,7 @@ description: Result of parsing food-service-spatula.kcl } }, { - "commentStart": 4736, + "commentStart": 0, "end": 0, "raw": "210", "start": 0, @@ -6669,10 +6566,10 @@ description: Result of parsing food-service-spatula.kcl }, { "abs_path": false, - "commentStart": 4742, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4742, + "commentStart": 0, "end": 0, "name": "gripSlotWidth", "start": 0, @@ -6686,10 +6583,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 4706, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4706, + "commentStart": 0, "end": 0, "name": "slot", "start": 0, @@ -6699,7 +6596,7 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 4706, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6720,29 +6617,29 @@ description: Result of parsing food-service-spatula.kcl "type": "VariableDeclaration" }, { - "commentStart": 4756, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 4809, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4818, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 4819, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4819, + "commentStart": 0, "end": 0, "name": "gripWidth", "start": 0, @@ -6753,7 +6650,7 @@ description: Result of parsing food-service-spatula.kcl "type": "Name", "type": "Name" }, - "commentStart": 4818, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6762,7 +6659,7 @@ description: Result of parsing food-service-spatula.kcl }, "operator": "-", "right": { - "commentStart": 4831, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -6781,10 +6678,10 @@ description: Result of parsing food-service-spatula.kcl ], "callee": { "abs_path": false, - "commentStart": 4784, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4784, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -6794,17 +6691,17 @@ description: Result of parsing food-service-spatula.kcl "start": 0, "type": "Name" }, - "commentStart": 4784, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 4792, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4792, + "commentStart": 0, "end": 0, "name": "gripHoleProfile", "start": 0, @@ -6833,7 +6730,7 @@ description: Result of parsing food-service-spatula.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 97, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -6848,10 +6745,10 @@ description: Result of parsing food-service-spatula.kcl ], "properties": [ { - "commentStart": 106, + "commentStart": 0, "end": 0, "key": { - "commentStart": 106, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -6861,10 +6758,10 @@ description: Result of parsing food-service-spatula.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 126, + "commentStart": 0, "end": 0, "name": { - "commentStart": 126, + "commentStart": 0, "end": 0, "name": "mm", "start": 0, @@ -6885,7 +6782,7 @@ description: Result of parsing food-service-spatula.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 129, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/exported_step.step b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/exported_step.step new file mode 100644 index 000000000..10aad7cf6 --- /dev/null +++ b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/exported_step.step @@ -0,0 +1,1687 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION((('zoo.dev export')), '2;1'); +FILE_NAME('dump.step', '2021-01-01T00:00:00+00:00', ('Author unknown'), ('Organization unknown'), 'zoo.dev beta', 'zoo.dev', 'Authorization unknown'); +FILE_SCHEMA(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF')); +ENDSEC; +DATA; +#1 = ( + LENGTH_UNIT() + NAMED_UNIT(*) + SI_UNIT($, .METRE.) +); +#2 = UNCERTAINTY_MEASURE_WITH_UNIT(0.00001, #1, 'DISTANCE_ACCURACY_VALUE', $); +#3 = ( + GEOMETRIC_REPRESENTATION_CONTEXT(3) + GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2)) + GLOBAL_UNIT_ASSIGNED_CONTEXT((#1)) + REPRESENTATION_CONTEXT('', '3D') +); +#4 = CARTESIAN_POINT('NONE', (0.05847148586934815, 0.04980906559410468, 0.01)); +#5 = VERTEX_POINT('NONE', #4); +#6 = CARTESIAN_POINT('NONE', (0.05983956544890385, 0.046050294749266876, 0.01)); +#7 = VERTEX_POINT('NONE', #6); +#8 = CARTESIAN_POINT('NONE', (0.20079347213032162, 0.09735327898260533, 0.01)); +#9 = VERTEX_POINT('NONE', #8); +#10 = CARTESIAN_POINT('NONE', (0.19942539255076594, 0.10111204982744314, 0.01)); +#11 = VERTEX_POINT('NONE', #10); +#12 = CARTESIAN_POINT('NONE', (0.06086562513357062, 0.043231216615638515, 0.007)); +#13 = VERTEX_POINT('NONE', #12); +#14 = CARTESIAN_POINT('NONE', (0.20181953181498838, 0.09453420084897698, 0.007)); +#15 = VERTEX_POINT('NONE', #14); +#16 = CARTESIAN_POINT('NONE', (0.06086562513357062, 0.043231216615638515, -0.007)); +#17 = VERTEX_POINT('NONE', #16); +#18 = CARTESIAN_POINT('NONE', (0.20181953181498838, 0.09453420084897698, -0.007)); +#19 = VERTEX_POINT('NONE', #18); +#20 = CARTESIAN_POINT('NONE', (0.05983956544890385, 0.046050294749266876, -0.01)); +#21 = VERTEX_POINT('NONE', #20); +#22 = CARTESIAN_POINT('NONE', (0.20079347213032162, 0.09735327898260533, -0.01)); +#23 = VERTEX_POINT('NONE', #22); +#24 = CARTESIAN_POINT('NONE', (0.05847148586934815, 0.04980906559410468, -0.01)); +#25 = VERTEX_POINT('NONE', #24); +#26 = CARTESIAN_POINT('NONE', (0.19942539255076594, 0.10111204982744314, -0.01)); +#27 = VERTEX_POINT('NONE', #26); +#28 = CARTESIAN_POINT('NONE', (0.05744542618468138, 0.052628143727733036, -0.007)); +#29 = VERTEX_POINT('NONE', #28); +#30 = CARTESIAN_POINT('NONE', (0.19839933286609918, 0.1039311279610715, -0.007)); +#31 = VERTEX_POINT('NONE', #30); +#32 = CARTESIAN_POINT('NONE', (0.05744542618468139, 0.052628143727733015, 0.007)); +#33 = VERTEX_POINT('NONE', #32); +#34 = CARTESIAN_POINT('NONE', (0.19839933286609918, 0.10393112796107148, 0.007)); +#35 = VERTEX_POINT('NONE', #34); +#36 = CARTESIAN_POINT('NONE', (0.18714094923247557, 0.09983341480329341, 0.004000000000000006)); +#37 = VERTEX_POINT('NONE', #36); +#38 = CARTESIAN_POINT('NONE', (0.17774402212038107, 0.09641321585440418, 0.004000000000000005)); +#39 = VERTEX_POINT('NONE', #38); +#40 = CARTESIAN_POINT('NONE', (0.18714094923247557, 0.09983341480329341, -0.003999999999999993)); +#41 = VERTEX_POINT('NONE', #40); +#42 = CARTESIAN_POINT('NONE', (0.17774402212038107, 0.09641321585440418, -0.003999999999999994)); +#43 = VERTEX_POINT('NONE', #42); +#44 = CARTESIAN_POINT('NONE', (0.19056114818136477, 0.09043648769119904, 0.004000000000000004)); +#45 = VERTEX_POINT('NONE', #44); +#46 = CARTESIAN_POINT('NONE', (0.18116422106927024, 0.0870162887423098, 0.0040000000000000036)); +#47 = VERTEX_POINT('NONE', #46); +#48 = CARTESIAN_POINT('NONE', (0.1905611481813648, 0.0904364876911989, -0.003999999999999996)); +#49 = VERTEX_POINT('NONE', #48); +#50 = CARTESIAN_POINT('NONE', (0.18116422106927035, 0.08701628874230954, -0.003999999999999996)); +#51 = VERTEX_POINT('NONE', #50); +#52 = CARTESIAN_POINT('NONE', (0, 0.0035, -0.0075)); +#53 = VERTEX_POINT('NONE', #52); +#54 = CARTESIAN_POINT('NONE', (0, 0.0035, 0.0075)); +#55 = VERTEX_POINT('NONE', #54); +#56 = CARTESIAN_POINT('NONE', (0.172773698, 0.086622826, -0.0075)); +#57 = VERTEX_POINT('NONE', #56); +#58 = CARTESIAN_POINT('NONE', (0.172773698, 0.086622826, 0.0075)); +#59 = VERTEX_POINT('NONE', #58); +#60 = CARTESIAN_POINT('NONE', (0.17106359699999998, 0.09132128900000001, -0.0075)); +#61 = VERTEX_POINT('NONE', #60); +#62 = CARTESIAN_POINT('NONE', (0.17106359699999998, 0.09132128900000001, 0.0075)); +#63 = VERTEX_POINT('NONE', #62); +#64 = CARTESIAN_POINT('NONE', (-0.007071068000000018, 0.0034999990000000097, -0.0075)); +#65 = VERTEX_POINT('NONE', #64); +#66 = CARTESIAN_POINT('NONE', (-0.007071068000000018, 0.0034999990000000097, 0.0075)); +#67 = VERTEX_POINT('NONE', #66); +#68 = CARTESIAN_POINT('NONE', (-0.000000000000000017763568394002505, 0.0034999990000000097, -0.0075)); +#69 = VERTEX_POINT('NONE', #68); +#70 = CARTESIAN_POINT('NONE', (-0.000000000000000017763568394002505, 0.0034999990000000097, 0.0075)); +#71 = VERTEX_POINT('NONE', #70); +#72 = CARTESIAN_POINT('NONE', (0.028991377875253802, 0.03249137787525381, -0.0075)); +#73 = VERTEX_POINT('NONE', #72); +#74 = CARTESIAN_POINT('NONE', (0.028991377875253802, 0.03249137787525381, 0.0075)); +#75 = VERTEX_POINT('NONE', #74); +#76 = CARTESIAN_POINT('NONE', (0.035578575487051296, 0.03668788556256646, 0.0075)); +#77 = VERTEX_POINT('NONE', #76); +#78 = CARTESIAN_POINT('NONE', (0.035578575487051296, 0.03668788556256646, -0.0075)); +#79 = VERTEX_POINT('NONE', #78); +#80 = CARTESIAN_POINT('NONE', (0.032826850479632005, 0.041007227582950743, -0.0075)); +#81 = VERTEX_POINT('NONE', #80); +#82 = CARTESIAN_POINT('NONE', (0.032826850479632005, 0.041007227582950743, 0.0075)); +#83 = VERTEX_POINT('NONE', #82); +#84 = CARTESIAN_POINT('NONE', (0.02623965287525379, 0.03681071987525382, 0.0075)); +#85 = VERTEX_POINT('NONE', #84); +#86 = CARTESIAN_POINT('NONE', (0.02623965287525379, 0.03681071987525382, -0.0075)); +#87 = VERTEX_POINT('NONE', #86); +#88 = CARTESIAN_POINT('NONE', (-0.07, 0, 0.032)); +#89 = VERTEX_POINT('NONE', #88); +#90 = CARTESIAN_POINT('NONE', (-0.07, 0.0035, 0.032)); +#91 = VERTEX_POINT('NONE', #90); +#92 = CARTESIAN_POINT('NONE', (-0.07, 0, -0.032)); +#93 = VERTEX_POINT('NONE', #92); +#94 = CARTESIAN_POINT('NONE', (-0.07, 0.0035, -0.032)); +#95 = VERTEX_POINT('NONE', #94); +#96 = CARTESIAN_POINT('NONE', (-0.06999999999999998, 0, 0.032000000722146364)); +#97 = VERTEX_POINT('NONE', #96); +#98 = CARTESIAN_POINT('NONE', (-0.06999999999999998, 0.0035, 0.032000000722146364)); +#99 = VERTEX_POINT('NONE', #98); +#100 = CARTESIAN_POINT('NONE', (-0.025, 0, -0.005)); +#101 = VERTEX_POINT('NONE', #100); +#102 = CARTESIAN_POINT('NONE', (-0.025, 0, 0.005)); +#103 = VERTEX_POINT('NONE', #102); +#104 = CARTESIAN_POINT('NONE', (-0.025, 0.0035, 0.005)); +#105 = VERTEX_POINT('NONE', #104); +#106 = CARTESIAN_POINT('NONE', (-0.025, 0.0035, -0.005)); +#107 = VERTEX_POINT('NONE', #106); +#108 = CARTESIAN_POINT('NONE', (-0.055, 0, 0.004999999999999997)); +#109 = VERTEX_POINT('NONE', #108); +#110 = CARTESIAN_POINT('NONE', (-0.055, 0.0035, 0.004999999999999997)); +#111 = VERTEX_POINT('NONE', #110); +#112 = CARTESIAN_POINT('NONE', (-0.055, 0, -0.005000000000000004)); +#113 = VERTEX_POINT('NONE', #112); +#114 = CARTESIAN_POINT('NONE', (-0.055, 0.0035, -0.005000000000000004)); +#115 = VERTEX_POINT('NONE', #114); +#116 = CARTESIAN_POINT('NONE', (-0.0248334258488368, 0, -0.02299722453489577)); +#117 = VERTEX_POINT('NONE', #116); +#118 = CARTESIAN_POINT('NONE', (-0.025166574151163194, 0, -0.013002775465104229)); +#119 = VERTEX_POINT('NONE', #118); +#120 = CARTESIAN_POINT('NONE', (-0.025166574151163194, 0.0035, -0.013002775465104229)); +#121 = VERTEX_POINT('NONE', #120); +#122 = CARTESIAN_POINT('NONE', (-0.0248334258488368, 0.0035, -0.02299722453489577)); +#123 = VERTEX_POINT('NONE', #122); +#124 = CARTESIAN_POINT('NONE', (-0.05516657415116319, 0, -0.014002775465104218)); +#125 = VERTEX_POINT('NONE', #124); +#126 = CARTESIAN_POINT('NONE', (-0.05516657415116319, 0.0035, -0.014002775465104218)); +#127 = VERTEX_POINT('NONE', #126); +#128 = CARTESIAN_POINT('NONE', (-0.05483342584883681, 0, -0.02399722453489576)); +#129 = VERTEX_POINT('NONE', #128); +#130 = CARTESIAN_POINT('NONE', (-0.05483342584883681, 0.0035, -0.02399722453489576)); +#131 = VERTEX_POINT('NONE', #130); +#132 = CARTESIAN_POINT('NONE', (-0.025166574151163204, 0, 0.013002775465104229)); +#133 = VERTEX_POINT('NONE', #132); +#134 = CARTESIAN_POINT('NONE', (-0.02483342584883681, 0, 0.02299722453489577)); +#135 = VERTEX_POINT('NONE', #134); +#136 = CARTESIAN_POINT('NONE', (-0.02483342584883681, 0.0035, 0.02299722453489577)); +#137 = VERTEX_POINT('NONE', #136); +#138 = CARTESIAN_POINT('NONE', (-0.025166574151163204, 0.0035, 0.013002775465104229)); +#139 = VERTEX_POINT('NONE', #138); +#140 = CARTESIAN_POINT('NONE', (-0.05483342584883681, 0, 0.023997224534895768)); +#141 = VERTEX_POINT('NONE', #140); +#142 = CARTESIAN_POINT('NONE', (-0.05483342584883681, 0.0035, 0.023997224534895768)); +#143 = VERTEX_POINT('NONE', #142); +#144 = CARTESIAN_POINT('NONE', (-0.05516657415116319, 0, 0.014002775465104225)); +#145 = VERTEX_POINT('NONE', #144); +#146 = CARTESIAN_POINT('NONE', (-0.05516657415116319, 0.0035, 0.014002775465104225)); +#147 = VERTEX_POINT('NONE', #146); +#148 = CARTESIAN_POINT('NONE', (0, 0, -0.025)); +#149 = VERTEX_POINT('NONE', #148); +#150 = CARTESIAN_POINT('NONE', (0, 0.0035, -0.025)); +#151 = VERTEX_POINT('NONE', #150); +#152 = CARTESIAN_POINT('NONE', (-0.0049979604323034735, 0.0035, -0.030142798869494388)); +#153 = VERTEX_POINT('NONE', #152); +#154 = CARTESIAN_POINT('NONE', (-0.0049979604323034735, 0, -0.030142798869494388)); +#155 = VERTEX_POINT('NONE', #154); +#156 = CARTESIAN_POINT('NONE', (-0.0049979604323034735, 0, 0.030142798869494385)); +#157 = VERTEX_POINT('NONE', #156); +#158 = CARTESIAN_POINT('NONE', (-0.0049979604323034735, 0.0035, 0.030142798869494385)); +#159 = VERTEX_POINT('NONE', #158); +#160 = CARTESIAN_POINT('NONE', (-0.000000000000000003552713678800501, 0.0035, 0.025)); +#161 = VERTEX_POINT('NONE', #160); +#162 = CARTESIAN_POINT('NONE', (-0.000000000000000003552713678800501, 0, 0.025)); +#163 = VERTEX_POINT('NONE', #162); +#164 = DIRECTION('NONE', (0.3420198948889241, -0.9396927112094513, 0)); +#165 = VECTOR('NONE', #164, 1); +#166 = CARTESIAN_POINT('NONE', (0.05847148586934815, 0.04980906559410468, 0.01)); +#167 = LINE('NONE', #166, #165); +#168 = DIRECTION('NONE', (0.9396927112094517, 0.342019894888923, 0)); +#169 = VECTOR('NONE', #168, 1); +#170 = CARTESIAN_POINT('NONE', (0.05983956544890385, 0.046050294749266876, 0.01)); +#171 = LINE('NONE', #170, #169); +#172 = DIRECTION('NONE', (0.3420198948889195, -0.939692711209453, 0)); +#173 = VECTOR('NONE', #172, 1); +#174 = CARTESIAN_POINT('NONE', (0.19942539255076594, 0.10111204982744314, 0.01)); +#175 = LINE('NONE', #174, #173); +#176 = DIRECTION('NONE', (0.9396927112094517, 0.342019894888923, 0)); +#177 = VECTOR('NONE', #176, 1); +#178 = CARTESIAN_POINT('NONE', (0.05847148586934815, 0.04980906559410468, 0.01)); +#179 = LINE('NONE', #178, #177); +#180 = DIRECTION('NONE', (0.0000000000000047369515717339844, -0.0000000000000023684757858669922, 1)); +#181 = DIRECTION('NONE', (0.9396927112094512, 0.34201989488892454, -0.000000000000003641213025981387)); +#182 = CARTESIAN_POINT('NONE', (0.059839565448903835, 0.04605029474926688, 0.00699999999999999)); +#183 = AXIS2_PLACEMENT_3D('NONE', #182, #181, #180); +#184 = CIRCLE('NONE', #183, 0.0030000000000000105); +#185 = DIRECTION('NONE', (0.9396927112094517, 0.3420198948889231, 0)); +#186 = VECTOR('NONE', #185, 1); +#187 = CARTESIAN_POINT('NONE', (0.06086562513357062, 0.043231216615638515, 0.007)); +#188 = LINE('NONE', #187, #186); +#189 = DIRECTION('NONE', (0, 0.000000000000009473903143468052, 1)); +#190 = DIRECTION('NONE', (0.9396927112094502, 0.34201989488892737, -0.000000000000003240263357316822)); +#191 = CARTESIAN_POINT('NONE', (0.20079347213032162, 0.0973532789826053, 0.007000000000000016)); +#192 = AXIS2_PLACEMENT_3D('NONE', #191, #190, #189); +#193 = CIRCLE('NONE', #192, 0.002999999999999984); +#194 = DIRECTION('NONE', (0, 0, -1)); +#195 = VECTOR('NONE', #194, 1); +#196 = CARTESIAN_POINT('NONE', (0.06086562513357062, 0.043231216615638515, 0.007)); +#197 = LINE('NONE', #196, #195); +#198 = DIRECTION('NONE', (0.9396927112094517, 0.3420198948889231, 0)); +#199 = VECTOR('NONE', #198, 1); +#200 = CARTESIAN_POINT('NONE', (0.06086562513357062, 0.043231216615638515, -0.007)); +#201 = LINE('NONE', #200, #199); +#202 = DIRECTION('NONE', (0, 0, -1)); +#203 = VECTOR('NONE', #202, 1); +#204 = CARTESIAN_POINT('NONE', (0.20181953181498838, 0.09453420084897698, 0.007)); +#205 = LINE('NONE', #204, #203); +#206 = DIRECTION('NONE', (0.34201989488892615, -0.9396927112094505, -0.0000000000000035527136788004824)); +#207 = DIRECTION('NONE', (0.9396927112094505, 0.34201989488892615, 0.0000000000000019357834046120077)); +#208 = CARTESIAN_POINT('NONE', (0.059839565448903835, 0.04605029474926688, -0.00699999999999999)); +#209 = AXIS2_PLACEMENT_3D('NONE', #208, #207, #206); +#210 = CIRCLE('NONE', #209, 0.0030000000000000157); +#211 = DIRECTION('NONE', (0.9396927112094517, 0.342019894888923, 0)); +#212 = VECTOR('NONE', #211, 1); +#213 = CARTESIAN_POINT('NONE', (0.05983956544890385, 0.046050294749266876, -0.01)); +#214 = LINE('NONE', #213, #212); +#215 = DIRECTION('NONE', (0.34201989488893275, -0.9396927112094481, 0.00000000000000532907051820079)); +#216 = DIRECTION('NONE', (0.9396927112094481, 0.34201989488893275, 0.000000000000006313632027349903)); +#217 = CARTESIAN_POINT('NONE', (0.2007934721303216, 0.0973532789826053, -0.007000000000000016)); +#218 = AXIS2_PLACEMENT_3D('NONE', #217, #216, #215); +#219 = CIRCLE('NONE', #218, 0.0029999999999999784); +#220 = DIRECTION('NONE', (-0.3420198948889241, 0.9396927112094513, 0)); +#221 = VECTOR('NONE', #220, 1); +#222 = CARTESIAN_POINT('NONE', (0.05983956544890385, 0.046050294749266876, -0.01)); +#223 = LINE('NONE', #222, #221); +#224 = DIRECTION('NONE', (0.9396927112094517, 0.342019894888923, 0)); +#225 = VECTOR('NONE', #224, 1); +#226 = CARTESIAN_POINT('NONE', (0.05847148586934815, 0.04980906559410468, -0.01)); +#227 = LINE('NONE', #226, #225); +#228 = DIRECTION('NONE', (-0.3420198948889195, 0.939692711209453, 0)); +#229 = VECTOR('NONE', #228, 1); +#230 = CARTESIAN_POINT('NONE', (0.20079347213032162, 0.09735327898260533, -0.01)); +#231 = LINE('NONE', #230, #229); +#232 = DIRECTION('NONE', (0.0000000000000047369515717340065, 0.0000000000000023684757858670032, -1)); +#233 = DIRECTION('NONE', (0.9396927112094532, 0.342019894888919, 0.0000000000000052613447046397915)); +#234 = CARTESIAN_POINT('NONE', (0.05847148586934814, 0.049809065594104675, -0.007000000000000004)); +#235 = AXIS2_PLACEMENT_3D('NONE', #234, #233, #232); +#236 = CIRCLE('NONE', #235, 0.0029999999999999966); +#237 = DIRECTION('NONE', (0.9396927112094517, 0.34201989488892304, 0)); +#238 = VECTOR('NONE', #237, 1); +#239 = CARTESIAN_POINT('NONE', (0.05744542618468138, 0.052628143727733036, -0.007)); +#240 = LINE('NONE', #239, #238); +#241 = DIRECTION('NONE', (0.000000000000028421709430403998, 0.000000000000009473903143468, -1)); +#242 = DIRECTION('NONE', (0.9396927112094662, 0.3420198948888833, 0.00000000000002994793654918037)); +#243 = CARTESIAN_POINT('NONE', (0.19942539255076586, 0.10111204982744311, -0.006999999999999999)); +#244 = AXIS2_PLACEMENT_3D('NONE', #243, #242, #241); +#245 = CIRCLE('NONE', #244, 0.003000000000000001); +#246 = DIRECTION('NONE', (0, 0, 1)); +#247 = VECTOR('NONE', #246, 1); +#248 = CARTESIAN_POINT('NONE', (0.05744542618468139, 0.052628143727733015, -0.007)); +#249 = LINE('NONE', #248, #247); +#250 = DIRECTION('NONE', (0.9396927112094517, 0.3420198948889231, 0)); +#251 = VECTOR('NONE', #250, 1); +#252 = CARTESIAN_POINT('NONE', (0.05744542618468139, 0.052628143727733015, 0.007)); +#253 = LINE('NONE', #252, #251); +#254 = DIRECTION('NONE', (0, 0, 1)); +#255 = VECTOR('NONE', #254, 1); +#256 = CARTESIAN_POINT('NONE', (0.19839933286609918, 0.10393112796107148, -0.007)); +#257 = LINE('NONE', #256, #255); +#258 = DIRECTION('NONE', (-0.34201989488891854, 0.9396927112094534, -0.0000000000000011842378929335006)); +#259 = DIRECTION('NONE', (0.9396927112094534, 0.34201989488891854, -0.000000000000004824567869956066)); +#260 = CARTESIAN_POINT('NONE', (0.05847148586934814, 0.049809065594104675, 0.007000000000000004)); +#261 = AXIS2_PLACEMENT_3D('NONE', #260, #259, #258); +#262 = CIRCLE('NONE', #261, 0.002999999999999999); +#263 = DIRECTION('NONE', (-0.3420198948888933, 0.9396927112094625, 0.0000000000000002960594732333758)); +#264 = DIRECTION('NONE', (0.9396927112094625, 0.3420198948888933, -0.00000000000004059188893055661)); +#265 = CARTESIAN_POINT('NONE', (0.19942539255076586, 0.10111204982744311, 0.006999999999999999)); +#266 = AXIS2_PLACEMENT_3D('NONE', #265, #264, #263); +#267 = CIRCLE('NONE', #266, 0.0029999999999999923); +#268 = DIRECTION('NONE', (0.939692711209452, 0.34201989488892254, 0)); +#269 = VECTOR('NONE', #268, 1); +#270 = CARTESIAN_POINT('NONE', (0.1811642210692703, 0.0870162887423097, 0.003999999999999999)); +#271 = LINE('NONE', #270, #269); +#272 = DIRECTION('NONE', (-0.3420198948889235, 0.9396927112094516, 0.0000000000000001734665653788347)); +#273 = VECTOR('NONE', #272, 1); +#274 = CARTESIAN_POINT('NONE', (0.19740188809903816, 0.07164169377429865, 0.004000000000000001)); +#275 = LINE('NONE', #274, #273); +#276 = DIRECTION('NONE', (0.9396927112094515, 0.34201989488892365, 0.0000000000000000867361737988405)); +#277 = VECTOR('NONE', #276, 1); +#278 = CARTESIAN_POINT('NONE', (0.17774402212038107, 0.09641321585440418, 0.004000000000000005)); +#279 = LINE('NONE', #278, #277); +#280 = DIRECTION('NONE', (-0.3420198948889228, 0.9396927112094519, 0.00000000000000020237765960864063)); +#281 = VECTOR('NONE', #280, 1); +#282 = CARTESIAN_POINT('NONE', (0.18800496098694364, 0.06822149482540943, 0.003999999999999999)); +#283 = LINE('NONE', #282, #281); +#284 = CARTESIAN_POINT('NONE', (0.1905611481813648, 0.09043648769119891, 0.0040000000000000036)); +#285 = CARTESIAN_POINT('NONE', (0.19067637444283675, 0.09047842658608123, 0.003997176344457232)); +#286 = CARTESIAN_POINT('NONE', (0.1907341663530575, 0.09049946110387981, 0.003995760135638707)); +#287 = CARTESIAN_POINT('NONE', (0.19085123304094667, 0.09054206985864531, 0.003987089331094278)); +#288 = CARTESIAN_POINT('NONE', (0.1909099480198925, 0.09056344034570762, 0.003982740475621817)); +#289 = CARTESIAN_POINT('NONE', (0.19102850319466452, 0.0906065908649469, 0.003967940397223012)); +#290 = CARTESIAN_POINT('NONE', (0.19108796472651593, 0.09062823307482165, 0.0039605173949390044)); +#291 = CARTESIAN_POINT('NONE', (0.191207619991715, 0.09067178399390201, 0.003939334029395638)); +#292 = CARTESIAN_POINT('NONE', (0.1912676332756269, 0.09069362702493827, 0.0039287094795402745)); +#293 = CARTESIAN_POINT('NONE', (0.19138796578282055, 0.0907374244397433, 0.0039009227077117)); +#294 = CARTESIAN_POINT('NONE', (0.19144831873850565, 0.0907593911010927, 0.0038869862091884637)); +#295 = CARTESIAN_POINT('NONE', (0.19156887408741644, 0.090803269623583, 0.003852415488413318)); +#296 = CARTESIAN_POINT('NONE', (0.19162933880971053, 0.0908252769646178, 0.003835076489770283)); +#297 = CARTESIAN_POINT('NONE', (0.19174963486294547, 0.09086906111127785, 0.00379358626242726)); +#298 = CARTESIAN_POINT('NONE', (0.191809969535091, 0.09089102111796855, 0.003772776774529134)); +#299 = CARTESIAN_POINT('NONE', (0.19192950113417104, 0.09093452702629963, 0.003724281417923591)); +#300 = CARTESIAN_POINT('NONE', (0.19198945239314913, 0.09095634748212475, 0.0036999584965750278)); +#301 = CARTESIAN_POINT('NONE', (0.19210769692600088, 0.09099938493704457, 0.0036444266255177497)); +#302 = CARTESIAN_POINT('NONE', (0.19216700265491515, 0.09102097043933442, 0.0036165745294284065)); +#303 = CARTESIAN_POINT('NONE', (0.19228342638636126, 0.09106334517728522, 0.0035540324681694623)); +#304 = CARTESIAN_POINT('NONE', (0.19234181888950547, 0.09108459829285102, 0.0035226644003078034)); +#305 = CARTESIAN_POINT('NONE', (0.1924558839277411, 0.09112611453738766, 0.0034531986556815965)); +#306 = CARTESIAN_POINT('NONE', (0.19251309342464598, 0.09114693707424959, 0.00341835800368463)); +#307 = CARTESIAN_POINT('NONE', (0.1926242651606855, 0.09118740024377435, 0.003342116596634759)); +#308 = CARTESIAN_POINT('NONE', (0.1926800235173848, 0.0912076946092302, 0.003303877600636414)); +#309 = CARTESIAN_POINT('NONE', (0.19278777834357683, 0.09124691412630036, 0.0032210701481809666)); +#310 = CARTESIAN_POINT('NONE', (0.19284182294384064, 0.091266584735938, 0.0031795379419219017)); +#311 = CARTESIAN_POINT('NONE', (0.19294565603424374, 0.09130437685908849, 0.003090434424739335)); +#312 = CARTESIAN_POINT('NONE', (0.19299773368183784, 0.09132333155709108, 0.003045744417447701)); +#313 = CARTESIAN_POINT('NONE', (0.19309716660360493, 0.09135952215114974, 0.0029506726174862593)); +#314 = CARTESIAN_POINT('NONE', (0.19314703733979252, 0.09137767359975146, 0.0029029892087067844)); +#315 = CARTESIAN_POINT('NONE', (0.19324162526224312, 0.0914121007597245, 0.00280233085377623)); +#316 = CARTESIAN_POINT('NONE', (0.19328906598150625, 0.09142936775522449, 0.002751845499684168)); +#317 = CARTESIAN_POINT('NONE', (0.19337840425897163, 0.09146188420225422, 0.002646031204669478)); +#318 = CARTESIAN_POINT('NONE', (0.1934232120106473, 0.09147819287671292, 0.0025929598808285123)); +#319 = CARTESIAN_POINT('NONE', (0.19350694193628687, 0.09150866805229393, 0.0024824630246067948)); +#320 = CARTESIAN_POINT('NONE', (0.1935489368104027, 0.09152395292389039, 0.0024270431549272046)); +#321 = CARTESIAN_POINT('NONE', (0.19361252691227365, 0.09154709780912623, 0.002333333333333332)); +#322 = CARTESIAN_POINT('NONE', (0.19362675036990884, 0.09155227472007522, 0.002312372875050925)); +#323 = CARTESIAN_POINT('NONE', (0.19366577788141096, 0.09156647956089443, 0.002254859818262108)); +#324 = CARTESIAN_POINT('NONE', (0.19373742137590808, 0.09159255563891983, 0.0021365533392255936)); +#325 = CARTESIAN_POINT('NONE', (0.19377335428173167, 0.09160563413631183, 0.002077216541106217)); +#326 = CARTESIAN_POINT('NONE', (0.19383863073563573, 0.09162939280298728, 0.0019558310744797434)); +#327 = CARTESIAN_POINT('NONE', (0.19387137024237105, 0.09164130899912115, 0.0018949500053574069)); +#328 = CARTESIAN_POINT('NONE', (0.193928355292356, 0.09166204984405227, 0.0017748180513813608)); +#329 = CARTESIAN_POINT('NONE', (0.19393014056148009, 0.09166269962833908, 0.0017710544700858411)); +#330 = CARTESIAN_POINT('NONE', (0.1939596169062144, 0.09167342813161199, 0.0017089144721400625)); +#331 = CARTESIAN_POINT('NONE', (0.19401179980068675, 0.09169242113631398, 0.001583081280670962)); +#332 = CARTESIAN_POINT('NONE', (0.1940379722123738, 0.09170194710729089, 0.001519969448252927)); +#333 = CARTESIAN_POINT('NONE', (0.19408354294550356, 0.09171853348405971, 0.0013927665896437632)); +#334 = CARTESIAN_POINT('NONE', (0.19410639901741011, 0.09172685240706276, 0.001328967798546524)); +#335 = CARTESIAN_POINT('NONE', (0.19414538708163076, 0.09174104289025752, 0.0012009514248959054)); +#336 = CARTESIAN_POINT('NONE', (0.1941649416057326, 0.09174816014912111, 0.0011367446140674179)); +#337 = CARTESIAN_POINT('NONE', (0.19419742746006627, 0.09175998402340688, 0.00100845230374861)); +#338 = CARTESIAN_POINT('NONE', (0.19421372079071084, 0.09176591430590025, 0.000944107096456061)); +#339 = CARTESIAN_POINT('NONE', (0.1942398318176662, 0.09177541793468036, 0.0008160519293165627)); +#340 = CARTESIAN_POINT('NONE', (0.19425292784374823, 0.09178018449444039, 0.0007518256615535476)); +#341 = CARTESIAN_POINT('NONE', (0.19427283369794823, 0.09178742962689694, 0.0006244912002219888)); +#342 = CARTESIAN_POINT('NONE', (0.19428281751000723, 0.09179106343432171, 0.0005606264035751493)); +#343 = CARTESIAN_POINT('NONE', (0.1942967250358039, 0.09179612535558002, 0.00043446263391104)); +#344 = CARTESIAN_POINT('NONE', (0.19430370037694544, 0.09179866417004094, 0.000371184999486405)); +#345 = CARTESIAN_POINT('NONE', (0.19431184826877615, 0.09180162975769983, 0.0002466052443253309)); +#346 = CARTESIAN_POINT('NONE', (0.19431593485656576, 0.09180311715279142, 0.0001841220748323702)); +#347 = CARTESIAN_POINT('NONE', (0.19431858822509826, 0.09180408289916336, 0.00006150086036784038)); +#348 = CARTESIAN_POINT('NONE', (0.1943199190262026, 0.0918045672707546, 0.000000000000000005901345409120833)); +#349 = CARTESIAN_POINT('NONE', (0.19431726565767005, 0.09180360152438266, -0.00012262121446452365)); +#350 = CARTESIAN_POINT('NONE', (0.19431593485656576, 0.09180311715279141, -0.00018412207483235835)); +#351 = CARTESIAN_POINT('NONE', (0.19430778696473505, 0.09180015156513252, -0.00030870182999342803)); +#352 = CARTESIAN_POINT('NONE', (0.19430370037694544, 0.09179866417004096, -0.000371184999486393)); +#353 = CARTESIAN_POINT('NONE', (0.19428979285114878, 0.09179360224878264, -0.0004973487691505009)); +#354 = CARTESIAN_POINT('NONE', (0.19428281751000723, 0.09179106343432171, -0.0005606264035751373)); +#355 = CARTESIAN_POINT('NONE', (0.19426291165580728, 0.09178381830186519, -0.0006879608649066955)); +#356 = CARTESIAN_POINT('NONE', (0.19425292784374829, 0.0917801844944404, -0.0007518256615535358)); +#357 = CARTESIAN_POINT('NONE', (0.1942268168167929, 0.09177068086566029, -0.0008798808286930295)); +#358 = CARTESIAN_POINT('NONE', (0.19421372079071084, 0.09176591430590024, -0.0009441070964560492)); +#359 = CARTESIAN_POINT('NONE', (0.19418123493637718, 0.09175409043161449, -0.0010723994067748527)); +#360 = CARTESIAN_POINT('NONE', (0.1941649416057326, 0.09174816014912111, -0.0011367446140674057)); +#361 = CARTESIAN_POINT('NONE', (0.19412595354151194, 0.09173396966592634, -0.001264760987718026)); +#362 = CARTESIAN_POINT('NONE', (0.19410639901741006, 0.09172685240706273, -0.0013289677985465118)); +#363 = CARTESIAN_POINT('NONE', (0.19406082828428034, 0.09171026603029389, -0.0014561706571556816)); +#364 = CARTESIAN_POINT('NONE', (0.1940379722123738, 0.09170194710729088, -0.0015199694482529152)); +#365 = CARTESIAN_POINT('NONE', (0.1939857893179015, 0.09168295410258889, -0.0016458026397220297)); +#366 = CARTESIAN_POINT('NONE', (0.19395961690621438, 0.09167342813161197, -0.00170891447214005)); +#367 = CARTESIAN_POINT('NONE', (0.19390084658710538, 0.09165203750239405, -0.0018328100074116245)); +#368 = CARTESIAN_POINT('NONE', (0.19387137024237105, 0.09164130899912115, -0.0018949500053573951)); +#369 = CARTESIAN_POINT('NONE', (0.19380609378846703, 0.09161755033244569, -0.0020163354719838766)); +#370 = CARTESIAN_POINT('NONE', (0.19377335428173167, 0.09160563413631181, -0.002077216541106205)); +#371 = CARTESIAN_POINT('NONE', (0.19370171078723464, 0.09157955805828646, -0.002195523020142718)); +#372 = CARTESIAN_POINT('NONE', (0.19366577788141104, 0.09156647956089446, -0.002254859818262097)); +#373 = CARTESIAN_POINT('NONE', (0.19361252691227374, 0.09154709780912623, -0.002333333333333334)); +#374 = CARTESIAN_POINT('NONE', (0.19358796432190478, 0.09153815776470961, -0.0023695300981383866)); +#375 = CARTESIAN_POINT('NONE', (0.1935489368104027, 0.09152395292389037, -0.002427043154927193)); +#376 = CARTESIAN_POINT('NONE', (0.1934652068847631, 0.09149347774830936, -0.002537540011148915)); +#377 = CARTESIAN_POINT('NONE', (0.19342321201064724, 0.0914781928767129, -0.002592959880828501)); +#378 = CARTESIAN_POINT('NONE', (0.19333387373318195, 0.0914456764296832, -0.0026987741758431926)); +#379 = CARTESIAN_POINT('NONE', (0.19328906598150625, 0.09142936775522449, -0.002751845499684156)); +#380 = CARTESIAN_POINT('NONE', (0.19319447805905565, 0.09139494059525144, -0.002852503854614719)); +#381 = CARTESIAN_POINT('NONE', (0.1931470373397925, 0.09137767359975144, -0.002902989208706773)); +#382 = CARTESIAN_POINT('NONE', (0.1930476044180255, 0.09134148300569278, -0.0029980610086682187)); +#383 = CARTESIAN_POINT('NONE', (0.1929977336818379, 0.09132333155709108, -0.00304574441744769)); +#384 = CARTESIAN_POINT('NONE', (0.19289390059143477, 0.09128553943394058, -0.003134847934630259)); +#385 = CARTESIAN_POINT('NONE', (0.19284182294384067, 0.091266584735938, -0.003179537941921891)); +#386 = CARTESIAN_POINT('NONE', (0.19273406811764857, 0.09122736521886782, -0.0032623453943773323)); +#387 = CARTESIAN_POINT('NONE', (0.19268002351738472, 0.09120769460923016, -0.0033038776006364015)); +#388 = CARTESIAN_POINT('NONE', (0.19256885178134525, 0.09116723143970541, -0.003380119007686276)); +#389 = CARTESIAN_POINT('NONE', (0.19251309342464598, 0.09114693707424958, -0.0034183580036846197)); +#390 = CARTESIAN_POINT('NONE', (0.19239902838641035, 0.09110542082971296, -0.003487823748310828)); +#391 = CARTESIAN_POINT('NONE', (0.19234181888950547, 0.09108459829285102, -0.0035226644003077926)); +#392 = CARTESIAN_POINT('NONE', (0.19222539515805936, 0.09104222355490023, -0.0035852064615667324)); +#393 = CARTESIAN_POINT('NONE', (0.19216700265491513, 0.09102097043933441, -0.0036165745294283957)); +#394 = CARTESIAN_POINT('NONE', (0.1920487581220634, 0.0909779329844146, -0.003672106400485674)); +#395 = CARTESIAN_POINT('NONE', (0.19198945239314913, 0.09095634748212475, -0.003699958496575017)); +#396 = CARTESIAN_POINT('NONE', (0.1918699207940691, 0.09091284157379367, -0.003748453853180562)); +#397 = CARTESIAN_POINT('NONE', (0.19180996953509102, 0.09089102111796855, -0.003772776774529123)); +#398 = CARTESIAN_POINT('NONE', (0.19168967348185606, 0.0908472369713085, -0.0038142670018721466)); +#399 = CARTESIAN_POINT('NONE', (0.19162933880971053, 0.0908252769646178, -0.003835076489770273)); +#400 = CARTESIAN_POINT('NONE', (0.19150878346079972, 0.0907813984421275, -0.0038696472105454213)); +#401 = CARTESIAN_POINT('NONE', (0.19144831873850565, 0.09075939110109268, -0.003886986209188454)); +#402 = CARTESIAN_POINT('NONE', (0.19132798623131198, 0.09071559368628766, -0.00391477298101703)); +#403 = CARTESIAN_POINT('NONE', (0.19126763327562687, 0.09069362702493824, -0.003928709479540264)); +#404 = CARTESIAN_POINT('NONE', (0.1911479780104278, 0.09065007610585787, -0.003949892845083635)); +#405 = CARTESIAN_POINT('NONE', (0.1910879647265159, 0.09062823307482164, -0.0039605173949389975)); +#406 = CARTESIAN_POINT('NONE', (0.19096940955174382, 0.09058508255558233, -0.003975317473337802)); +#407 = CARTESIAN_POINT('NONE', (0.19090994801989242, 0.0905634403457076, -0.0039827404756218095)); +#408 = CARTESIAN_POINT('NONE', (0.1907928813320033, 0.09052083159094211, -0.0039914112801662386)); +#409 = CARTESIAN_POINT('NONE', (0.19073416635305754, 0.09049946110387981, -0.003995760135638697)); +#410 = CARTESIAN_POINT('NONE', (0.19061894009158553, 0.09045752220899748, -0.00399858379118147)); +#411 = CARTESIAN_POINT('NONE', (0.1905611481813648, 0.0904364876911989, -0.003999999999999995)); +#412 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#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), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (-1, -0.9920634920634921, -0.9841269841269842, -0.9761904761904762, -0.9682539682539683, -0.9603174603174603, -0.9523809523809523, -0.9444444444444444, -0.9365079365079365, -0.9285714285714286, -0.9206349206349207, -0.9126984126984127, -0.9047619047619048, -0.8968253968253969, -0.8888888888888888, -0.8809523809523809, -0.873015873015873, -0.8650793650793651, -0.8571428571428572, -0.8492063492063492, -0.8412698412698413, -0.8333333333333334, -0.8253968253968254, -0.8174603174603174, -0.8095238095238095, -0.8015873015873016, -0.7936507936507937, -0.7857142857142857, -0.7777777777777778, -0.7698412698412699, -0.7619047619047619, -0.753968253968254, -0.746031746031746, -0.7380952380952381, -0.7301587301587302, -0.7222222222222222, -0.7142857142857143, -0.7063492063492064, -0.6984126984126984, -0.6904761904761905, -0.6825396825396826, -0.6746031746031746, -0.6666666666666667, -0.6587301587301587, -0.6507936507936508, -0.6428571428571429, -0.6349206349206349, -0.626984126984127, -0.6190476190476191, -0.6111111111111112, -0.6031746031746033, -0.5952380952380952, -0.5873015873015873, -0.5793650793650794, -0.5714285714285714, -0.5634920634920635, -0.5555555555555556, -0.5476190476190477, -0.5396825396825398, -0.5317460317460317, -0.5238095238095238, -0.5158730158730159, -0.5079365079365079, -0.5, -0.49206349206349204, -0.4841269841269841, -0.47619047619047616, -0.46825396825396826, -0.4603174603174603, -0.45238095238095233, -0.4444444444444444, -0.4365079365079365, -0.42857142857142855, -0.4206349206349206, -0.4126984126984127, -0.40476190476190477, -0.3968253968253968, -0.38888888888888884, -0.38095238095238093, -0.373015873015873, -0.36507936507936506, -0.3571428571428571, -0.3492063492063492, -0.3412698412698413, -0.3333333333333333, -0.32539682539682535, -0.31746031746031744, -0.30952380952380953, -0.30158730158730157, -0.2936507936507936, -0.2857142857142857, -0.2777777777777778, -0.2698412698412698, -0.26190476190476186, -0.25396825396825395, -0.24603174603174602, -0.23809523809523808, -0.23015873015873015, -0.2222222222222222, -0.21428571428571427, -0.20634920634920634, -0.1984126984126984, -0.19047619047619047, -0.18253968253968253, -0.1746031746031746, -0.16666666666666666, -0.15873015873015872, -0.15079365079365079, -0.14285714285714285, -0.1349206349206349, -0.12698412698412698, -0.11904761904761904, -0.1111111111111111, -0.10317460317460317, -0.09523809523809523, -0.0873015873015873, -0.07936507936507936, -0.07142857142857142, -0.06349206349206349, -0.05555555555555555, -0.047619047619047616, -0.03968253968253968, -0.031746031746031744, -0.023809523809523808, -0.015873015873015872, -0.007936507936507936, -0), .UNSPECIFIED.); +#413 = DIRECTION('NONE', (-0.3420198948889235, 0.9396927112094516, 0.00000000000000020237765960864048)); +#414 = VECTOR('NONE', #413, 1); +#415 = CARTESIAN_POINT('NONE', (0.19740188809903816, 0.07164169377429865, -0.003999999999999999)); +#416 = LINE('NONE', #415, #414); +#417 = DIRECTION('NONE', (0.000000000000007105427357601027, 0.000000000000007105427357601027, 1)); +#418 = DIRECTION('NONE', (-0.34201989488892603, 0.9396927112094506, -0.000000000000004246720779978309)); +#419 = CARTESIAN_POINT('NONE', (0.18714094923247554, 0.09983341480329339, 0.000000000000000020097183471152274)); +#420 = AXIS2_PLACEMENT_3D('NONE', #419, #418, #417); +#421 = CIRCLE('NONE', #420, 0.003999999999999986); +#422 = DIRECTION('NONE', (-0.939692711209452, -0.34201989488892276, 0)); +#423 = VECTOR('NONE', #422, 1); +#424 = CARTESIAN_POINT('NONE', (0.19056114818136477, 0.09043648769119891, -0.0039999999999999975)); +#425 = LINE('NONE', #424, #423); +#426 = DIRECTION('NONE', (-0.3420198948889228, 0.9396927112094519, 0.00000000000000017346656537883483)); +#427 = VECTOR('NONE', #426, 1); +#428 = CARTESIAN_POINT('NONE', (0.18800496098694364, 0.06822149482540943, -0.003999999999999999)); +#429 = LINE('NONE', #428, #427); +#430 = DIRECTION('NONE', (-0.9396927112094515, -0.34201989488892365, -0.0000000000000000867361737988405)); +#431 = VECTOR('NONE', #430, 1); +#432 = CARTESIAN_POINT('NONE', (0.18714094923247557, 0.09983341480329341, -0.003999999999999993)); +#433 = LINE('NONE', #432, #431); +#434 = CARTESIAN_POINT('NONE', (0.1811642210692703, 0.08701628874230968, -0.003999999999999996)); +#435 = CARTESIAN_POINT('NONE', (0.1810489948077983, 0.08697434984742736, -0.003997176344457223)); +#436 = CARTESIAN_POINT('NONE', (0.18099120289757756, 0.08695331532962879, -0.003995760135638698)); +#437 = CARTESIAN_POINT('NONE', (0.18087413620968842, 0.0869107065748633, -0.003987089331094269)); +#438 = CARTESIAN_POINT('NONE', (0.1808154212307426, 0.08688933608780099, -0.003982740475621811)); +#439 = CARTESIAN_POINT('NONE', (0.18069686605597057, 0.08684618556856168, -0.003967940397223004)); +#440 = CARTESIAN_POINT('NONE', (0.18067644581277573, 0.0868387532139762, -0.003965391194281951)); +#441 = CARTESIAN_POINT('NONE', (0.18063740452411917, 0.08682454335868697, -0.003960517394938998)); +#442 = CARTESIAN_POINT('NONE', (0.18051774925892008, 0.08678099243960659, -0.003939334029395626)); +#443 = CARTESIAN_POINT('NONE', (0.18045773597500817, 0.08675914940857034, -0.003928709479540262)); +#444 = CARTESIAN_POINT('NONE', (0.1803374034678145, 0.0867153519937653, -0.003900922707711689)); +#445 = CARTESIAN_POINT('NONE', (0.18027705051212936, 0.08669338533241588, -0.0038869862091884563)); +#446 = CARTESIAN_POINT('NONE', (0.1801564951632186, 0.0866495068099256, -0.0038524154884133086)); +#447 = CARTESIAN_POINT('NONE', (0.18009603044092454, 0.0866274994688908, -0.0038350764897702753)); +#448 = CARTESIAN_POINT('NONE', (0.17997573438768957, 0.08658371532223075, -0.003793586262427248)); +#449 = CARTESIAN_POINT('NONE', (0.17991539971554402, 0.08656175531554003, -0.003772776774529125)); +#450 = CARTESIAN_POINT('NONE', (0.179795868116464, 0.08651824940720895, -0.003724281417923581)); +#451 = CARTESIAN_POINT('NONE', (0.179735916857486, 0.08649642895138385, -0.0036999584965750195)); +#452 = CARTESIAN_POINT('NONE', (0.17961767232463424, 0.08645339149646405, -0.0036444266255177414)); +#453 = CARTESIAN_POINT('NONE', (0.17955836659571994, 0.08643180599417419, -0.003616574529428398)); +#454 = CARTESIAN_POINT('NONE', (0.17944194286427384, 0.08638943125622339, -0.0035540324681694593)); +#455 = CARTESIAN_POINT('NONE', (0.17938355036112963, 0.08636817814065757, -0.0035226644003078064)); +#456 = CARTESIAN_POINT('NONE', (0.17926948532289397, 0.08632666189612094, -0.0034531986556815804)); +#457 = CARTESIAN_POINT('NONE', (0.1792122758259891, 0.08630583935925899, -0.0034183580036846106)); +#458 = CARTESIAN_POINT('NONE', (0.17912657761527215, 0.08627464778708659, -0.003359586301456317)); +#459 = CARTESIAN_POINT('NONE', (0.1791011040899496, 0.08626537618973426, -0.0033421165966347342)); +#460 = CARTESIAN_POINT('NONE', (0.17904534573325032, 0.08624508182427841, -0.0033038776006363915)); +#461 = CARTESIAN_POINT('NONE', (0.1789375909070582, 0.08620586230720825, -0.003221070148180956)); +#462 = CARTESIAN_POINT('NONE', (0.1788835463067944, 0.0861861916975706, -0.0031795379419218943)); +#463 = CARTESIAN_POINT('NONE', (0.17877971321639127, 0.08614839957442008, -0.0030904344247393188)); +#464 = CARTESIAN_POINT('NONE', (0.1787276355687972, 0.08612944487641752, -0.0030457444174476927)); +#465 = CARTESIAN_POINT('NONE', (0.1786282026470301, 0.08609325428235884, -0.0029506726174862406)); +#466 = CARTESIAN_POINT('NONE', (0.17857833191084255, 0.08607510283375715, -0.002902989208706776)); +#467 = CARTESIAN_POINT('NONE', (0.17848374398839198, 0.08604067567378411, -0.0028023308537762108)); +#468 = CARTESIAN_POINT('NONE', (0.17843630326912885, 0.08602340867828412, -0.0027518454996841592)); +#469 = CARTESIAN_POINT('NONE', (0.17834696499166355, 0.0859908922312544, -0.0026460312046694624)); +#470 = CARTESIAN_POINT('NONE', (0.17830215723998785, 0.08597458355679571, -0.0025929598808285045)); +#471 = CARTESIAN_POINT('NONE', (0.17821842731434825, 0.08594410838121468, -0.0024824630246067904)); +#472 = CARTESIAN_POINT('NONE', (0.1781764324402324, 0.08592882350961821, -0.002427043154927214)); +#473 = CARTESIAN_POINT('NONE', (0.1781128423383614, 0.08590567862438236, -0.0023333333333333335)); +#474 = CARTESIAN_POINT('NONE', (0.17809861888072617, 0.08590050171343339, -0.00231237287505092)); +#475 = CARTESIAN_POINT('NONE', (0.1780595913692241, 0.08588629687261415, -0.002254859818262119)); +#476 = CARTESIAN_POINT('NONE', (0.177987947874727, 0.08586022079458877, -0.0021365533392255728)); +#477 = CARTESIAN_POINT('NONE', (0.17795201496890334, 0.08584714229719675, -0.0020772165411061887)); +#478 = CARTESIAN_POINT('NONE', (0.1778867385149994, 0.08582338363052132, -0.001955831074479715)); +#479 = CARTESIAN_POINT('NONE', (0.17785399900826404, 0.08581146743438747, -0.0018949500053573982)); +#480 = CARTESIAN_POINT('NONE', (0.177795228689155, 0.08579007680516954, -0.0017710544700858233)); +#481 = CARTESIAN_POINT('NONE', (0.17776575234442069, 0.08577934830189664, -0.0017089144721400538)); +#482 = CARTESIAN_POINT('NONE', (0.17771356944994834, 0.08576035529719464, -0.0015830812806709412)); +#483 = CARTESIAN_POINT('NONE', (0.17768739703826125, 0.0857508293262177, -0.0015199694482529182)); +#484 = CARTESIAN_POINT('NONE', (0.17764182630513156, 0.08573424294944888, -0.0013927665896437456)); +#485 = CARTESIAN_POINT('NONE', (0.17761897023322498, 0.08572592402644587, -0.001328967798546515)); +#486 = CARTESIAN_POINT('NONE', (0.1775799821690043, 0.08571173354325107, -0.0012009514248958885)); +#487 = CARTESIAN_POINT('NONE', (0.17756042764490243, 0.08570461628438747, -0.001136744614067409)); +#488 = CARTESIAN_POINT('NONE', (0.17752794179056877, 0.08569279241010172, -0.001008452303748607)); +#489 = CARTESIAN_POINT('NONE', (0.17751164845992426, 0.08568686212760836, -0.0009441070964560733)); +#490 = CARTESIAN_POINT('NONE', (0.17748553743296888, 0.08567735849882824, -0.0008160519293165438)); +#491 = CARTESIAN_POINT('NONE', (0.1774724414068868, 0.0856725919390682, -0.0007518256615535176)); +#492 = CARTESIAN_POINT('NONE', (0.17745253555268684, 0.08566534680661167, -0.0006244912002219513)); +#493 = CARTESIAN_POINT('NONE', (0.1774425517406279, 0.0856617129991869, -0.0005606264035751191)); +#494 = CARTESIAN_POINT('NONE', (0.1774286442148312, 0.08565665107792858, -0.0004344626339110227)); +#495 = CARTESIAN_POINT('NONE', (0.17742166887368957, 0.08565411226346764, -0.00037118499948639576)); +#496 = CARTESIAN_POINT('NONE', (0.1774135209818589, 0.08565114667580877, -0.0002466052443253171)); +#497 = CARTESIAN_POINT('NONE', (0.17740943439406934, 0.08564965928071719, -0.0001841220748323609)); +#498 = CARTESIAN_POINT('NONE', (0.1774067810255368, 0.08564869353434526, -0.00006150086036782758)); +#499 = CARTESIAN_POINT('NONE', (0.17740545022443252, 0.085648209162754, 0.0000000000000000034978213206350045)); +#500 = CARTESIAN_POINT('NONE', (0.177408103592965, 0.08564917490912594, 0.00012262121446453774)); +#501 = CARTESIAN_POINT('NONE', (0.17740912580390183, 0.08564954696317403, 0.00016986107013356122)); +#502 = CARTESIAN_POINT('NONE', (0.17740943439406934, 0.08564965928071719, 0.00018412207483236787)); +#503 = CARTESIAN_POINT('NONE', (0.17741758228590004, 0.08565262486837608, 0.00030870182999344597)); +#504 = CARTESIAN_POINT('NONE', (0.17742166887368963, 0.08565411226346765, 0.0003711849994864027)); +#505 = CARTESIAN_POINT('NONE', (0.17743557639948632, 0.08565917418472598, 0.0004973487691505)); +#506 = CARTESIAN_POINT('NONE', (0.1774425517406279, 0.0856617129991869, 0.0005606264035751264)); +#507 = CARTESIAN_POINT('NONE', (0.1774624575948279, 0.08566895813164345, 0.0006879608649066873)); +#508 = CARTESIAN_POINT('NONE', (0.17747244140688684, 0.08567259193906822, 0.0007518256615535245)); +#509 = CARTESIAN_POINT('NONE', (0.1774985524338422, 0.08568209556784832, 0.0008798808286930485)); +#510 = CARTESIAN_POINT('NONE', (0.17751164845992423, 0.08568686212760836, 0.0009441070964560802)); +#511 = CARTESIAN_POINT('NONE', (0.17754413431425792, 0.0856986860018941, 0.001072399406774878)); +#512 = CARTESIAN_POINT('NONE', (0.17756042764490243, 0.08570461628438747, 0.001136744614067416)); +#513 = CARTESIAN_POINT('NONE', (0.1775994157091231, 0.08571880676758226, 0.00126476098771804)); +#514 = CARTESIAN_POINT('NONE', (0.17761897023322495, 0.08572592402644587, 0.001328967798546522)); +#515 = CARTESIAN_POINT('NONE', (0.1776645409663547, 0.08574251040321469, 0.0014561706571556946)); +#516 = CARTESIAN_POINT('NONE', (0.17768739703826128, 0.08575082932621772, 0.0015199694482529254)); +#517 = CARTESIAN_POINT('NONE', (0.17773957993273362, 0.08576982233091972, 0.0016458026397220434)); +#518 = CARTESIAN_POINT('NONE', (0.17776575234442066, 0.08577934830189662, 0.0017089144721400607)); +#519 = CARTESIAN_POINT('NONE', (0.17782452266352974, 0.08580073893111456, 0.0018328100074116358)); +#520 = CARTESIAN_POINT('NONE', (0.17785399900826404, 0.08581146743438747, 0.0018949500053574056)); +#521 = CARTESIAN_POINT('NONE', (0.17791927546216804, 0.0858352261010629, 0.0020163354719838745)); +#522 = CARTESIAN_POINT('NONE', (0.17795201496890334, 0.08584714229719677, 0.0020772165411061957)); +#523 = CARTESIAN_POINT('NONE', (0.17802365846340046, 0.08587321837522213, 0.0021955230201427377)); +#524 = CARTESIAN_POINT('NONE', (0.17805959136922409, 0.08588629687261415, 0.0022548598182621257)); +#525 = CARTESIAN_POINT('NONE', (0.1781128423383614, 0.08590567862438238, 0.0023333333333333322)); +#526 = CARTESIAN_POINT('NONE', (0.17813740492873031, 0.085914618668799, 0.0023695300981384096)); +#527 = CARTESIAN_POINT('NONE', (0.1781764324402324, 0.08592882350961822, 0.002427043154927221)); +#528 = CARTESIAN_POINT('NONE', (0.17826016236587194, 0.08595929868519923, 0.0025375400111489355)); +#529 = CARTESIAN_POINT('NONE', (0.1783021572399878, 0.08597458355679569, 0.0025929598808285105)); +#530 = CARTESIAN_POINT('NONE', (0.17839149551745315, 0.08600710000382542, 0.002698774175843207)); +#531 = CARTESIAN_POINT('NONE', (0.17843630326912885, 0.08602340867828413, 0.002751845499684166)); +#532 = CARTESIAN_POINT('NONE', (0.17853089119157942, 0.08605783583825717, 0.002852503854614724)); +#533 = CARTESIAN_POINT('NONE', (0.1785783319108426, 0.08607510283375717, 0.0029029892087067835)); +#534 = CARTESIAN_POINT('NONE', (0.17867776483260966, 0.08611129342781584, 0.002998061008668229)); +#535 = CARTESIAN_POINT('NONE', (0.17872763556879723, 0.08612944487641754, 0.003045744417447701)); +#536 = CARTESIAN_POINT('NONE', (0.1788314686592003, 0.08616723699956803, 0.0031348479346302717)); +#537 = CARTESIAN_POINT('NONE', (0.17888354630679443, 0.08618619169757061, 0.0031795379419219012)); +#538 = CARTESIAN_POINT('NONE', (0.1789913011329865, 0.08622541121464077, 0.0032623453943773366)); +#539 = CARTESIAN_POINT('NONE', (0.17904534573325032, 0.08624508182427842, 0.0033038776006363993)); +#540 = CARTESIAN_POINT('NONE', (0.17915651746928982, 0.08628554499380318, 0.003380119007686272)); +#541 = CARTESIAN_POINT('NONE', (0.1792122758259891, 0.086305839359259, 0.003418358003684618)); +#542 = CARTESIAN_POINT('NONE', (0.17932634086422472, 0.08634735560379565, 0.003487823748310846)); +#543 = CARTESIAN_POINT('NONE', (0.17938355036112963, 0.08636817814065759, 0.003522664400307814)); +#544 = CARTESIAN_POINT('NONE', (0.1794999740925757, 0.08641055287860837, 0.003585206461566748)); +#545 = CARTESIAN_POINT('NONE', (0.17955836659571994, 0.08643180599417419, 0.003616574529428406)); +#546 = CARTESIAN_POINT('NONE', (0.17967661112857167, 0.08647484344909398, 0.0036721064004856824)); +#547 = CARTESIAN_POINT('NONE', (0.17973591685748597, 0.08649642895138385, 0.003699958496575027)); +#548 = CARTESIAN_POINT('NONE', (0.17985544845656604, 0.08653993485971494, 0.003748453853180571)); +#549 = CARTESIAN_POINT('NONE', (0.17991539971554404, 0.08656175531554006, 0.0037727767745291325)); +#550 = CARTESIAN_POINT('NONE', (0.18003569576877898, 0.08660553946220008, 0.0038142670018721553)); +#551 = CARTESIAN_POINT('NONE', (0.1800960304409245, 0.0866274994688908, 0.0038350764897702827)); +#552 = CARTESIAN_POINT('NONE', (0.18021658578983535, 0.0866713779913811, 0.0038696472105454287)); +#553 = CARTESIAN_POINT('NONE', (0.18027705051212936, 0.08669338533241588, 0.003886986209188463)); +#554 = CARTESIAN_POINT('NONE', (0.18039738301932307, 0.08673718274722092, 0.003914772981017037)); +#555 = CARTESIAN_POINT('NONE', (0.18045773597500814, 0.08675914940857034, 0.0039287094795402685)); +#556 = CARTESIAN_POINT('NONE', (0.18057739124020727, 0.08680270032765071, 0.003949892845083641)); +#557 = CARTESIAN_POINT('NONE', (0.18063740452411917, 0.08682454335868699, 0.003960517394939006)); +#558 = CARTESIAN_POINT('NONE', (0.18067644581277573, 0.08683875321397622, 0.003965391194281957)); +#559 = CARTESIAN_POINT('NONE', (0.18075595969889122, 0.08686769387792627, 0.003975317473337812)); +#560 = CARTESIAN_POINT('NONE', (0.18081542123074262, 0.086889336087801, 0.003982740475621818)); +#561 = CARTESIAN_POINT('NONE', (0.18093248791863173, 0.08693194484256649, 0.003991411280166247)); +#562 = CARTESIAN_POINT('NONE', (0.18099120289757753, 0.08695331532962879, 0.003995760135638706)); +#563 = CARTESIAN_POINT('NONE', (0.18110642915904954, 0.0869952542245111, 0.003998583791181479)); +#564 = CARTESIAN_POINT('NONE', (0.1811642210692703, 0.08701628874230968, 0.0040000000000000036)); +#565 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#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), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (-1, -0.9922480620155039, -0.9844961240310077, -0.9767441860465116, -0.9689922480620154, -0.9612403100775194, -0.9534883720930233, -0.9457364341085271, -0.937984496124031, -0.9302325581395349, -0.9224806201550387, -0.9147286821705426, -0.9069767441860466, -0.8992248062015504, -0.8914728682170543, -0.8837209302325582, -0.875968992248062, -0.8682170542635659, -0.8604651162790697, -0.8527131782945736, -0.8449612403100775, -0.8372093023255813, -0.8294573643410853, -0.8217054263565892, -0.813953488372093, -0.8062015503875969, -0.7984496124031008, -0.7906976744186047, -0.7829457364341086, -0.7751937984496124, -0.7674418604651163, -0.7596899224806202, -0.751937984496124, -0.7441860465116279, -0.7364341085271318, -0.7286821705426356, -0.7209302325581395, -0.7131782945736433, -0.7054263565891473, -0.6976744186046512, -0.689922480620155, -0.6821705426356589, -0.6744186046511628, -0.6666666666666667, -0.6589147286821706, -0.6511627906976745, -0.6434108527131783, -0.6356589147286822, -0.627906976744186, -0.6201550387596899, -0.6124031007751938, -0.6046511627906976, -0.5968992248062015, -0.5891472868217054, -0.5813953488372093, -0.5736434108527132, -0.5658914728682171, -0.5581395348837209, -0.5503875968992248, -0.5426356589147288, -0.5348837209302326, -0.5271317829457365, -0.5193798449612403, -0.5116279069767442, -0.5038759689922481, -0.49612403100775193, -0.4883720930232558, -0.48062015503875966, -0.4728682170542636, -0.46511627906976744, -0.4573643410852713, -0.4496124031007752, -0.4418604651162791, -0.43410852713178294, -0.4263565891472868, -0.41860465116279066, -0.4108527131782946, -0.40310077519379844, -0.3953488372093023, -0.3875968992248062, -0.3798449612403101, -0.37209302325581395, -0.3643410852713178, -0.3565891472868217, -0.3488372093023256, -0.34108527131782945, -0.3333333333333333, -0.32558139534883723, -0.3178294573643411, -0.31007751937984496, -0.3023255813953488, -0.2945736434108527, -0.2868217054263566, -0.27906976744186046, -0.2713178294573643, -0.26356589147286824, -0.2558139534883721, -0.24806201550387597, -0.24031007751937983, -0.23255813953488372, -0.2248062015503876, -0.21705426356589147, -0.20930232558139533, -0.20155038759689922, -0.1937984496124031, -0.18604651162790697, -0.17829457364341084, -0.17054263565891473, -0.16279069767441862, -0.15503875968992248, -0.14728682170542634, -0.13953488372093023, -0.13178294573643412, -0.12403100775193798, -0.11627906976744186, -0.10852713178294573, -0.10077519379844961, -0.09302325581395349, -0.08527131782945736, -0.07751937984496124, -0.06976744186046512, -0.06201550387596899, -0.05426356589147287, -0.046511627906976744, -0.03875968992248062, -0.031007751937984496, -0.023255813953488372, -0.015503875968992248, -0.007751937984496124, -0), .UNSPECIFIED.); +#566 = DIRECTION('NONE', (-0.000000000000014210854715201953, -0.0000000000000035527136788004883, -1)); +#567 = DIRECTION('NONE', (-0.342019894888923, 0.9396927112094519, 0.0000000000000015219358869921909)); +#568 = CARTESIAN_POINT('NONE', (0.17774402212038112, 0.0964132158544042, 0.00000000000000002009718347115226)); +#569 = AXIS2_PLACEMENT_3D('NONE', #568, #567, #566); +#570 = CIRCLE('NONE', #569, 0.004000000000000014); +#571 = DIRECTION('NONE', (0, 0, 1)); +#572 = VECTOR('NONE', #571, 1); +#573 = CARTESIAN_POINT('NONE', (0, 0.0035, -0.0075)); +#574 = LINE('NONE', #573, #572); +#575 = DIRECTION('NONE', (0, 0, 1)); +#576 = VECTOR('NONE', #575, 1); +#577 = CARTESIAN_POINT('NONE', (0.172773698, 0.086622826, -0.0075)); +#578 = LINE('NONE', #577, #576); +#579 = DIRECTION('NONE', (-0.34202020005082673, 0.9396926001396374, 0)); +#580 = VECTOR('NONE', #579, 1); +#581 = CARTESIAN_POINT('NONE', (0.172773698, 0.086622826, -0.0075)); +#582 = LINE('NONE', #581, #580); +#583 = DIRECTION('NONE', (0, 0, 1)); +#584 = VECTOR('NONE', #583, 1); +#585 = CARTESIAN_POINT('NONE', (0.17106359699999998, 0.09132128900000001, -0.0075)); +#586 = LINE('NONE', #585, #584); +#587 = DIRECTION('NONE', (-0.34202020005082673, 0.9396926001396374, 0)); +#588 = VECTOR('NONE', #587, 1); +#589 = CARTESIAN_POINT('NONE', (0.172773698, 0.086622826, 0.0075)); +#590 = LINE('NONE', #589, #588); +#591 = DIRECTION('NONE', (0, 0, 1)); +#592 = VECTOR('NONE', #591, 1); +#593 = CARTESIAN_POINT('NONE', (-0.007071068000000018, 0.0034999990000000097, -0.0075)); +#594 = LINE('NONE', #593, #592); +#595 = DIRECTION('NONE', (1, 0, 0)); +#596 = VECTOR('NONE', #595, 1); +#597 = CARTESIAN_POINT('NONE', (-0.007071068000000018, 0.0034999990000000097, -0.0075)); +#598 = LINE('NONE', #597, #596); +#599 = DIRECTION('NONE', (0, 0, 1)); +#600 = VECTOR('NONE', #599, 1); +#601 = CARTESIAN_POINT('NONE', (-0.000000000000000017763568394002505, 0.0034999990000000097, -0.0075)); +#602 = LINE('NONE', #601, #600); +#603 = DIRECTION('NONE', (1, 0, 0)); +#604 = VECTOR('NONE', #603, 1); +#605 = CARTESIAN_POINT('NONE', (-0.007071068000000018, 0.0034999990000000097, 0.0075)); +#606 = LINE('NONE', #605, #604); +#607 = DIRECTION('NONE', (0.00000001776356856513058, 0.9999999999999999, 0)); +#608 = VECTOR('NONE', #607, 1); +#609 = CARTESIAN_POINT('NONE', (-0.000000000000000017763568394002505, 0.0034999990000000097, -0.0075)); +#610 = LINE('NONE', #609, #608); +#611 = DIRECTION('NONE', (0.00000001776356856513058, 0.9999999999999999, 0)); +#612 = VECTOR('NONE', #611, 1); +#613 = CARTESIAN_POINT('NONE', (-0.000000000000000017763568394002505, 0.0034999990000000097, 0.0075)); +#614 = LINE('NONE', #613, #612); +#615 = DIRECTION('NONE', (0, 0, 1)); +#616 = VECTOR('NONE', #615, 1); +#617 = CARTESIAN_POINT('NONE', (0.028991377875253802, 0.03249137787525381, -0.0075)); +#618 = LINE('NONE', #617, #616); +#619 = DIRECTION('NONE', (-0.7071067811865456, 0.7071067811865493, 0.0000000000000020674963727560355)); +#620 = DIRECTION('NONE', (-0.0000000000000011441101052341337, 0.0000000000000017797713052746296, -0.9999999999999998)); +#621 = CARTESIAN_POINT('NONE', (0.041749588072607265, 0.01973316767790028, 0.007499999999999962)); +#622 = AXIS2_PLACEMENT_3D('NONE', #621, #620, #619); +#623 = CIRCLE('NONE', #622, 0.018042833892704037); +#624 = DIRECTION('NONE', (0, 0, -1)); +#625 = VECTOR('NONE', #624, 1); +#626 = CARTESIAN_POINT('NONE', (0.035578575487051296, 0.03668788556256646, 0.0075)); +#627 = LINE('NONE', #626, #625); +#628 = DIRECTION('NONE', (-0.3420201406416171, 0.9396926217628233, -0.0000000000000020182702686427967)); +#629 = DIRECTION('NONE', (-0.0000000000000011126624450385455, 0.0000000000000017428223493250165, 1)); +#630 = CARTESIAN_POINT('NONE', (0.041749588072607265, 0.01973316767790028, -0.007499999999999963)); +#631 = AXIS2_PLACEMENT_3D('NONE', #630, #629, #628); +#632 = CIRCLE('NONE', #631, 0.018042833892704037); +#633 = DIRECTION('NONE', (0.7071067811865475, 0.7071067811865477, 0)); +#634 = VECTOR('NONE', #633, 1); +#635 = CARTESIAN_POINT('NONE', (0, 0.0035, -0.0075)); +#636 = LINE('NONE', #635, #634); +#637 = DIRECTION('NONE', (-0.7071067811865475, -0.7071067811865477, 0)); +#638 = VECTOR('NONE', #637, 1); +#639 = CARTESIAN_POINT('NONE', (0.028991377875253802, 0.03249137787525381, 0.0075)); +#640 = LINE('NONE', #639, #638); +#641 = DIRECTION('NONE', (0.939692621762824, 0.34202014064161546, 0)); +#642 = VECTOR('NONE', #641, 1); +#643 = CARTESIAN_POINT('NONE', (0.03557857548705097, 0.036687885562566344, -0.0075)); +#644 = LINE('NONE', #643, #642); +#645 = DIRECTION('NONE', (-0.939692621762824, -0.34202014064161546, 0)); +#646 = VECTOR('NONE', #645, 1); +#647 = CARTESIAN_POINT('NONE', (0.172773698, 0.086622826, 0.0075)); +#648 = LINE('NONE', #647, #646); +#649 = DIRECTION('NONE', (0, 0, 1)); +#650 = VECTOR('NONE', #649, 1); +#651 = CARTESIAN_POINT('NONE', (0.032826850479632005, 0.041007227582950743, -0.0075)); +#652 = LINE('NONE', #651, #650); +#653 = DIRECTION('NONE', (-0.342020145737682, 0.9396926199080073, -0)); +#654 = DIRECTION('NONE', (-0, 0, 1)); +#655 = CARTESIAN_POINT('NONE', (0.038997863236323, 0.02405250951418464, 0.0075)); +#656 = AXIS2_PLACEMENT_3D('NONE', #655, #654, #653); +#657 = CIRCLE('NONE', #656, 0.018042834124232996); +#658 = DIRECTION('NONE', (0, 0, -1)); +#659 = VECTOR('NONE', #658, 1); +#660 = CARTESIAN_POINT('NONE', (0.02623965287525379, 0.03681071987525382, 0.0075)); +#661 = LINE('NONE', #660, #659); +#662 = DIRECTION('NONE', (-0.7071067811865485, 0.7071067811865467, -0)); +#663 = DIRECTION('NONE', (0, -0, -1.0000000000000002)); +#664 = CARTESIAN_POINT('NONE', (0.038997863236323, 0.02405250951418464, -0.0075)); +#665 = AXIS2_PLACEMENT_3D('NONE', #664, #663, #662); +#666 = CIRCLE('NONE', #665, 0.018042834124232996); +#667 = DIRECTION('NONE', (-0.9396926199080069, -0.3420201457376831, 0)); +#668 = VECTOR('NONE', #667, 1); +#669 = CARTESIAN_POINT('NONE', (0.17106359699999998, 0.09132128900000001, -0.0075)); +#670 = LINE('NONE', #669, #668); +#671 = DIRECTION('NONE', (0.9396926199080069, 0.3420201457376831, 0)); +#672 = VECTOR('NONE', #671, 1); +#673 = CARTESIAN_POINT('NONE', (0.03282685047962854, 0.041007227582949474, 0.0075)); +#674 = LINE('NONE', #673, #672); +#675 = DIRECTION('NONE', (-0.7071067811865476, -0.7071067811865476, -0.000000000000000018412011225153444)); +#676 = VECTOR('NONE', #675, 1); +#677 = CARTESIAN_POINT('NONE', (0.026239652875265928, 0.036810719875265956, -0.007499999999999999)); +#678 = LINE('NONE', #677, #676); +#679 = DIRECTION('NONE', (0.7071067811865476, 0.7071067811865476, -0.000000000000000018412011225153444)); +#680 = VECTOR('NONE', #679, 1); +#681 = CARTESIAN_POINT('NONE', (-0.007071068000000018, 0.0034999990000000097, 0.0075)); +#682 = LINE('NONE', #681, #680); +#683 = DIRECTION('NONE', (0, 1, 0)); +#684 = VECTOR('NONE', #683, 1); +#685 = CARTESIAN_POINT('NONE', (-0.07, 0, 0.032)); +#686 = LINE('NONE', #685, #684); +#687 = DIRECTION('NONE', (0, 1, 0)); +#688 = VECTOR('NONE', #687, 1); +#689 = CARTESIAN_POINT('NONE', (-0.07, 0, -0.032)); +#690 = LINE('NONE', #689, #688); +#691 = DIRECTION('NONE', (-0.9567506984145026, 0, -0.2909090941915731)); +#692 = DIRECTION('NONE', (0, 1, 0)); +#693 = CARTESIAN_POINT('NONE', (0.03524257682559567, 0, 0.0000000003610731598158168)); +#694 = AXIS2_PLACEMENT_3D('NONE', #693, #692, #691); +#695 = CIRCLE('NONE', #694, 0.11000000000000042); +#696 = DIRECTION('NONE', (0, 1, 0)); +#697 = VECTOR('NONE', #696, 1); +#698 = CARTESIAN_POINT('NONE', (-0.06999999999999998, 0, 0.032000000722146364)); +#699 = LINE('NONE', #698, #697); +#700 = DIRECTION('NONE', (-0.9567506984145026, -0.0000000000000000888178419700122, -0.2909090941915731)); +#701 = DIRECTION('NONE', (-0.00000000000000009287627662313673, 1, 0.00000000000000000014300190727283849)); +#702 = CARTESIAN_POINT('NONE', (0.03524257682559567, 0.0035000000000000096, 0.0000000003610731598158168)); +#703 = AXIS2_PLACEMENT_3D('NONE', #702, #701, #700); +#704 = CIRCLE('NONE', #703, 0.11000000000000042); +#705 = DIRECTION('NONE', (-0.000000038434834012779503, 0, -0.9999999999999993)); +#706 = VECTOR('NONE', #705, 1); +#707 = CARTESIAN_POINT('NONE', (-0.06999999999999998, 0, 0.032000000722146364)); +#708 = LINE('NONE', #707, #706); +#709 = DIRECTION('NONE', (-0.000000038434834012779503, 0, -0.9999999999999993)); +#710 = VECTOR('NONE', #709, 1); +#711 = CARTESIAN_POINT('NONE', (-0.06999999999999998, 0.0035, 0.032000000722146364)); +#712 = LINE('NONE', #711, #710); +#713 = DIRECTION('NONE', (-0.0000000000000007105427357601007, 0, -1)); +#714 = DIRECTION('NONE', (0, -1, -0)); +#715 = CARTESIAN_POINT('NONE', (-0.024999999999999998, -0, -0.000000000000000003552713678800501)); +#716 = AXIS2_PLACEMENT_3D('NONE', #715, #714, #713); +#717 = CIRCLE('NONE', #716, 0.004999999999999997); +#718 = DIRECTION('NONE', (0, 1, 0)); +#719 = VECTOR('NONE', #718, 1); +#720 = CARTESIAN_POINT('NONE', (-0.025, 0, 0.005)); +#721 = LINE('NONE', #720, #719); +#722 = DIRECTION('NONE', (-0.0000000000000007105427357601007, 0, -1)); +#723 = DIRECTION('NONE', (0, -1, -0)); +#724 = CARTESIAN_POINT('NONE', (-0.024999999999999998, 0.0035, -0.000000000000000003552713678800501)); +#725 = AXIS2_PLACEMENT_3D('NONE', #724, #723, #722); +#726 = CIRCLE('NONE', #725, 0.004999999999999997); +#727 = DIRECTION('NONE', (0, 1, 0)); +#728 = VECTOR('NONE', #727, 1); +#729 = CARTESIAN_POINT('NONE', (-0.025, 0, -0.005)); +#730 = LINE('NONE', #729, #728); +#731 = DIRECTION('NONE', (-1, 0, -0.00000000000000011564823173178715)); +#732 = VECTOR('NONE', #731, 1); +#733 = CARTESIAN_POINT('NONE', (-0.025, 0, 0.005)); +#734 = LINE('NONE', #733, #732); +#735 = DIRECTION('NONE', (0, 1, 0)); +#736 = VECTOR('NONE', #735, 1); +#737 = CARTESIAN_POINT('NONE', (-0.055, 0, 0.004999999999999997)); +#738 = LINE('NONE', #737, #736); +#739 = DIRECTION('NONE', (-1, 0, -0.00000000000000011564823173178715)); +#740 = VECTOR('NONE', #739, 1); +#741 = CARTESIAN_POINT('NONE', (-0.025, 0.0035, 0.005)); +#742 = LINE('NONE', #741, #740); +#743 = DIRECTION('NONE', (0, 0, 1)); +#744 = DIRECTION('NONE', (-0, -1, 0)); +#745 = CARTESIAN_POINT('NONE', (-0.055, -0, -0)); +#746 = AXIS2_PLACEMENT_3D('NONE', #745, #744, #743); +#747 = CIRCLE('NONE', #746, 0.004999999999999997); +#748 = DIRECTION('NONE', (0, 1, 0)); +#749 = VECTOR('NONE', #748, 1); +#750 = CARTESIAN_POINT('NONE', (-0.055, 0, -0.005000000000000004)); +#751 = LINE('NONE', #750, #749); +#752 = DIRECTION('NONE', (0, 0, 1)); +#753 = DIRECTION('NONE', (-0, -1, 0)); +#754 = CARTESIAN_POINT('NONE', (-0.055, 0.0035, -0)); +#755 = AXIS2_PLACEMENT_3D('NONE', #754, #753, #752); +#756 = CIRCLE('NONE', #755, 0.004999999999999997); +#757 = DIRECTION('NONE', (1, 0, 0.00000000000000011564823173178715)); +#758 = VECTOR('NONE', #757, 1); +#759 = CARTESIAN_POINT('NONE', (-0.055, 0, -0.005000000000000004)); +#760 = LINE('NONE', #759, #758); +#761 = DIRECTION('NONE', (1, 0, 0.00000000000000011564823173178715)); +#762 = VECTOR('NONE', #761, 1); +#763 = CARTESIAN_POINT('NONE', (-0.055, 0.0035, -0.005000000000000004)); +#764 = LINE('NONE', #763, #762); +#765 = DIRECTION('NONE', (0.033314830232639266, 0, -0.9994449069791544)); +#766 = DIRECTION('NONE', (0, -1.0000000000000002, 0)); +#767 = CARTESIAN_POINT('NONE', (-0.024999999999999998, -0, -0.017999999999999995)); +#768 = AXIS2_PLACEMENT_3D('NONE', #767, #766, #765); +#769 = CIRCLE('NONE', #768, 0.005000000000000003); +#770 = DIRECTION('NONE', (0, 1, 0)); +#771 = VECTOR('NONE', #770, 1); +#772 = CARTESIAN_POINT('NONE', (-0.025166574151163194, 0, -0.013002775465104229)); +#773 = LINE('NONE', #772, #771); +#774 = DIRECTION('NONE', (0.033314830232639266, 0, -0.9994449069791544)); +#775 = DIRECTION('NONE', (0, -1.0000000000000002, 0)); +#776 = CARTESIAN_POINT('NONE', (-0.024999999999999998, 0.0035, -0.017999999999999995)); +#777 = AXIS2_PLACEMENT_3D('NONE', #776, #775, #774); +#778 = CIRCLE('NONE', #777, 0.005000000000000003); +#779 = DIRECTION('NONE', (0, 1, 0)); +#780 = VECTOR('NONE', #779, 1); +#781 = CARTESIAN_POINT('NONE', (-0.0248334258488368, 0, -0.02299722453489577)); +#782 = LINE('NONE', #781, #780); +#783 = DIRECTION('NONE', (-0.9994449069791543, 0, -0.03331483023263816)); +#784 = VECTOR('NONE', #783, 1); +#785 = CARTESIAN_POINT('NONE', (-0.02516657415116319, 0, -0.013002775465104227)); +#786 = LINE('NONE', #785, #784); +#787 = DIRECTION('NONE', (0, 1, 0)); +#788 = VECTOR('NONE', #787, 1); +#789 = CARTESIAN_POINT('NONE', (-0.05516657415116319, 0, -0.014002775465104218)); +#790 = LINE('NONE', #789, #788); +#791 = DIRECTION('NONE', (-0.9994449069791543, 0, -0.03331483023263816)); +#792 = VECTOR('NONE', #791, 1); +#793 = CARTESIAN_POINT('NONE', (-0.02516657415116319, 0.0035, -0.013002775465104227)); +#794 = LINE('NONE', #793, #792); +#795 = DIRECTION('NONE', (-0.03331483023263647, 0, 0.9994449069791544)); +#796 = DIRECTION('NONE', (-0, -1, 0)); +#797 = CARTESIAN_POINT('NONE', (-0.05500000000000001, -0, -0.018999999999999986)); +#798 = AXIS2_PLACEMENT_3D('NONE', #797, #796, #795); +#799 = CIRCLE('NONE', #798, 0.004999999999999996); +#800 = DIRECTION('NONE', (0, 1, 0)); +#801 = VECTOR('NONE', #800, 1); +#802 = CARTESIAN_POINT('NONE', (-0.05483342584883681, 0, -0.02399722453489576)); +#803 = LINE('NONE', #802, #801); +#804 = DIRECTION('NONE', (-0.03331483023263647, 0, 0.9994449069791544)); +#805 = DIRECTION('NONE', (-0, -1, 0)); +#806 = CARTESIAN_POINT('NONE', (-0.05500000000000001, 0.0035, -0.018999999999999986)); +#807 = AXIS2_PLACEMENT_3D('NONE', #806, #805, #804); +#808 = CIRCLE('NONE', #807, 0.004999999999999996); +#809 = DIRECTION('NONE', (0.9994449069791543, 0, 0.033314830232638155)); +#810 = VECTOR('NONE', #809, 1); +#811 = CARTESIAN_POINT('NONE', (-0.05483342584883681, 0, -0.02399722453489576)); +#812 = LINE('NONE', #811, #810); +#813 = DIRECTION('NONE', (0.9994449069791543, 0, 0.033314830232638155)); +#814 = VECTOR('NONE', #813, 1); +#815 = CARTESIAN_POINT('NONE', (-0.05483342584883681, 0.0035, -0.02399722453489576)); +#816 = LINE('NONE', #815, #814); +#817 = DIRECTION('NONE', (-0.033314830232639286, 0, -0.9994449069791544)); +#818 = DIRECTION('NONE', (0, -1.0000000000000002, -0)); +#819 = CARTESIAN_POINT('NONE', (-0.02500000000000001, 0, 0.018)); +#820 = AXIS2_PLACEMENT_3D('NONE', #819, #818, #817); +#821 = CIRCLE('NONE', #820, 0.004999999999999999); +#822 = DIRECTION('NONE', (0, 1, 0)); +#823 = VECTOR('NONE', #822, 1); +#824 = CARTESIAN_POINT('NONE', (-0.02483342584883681, 0, 0.02299722453489577)); +#825 = LINE('NONE', #824, #823); +#826 = DIRECTION('NONE', (-0.033314830232639286, 0, -0.9994449069791544)); +#827 = DIRECTION('NONE', (0, -1.0000000000000002, -0)); +#828 = CARTESIAN_POINT('NONE', (-0.02500000000000001, 0.0035, 0.018)); +#829 = AXIS2_PLACEMENT_3D('NONE', #828, #827, #826); +#830 = CIRCLE('NONE', #829, 0.004999999999999999); +#831 = DIRECTION('NONE', (0, 1, 0)); +#832 = VECTOR('NONE', #831, 1); +#833 = CARTESIAN_POINT('NONE', (-0.025166574151163204, 0, 0.013002775465104229)); +#834 = LINE('NONE', #833, #832); +#835 = DIRECTION('NONE', (-0.9994449069791544, 0, 0.03331483023263839)); +#836 = VECTOR('NONE', #835, 1); +#837 = CARTESIAN_POINT('NONE', (-0.02483342584883681, 0, 0.02299722453489577)); +#838 = LINE('NONE', #837, #836); +#839 = DIRECTION('NONE', (0, 1, 0)); +#840 = VECTOR('NONE', #839, 1); +#841 = CARTESIAN_POINT('NONE', (-0.05483342584883681, 0, 0.023997224534895768)); +#842 = LINE('NONE', #841, #840); +#843 = DIRECTION('NONE', (-0.9994449069791544, 0, 0.03331483023263839)); +#844 = VECTOR('NONE', #843, 1); +#845 = CARTESIAN_POINT('NONE', (-0.02483342584883681, 0.0035, 0.02299722453489577)); +#846 = LINE('NONE', #845, #844); +#847 = DIRECTION('NONE', (0.03331483023263789, 0, 0.9994449069791544)); +#848 = DIRECTION('NONE', (0, -1.0000000000000002, 0)); +#849 = CARTESIAN_POINT('NONE', (-0.055, -0, 0.019)); +#850 = AXIS2_PLACEMENT_3D('NONE', #849, #848, #847); +#851 = CIRCLE('NONE', #850, 0.004999999999999996); +#852 = DIRECTION('NONE', (0, 1, 0)); +#853 = VECTOR('NONE', #852, 1); +#854 = CARTESIAN_POINT('NONE', (-0.05516657415116319, 0, 0.014002775465104225)); +#855 = LINE('NONE', #854, #853); +#856 = DIRECTION('NONE', (0.03331483023263789, 0, 0.9994449069791544)); +#857 = DIRECTION('NONE', (0, -1.0000000000000002, 0)); +#858 = CARTESIAN_POINT('NONE', (-0.055, 0.0035, 0.019)); +#859 = AXIS2_PLACEMENT_3D('NONE', #858, #857, #856); +#860 = CIRCLE('NONE', #859, 0.004999999999999996); +#861 = DIRECTION('NONE', (0.9994449069791543, 0, -0.033314830232638336)); +#862 = VECTOR('NONE', #861, 1); +#863 = CARTESIAN_POINT('NONE', (-0.05516657415116319, 0, 0.014002775465104225)); +#864 = LINE('NONE', #863, #862); +#865 = DIRECTION('NONE', (0.9994449069791543, 0, -0.033314830232638336)); +#866 = VECTOR('NONE', #865, 1); +#867 = CARTESIAN_POINT('NONE', (-0.05516657415116319, 0.0035, 0.014002775465104225)); +#868 = LINE('NONE', #867, #866); +#869 = DIRECTION('NONE', (0, 1, 0)); +#870 = VECTOR('NONE', #869, 1); +#871 = CARTESIAN_POINT('NONE', (0, 0, -0.025)); +#872 = LINE('NONE', #871, #870); +#873 = DIRECTION('NONE', (1, 0, 0.0000000000000006905314730184621)); +#874 = DIRECTION('NONE', (-0, 1, 0)); +#875 = CARTESIAN_POINT('NONE', (-0.005144897542860462, 0.0035, -0.025000000000000005)); +#876 = AXIS2_PLACEMENT_3D('NONE', #875, #874, #873); +#877 = CIRCLE('NONE', #876, 0.005144897542860462); +#878 = DIRECTION('NONE', (0, -1, 0)); +#879 = VECTOR('NONE', #878, 1); +#880 = CARTESIAN_POINT('NONE', (-0.0049979604323034735, 0.0035, -0.030142798869494388)); +#881 = LINE('NONE', #880, #879); +#882 = DIRECTION('NONE', (0.028559773898878052, 0, -0.9995920864606946)); +#883 = DIRECTION('NONE', (0, -0.9999999999999999, 0)); +#884 = CARTESIAN_POINT('NONE', (-0.005144897542860462, -0, -0.025000000000000005)); +#885 = AXIS2_PLACEMENT_3D('NONE', #884, #883, #882); +#886 = CIRCLE('NONE', #885, 0.005144897542860456); +#887 = DIRECTION('NONE', (-0.9995920864606948, 0, -0.028559773898877015)); +#888 = VECTOR('NONE', #887, 1); +#889 = CARTESIAN_POINT('NONE', (-0.004997960432303615, 0, -0.030142798869494388)); +#890 = LINE('NONE', #889, #888); +#891 = DIRECTION('NONE', (0.9995920864606948, 0, 0.028559773898877015)); +#892 = VECTOR('NONE', #891, 1); +#893 = CARTESIAN_POINT('NONE', (-0.07, 0.0035, -0.032)); +#894 = LINE('NONE', #893, #892); +#895 = DIRECTION('NONE', (0, 1, 0)); +#896 = VECTOR('NONE', #895, 1); +#897 = CARTESIAN_POINT('NONE', (-0.0049979604323034735, 0, 0.030142798869494385)); +#898 = LINE('NONE', #897, #896); +#899 = DIRECTION('NONE', (0.028559773898877056, 0, 0.9995920864606946)); +#900 = DIRECTION('NONE', (-0, 0.9999999999999998, 0)); +#901 = CARTESIAN_POINT('NONE', (-0.005144897542860456, 0.0035, 0.02500000000000001)); +#902 = AXIS2_PLACEMENT_3D('NONE', #901, #900, #899); +#903 = CIRCLE('NONE', #902, 0.005144897542860449); +#904 = DIRECTION('NONE', (0, -1, 0)); +#905 = VECTOR('NONE', #904, 1); +#906 = CARTESIAN_POINT('NONE', (-0.000000000000000003552713678800501, 0.0035, 0.025)); +#907 = LINE('NONE', #906, #905); +#908 = DIRECTION('NONE', (1, 0, -0.0000000000000013810629460369266)); +#909 = DIRECTION('NONE', (0, -1, 0)); +#910 = CARTESIAN_POINT('NONE', (-0.005144897542860456, -0, 0.02500000000000001)); +#911 = AXIS2_PLACEMENT_3D('NONE', #910, #909, #908); +#912 = CIRCLE('NONE', #911, 0.005144897542860453); +#913 = DIRECTION('NONE', (0.9995920864606948, 0, -0.02855977389887699)); +#914 = VECTOR('NONE', #913, 1); +#915 = CARTESIAN_POINT('NONE', (-0.07, 0, 0.032)); +#916 = LINE('NONE', #915, #914); +#917 = DIRECTION('NONE', (-0.9995920864606948, -0.000000000000000006669082502319445, 0.02855977389887699)); +#918 = VECTOR('NONE', #917, 1); +#919 = CARTESIAN_POINT('NONE', (-0.004997960432303445, 0.0035000000000000005, 0.030142798869494385)); +#920 = LINE('NONE', #919, #918); +#921 = DIRECTION('NONE', (0, 0, -1)); +#922 = VECTOR('NONE', #921, 1); +#923 = CARTESIAN_POINT('NONE', (0, 0, 0.025)); +#924 = LINE('NONE', #923, #922); +#925 = DIRECTION('NONE', (0, 0, 1)); +#926 = VECTOR('NONE', #925, 1); +#927 = CARTESIAN_POINT('NONE', (0, 0.0034999999999999996, -0.025)); +#928 = LINE('NONE', #927, #926); +#929 = EDGE_CURVE('NONE', #5, #7, #167, .T.); +#930 = EDGE_CURVE('NONE', #7, #9, #171, .T.); +#931 = EDGE_CURVE('NONE', #11, #9, #175, .T.); +#932 = EDGE_CURVE('NONE', #5, #11, #179, .T.); +#933 = EDGE_CURVE('NONE', #7, #13, #184, .T.); +#934 = EDGE_CURVE('NONE', #13, #15, #188, .T.); +#935 = EDGE_CURVE('NONE', #9, #15, #193, .T.); +#936 = EDGE_CURVE('NONE', #13, #17, #197, .T.); +#937 = EDGE_CURVE('NONE', #17, #19, #201, .T.); +#938 = EDGE_CURVE('NONE', #15, #19, #205, .T.); +#939 = EDGE_CURVE('NONE', #17, #21, #210, .T.); +#940 = EDGE_CURVE('NONE', #21, #23, #214, .T.); +#941 = EDGE_CURVE('NONE', #19, #23, #219, .T.); +#942 = EDGE_CURVE('NONE', #21, #25, #223, .T.); +#943 = EDGE_CURVE('NONE', #25, #27, #227, .T.); +#944 = EDGE_CURVE('NONE', #23, #27, #231, .T.); +#945 = EDGE_CURVE('NONE', #25, #29, #236, .T.); +#946 = EDGE_CURVE('NONE', #29, #31, #240, .T.); +#947 = EDGE_CURVE('NONE', #27, #31, #245, .T.); +#948 = EDGE_CURVE('NONE', #29, #33, #249, .T.); +#949 = EDGE_CURVE('NONE', #33, #35, #253, .T.); +#950 = EDGE_CURVE('NONE', #31, #35, #257, .T.); +#951 = EDGE_CURVE('NONE', #33, #5, #262, .T.); +#952 = EDGE_CURVE('NONE', #35, #11, #267, .T.); +#953 = EDGE_CURVE('NONE', #47, #45, #271, .T.); +#954 = EDGE_CURVE('NONE', #45, #37, #275, .T.); +#955 = EDGE_CURVE('NONE', #39, #37, #279, .T.); +#956 = EDGE_CURVE('NONE', #47, #39, #283, .T.); +#957 = EDGE_CURVE('NONE', #45, #49, #412, .T.); +#958 = EDGE_CURVE('NONE', #49, #41, #416, .T.); +#959 = EDGE_CURVE('NONE', #37, #41, #421, .T.); +#960 = EDGE_CURVE('NONE', #49, #51, #425, .T.); +#961 = EDGE_CURVE('NONE', #51, #43, #429, .T.); +#962 = EDGE_CURVE('NONE', #41, #43, #433, .T.); +#963 = EDGE_CURVE('NONE', #51, #47, #565, .T.); +#964 = EDGE_CURVE('NONE', #43, #39, #570, .T.); +#965 = EDGE_CURVE('NONE', #53, #55, #574, .T.); +#966 = EDGE_CURVE('NONE', #57, #59, #578, .T.); +#967 = EDGE_CURVE('NONE', #57, #61, #582, .T.); +#968 = EDGE_CURVE('NONE', #61, #63, #586, .T.); +#969 = EDGE_CURVE('NONE', #59, #63, #590, .T.); +#970 = EDGE_CURVE('NONE', #65, #67, #594, .T.); +#971 = EDGE_CURVE('NONE', #65, #69, #598, .T.); +#972 = EDGE_CURVE('NONE', #69, #71, #602, .T.); +#973 = EDGE_CURVE('NONE', #67, #71, #606, .T.); +#974 = EDGE_CURVE('NONE', #69, #53, #610, .T.); +#975 = EDGE_CURVE('NONE', #71, #55, #614, .T.); +#976 = EDGE_CURVE('NONE', #73, #75, #618, .T.); +#977 = EDGE_CURVE('NONE', #75, #77, #623, .T.); +#978 = EDGE_CURVE('NONE', #77, #79, #627, .T.); +#979 = EDGE_CURVE('NONE', #79, #73, #632, .T.); +#980 = EDGE_CURVE('NONE', #53, #73, #636, .T.); +#981 = EDGE_CURVE('NONE', #75, #55, #640, .T.); +#982 = EDGE_CURVE('NONE', #79, #57, #644, .T.); +#983 = EDGE_CURVE('NONE', #59, #77, #648, .T.); +#984 = EDGE_CURVE('NONE', #81, #83, #652, .T.); +#985 = EDGE_CURVE('NONE', #83, #85, #657, .T.); +#986 = EDGE_CURVE('NONE', #85, #87, #661, .T.); +#987 = EDGE_CURVE('NONE', #87, #81, #666, .T.); +#988 = EDGE_CURVE('NONE', #61, #81, #670, .T.); +#989 = EDGE_CURVE('NONE', #83, #63, #674, .T.); +#990 = EDGE_CURVE('NONE', #87, #65, #678, .T.); +#991 = EDGE_CURVE('NONE', #67, #85, #682, .T.); +#992 = EDGE_CURVE('NONE', #89, #91, #686, .T.); +#993 = EDGE_CURVE('NONE', #93, #95, #690, .T.); +#994 = EDGE_CURVE('NONE', #93, #97, #695, .T.); +#995 = EDGE_CURVE('NONE', #97, #99, #699, .T.); +#996 = EDGE_CURVE('NONE', #95, #99, #704, .T.); +#997 = EDGE_CURVE('NONE', #97, #89, #708, .T.); +#998 = EDGE_CURVE('NONE', #99, #91, #712, .T.); +#999 = EDGE_CURVE('NONE', #101, #103, #717, .T.); +#1000 = EDGE_CURVE('NONE', #103, #105, #721, .T.); +#1001 = EDGE_CURVE('NONE', #107, #105, #726, .T.); +#1002 = EDGE_CURVE('NONE', #101, #107, #730, .T.); +#1003 = EDGE_CURVE('NONE', #103, #109, #734, .T.); +#1004 = EDGE_CURVE('NONE', #109, #111, #738, .T.); +#1005 = EDGE_CURVE('NONE', #105, #111, #742, .T.); +#1006 = EDGE_CURVE('NONE', #109, #113, #747, .T.); +#1007 = EDGE_CURVE('NONE', #113, #115, #751, .T.); +#1008 = EDGE_CURVE('NONE', #111, #115, #756, .T.); +#1009 = EDGE_CURVE('NONE', #113, #101, #760, .T.); +#1010 = EDGE_CURVE('NONE', #115, #107, #764, .T.); +#1011 = EDGE_CURVE('NONE', #117, #119, #769, .T.); +#1012 = EDGE_CURVE('NONE', #119, #121, #773, .T.); +#1013 = EDGE_CURVE('NONE', #123, #121, #778, .T.); +#1014 = EDGE_CURVE('NONE', #117, #123, #782, .T.); +#1015 = EDGE_CURVE('NONE', #119, #125, #786, .T.); +#1016 = EDGE_CURVE('NONE', #125, #127, #790, .T.); +#1017 = EDGE_CURVE('NONE', #121, #127, #794, .T.); +#1018 = EDGE_CURVE('NONE', #125, #129, #799, .T.); +#1019 = EDGE_CURVE('NONE', #129, #131, #803, .T.); +#1020 = EDGE_CURVE('NONE', #127, #131, #808, .T.); +#1021 = EDGE_CURVE('NONE', #129, #117, #812, .T.); +#1022 = EDGE_CURVE('NONE', #131, #123, #816, .T.); +#1023 = EDGE_CURVE('NONE', #133, #135, #821, .T.); +#1024 = EDGE_CURVE('NONE', #135, #137, #825, .T.); +#1025 = EDGE_CURVE('NONE', #139, #137, #830, .T.); +#1026 = EDGE_CURVE('NONE', #133, #139, #834, .T.); +#1027 = EDGE_CURVE('NONE', #135, #141, #838, .T.); +#1028 = EDGE_CURVE('NONE', #141, #143, #842, .T.); +#1029 = EDGE_CURVE('NONE', #137, #143, #846, .T.); +#1030 = EDGE_CURVE('NONE', #141, #145, #851, .T.); +#1031 = EDGE_CURVE('NONE', #145, #147, #855, .T.); +#1032 = EDGE_CURVE('NONE', #143, #147, #860, .T.); +#1033 = EDGE_CURVE('NONE', #145, #133, #864, .T.); +#1034 = EDGE_CURVE('NONE', #147, #139, #868, .T.); +#1035 = EDGE_CURVE('NONE', #149, #151, #872, .T.); +#1036 = EDGE_CURVE('NONE', #151, #153, #877, .T.); +#1037 = EDGE_CURVE('NONE', #153, #155, #881, .T.); +#1038 = EDGE_CURVE('NONE', #155, #149, #886, .T.); +#1039 = EDGE_CURVE('NONE', #155, #93, #890, .T.); +#1040 = EDGE_CURVE('NONE', #95, #153, #894, .T.); +#1041 = EDGE_CURVE('NONE', #157, #159, #898, .T.); +#1042 = EDGE_CURVE('NONE', #159, #161, #903, .T.); +#1043 = EDGE_CURVE('NONE', #161, #163, #907, .T.); +#1044 = EDGE_CURVE('NONE', #163, #157, #912, .T.); +#1045 = EDGE_CURVE('NONE', #89, #157, #916, .T.); +#1046 = EDGE_CURVE('NONE', #159, #91, #920, .T.); +#1047 = EDGE_CURVE('NONE', #163, #149, #924, .T.); +#1048 = EDGE_CURVE('NONE', #151, #161, #928, .T.); +#1049 = CARTESIAN_POINT('NONE', (0.12963247899983488, 0.073581172288355, 0.01)); +#1050 = DIRECTION('NONE', (0, 0, 1)); +#1051 = AXIS2_PLACEMENT_3D('NONE', #1049, #1050, $); +#1052 = PLANE('NONE', #1051); +#1053 = CARTESIAN_POINT('NONE', (0.13031651878961273, 0.0717017868659361, 0.007000000000000011)); +#1054 = DIRECTION('NONE', (0.9396927112094502, 0.34201989488892737, -0)); +#1055 = DIRECTION('NONE', (0, 0, 1)); +#1056 = AXIS2_PLACEMENT_3D('NONE', #1053, #1054, #1055); +#1057 = CYLINDRICAL_SURFACE('NONE', #1056, 0.0029999999999999884); +#1058 = CARTESIAN_POINT('NONE', (0.1313425784742795, 0.06888270873230774, -0)); +#1059 = DIRECTION('NONE', (0.34201989488892315, -0.9396927112094516, -0.0000000000000003037746897484467)); +#1060 = AXIS2_PLACEMENT_3D('NONE', #1058, #1059, $); +#1061 = PLANE('NONE', #1060); +#1062 = CARTESIAN_POINT('NONE', (0.1303165187896127, 0.07170178686593609, -0.0069999999999999975)); +#1063 = DIRECTION('NONE', (0.9396927112094486, 0.34201989488893125, 0.000000000000006313632027349936)); +#1064 = DIRECTION('NONE', (0.34201989488893125, -0.9396927112094486, -0.0000000000000008881784197001278)); +#1065 = AXIS2_PLACEMENT_3D('NONE', #1062, #1063, #1064); +#1066 = CYLINDRICAL_SURFACE('NONE', #1065, 0.0029999999999999914); +#1067 = CARTESIAN_POINT('NONE', (0.12963247899983488, 0.073581172288355, -0.01)); +#1068 = DIRECTION('NONE', (0, -0, -1)); +#1069 = AXIS2_PLACEMENT_3D('NONE', #1067, #1068, $); +#1070 = PLANE('NONE', #1069); +#1071 = CARTESIAN_POINT('NONE', (0.12894843921005705, 0.07546055771077394, -0.007000000000000029)); +#1072 = DIRECTION('NONE', (0.9396927112094514, 0.3420198948889236, -0.0000000000000032402633573167998)); +#1073 = DIRECTION('NONE', (0, -0.000000000000009473903143468092, -1)); +#1074 = AXIS2_PLACEMENT_3D('NONE', #1071, #1072, #1073); +#1075 = CYLINDRICAL_SURFACE('NONE', #1074, 0.0029999999999999714); +#1076 = CARTESIAN_POINT('NONE', (0.1279223795253903, 0.07827963584440226, -0)); +#1077 = DIRECTION('NONE', (-0.34201989488892315, 0.9396927112094519, 0.0000000000000003037746897484467)); +#1078 = AXIS2_PLACEMENT_3D('NONE', #1076, #1077, $); +#1079 = PLANE('NONE', #1078); +#1080 = CARTESIAN_POINT('NONE', (0.12894843921005705, 0.07546055771077394, 0.007000000000000029)); +#1081 = DIRECTION('NONE', (0.9396927112094513, 0.3420198948889245, 0.0000000000000023825026518301308)); +#1082 = DIRECTION('NONE', (-0.3420198948889245, 0.9396927112094513, -0.000000000000009473903143468103)); +#1083 = AXIS2_PLACEMENT_3D('NONE', #1080, #1081, #1082); +#1084 = CYLINDRICAL_SURFACE('NONE', #1083, 0.002999999999999968); +#1085 = CARTESIAN_POINT('NONE', (0.0676399263185822, 0.02461896176666155, -0)); +#1086 = DIRECTION('NONE', (0.9396927112094519, 0.34201989488892304, 0)); +#1087 = AXIS2_PLACEMENT_3D('NONE', #1085, #1086, $); +#1088 = PLANE('NONE', #1087); +#1089 = CARTESIAN_POINT('NONE', (0.20859383299999998, 0.075921946, -0)); +#1090 = DIRECTION('NONE', (0.9396927112094519, 0.34201989488892304, 0)); +#1091 = AXIS2_PLACEMENT_3D('NONE', #1089, #1090, $); +#1092 = PLANE('NONE', #1091); +#1093 = CARTESIAN_POINT('NONE', (0.1875729551097096, 0.08402745481435142, 0.0040000000000000036)); +#1094 = DIRECTION('NONE', (0, 0, 1)); +#1095 = AXIS2_PLACEMENT_3D('NONE', #1093, #1094, $); +#1096 = PLANE('NONE', #1095); +#1097 = CARTESIAN_POINT('NONE', (0.19227141866575684, 0.08573755428879601, -0)); +#1098 = DIRECTION('NONE', (-0.3420198948889292, 0.9396927112094494, -0.000000000000000908261630995322)); +#1099 = DIRECTION('NONE', (0.0000000000000071054273576009955, 0.0000000000000035527136788004978, 1)); +#1100 = AXIS2_PLACEMENT_3D('NONE', #1097, #1098, #1099); +#1101 = CYLINDRICAL_SURFACE('NONE', #1100, 0.0040000000000000036); +#1102 = CARTESIAN_POINT('NONE', (0.1875729551097096, 0.08402745481435142, -0.003999999999999996)); +#1103 = DIRECTION('NONE', (0, 0, -1)); +#1104 = AXIS2_PLACEMENT_3D('NONE', #1102, #1103, $); +#1105 = PLANE('NONE', #1104); +#1106 = CARTESIAN_POINT('NONE', (0.18287449155366242, 0.0823173553399068, 0.00000000000000002009718347115226)); +#1107 = DIRECTION('NONE', (-0.3420198948889229, 0.9396927112094519, 0.0000000000000024301975179875618)); +#1108 = DIRECTION('NONE', (-0.000000000000007105427357600972, 0, -1)); +#1109 = AXIS2_PLACEMENT_3D('NONE', #1106, #1107, #1108); +#1110 = CYLINDRICAL_SURFACE('NONE', #1109, 0.0040000000000000166); +#1111 = CARTESIAN_POINT('NONE', (0.0159099025, 0.0194099025, -0)); +#1112 = DIRECTION('NONE', (0.7071067811865475, -0.7071067811865475, 0)); +#1113 = AXIS2_PLACEMENT_3D('NONE', #1111, #1112, $); +#1114 = PLANE('NONE', #1113); +#1115 = CARTESIAN_POINT('NONE', (0.10229675149999999, 0.06097131549999999, -0)); +#1116 = DIRECTION('NONE', (0.3420201406416154, -0.939692621762824, 0)); +#1117 = AXIS2_PLACEMENT_3D('NONE', #1115, #1116, $); +#1118 = PLANE('NONE', #1117); +#1119 = CARTESIAN_POINT('NONE', (0.1719186475, 0.0889720575, -0)); +#1120 = DIRECTION('NONE', (0.9396926001396376, 0.34202020005082584, -0)); +#1121 = AXIS2_PLACEMENT_3D('NONE', #1119, #1120, $); +#1122 = PLANE('NONE', #1121); +#1123 = CARTESIAN_POINT('NONE', (0.10006583849999999, 0.065480218, -0)); +#1124 = DIRECTION('NONE', (-0.342020145737683, 0.939692619908007, -0)); +#1125 = AXIS2_PLACEMENT_3D('NONE', #1123, #1124, $); +#1126 = PLANE('NONE', #1125); +#1127 = CARTESIAN_POINT('NONE', (0.010998505999999979, 0.021569573, -0)); +#1128 = DIRECTION('NONE', (-0.7071067811865475, 0.7071067811865475, -0)); +#1129 = AXIS2_PLACEMENT_3D('NONE', #1127, #1128, $); +#1130 = PLANE('NONE', #1129); +#1131 = CARTESIAN_POINT('NONE', (-0.003535533999999989, 0.0034999990000000097, -0)); +#1132 = DIRECTION('NONE', (0, -1, 0)); +#1133 = AXIS2_PLACEMENT_3D('NONE', #1131, #1132, $); +#1134 = PLANE('NONE', #1133); +#1135 = CARTESIAN_POINT('NONE', (-0.000000000000000008881784197001253, 0.0034999995000000047, -0)); +#1136 = DIRECTION('NONE', (1, -0.000000017763568571200103, 0)); +#1137 = AXIS2_PLACEMENT_3D('NONE', #1135, #1136, $); +#1138 = PLANE('NONE', #1137); +#1139 = CARTESIAN_POINT('NONE', (0, 0, -0.0075)); +#1140 = DIRECTION('NONE', (0, 0, 1)); +#1141 = AXIS2_PLACEMENT_3D('NONE', #1139, #1140, $); +#1142 = PLANE('NONE', #1141); +#1143 = CARTESIAN_POINT('NONE', (0, 0, 0.0075)); +#1144 = DIRECTION('NONE', (0, 0, 1)); +#1145 = AXIS2_PLACEMENT_3D('NONE', #1143, #1144, $); +#1146 = PLANE('NONE', #1145); +#1147 = CARTESIAN_POINT('NONE', (0.041749588072607265, 0.01973316767790028, -0)); +#1148 = DIRECTION('NONE', (0, -0, -0.9999999999999998)); +#1149 = DIRECTION('NONE', (-0.7071067811865456, 0.7071067811865493, -0)); +#1150 = AXIS2_PLACEMENT_3D('NONE', #1147, #1148, #1149); +#1151 = CYLINDRICAL_SURFACE('NONE', #1150, 0.018042833892704037); +#1152 = CARTESIAN_POINT('NONE', (0.038997863236323, 0.02405250951418464, 0)); +#1153 = DIRECTION('NONE', (-0, 0, 1)); +#1154 = DIRECTION('NONE', (-0.342020145737682, 0.9396926199080073, -0)); +#1155 = AXIS2_PLACEMENT_3D('NONE', #1152, #1153, #1154); +#1156 = CYLINDRICAL_SURFACE('NONE', #1155, 0.018042834124232996); +#1157 = CARTESIAN_POINT('NONE', (-0.035, 0.00175, 0.031)); +#1158 = DIRECTION('NONE', (0.028559773898876983, 0, 0.9995920864606946)); +#1159 = AXIS2_PLACEMENT_3D('NONE', #1157, #1158, $); +#1160 = PLANE('NONE', #1159); +#1161 = CARTESIAN_POINT('NONE', (0, 0.00175, -0)); +#1162 = DIRECTION('NONE', (1, 0, 0)); +#1163 = AXIS2_PLACEMENT_3D('NONE', #1161, #1162, $); +#1164 = PLANE('NONE', #1163); +#1165 = CARTESIAN_POINT('NONE', (-0.03500000000000002, 0.00175, -0.031)); +#1166 = DIRECTION('NONE', (0.028559773898876983, -0, -0.9995920864606946)); +#1167 = AXIS2_PLACEMENT_3D('NONE', #1165, #1166, $); +#1168 = PLANE('NONE', #1167); +#1169 = CARTESIAN_POINT('NONE', (0.03524257682559567, 0.0017500000000000048, 0.0000000003610731598158168)); +#1170 = DIRECTION('NONE', (-0.000000000000000046438138311568364, 1, 0.00000000000000000007150095363641924)); +#1171 = DIRECTION('NONE', (-0.9567506984145026, -0.0000000000000000444089209850061, -0.2909090941915731)); +#1172 = AXIS2_PLACEMENT_3D('NONE', #1169, #1170, #1171); +#1173 = CYLINDRICAL_SURFACE('NONE', #1172, 0.11000000000000042); +#1174 = CARTESIAN_POINT('NONE', (-0.07, 0.00175, 0.03200000036107317)); +#1175 = DIRECTION('NONE', (1, -0, -0.00000001490116152691457)); +#1176 = AXIS2_PLACEMENT_3D('NONE', #1174, #1175, $); +#1177 = PLANE('NONE', #1176); +#1178 = CARTESIAN_POINT('NONE', (-0.024999999999999998, 0.00175, -0.000000000000000003552713678800501)); +#1179 = DIRECTION('NONE', (0, -1, -0)); +#1180 = DIRECTION('NONE', (-0.0000000000000007105427357601007, 0, -1)); +#1181 = AXIS2_PLACEMENT_3D('NONE', #1178, #1179, #1180); +#1182 = CYLINDRICAL_SURFACE('NONE', #1181, 0.004999999999999997); +#1183 = CARTESIAN_POINT('NONE', (-0.03999999999999999, 0.0017500000000000003, 0.004999999999999999)); +#1184 = DIRECTION('NONE', (0, -0, -1)); +#1185 = AXIS2_PLACEMENT_3D('NONE', #1183, #1184, $); +#1186 = PLANE('NONE', #1185); +#1187 = CARTESIAN_POINT('NONE', (-0.055, 0.00175, -0)); +#1188 = DIRECTION('NONE', (-0, -1, 0)); +#1189 = DIRECTION('NONE', (0, 0, 1)); +#1190 = AXIS2_PLACEMENT_3D('NONE', #1187, #1188, #1189); +#1191 = CYLINDRICAL_SURFACE('NONE', #1190, 0.004999999999999997); +#1192 = CARTESIAN_POINT('NONE', (-0.04, 0.00175, -0.005000000000000002)); +#1193 = DIRECTION('NONE', (0, 0, 1)); +#1194 = AXIS2_PLACEMENT_3D('NONE', #1192, #1193, $); +#1195 = PLANE('NONE', #1194); +#1196 = CARTESIAN_POINT('NONE', (-0.024999999999999998, 0.00175, -0.017999999999999995)); +#1197 = DIRECTION('NONE', (0, -1.0000000000000002, 0)); +#1198 = DIRECTION('NONE', (0.033314830232639266, 0, -0.9994449069791544)); +#1199 = AXIS2_PLACEMENT_3D('NONE', #1196, #1197, #1198); +#1200 = CYLINDRICAL_SURFACE('NONE', #1199, 0.005000000000000003); +#1201 = CARTESIAN_POINT('NONE', (-0.04016657415116319, 0.00175, -0.013502775465104222)); +#1202 = DIRECTION('NONE', (0.033314830232638176, -0, -0.9994449069791543)); +#1203 = AXIS2_PLACEMENT_3D('NONE', #1201, #1202, $); +#1204 = PLANE('NONE', #1203); +#1205 = CARTESIAN_POINT('NONE', (-0.05500000000000001, 0.00175, -0.018999999999999986)); +#1206 = DIRECTION('NONE', (-0, -1, 0)); +#1207 = DIRECTION('NONE', (-0.03331483023263647, 0, 0.9994449069791544)); +#1208 = AXIS2_PLACEMENT_3D('NONE', #1205, #1206, #1207); +#1209 = CYLINDRICAL_SURFACE('NONE', #1208, 0.004999999999999996); +#1210 = CARTESIAN_POINT('NONE', (-0.039833425848836784, 0.00175, -0.023497224534895767)); +#1211 = DIRECTION('NONE', (-0.033314830232638065, 0, 0.9994449069791544)); +#1212 = AXIS2_PLACEMENT_3D('NONE', #1210, #1211, $); +#1213 = PLANE('NONE', #1212); +#1214 = CARTESIAN_POINT('NONE', (-0.02500000000000001, 0.00175, 0.018)); +#1215 = DIRECTION('NONE', (0, -1.0000000000000002, -0)); +#1216 = DIRECTION('NONE', (-0.033314830232639286, 0, -0.9994449069791544)); +#1217 = AXIS2_PLACEMENT_3D('NONE', #1214, #1215, #1216); +#1218 = CYLINDRICAL_SURFACE('NONE', #1217, 0.004999999999999999); +#1219 = CARTESIAN_POINT('NONE', (-0.03983342584883681, 0.00175, 0.023497224534895767)); +#1220 = DIRECTION('NONE', (-0.033314830232638454, 0, -0.9994449069791544)); +#1221 = AXIS2_PLACEMENT_3D('NONE', #1219, #1220, $); +#1222 = PLANE('NONE', #1221); +#1223 = CARTESIAN_POINT('NONE', (-0.055, 0.00175, 0.019)); +#1224 = DIRECTION('NONE', (0, -1.0000000000000002, 0)); +#1225 = DIRECTION('NONE', (0.03331483023263789, 0, 0.9994449069791544)); +#1226 = AXIS2_PLACEMENT_3D('NONE', #1223, #1224, #1225); +#1227 = CYLINDRICAL_SURFACE('NONE', #1226, 0.004999999999999996); +#1228 = CARTESIAN_POINT('NONE', (-0.04016657415116319, 0.00175, 0.013502775465104228)); +#1229 = DIRECTION('NONE', (0.03331483023263834, 0, 0.9994449069791544)); +#1230 = AXIS2_PLACEMENT_3D('NONE', #1228, #1229, $); +#1231 = PLANE('NONE', #1230); +#1232 = CARTESIAN_POINT('NONE', (0, 0, -0)); +#1233 = DIRECTION('NONE', (0, 1, 0)); +#1234 = AXIS2_PLACEMENT_3D('NONE', #1232, #1233, $); +#1235 = PLANE('NONE', #1234); +#1236 = CARTESIAN_POINT('NONE', (0, 0.0035, -0)); +#1237 = DIRECTION('NONE', (0, 1, 0)); +#1238 = AXIS2_PLACEMENT_3D('NONE', #1236, #1237, $); +#1239 = PLANE('NONE', #1238); +#1240 = CARTESIAN_POINT('NONE', (-0.005144897542860462, 0.00175, -0.025000000000000005)); +#1241 = DIRECTION('NONE', (-0, 1, 0)); +#1242 = DIRECTION('NONE', (1, 0, 0.0000000000000006905314730184621)); +#1243 = AXIS2_PLACEMENT_3D('NONE', #1240, #1241, #1242); +#1244 = CYLINDRICAL_SURFACE('NONE', #1243, 0.005144897542860462); +#1245 = CARTESIAN_POINT('NONE', (-0.005144897542860456, 0.00175, 0.02500000000000001)); +#1246 = DIRECTION('NONE', (-0, 0.9999999999999998, 0)); +#1247 = DIRECTION('NONE', (0.028559773898877056, 0, 0.9995920864606946)); +#1248 = AXIS2_PLACEMENT_3D('NONE', #1245, #1246, #1247); +#1249 = CYLINDRICAL_SURFACE('NONE', #1248, 0.005144897542860449); +#1250 = ORIENTED_EDGE('NONE', *, *, #929, .T.); +#1251 = ORIENTED_EDGE('NONE', *, *, #930, .T.); +#1252 = ORIENTED_EDGE('NONE', *, *, #931, .F.); +#1253 = ORIENTED_EDGE('NONE', *, *, #932, .F.); +#1254 = EDGE_LOOP('NONE', (#1250, #1251, #1252, #1253)); +#1255 = FACE_BOUND('NONE', #1254, .T.); +#1256 = ADVANCED_FACE('NONE', (#1255), #1052, .T.); +#1257 = ORIENTED_EDGE('NONE', *, *, #933, .T.); +#1258 = ORIENTED_EDGE('NONE', *, *, #934, .T.); +#1259 = ORIENTED_EDGE('NONE', *, *, #935, .F.); +#1260 = ORIENTED_EDGE('NONE', *, *, #930, .F.); +#1261 = EDGE_LOOP('NONE', (#1257, #1258, #1259, #1260)); +#1262 = FACE_BOUND('NONE', #1261, .T.); +#1263 = ADVANCED_FACE('NONE', (#1262), #1057, .T.); +#1264 = ORIENTED_EDGE('NONE', *, *, #936, .T.); +#1265 = ORIENTED_EDGE('NONE', *, *, #937, .T.); +#1266 = ORIENTED_EDGE('NONE', *, *, #938, .F.); +#1267 = ORIENTED_EDGE('NONE', *, *, #934, .F.); +#1268 = ORIENTED_EDGE('NONE', *, *, #953, .T.); +#1269 = ORIENTED_EDGE('NONE', *, *, #957, .T.); +#1270 = ORIENTED_EDGE('NONE', *, *, #960, .T.); +#1271 = ORIENTED_EDGE('NONE', *, *, #963, .T.); +#1272 = EDGE_LOOP('NONE', (#1264, #1265, #1266, #1267)); +#1273 = FACE_BOUND('NONE', #1272, .T.); +#1274 = EDGE_LOOP('NONE', (#1268, #1269, #1270, #1271)); +#1275 = FACE_BOUND('NONE', #1274, .T.); +#1276 = ADVANCED_FACE('NONE', (#1273, #1275), #1061, .T.); +#1277 = ORIENTED_EDGE('NONE', *, *, #939, .T.); +#1278 = ORIENTED_EDGE('NONE', *, *, #940, .T.); +#1279 = ORIENTED_EDGE('NONE', *, *, #941, .F.); +#1280 = ORIENTED_EDGE('NONE', *, *, #937, .F.); +#1281 = EDGE_LOOP('NONE', (#1277, #1278, #1279, #1280)); +#1282 = FACE_BOUND('NONE', #1281, .T.); +#1283 = ADVANCED_FACE('NONE', (#1282), #1066, .T.); +#1284 = ORIENTED_EDGE('NONE', *, *, #942, .T.); +#1285 = ORIENTED_EDGE('NONE', *, *, #943, .T.); +#1286 = ORIENTED_EDGE('NONE', *, *, #944, .F.); +#1287 = ORIENTED_EDGE('NONE', *, *, #940, .F.); +#1288 = EDGE_LOOP('NONE', (#1284, #1285, #1286, #1287)); +#1289 = FACE_BOUND('NONE', #1288, .T.); +#1290 = ADVANCED_FACE('NONE', (#1289), #1070, .T.); +#1291 = ORIENTED_EDGE('NONE', *, *, #945, .T.); +#1292 = ORIENTED_EDGE('NONE', *, *, #946, .T.); +#1293 = ORIENTED_EDGE('NONE', *, *, #947, .F.); +#1294 = ORIENTED_EDGE('NONE', *, *, #943, .F.); +#1295 = EDGE_LOOP('NONE', (#1291, #1292, #1293, #1294)); +#1296 = FACE_BOUND('NONE', #1295, .T.); +#1297 = ADVANCED_FACE('NONE', (#1296), #1075, .T.); +#1298 = ORIENTED_EDGE('NONE', *, *, #948, .T.); +#1299 = ORIENTED_EDGE('NONE', *, *, #949, .T.); +#1300 = ORIENTED_EDGE('NONE', *, *, #950, .F.); +#1301 = ORIENTED_EDGE('NONE', *, *, #946, .F.); +#1302 = ORIENTED_EDGE('NONE', *, *, #964, .F.); +#1303 = ORIENTED_EDGE('NONE', *, *, #962, .F.); +#1304 = ORIENTED_EDGE('NONE', *, *, #959, .F.); +#1305 = ORIENTED_EDGE('NONE', *, *, #955, .F.); +#1306 = EDGE_LOOP('NONE', (#1298, #1299, #1300, #1301)); +#1307 = FACE_BOUND('NONE', #1306, .T.); +#1308 = EDGE_LOOP('NONE', (#1302, #1303, #1304, #1305)); +#1309 = FACE_BOUND('NONE', #1308, .T.); +#1310 = ADVANCED_FACE('NONE', (#1307, #1309), #1079, .T.); +#1311 = ORIENTED_EDGE('NONE', *, *, #951, .T.); +#1312 = ORIENTED_EDGE('NONE', *, *, #932, .T.); +#1313 = ORIENTED_EDGE('NONE', *, *, #952, .F.); +#1314 = ORIENTED_EDGE('NONE', *, *, #949, .F.); +#1315 = EDGE_LOOP('NONE', (#1311, #1312, #1313, #1314)); +#1316 = FACE_BOUND('NONE', #1315, .T.); +#1317 = ADVANCED_FACE('NONE', (#1316), #1084, .T.); +#1318 = ORIENTED_EDGE('NONE', *, *, #951, .F.); +#1319 = ORIENTED_EDGE('NONE', *, *, #948, .F.); +#1320 = ORIENTED_EDGE('NONE', *, *, #945, .F.); +#1321 = ORIENTED_EDGE('NONE', *, *, #942, .F.); +#1322 = ORIENTED_EDGE('NONE', *, *, #939, .F.); +#1323 = ORIENTED_EDGE('NONE', *, *, #936, .F.); +#1324 = ORIENTED_EDGE('NONE', *, *, #933, .F.); +#1325 = ORIENTED_EDGE('NONE', *, *, #929, .F.); +#1326 = EDGE_LOOP('NONE', (#1318, #1319, #1320, #1321, #1322, #1323, #1324, #1325)); +#1327 = FACE_BOUND('NONE', #1326, .T.); +#1328 = ADVANCED_FACE('NONE', (#1327), #1088, .F.); +#1329 = ORIENTED_EDGE('NONE', *, *, #931, .T.); +#1330 = ORIENTED_EDGE('NONE', *, *, #935, .T.); +#1331 = ORIENTED_EDGE('NONE', *, *, #938, .T.); +#1332 = ORIENTED_EDGE('NONE', *, *, #941, .T.); +#1333 = ORIENTED_EDGE('NONE', *, *, #944, .T.); +#1334 = ORIENTED_EDGE('NONE', *, *, #947, .T.); +#1335 = ORIENTED_EDGE('NONE', *, *, #950, .T.); +#1336 = ORIENTED_EDGE('NONE', *, *, #952, .T.); +#1337 = EDGE_LOOP('NONE', (#1329, #1330, #1331, #1332, #1333, #1334, #1335, #1336)); +#1338 = FACE_BOUND('NONE', #1337, .T.); +#1339 = ADVANCED_FACE('NONE', (#1338), #1092, .T.); +#1340 = ORIENTED_EDGE('NONE', *, *, #956, .T.); +#1341 = ORIENTED_EDGE('NONE', *, *, #955, .T.); +#1342 = ORIENTED_EDGE('NONE', *, *, #954, .F.); +#1343 = ORIENTED_EDGE('NONE', *, *, #953, .F.); +#1344 = EDGE_LOOP('NONE', (#1340, #1341, #1342, #1343)); +#1345 = FACE_BOUND('NONE', #1344, .T.); +#1346 = ADVANCED_FACE('NONE', (#1345), #1096, .F.); +#1347 = ORIENTED_EDGE('NONE', *, *, #954, .T.); +#1348 = ORIENTED_EDGE('NONE', *, *, #959, .T.); +#1349 = ORIENTED_EDGE('NONE', *, *, #958, .F.); +#1350 = ORIENTED_EDGE('NONE', *, *, #957, .F.); +#1351 = EDGE_LOOP('NONE', (#1347, #1348, #1349, #1350)); +#1352 = FACE_BOUND('NONE', #1351, .T.); +#1353 = ADVANCED_FACE('NONE', (#1352), #1101, .F.); +#1354 = ORIENTED_EDGE('NONE', *, *, #958, .T.); +#1355 = ORIENTED_EDGE('NONE', *, *, #962, .T.); +#1356 = ORIENTED_EDGE('NONE', *, *, #961, .F.); +#1357 = ORIENTED_EDGE('NONE', *, *, #960, .F.); +#1358 = EDGE_LOOP('NONE', (#1354, #1355, #1356, #1357)); +#1359 = FACE_BOUND('NONE', #1358, .T.); +#1360 = ADVANCED_FACE('NONE', (#1359), #1105, .F.); +#1361 = ORIENTED_EDGE('NONE', *, *, #961, .T.); +#1362 = ORIENTED_EDGE('NONE', *, *, #964, .T.); +#1363 = ORIENTED_EDGE('NONE', *, *, #956, .F.); +#1364 = ORIENTED_EDGE('NONE', *, *, #963, .F.); +#1365 = EDGE_LOOP('NONE', (#1361, #1362, #1363, #1364)); +#1366 = FACE_BOUND('NONE', #1365, .T.); +#1367 = ADVANCED_FACE('NONE', (#1366), #1110, .F.); +#1368 = ORIENTED_EDGE('NONE', *, *, #980, .T.); +#1369 = ORIENTED_EDGE('NONE', *, *, #976, .T.); +#1370 = ORIENTED_EDGE('NONE', *, *, #981, .T.); +#1371 = ORIENTED_EDGE('NONE', *, *, #965, .F.); +#1372 = EDGE_LOOP('NONE', (#1368, #1369, #1370, #1371)); +#1373 = FACE_BOUND('NONE', #1372, .T.); +#1374 = ADVANCED_FACE('NONE', (#1373), #1114, .T.); +#1375 = ORIENTED_EDGE('NONE', *, *, #982, .T.); +#1376 = ORIENTED_EDGE('NONE', *, *, #966, .T.); +#1377 = ORIENTED_EDGE('NONE', *, *, #983, .T.); +#1378 = ORIENTED_EDGE('NONE', *, *, #978, .T.); +#1379 = EDGE_LOOP('NONE', (#1375, #1376, #1377, #1378)); +#1380 = FACE_BOUND('NONE', #1379, .T.); +#1381 = ADVANCED_FACE('NONE', (#1380), #1118, .T.); +#1382 = ORIENTED_EDGE('NONE', *, *, #967, .T.); +#1383 = ORIENTED_EDGE('NONE', *, *, #968, .T.); +#1384 = ORIENTED_EDGE('NONE', *, *, #969, .F.); +#1385 = ORIENTED_EDGE('NONE', *, *, #966, .F.); +#1386 = EDGE_LOOP('NONE', (#1382, #1383, #1384, #1385)); +#1387 = FACE_BOUND('NONE', #1386, .T.); +#1388 = ADVANCED_FACE('NONE', (#1387), #1122, .T.); +#1389 = ORIENTED_EDGE('NONE', *, *, #988, .T.); +#1390 = ORIENTED_EDGE('NONE', *, *, #984, .T.); +#1391 = ORIENTED_EDGE('NONE', *, *, #989, .T.); +#1392 = ORIENTED_EDGE('NONE', *, *, #968, .F.); +#1393 = EDGE_LOOP('NONE', (#1389, #1390, #1391, #1392)); +#1394 = FACE_BOUND('NONE', #1393, .T.); +#1395 = ADVANCED_FACE('NONE', (#1394), #1126, .T.); +#1396 = ORIENTED_EDGE('NONE', *, *, #990, .T.); +#1397 = ORIENTED_EDGE('NONE', *, *, #970, .T.); +#1398 = ORIENTED_EDGE('NONE', *, *, #991, .T.); +#1399 = ORIENTED_EDGE('NONE', *, *, #986, .T.); +#1400 = EDGE_LOOP('NONE', (#1396, #1397, #1398, #1399)); +#1401 = FACE_BOUND('NONE', #1400, .T.); +#1402 = ADVANCED_FACE('NONE', (#1401), #1130, .T.); +#1403 = ORIENTED_EDGE('NONE', *, *, #971, .T.); +#1404 = ORIENTED_EDGE('NONE', *, *, #972, .T.); +#1405 = ORIENTED_EDGE('NONE', *, *, #973, .F.); +#1406 = ORIENTED_EDGE('NONE', *, *, #970, .F.); +#1407 = EDGE_LOOP('NONE', (#1403, #1404, #1405, #1406)); +#1408 = FACE_BOUND('NONE', #1407, .T.); +#1409 = ADVANCED_FACE('NONE', (#1408), #1134, .T.); +#1410 = ORIENTED_EDGE('NONE', *, *, #974, .T.); +#1411 = ORIENTED_EDGE('NONE', *, *, #965, .T.); +#1412 = ORIENTED_EDGE('NONE', *, *, #975, .F.); +#1413 = ORIENTED_EDGE('NONE', *, *, #972, .F.); +#1414 = EDGE_LOOP('NONE', (#1410, #1411, #1412, #1413)); +#1415 = FACE_BOUND('NONE', #1414, .T.); +#1416 = ADVANCED_FACE('NONE', (#1415), #1138, .T.); +#1417 = ORIENTED_EDGE('NONE', *, *, #974, .F.); +#1418 = ORIENTED_EDGE('NONE', *, *, #971, .F.); +#1419 = ORIENTED_EDGE('NONE', *, *, #990, .F.); +#1420 = ORIENTED_EDGE('NONE', *, *, #987, .T.); +#1421 = ORIENTED_EDGE('NONE', *, *, #988, .F.); +#1422 = ORIENTED_EDGE('NONE', *, *, #967, .F.); +#1423 = ORIENTED_EDGE('NONE', *, *, #982, .F.); +#1424 = ORIENTED_EDGE('NONE', *, *, #979, .T.); +#1425 = ORIENTED_EDGE('NONE', *, *, #980, .F.); +#1426 = EDGE_LOOP('NONE', (#1417, #1418, #1419, #1420, #1421, #1422, #1423, #1424, #1425)); +#1427 = FACE_BOUND('NONE', #1426, .T.); +#1428 = ADVANCED_FACE('NONE', (#1427), #1142, .F.); +#1429 = ORIENTED_EDGE('NONE', *, *, #981, .F.); +#1430 = ORIENTED_EDGE('NONE', *, *, #977, .T.); +#1431 = ORIENTED_EDGE('NONE', *, *, #983, .F.); +#1432 = ORIENTED_EDGE('NONE', *, *, #969, .T.); +#1433 = ORIENTED_EDGE('NONE', *, *, #989, .F.); +#1434 = ORIENTED_EDGE('NONE', *, *, #985, .T.); +#1435 = ORIENTED_EDGE('NONE', *, *, #991, .F.); +#1436 = ORIENTED_EDGE('NONE', *, *, #973, .T.); +#1437 = ORIENTED_EDGE('NONE', *, *, #975, .T.); +#1438 = EDGE_LOOP('NONE', (#1429, #1430, #1431, #1432, #1433, #1434, #1435, #1436, #1437)); +#1439 = FACE_BOUND('NONE', #1438, .T.); +#1440 = ADVANCED_FACE('NONE', (#1439), #1146, .T.); +#1441 = ORIENTED_EDGE('NONE', *, *, #979, .F.); +#1442 = ORIENTED_EDGE('NONE', *, *, #978, .F.); +#1443 = ORIENTED_EDGE('NONE', *, *, #977, .F.); +#1444 = ORIENTED_EDGE('NONE', *, *, #976, .F.); +#1445 = EDGE_LOOP('NONE', (#1441, #1442, #1443, #1444)); +#1446 = FACE_BOUND('NONE', #1445, .T.); +#1447 = ADVANCED_FACE('NONE', (#1446), #1151, .F.); +#1448 = ORIENTED_EDGE('NONE', *, *, #987, .F.); +#1449 = ORIENTED_EDGE('NONE', *, *, #986, .F.); +#1450 = ORIENTED_EDGE('NONE', *, *, #985, .F.); +#1451 = ORIENTED_EDGE('NONE', *, *, #984, .F.); +#1452 = EDGE_LOOP('NONE', (#1448, #1449, #1450, #1451)); +#1453 = FACE_BOUND('NONE', #1452, .T.); +#1454 = ADVANCED_FACE('NONE', (#1453), #1156, .T.); +#1455 = ORIENTED_EDGE('NONE', *, *, #1045, .T.); +#1456 = ORIENTED_EDGE('NONE', *, *, #1041, .T.); +#1457 = ORIENTED_EDGE('NONE', *, *, #1046, .T.); +#1458 = ORIENTED_EDGE('NONE', *, *, #992, .F.); +#1459 = EDGE_LOOP('NONE', (#1455, #1456, #1457, #1458)); +#1460 = FACE_BOUND('NONE', #1459, .T.); +#1461 = ADVANCED_FACE('NONE', (#1460), #1160, .T.); +#1462 = ORIENTED_EDGE('NONE', *, *, #1047, .T.); +#1463 = ORIENTED_EDGE('NONE', *, *, #1035, .T.); +#1464 = ORIENTED_EDGE('NONE', *, *, #1048, .T.); +#1465 = ORIENTED_EDGE('NONE', *, *, #1043, .T.); +#1466 = EDGE_LOOP('NONE', (#1462, #1463, #1464, #1465)); +#1467 = FACE_BOUND('NONE', #1466, .T.); +#1468 = ADVANCED_FACE('NONE', (#1467), #1164, .T.); +#1469 = ORIENTED_EDGE('NONE', *, *, #1039, .T.); +#1470 = ORIENTED_EDGE('NONE', *, *, #993, .T.); +#1471 = ORIENTED_EDGE('NONE', *, *, #1040, .T.); +#1472 = ORIENTED_EDGE('NONE', *, *, #1037, .T.); +#1473 = EDGE_LOOP('NONE', (#1469, #1470, #1471, #1472)); +#1474 = FACE_BOUND('NONE', #1473, .T.); +#1475 = ADVANCED_FACE('NONE', (#1474), #1168, .T.); +#1476 = ORIENTED_EDGE('NONE', *, *, #994, .T.); +#1477 = ORIENTED_EDGE('NONE', *, *, #995, .T.); +#1478 = ORIENTED_EDGE('NONE', *, *, #996, .F.); +#1479 = ORIENTED_EDGE('NONE', *, *, #993, .F.); +#1480 = EDGE_LOOP('NONE', (#1476, #1477, #1478, #1479)); +#1481 = FACE_BOUND('NONE', #1480, .T.); +#1482 = ADVANCED_FACE('NONE', (#1481), #1173, .T.); +#1483 = ORIENTED_EDGE('NONE', *, *, #997, .T.); +#1484 = ORIENTED_EDGE('NONE', *, *, #992, .T.); +#1485 = ORIENTED_EDGE('NONE', *, *, #998, .F.); +#1486 = ORIENTED_EDGE('NONE', *, *, #995, .F.); +#1487 = EDGE_LOOP('NONE', (#1483, #1484, #1485, #1486)); +#1488 = FACE_BOUND('NONE', #1487, .T.); +#1489 = ADVANCED_FACE('NONE', (#1488), #1177, .T.); +#1490 = ORIENTED_EDGE('NONE', *, *, #999, .T.); +#1491 = ORIENTED_EDGE('NONE', *, *, #1000, .T.); +#1492 = ORIENTED_EDGE('NONE', *, *, #1001, .F.); +#1493 = ORIENTED_EDGE('NONE', *, *, #1002, .F.); +#1494 = EDGE_LOOP('NONE', (#1490, #1491, #1492, #1493)); +#1495 = FACE_BOUND('NONE', #1494, .T.); +#1496 = ADVANCED_FACE('NONE', (#1495), #1182, .F.); +#1497 = ORIENTED_EDGE('NONE', *, *, #1003, .T.); +#1498 = ORIENTED_EDGE('NONE', *, *, #1004, .T.); +#1499 = ORIENTED_EDGE('NONE', *, *, #1005, .F.); +#1500 = ORIENTED_EDGE('NONE', *, *, #1000, .F.); +#1501 = EDGE_LOOP('NONE', (#1497, #1498, #1499, #1500)); +#1502 = FACE_BOUND('NONE', #1501, .T.); +#1503 = ADVANCED_FACE('NONE', (#1502), #1186, .T.); +#1504 = ORIENTED_EDGE('NONE', *, *, #1006, .T.); +#1505 = ORIENTED_EDGE('NONE', *, *, #1007, .T.); +#1506 = ORIENTED_EDGE('NONE', *, *, #1008, .F.); +#1507 = ORIENTED_EDGE('NONE', *, *, #1004, .F.); +#1508 = EDGE_LOOP('NONE', (#1504, #1505, #1506, #1507)); +#1509 = FACE_BOUND('NONE', #1508, .T.); +#1510 = ADVANCED_FACE('NONE', (#1509), #1191, .F.); +#1511 = ORIENTED_EDGE('NONE', *, *, #1009, .T.); +#1512 = ORIENTED_EDGE('NONE', *, *, #1002, .T.); +#1513 = ORIENTED_EDGE('NONE', *, *, #1010, .F.); +#1514 = ORIENTED_EDGE('NONE', *, *, #1007, .F.); +#1515 = EDGE_LOOP('NONE', (#1511, #1512, #1513, #1514)); +#1516 = FACE_BOUND('NONE', #1515, .T.); +#1517 = ADVANCED_FACE('NONE', (#1516), #1195, .T.); +#1518 = ORIENTED_EDGE('NONE', *, *, #1011, .T.); +#1519 = ORIENTED_EDGE('NONE', *, *, #1012, .T.); +#1520 = ORIENTED_EDGE('NONE', *, *, #1013, .F.); +#1521 = ORIENTED_EDGE('NONE', *, *, #1014, .F.); +#1522 = EDGE_LOOP('NONE', (#1518, #1519, #1520, #1521)); +#1523 = FACE_BOUND('NONE', #1522, .T.); +#1524 = ADVANCED_FACE('NONE', (#1523), #1200, .F.); +#1525 = ORIENTED_EDGE('NONE', *, *, #1015, .T.); +#1526 = ORIENTED_EDGE('NONE', *, *, #1016, .T.); +#1527 = ORIENTED_EDGE('NONE', *, *, #1017, .F.); +#1528 = ORIENTED_EDGE('NONE', *, *, #1012, .F.); +#1529 = EDGE_LOOP('NONE', (#1525, #1526, #1527, #1528)); +#1530 = FACE_BOUND('NONE', #1529, .T.); +#1531 = ADVANCED_FACE('NONE', (#1530), #1204, .T.); +#1532 = ORIENTED_EDGE('NONE', *, *, #1018, .T.); +#1533 = ORIENTED_EDGE('NONE', *, *, #1019, .T.); +#1534 = ORIENTED_EDGE('NONE', *, *, #1020, .F.); +#1535 = ORIENTED_EDGE('NONE', *, *, #1016, .F.); +#1536 = EDGE_LOOP('NONE', (#1532, #1533, #1534, #1535)); +#1537 = FACE_BOUND('NONE', #1536, .T.); +#1538 = ADVANCED_FACE('NONE', (#1537), #1209, .F.); +#1539 = ORIENTED_EDGE('NONE', *, *, #1021, .T.); +#1540 = ORIENTED_EDGE('NONE', *, *, #1014, .T.); +#1541 = ORIENTED_EDGE('NONE', *, *, #1022, .F.); +#1542 = ORIENTED_EDGE('NONE', *, *, #1019, .F.); +#1543 = EDGE_LOOP('NONE', (#1539, #1540, #1541, #1542)); +#1544 = FACE_BOUND('NONE', #1543, .T.); +#1545 = ADVANCED_FACE('NONE', (#1544), #1213, .T.); +#1546 = ORIENTED_EDGE('NONE', *, *, #1023, .T.); +#1547 = ORIENTED_EDGE('NONE', *, *, #1024, .T.); +#1548 = ORIENTED_EDGE('NONE', *, *, #1025, .F.); +#1549 = ORIENTED_EDGE('NONE', *, *, #1026, .F.); +#1550 = EDGE_LOOP('NONE', (#1546, #1547, #1548, #1549)); +#1551 = FACE_BOUND('NONE', #1550, .T.); +#1552 = ADVANCED_FACE('NONE', (#1551), #1218, .F.); +#1553 = ORIENTED_EDGE('NONE', *, *, #1027, .T.); +#1554 = ORIENTED_EDGE('NONE', *, *, #1028, .T.); +#1555 = ORIENTED_EDGE('NONE', *, *, #1029, .F.); +#1556 = ORIENTED_EDGE('NONE', *, *, #1024, .F.); +#1557 = EDGE_LOOP('NONE', (#1553, #1554, #1555, #1556)); +#1558 = FACE_BOUND('NONE', #1557, .T.); +#1559 = ADVANCED_FACE('NONE', (#1558), #1222, .T.); +#1560 = ORIENTED_EDGE('NONE', *, *, #1030, .T.); +#1561 = ORIENTED_EDGE('NONE', *, *, #1031, .T.); +#1562 = ORIENTED_EDGE('NONE', *, *, #1032, .F.); +#1563 = ORIENTED_EDGE('NONE', *, *, #1028, .F.); +#1564 = EDGE_LOOP('NONE', (#1560, #1561, #1562, #1563)); +#1565 = FACE_BOUND('NONE', #1564, .T.); +#1566 = ADVANCED_FACE('NONE', (#1565), #1227, .F.); +#1567 = ORIENTED_EDGE('NONE', *, *, #1033, .T.); +#1568 = ORIENTED_EDGE('NONE', *, *, #1026, .T.); +#1569 = ORIENTED_EDGE('NONE', *, *, #1034, .F.); +#1570 = ORIENTED_EDGE('NONE', *, *, #1031, .F.); +#1571 = EDGE_LOOP('NONE', (#1567, #1568, #1569, #1570)); +#1572 = FACE_BOUND('NONE', #1571, .T.); +#1573 = ADVANCED_FACE('NONE', (#1572), #1231, .T.); +#1574 = ORIENTED_EDGE('NONE', *, *, #997, .F.); +#1575 = ORIENTED_EDGE('NONE', *, *, #994, .F.); +#1576 = ORIENTED_EDGE('NONE', *, *, #1039, .F.); +#1577 = ORIENTED_EDGE('NONE', *, *, #1038, .T.); +#1578 = ORIENTED_EDGE('NONE', *, *, #1047, .F.); +#1579 = ORIENTED_EDGE('NONE', *, *, #1044, .T.); +#1580 = ORIENTED_EDGE('NONE', *, *, #1045, .F.); +#1581 = ORIENTED_EDGE('NONE', *, *, #1009, .F.); +#1582 = ORIENTED_EDGE('NONE', *, *, #1006, .F.); +#1583 = ORIENTED_EDGE('NONE', *, *, #1003, .F.); +#1584 = ORIENTED_EDGE('NONE', *, *, #999, .F.); +#1585 = ORIENTED_EDGE('NONE', *, *, #1021, .F.); +#1586 = ORIENTED_EDGE('NONE', *, *, #1018, .F.); +#1587 = ORIENTED_EDGE('NONE', *, *, #1015, .F.); +#1588 = ORIENTED_EDGE('NONE', *, *, #1011, .F.); +#1589 = ORIENTED_EDGE('NONE', *, *, #1033, .F.); +#1590 = ORIENTED_EDGE('NONE', *, *, #1030, .F.); +#1591 = ORIENTED_EDGE('NONE', *, *, #1027, .F.); +#1592 = ORIENTED_EDGE('NONE', *, *, #1023, .F.); +#1593 = EDGE_LOOP('NONE', (#1574, #1575, #1576, #1577, #1578, #1579, #1580)); +#1594 = FACE_BOUND('NONE', #1593, .T.); +#1595 = EDGE_LOOP('NONE', (#1581, #1582, #1583, #1584)); +#1596 = FACE_BOUND('NONE', #1595, .T.); +#1597 = EDGE_LOOP('NONE', (#1585, #1586, #1587, #1588)); +#1598 = FACE_BOUND('NONE', #1597, .T.); +#1599 = EDGE_LOOP('NONE', (#1589, #1590, #1591, #1592)); +#1600 = FACE_BOUND('NONE', #1599, .T.); +#1601 = ADVANCED_FACE('NONE', (#1594, #1596, #1598, #1600), #1235, .F.); +#1602 = ORIENTED_EDGE('NONE', *, *, #1046, .F.); +#1603 = ORIENTED_EDGE('NONE', *, *, #1042, .T.); +#1604 = ORIENTED_EDGE('NONE', *, *, #1048, .F.); +#1605 = ORIENTED_EDGE('NONE', *, *, #1036, .T.); +#1606 = ORIENTED_EDGE('NONE', *, *, #1040, .F.); +#1607 = ORIENTED_EDGE('NONE', *, *, #996, .T.); +#1608 = ORIENTED_EDGE('NONE', *, *, #998, .T.); +#1609 = ORIENTED_EDGE('NONE', *, *, #1001, .T.); +#1610 = ORIENTED_EDGE('NONE', *, *, #1005, .T.); +#1611 = ORIENTED_EDGE('NONE', *, *, #1008, .T.); +#1612 = ORIENTED_EDGE('NONE', *, *, #1010, .T.); +#1613 = ORIENTED_EDGE('NONE', *, *, #1013, .T.); +#1614 = ORIENTED_EDGE('NONE', *, *, #1017, .T.); +#1615 = ORIENTED_EDGE('NONE', *, *, #1020, .T.); +#1616 = ORIENTED_EDGE('NONE', *, *, #1022, .T.); +#1617 = ORIENTED_EDGE('NONE', *, *, #1025, .T.); +#1618 = ORIENTED_EDGE('NONE', *, *, #1029, .T.); +#1619 = ORIENTED_EDGE('NONE', *, *, #1032, .T.); +#1620 = ORIENTED_EDGE('NONE', *, *, #1034, .T.); +#1621 = EDGE_LOOP('NONE', (#1602, #1603, #1604, #1605, #1606, #1607, #1608)); +#1622 = FACE_BOUND('NONE', #1621, .T.); +#1623 = EDGE_LOOP('NONE', (#1609, #1610, #1611, #1612)); +#1624 = FACE_BOUND('NONE', #1623, .T.); +#1625 = EDGE_LOOP('NONE', (#1613, #1614, #1615, #1616)); +#1626 = FACE_BOUND('NONE', #1625, .T.); +#1627 = EDGE_LOOP('NONE', (#1617, #1618, #1619, #1620)); +#1628 = FACE_BOUND('NONE', #1627, .T.); +#1629 = ADVANCED_FACE('NONE', (#1622, #1624, #1626, #1628), #1239, .T.); +#1630 = ORIENTED_EDGE('NONE', *, *, #1038, .F.); +#1631 = ORIENTED_EDGE('NONE', *, *, #1037, .F.); +#1632 = ORIENTED_EDGE('NONE', *, *, #1036, .F.); +#1633 = ORIENTED_EDGE('NONE', *, *, #1035, .F.); +#1634 = EDGE_LOOP('NONE', (#1630, #1631, #1632, #1633)); +#1635 = FACE_BOUND('NONE', #1634, .T.); +#1636 = ADVANCED_FACE('NONE', (#1635), #1244, .T.); +#1637 = ORIENTED_EDGE('NONE', *, *, #1044, .F.); +#1638 = ORIENTED_EDGE('NONE', *, *, #1043, .F.); +#1639 = ORIENTED_EDGE('NONE', *, *, #1042, .F.); +#1640 = ORIENTED_EDGE('NONE', *, *, #1041, .F.); +#1641 = EDGE_LOOP('NONE', (#1637, #1638, #1639, #1640)); +#1642 = FACE_BOUND('NONE', #1641, .T.); +#1643 = ADVANCED_FACE('NONE', (#1642), #1249, .T.); +#1644 = CLOSED_SHELL('NONE', (#1256, #1263, #1276, #1283, #1290, #1297, #1310, #1317, #1328, #1339, #1346, #1353, #1360, #1367)); +#1645 = CLOSED_SHELL('NONE', (#1374, #1381, #1388, #1395, #1402, #1409, #1416, #1428, #1440, #1447, #1454)); +#1646 = CLOSED_SHELL('NONE', (#1461, #1468, #1475, #1482, #1489, #1496, #1503, #1510, #1517, #1524, #1531, #1538, #1545, #1552, #1559, #1566, #1573, #1601, #1629, #1636, #1643)); +#1647 = MANIFOLD_SOLID_BREP('NONE', #1644); +#1648 = MANIFOLD_SOLID_BREP('NONE', #1645); +#1649 = MANIFOLD_SOLID_BREP('NONE', #1646); +#1650 = APPLICATION_CONTEXT('configuration controlled 3D design of mechanical parts and assemblies'); +#1651 = PRODUCT_DEFINITION_CONTEXT('part definition', #1650, 'design'); +#1652 = PRODUCT('UNIDENTIFIED_PRODUCT', 'NONE', $, ()); +#1653 = PRODUCT_DEFINITION_FORMATION('', $, #1652); +#1654 = PRODUCT_DEFINITION('design', $, #1653, #1651); +#1655 = PRODUCT_DEFINITION_SHAPE('NONE', $, #1654); +#1656 = ADVANCED_BREP_SHAPE_REPRESENTATION('NONE', (#1649), #3); +#1657 = SHAPE_DEFINITION_REPRESENTATION(#1655, #1656); +#1658 = PRODUCT('UNIDENTIFIED_PRODUCT', 'NONE', $, ()); +#1659 = PRODUCT_DEFINITION_FORMATION('', $, #1658); +#1660 = PRODUCT_DEFINITION('design', $, #1659, #1651); +#1661 = PRODUCT_DEFINITION_SHAPE('NONE', $, #1660); +#1662 = ADVANCED_BREP_SHAPE_REPRESENTATION('NONE', (#1648), #3); +#1663 = SHAPE_DEFINITION_REPRESENTATION(#1661, #1662); +#1664 = PRODUCT('UNIDENTIFIED_PRODUCT', 'NONE', $, ()); +#1665 = PRODUCT_DEFINITION_FORMATION('', $, #1664); +#1666 = PRODUCT_DEFINITION('design', $, #1665, #1651); +#1667 = PRODUCT_DEFINITION_SHAPE('NONE', $, #1666); +#1668 = ADVANCED_BREP_SHAPE_REPRESENTATION('NONE', (#1647), #3); +#1669 = SHAPE_DEFINITION_REPRESENTATION(#1667, #1668); +ENDSEC; +END-ISO-10303-21; diff --git a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ops.snap b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ops.snap index bcd85acd4..f0c06f3c3 100644 --- a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/ops.snap @@ -5,7 +5,7 @@ description: Operations executed food-service-spatula.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -25,7 +25,7 @@ description: Operations executed food-service-spatula.kcl "name": "slot", "functionSourceRange": [ 462, - 1354, + 1303, 0 ], "unlabeledArg": null, @@ -79,7 +79,7 @@ description: Operations executed food-service-spatula.kcl "name": "slot", "functionSourceRange": [ 462, - 1354, + 1303, 0 ], "unlabeledArg": null, @@ -133,7 +133,7 @@ description: Operations executed food-service-spatula.kcl "name": "slot", "functionSourceRange": [ 462, - 1354, + 1303, 0 ], "unlabeledArg": null, @@ -345,7 +345,13 @@ description: Operations executed food-service-spatula.kcl "type": "Number", "value": -7.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -364,7 +370,7 @@ description: Operations executed food-service-spatula.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -459,190 +465,185 @@ description: Operations executed food-service-spatula.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 208.593833, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 208.593833, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 75.921946, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.34202, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": -0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": -0.939693, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 75.921946, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.939693, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": -0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.34202, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.34202, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": -0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": -0.939693, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.939693, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": -0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.34202, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -688,16 +689,7 @@ description: Operations executed food-service-spatula.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "gripEdgeTop", @@ -709,7 +701,15 @@ description: Operations executed food-service-spatula.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupBegin", @@ -718,7 +718,7 @@ description: Operations executed food-service-spatula.kcl "name": "slot", "functionSourceRange": [ 462, - 1354, + 1303, 0 ], "unlabeledArg": null, diff --git a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/program_memory.snap index b2602d99a..9e9a264ec 100644 --- a/rust/kcl-lib/tests/kcl_samples/food-service-spatula/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/food-service-spatula/program_memory.snap @@ -3,16 +3,6 @@ source: kcl-lib/src/simulation_tests.rs description: Variables in memory after executing food-service-spatula.kcl --- { - "arc000": { - "type": "TagIdentifier", - "type": "TagIdentifier", - "value": "arc000" - }, - "arc001": { - "type": "TagIdentifier", - "type": "TagIdentifier", - "value": "arc001" - }, "backEdge": { "type": "TagIdentifier", "type": "TagIdentifier", @@ -37,9 +27,9 @@ description: Variables in memory after executing food-service-spatula.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1597, - "end": 1606, - "start": 1597, + "commentStart": 1570, + "end": 1579, + "start": 1570, "type": "TagDeclarator", "value": "backEdge" }, @@ -100,9 +90,9 @@ description: Variables in memory after executing food-service-spatula.kcl -30.0 ], "tag": { - "commentStart": 1597, - "end": 1606, - "start": 1597, + "commentStart": 1570, + "end": 1579, + "start": 1570, "type": "TagDeclarator", "value": "backEdge" }, @@ -187,22 +177,34 @@ description: Variables in memory after executing food-service-spatula.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -307,9 +309,9 @@ description: Variables in memory after executing food-service-spatula.kcl -30.0 ], "tag": { - "commentStart": 1597, - "end": 1606, - "start": 1597, + "commentStart": 1570, + "end": 1579, + "start": 1570, "type": "TagDeclarator", "value": "backEdge" }, @@ -394,22 +396,34 @@ description: Variables in memory after executing food-service-spatula.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -446,6 +460,49 @@ description: Variables in memory after executing food-service-spatula.kcl } } }, + "flipperSketch": { + "type": "Plane", + "value": { + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XY", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "units": { + "type": "Mm" + } + } + }, "flipperSlotWidth": { "type": "Number", "value": 10.0, @@ -526,9 +583,9 @@ description: Variables in memory after executing food-service-spatula.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4327, - "end": 4339, - "start": 4327, + "commentStart": 4285, + "end": 4297, + "start": 4285, "type": "TagDeclarator", "value": "gripEdgeTop" }, @@ -688,9 +745,9 @@ description: Variables in memory after executing food-service-spatula.kcl 7.0 ], "tag": { - "commentStart": 4327, - "end": 4339, - "start": 4327, + "commentStart": 4285, + "end": 4297, + "start": 4285, "type": "TagDeclarator", "value": "gripEdgeTop" }, @@ -756,22 +813,34 @@ description: Variables in memory after executing food-service-spatula.kcl "origin": { "x": 208.593833, "y": 0.0, - "z": 75.921946 + "z": 75.921946, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.34202, "y": -0.0, - "z": -0.939693 + "z": -0.939693, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.939693, "y": -0.0, - "z": 0.34202 + "z": 0.34202, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -861,13 +930,7 @@ description: Variables in memory after executing food-service-spatula.kcl 4.0, 200.0 ], - "tag": { - "commentStart": 1098, - "end": 1106, - "start": 1098, - "type": "TagDeclarator", - "value": "line000" - }, + "tag": null, "to": [ 4.0, 210.0 @@ -891,13 +954,7 @@ description: Variables in memory after executing food-service-spatula.kcl 4.0, 210.0 ], - "tag": { - "commentStart": 1170, - "end": 1177, - "start": 1170, - "type": "TagDeclarator", - "value": "arc000" - }, + "tag": null, "to": [ -4.0, 210.0 @@ -916,13 +973,7 @@ description: Variables in memory after executing food-service-spatula.kcl -4.0, 210.0 ], - "tag": { - "commentStart": 1235, - "end": 1243, - "start": 1235, - "type": "TagDeclarator", - "value": "line001" - }, + "tag": null, "to": [ -4.0, 200.0 @@ -946,13 +997,7 @@ description: Variables in memory after executing food-service-spatula.kcl -4.0, 200.0 ], - "tag": { - "commentStart": 1309, - "end": 1316, - "start": 1309, - "type": "TagDeclarator", - "value": "arc001" - }, + "tag": null, "to": [ 4.0, 200.0 @@ -990,17 +1035,26 @@ description: Variables in memory after executing food-service-spatula.kcl "xAxis": { "x": 0.34202, "y": -0.0, - "z": -0.939693 + "z": -0.939693, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.939693, "y": -0.0, - "z": 0.34202 + "z": 0.34202, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1054,9 +1108,9 @@ description: Variables in memory after executing food-service-spatula.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4327, - "end": 4339, - "start": 4327, + "commentStart": 4285, + "end": 4297, + "start": 4285, "type": "TagDeclarator", "value": "gripEdgeTop" }, @@ -1216,9 +1270,9 @@ description: Variables in memory after executing food-service-spatula.kcl 7.0 ], "tag": { - "commentStart": 4327, - "end": 4339, - "start": 4327, + "commentStart": 4285, + "end": 4297, + "start": 4285, "type": "TagDeclarator", "value": "gripEdgeTop" }, @@ -1284,22 +1338,34 @@ description: Variables in memory after executing food-service-spatula.kcl "origin": { "x": 208.593833, "y": 0.0, - "z": 75.921946 + "z": 75.921946, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.34202, "y": -0.0, - "z": -0.939693 + "z": -0.939693, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.939693, "y": -0.0, - "z": 0.34202 + "z": 0.34202, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1364,24 +1430,6 @@ description: Variables in memory after executing food-service-spatula.kcl "sourceRange": [] } }, - "tags": { - "arc000": { - "type": "TagIdentifier", - "value": "arc000" - }, - "arc001": { - "type": "TagIdentifier", - "value": "arc001" - }, - "line000": { - "type": "TagIdentifier", - "value": "line000" - }, - "line001": { - "type": "TagIdentifier", - "value": "line001" - } - }, "artifactId": "[uuid]", "originalId": "[uuid]", "units": { @@ -1550,9 +1598,9 @@ description: Variables in memory after executing food-service-spatula.kcl 7.0 ], "tag": { - "commentStart": 4327, - "end": 4339, - "start": 4327, + "commentStart": 4285, + "end": 4297, + "start": 4285, "type": "TagDeclarator", "value": "gripEdgeTop" }, @@ -1618,22 +1666,34 @@ description: Variables in memory after executing food-service-spatula.kcl "origin": { "x": 208.593833, "y": 0.0, - "z": 75.921946 + "z": 75.921946, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.34202, "y": -0.0, - "z": -0.939693 + "z": -0.939693, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.939693, "y": -0.0, - "z": 0.34202 + "z": 0.34202, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1670,6 +1730,49 @@ description: Variables in memory after executing food-service-spatula.kcl } } }, + "gripSketch": { + "type": "Plane", + "value": { + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "Custom", + "origin": { + "x": 208.593833, + "y": 0.0, + "z": 75.921946, + "units": { + "type": "Mm" + } + }, + "xAxis": { + "x": 0.34202, + "y": -0.0, + "z": -0.939693, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.939693, + "y": -0.0, + "z": 0.34202, + "units": { + "type": "Mm" + } + }, + "units": { + "type": "Mm" + } + } + }, "gripSlotWidth": { "type": "Number", "value": 8.0, @@ -1708,9 +1811,9 @@ description: Variables in memory after executing food-service-spatula.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2850, - "end": 2867, - "start": 2850, + "commentStart": 2841, + "end": 2858, + "start": 2841, "type": "TagDeclarator", "value": "handleBottomEdge" }, @@ -1735,9 +1838,9 @@ description: Variables in memory after executing food-service-spatula.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2998, - "end": 3012, - "start": 2998, + "commentStart": 2989, + "end": 3003, + "start": 2989, "type": "TagDeclarator", "value": "handleTopEdge" }, @@ -1779,9 +1882,9 @@ description: Variables in memory after executing food-service-spatula.kcl 3.5 ], "tag": { - "commentStart": 2850, - "end": 2867, - "start": 2850, + "commentStart": 2841, + "end": 2858, + "start": 2841, "type": "TagDeclarator", "value": "handleBottomEdge" }, @@ -1842,9 +1945,9 @@ description: Variables in memory after executing food-service-spatula.kcl 91.3213 ], "tag": { - "commentStart": 2998, - "end": 3012, - "start": 2998, + "commentStart": 2989, + "end": 3003, + "start": 2989, "type": "TagDeclarator", "value": "handleTopEdge" }, @@ -1923,22 +2026,34 @@ description: Variables in memory after executing food-service-spatula.kcl "origin": { "x": 0.0, "y": 7.5, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1994,186 +2109,181 @@ description: Variables in memory after executing food-service-spatula.kcl "handlePlane": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 208.5938, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 208.5938, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 75.9219, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.342, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": -0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": -0.9397, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 75.9219, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.9397, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": -0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.342, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.342, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": -0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": -0.9397, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.9397, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": -0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.342, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -2193,9 +2303,9 @@ description: Variables in memory after executing food-service-spatula.kcl 3.5 ], "tag": { - "commentStart": 2850, - "end": 2867, - "start": 2850, + "commentStart": 2841, + "end": 2858, + "start": 2841, "type": "TagDeclarator", "value": "handleBottomEdge" }, @@ -2256,9 +2366,9 @@ description: Variables in memory after executing food-service-spatula.kcl 91.3213 ], "tag": { - "commentStart": 2998, - "end": 3012, - "start": 2998, + "commentStart": 2989, + "end": 3003, + "start": 2989, "type": "TagDeclarator", "value": "handleTopEdge" }, @@ -2337,22 +2447,34 @@ description: Variables in memory after executing food-service-spatula.kcl "origin": { "x": 0.0, "y": 7.5, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2393,6 +2515,49 @@ description: Variables in memory after executing food-service-spatula.kcl } } }, + "handleSketch": { + "type": "Plane", + "value": { + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "Custom", + "origin": { + "x": 0.0, + "y": 7.5, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": -1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "units": { + "type": "Mm" + } + } + }, "handleTopEdge": { "type": "TagIdentifier", "type": "TagIdentifier", @@ -2411,110 +2576,7 @@ description: Variables in memory after executing food-service-spatula.kcl } } }, - "line000": { - "type": "TagIdentifier", - "type": "TagIdentifier", - "value": "line000" - }, - "line001": { - "type": "TagIdentifier", - "type": "TagIdentifier", - "value": "line001" - }, - "sketch000": { - "type": "Plane", - "value": { - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "XY", - "origin": { - "x": 0.0, - "y": 0.0, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 1.0, - "z": 0.0 - }, - "zAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "units": { - "type": "Mm" - } - } - }, - "sketch001": { - "type": "Plane", - "value": { - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "Custom", - "origin": { - "x": 0.0, - "y": 7.5, - "z": 0.0 - }, - "xAxis": { - "x": 1.0, - "y": 0.0, - "z": 0.0 - }, - "yAxis": { - "x": 0.0, - "y": 0.0, - "z": 1.0 - }, - "zAxis": { - "x": 0.0, - "y": -1.0, - "z": 0.0 - }, - "units": { - "type": "Mm" - } - } - }, - "sketch002": { - "type": "Plane", - "value": { - "id": "[uuid]", - "artifactId": "[uuid]", - "value": "Custom", - "origin": { - "x": 208.593833, - "y": 0.0, - "z": 75.921946 - }, - "xAxis": { - "x": 0.34202, - "y": -0.0, - "z": -0.939693 - }, - "yAxis": { - "x": 0.0, - "y": 1.0, - "z": 0.0 - }, - "zAxis": { - "x": 0.939693, - "y": -0.0, - "z": 0.34202 - }, - "units": { - "type": "Mm" - } - } - }, - "sketch003": { + "holeSketch": { "type": "Face", "value": { "id": "[uuid]", @@ -2523,17 +2585,26 @@ description: Variables in memory after executing food-service-spatula.kcl "xAxis": { "x": 0.34202, "y": -0.0, - "z": -0.939693 + "z": -0.939693, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.939693, "y": -0.0, - "z": 0.34202 + "z": 0.34202, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2587,9 +2658,9 @@ description: Variables in memory after executing food-service-spatula.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4327, - "end": 4339, - "start": 4327, + "commentStart": 4285, + "end": 4297, + "start": 4285, "type": "TagDeclarator", "value": "gripEdgeTop" }, @@ -2749,9 +2820,9 @@ description: Variables in memory after executing food-service-spatula.kcl 7.0 ], "tag": { - "commentStart": 4327, - "end": 4339, - "start": 4327, + "commentStart": 4285, + "end": 4297, + "start": 4285, "type": "TagDeclarator", "value": "gripEdgeTop" }, @@ -2817,22 +2888,34 @@ description: Variables in memory after executing food-service-spatula.kcl "origin": { "x": 208.593833, "y": 0.0, - "z": 75.921946 + "z": 75.921946, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.34202, "y": -0.0, - "z": -0.939693 + "z": -0.939693, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.939693, "y": -0.0, - "z": 0.34202 + "z": 0.34202, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2898,13 +2981,7 @@ description: Variables in memory after executing food-service-spatula.kcl -25.0, 5.0 ], - "tag": { - "commentStart": 1098, - "end": 1106, - "start": 1098, - "type": "TagDeclarator", - "value": "line000" - }, + "tag": null, "to": [ -55.0, 5.0 @@ -2928,13 +3005,7 @@ description: Variables in memory after executing food-service-spatula.kcl -55.0, 5.0 ], - "tag": { - "commentStart": 1170, - "end": 1177, - "start": 1170, - "type": "TagDeclarator", - "value": "arc000" - }, + "tag": null, "to": [ -55.0, -5.0 @@ -2953,13 +3024,7 @@ description: Variables in memory after executing food-service-spatula.kcl -55.0, -5.0 ], - "tag": { - "commentStart": 1235, - "end": 1243, - "start": 1235, - "type": "TagDeclarator", - "value": "line001" - }, + "tag": null, "to": [ -25.0, -5.0 @@ -2983,13 +3048,7 @@ description: Variables in memory after executing food-service-spatula.kcl -25.0, -5.0 ], - "tag": { - "commentStart": 1309, - "end": 1316, - "start": 1309, - "type": "TagDeclarator", - "value": "arc001" - }, + "tag": null, "to": [ -25.0, 5.0 @@ -3027,22 +3086,34 @@ description: Variables in memory after executing food-service-spatula.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3066,24 +3137,6 @@ description: Variables in memory after executing food-service-spatula.kcl "sourceRange": [] } }, - "tags": { - "arc000": { - "type": "TagIdentifier", - "value": "arc000" - }, - "arc001": { - "type": "TagIdentifier", - "value": "arc001" - }, - "line000": { - "type": "TagIdentifier", - "value": "line000" - }, - "line001": { - "type": "TagIdentifier", - "value": "line001" - } - }, "artifactId": "[uuid]", "originalId": "[uuid]", "units": { @@ -3106,13 +3159,7 @@ description: Variables in memory after executing food-service-spatula.kcl -24.8334, 22.9972 ], - "tag": { - "commentStart": 1098, - "end": 1106, - "start": 1098, - "type": "TagDeclarator", - "value": "line000" - }, + "tag": null, "to": [ -54.8334, 23.9972 @@ -3136,13 +3183,7 @@ description: Variables in memory after executing food-service-spatula.kcl -54.8334, 23.9972 ], - "tag": { - "commentStart": 1170, - "end": 1177, - "start": 1170, - "type": "TagDeclarator", - "value": "arc000" - }, + "tag": null, "to": [ -55.1666, 14.0028 @@ -3161,13 +3202,7 @@ description: Variables in memory after executing food-service-spatula.kcl -55.1666, 14.0028 ], - "tag": { - "commentStart": 1235, - "end": 1243, - "start": 1235, - "type": "TagDeclarator", - "value": "line001" - }, + "tag": null, "to": [ -25.1666, 13.0028 @@ -3191,13 +3226,7 @@ description: Variables in memory after executing food-service-spatula.kcl -25.1666, 13.0028 ], - "tag": { - "commentStart": 1309, - "end": 1316, - "start": 1309, - "type": "TagDeclarator", - "value": "arc001" - }, + "tag": null, "to": [ -24.8334, 22.9972 @@ -3235,22 +3264,34 @@ description: Variables in memory after executing food-service-spatula.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3274,24 +3315,6 @@ description: Variables in memory after executing food-service-spatula.kcl "sourceRange": [] } }, - "tags": { - "arc000": { - "type": "TagIdentifier", - "value": "arc000" - }, - "arc001": { - "type": "TagIdentifier", - "value": "arc001" - }, - "line000": { - "type": "TagIdentifier", - "value": "line000" - }, - "line001": { - "type": "TagIdentifier", - "value": "line001" - } - }, "artifactId": "[uuid]", "originalId": "[uuid]", "units": { @@ -3314,13 +3337,7 @@ description: Variables in memory after executing food-service-spatula.kcl -25.1666, -13.0028 ], - "tag": { - "commentStart": 1098, - "end": 1106, - "start": 1098, - "type": "TagDeclarator", - "value": "line000" - }, + "tag": null, "to": [ -55.1666, -14.0028 @@ -3344,13 +3361,7 @@ description: Variables in memory after executing food-service-spatula.kcl -55.1666, -14.0028 ], - "tag": { - "commentStart": 1170, - "end": 1177, - "start": 1170, - "type": "TagDeclarator", - "value": "arc000" - }, + "tag": null, "to": [ -54.8334, -23.9972 @@ -3369,13 +3380,7 @@ description: Variables in memory after executing food-service-spatula.kcl -54.8334, -23.9972 ], - "tag": { - "commentStart": 1235, - "end": 1243, - "start": 1235, - "type": "TagDeclarator", - "value": "line001" - }, + "tag": null, "to": [ -24.8334, -22.9972 @@ -3399,13 +3404,7 @@ description: Variables in memory after executing food-service-spatula.kcl -24.8334, -22.9972 ], - "tag": { - "commentStart": 1309, - "end": 1316, - "start": 1309, - "type": "TagDeclarator", - "value": "arc001" - }, + "tag": null, "to": [ -25.1666, -13.0028 @@ -3443,22 +3442,34 @@ description: Variables in memory after executing food-service-spatula.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3482,24 +3493,6 @@ description: Variables in memory after executing food-service-spatula.kcl "sourceRange": [] } }, - "tags": { - "arc000": { - "type": "TagIdentifier", - "value": "arc000" - }, - "arc001": { - "type": "TagIdentifier", - "value": "arc001" - }, - "line000": { - "type": "TagIdentifier", - "value": "line000" - }, - "line001": { - "type": "TagIdentifier", - "value": "line001" - } - }, "artifactId": "[uuid]", "originalId": "[uuid]", "units": { @@ -3542,9 +3535,9 @@ description: Variables in memory after executing food-service-spatula.kcl -30.0 ], "tag": { - "commentStart": 1597, - "end": 1606, - "start": 1597, + "commentStart": 1570, + "end": 1579, + "start": 1570, "type": "TagDeclarator", "value": "backEdge" }, @@ -3629,22 +3622,34 @@ description: Variables in memory after executing food-service-spatula.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/kcl_samples/french-press/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/french-press/artifact_commands.snap index 3182990a1..776e147a1 100644 --- a/rust/kcl-lib/tests/kcl_samples/french-press/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/french-press/artifact_commands.snap @@ -202,7 +202,8 @@ description: Artifact commands french-press.kcl "unit": "degrees", "value": 360.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -721,7 +722,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": 0.75, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1227,7 +1229,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": 0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1420,7 +1423,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1526,7 +1530,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1632,7 +1637,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1918,7 +1924,8 @@ description: Artifact commands french-press.kcl "unit": "degrees", "value": 360.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -2273,7 +2280,8 @@ description: Artifact commands french-press.kcl "unit": "degrees", "value": 360.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -2665,7 +2673,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": 0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2844,7 +2853,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2910,7 +2920,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2976,7 +2987,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3042,7 +3054,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3108,7 +3121,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3174,7 +3188,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3240,7 +3255,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3306,7 +3322,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3465,7 +3482,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3531,7 +3549,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3597,7 +3616,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3663,7 +3683,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3834,7 +3855,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": 7.32, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4120,7 +4142,8 @@ description: Artifact commands french-press.kcl "unit": "degrees", "value": 360.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -4597,7 +4620,8 @@ description: Artifact commands french-press.kcl "type": "extrude", "target": "[uuid]", "distance": -0.65, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/french-press/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/french-press/artifact_graph_flowchart.snap.md index bbae61a28..565fab2e3 100644 --- a/rust/kcl-lib/tests/kcl_samples/french-press/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/french-press/artifact_graph_flowchart.snap.md @@ -2,126 +2,126 @@ flowchart LR subgraph path2 [Path] 2["Path
[265, 309, 0]"] - 3["Segment
[315, 361, 0]"] - 4["Segment
[367, 468, 0]"] - 5["Segment
[474, 594, 0]"] - 6["Segment
[600, 656, 0]"] - 7["Segment
[662, 669, 0]"] + 3["Segment
[315, 379, 0]"] + 4["Segment
[385, 483, 0]"] + 5["Segment
[489, 606, 0]"] + 6["Segment
[612, 668, 0]"] + 7["Segment
[674, 681, 0]"] 8[Solid2d] end subgraph path18 [Path] - 18["Path
[983, 1027, 0]"] - 19["Segment
[1033, 1052, 0]"] - 20["Segment
[1058, 1092, 0]"] - 21["Segment
[1098, 1182, 0]"] - 22["Segment
[1188, 1240, 0]"] - 23["Segment
[1246, 1330, 0]"] - 24["Segment
[1336, 1388, 0]"] - 25["Segment
[1394, 1476, 0]"] - 26["Segment
[1482, 1522, 0]"] - 27["Segment
[1528, 1547, 0]"] - 28["Segment
[1553, 1606, 0]"] - 29["Segment
[1612, 1694, 0]"] - 30["Segment
[1700, 1790, 0]"] - 31["Segment
[1796, 1880, 0]"] - 32["Segment
[1886, 1976, 0]"] - 33["Segment
[1982, 2066, 0]"] - 34["Segment
[2072, 2128, 0]"] - 35["Segment
[2134, 2141, 0]"] + 18["Path
[971, 1015, 0]"] + 19["Segment
[1021, 1040, 0]"] + 20["Segment
[1046, 1080, 0]"] + 21["Segment
[1086, 1170, 0]"] + 22["Segment
[1176, 1227, 0]"] + 23["Segment
[1233, 1317, 0]"] + 24["Segment
[1323, 1381, 0]"] + 25["Segment
[1387, 1469, 0]"] + 26["Segment
[1475, 1515, 0]"] + 27["Segment
[1521, 1540, 0]"] + 28["Segment
[1546, 1599, 0]"] + 29["Segment
[1605, 1687, 0]"] + 30["Segment
[1693, 1763, 0]"] + 31["Segment
[1769, 1853, 0]"] + 32["Segment
[1859, 1929, 0]"] + 33["Segment
[1935, 2019, 0]"] + 34["Segment
[2025, 2081, 0]"] + 35["Segment
[2087, 2094, 0]"] 36[Solid2d] end subgraph path89 [Path] - 89["Path
[2408, 2467, 0]"] - 90["Segment
[2408, 2467, 0]"] + 89["Path
[2361, 2420, 0]"] + 90["Segment
[2361, 2420, 0]"] 91[Solid2d] end subgraph path98 [Path] - 98["Path
[2568, 2598, 0]"] - 99["Segment
[2604, 2623, 0]"] - 100["Segment
[2629, 2712, 0]"] - 101["Segment
[2718, 2774, 0]"] - 102["Segment
[2780, 2787, 0]"] + 98["Path
[2526, 2556, 0]"] + 99["Segment
[2562, 2581, 0]"] + 100["Segment
[2587, 2670, 0]"] + 101["Segment
[2676, 2732, 0]"] + 102["Segment
[2738, 2745, 0]"] 103[Solid2d] end subgraph path117 [Path] - 117["Path
[3025, 3056, 0]"] - 118["Segment
[3062, 3107, 0]"] - 119["Segment
[3113, 3203, 0]"] - 120["Segment
[3209, 3255, 0]"] - 121["Segment
[3261, 3314, 0]"] - 122["Segment
[3320, 3345, 0]"] - 123["Segment
[3351, 3407, 0]"] - 124["Segment
[3413, 3420, 0]"] + 117["Path
[2983, 3014, 0]"] + 118["Segment
[3020, 3065, 0]"] + 119["Segment
[3071, 3148, 0]"] + 120["Segment
[3154, 3193, 0]"] + 121["Segment
[3199, 3245, 0]"] + 122["Segment
[3251, 3276, 0]"] + 123["Segment
[3282, 3338, 0]"] + 124["Segment
[3344, 3351, 0]"] 125[Solid2d] end subgraph path140 [Path] - 140["Path
[3500, 3527, 0]"] - 141["Segment
[3533, 3553, 0]"] - 142["Segment
[3559, 3602, 0]"] - 143["Segment
[3608, 3626, 0]"] - 144["Segment
[3632, 3652, 0]"] - 145["Segment
[3658, 3678, 0]"] - 146["Segment
[3684, 3732, 0]"] - 147["Segment
[3738, 3794, 0]"] - 148["Segment
[3800, 3807, 0]"] + 140["Path
[3431, 3458, 0]"] + 141["Segment
[3464, 3484, 0]"] + 142["Segment
[3490, 3533, 0]"] + 143["Segment
[3539, 3557, 0]"] + 144["Segment
[3563, 3583, 0]"] + 145["Segment
[3589, 3609, 0]"] + 146["Segment
[3615, 3655, 0]"] + 147["Segment
[3661, 3717, 0]"] + 148["Segment
[3723, 3730, 0]"] 149[Solid2d] end subgraph path166 [Path] - 166["Path
[3911, 3970, 0]"] - 167["Segment
[3911, 3970, 0]"] + 166["Path
[3834, 3893, 0]"] + 167["Segment
[3834, 3893, 0]"] 168[Solid2d] end subgraph path169 [Path] - 169["Path
[3981, 4018, 0]"] - 170["Segment
[3981, 4018, 0]"] + 169["Path
[3904, 3941, 0]"] + 170["Segment
[3904, 3941, 0]"] 171[Solid2d] end subgraph path178 [Path] - 178["Path
[4160, 4198, 0]"] - 179["Segment
[4160, 4198, 0]"] + 178["Path
[4088, 4126, 0]"] + 179["Segment
[4088, 4126, 0]"] 180[Solid2d] end subgraph path192 [Path] - 192["Path
[4471, 4509, 0]"] - 193["Segment
[4471, 4509, 0]"] + 192["Path
[4404, 4442, 0]"] + 193["Segment
[4404, 4442, 0]"] 194[Solid2d] end subgraph path203 [Path] - 203["Path
[4761, 4813, 0]"] - 204["Segment
[4761, 4813, 0]"] + 203["Path
[4694, 4746, 0]"] + 204["Segment
[4694, 4746, 0]"] 205[Solid2d] end subgraph path213 [Path] - 213["Path
[5060, 5104, 0]"] - 214["Segment
[5110, 5150, 0]"] - 215["Segment
[5156, 5175, 0]"] - 216["Segment
[5181, 5200, 0]"] - 217["Segment
[5206, 5225, 0]"] - 218["Segment
[5231, 5256, 0]"] - 219["Segment
[5262, 5402, 0]"] - 220["Segment
[5408, 5464, 0]"] - 221["Segment
[5470, 5477, 0]"] + 213["Path
[4991, 5035, 0]"] + 214["Segment
[5041, 5081, 0]"] + 215["Segment
[5087, 5106, 0]"] + 216["Segment
[5112, 5131, 0]"] + 217["Segment
[5137, 5156, 0]"] + 218["Segment
[5162, 5187, 0]"] + 219["Segment
[5193, 5333, 0]"] + 220["Segment
[5339, 5395, 0]"] + 221["Segment
[5401, 5408, 0]"] 222[Solid2d] end subgraph path239 [Path] - 239["Path
[5607, 5636, 0]"] - 240["Segment
[5642, 5663, 0]"] - 241["Segment
[5669, 5700, 0]"] - 242["Segment
[5706, 5737, 0]"] - 243["Segment
[5743, 5775, 0]"] - 244["Segment
[5781, 5803, 0]"] - 245["Segment
[5809, 5830, 0]"] - 246["Segment
[5836, 5861, 0]"] - 247["Segment
[5867, 5898, 0]"] - 248["Segment
[5904, 5936, 0]"] - 249["Segment
[5942, 5974, 0]"] - 250["Segment
[5980, 6001, 0]"] - 251["Segment
[6007, 6063, 0]"] - 252["Segment
[6069, 6076, 0]"] + 239["Path
[5538, 5567, 0]"] + 240["Segment
[5573, 5594, 0]"] + 241["Segment
[5600, 5640, 0]"] + 242["Segment
[5646, 5686, 0]"] + 243["Segment
[5692, 5733, 0]"] + 244["Segment
[5739, 5761, 0]"] + 245["Segment
[5767, 5788, 0]"] + 246["Segment
[5794, 5819, 0]"] + 247["Segment
[5825, 5865, 0]"] + 248["Segment
[5871, 5912, 0]"] + 249["Segment
[5918, 5959, 0]"] + 250["Segment
[5965, 5986, 0]"] + 251["Segment
[5992, 6048, 0]"] + 252["Segment
[6054, 6061, 0]"] 253[Solid2d] end 1["Plane
[242, 259, 0]"] - 9["Sweep Revolve
[675, 705, 0]"] + 9["Sweep Revolve
[687, 717, 0]"] 10[Wall] 11[Wall] 12[Wall] @@ -129,8 +129,8 @@ flowchart LR 14["SweepEdge Adjacent"] 15["SweepEdge Adjacent"] 16["SweepEdge Adjacent"] - 17["Plane
[954, 977, 0]"] - 37["Sweep Extrusion
[2147, 2169, 0]"] + 17["Plane
[942, 965, 0]"] + 37["Sweep Extrusion
[2100, 2122, 0]"] 38[Wall] 39[Wall] 40[Wall] @@ -181,14 +181,14 @@ flowchart LR 85["SweepEdge Adjacent"] 86["SweepEdge Opposite"] 87["SweepEdge Adjacent"] - 88["Plane
[2374, 2401, 0]"] - 92["Sweep Extrusion
[2482, 2516, 0]"] + 88["Plane
[2327, 2354, 0]"] + 92["Sweep Extrusion
[2435, 2469, 0]"] 93[Wall] 94["Cap Start"] 95["Cap End"] 96["SweepEdge Opposite"] 97["SweepEdge Adjacent"] - 104["Sweep Extrusion
[2936, 2971, 0]"] + 104["Sweep Extrusion
[2894, 2929, 0]"] 105[Wall] 106[Wall] 107[Wall] @@ -198,10 +198,10 @@ flowchart LR 111["SweepEdge Adjacent"] 112["SweepEdge Opposite"] 113["SweepEdge Adjacent"] - 114["Sweep Extrusion
[2936, 2971, 0]"] - 115["Sweep Extrusion
[2936, 2971, 0]"] - 116["Plane
[3002, 3019, 0]"] - 126["Sweep Revolve
[3426, 3443, 0]"] + 114["Sweep Extrusion
[2894, 2929, 0]"] + 115["Sweep Extrusion
[2894, 2929, 0]"] + 116["Plane
[2960, 2977, 0]"] + 126["Sweep Revolve
[3357, 3374, 0]"] 127[Wall] 128[Wall] 129[Wall] @@ -214,8 +214,8 @@ flowchart LR 136["SweepEdge Adjacent"] 137["SweepEdge Adjacent"] 138["SweepEdge Adjacent"] - 139["Plane
[3477, 3494, 0]"] - 150["Sweep Revolve
[3813, 3830, 0]"] + 139["Plane
[3408, 3425, 0]"] + 150["Sweep Revolve
[3736, 3753, 0]"] 151[Wall] 152[Wall] 153[Wall] @@ -230,40 +230,40 @@ flowchart LR 162["SweepEdge Adjacent"] 163["SweepEdge Adjacent"] 164["SweepEdge Adjacent"] - 165["Plane
[3874, 3904, 0]"] - 172["Sweep Extrusion
[4037, 4071, 0]"] + 165["Plane
[3797, 3827, 0]"] + 172["Sweep Extrusion
[3960, 3994, 0]"] 173[Wall] 174["Cap Start"] 175["Cap End"] 176["SweepEdge Opposite"] 177["SweepEdge Adjacent"] - 181["Sweep Extrusion
[4347, 4382, 0]"] + 181["Sweep Extrusion
[4275, 4310, 0]"] 182[Wall] 183["SweepEdge Opposite"] 184["SweepEdge Adjacent"] - 185["Sweep Extrusion
[4347, 4382, 0]"] - 186["Sweep Extrusion
[4347, 4382, 0]"] - 187["Sweep Extrusion
[4347, 4382, 0]"] - 188["Sweep Extrusion
[4347, 4382, 0]"] - 189["Sweep Extrusion
[4347, 4382, 0]"] - 190["Sweep Extrusion
[4347, 4382, 0]"] - 191["Sweep Extrusion
[4347, 4382, 0]"] - 195["Sweep Extrusion
[4658, 4693, 0]"] + 185["Sweep Extrusion
[4275, 4310, 0]"] + 186["Sweep Extrusion
[4275, 4310, 0]"] + 187["Sweep Extrusion
[4275, 4310, 0]"] + 188["Sweep Extrusion
[4275, 4310, 0]"] + 189["Sweep Extrusion
[4275, 4310, 0]"] + 190["Sweep Extrusion
[4275, 4310, 0]"] + 191["Sweep Extrusion
[4275, 4310, 0]"] + 195["Sweep Extrusion
[4591, 4626, 0]"] 196[Wall] 197["SweepEdge Opposite"] 198["SweepEdge Adjacent"] - 199["Sweep Extrusion
[4658, 4693, 0]"] - 200["Sweep Extrusion
[4658, 4693, 0]"] - 201["Sweep Extrusion
[4658, 4693, 0]"] - 202["Plane
[4738, 4755, 0]"] - 206["Sweep Extrusion
[4909, 4950, 0]"] + 199["Sweep Extrusion
[4591, 4626, 0]"] + 200["Sweep Extrusion
[4591, 4626, 0]"] + 201["Sweep Extrusion
[4591, 4626, 0]"] + 202["Plane
[4671, 4688, 0]"] + 206["Sweep Extrusion
[4842, 4883, 0]"] 207[Wall] 208["Cap Start"] 209["Cap End"] 210["SweepEdge Opposite"] 211["SweepEdge Adjacent"] - 212["Plane
[5037, 5054, 0]"] - 223["Sweep Revolve
[5483, 5500, 0]"] + 212["Plane
[4968, 4985, 0]"] + 223["Sweep Revolve
[5414, 5431, 0]"] 224[Wall] 225[Wall] 226[Wall] @@ -278,8 +278,8 @@ flowchart LR 235["SweepEdge Adjacent"] 236["SweepEdge Adjacent"] 237["SweepEdge Adjacent"] - 238["Plane
[5555, 5600, 0]"] - 254["Sweep Extrusion
[6090, 6135, 0]"] + 238["Plane
[5486, 5531, 0]"] + 254["Sweep Extrusion
[6075, 6120, 0]"] 255[Wall] 256[Wall] 257[Wall] @@ -318,12 +318,12 @@ flowchart LR 290["SweepEdge Adjacent"] 291["SweepEdge Opposite"] 292["SweepEdge Adjacent"] - 293["StartSketchOnPlane
[2360, 2402, 0]"] - 294["StartSketchOnFace
[2530, 2562, 0]"] - 295["StartSketchOnPlane
[3860, 3905, 0]"] - 296["StartSketchOnFace
[4122, 4154, 0]"] - 297["StartSketchOnFace
[4433, 4465, 0]"] - 298["StartSketchOnPlane
[5541, 5601, 0]"] + 293["StartSketchOnPlane
[2313, 2355, 0]"] + 294["StartSketchOnFace
[2483, 2520, 0]"] + 295["StartSketchOnPlane
[3783, 3828, 0]"] + 296["StartSketchOnFace
[4045, 4082, 0]"] + 297["StartSketchOnFace
[4361, 4398, 0]"] + 298["StartSketchOnPlane
[5472, 5532, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/french-press/ast.snap b/rust/kcl-lib/tests/kcl_samples/french-press/ast.snap index eaa99b093..c19042367 100644 --- a/rust/kcl-lib/tests/kcl_samples/french-press/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/french-press/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing french-press.kcl "Ok": { "body": [ { - "commentStart": 104, + "commentStart": 0, "declaration": { - "commentStart": 127, + "commentStart": 0, "end": 0, "id": { - "commentStart": 127, + "commentStart": 0, "end": 0, "name": "carafeDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 144, + "commentStart": 0, "end": 0, "raw": "4.41", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 149, + "commentStart": 0, "declaration": { - "commentStart": 149, + "commentStart": 0, "end": 0, "id": { - "commentStart": 149, + "commentStart": 0, "end": 0, "name": "carafeHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 164, + "commentStart": 0, "end": 0, "raw": "7.32", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 169, + "commentStart": 0, "declaration": { - "commentStart": 169, + "commentStart": 0, "end": 0, "id": { - "commentStart": 169, + "commentStart": 0, "end": 0, "name": "handleThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 187, + "commentStart": 0, "end": 0, "raw": "0.65", "start": 0, @@ -108,12 +108,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 191, + "commentStart": 0, "declaration": { - "commentStart": 230, + "commentStart": 0, "end": 0, "id": { - "commentStart": 230, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -125,10 +125,10 @@ description: Result of parsing french-press.kcl "arguments": [ { "abs_path": false, - "commentStart": 256, + "commentStart": 0, "end": 0, "name": { - "commentStart": 256, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -142,10 +142,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 242, + "commentStart": 0, "end": 0, "name": { - "commentStart": 242, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -155,7 +155,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 242, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -164,17 +164,17 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 280, + "commentStart": 0, "elements": [ { - "commentStart": 281, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 281, + "commentStart": 0, "end": 0, "name": { - "commentStart": 281, + "commentStart": 0, "end": 0, "name": "carafeDiameter", "start": 0, @@ -187,7 +187,7 @@ description: Result of parsing french-press.kcl }, "operator": "/", "right": { - "commentStart": 298, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -203,7 +203,7 @@ description: Result of parsing french-press.kcl "type": "BinaryExpression" }, { - "commentStart": 301, + "commentStart": 0, "end": 0, "raw": "5.7", "start": 0, @@ -221,7 +221,7 @@ description: Result of parsing french-press.kcl "type": "ArrayExpression" }, { - "commentStart": 307, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -230,10 +230,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 265, + "commentStart": 0, "end": 0, "name": { - "commentStart": 265, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -243,7 +243,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 265, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -252,60 +252,74 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 326, - "elements": [ - { - "commentStart": 327, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 330, - "end": 0, - "raw": "0.1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.1, - "suffix": "None" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 336, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0.1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.1, + "suffix": "None" + } + } }, { - "commentStart": 339, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA001" + } } ], "callee": { "abs_path": false, - "commentStart": 315, + "commentStart": 0, "end": 0, "name": { - "commentStart": 315, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -315,153 +329,35 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 315, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 378, - "elements": [ - { - "commentStart": 387, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 394, - "end": 0, - "name": { - "commentStart": 394, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 387, - "end": 0, - "name": { - "commentStart": 387, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 387, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 418, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "argument": { - "commentStart": 430, - "end": 0, - "raw": "0.75", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.75, - "suffix": "None" - } - }, - "commentStart": 429, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 443, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 446, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentB001" - } - ], - "callee": { - "abs_path": false, - "commentStart": 367, - "end": 0, - "name": { - "commentStart": 367, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 367, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 485, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 501, + "commentStart": 0, "end": 0, "name": { - "commentStart": 501, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA001", "start": 0, @@ -475,10 +371,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 494, + "commentStart": 0, "end": 0, "name": { - "commentStart": 494, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -488,88 +384,85 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 494, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 539, - "end": 0, - "name": { - "commentStart": 539, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 532, - "end": 0, - "name": { - "commentStart": 532, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 532, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 531, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 569, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "0.75", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.75, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } }, { - "commentStart": 572, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentC001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentB001" + } } ], "callee": { "abs_path": false, - "commentStart": 474, + "commentStart": 0, "end": 0, "name": { - "commentStart": 474, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -579,30 +472,182 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 474, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 605, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentC001" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 619, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 634, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -611,10 +656,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 620, + "commentStart": 0, "end": 0, "name": { - "commentStart": 620, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -624,7 +669,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 620, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -633,7 +678,7 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 652, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -642,10 +687,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 638, + "commentStart": 0, "end": 0, "name": { - "commentStart": 638, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -655,7 +700,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 638, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -671,10 +716,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 600, + "commentStart": 0, "end": 0, "name": { - "commentStart": 600, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -684,7 +729,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 600, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -695,10 +740,10 @@ description: Result of parsing french-press.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 662, + "commentStart": 0, "end": 0, "name": { - "commentStart": 662, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -708,7 +753,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 662, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -719,14 +764,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 683, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 691, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -741,7 +786,7 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 696, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -749,10 +794,10 @@ description: Result of parsing french-press.kcl }, "arg": { "abs_path": false, - "commentStart": 703, + "commentStart": 0, "end": 0, "name": { - "commentStart": 703, + "commentStart": 0, "end": 0, "name": "Y", "start": 0, @@ -767,10 +812,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 675, + "commentStart": 0, "end": 0, "name": { - "commentStart": 675, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -780,7 +825,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 675, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -788,13 +833,13 @@ description: Result of parsing french-press.kcl "unlabeled": null } ], - "commentStart": 242, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "7": [ { - "commentStart": 705, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -827,281 +872,259 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 756, + "commentStart": 0, "declaration": { - "commentStart": 756, + "commentStart": 0, "end": 0, "id": { - "commentStart": 756, + "commentStart": 0, "end": 0, "name": "plane001", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 767, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 771, + "commentStart": 0, "end": 0, "key": { - "commentStart": 771, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 779, - "end": 0, - "properties": [ + "commentStart": 0, + "elements": [ { - "commentStart": 785, - "end": 0, - "key": { - "commentStart": 785, + "argument": { + "commentStart": 0, "end": 0, - "name": "origin", + "raw": "0.26", "start": 0, - "type": "Identifier" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.26, + "suffix": "None" + } }, + "commentStart": 0, + "end": 0, + "operator": "-", "start": 0, - "type": "ObjectProperty", + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.26", + "start": 0, + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 794, - "elements": [ - { - "argument": { - "commentStart": 796, - "end": 0, - "raw": "0.26", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.26, - "suffix": "None" - } - }, - "commentStart": 795, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - { - "commentStart": 802, - "end": 0, - "raw": "0.26", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.26, - "suffix": "None" - } - }, - { - "commentStart": 808, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.26, + "suffix": "None" } }, { - "commentStart": 818, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 818, - "end": 0, - "name": "xAxis", - "start": 0, - "type": "Identifier" - }, + "raw": "0.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 826, - "elements": [ - { - "commentStart": 827, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 830, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 833, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - }, - { - "commentStart": 843, - "end": 0, - "key": { - "commentStart": 843, - "end": 0, - "name": "yAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 851, - "elements": [ - { - "commentStart": 852, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 857, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 862, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - }, - { - "commentStart": 872, - "end": 0, - "key": { - "commentStart": 872, - "end": 0, - "name": "zAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 880, - "elements": [ - { - "commentStart": 881, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 886, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 891, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.0, + "suffix": "None" } } ], + "end": 0, "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "xAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" } } ], @@ -1119,12 +1142,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 901, + "commentStart": 0, "declaration": { - "commentStart": 942, + "commentStart": 0, "end": 0, "id": { - "commentStart": 942, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -1136,10 +1159,10 @@ description: Result of parsing french-press.kcl "arguments": [ { "abs_path": false, - "commentStart": 968, + "commentStart": 0, "end": 0, "name": { - "commentStart": 968, + "commentStart": 0, "end": 0, "name": "plane001", "start": 0, @@ -1153,10 +1176,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 954, + "commentStart": 0, "end": 0, "name": { - "commentStart": 954, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1166,7 +1189,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 954, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1175,17 +1198,17 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 998, + "commentStart": 0, "elements": [ { - "commentStart": 999, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 999, + "commentStart": 0, "end": 0, "name": { - "commentStart": 999, + "commentStart": 0, "end": 0, "name": "carafeDiameter", "start": 0, @@ -1198,7 +1221,7 @@ description: Result of parsing french-press.kcl }, "operator": "/", "right": { - "commentStart": 1016, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1214,7 +1237,7 @@ description: Result of parsing french-press.kcl "type": "BinaryExpression" }, { - "commentStart": 1019, + "commentStart": 0, "end": 0, "raw": "5.7", "start": 0, @@ -1232,7 +1255,7 @@ description: Result of parsing french-press.kcl "type": "ArrayExpression" }, { - "commentStart": 1025, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1241,10 +1264,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 983, + "commentStart": 0, "end": 0, "name": { - "commentStart": 983, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1254,7 +1277,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 983, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1265,14 +1288,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 1039, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1048, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -1287,10 +1310,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 1033, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1033, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1300,7 +1323,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1033, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1312,7 +1335,7 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 1064, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1320,7 +1343,7 @@ description: Result of parsing french-press.kcl }, "arg": { "argument": { - "commentStart": 1074, + "commentStart": 0, "end": 0, "raw": "5.2", "start": 0, @@ -1331,7 +1354,7 @@ description: Result of parsing french-press.kcl "suffix": "None" } }, - "commentStart": 1073, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1342,14 +1365,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 1079, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1085, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1360,10 +1383,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 1058, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1058, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1373,7 +1396,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1058, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1383,14 +1406,14 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 1102, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1111, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1111, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -1399,7 +1422,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1124, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -1412,10 +1435,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 1136, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1136, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -1424,7 +1447,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1147, + "commentStart": 0, "end": 0, "raw": "205", "start": 0, @@ -1437,10 +1460,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 1159, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1159, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -1449,7 +1472,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1168, + "commentStart": 0, "end": 0, "raw": "0.3", "start": 0, @@ -1467,7 +1490,7 @@ description: Result of parsing french-press.kcl "type": "ObjectExpression" }, { - "commentStart": 1180, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1476,10 +1499,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 1098, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1098, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -1489,7 +1512,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1098, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1498,94 +1521,82 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 1199, - "end": 0, - "properties": [ - { - "commentStart": 1201, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1201, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "60", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "argument": { - "commentStart": 1210, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - }, - "commentStart": 1209, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "value": 60.0, + "suffix": "None" } }, - { - "commentStart": 1214, - "end": 0, - "key": { - "commentStart": 1214, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1223, - "end": 0, - "raw": "0.6", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.6, - "suffix": "None" - } - } + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0.6", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.6, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 1230, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1233, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "edge2" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "edge2" + } } ], "callee": { "abs_path": false, - "commentStart": 1188, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1188, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -1595,23 +1606,24 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1188, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1250, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1259, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1259, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -1620,7 +1632,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1272, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -1633,10 +1645,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 1283, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1283, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -1646,7 +1658,7 @@ description: Result of parsing french-press.kcl "type": "ObjectProperty", "value": { "argument": { - "commentStart": 1295, + "commentStart": 0, "end": 0, "raw": "120", "start": 0, @@ -1657,7 +1669,7 @@ description: Result of parsing french-press.kcl "suffix": "None" } }, - "commentStart": 1294, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1666,10 +1678,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 1307, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1307, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -1678,7 +1690,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1316, + "commentStart": 0, "end": 0, "raw": "0.6", "start": 0, @@ -1696,7 +1708,7 @@ description: Result of parsing french-press.kcl "type": "ObjectExpression" }, { - "commentStart": 1328, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1705,10 +1717,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 1246, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1246, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -1718,7 +1730,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1246, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1727,96 +1739,84 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 1350, - "end": 0, - "properties": [ - { - "commentStart": 1352, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "150", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 150.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1352, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "0.2", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1360, - "end": 0, - "raw": "150", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 150.0, - "suffix": "None" - } + "value": 0.2, + "suffix": "None" } }, - { - "commentStart": 1365, - "end": 0, - "key": { - "commentStart": 1365, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 1371, - "end": 0, - "raw": "0.2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.2, - "suffix": "None" - } - }, - "commentStart": 1370, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } }, { - "commentStart": 1378, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1381, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "edge3" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "edge3" + } } ], "callee": { "abs_path": false, - "commentStart": 1336, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1336, + "commentStart": 0, "end": 0, - "name": "angledLineToY", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -1824,23 +1824,24 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1336, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1398, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1407, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1407, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -1849,7 +1850,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1420, + "commentStart": 0, "end": 0, "raw": "60", "start": 0, @@ -1862,10 +1863,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 1431, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1431, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -1874,7 +1875,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1442, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1887,10 +1888,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 1453, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1453, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -1899,7 +1900,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1462, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -1917,7 +1918,7 @@ description: Result of parsing french-press.kcl "type": "ObjectExpression" }, { - "commentStart": 1474, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1926,10 +1927,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 1394, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1394, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -1939,7 +1940,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1394, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1950,14 +1951,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 1488, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1502, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -1972,14 +1973,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 1507, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1513, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1990,10 +1991,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 1482, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1482, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2003,7 +2004,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1482, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2015,14 +2016,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 1534, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1543, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -2037,10 +2038,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 1528, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1528, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2050,7 +2051,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1528, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2062,23 +2063,23 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 1559, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1568, + "commentStart": 0, "end": 0, "left": { "arguments": [ { "abs_path": false, - "commentStart": 1575, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1575, + "commentStart": 0, "end": 0, "name": "edgeLen", "start": 0, @@ -2092,10 +2093,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 1568, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1568, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -2105,7 +2106,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1568, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2113,7 +2114,7 @@ description: Result of parsing french-press.kcl }, "operator": "+", "right": { - "commentStart": 1586, + "commentStart": 0, "end": 0, "raw": "0.035", "start": 0, @@ -2132,14 +2133,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 1593, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1599, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2150,10 +2151,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 1553, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1553, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2163,7 +2164,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1553, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2173,14 +2174,14 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 1616, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1625, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1625, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -2189,7 +2190,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1638, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -2202,10 +2203,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 1649, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1649, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -2214,7 +2215,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1660, + "commentStart": 0, "end": 0, "raw": "60", "start": 0, @@ -2227,10 +2228,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 1671, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1671, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2239,7 +2240,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1680, + "commentStart": 0, "end": 0, "raw": "0.6", "start": 0, @@ -2257,7 +2258,7 @@ description: Result of parsing french-press.kcl "type": "ObjectExpression" }, { - "commentStart": 1692, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2266,10 +2267,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 1612, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1612, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -2279,7 +2280,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1612, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2288,142 +2289,130 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 1711, - "end": 0, - "properties": [ - { - "commentStart": 1720, - "end": 0, - "key": { - "commentStart": 1720, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "150", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 150.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "edge3", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, "end": 0, - "name": "angle", "start": 0, - "type": "Identifier" + "type": "CallExpression", + "type": "CallExpression" }, + "commentStart": 0, + "end": 0, + "operator": "-", "start": 0, - "type": "ObjectProperty", + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "raw": "0.035", + "start": 0, + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1728, - "end": 0, - "raw": "150", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 150.0, - "suffix": "None" - } + "value": 0.035, + "suffix": "None" } }, - { - "commentStart": 1740, - "end": 0, - "key": { - "commentStart": 1740, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1749, - "end": 0, - "left": { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 1757, - "end": 0, - "name": { - "commentStart": 1757, - "end": 0, - "name": "edge3", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1750, - "end": 0, - "name": { - "commentStart": 1750, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1750, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 1749, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - "operator": "+", - "right": { - "commentStart": 1766, - "end": 0, - "raw": "0.035", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.035, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 1780, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1783, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "edge5" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "edge5" + } } ], "callee": { "abs_path": false, - "commentStart": 1700, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1700, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -2433,23 +2422,24 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1700, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1800, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1809, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1809, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -2459,7 +2449,7 @@ description: Result of parsing french-press.kcl "type": "ObjectProperty", "value": { "argument": { - "commentStart": 1823, + "commentStart": 0, "end": 0, "raw": "120", "start": 0, @@ -2470,7 +2460,7 @@ description: Result of parsing french-press.kcl "suffix": "None" } }, - "commentStart": 1822, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2479,10 +2469,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 1835, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1835, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -2491,7 +2481,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1846, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -2504,10 +2494,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 1857, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1857, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2516,7 +2506,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1866, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -2534,7 +2524,7 @@ description: Result of parsing french-press.kcl "type": "ObjectExpression" }, { - "commentStart": 1878, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2543,10 +2533,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 1796, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1796, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -2556,7 +2546,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1796, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2565,150 +2555,138 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 1897, - "end": 0, - "properties": [ - { - "commentStart": 1906, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1906, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "60", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "argument": { - "commentStart": 1915, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - }, - "commentStart": 1914, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "value": 60.0, + "suffix": "None" } }, - { - "commentStart": 1926, - "end": 0, - "key": { - "commentStart": 1926, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1935, - "end": 0, - "left": { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 1943, - "end": 0, - "name": { - "commentStart": 1943, - "end": 0, - "name": "edge2", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1936, - "end": 0, - "name": { - "commentStart": 1936, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1936, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "edge2", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 1935, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - "operator": "+", - "right": { - "commentStart": 1952, - "end": 0, - "raw": "0.035", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.035, - "suffix": "None" + "type": "Name", + "type": "Name" } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" }, + "commentStart": 0, + "end": 0, "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "raw": "0.035", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.035, + "suffix": "None" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 1966, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1969, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "edge6" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "edge6" + } } ], "callee": { "abs_path": false, - "commentStart": 1886, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1886, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -2718,23 +2696,24 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1886, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1986, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1995, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1995, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -2743,7 +2722,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2008, + "commentStart": 0, "end": 0, "raw": "205", "start": 0, @@ -2756,10 +2735,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 2020, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2020, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -2768,7 +2747,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2031, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -2781,10 +2760,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 2043, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2043, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2793,7 +2772,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2052, + "commentStart": 0, "end": 0, "raw": "0.6", "start": 0, @@ -2811,7 +2790,7 @@ description: Result of parsing french-press.kcl "type": "ObjectExpression" }, { - "commentStart": 2064, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2820,10 +2799,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 1982, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1982, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -2833,7 +2812,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 1982, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2844,19 +2823,19 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2077, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2091, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 2106, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2865,10 +2844,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2092, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2092, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -2878,7 +2857,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2092, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2887,7 +2866,7 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 2124, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2896,10 +2875,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2110, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2110, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -2909,7 +2888,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2110, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2925,10 +2904,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2072, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2072, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2938,7 +2917,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2072, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2949,10 +2928,10 @@ description: Result of parsing french-press.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2134, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2134, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2962,7 +2941,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2134, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2973,14 +2952,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2155, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2164, + "commentStart": 0, "end": 0, "raw": "0.75", "start": 0, @@ -2995,10 +2974,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2147, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2147, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3008,7 +2987,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2147, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3020,17 +2999,17 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2201, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2208, + "commentStart": 0, "elements": [ { - "commentStart": 2209, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3042,7 +3021,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 2212, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3054,7 +3033,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 2215, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3075,17 +3054,17 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2226, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2235, + "commentStart": 0, "elements": [ { - "commentStart": 2236, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3097,7 +3076,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 2239, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3109,7 +3088,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 2242, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3130,14 +3109,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2253, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2265, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -3152,14 +3131,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2275, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2288, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -3174,14 +3153,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2300, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2319, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -3193,10 +3172,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2175, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2175, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -3206,7 +3185,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2175, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3214,13 +3193,13 @@ description: Result of parsing french-press.kcl "unlabeled": null } ], - "commentStart": 954, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "20": [ { - "commentStart": 2331, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3253,12 +3232,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 2348, + "commentStart": 0, "declaration": { - "commentStart": 2348, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2348, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -3273,14 +3252,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2390, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2399, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3295,10 +3274,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2374, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2374, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -3308,17 +3287,17 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2374, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2386, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2386, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -3333,10 +3312,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2360, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2360, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -3346,7 +3325,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2360, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3357,17 +3336,17 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2415, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2424, + "commentStart": 0, "elements": [ { - "commentStart": 2425, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3379,7 +3358,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 2428, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3400,24 +3379,24 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2432, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2441, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2441, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2441, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2441, + "commentStart": 0, "end": 0, "name": "carafeDiameter", "start": 0, @@ -3430,7 +3409,7 @@ description: Result of parsing french-press.kcl }, "operator": "/", "right": { - "commentStart": 2458, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3447,7 +3426,7 @@ description: Result of parsing french-press.kcl }, "operator": "-", "right": { - "commentStart": 2462, + "commentStart": 0, "end": 0, "raw": "0.15", "start": 0, @@ -3466,10 +3445,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2408, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2408, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -3479,7 +3458,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2408, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3487,7 +3466,7 @@ description: Result of parsing french-press.kcl "unlabeled": null } ], - "commentStart": 2360, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -3503,12 +3482,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 2467, + "commentStart": 0, "declaration": { - "commentStart": 2469, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2469, + "commentStart": 0, "end": 0, "name": "extrude001", "start": 0, @@ -3519,14 +3498,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2501, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2510, + "commentStart": 0, "end": 0, "raw": "0.050", "start": 0, @@ -3541,10 +3520,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2482, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2482, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3554,17 +3533,17 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2482, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2490, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2490, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -3586,12 +3565,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 2516, + "commentStart": 0, "declaration": { - "commentStart": 2518, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2518, + "commentStart": 0, "end": 0, "name": "sketch004", "start": 0, @@ -3602,37 +3581,38 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 2544, - "end": 0, - "name": { - "commentStart": 2544, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 2556, - "end": 0, - "raw": "'END'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 2530, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2530, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -3642,19 +3622,35 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2530, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 2583, + "commentStart": 0, "elements": [ { - "commentStart": 2584, + "commentStart": 0, "end": 0, "raw": "0.3", "start": 0, @@ -3666,7 +3662,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 2589, + "commentStart": 0, "end": 0, "raw": "0.17", "start": 0, @@ -3684,7 +3680,7 @@ description: Result of parsing french-press.kcl "type": "ArrayExpression" }, { - "commentStart": 2596, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3693,10 +3689,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2568, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2568, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -3706,7 +3702,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2568, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3717,14 +3713,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2610, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2619, + "commentStart": 0, "end": 0, "raw": "1.2", "start": 0, @@ -3739,10 +3735,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2604, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2604, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -3752,7 +3748,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2604, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3762,14 +3758,14 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 2633, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 2642, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2642, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -3778,7 +3774,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2655, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -3791,10 +3787,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 2666, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2666, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -3804,7 +3800,7 @@ description: Result of parsing french-press.kcl "type": "ObjectProperty", "value": { "argument": { - "commentStart": 2678, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -3815,7 +3811,7 @@ description: Result of parsing french-press.kcl "suffix": "None" } }, - "commentStart": 2677, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3824,10 +3820,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 2689, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2689, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -3836,7 +3832,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2698, + "commentStart": 0, "end": 0, "raw": "1.2", "start": 0, @@ -3854,7 +3850,7 @@ description: Result of parsing french-press.kcl "type": "ObjectExpression" }, { - "commentStart": 2710, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3863,10 +3859,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2629, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2629, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -3876,7 +3872,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2629, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3887,19 +3883,19 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2723, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2737, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 2752, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3908,10 +3904,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2738, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2738, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -3921,7 +3917,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2738, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3930,7 +3926,7 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 2770, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3939,10 +3935,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2756, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2756, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -3952,7 +3948,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2756, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3968,10 +3964,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2718, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2718, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3981,7 +3977,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2718, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3992,10 +3988,10 @@ description: Result of parsing french-press.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2780, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2780, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -4005,7 +4001,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2780, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4016,17 +4012,17 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2819, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2828, + "commentStart": 0, "elements": [ { - "commentStart": 2829, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4038,7 +4034,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 2832, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4059,14 +4055,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2843, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2855, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -4081,14 +4077,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2865, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2878, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -4103,14 +4099,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2890, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2909, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -4122,10 +4118,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2793, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2793, + "commentStart": 0, "end": 0, "name": "patternCircular2d", "start": 0, @@ -4135,7 +4131,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2793, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4143,7 +4139,7 @@ description: Result of parsing french-press.kcl "unlabeled": null } ], - "commentStart": 2530, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -4159,12 +4155,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 2921, + "commentStart": 0, "declaration": { - "commentStart": 2923, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2923, + "commentStart": 0, "end": 0, "name": "extrude002", "start": 0, @@ -4175,7 +4171,7 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 2955, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4183,7 +4179,7 @@ description: Result of parsing french-press.kcl }, "arg": { "argument": { - "commentStart": 2965, + "commentStart": 0, "end": 0, "raw": "0.050", "start": 0, @@ -4194,7 +4190,7 @@ description: Result of parsing french-press.kcl "suffix": "None" } }, - "commentStart": 2964, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4205,10 +4201,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 2936, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2936, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -4218,17 +4214,17 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 2936, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2944, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2944, + "commentStart": 0, "end": 0, "name": "sketch004", "start": 0, @@ -4250,12 +4246,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 2971, + "commentStart": 0, "declaration": { - "commentStart": 2990, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2990, + "commentStart": 0, "end": 0, "name": "sketch005", "start": 0, @@ -4267,10 +4263,10 @@ description: Result of parsing french-press.kcl "arguments": [ { "abs_path": false, - "commentStart": 3016, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3016, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -4284,10 +4280,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3002, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3002, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -4297,7 +4293,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3002, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4306,10 +4302,10 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 3040, + "commentStart": 0, "elements": [ { - "commentStart": 3041, + "commentStart": 0, "end": 0, "raw": "0.15", "start": 0, @@ -4321,7 +4317,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 3047, + "commentStart": 0, "end": 0, "raw": "1.11", "start": 0, @@ -4339,7 +4335,7 @@ description: Result of parsing french-press.kcl "type": "ArrayExpression" }, { - "commentStart": 3054, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4348,10 +4344,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3025, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3025, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -4361,7 +4357,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3025, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4372,24 +4368,24 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 3068, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3082, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3082, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3082, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3082, + "commentStart": 0, "end": 0, "name": "carafeDiameter", "start": 0, @@ -4402,7 +4398,7 @@ description: Result of parsing french-press.kcl }, "operator": "/", "right": { - "commentStart": 3099, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4419,7 +4415,7 @@ description: Result of parsing french-press.kcl }, "operator": "-", "right": { - "commentStart": 3103, + "commentStart": 0, "end": 0, "raw": "0.2", "start": 0, @@ -4438,10 +4434,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3062, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3062, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -4451,7 +4447,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3062, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4461,228 +4457,118 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 3127, - "end": 0, - "properties": [ - { - "commentStart": 3136, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "30", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 30.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 3136, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "angle", + "name": { + "commentStart": 0, + "end": 0, + "name": "carafeDiameter", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3144, + "operator": "/", + "right": { + "commentStart": 0, "end": 0, - "raw": "30", + "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 30.0, + "value": 2.0, "suffix": "None" } - } - }, - { - "commentStart": 3155, - "end": 0, - "key": { - "commentStart": 3155, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" }, "start": 0, - "type": "ObjectProperty", + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "-", + "right": { + "commentStart": 0, + "end": 0, + "raw": "0.07", + "start": 0, + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 3160, - "end": 0, - "left": { - "commentStart": 3160, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 3160, - "end": 0, - "name": { - "commentStart": 3160, - "end": 0, - "name": "carafeDiameter", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "/", - "right": { - "commentStart": 3177, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "-", - "right": { - "commentStart": 3181, - "end": 0, - "raw": "0.07", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.07, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "value": 0.07, + "suffix": "None" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 3194, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 3197, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "seg1" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "seg1" + } } ], "callee": { "abs_path": false, - "commentStart": 3113, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3113, - "end": 0, - "name": "angledLineToX", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 3113, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 3220, - "end": 0, - "properties": [ - { - "commentStart": 3222, - "end": 0, - "key": { - "commentStart": 3222, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 3231, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - }, - "commentStart": 3230, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - }, - { - "commentStart": 3235, - "end": 0, - "key": { - "commentStart": 3235, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3244, - "end": 0, - "raw": "0.050", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.05, - "suffix": "None" - } - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 3253, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 3209, - "end": 0, - "name": { - "commentStart": 3209, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -4692,151 +4578,208 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3209, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 3272, - "end": 0, - "properties": [ - { - "commentStart": 3274, - "end": 0, - "key": { - "commentStart": 3274, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3282, - "end": 0, - "raw": "30", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 30.0, - "suffix": "None" - } - } - }, - { - "commentStart": 3286, - "end": 0, - "key": { - "commentStart": 3286, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 3303, - "end": 0, - "name": { - "commentStart": 3303, - "end": 0, - "name": "seg1", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 3296, - "end": 0, - "name": { - "commentStart": 3296, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 3296, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 3295, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 3312, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 3261, - "end": 0, - "name": { - "commentStart": 3261, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 3261, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 3326, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "60", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 60.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0.050", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.05, + "suffix": "None" + } + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "30", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 30.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg1", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3340, + "commentStart": 0, "end": 0, "raw": "0.15", "start": 0, @@ -4851,10 +4794,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3320, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3320, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -4864,7 +4807,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3320, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4876,19 +4819,19 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 3356, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3370, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 3385, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4897,10 +4840,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3371, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3371, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -4910,7 +4853,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3371, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4919,7 +4862,7 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 3403, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4928,10 +4871,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3389, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3389, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -4941,7 +4884,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3389, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4957,10 +4900,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3351, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3351, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4970,7 +4913,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3351, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4981,10 +4924,10 @@ description: Result of parsing french-press.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 3413, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3413, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -4994,7 +4937,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3413, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5005,7 +4948,7 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 3434, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -5013,10 +4956,10 @@ description: Result of parsing french-press.kcl }, "arg": { "abs_path": false, - "commentStart": 3441, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3441, + "commentStart": 0, "end": 0, "name": "Y", "start": 0, @@ -5031,10 +4974,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3426, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3426, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -5044,7 +4987,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3426, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5052,13 +4995,13 @@ description: Result of parsing french-press.kcl "unlabeled": null } ], - "commentStart": 3002, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "9": [ { - "commentStart": 3443, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5091,12 +5034,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 3465, + "commentStart": 0, "declaration": { - "commentStart": 3465, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3465, + "commentStart": 0, "end": 0, "name": "sketch006", "start": 0, @@ -5108,10 +5051,10 @@ description: Result of parsing french-press.kcl "arguments": [ { "abs_path": false, - "commentStart": 3491, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3491, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -5125,10 +5068,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3477, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3477, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -5138,7 +5081,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3477, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5147,10 +5090,10 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 3515, + "commentStart": 0, "elements": [ { - "commentStart": 3516, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -5162,7 +5105,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 3521, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -5180,7 +5123,7 @@ description: Result of parsing french-press.kcl "type": "ArrayExpression" }, { - "commentStart": 3525, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5189,10 +5132,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3500, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3500, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -5202,7 +5145,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3500, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5213,17 +5156,17 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 3538, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3544, + "commentStart": 0, "elements": [ { - "commentStart": 3545, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -5235,7 +5178,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 3550, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5256,10 +5199,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3533, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3533, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5269,7 +5212,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3533, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5279,80 +5222,58 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 3573, - "end": 0, - "properties": [ - { - "commentStart": 3575, - "end": 0, - "key": { - "commentStart": 3575, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3583, - "end": 0, - "raw": "10", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } - } - }, - { - "commentStart": 3587, - "end": 0, - "key": { - "commentStart": 3587, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3592, - "end": 0, - "raw": "0.05", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.05, - "suffix": "None" - } - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "10", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 10.0, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 3600, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0.05", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.05, + "suffix": "None" + } + } } ], "callee": { "abs_path": false, - "commentStart": 3559, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3559, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -5360,25 +5281,26 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3559, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 3614, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3623, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -5393,10 +5315,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3608, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3608, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -5406,7 +5328,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3608, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5418,17 +5340,17 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 3637, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3643, + "commentStart": 0, "elements": [ { - "commentStart": 3644, + "commentStart": 0, "end": 0, "raw": "0.6", "start": 0, @@ -5440,7 +5362,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 3649, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5461,10 +5383,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3632, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3632, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5474,7 +5396,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3632, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5486,7 +5408,7 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 3664, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -5494,7 +5416,7 @@ description: Result of parsing french-press.kcl }, "arg": { "argument": { - "commentStart": 3674, + "commentStart": 0, "end": 0, "raw": ".05", "start": 0, @@ -5505,7 +5427,7 @@ description: Result of parsing french-press.kcl "suffix": "None" } }, - "commentStart": 3673, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5516,10 +5438,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3658, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3658, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -5529,7 +5451,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3658, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5539,86 +5461,64 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 3698, - "end": 0, - "properties": [ - { - "commentStart": 3700, - "end": 0, - "key": { - "commentStart": 3700, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3709, - "end": 0, - "raw": "0.6", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.6, - "suffix": "None" - } - } - }, - { - "commentStart": 3714, - "end": 0, - "key": { - "commentStart": 3714, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 3724, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "commentStart": 3723, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0.6", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.6, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 3730, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "90", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 3684, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3684, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -5628,30 +5528,31 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3684, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 3743, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3757, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 3772, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5660,10 +5561,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3758, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3758, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -5673,7 +5574,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3758, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5682,7 +5583,7 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 3790, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5691,10 +5592,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3776, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3776, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -5704,7 +5605,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3776, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5720,10 +5621,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3738, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3738, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5733,7 +5634,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3738, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5744,10 +5645,10 @@ description: Result of parsing french-press.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 3800, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3800, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -5757,7 +5658,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3800, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5768,7 +5669,7 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 3821, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -5776,10 +5677,10 @@ description: Result of parsing french-press.kcl }, "arg": { "abs_path": false, - "commentStart": 3828, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3828, + "commentStart": 0, "end": 0, "name": "Y", "start": 0, @@ -5794,10 +5695,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3813, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3813, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -5807,7 +5708,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3813, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5815,13 +5716,13 @@ description: Result of parsing french-press.kcl "unlabeled": null } ], - "commentStart": 3477, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "10": [ { - "commentStart": 3830, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5849,12 +5750,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 3848, + "commentStart": 0, "declaration": { - "commentStart": 3848, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3848, + "commentStart": 0, "end": 0, "name": "sketch007", "start": 0, @@ -5869,14 +5770,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 3890, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3899, + "commentStart": 0, "end": 0, "raw": "1.12", "start": 0, @@ -5891,10 +5792,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3874, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3874, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -5904,17 +5805,17 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3874, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 3886, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3886, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -5929,10 +5830,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3860, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3860, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -5942,7 +5843,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3860, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5953,17 +5854,17 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 3918, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3927, + "commentStart": 0, "elements": [ { - "commentStart": 3928, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5975,7 +5876,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 3931, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5996,24 +5897,24 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 3935, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3944, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3944, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3944, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3944, + "commentStart": 0, "end": 0, "name": "carafeDiameter", "start": 0, @@ -6026,7 +5927,7 @@ description: Result of parsing french-press.kcl }, "operator": "/", "right": { - "commentStart": 3961, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6043,7 +5944,7 @@ description: Result of parsing french-press.kcl }, "operator": "-", "right": { - "commentStart": 3965, + "commentStart": 0, "end": 0, "raw": "0.24", "start": 0, @@ -6062,10 +5963,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3911, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3911, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -6075,7 +5976,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3911, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6089,17 +5990,17 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 3988, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3997, + "commentStart": 0, "elements": [ { - "commentStart": 3998, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6111,7 +6012,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 4001, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6132,14 +6033,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4005, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4014, + "commentStart": 0, "end": 0, "raw": ".15", "start": 0, @@ -6154,10 +6055,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3981, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3981, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -6167,7 +6068,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3981, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6175,7 +6076,7 @@ description: Result of parsing french-press.kcl "unlabeled": null }, { - "commentStart": 4020, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6184,10 +6085,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 3976, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3976, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -6197,14 +6098,14 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 3976, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 3860, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -6220,12 +6121,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 4022, + "commentStart": 0, "declaration": { - "commentStart": 4024, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4024, + "commentStart": 0, "end": 0, "name": "extrude003", "start": 0, @@ -6236,14 +6137,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4056, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4065, + "commentStart": 0, "end": 0, "raw": "0.050", "start": 0, @@ -6258,10 +6159,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 4037, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4037, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -6271,17 +6172,17 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 4037, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 4045, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4045, + "commentStart": 0, "end": 0, "name": "sketch007", "start": 0, @@ -6303,12 +6204,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 4071, + "commentStart": 0, "declaration": { - "commentStart": 4110, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4110, + "commentStart": 0, "end": 0, "name": "sketch008", "start": 0, @@ -6319,37 +6220,38 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 4136, - "end": 0, - "name": { - "commentStart": 4136, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude003", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 4148, - "end": 0, - "raw": "'END'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 4122, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4122, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -6359,28 +6261,44 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 4122, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude003", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 4167, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4176, + "commentStart": 0, "elements": [ { - "commentStart": 4177, + "commentStart": 0, "end": 0, "raw": "1.4", "start": 0, @@ -6392,7 +6310,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 4182, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6413,14 +6331,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4186, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4195, + "commentStart": 0, "end": 0, "raw": ".3", "start": 0, @@ -6435,10 +6353,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 4160, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4160, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -6448,7 +6366,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 4160, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6460,17 +6378,17 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4230, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4239, + "commentStart": 0, "elements": [ { - "commentStart": 4240, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6482,7 +6400,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 4243, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6503,14 +6421,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4254, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4266, + "commentStart": 0, "end": 0, "raw": "8", "start": 0, @@ -6525,14 +6443,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4276, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4289, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -6547,14 +6465,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4301, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4320, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -6566,10 +6484,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 4204, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4204, + "commentStart": 0, "end": 0, "name": "patternCircular2d", "start": 0, @@ -6579,7 +6497,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 4204, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6587,7 +6505,7 @@ description: Result of parsing french-press.kcl "unlabeled": null } ], - "commentStart": 4122, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -6608,12 +6526,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 4332, + "commentStart": 0, "declaration": { - "commentStart": 4334, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4334, + "commentStart": 0, "end": 0, "name": "extrude004", "start": 0, @@ -6624,7 +6542,7 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4366, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6632,7 +6550,7 @@ description: Result of parsing french-press.kcl }, "arg": { "argument": { - "commentStart": 4376, + "commentStart": 0, "end": 0, "raw": "0.050", "start": 0, @@ -6643,7 +6561,7 @@ description: Result of parsing french-press.kcl "suffix": "None" } }, - "commentStart": 4375, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6654,10 +6572,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 4347, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4347, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -6667,17 +6585,17 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 4347, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 4355, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4355, + "commentStart": 0, "end": 0, "name": "sketch008", "start": 0, @@ -6699,12 +6617,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 4382, + "commentStart": 0, "declaration": { - "commentStart": 4421, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4421, + "commentStart": 0, "end": 0, "name": "sketch009", "start": 0, @@ -6715,37 +6633,38 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 4447, - "end": 0, - "name": { - "commentStart": 4447, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude003", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 4459, - "end": 0, - "raw": "'END'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 4433, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4433, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -6755,28 +6674,44 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 4433, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude003", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 4478, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4487, + "commentStart": 0, "elements": [ { - "commentStart": 4488, + "commentStart": 0, "end": 0, "raw": "0.6", "start": 0, @@ -6788,7 +6723,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 4493, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6809,14 +6744,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4497, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4506, + "commentStart": 0, "end": 0, "raw": ".2", "start": 0, @@ -6831,10 +6766,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 4471, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4471, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -6844,7 +6779,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 4471, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6856,17 +6791,17 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4541, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4550, + "commentStart": 0, "elements": [ { - "commentStart": 4551, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6878,7 +6813,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 4554, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6899,14 +6834,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4565, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4577, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -6921,14 +6856,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4587, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4600, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -6943,14 +6878,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4612, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4631, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -6962,10 +6897,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 4515, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4515, + "commentStart": 0, "end": 0, "name": "patternCircular2d", "start": 0, @@ -6975,7 +6910,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 4515, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6983,7 +6918,7 @@ description: Result of parsing french-press.kcl "unlabeled": null } ], - "commentStart": 4433, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -7004,12 +6939,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 4643, + "commentStart": 0, "declaration": { - "commentStart": 4645, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4645, + "commentStart": 0, "end": 0, "name": "extrude005", "start": 0, @@ -7020,7 +6955,7 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4677, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -7028,7 +6963,7 @@ description: Result of parsing french-press.kcl }, "arg": { "argument": { - "commentStart": 4687, + "commentStart": 0, "end": 0, "raw": "0.050", "start": 0, @@ -7039,7 +6974,7 @@ description: Result of parsing french-press.kcl "suffix": "None" } }, - "commentStart": 4686, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7050,10 +6985,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 4658, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4658, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -7063,17 +6998,17 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 4658, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 4666, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4666, + "commentStart": 0, "end": 0, "name": "sketch009", "start": 0, @@ -7095,12 +7030,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 4693, + "commentStart": 0, "declaration": { - "commentStart": 4726, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4726, + "commentStart": 0, "end": 0, "name": "sketch010", "start": 0, @@ -7112,10 +7047,10 @@ description: Result of parsing french-press.kcl "arguments": [ { "abs_path": false, - "commentStart": 4752, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4752, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -7129,10 +7064,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 4738, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4738, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -7142,7 +7077,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 4738, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7153,17 +7088,17 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4768, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4777, + "commentStart": 0, "elements": [ { - "commentStart": 4778, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -7175,7 +7110,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 4781, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -7196,21 +7131,21 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4785, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4794, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4794, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4794, + "commentStart": 0, "end": 0, "name": "carafeDiameter", "start": 0, @@ -7223,7 +7158,7 @@ description: Result of parsing french-press.kcl }, "operator": "/", "right": { - "commentStart": 4811, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -7242,10 +7177,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 4761, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4761, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -7255,7 +7190,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 4761, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7263,13 +7198,13 @@ description: Result of parsing french-press.kcl "unlabeled": null } ], - "commentStart": 4738, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 4813, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -7302,12 +7237,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 4896, + "commentStart": 0, "declaration": { - "commentStart": 4896, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4896, + "commentStart": 0, "end": 0, "name": "extrude006", "start": 0, @@ -7320,7 +7255,7 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4928, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -7328,10 +7263,10 @@ description: Result of parsing french-press.kcl }, "arg": { "abs_path": false, - "commentStart": 4937, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4937, + "commentStart": 0, "end": 0, "name": "carafeHeight", "start": 0, @@ -7346,10 +7281,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 4909, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4909, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -7359,17 +7294,17 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 4909, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 4917, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4917, + "commentStart": 0, "end": 0, "name": "sketch010", "start": 0, @@ -7386,23 +7321,30 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4962, + "commentStart": 0, "end": 0, "name": "faces", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4970, + "commentStart": 0, "elements": [ { - "commentStart": 4971, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "\"end\"", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "end" + "type": "Name", + "type": "Name" } ], "end": 0, @@ -7414,14 +7356,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 4979, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4991, + "commentStart": 0, "end": 0, "raw": ".07", "start": 0, @@ -7436,10 +7378,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 4956, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4956, + "commentStart": 0, "end": 0, "name": "shell", "start": 0, @@ -7449,7 +7391,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 4956, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7457,13 +7399,13 @@ description: Result of parsing french-press.kcl "unlabeled": null } ], - "commentStart": 4909, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 4995, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -7491,12 +7433,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 5025, + "commentStart": 0, "declaration": { - "commentStart": 5025, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5025, + "commentStart": 0, "end": 0, "name": "sketch011", "start": 0, @@ -7508,10 +7450,10 @@ description: Result of parsing french-press.kcl "arguments": [ { "abs_path": false, - "commentStart": 5051, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5051, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -7525,10 +7467,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5037, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5037, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -7538,7 +7480,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5037, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7547,10 +7489,10 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 5075, + "commentStart": 0, "elements": [ { - "commentStart": 5076, + "commentStart": 0, "end": 0, "raw": "0.2", "start": 0, @@ -7562,14 +7504,14 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 5081, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5081, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5081, + "commentStart": 0, "end": 0, "name": "carafeHeight", "start": 0, @@ -7582,7 +7524,7 @@ description: Result of parsing french-press.kcl }, "operator": "-", "right": { - "commentStart": 5096, + "commentStart": 0, "end": 0, "raw": "0.7", "start": 0, @@ -7604,7 +7546,7 @@ description: Result of parsing french-press.kcl "type": "ArrayExpression" }, { - "commentStart": 5102, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -7613,10 +7555,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5060, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5060, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -7626,7 +7568,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5060, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7637,24 +7579,24 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 5116, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5125, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5125, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5125, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5125, + "commentStart": 0, "end": 0, "name": "carafeDiameter", "start": 0, @@ -7667,7 +7609,7 @@ description: Result of parsing french-press.kcl }, "operator": "/", "right": { - "commentStart": 5142, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -7684,7 +7626,7 @@ description: Result of parsing french-press.kcl }, "operator": "-", "right": { - "commentStart": 5146, + "commentStart": 0, "end": 0, "raw": "0.3", "start": 0, @@ -7703,10 +7645,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5110, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5110, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -7716,7 +7658,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5110, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7728,14 +7670,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 5162, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5171, + "commentStart": 0, "end": 0, "raw": "0.7", "start": 0, @@ -7750,10 +7692,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5156, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5156, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -7763,7 +7705,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5156, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7775,14 +7717,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 5187, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5196, + "commentStart": 0, "end": 0, "raw": "0.3", "start": 0, @@ -7797,10 +7739,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5181, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5181, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -7810,7 +7752,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5181, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7822,14 +7764,14 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 5212, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5221, + "commentStart": 0, "end": 0, "raw": "0.4", "start": 0, @@ -7844,10 +7786,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5206, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5206, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -7857,7 +7799,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5206, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7869,18 +7811,18 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 5236, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5242, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 5244, + "commentStart": 0, "end": 0, "raw": "0.02", "start": 0, @@ -7891,7 +7833,7 @@ description: Result of parsing french-press.kcl "suffix": "None" } }, - "commentStart": 5243, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7899,7 +7841,7 @@ description: Result of parsing french-press.kcl "type": "UnaryExpression" }, { - "commentStart": 5250, + "commentStart": 0, "end": 0, "raw": "0.02", "start": 0, @@ -7920,10 +7862,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5231, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7933,7 +7875,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5231, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7943,14 +7885,14 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 5274, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 5283, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5283, + "commentStart": 0, "end": 0, "name": "to", "start": 0, @@ -7959,21 +7901,21 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 5288, + "commentStart": 0, "elements": [ { - "commentStart": 5289, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5289, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 5290, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5290, + "commentStart": 0, "end": 0, "name": "carafeDiameter", "start": 0, @@ -7984,7 +7926,7 @@ description: Result of parsing french-press.kcl "type": "Name", "type": "Name" }, - "commentStart": 5289, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7993,7 +7935,7 @@ description: Result of parsing french-press.kcl }, "operator": "/", "right": { - "commentStart": 5307, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -8010,7 +7952,7 @@ description: Result of parsing french-press.kcl }, "operator": "-", "right": { - "commentStart": 5311, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -8026,7 +7968,7 @@ description: Result of parsing french-press.kcl "type": "BinaryExpression" }, { - "commentStart": 5316, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -8045,10 +7987,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 5327, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5327, + "commentStart": 0, "end": 0, "name": "control1", "start": 0, @@ -8057,11 +7999,11 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 5338, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 5340, + "commentStart": 0, "end": 0, "raw": "0.3", "start": 0, @@ -8072,7 +8014,7 @@ description: Result of parsing french-press.kcl "suffix": "None" } }, - "commentStart": 5339, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8080,7 +8022,7 @@ description: Result of parsing french-press.kcl "type": "UnaryExpression" }, { - "commentStart": 5345, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -8099,10 +8041,10 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 5356, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5356, + "commentStart": 0, "end": 0, "name": "control2", "start": 0, @@ -8111,17 +8053,17 @@ description: Result of parsing french-press.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 5367, + "commentStart": 0, "elements": [ { - "commentStart": 5368, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5368, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5368, + "commentStart": 0, "end": 0, "name": "carafeDiameter", "start": 0, @@ -8134,7 +8076,7 @@ description: Result of parsing french-press.kcl }, "operator": "/", "right": { - "commentStart": 5385, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -8150,7 +8092,7 @@ description: Result of parsing french-press.kcl "type": "BinaryExpression" }, { - "commentStart": 5389, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -8174,7 +8116,7 @@ description: Result of parsing french-press.kcl "type": "ObjectExpression" }, { - "commentStart": 5400, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -8183,10 +8125,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5262, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5262, + "commentStart": 0, "end": 0, "name": "bezierCurve", "start": 0, @@ -8196,7 +8138,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5262, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8207,19 +8149,19 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 5413, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5427, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 5442, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -8228,10 +8170,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5428, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5428, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -8241,7 +8183,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5428, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8250,7 +8192,7 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 5460, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -8259,10 +8201,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5446, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5446, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -8272,7 +8214,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5446, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8288,10 +8230,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5408, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5408, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8301,7 +8243,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5408, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8312,10 +8254,10 @@ description: Result of parsing french-press.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 5470, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5470, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -8325,7 +8267,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5470, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8336,7 +8278,7 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 5491, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -8344,10 +8286,10 @@ description: Result of parsing french-press.kcl }, "arg": { "abs_path": false, - "commentStart": 5498, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5498, + "commentStart": 0, "end": 0, "name": "Y", "start": 0, @@ -8362,10 +8304,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5483, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5483, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -8375,7 +8317,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5483, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8383,13 +8325,13 @@ description: Result of parsing french-press.kcl "unlabeled": null } ], - "commentStart": 5037, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "10": [ { - "commentStart": 5500, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -8417,12 +8359,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 5529, + "commentStart": 0, "declaration": { - "commentStart": 5529, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5529, + "commentStart": 0, "end": 0, "name": "sketch012", "start": 0, @@ -8437,21 +8379,21 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 5571, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5580, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5580, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5580, + "commentStart": 0, "end": 0, "name": "handleThickness", "start": 0, @@ -8464,7 +8406,7 @@ description: Result of parsing french-press.kcl }, "operator": "/", "right": { - "commentStart": 5598, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -8483,10 +8425,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5555, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5555, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -8496,17 +8438,17 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5555, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 5567, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5567, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -8521,10 +8463,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5541, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5541, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -8534,7 +8476,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5541, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8543,10 +8485,10 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 5622, + "commentStart": 0, "elements": [ { - "commentStart": 5623, + "commentStart": 0, "end": 0, "raw": "2.3", "start": 0, @@ -8558,7 +8500,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 5628, + "commentStart": 0, "end": 0, "raw": "6.4", "start": 0, @@ -8576,7 +8518,7 @@ description: Result of parsing french-press.kcl "type": "ArrayExpression" }, { - "commentStart": 5634, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -8585,10 +8527,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5607, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5607, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -8598,7 +8540,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5607, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8609,17 +8551,17 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 5647, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5653, + "commentStart": 0, "elements": [ { - "commentStart": 5654, + "commentStart": 0, "end": 0, "raw": "0.56", "start": 0, @@ -8631,7 +8573,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 5660, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -8652,10 +8594,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5642, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5642, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8665,7 +8607,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5642, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8675,54 +8617,57 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 5685, - "elements": [ - { - "commentStart": 5686, - "end": 0, - "raw": "4.1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 4.1, - "suffix": "None" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "4.1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 4.1, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "5.26", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 5.26, + "suffix": "None" + } } - }, - { - "commentStart": 5691, - "end": 0, - "raw": "5.26", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 5.26, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 5698, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 5669, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5669, + "commentStart": 0, "end": 0, - "name": "tangentialArcTo", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -8730,157 +8675,166 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5669, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 5722, - "elements": [ - { - "commentStart": 5723, - "end": 0, - "raw": "4.17", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 4.17, - "suffix": "None" - } - }, - { - "commentStart": 5729, - "end": 0, - "raw": "1.6", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.6, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 5735, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 5706, - "end": 0, - "name": { - "commentStart": 5706, - "end": 0, - "name": "tangentialArcTo", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 5706, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 5759, - "elements": [ - { - "commentStart": 5760, - "end": 0, - "raw": "3.13", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 3.13, - "suffix": "None" - } - }, - { - "commentStart": 5766, - "end": 0, - "raw": "0.61", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.61, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 5773, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 5743, - "end": 0, - "name": { - "commentStart": 5743, - "end": 0, - "name": "tangentialArcTo", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 5743, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 5786, + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "4.17", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 4.17, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1.6", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.6, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "3.13", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 3.13, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.61", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.61, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5792, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 5794, + "commentStart": 0, "end": 0, "raw": "1.09", "start": 0, @@ -8891,7 +8845,7 @@ description: Result of parsing french-press.kcl "suffix": "None" } }, - "commentStart": 5793, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8899,7 +8853,7 @@ description: Result of parsing french-press.kcl "type": "UnaryExpression" }, { - "commentStart": 5800, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -8920,10 +8874,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5781, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5781, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8933,7 +8887,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5781, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8945,17 +8899,17 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 5814, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5820, + "commentStart": 0, "elements": [ { - "commentStart": 5821, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -8967,7 +8921,7 @@ description: Result of parsing french-press.kcl } }, { - "commentStart": 5824, + "commentStart": 0, "end": 0, "raw": "0.43", "start": 0, @@ -8988,10 +8942,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5809, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5809, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9001,7 +8955,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5809, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9013,17 +8967,17 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 5841, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5847, + "commentStart": 0, "elements": [ { - "commentStart": 5848, + "commentStart": 0, "end": 0, "raw": "0.99", "start": 0, @@ -9036,7 +8990,7 @@ description: Result of parsing french-press.kcl }, { "argument": { - "commentStart": 5855, + "commentStart": 0, "end": 0, "raw": "0.02", "start": 0, @@ -9047,7 +9001,7 @@ description: Result of parsing french-press.kcl "suffix": "None" } }, - "commentStart": 5854, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9064,10 +9018,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5836, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5836, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9077,7 +9031,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5836, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9087,54 +9041,57 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 5883, - "elements": [ - { - "commentStart": 5884, - "end": 0, - "raw": "3.63", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 3.63, - "suffix": "None" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "3.63", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 3.63, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1.6", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.6, + "suffix": "None" + } } - }, - { - "commentStart": 5890, - "end": 0, - "raw": "1.6", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.6, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 5896, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 5867, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5867, + "commentStart": 0, "end": 0, - "name": "tangentialArcTo", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -9142,157 +9099,166 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5867, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 5920, - "elements": [ - { - "commentStart": 5921, - "end": 0, - "raw": "3.56", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 3.56, - "suffix": "None" - } - }, - { - "commentStart": 5927, - "end": 0, - "raw": "5.15", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 5.15, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 5934, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 5904, - "end": 0, - "name": { - "commentStart": 5904, - "end": 0, - "name": "tangentialArcTo", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 5904, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 5958, - "elements": [ - { - "commentStart": 5959, - "end": 0, - "raw": "2.72", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.72, - "suffix": "None" - } - }, - { - "commentStart": 5965, - "end": 0, - "raw": "5.88", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 5.88, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 5972, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 5942, - "end": 0, - "name": { - "commentStart": 5942, - "end": 0, - "name": "tangentialArcTo", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 5942, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 5985, + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "3.56", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 3.56, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "5.15", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 5.15, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "2.72", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.72, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "5.88", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 5.88, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5991, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 5993, + "commentStart": 0, "end": 0, "raw": "0.4", "start": 0, @@ -9303,7 +9269,7 @@ description: Result of parsing french-press.kcl "suffix": "None" } }, - "commentStart": 5992, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9311,7 +9277,7 @@ description: Result of parsing french-press.kcl "type": "UnaryExpression" }, { - "commentStart": 5998, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -9332,10 +9298,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 5980, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5980, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9345,7 +9311,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 5980, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9357,19 +9323,19 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 6012, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6026, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 6041, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -9378,10 +9344,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 6027, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6027, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -9391,7 +9357,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 6027, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9400,7 +9366,7 @@ description: Result of parsing french-press.kcl { "arguments": [ { - "commentStart": 6059, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -9409,10 +9375,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 6045, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6045, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -9422,7 +9388,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 6045, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9438,10 +9404,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 6007, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6007, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9451,7 +9417,7 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 6007, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9462,10 +9428,10 @@ description: Result of parsing french-press.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 6069, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6069, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -9475,14 +9441,14 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 6069, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 5541, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -9498,12 +9464,12 @@ description: Result of parsing french-press.kcl "type": "VariableDeclaration" }, { - "commentStart": 6077, + "commentStart": 0, "declaration": { - "commentStart": 6077, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6077, + "commentStart": 0, "end": 0, "name": "extrude007", "start": 0, @@ -9514,7 +9480,7 @@ description: Result of parsing french-press.kcl { "type": "LabeledArg", "label": { - "commentStart": 6109, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -9523,10 +9489,10 @@ description: Result of parsing french-press.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 6119, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6119, + "commentStart": 0, "end": 0, "name": "handleThickness", "start": 0, @@ -9537,7 +9503,7 @@ description: Result of parsing french-press.kcl "type": "Name", "type": "Name" }, - "commentStart": 6118, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9548,10 +9514,10 @@ description: Result of parsing french-press.kcl ], "callee": { "abs_path": false, - "commentStart": 6090, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6090, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -9561,17 +9527,17 @@ description: Result of parsing french-press.kcl "start": 0, "type": "Name" }, - "commentStart": 6090, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 6098, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6098, + "commentStart": 0, "end": 0, "name": "sketch012", "start": 0, @@ -9600,7 +9566,7 @@ description: Result of parsing french-press.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 72, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -9615,10 +9581,10 @@ description: Result of parsing french-press.kcl ], "properties": [ { - "commentStart": 81, + "commentStart": 0, "end": 0, "key": { - "commentStart": 81, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -9628,10 +9594,10 @@ description: Result of parsing french-press.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 101, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -9652,7 +9618,7 @@ description: Result of parsing french-press.kcl "nonCodeNodes": { "6": [ { - "commentStart": 2467, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9663,7 +9629,7 @@ description: Result of parsing french-press.kcl ], "7": [ { - "commentStart": 2516, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9674,7 +9640,7 @@ description: Result of parsing french-press.kcl ], "8": [ { - "commentStart": 2921, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9685,7 +9651,7 @@ description: Result of parsing french-press.kcl ], "12": [ { - "commentStart": 4022, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9696,7 +9662,7 @@ description: Result of parsing french-press.kcl ], "14": [ { - "commentStart": 4332, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9707,7 +9673,7 @@ description: Result of parsing french-press.kcl ], "16": [ { - "commentStart": 4643, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -9719,7 +9685,7 @@ description: Result of parsing french-press.kcl }, "startNodes": [ { - "commentStart": 104, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/french-press/ops.snap b/rust/kcl-lib/tests/kcl_samples/french-press/ops.snap index 9f1353926..d51115762 100644 --- a/rust/kcl-lib/tests/kcl_samples/french-press/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/french-press/ops.snap @@ -5,7 +5,7 @@ description: Operations executed french-press.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -122,190 +122,185 @@ description: Operations executed french-press.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": -0.26, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": -0.26, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.26, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.26, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -530,7 +525,7 @@ description: Operations executed french-press.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -577,19 +572,10 @@ description: Operations executed french-press.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -597,7 +583,15 @@ description: Operations executed french-press.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -650,7 +644,7 @@ description: Operations executed french-press.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -751,7 +745,7 @@ description: Operations executed french-press.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -882,7 +876,7 @@ description: Operations executed french-press.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -955,19 +949,10 @@ description: Operations executed french-press.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -975,7 +960,15 @@ description: Operations executed french-press.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1058,19 +1051,10 @@ description: Operations executed french-press.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -1078,7 +1062,15 @@ description: Operations executed french-press.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1137,7 +1129,7 @@ description: Operations executed french-press.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1228,7 +1220,7 @@ description: Operations executed french-press.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1334,7 +1326,13 @@ description: Operations executed french-press.kcl "type": "Number", "value": 0.325, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1353,7 +1351,7 @@ description: Operations executed french-press.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/kcl_samples/french-press/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/french-press/program_memory.snap index 0d8d702ad..79fd99256 100644 --- a/rust/kcl-lib/tests/kcl_samples/french-press/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/french-press/program_memory.snap @@ -117,22 +117,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -297,17 +309,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -360,22 +381,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -572,17 +605,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -635,22 +677,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -847,17 +901,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -910,22 +973,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1053,22 +1128,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1162,17 +1249,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1225,22 +1321,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1366,17 +1474,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1429,22 +1546,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1570,17 +1699,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1633,22 +1771,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1774,17 +1924,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1837,22 +1996,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1978,17 +2149,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2041,22 +2221,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2182,17 +2374,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2245,22 +2446,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2386,17 +2599,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2449,22 +2671,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2590,17 +2824,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2653,22 +2896,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2799,17 +3054,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2862,22 +3126,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -3003,17 +3279,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3066,22 +3351,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -3207,17 +3504,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3270,22 +3576,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -3411,17 +3729,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3474,22 +3801,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -3617,22 +3956,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -4052,22 +4403,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": -0.325, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -4121,186 +4484,181 @@ description: Variables in memory after executing french-press.kcl "plane001": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": -0.26, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": -0.26, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.26, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.26, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -4336,9 +4694,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 339, - "end": 360, - "start": 339, + "commentStart": 357, + "end": 378, + "start": 357, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -4349,9 +4707,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 446, - "end": 467, - "start": 446, + "commentStart": 461, + "end": 482, + "start": 461, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -4362,9 +4720,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 572, - "end": 593, - "start": 572, + "commentStart": 584, + "end": 605, + "start": 584, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -4392,9 +4750,9 @@ description: Variables in memory after executing french-press.kcl 5.7 ], "tag": { - "commentStart": 339, - "end": 360, - "start": 339, + "commentStart": 357, + "end": 378, + "start": 357, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -4417,9 +4775,9 @@ description: Variables in memory after executing french-press.kcl 5.7 ], "tag": { - "commentStart": 446, - "end": 467, - "start": 446, + "commentStart": 461, + "end": 482, + "start": 461, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -4442,9 +4800,9 @@ description: Variables in memory after executing french-press.kcl 6.45 ], "tag": { - "commentStart": 572, - "end": 593, - "start": 572, + "commentStart": 584, + "end": 605, + "start": 584, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -4504,22 +4862,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -4593,9 +4963,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1073, + "end": 1079, + "start": 1073, "type": "TagDeclarator", "value": "edge1" }, @@ -4613,9 +4983,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1233, - "end": 1239, - "start": 1233, + "commentStart": 1220, + "end": 1226, + "start": 1220, "type": "TagDeclarator", "value": "edge2" }, @@ -4633,9 +5003,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1381, - "end": 1387, - "start": 1381, + "commentStart": 1374, + "end": 1380, + "start": 1374, "type": "TagDeclarator", "value": "edge3" }, @@ -4653,9 +5023,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1513, - "end": 1521, - "start": 1513, + "commentStart": 1506, + "end": 1514, + "start": 1506, "type": "TagDeclarator", "value": "edgeLen" }, @@ -4673,9 +5043,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1599, - "end": 1605, - "start": 1599, + "commentStart": 1592, + "end": 1598, + "start": 1592, "type": "TagDeclarator", "value": "edge4" }, @@ -4693,9 +5063,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1783, - "end": 1789, - "start": 1783, + "commentStart": 1756, + "end": 1762, + "start": 1756, "type": "TagDeclarator", "value": "edge5" }, @@ -4713,9 +5083,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1969, - "end": 1975, - "start": 1969, + "commentStart": 1922, + "end": 1928, + "start": 1922, "type": "TagDeclarator", "value": "edge6" }, @@ -4769,9 +5139,9 @@ description: Variables in memory after executing french-press.kcl 5.7 ], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1073, + "end": 1079, + "start": 1073, "type": "TagDeclarator", "value": "edge1" }, @@ -4819,9 +5189,9 @@ description: Variables in memory after executing french-press.kcl 0.3732 ], "tag": { - "commentStart": 1233, - "end": 1239, - "start": 1233, + "commentStart": 1220, + "end": 1226, + "start": 1220, "type": "TagDeclarator", "value": "edge2" }, @@ -4869,9 +5239,9 @@ description: Variables in memory after executing french-press.kcl -0.966 ], "tag": { - "commentStart": 1381, - "end": 1387, - "start": 1381, + "commentStart": 1374, + "end": 1380, + "start": 1374, "type": "TagDeclarator", "value": "edge3" }, @@ -4919,9 +5289,9 @@ description: Variables in memory after executing french-press.kcl -0.133 ], "tag": { - "commentStart": 1513, - "end": 1521, - "start": 1513, + "commentStart": 1506, + "end": 1514, + "start": 1506, "type": "TagDeclarator", "value": "edgeLen" }, @@ -4963,9 +5333,9 @@ description: Variables in memory after executing french-press.kcl -0.033 ], "tag": { - "commentStart": 1599, - "end": 1605, - "start": 1599, + "commentStart": 1592, + "end": 1598, + "start": 1592, "type": "TagDeclarator", "value": "edge4" }, @@ -5013,9 +5383,9 @@ description: Variables in memory after executing french-press.kcl -0.1134 ], "tag": { - "commentStart": 1783, - "end": 1789, - "start": 1783, + "commentStart": 1756, + "end": 1762, + "start": 1756, "type": "TagDeclarator", "value": "edge5" }, @@ -5063,9 +5433,9 @@ description: Variables in memory after executing french-press.kcl -0.1789 ], "tag": { - "commentStart": 1969, - "end": 1975, - "start": 1969, + "commentStart": 1922, + "end": 1928, + "start": 1922, "type": "TagDeclarator", "value": "edge6" }, @@ -5150,22 +5520,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": -0.26, "y": 0.26, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "xAxis": { "x": 1.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "units": { "type": "Inches" @@ -5252,9 +5634,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1073, + "end": 1079, + "start": 1073, "type": "TagDeclarator", "value": "edge1" }, @@ -5272,9 +5654,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1233, - "end": 1239, - "start": 1233, + "commentStart": 1220, + "end": 1226, + "start": 1220, "type": "TagDeclarator", "value": "edge2" }, @@ -5292,9 +5674,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1381, - "end": 1387, - "start": 1381, + "commentStart": 1374, + "end": 1380, + "start": 1374, "type": "TagDeclarator", "value": "edge3" }, @@ -5312,9 +5694,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1513, - "end": 1521, - "start": 1513, + "commentStart": 1506, + "end": 1514, + "start": 1506, "type": "TagDeclarator", "value": "edgeLen" }, @@ -5332,9 +5714,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1599, - "end": 1605, - "start": 1599, + "commentStart": 1592, + "end": 1598, + "start": 1592, "type": "TagDeclarator", "value": "edge4" }, @@ -5352,9 +5734,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1783, - "end": 1789, - "start": 1783, + "commentStart": 1756, + "end": 1762, + "start": 1756, "type": "TagDeclarator", "value": "edge5" }, @@ -5372,9 +5754,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1969, - "end": 1975, - "start": 1969, + "commentStart": 1922, + "end": 1928, + "start": 1922, "type": "TagDeclarator", "value": "edge6" }, @@ -5428,9 +5810,9 @@ description: Variables in memory after executing french-press.kcl 5.7 ], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1073, + "end": 1079, + "start": 1073, "type": "TagDeclarator", "value": "edge1" }, @@ -5478,9 +5860,9 @@ description: Variables in memory after executing french-press.kcl 0.3732 ], "tag": { - "commentStart": 1233, - "end": 1239, - "start": 1233, + "commentStart": 1220, + "end": 1226, + "start": 1220, "type": "TagDeclarator", "value": "edge2" }, @@ -5528,9 +5910,9 @@ description: Variables in memory after executing french-press.kcl -0.966 ], "tag": { - "commentStart": 1381, - "end": 1387, - "start": 1381, + "commentStart": 1374, + "end": 1380, + "start": 1374, "type": "TagDeclarator", "value": "edge3" }, @@ -5578,9 +5960,9 @@ description: Variables in memory after executing french-press.kcl -0.133 ], "tag": { - "commentStart": 1513, - "end": 1521, - "start": 1513, + "commentStart": 1506, + "end": 1514, + "start": 1506, "type": "TagDeclarator", "value": "edgeLen" }, @@ -5622,9 +6004,9 @@ description: Variables in memory after executing french-press.kcl -0.033 ], "tag": { - "commentStart": 1599, - "end": 1605, - "start": 1599, + "commentStart": 1592, + "end": 1598, + "start": 1592, "type": "TagDeclarator", "value": "edge4" }, @@ -5672,9 +6054,9 @@ description: Variables in memory after executing french-press.kcl -0.1134 ], "tag": { - "commentStart": 1783, - "end": 1789, - "start": 1783, + "commentStart": 1756, + "end": 1762, + "start": 1756, "type": "TagDeclarator", "value": "edge5" }, @@ -5722,9 +6104,9 @@ description: Variables in memory after executing french-press.kcl -0.1789 ], "tag": { - "commentStart": 1969, - "end": 1975, - "start": 1969, + "commentStart": 1922, + "end": 1928, + "start": 1922, "type": "TagDeclarator", "value": "edge6" }, @@ -5809,22 +6191,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": -0.26, "y": 0.26, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "xAxis": { "x": 1.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "units": { "type": "Inches" @@ -5911,9 +6305,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1073, + "end": 1079, + "start": 1073, "type": "TagDeclarator", "value": "edge1" }, @@ -5931,9 +6325,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1233, - "end": 1239, - "start": 1233, + "commentStart": 1220, + "end": 1226, + "start": 1220, "type": "TagDeclarator", "value": "edge2" }, @@ -5951,9 +6345,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1381, - "end": 1387, - "start": 1381, + "commentStart": 1374, + "end": 1380, + "start": 1374, "type": "TagDeclarator", "value": "edge3" }, @@ -5971,9 +6365,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1513, - "end": 1521, - "start": 1513, + "commentStart": 1506, + "end": 1514, + "start": 1506, "type": "TagDeclarator", "value": "edgeLen" }, @@ -5991,9 +6385,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1599, - "end": 1605, - "start": 1599, + "commentStart": 1592, + "end": 1598, + "start": 1592, "type": "TagDeclarator", "value": "edge4" }, @@ -6011,9 +6405,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1783, - "end": 1789, - "start": 1783, + "commentStart": 1756, + "end": 1762, + "start": 1756, "type": "TagDeclarator", "value": "edge5" }, @@ -6031,9 +6425,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1969, - "end": 1975, - "start": 1969, + "commentStart": 1922, + "end": 1928, + "start": 1922, "type": "TagDeclarator", "value": "edge6" }, @@ -6087,9 +6481,9 @@ description: Variables in memory after executing french-press.kcl 5.7 ], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1073, + "end": 1079, + "start": 1073, "type": "TagDeclarator", "value": "edge1" }, @@ -6137,9 +6531,9 @@ description: Variables in memory after executing french-press.kcl 0.3732 ], "tag": { - "commentStart": 1233, - "end": 1239, - "start": 1233, + "commentStart": 1220, + "end": 1226, + "start": 1220, "type": "TagDeclarator", "value": "edge2" }, @@ -6187,9 +6581,9 @@ description: Variables in memory after executing french-press.kcl -0.966 ], "tag": { - "commentStart": 1381, - "end": 1387, - "start": 1381, + "commentStart": 1374, + "end": 1380, + "start": 1374, "type": "TagDeclarator", "value": "edge3" }, @@ -6237,9 +6631,9 @@ description: Variables in memory after executing french-press.kcl -0.133 ], "tag": { - "commentStart": 1513, - "end": 1521, - "start": 1513, + "commentStart": 1506, + "end": 1514, + "start": 1506, "type": "TagDeclarator", "value": "edgeLen" }, @@ -6281,9 +6675,9 @@ description: Variables in memory after executing french-press.kcl -0.033 ], "tag": { - "commentStart": 1599, - "end": 1605, - "start": 1599, + "commentStart": 1592, + "end": 1598, + "start": 1592, "type": "TagDeclarator", "value": "edge4" }, @@ -6331,9 +6725,9 @@ description: Variables in memory after executing french-press.kcl -0.1134 ], "tag": { - "commentStart": 1783, - "end": 1789, - "start": 1783, + "commentStart": 1756, + "end": 1762, + "start": 1756, "type": "TagDeclarator", "value": "edge5" }, @@ -6381,9 +6775,9 @@ description: Variables in memory after executing french-press.kcl -0.1789 ], "tag": { - "commentStart": 1969, - "end": 1975, - "start": 1969, + "commentStart": 1922, + "end": 1928, + "start": 1922, "type": "TagDeclarator", "value": "edge6" }, @@ -6468,22 +6862,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": -0.26, "y": 0.26, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "xAxis": { "x": 1.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "units": { "type": "Inches" @@ -6570,9 +6976,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1073, + "end": 1079, + "start": 1073, "type": "TagDeclarator", "value": "edge1" }, @@ -6590,9 +6996,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1233, - "end": 1239, - "start": 1233, + "commentStart": 1220, + "end": 1226, + "start": 1220, "type": "TagDeclarator", "value": "edge2" }, @@ -6610,9 +7016,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1381, - "end": 1387, - "start": 1381, + "commentStart": 1374, + "end": 1380, + "start": 1374, "type": "TagDeclarator", "value": "edge3" }, @@ -6630,9 +7036,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1513, - "end": 1521, - "start": 1513, + "commentStart": 1506, + "end": 1514, + "start": 1506, "type": "TagDeclarator", "value": "edgeLen" }, @@ -6650,9 +7056,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1599, - "end": 1605, - "start": 1599, + "commentStart": 1592, + "end": 1598, + "start": 1592, "type": "TagDeclarator", "value": "edge4" }, @@ -6670,9 +7076,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1783, - "end": 1789, - "start": 1783, + "commentStart": 1756, + "end": 1762, + "start": 1756, "type": "TagDeclarator", "value": "edge5" }, @@ -6690,9 +7096,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1969, - "end": 1975, - "start": 1969, + "commentStart": 1922, + "end": 1928, + "start": 1922, "type": "TagDeclarator", "value": "edge6" }, @@ -6746,9 +7152,9 @@ description: Variables in memory after executing french-press.kcl 5.7 ], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1073, + "end": 1079, + "start": 1073, "type": "TagDeclarator", "value": "edge1" }, @@ -6796,9 +7202,9 @@ description: Variables in memory after executing french-press.kcl 0.3732 ], "tag": { - "commentStart": 1233, - "end": 1239, - "start": 1233, + "commentStart": 1220, + "end": 1226, + "start": 1220, "type": "TagDeclarator", "value": "edge2" }, @@ -6846,9 +7252,9 @@ description: Variables in memory after executing french-press.kcl -0.966 ], "tag": { - "commentStart": 1381, - "end": 1387, - "start": 1381, + "commentStart": 1374, + "end": 1380, + "start": 1374, "type": "TagDeclarator", "value": "edge3" }, @@ -6896,9 +7302,9 @@ description: Variables in memory after executing french-press.kcl -0.133 ], "tag": { - "commentStart": 1513, - "end": 1521, - "start": 1513, + "commentStart": 1506, + "end": 1514, + "start": 1506, "type": "TagDeclarator", "value": "edgeLen" }, @@ -6940,9 +7346,9 @@ description: Variables in memory after executing french-press.kcl -0.033 ], "tag": { - "commentStart": 1599, - "end": 1605, - "start": 1599, + "commentStart": 1592, + "end": 1598, + "start": 1592, "type": "TagDeclarator", "value": "edge4" }, @@ -6990,9 +7396,9 @@ description: Variables in memory after executing french-press.kcl -0.1134 ], "tag": { - "commentStart": 1783, - "end": 1789, - "start": 1783, + "commentStart": 1756, + "end": 1762, + "start": 1756, "type": "TagDeclarator", "value": "edge5" }, @@ -7040,9 +7446,9 @@ description: Variables in memory after executing french-press.kcl -0.1789 ], "tag": { - "commentStart": 1969, - "end": 1975, - "start": 1969, + "commentStart": 1922, + "end": 1928, + "start": 1922, "type": "TagDeclarator", "value": "edge6" }, @@ -7127,22 +7533,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": -0.26, "y": 0.26, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "xAxis": { "x": 1.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "units": { "type": "Inches" @@ -7252,22 +7670,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -7398,17 +7828,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -7461,22 +7900,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -7639,17 +8090,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -7702,22 +8162,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -7880,17 +8352,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -7943,22 +8424,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -8045,9 +8538,9 @@ description: Variables in memory after executing french-press.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 3197, - "end": 3202, - "start": 3197, + "commentStart": 3142, + "end": 3147, + "start": 3142, "type": "TagDeclarator", "value": "seg1" }, @@ -8115,9 +8608,9 @@ description: Variables in memory after executing french-press.kcl 1.11 ], "tag": { - "commentStart": 3197, - "end": 3202, - "start": 3197, + "commentStart": 3142, + "end": 3147, + "start": 3142, "type": "TagDeclarator", "value": "seg1" }, @@ -8234,22 +8727,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -8520,22 +9025,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -8613,22 +9130,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -8702,17 +9231,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -8765,22 +9303,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -8886,17 +9436,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -8949,22 +9508,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -9070,17 +9641,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -9133,22 +9713,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -9254,17 +9846,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -9317,22 +9918,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -9438,17 +10051,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -9501,22 +10123,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -9622,17 +10256,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -9685,22 +10328,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -9806,17 +10461,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -9869,22 +10533,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -9990,17 +10666,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -10053,22 +10738,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -10179,17 +10876,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -10242,22 +10948,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -10363,17 +11081,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -10426,22 +11153,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -10547,17 +11286,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -10610,22 +11358,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -10731,17 +11491,26 @@ description: Variables in memory after executing french-press.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -10794,22 +11563,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 1.12 + "z": 1.12, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -10917,22 +11698,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -11185,22 +11978,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -11530,22 +12335,34 @@ description: Variables in memory after executing french-press.kcl "origin": { "x": 0.0, "y": -0.325, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" diff --git a/rust/kcl-lib/tests/kcl_samples/gear-rack/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/gear-rack/artifact_commands.snap index f789357f8..9979600cc 100644 --- a/rust/kcl-lib/tests/kcl_samples/gear-rack/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/gear-rack/artifact_commands.snap @@ -187,7 +187,8 @@ description: Artifact commands gear-rack.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -512,7 +513,8 @@ description: Artifact commands gear-rack.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2658,7 +2660,8 @@ description: Artifact commands gear-rack.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2915,7 +2918,8 @@ description: Artifact commands gear-rack.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/gear-rack/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/gear-rack/artifact_graph_flowchart.snap.md index e508a21e3..8b1f38fc2 100644 --- a/rust/kcl-lib/tests/kcl_samples/gear-rack/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/gear-rack/artifact_graph_flowchart.snap.md @@ -10,30 +10,30 @@ flowchart LR end subgraph path24 [Path] 24["Path
[859, 913, 0]"] - 25["Segment
[921, 969, 0]"] - 26["Segment
[977, 1009, 0]"] - 27["Segment
[1017, 1065, 0]"] - 28["Segment
[1073, 1098, 0]"] - 29["Segment
[1106, 1155, 0]"] - 30["Segment
[1163, 1196, 0]"] - 31["Segment
[1204, 1253, 0]"] - 32["Segment
[1261, 1268, 0]"] + 25["Segment
[921, 962, 0]"] + 26["Segment
[970, 1002, 0]"] + 27["Segment
[1010, 1051, 0]"] + 28["Segment
[1059, 1084, 0]"] + 29["Segment
[1092, 1134, 0]"] + 30["Segment
[1142, 1175, 0]"] + 31["Segment
[1183, 1225, 0]"] + 32["Segment
[1233, 1240, 0]"] 33[Solid2d] end subgraph path62 [Path] - 62["Path
[1581, 1624, 0]"] - 63["Segment
[1630, 1663, 0]"] - 64["Segment
[1669, 1718, 0]"] - 65["Segment
[1724, 1768, 0]"] - 66["Segment
[1774, 1781, 0]"] + 62["Path
[1553, 1596, 0]"] + 63["Segment
[1602, 1635, 0]"] + 64["Segment
[1641, 1683, 0]"] + 65["Segment
[1689, 1733, 0]"] + 66["Segment
[1739, 1746, 0]"] 67[Solid2d] end subgraph path84 [Path] - 84["Path
[1916, 1958, 0]"] - 85["Segment
[1964, 1998, 0]"] - 86["Segment
[2004, 2054, 0]"] - 87["Segment
[2060, 2103, 0]"] - 88["Segment
[2109, 2116, 0]"] + 84["Path
[1881, 1923, 0]"] + 85["Segment
[1929, 1963, 0]"] + 86["Segment
[1969, 2012, 0]"] + 87["Segment
[2018, 2061, 0]"] + 88["Segment
[2067, 2074, 0]"] 89[Solid2d] end 1["Plane
[562, 579, 0]"] @@ -53,7 +53,7 @@ flowchart LR 21["SweepEdge Opposite"] 22["SweepEdge Adjacent"] 23["Plane
[834, 851, 0]"] - 34["Sweep Extrusion
[1276, 1299, 0]"] + 34["Sweep Extrusion
[1248, 1271, 0]"] 35[Wall] 36[Wall] 37[Wall] @@ -80,8 +80,8 @@ flowchart LR 58["SweepEdge Adjacent"] 59["SweepEdge Opposite"] 60["SweepEdge Adjacent"] - 61["Plane
[1558, 1575, 0]"] - 68["Sweep Extrusion
[1787, 1810, 0]"] + 61["Plane
[1530, 1547, 0]"] + 68["Sweep Extrusion
[1752, 1775, 0]"] 69[Wall] 70[Wall] 71[Wall] @@ -96,8 +96,8 @@ flowchart LR 80["SweepEdge Adjacent"] 81["SweepEdge Opposite"] 82["SweepEdge Adjacent"] - 83["Plane
[1893, 1910, 0]"] - 90["Sweep Extrusion
[2122, 2145, 0]"] + 83["Plane
[1858, 1875, 0]"] + 90["Sweep Extrusion
[2080, 2103, 0]"] 91[Wall] 92[Wall] 93[Wall] diff --git a/rust/kcl-lib/tests/kcl_samples/gear-rack/ast.snap b/rust/kcl-lib/tests/kcl_samples/gear-rack/ast.snap index 46e5a426a..37a8025d4 100644 --- a/rust/kcl-lib/tests/kcl_samples/gear-rack/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/gear-rack/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing gear-rack.kcl "Ok": { "body": [ { - "commentStart": 423, + "commentStart": 0, "declaration": { - "commentStart": 446, + "commentStart": 0, "end": 0, "id": { - "commentStart": 446, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 455, + "commentStart": 0, "end": 0, "raw": "100", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing gear-rack.kcl "type": "VariableDeclaration" }, { - "commentStart": 459, + "commentStart": 0, "declaration": { - "commentStart": 459, + "commentStart": 0, "end": 0, "id": { - "commentStart": 459, + "commentStart": 0, "end": 0, "name": "pitchHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 473, + "commentStart": 0, "end": 0, "raw": "11.5", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing gear-rack.kcl "type": "VariableDeclaration" }, { - "commentStart": 478, + "commentStart": 0, "declaration": { - "commentStart": 478, + "commentStart": 0, "end": 0, "id": { - "commentStart": 478, + "commentStart": 0, "end": 0, "name": "width", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 486, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing gear-rack.kcl "type": "VariableDeclaration" }, { - "commentStart": 488, + "commentStart": 0, "declaration": { - "commentStart": 488, + "commentStart": 0, "end": 0, "id": { - "commentStart": 488, + "commentStart": 0, "end": 0, "name": "height", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 497, + "commentStart": 0, "end": 0, "raw": "12", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing gear-rack.kcl "type": "VariableDeclaration" }, { - "commentStart": 500, + "commentStart": 0, "declaration": { - "commentStart": 500, + "commentStart": 0, "end": 0, "id": { - "commentStart": 500, + "commentStart": 0, "end": 0, "name": "minHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 512, + "commentStart": 0, "end": 0, "raw": "10.875", "start": 0, @@ -174,12 +174,12 @@ description: Result of parsing gear-rack.kcl "type": "VariableDeclaration" }, { - "commentStart": 518, + "commentStart": 0, "declaration": { - "commentStart": 551, + "commentStart": 0, "end": 0, "id": { - "commentStart": 551, + "commentStart": 0, "end": 0, "name": "rackBody", "start": 0, @@ -191,10 +191,10 @@ description: Result of parsing gear-rack.kcl "arguments": [ { "abs_path": false, - "commentStart": 576, + "commentStart": 0, "end": 0, "name": { - "commentStart": 576, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -208,10 +208,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 562, + "commentStart": 0, "end": 0, "name": { - "commentStart": 562, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -221,7 +221,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 562, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -230,18 +230,18 @@ description: Result of parsing gear-rack.kcl { "arguments": [ { - "commentStart": 600, + "commentStart": 0, "elements": [ { - "commentStart": 601, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 602, + "commentStart": 0, "end": 0, "name": { - "commentStart": 602, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -252,7 +252,7 @@ description: Result of parsing gear-rack.kcl "type": "Name", "type": "Name" }, - "commentStart": 601, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -261,7 +261,7 @@ description: Result of parsing gear-rack.kcl }, "operator": "/", "right": { - "commentStart": 611, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -277,7 +277,7 @@ description: Result of parsing gear-rack.kcl "type": "BinaryExpression" }, { - "commentStart": 614, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -295,7 +295,7 @@ description: Result of parsing gear-rack.kcl "type": "ArrayExpression" }, { - "commentStart": 618, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -304,10 +304,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 585, + "commentStart": 0, "end": 0, "name": { - "commentStart": 585, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -317,7 +317,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 585, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -328,21 +328,21 @@ description: Result of parsing gear-rack.kcl { "type": "LabeledArg", "label": { - "commentStart": 631, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 637, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 638, + "commentStart": 0, "end": 0, "name": { - "commentStart": 638, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -354,7 +354,7 @@ description: Result of parsing gear-rack.kcl "type": "Name" }, { - "commentStart": 646, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -375,10 +375,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 626, + "commentStart": 0, "end": 0, "name": { - "commentStart": 626, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -388,7 +388,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 626, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -400,17 +400,17 @@ description: Result of parsing gear-rack.kcl { "type": "LabeledArg", "label": { - "commentStart": 660, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 666, + "commentStart": 0, "elements": [ { - "commentStart": 667, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -423,10 +423,10 @@ description: Result of parsing gear-rack.kcl }, { "abs_path": false, - "commentStart": 670, + "commentStart": 0, "end": 0, "name": { - "commentStart": 670, + "commentStart": 0, "end": 0, "name": "minHeight", "start": 0, @@ -447,10 +447,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 655, + "commentStart": 0, "end": 0, "name": { - "commentStart": 655, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -460,7 +460,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 655, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -472,22 +472,22 @@ description: Result of parsing gear-rack.kcl { "type": "LabeledArg", "label": { - "commentStart": 692, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 698, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 700, + "commentStart": 0, "end": 0, "name": { - "commentStart": 700, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -498,7 +498,7 @@ description: Result of parsing gear-rack.kcl "type": "Name", "type": "Name" }, - "commentStart": 699, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -506,7 +506,7 @@ description: Result of parsing gear-rack.kcl "type": "UnaryExpression" }, { - "commentStart": 708, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -527,10 +527,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 687, + "commentStart": 0, "end": 0, "name": { - "commentStart": 687, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -540,7 +540,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 687, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -551,10 +551,10 @@ description: Result of parsing gear-rack.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 717, + "commentStart": 0, "end": 0, "name": { - "commentStart": 717, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -564,7 +564,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 717, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -575,7 +575,7 @@ description: Result of parsing gear-rack.kcl { "type": "LabeledArg", "label": { - "commentStart": 738, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -583,10 +583,10 @@ description: Result of parsing gear-rack.kcl }, "arg": { "abs_path": false, - "commentStart": 747, + "commentStart": 0, "end": 0, "name": { - "commentStart": 747, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -601,10 +601,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 730, + "commentStart": 0, "end": 0, "name": { - "commentStart": 730, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -614,7 +614,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 730, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -622,13 +622,13 @@ description: Result of parsing gear-rack.kcl "unlabeled": null } ], - "commentStart": 562, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "6": [ { - "commentStart": 753, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -661,12 +661,12 @@ description: Result of parsing gear-rack.kcl "type": "VariableDeclaration" }, { - "commentStart": 805, + "commentStart": 0, "declaration": { - "commentStart": 808, + "commentStart": 0, "end": 0, "id": { - "commentStart": 808, + "commentStart": 0, "end": 0, "name": "tooth", "start": 0, @@ -676,12 +676,12 @@ description: Result of parsing gear-rack.kcl "body": { "body": [ { - "commentStart": 820, + "commentStart": 0, "declaration": { - "commentStart": 820, + "commentStart": 0, "end": 0, "id": { - "commentStart": 820, + "commentStart": 0, "end": 0, "name": "toothSketch", "start": 0, @@ -693,10 +693,10 @@ description: Result of parsing gear-rack.kcl "arguments": [ { "abs_path": false, - "commentStart": 848, + "commentStart": 0, "end": 0, "name": { - "commentStart": 848, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -710,10 +710,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 834, + "commentStart": 0, "end": 0, "name": { - "commentStart": 834, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -723,7 +723,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 834, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -732,21 +732,21 @@ description: Result of parsing gear-rack.kcl { "arguments": [ { - "commentStart": 874, + "commentStart": 0, "elements": [ { - "commentStart": 875, + "commentStart": 0, "end": 0, "left": { - "commentStart": 875, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 876, + "commentStart": 0, "end": 0, "name": { - "commentStart": 876, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -757,7 +757,7 @@ description: Result of parsing gear-rack.kcl "type": "Name", "type": "Name" }, - "commentStart": 875, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -766,7 +766,7 @@ description: Result of parsing gear-rack.kcl }, "operator": "/", "right": { - "commentStart": 885, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -783,7 +783,7 @@ description: Result of parsing gear-rack.kcl }, "operator": "+", "right": { - "commentStart": 889, + "commentStart": 0, "end": 0, "raw": "0.567672", "start": 0, @@ -800,10 +800,10 @@ description: Result of parsing gear-rack.kcl }, { "abs_path": false, - "commentStart": 899, + "commentStart": 0, "end": 0, "name": { - "commentStart": 899, + "commentStart": 0, "end": 0, "name": "minHeight", "start": 0, @@ -821,7 +821,7 @@ description: Result of parsing gear-rack.kcl "type": "ArrayExpression" }, { - "commentStart": 911, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -830,10 +830,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 859, + "commentStart": 0, "end": 0, "name": { - "commentStart": 859, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -843,71 +843,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 859, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 945, - "elements": [ - { - "commentStart": 946, - "end": 0, - "raw": "0.157636", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.157636, - "suffix": "None" - } - }, - { - "commentStart": 956, - "end": 0, - "raw": "0.110378", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.110378, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 967, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 921, - "end": 0, - "name": { - "commentStart": 921, - "end": 0, - "name": "tangentialArcToRelative", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 921, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -918,17 +854,85 @@ description: Result of parsing gear-rack.kcl { "type": "LabeledArg", "label": { - "commentStart": 982, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 988, + "commentStart": 0, "elements": [ { - "commentStart": 989, + "commentStart": 0, + "end": 0, + "raw": "0.157636", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.157636, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.110378", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.110378, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, "end": 0, "raw": "0.329118", "start": 0, @@ -940,7 +944,7 @@ description: Result of parsing gear-rack.kcl } }, { - "commentStart": 999, + "commentStart": 0, "end": 0, "raw": "0.904244", "start": 0, @@ -961,10 +965,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 977, + "commentStart": 0, "end": 0, "name": { - "commentStart": 977, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -974,7 +978,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 977, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -984,54 +988,57 @@ description: Result of parsing gear-rack.kcl { "arguments": [ { - "commentStart": 1041, - "elements": [ - { - "commentStart": 1042, - "end": 0, - "raw": "0.157636", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.157636, - "suffix": "None" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.157636", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.157636, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.110378", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.110378, + "suffix": "None" + } } - }, - { - "commentStart": 1052, - "end": 0, - "raw": "0.110378", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.110378, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1063, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1017, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1017, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -1039,28 +1046,29 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1017, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1078, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1084, + "commentStart": 0, "elements": [ { - "commentStart": 1085, + "commentStart": 0, "end": 0, "raw": "0.186505", "start": 0, @@ -1072,7 +1080,7 @@ description: Result of parsing gear-rack.kcl } }, { - "commentStart": 1095, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1093,10 +1101,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 1073, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1073, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1106,125 +1114,53 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1073, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, - { - "arguments": [ - { - "commentStart": 1130, - "elements": [ - { - "commentStart": 1131, - "end": 0, - "raw": "0.157636", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.157636, - "suffix": "None" - } - }, - { - "argument": { - "commentStart": 1142, - "end": 0, - "raw": "0.110378", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.110378, - "suffix": "None" - } - }, - "commentStart": 1141, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1153, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1106, - "end": 0, - "name": { - "commentStart": 1106, - "end": 0, - "name": "tangentialArcToRelative", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1106, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1168, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1174, + "commentStart": 0, "elements": [ { - "commentStart": 1175, + "commentStart": 0, "end": 0, - "raw": "0.329118", + "raw": "0.157636", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 0.329118, + "value": 0.157636, "suffix": "None" } }, { "argument": { - "commentStart": 1186, + "commentStart": 0, "end": 0, - "raw": "0.904244", + "raw": "0.110378", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 0.904244, + "value": 0.110378, "suffix": "None" } }, - "commentStart": 1185, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1241,12 +1177,12 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 1163, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1163, + "commentStart": 0, "end": 0, - "name": "line", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -1254,7 +1190,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1163, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1264,62 +1200,65 @@ description: Result of parsing gear-rack.kcl { "arguments": [ { - "commentStart": 1228, - "elements": [ - { - "commentStart": 1229, - "end": 0, - "raw": "0.157636", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.157636, - "suffix": "None" - } - }, - { - "argument": { - "commentStart": 1240, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, "end": 0, - "raw": "0.110378", + "raw": "0.329118", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 0.110378, + "value": 0.329118, "suffix": "None" } }, - "commentStart": 1239, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1251, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "0.904244", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.904244, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1204, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1204, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "line", "start": 0, "type": "Identifier" }, @@ -1327,20 +1266,97 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1204, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.157636", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.157636, + "suffix": "None" + } + }, + { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "0.110378", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.110378, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [], "callee": { "abs_path": false, - "commentStart": 1261, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1261, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1350,7 +1366,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1261, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1361,7 +1377,7 @@ description: Result of parsing gear-rack.kcl { "type": "LabeledArg", "label": { - "commentStart": 1284, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1369,10 +1385,10 @@ description: Result of parsing gear-rack.kcl }, "arg": { "abs_path": false, - "commentStart": 1293, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1293, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -1387,10 +1403,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 1276, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1276, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1400,7 +1416,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1276, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1408,7 +1424,7 @@ description: Result of parsing gear-rack.kcl "unlabeled": null } ], - "commentStart": 834, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1426,10 +1442,10 @@ description: Result of parsing gear-rack.kcl { "argument": { "abs_path": false, - "commentStart": 1309, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1309, + "commentStart": 0, "end": 0, "name": "toothSketch", "start": 0, @@ -1440,18 +1456,18 @@ description: Result of parsing gear-rack.kcl "type": "Name", "type": "Name" }, - "commentStart": 1302, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 816, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 813, + "commentStart": 0, "end": 0, "params": [], "start": 0, @@ -1468,12 +1484,12 @@ description: Result of parsing gear-rack.kcl "type": "VariableDeclaration" }, { - "commentStart": 1322, + "commentStart": 0, "declaration": { - "commentStart": 1385, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1385, + "commentStart": 0, "end": 0, "name": "teeth", "start": 0, @@ -1485,10 +1501,10 @@ description: Result of parsing gear-rack.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1393, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1393, + "commentStart": 0, "end": 0, "name": "tooth", "start": 0, @@ -1498,7 +1514,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1393, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1509,17 +1525,17 @@ description: Result of parsing gear-rack.kcl { "type": "LabeledArg", "label": { - "commentStart": 1422, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1429, + "commentStart": 0, "elements": [ { - "commentStart": 1430, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -1531,7 +1547,7 @@ description: Result of parsing gear-rack.kcl } }, { - "commentStart": 1434, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1543,7 +1559,7 @@ description: Result of parsing gear-rack.kcl } }, { - "commentStart": 1437, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1564,14 +1580,14 @@ description: Result of parsing gear-rack.kcl { "type": "LabeledArg", "label": { - "commentStart": 1441, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1452, + "commentStart": 0, "end": 0, "raw": "1.570796", "start": 0, @@ -1586,14 +1602,14 @@ description: Result of parsing gear-rack.kcl { "type": "LabeledArg", "label": { - "commentStart": 1462, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1474, + "commentStart": 0, "end": 0, "raw": "63", "start": 0, @@ -1608,10 +1624,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 1406, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1406, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -1621,7 +1637,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1406, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1629,13 +1645,13 @@ description: Result of parsing gear-rack.kcl "unlabeled": null } ], - "commentStart": 1393, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 1477, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1668,12 +1684,12 @@ description: Result of parsing gear-rack.kcl "type": "VariableDeclaration" }, { - "commentStart": 1544, + "commentStart": 0, "declaration": { - "commentStart": 1544, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1544, + "commentStart": 0, "end": 0, "name": "endCapTooth", "start": 0, @@ -1685,10 +1701,10 @@ description: Result of parsing gear-rack.kcl "arguments": [ { "abs_path": false, - "commentStart": 1572, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1572, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -1702,10 +1718,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 1558, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1558, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1715,7 +1731,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1558, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1724,18 +1740,18 @@ description: Result of parsing gear-rack.kcl { "arguments": [ { - "commentStart": 1596, + "commentStart": 0, "elements": [ { - "commentStart": 1597, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1598, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1598, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1746,7 +1762,7 @@ description: Result of parsing gear-rack.kcl "type": "Name", "type": "Name" }, - "commentStart": 1597, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1755,7 +1771,7 @@ description: Result of parsing gear-rack.kcl }, "operator": "/", "right": { - "commentStart": 1607, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1771,7 +1787,7 @@ description: Result of parsing gear-rack.kcl "type": "BinaryExpression" }, { - "commentStart": 1610, + "commentStart": 0, "end": 0, "raw": "11.849525", "start": 0, @@ -1789,7 +1805,7 @@ description: Result of parsing gear-rack.kcl "type": "ArrayExpression" }, { - "commentStart": 1622, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1798,10 +1814,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 1581, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1581, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1811,7 +1827,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1581, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1822,17 +1838,17 @@ description: Result of parsing gear-rack.kcl { "type": "LabeledArg", "label": { - "commentStart": 1635, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1641, + "commentStart": 0, "elements": [ { - "commentStart": 1642, + "commentStart": 0, "end": 0, "raw": "0.314524", "start": 0, @@ -1845,7 +1861,7 @@ description: Result of parsing gear-rack.kcl }, { "argument": { - "commentStart": 1653, + "commentStart": 0, "end": 0, "raw": "0.864147", "start": 0, @@ -1856,7 +1872,7 @@ description: Result of parsing gear-rack.kcl "suffix": "None" } }, - "commentStart": 1652, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1873,10 +1889,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 1630, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1630, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1886,7 +1902,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1630, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1896,62 +1912,65 @@ description: Result of parsing gear-rack.kcl { "arguments": [ { - "commentStart": 1693, - "elements": [ - { - "commentStart": 1694, - "end": 0, - "raw": "0.157636", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.157636, - "suffix": "None" - } - }, - { - "argument": { - "commentStart": 1705, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, "end": 0, - "raw": "0.110378", + "raw": "0.157636", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 0.110378, + "value": 0.157636, "suffix": "None" } }, - "commentStart": 1704, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1716, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "0.110378", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.110378, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1669, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1669, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -1959,36 +1978,37 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1669, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1729, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1743, + "commentStart": 0, "elements": [ { - "commentStart": 1744, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1745, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1745, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1999,7 +2019,7 @@ description: Result of parsing gear-rack.kcl "type": "Name", "type": "Name" }, - "commentStart": 1744, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2008,7 +2028,7 @@ description: Result of parsing gear-rack.kcl }, "operator": "/", "right": { - "commentStart": 1754, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2025,10 +2045,10 @@ description: Result of parsing gear-rack.kcl }, { "abs_path": false, - "commentStart": 1757, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1757, + "commentStart": 0, "end": 0, "name": "minHeight", "start": 0, @@ -2049,10 +2069,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 1724, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1724, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2062,7 +2082,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1724, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2073,10 +2093,10 @@ description: Result of parsing gear-rack.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1774, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1774, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2086,7 +2106,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1774, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2097,7 +2117,7 @@ description: Result of parsing gear-rack.kcl { "type": "LabeledArg", "label": { - "commentStart": 1795, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2105,10 +2125,10 @@ description: Result of parsing gear-rack.kcl }, "arg": { "abs_path": false, - "commentStart": 1804, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1804, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -2123,10 +2143,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 1787, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1787, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2136,7 +2156,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1787, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2144,13 +2164,13 @@ description: Result of parsing gear-rack.kcl "unlabeled": null } ], - "commentStart": 1558, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "6": [ { - "commentStart": 1810, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2178,12 +2198,12 @@ description: Result of parsing gear-rack.kcl "type": "VariableDeclaration" }, { - "commentStart": 1878, + "commentStart": 0, "declaration": { - "commentStart": 1878, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1878, + "commentStart": 0, "end": 0, "name": "endCapTooth2", "start": 0, @@ -2195,10 +2215,10 @@ description: Result of parsing gear-rack.kcl "arguments": [ { "abs_path": false, - "commentStart": 1907, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1907, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -2212,10 +2232,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 1893, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1893, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2225,7 +2245,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1893, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2234,17 +2254,17 @@ description: Result of parsing gear-rack.kcl { "arguments": [ { - "commentStart": 1931, + "commentStart": 0, "elements": [ { - "commentStart": 1932, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1932, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1932, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2257,7 +2277,7 @@ description: Result of parsing gear-rack.kcl }, "operator": "/", "right": { - "commentStart": 1941, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2273,7 +2293,7 @@ description: Result of parsing gear-rack.kcl "type": "BinaryExpression" }, { - "commentStart": 1944, + "commentStart": 0, "end": 0, "raw": "11.849525", "start": 0, @@ -2291,7 +2311,7 @@ description: Result of parsing gear-rack.kcl "type": "ArrayExpression" }, { - "commentStart": 1956, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2300,10 +2320,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 1916, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1916, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2313,7 +2333,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1916, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2324,18 +2344,18 @@ description: Result of parsing gear-rack.kcl { "type": "LabeledArg", "label": { - "commentStart": 1969, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1975, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1977, + "commentStart": 0, "end": 0, "raw": "0.314524", "start": 0, @@ -2346,7 +2366,7 @@ description: Result of parsing gear-rack.kcl "suffix": "None" } }, - "commentStart": 1976, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2355,7 +2375,7 @@ description: Result of parsing gear-rack.kcl }, { "argument": { - "commentStart": 1988, + "commentStart": 0, "end": 0, "raw": "0.864147", "start": 0, @@ -2366,7 +2386,7 @@ description: Result of parsing gear-rack.kcl "suffix": "None" } }, - "commentStart": 1987, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2383,10 +2403,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 1964, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1964, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2396,7 +2416,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 1964, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2406,70 +2426,73 @@ description: Result of parsing gear-rack.kcl { "arguments": [ { - "commentStart": 2028, - "elements": [ - { - "argument": { - "commentStart": 2030, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "end", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "0.157636", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.157636, + "suffix": "None" + } + }, + "commentStart": 0, "end": 0, - "raw": "0.157636", + "operator": "-", "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.157636, - "suffix": "None" - } + "type": "UnaryExpression", + "type": "UnaryExpression" }, - "commentStart": 2029, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - { - "argument": { - "commentStart": 2041, + { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "0.110378", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.110378, + "suffix": "None" + } + }, + "commentStart": 0, "end": 0, - "raw": "0.110378", + "operator": "-", "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.110378, - "suffix": "None" - } - }, - "commentStart": 2040, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2052, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "UnaryExpression", + "type": "UnaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 2004, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2004, + "commentStart": 0, "end": 0, - "name": "tangentialArcToRelative", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -2477,35 +2500,36 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 2004, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2065, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2079, + "commentStart": 0, "elements": [ { - "commentStart": 2080, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2080, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2080, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2518,7 +2542,7 @@ description: Result of parsing gear-rack.kcl }, "operator": "/", "right": { - "commentStart": 2089, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2535,10 +2559,10 @@ description: Result of parsing gear-rack.kcl }, { "abs_path": false, - "commentStart": 2092, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2092, + "commentStart": 0, "end": 0, "name": "minHeight", "start": 0, @@ -2559,10 +2583,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 2060, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2060, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2572,7 +2596,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 2060, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2583,10 +2607,10 @@ description: Result of parsing gear-rack.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2109, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2109, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2596,7 +2620,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 2109, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2607,7 +2631,7 @@ description: Result of parsing gear-rack.kcl { "type": "LabeledArg", "label": { - "commentStart": 2130, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2615,10 +2639,10 @@ description: Result of parsing gear-rack.kcl }, "arg": { "abs_path": false, - "commentStart": 2139, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2139, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -2633,10 +2657,10 @@ description: Result of parsing gear-rack.kcl ], "callee": { "abs_path": false, - "commentStart": 2122, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2122, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2646,7 +2670,7 @@ description: Result of parsing gear-rack.kcl "start": 0, "type": "Name" }, - "commentStart": 2122, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2654,7 +2678,7 @@ description: Result of parsing gear-rack.kcl "unlabeled": null } ], - "commentStart": 1893, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2677,7 +2701,7 @@ description: Result of parsing gear-rack.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 391, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -2692,10 +2716,10 @@ description: Result of parsing gear-rack.kcl ], "properties": [ { - "commentStart": 400, + "commentStart": 0, "end": 0, "key": { - "commentStart": 400, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -2705,10 +2729,10 @@ description: Result of parsing gear-rack.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 420, + "commentStart": 0, "end": 0, "name": { - "commentStart": 420, + "commentStart": 0, "end": 0, "name": "mm", "start": 0, @@ -2729,7 +2753,7 @@ description: Result of parsing gear-rack.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 423, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/gear-rack/ops.snap b/rust/kcl-lib/tests/kcl_samples/gear-rack/ops.snap index f016f5ee5..de1039fad 100644 --- a/rust/kcl-lib/tests/kcl_samples/gear-rack/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/gear-rack/ops.snap @@ -5,7 +5,7 @@ description: Operations executed gear-rack.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -57,7 +57,7 @@ description: Operations executed gear-rack.kcl "name": "tooth", "functionSourceRange": [ 813, - 1322, + 1294, 0 ], "unlabeledArg": null, @@ -67,7 +67,7 @@ description: Operations executed gear-rack.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -212,7 +212,7 @@ description: Operations executed gear-rack.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -259,7 +259,7 @@ description: Operations executed gear-rack.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/kcl_samples/gear-rack/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/gear-rack/program_memory.snap index 33553da18..7f9e81f89 100644 --- a/rust/kcl-lib/tests/kcl_samples/gear-rack/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/gear-rack/program_memory.snap @@ -133,22 +133,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -316,22 +328,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -546,22 +570,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -851,22 +887,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1153,22 +1201,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1455,22 +1515,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1757,22 +1829,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2059,22 +2143,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2361,22 +2457,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2663,22 +2771,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2965,22 +3085,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3267,22 +3399,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3569,22 +3713,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3871,22 +4027,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4173,22 +4341,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4475,22 +4655,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4777,22 +4969,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5079,22 +5283,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5381,22 +5597,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5683,22 +5911,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5985,22 +6225,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6287,22 +6539,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6589,22 +6853,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6891,22 +7167,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7193,22 +7481,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7495,22 +7795,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7797,22 +8109,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8099,22 +8423,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8401,22 +8737,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8703,22 +9051,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9005,22 +9365,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9307,22 +9679,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9609,22 +9993,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9911,22 +10307,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10213,22 +10621,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10515,22 +10935,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10817,22 +11249,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11119,22 +11563,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11421,22 +11877,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11723,22 +12191,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12025,22 +12505,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12327,22 +12819,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12629,22 +13133,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12931,22 +13447,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13233,22 +13761,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13535,22 +14075,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13837,22 +14389,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14139,22 +14703,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14441,22 +15017,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14743,22 +15331,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15045,22 +15645,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15347,22 +15959,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15649,22 +16273,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15951,22 +16587,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16253,22 +16901,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16555,22 +17215,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16857,22 +17529,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -17159,22 +17843,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -17461,22 +18157,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -17763,22 +18471,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -18065,22 +18785,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -18367,22 +19099,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -18669,22 +19413,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -18971,22 +19727,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -19273,22 +20041,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -19575,22 +20355,34 @@ description: Variables in memory after executing gear-rack.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/kcl_samples/gear/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/gear/artifact_commands.snap index 0097d3c9b..fd739cf8a 100644 --- a/rust/kcl-lib/tests/kcl_samples/gear/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/gear/artifact_commands.snap @@ -161,7 +161,8 @@ description: Artifact commands gear.kcl "type": "extrude", "target": "[uuid]", "distance": 3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3766,7 +3767,8 @@ description: Artifact commands gear.kcl "type": "extrude", "target": "[uuid]", "distance": 3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3981,7 +3983,8 @@ description: Artifact commands gear.kcl "type": "extrude", "target": "[uuid]", "distance": -3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/gear/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/gear/artifact_graph_flowchart.snap.md index 7fd7bf34a..522600636 100644 --- a/rust/kcl-lib/tests/kcl_samples/gear/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/gear/artifact_graph_flowchart.snap.md @@ -214,13 +214,13 @@ flowchart LR 217[Solid2d] end subgraph path219 [Path] - 219["Path
[2569, 2669, 0]"] - 220["Segment
[2675, 2702, 0]"] - 221["Segment
[2708, 2736, 0]"] - 222["Segment
[2742, 2770, 0]"] - 223["Segment
[2776, 2896, 0]"] - 224["Segment
[2902, 3011, 0]"] - 225["Segment
[3017, 3024, 0]"] + 219["Path
[2574, 2674, 0]"] + 220["Segment
[2680, 2707, 0]"] + 221["Segment
[2713, 2741, 0]"] + 222["Segment
[2747, 2775, 0]"] + 223["Segment
[2781, 2901, 0]"] + 224["Segment
[2907, 3016, 0]"] + 225["Segment
[3022, 3029, 0]"] 226[Solid2d] end 1["Plane
[1299, 1316, 0]"] @@ -232,7 +232,7 @@ flowchart LR 10["SweepEdge Adjacent"] 11["Plane
[1826, 1843, 0]"] 218["Sweep Extrusion
[2099, 2127, 0]"] - 227["Sweep Extrusion
[3030, 3059, 0]"] + 227["Sweep Extrusion
[3035, 3064, 0]"] 228[Wall] 229[Wall] 230[Wall] @@ -245,7 +245,7 @@ flowchart LR 237["SweepEdge Adjacent"] 238["SweepEdge Opposite"] 239["SweepEdge Adjacent"] - 240["StartSketchOnFace
[2537, 2563, 0]"] + 240["StartSketchOnFace
[2537, 2568, 0]"] 1 --- 2 2 --- 3 2 ---- 5 diff --git a/rust/kcl-lib/tests/kcl_samples/gear/ast.snap b/rust/kcl-lib/tests/kcl_samples/gear/ast.snap index e7690fb1a..4454091bb 100644 --- a/rust/kcl-lib/tests/kcl_samples/gear/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/gear/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing gear.kcl "Ok": { "body": [ { - "commentStart": 472, + "commentStart": 0, "declaration": { - "commentStart": 495, + "commentStart": 0, "end": 0, "id": { - "commentStart": 495, + "commentStart": 0, "end": 0, "name": "nTeeth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 504, + "commentStart": 0, "end": 0, "raw": "21", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 507, + "commentStart": 0, "declaration": { - "commentStart": 507, + "commentStart": 0, "end": 0, "id": { - "commentStart": 507, + "commentStart": 0, "end": 0, "name": "module", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 516, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -75,26 +75,26 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 520, + "commentStart": 0, "declaration": { - "commentStart": 520, + "commentStart": 0, "end": 0, "id": { - "commentStart": 520, + "commentStart": 0, "end": 0, "name": "pitchDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 536, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 536, + "commentStart": 0, "end": 0, "name": { - "commentStart": 536, + "commentStart": 0, "end": 0, "name": "module", "start": 0, @@ -108,10 +108,10 @@ description: Result of parsing gear.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 545, + "commentStart": 0, "end": 0, "name": { - "commentStart": 545, + "commentStart": 0, "end": 0, "name": "nTeeth", "start": 0, @@ -136,19 +136,19 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 552, + "commentStart": 0, "declaration": { - "commentStart": 552, + "commentStart": 0, "end": 0, "id": { - "commentStart": 552, + "commentStart": 0, "end": 0, "name": "pressureAngle", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 568, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -169,12 +169,12 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 571, + "commentStart": 0, "declaration": { - "commentStart": 571, + "commentStart": 0, "end": 0, "id": { - "commentStart": 571, + "commentStart": 0, "end": 0, "name": "addendum", "start": 0, @@ -182,10 +182,10 @@ description: Result of parsing gear.kcl }, "init": { "abs_path": false, - "commentStart": 582, + "commentStart": 0, "end": 0, "name": { - "commentStart": 582, + "commentStart": 0, "end": 0, "name": "module", "start": 0, @@ -206,22 +206,22 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 589, + "commentStart": 0, "declaration": { - "commentStart": 589, + "commentStart": 0, "end": 0, "id": { - "commentStart": 589, + "commentStart": 0, "end": 0, "name": "deddendum", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 601, + "commentStart": 0, "end": 0, "left": { - "commentStart": 601, + "commentStart": 0, "end": 0, "raw": "1.25", "start": 0, @@ -235,10 +235,10 @@ description: Result of parsing gear.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 608, + "commentStart": 0, "end": 0, "name": { - "commentStart": 608, + "commentStart": 0, "end": 0, "name": "module", "start": 0, @@ -263,26 +263,26 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 615, + "commentStart": 0, "declaration": { - "commentStart": 615, + "commentStart": 0, "end": 0, "id": { - "commentStart": 615, + "commentStart": 0, "end": 0, "name": "baseDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 630, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 630, + "commentStart": 0, "end": 0, "name": { - "commentStart": 630, + "commentStart": 0, "end": 0, "name": "pitchDiameter", "start": 0, @@ -300,10 +300,10 @@ description: Result of parsing gear.kcl "arguments": [ { "abs_path": false, - "commentStart": 660, + "commentStart": 0, "end": 0, "name": { - "commentStart": 660, + "commentStart": 0, "end": 0, "name": "pressureAngle", "start": 0, @@ -317,10 +317,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 650, + "commentStart": 0, "end": 0, "name": { - "commentStart": 650, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -330,7 +330,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 650, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -339,10 +339,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 646, + "commentStart": 0, "end": 0, "name": { - "commentStart": 646, + "commentStart": 0, "end": 0, "name": "cos", "start": 0, @@ -352,7 +352,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 646, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -372,26 +372,26 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 676, + "commentStart": 0, "declaration": { - "commentStart": 676, + "commentStart": 0, "end": 0, "id": { - "commentStart": 676, + "commentStart": 0, "end": 0, "name": "tipDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 690, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 690, + "commentStart": 0, "end": 0, "name": { - "commentStart": 690, + "commentStart": 0, "end": 0, "name": "pitchDiameter", "start": 0, @@ -404,10 +404,10 @@ description: Result of parsing gear.kcl }, "operator": "+", "right": { - "commentStart": 706, + "commentStart": 0, "end": 0, "left": { - "commentStart": 706, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -421,10 +421,10 @@ description: Result of parsing gear.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 710, + "commentStart": 0, "end": 0, "name": { - "commentStart": 710, + "commentStart": 0, "end": 0, "name": "module", "start": 0, @@ -453,19 +453,19 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 717, + "commentStart": 0, "declaration": { - "commentStart": 717, + "commentStart": 0, "end": 0, "id": { - "commentStart": 717, + "commentStart": 0, "end": 0, "name": "gearHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 730, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -486,19 +486,19 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 731, + "commentStart": 0, "declaration": { - "commentStart": 780, + "commentStart": 0, "end": 0, "id": { - "commentStart": 780, + "commentStart": 0, "end": 0, "name": "cmo", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 786, + "commentStart": 0, "end": 0, "raw": "101", "start": 0, @@ -524,12 +524,12 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 790, + "commentStart": 0, "declaration": { - "commentStart": 790, + "commentStart": 0, "end": 0, "id": { - "commentStart": 790, + "commentStart": 0, "end": 0, "name": "rs", "start": 0, @@ -538,14 +538,14 @@ description: Result of parsing gear.kcl "init": { "arguments": [ { - "commentStart": 799, + "commentStart": 0, "end": 0, "endElement": { "abs_path": false, - "commentStart": 803, + "commentStart": 0, "end": 0, "name": { - "commentStart": 803, + "commentStart": 0, "end": 0, "name": "cmo", "start": 0, @@ -559,7 +559,7 @@ description: Result of parsing gear.kcl "endInclusive": true, "start": 0, "startElement": { - "commentStart": 800, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -578,17 +578,17 @@ description: Result of parsing gear.kcl "body": [ { "argument": { - "commentStart": 826, + "commentStart": 0, "end": 0, "left": { - "commentStart": 826, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 826, + "commentStart": 0, "end": 0, "name": { - "commentStart": 826, + "commentStart": 0, "end": 0, "name": "baseDiameter", "start": 0, @@ -601,7 +601,7 @@ description: Result of parsing gear.kcl }, "operator": "/", "right": { - "commentStart": 841, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -618,20 +618,20 @@ description: Result of parsing gear.kcl }, "operator": "+", "right": { - "commentStart": 845, + "commentStart": 0, "end": 0, "left": { - "commentStart": 845, + "commentStart": 0, "end": 0, "left": { - "commentStart": 845, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 845, + "commentStart": 0, "end": 0, "name": { - "commentStart": 845, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -645,10 +645,10 @@ description: Result of parsing gear.kcl "operator": "/", "right": { "abs_path": false, - "commentStart": 849, + "commentStart": 0, "end": 0, "name": { - "commentStart": 849, + "commentStart": 0, "end": 0, "name": "cmo", "start": 0, @@ -665,14 +665,14 @@ description: Result of parsing gear.kcl }, "operator": "*", "right": { - "commentStart": 856, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 856, + "commentStart": 0, "end": 0, "name": { - "commentStart": 856, + "commentStart": 0, "end": 0, "name": "tipDiameter", "start": 0, @@ -686,10 +686,10 @@ description: Result of parsing gear.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 870, + "commentStart": 0, "end": 0, "name": { - "commentStart": 870, + "commentStart": 0, "end": 0, "name": "baseDiameter", "start": 0, @@ -710,7 +710,7 @@ description: Result of parsing gear.kcl }, "operator": "/", "right": { - "commentStart": 886, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -729,24 +729,24 @@ description: Result of parsing gear.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 819, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 815, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 811, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 812, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -761,10 +761,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 795, + "commentStart": 0, "end": 0, "name": { - "commentStart": 795, + "commentStart": 0, "end": 0, "name": "map", "start": 0, @@ -774,7 +774,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 795, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -790,12 +790,12 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 890, + "commentStart": 0, "declaration": { - "commentStart": 930, + "commentStart": 0, "end": 0, "id": { - "commentStart": 930, + "commentStart": 0, "end": 0, "name": "angles", "start": 0, @@ -805,10 +805,10 @@ description: Result of parsing gear.kcl "arguments": [ { "abs_path": false, - "commentStart": 943, + "commentStart": 0, "end": 0, "name": { - "commentStart": 943, + "commentStart": 0, "end": 0, "name": "rs", "start": 0, @@ -828,17 +828,17 @@ description: Result of parsing gear.kcl { "arguments": [ { - "commentStart": 981, + "commentStart": 0, "end": 0, "left": { - "commentStart": 981, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 981, + "commentStart": 0, "end": 0, "name": { - "commentStart": 981, + "commentStart": 0, "end": 0, "name": "baseDiameter", "start": 0, @@ -851,7 +851,7 @@ description: Result of parsing gear.kcl }, "operator": "/", "right": { - "commentStart": 996, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -869,10 +869,10 @@ description: Result of parsing gear.kcl "operator": "/", "right": { "abs_path": false, - "commentStart": 1000, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1000, + "commentStart": 0, "end": 0, "name": "r", "start": 0, @@ -890,10 +890,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 976, + "commentStart": 0, "end": 0, "name": { - "commentStart": 976, + "commentStart": 0, "end": 0, "name": "acos", "start": 0, @@ -903,7 +903,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 976, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -912,10 +912,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 964, + "commentStart": 0, "end": 0, "name": { - "commentStart": 964, + "commentStart": 0, "end": 0, "name": "toDegrees", "start": 0, @@ -925,30 +925,30 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 964, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - "commentStart": 957, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 953, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 949, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 950, + "commentStart": 0, "end": 0, "name": "r", "start": 0, @@ -963,10 +963,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 939, + "commentStart": 0, "end": 0, "name": { - "commentStart": 939, + "commentStart": 0, "end": 0, "name": "map", "start": 0, @@ -976,7 +976,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 939, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -997,12 +997,12 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 1006, + "commentStart": 0, "declaration": { - "commentStart": 1043, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1043, + "commentStart": 0, "end": 0, "name": "invas", "start": 0, @@ -1012,10 +1012,10 @@ description: Result of parsing gear.kcl "arguments": [ { "abs_path": false, - "commentStart": 1055, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1055, + "commentStart": 0, "end": 0, "name": "angles", "start": 0, @@ -1031,7 +1031,7 @@ description: Result of parsing gear.kcl "body": [ { "argument": { - "commentStart": 1080, + "commentStart": 0, "end": 0, "left": { "arguments": [ @@ -1039,10 +1039,10 @@ description: Result of parsing gear.kcl "arguments": [ { "abs_path": false, - "commentStart": 1094, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1094, + "commentStart": 0, "end": 0, "name": "a", "start": 0, @@ -1056,10 +1056,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1084, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1084, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -1069,7 +1069,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1084, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1078,10 +1078,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1080, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1080, + "commentStart": 0, "end": 0, "name": "tan", "start": 0, @@ -1091,7 +1091,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1080, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1102,10 +1102,10 @@ description: Result of parsing gear.kcl "arguments": [ { "abs_path": false, - "commentStart": 1110, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1110, + "commentStart": 0, "end": 0, "name": "a", "start": 0, @@ -1119,10 +1119,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1100, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1100, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -1132,7 +1132,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1100, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1142,24 +1142,24 @@ description: Result of parsing gear.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1073, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 1069, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 1065, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 1066, + "commentStart": 0, "end": 0, "name": "a", "start": 0, @@ -1174,10 +1174,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1051, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1051, + "commentStart": 0, "end": 0, "name": "map", "start": 0, @@ -1187,7 +1187,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1051, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1208,12 +1208,12 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 1115, + "commentStart": 0, "declaration": { - "commentStart": 1143, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1143, + "commentStart": 0, "end": 0, "name": "xs", "start": 0, @@ -1222,14 +1222,14 @@ description: Result of parsing gear.kcl "init": { "arguments": [ { - "commentStart": 1152, + "commentStart": 0, "end": 0, "endElement": { "abs_path": false, - "commentStart": 1156, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1156, + "commentStart": 0, "end": 0, "name": "cmo", "start": 0, @@ -1243,7 +1243,7 @@ description: Result of parsing gear.kcl "endInclusive": true, "start": 0, "startElement": { - "commentStart": 1153, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1262,14 +1262,14 @@ description: Result of parsing gear.kcl "body": [ { "argument": { - "commentStart": 1179, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1179, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 1179, + "commentStart": 0, "end": 0, "name": "rs", "start": 0, @@ -1277,7 +1277,7 @@ description: Result of parsing gear.kcl "type": "Identifier" }, "property": { - "commentStart": 1182, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -1292,11 +1292,11 @@ description: Result of parsing gear.kcl "right": { "arguments": [ { - "commentStart": 1191, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 1191, + "commentStart": 0, "end": 0, "name": "invas", "start": 0, @@ -1304,7 +1304,7 @@ description: Result of parsing gear.kcl "type": "Identifier" }, "property": { - "commentStart": 1197, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -1318,10 +1318,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1187, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1187, + "commentStart": 0, "end": 0, "name": "cos", "start": 0, @@ -1331,7 +1331,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1187, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1341,24 +1341,24 @@ description: Result of parsing gear.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1172, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 1168, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 1164, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 1165, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -1373,10 +1373,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1148, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1148, + "commentStart": 0, "end": 0, "name": "map", "start": 0, @@ -1386,7 +1386,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1148, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1407,12 +1407,12 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 1203, + "commentStart": 0, "declaration": { - "commentStart": 1205, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1205, + "commentStart": 0, "end": 0, "name": "ys", "start": 0, @@ -1421,14 +1421,14 @@ description: Result of parsing gear.kcl "init": { "arguments": [ { - "commentStart": 1214, + "commentStart": 0, "end": 0, "endElement": { "abs_path": false, - "commentStart": 1218, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1218, + "commentStart": 0, "end": 0, "name": "cmo", "start": 0, @@ -1442,7 +1442,7 @@ description: Result of parsing gear.kcl "endInclusive": true, "start": 0, "startElement": { - "commentStart": 1215, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1461,14 +1461,14 @@ description: Result of parsing gear.kcl "body": [ { "argument": { - "commentStart": 1241, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1241, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 1241, + "commentStart": 0, "end": 0, "name": "rs", "start": 0, @@ -1476,7 +1476,7 @@ description: Result of parsing gear.kcl "type": "Identifier" }, "property": { - "commentStart": 1244, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -1491,11 +1491,11 @@ description: Result of parsing gear.kcl "right": { "arguments": [ { - "commentStart": 1253, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 1253, + "commentStart": 0, "end": 0, "name": "invas", "start": 0, @@ -1503,7 +1503,7 @@ description: Result of parsing gear.kcl "type": "Identifier" }, "property": { - "commentStart": 1259, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -1517,10 +1517,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1249, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1249, + "commentStart": 0, "end": 0, "name": "sin", "start": 0, @@ -1530,7 +1530,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1249, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1540,24 +1540,24 @@ description: Result of parsing gear.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1234, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 1230, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 1226, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 1227, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -1572,10 +1572,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1210, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1210, + "commentStart": 0, "end": 0, "name": "map", "start": 0, @@ -1585,7 +1585,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1210, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1601,12 +1601,12 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 1265, + "commentStart": 0, "declaration": { - "commentStart": 1292, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1292, + "commentStart": 0, "end": 0, "name": "body", "start": 0, @@ -1618,10 +1618,10 @@ description: Result of parsing gear.kcl "arguments": [ { "abs_path": false, - "commentStart": 1313, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1313, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -1635,10 +1635,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1299, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1299, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1648,7 +1648,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1299, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1659,17 +1659,17 @@ description: Result of parsing gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 1329, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1338, + "commentStart": 0, "elements": [ { - "commentStart": 1339, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1681,7 +1681,7 @@ description: Result of parsing gear.kcl } }, { - "commentStart": 1342, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1702,21 +1702,21 @@ description: Result of parsing gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 1346, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1355, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1355, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1355, + "commentStart": 0, "end": 0, "name": "baseDiameter", "start": 0, @@ -1729,7 +1729,7 @@ description: Result of parsing gear.kcl }, "operator": "/", "right": { - "commentStart": 1370, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1748,10 +1748,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1322, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1322, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1761,7 +1761,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1322, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1773,7 +1773,7 @@ description: Result of parsing gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 1386, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1781,10 +1781,10 @@ description: Result of parsing gear.kcl }, "arg": { "abs_path": false, - "commentStart": 1395, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1395, + "commentStart": 0, "end": 0, "name": "gearHeight", "start": 0, @@ -1799,10 +1799,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1378, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1378, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1812,7 +1812,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1378, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1820,7 +1820,7 @@ description: Result of parsing gear.kcl "unlabeled": null } ], - "commentStart": 1299, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1841,25 +1841,25 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 1406, + "commentStart": 0, "declaration": { - "commentStart": 1408, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1408, + "commentStart": 0, "end": 0, "name": "toothAngle", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1421, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1421, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1421, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -1873,10 +1873,10 @@ description: Result of parsing gear.kcl "operator": "/", "right": { "abs_path": false, - "commentStart": 1427, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1427, + "commentStart": 0, "end": 0, "name": "nTeeth", "start": 0, @@ -1893,7 +1893,7 @@ description: Result of parsing gear.kcl }, "operator": "/", "right": { - "commentStart": 1436, + "commentStart": 0, "end": 0, "raw": "1.5", "start": 0, @@ -1918,12 +1918,12 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 1439, + "commentStart": 0, "declaration": { - "commentStart": 1471, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1471, + "commentStart": 0, "end": 0, "name": "leftInvolute", "start": 0, @@ -1933,22 +1933,22 @@ description: Result of parsing gear.kcl "body": { "body": [ { - "commentStart": 1495, + "commentStart": 0, "declaration": { - "commentStart": 1495, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1495, + "commentStart": 0, "end": 0, "name": "j", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1499, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1499, + "commentStart": 0, "end": 0, "raw": "100", "start": 0, @@ -1962,10 +1962,10 @@ description: Result of parsing gear.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1505, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1505, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -1995,21 +1995,21 @@ description: Result of parsing gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 1546, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1560, + "commentStart": 0, "elements": [ { - "commentStart": 1561, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 1561, + "commentStart": 0, "end": 0, "name": "xs", "start": 0, @@ -2017,7 +2017,7 @@ description: Result of parsing gear.kcl "type": "Identifier" }, "property": { - "commentStart": 1564, + "commentStart": 0, "end": 0, "name": "j", "start": 0, @@ -2029,11 +2029,11 @@ description: Result of parsing gear.kcl "type": "MemberExpression" }, { - "commentStart": 1568, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 1568, + "commentStart": 0, "end": 0, "name": "ys", "start": 0, @@ -2041,7 +2041,7 @@ description: Result of parsing gear.kcl "type": "Identifier" }, "property": { - "commentStart": 1571, + "commentStart": 0, "end": 0, "name": "j", "start": 0, @@ -2062,10 +2062,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1537, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1537, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2075,17 +2075,17 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1537, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1542, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1542, + "commentStart": 0, "end": 0, "name": "sg", "start": 0, @@ -2097,20 +2097,20 @@ description: Result of parsing gear.kcl "type": "Name" } }, - "commentStart": 1506, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 1491, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "0": [ { - "commentStart": 1506, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2126,13 +2126,13 @@ description: Result of parsing gear.kcl }, "start": 0 }, - "commentStart": 1483, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 1484, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -2142,7 +2142,7 @@ description: Result of parsing gear.kcl { "type": "Parameter", "identifier": { - "commentStart": 1487, + "commentStart": 0, "end": 0, "name": "sg", "start": 0, @@ -2169,12 +2169,12 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 1577, + "commentStart": 0, "declaration": { - "commentStart": 1582, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1582, + "commentStart": 0, "end": 0, "name": "rightInvolute", "start": 0, @@ -2184,26 +2184,26 @@ description: Result of parsing gear.kcl "body": { "body": [ { - "commentStart": 1607, + "commentStart": 0, "declaration": { - "commentStart": 1607, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1607, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1611, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1611, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 1611, + "commentStart": 0, "end": 0, "name": "rs", "start": 0, @@ -2211,7 +2211,7 @@ description: Result of parsing gear.kcl "type": "Identifier" }, "property": { - "commentStart": 1614, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -2228,15 +2228,15 @@ description: Result of parsing gear.kcl { "arguments": [ { - "commentStart": 1633, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1634, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1634, + "commentStart": 0, "end": 0, "name": "toothAngle", "start": 0, @@ -2247,7 +2247,7 @@ description: Result of parsing gear.kcl "type": "Name", "type": "Name" }, - "commentStart": 1633, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2260,14 +2260,14 @@ description: Result of parsing gear.kcl { "arguments": [ { - "commentStart": 1662, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1662, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 1662, + "commentStart": 0, "end": 0, "name": "ys", "start": 0, @@ -2275,7 +2275,7 @@ description: Result of parsing gear.kcl "type": "Identifier" }, "property": { - "commentStart": 1665, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -2288,11 +2288,11 @@ description: Result of parsing gear.kcl }, "operator": "/", "right": { - "commentStart": 1670, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 1670, + "commentStart": 0, "end": 0, "name": "xs", "start": 0, @@ -2300,7 +2300,7 @@ description: Result of parsing gear.kcl "type": "Identifier" }, "property": { - "commentStart": 1673, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -2318,10 +2318,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1657, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1657, + "commentStart": 0, "end": 0, "name": "atan", "start": 0, @@ -2331,7 +2331,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1657, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2340,10 +2340,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1647, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1647, + "commentStart": 0, "end": 0, "name": "toDegrees", "start": 0, @@ -2353,7 +2353,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1647, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2366,10 +2366,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1623, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1623, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -2379,7 +2379,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1623, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2388,10 +2388,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1619, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1619, + "commentStart": 0, "end": 0, "name": "cos", "start": 0, @@ -2401,7 +2401,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1619, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2421,27 +2421,27 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 1682, + "commentStart": 0, "declaration": { - "commentStart": 1682, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1682, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1686, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 1687, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 1687, + "commentStart": 0, "end": 0, "name": "rs", "start": 0, @@ -2449,7 +2449,7 @@ description: Result of parsing gear.kcl "type": "Identifier" }, "property": { - "commentStart": 1690, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -2460,7 +2460,7 @@ description: Result of parsing gear.kcl "type": "MemberExpression", "type": "MemberExpression" }, - "commentStart": 1686, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2473,15 +2473,15 @@ description: Result of parsing gear.kcl { "arguments": [ { - "commentStart": 1709, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1710, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1710, + "commentStart": 0, "end": 0, "name": "toothAngle", "start": 0, @@ -2492,7 +2492,7 @@ description: Result of parsing gear.kcl "type": "Name", "type": "Name" }, - "commentStart": 1709, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2505,14 +2505,14 @@ description: Result of parsing gear.kcl { "arguments": [ { - "commentStart": 1738, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1738, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 1738, + "commentStart": 0, "end": 0, "name": "ys", "start": 0, @@ -2520,7 +2520,7 @@ description: Result of parsing gear.kcl "type": "Identifier" }, "property": { - "commentStart": 1741, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -2533,11 +2533,11 @@ description: Result of parsing gear.kcl }, "operator": "/", "right": { - "commentStart": 1746, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 1746, + "commentStart": 0, "end": 0, "name": "xs", "start": 0, @@ -2545,7 +2545,7 @@ description: Result of parsing gear.kcl "type": "Identifier" }, "property": { - "commentStart": 1749, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -2563,10 +2563,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1733, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1733, + "commentStart": 0, "end": 0, "name": "atan", "start": 0, @@ -2576,7 +2576,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1733, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2585,10 +2585,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1723, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1723, + "commentStart": 0, "end": 0, "name": "toDegrees", "start": 0, @@ -2598,7 +2598,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1723, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2611,10 +2611,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1699, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1699, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -2624,7 +2624,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1699, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2633,10 +2633,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1695, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1695, + "commentStart": 0, "end": 0, "name": "sin", "start": 0, @@ -2646,7 +2646,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1695, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2671,21 +2671,21 @@ description: Result of parsing gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 1774, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1788, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1789, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1789, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -2698,10 +2698,10 @@ description: Result of parsing gear.kcl }, { "abs_path": false, - "commentStart": 1792, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1792, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -2722,10 +2722,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1765, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1765, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2735,17 +2735,17 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1765, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1770, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1770, + "commentStart": 0, "end": 0, "name": "sg", "start": 0, @@ -2757,24 +2757,24 @@ description: Result of parsing gear.kcl "type": "Name" } }, - "commentStart": 1758, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 1603, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 1595, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 1596, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -2784,7 +2784,7 @@ description: Result of parsing gear.kcl { "type": "Parameter", "identifier": { - "commentStart": 1599, + "commentStart": 0, "end": 0, "name": "sg", "start": 0, @@ -2806,12 +2806,12 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 1797, + "commentStart": 0, "declaration": { - "commentStart": 1818, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1818, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -2823,10 +2823,10 @@ description: Result of parsing gear.kcl "arguments": [ { "abs_path": false, - "commentStart": 1840, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1840, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -2840,10 +2840,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1826, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1826, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2853,7 +2853,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1826, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2862,14 +2862,14 @@ description: Result of parsing gear.kcl { "arguments": [ { - "commentStart": 1864, + "commentStart": 0, "elements": [ { - "commentStart": 1865, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1865, + "commentStart": 0, "end": 0, "name": "xs", "start": 0, @@ -2877,7 +2877,7 @@ description: Result of parsing gear.kcl "type": "Identifier" }, "property": { - "commentStart": 1868, + "commentStart": 0, "end": 0, "raw": "101", "start": 0, @@ -2893,11 +2893,11 @@ description: Result of parsing gear.kcl "type": "MemberExpression" }, { - "commentStart": 1874, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1874, + "commentStart": 0, "end": 0, "name": "ys", "start": 0, @@ -2905,7 +2905,7 @@ description: Result of parsing gear.kcl "type": "Identifier" }, "property": { - "commentStart": 1877, + "commentStart": 0, "end": 0, "raw": "101", "start": 0, @@ -2927,7 +2927,7 @@ description: Result of parsing gear.kcl "type": "ArrayExpression" }, { - "commentStart": 1884, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2936,10 +2936,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1849, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1849, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2949,14 +2949,14 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1849, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1826, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2977,12 +2977,12 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 1887, + "commentStart": 0, "declaration": { - "commentStart": 1887, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1887, + "commentStart": 0, "end": 0, "name": "teeth", "start": 0, @@ -2993,10 +2993,10 @@ description: Result of parsing gear.kcl { "arguments": [ { - "commentStart": 1902, + "commentStart": 0, "end": 0, "endElement": { - "commentStart": 1906, + "commentStart": 0, "end": 0, "raw": "100", "start": 0, @@ -3010,7 +3010,7 @@ description: Result of parsing gear.kcl "endInclusive": true, "start": 0, "startElement": { - "commentStart": 1903, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3026,10 +3026,10 @@ description: Result of parsing gear.kcl }, { "abs_path": false, - "commentStart": 1912, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1912, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -3042,10 +3042,10 @@ description: Result of parsing gear.kcl }, { "abs_path": false, - "commentStart": 1919, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1919, + "commentStart": 0, "end": 0, "name": "leftInvolute", "start": 0, @@ -3059,10 +3059,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1895, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1895, + "commentStart": 0, "end": 0, "name": "reduce", "start": 0, @@ -3072,7 +3072,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1895, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3081,14 +3081,14 @@ description: Result of parsing gear.kcl { "arguments": [ { - "commentStart": 1942, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1951, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1951, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -3097,7 +3097,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1964, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3110,10 +3110,10 @@ description: Result of parsing gear.kcl } }, { - "commentStart": 1974, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1974, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -3123,10 +3123,10 @@ description: Result of parsing gear.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 1985, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1985, + "commentStart": 0, "end": 0, "name": "toothAngle", "start": 0, @@ -3139,10 +3139,10 @@ description: Result of parsing gear.kcl } }, { - "commentStart": 2004, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2004, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -3151,14 +3151,14 @@ description: Result of parsing gear.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2013, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2013, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2013, + "commentStart": 0, "end": 0, "name": "baseDiameter", "start": 0, @@ -3171,7 +3171,7 @@ description: Result of parsing gear.kcl }, "operator": "/", "right": { - "commentStart": 2028, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3193,7 +3193,7 @@ description: Result of parsing gear.kcl "type": "ObjectExpression" }, { - "commentStart": 2038, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3202,10 +3202,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 1938, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1938, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -3215,7 +3215,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 1938, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3224,10 +3224,10 @@ description: Result of parsing gear.kcl { "arguments": [ { - "commentStart": 2053, + "commentStart": 0, "end": 0, "endElement": { - "commentStart": 2057, + "commentStart": 0, "end": 0, "raw": "101", "start": 0, @@ -3241,7 +3241,7 @@ description: Result of parsing gear.kcl "endInclusive": true, "start": 0, "startElement": { - "commentStart": 2054, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3256,7 +3256,7 @@ description: Result of parsing gear.kcl "type": "ArrayRangeExpression" }, { - "commentStart": 2063, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3264,10 +3264,10 @@ description: Result of parsing gear.kcl }, { "abs_path": false, - "commentStart": 2066, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2066, + "commentStart": 0, "end": 0, "name": "rightInvolute", "start": 0, @@ -3281,10 +3281,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 2046, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2046, + "commentStart": 0, "end": 0, "name": "reduce", "start": 0, @@ -3294,7 +3294,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 2046, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3304,10 +3304,10 @@ description: Result of parsing gear.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2086, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2086, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -3317,7 +3317,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 2086, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3328,7 +3328,7 @@ description: Result of parsing gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 2107, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3336,10 +3336,10 @@ description: Result of parsing gear.kcl }, "arg": { "abs_path": false, - "commentStart": 2116, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2116, + "commentStart": 0, "end": 0, "name": "gearHeight", "start": 0, @@ -3354,10 +3354,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 2099, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2099, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3367,7 +3367,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 2099, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3379,17 +3379,17 @@ description: Result of parsing gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 2159, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2166, + "commentStart": 0, "elements": [ { - "commentStart": 2167, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3401,7 +3401,7 @@ description: Result of parsing gear.kcl } }, { - "commentStart": 2170, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3413,7 +3413,7 @@ description: Result of parsing gear.kcl } }, { - "commentStart": 2173, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3434,17 +3434,17 @@ description: Result of parsing gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 2184, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2193, + "commentStart": 0, "elements": [ { - "commentStart": 2194, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3456,7 +3456,7 @@ description: Result of parsing gear.kcl } }, { - "commentStart": 2197, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3468,7 +3468,7 @@ description: Result of parsing gear.kcl } }, { - "commentStart": 2200, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3489,7 +3489,7 @@ description: Result of parsing gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 2211, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -3497,10 +3497,10 @@ description: Result of parsing gear.kcl }, "arg": { "abs_path": false, - "commentStart": 2223, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2223, + "commentStart": 0, "end": 0, "name": "nTeeth", "start": 0, @@ -3515,14 +3515,14 @@ description: Result of parsing gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 2238, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2251, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -3537,14 +3537,14 @@ description: Result of parsing gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 2263, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2282, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -3556,10 +3556,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 2133, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2133, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -3569,7 +3569,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 2133, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3577,13 +3577,13 @@ description: Result of parsing gear.kcl "unlabeled": null } ], - "commentStart": 1895, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "5": [ { - "commentStart": 2294, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3611,19 +3611,19 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 2352, + "commentStart": 0, "declaration": { - "commentStart": 2352, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2352, + "commentStart": 0, "end": 0, "name": "keywayWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 2366, + "commentStart": 0, "end": 0, "raw": "0.250", "start": 0, @@ -3644,26 +3644,26 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 2372, + "commentStart": 0, "declaration": { - "commentStart": 2372, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2372, + "commentStart": 0, "end": 0, "name": "keywayDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 2386, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2386, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2386, + "commentStart": 0, "end": 0, "name": "keywayWidth", "start": 0, @@ -3676,7 +3676,7 @@ description: Result of parsing gear.kcl }, "operator": "/", "right": { - "commentStart": 2400, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3701,19 +3701,19 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 2402, + "commentStart": 0, "declaration": { - "commentStart": 2402, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2402, + "commentStart": 0, "end": 0, "name": "holeDiam", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 2413, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3734,19 +3734,19 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 2415, + "commentStart": 0, "declaration": { - "commentStart": 2415, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2415, + "commentStart": 0, "end": 0, "name": "holeRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 2428, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3767,12 +3767,12 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 2430, + "commentStart": 0, "declaration": { - "commentStart": 2430, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2430, + "commentStart": 0, "end": 0, "name": "startAngle", "start": 0, @@ -3781,17 +3781,17 @@ description: Result of parsing gear.kcl "init": { "arguments": [ { - "commentStart": 2448, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2448, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2448, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2448, + "commentStart": 0, "end": 0, "name": "keywayWidth", "start": 0, @@ -3804,7 +3804,7 @@ description: Result of parsing gear.kcl }, "operator": "/", "right": { - "commentStart": 2462, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3822,10 +3822,10 @@ description: Result of parsing gear.kcl "operator": "/", "right": { "abs_path": false, - "commentStart": 2466, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2466, + "commentStart": 0, "end": 0, "name": "holeRadius", "start": 0, @@ -3843,10 +3843,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 2443, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2443, + "commentStart": 0, "end": 0, "name": "asin", "start": 0, @@ -3856,7 +3856,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 2443, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3872,12 +3872,12 @@ description: Result of parsing gear.kcl "type": "VariableDeclaration" }, { - "commentStart": 2477, + "commentStart": 0, "declaration": { - "commentStart": 2528, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2528, + "commentStart": 0, "end": 0, "name": "keyWay", "start": 0, @@ -3888,37 +3888,38 @@ description: Result of parsing gear.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 2551, - "end": 0, - "name": { - "commentStart": 2551, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "body", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 2557, - "end": 0, - "raw": "'END'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 2537, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2537, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -3928,26 +3929,42 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 2537, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "body", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 2584, + "commentStart": 0, "elements": [ { - "commentStart": 2593, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2593, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2593, + "commentStart": 0, "end": 0, "name": "holeRadius", "start": 0, @@ -3963,10 +3980,10 @@ description: Result of parsing gear.kcl "arguments": [ { "abs_path": false, - "commentStart": 2610, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2610, + "commentStart": 0, "end": 0, "name": "startAngle", "start": 0, @@ -3980,10 +3997,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 2606, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2606, + "commentStart": 0, "end": 0, "name": "cos", "start": 0, @@ -3993,7 +4010,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 2606, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4004,14 +4021,14 @@ description: Result of parsing gear.kcl "type": "BinaryExpression" }, { - "commentStart": 2630, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2630, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2630, + "commentStart": 0, "end": 0, "name": "holeRadius", "start": 0, @@ -4027,10 +4044,10 @@ description: Result of parsing gear.kcl "arguments": [ { "abs_path": false, - "commentStart": 2647, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2647, + "commentStart": 0, "end": 0, "name": "startAngle", "start": 0, @@ -4044,10 +4061,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 2643, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2643, + "commentStart": 0, "end": 0, "name": "sin", "start": 0, @@ -4057,7 +4074,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 2643, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4074,7 +4091,7 @@ description: Result of parsing gear.kcl "type": "ArrayExpression" }, { - "commentStart": 2667, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4083,10 +4100,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 2569, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2569, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -4096,7 +4113,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 2569, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4107,7 +4124,7 @@ description: Result of parsing gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 2681, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4115,10 +4132,10 @@ description: Result of parsing gear.kcl }, "arg": { "abs_path": false, - "commentStart": 2690, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2690, + "commentStart": 0, "end": 0, "name": "keywayDepth", "start": 0, @@ -4133,10 +4150,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 2675, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2675, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -4146,7 +4163,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 2675, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4158,7 +4175,7 @@ description: Result of parsing gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 2714, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4167,10 +4184,10 @@ description: Result of parsing gear.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 2724, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2724, + "commentStart": 0, "end": 0, "name": "keywayWidth", "start": 0, @@ -4181,7 +4198,7 @@ description: Result of parsing gear.kcl "type": "Name", "type": "Name" }, - "commentStart": 2723, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4192,10 +4209,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 2708, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2708, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -4205,7 +4222,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 2708, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4217,7 +4234,7 @@ description: Result of parsing gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 2748, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4226,10 +4243,10 @@ description: Result of parsing gear.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 2758, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2758, + "commentStart": 0, "end": 0, "name": "keywayDepth", "start": 0, @@ -4240,7 +4257,7 @@ description: Result of parsing gear.kcl "type": "Name", "type": "Name" }, - "commentStart": 2757, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4251,10 +4268,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 2742, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2742, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -4264,7 +4281,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 2742, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4274,14 +4291,14 @@ description: Result of parsing gear.kcl { "arguments": [ { - "commentStart": 2780, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 2789, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2789, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -4290,7 +4307,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2800, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -4303,10 +4320,10 @@ description: Result of parsing gear.kcl } }, { - "commentStart": 2812, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2812, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -4315,91 +4332,71 @@ description: Result of parsing gear.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2825, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2825, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2825, - "end": 0, - "left": { - "commentStart": 2825, + "argument": { + "commentStart": 0, "end": 0, - "left": { - "argument": { - "commentStart": 2826, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - "commentStart": 2825, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - "operator": "*", - "right": { - "commentStart": 2830, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, + "raw": "1", "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } }, - "operator": "/", - "right": { + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "operator": "*", + "right": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "startAngle", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { "abs_path": false, - "commentStart": 2836, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2836, + "commentStart": 0, "end": 0, - "name": "PI", + "name": "toDegrees", "start": 0, "type": "Identifier" }, "path": [], "start": 0, - "type": "Name", "type": "Name" }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 2841, + "commentStart": 0, "end": 0, - "name": { - "commentStart": 2841, - "end": 0, - "name": "startAngle", - "start": 0, - "type": "Identifier" - }, - "path": [], "start": 0, - "type": "Name", - "type": "Name" + "type": "CallExpression", + "type": "CallExpression" }, "start": 0, "type": "BinaryExpression", @@ -4407,7 +4404,7 @@ description: Result of parsing gear.kcl }, "operator": "+", "right": { - "commentStart": 2854, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -4424,10 +4421,10 @@ description: Result of parsing gear.kcl } }, { - "commentStart": 2866, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2866, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -4437,10 +4434,10 @@ description: Result of parsing gear.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 2875, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2875, + "commentStart": 0, "end": 0, "name": "holeRadius", "start": 0, @@ -4458,7 +4455,7 @@ description: Result of parsing gear.kcl "type": "ObjectExpression" }, { - "commentStart": 2894, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4467,10 +4464,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 2776, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2776, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -4480,7 +4477,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 2776, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4489,14 +4486,14 @@ description: Result of parsing gear.kcl { "arguments": [ { - "commentStart": 2906, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 2915, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2915, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -4505,32 +4502,15 @@ description: Result of parsing gear.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2926, - "end": 0, - "left": { - "commentStart": 2926, - "end": 0, - "left": { - "commentStart": 2926, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, - "operator": "/", - "right": { + "arguments": [ + { "abs_path": false, - "commentStart": 2932, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2932, + "commentStart": 0, "end": 0, - "name": "PI", + "name": "startAngle", "start": 0, "type": "Identifier" }, @@ -4538,38 +4518,35 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name", "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "*", - "right": { + } + ], + "callee": { "abs_path": false, - "commentStart": 2937, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2937, + "commentStart": 0, "end": 0, - "name": "startAngle", + "name": "toDegrees", "start": 0, "type": "Identifier" }, "path": [], "start": 0, - "type": "Name", "type": "Name" }, + "commentStart": 0, + "end": 0, "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "CallExpression", + "type": "CallExpression" } }, { - "commentStart": 2956, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2956, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -4578,7 +4555,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2969, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -4591,10 +4568,10 @@ description: Result of parsing gear.kcl } }, { - "commentStart": 2981, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2981, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -4604,10 +4581,10 @@ description: Result of parsing gear.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 2990, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2990, + "commentStart": 0, "end": 0, "name": "holeRadius", "start": 0, @@ -4625,7 +4602,7 @@ description: Result of parsing gear.kcl "type": "ObjectExpression" }, { - "commentStart": 3009, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4634,10 +4611,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 2902, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2902, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -4647,7 +4624,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 2902, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4657,10 +4634,10 @@ description: Result of parsing gear.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 3017, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3017, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -4670,7 +4647,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 3017, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4681,7 +4658,7 @@ description: Result of parsing gear.kcl { "type": "LabeledArg", "label": { - "commentStart": 3038, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4690,10 +4667,10 @@ description: Result of parsing gear.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 3048, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3048, + "commentStart": 0, "end": 0, "name": "gearHeight", "start": 0, @@ -4704,7 +4681,7 @@ description: Result of parsing gear.kcl "type": "Name", "type": "Name" }, - "commentStart": 3047, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4715,10 +4692,10 @@ description: Result of parsing gear.kcl ], "callee": { "abs_path": false, - "commentStart": 3030, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3030, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -4728,7 +4705,7 @@ description: Result of parsing gear.kcl "start": 0, "type": "Name" }, - "commentStart": 3030, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4736,7 +4713,7 @@ description: Result of parsing gear.kcl "unlabeled": null } ], - "commentStart": 2537, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -4764,7 +4741,7 @@ description: Result of parsing gear.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 440, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -4779,10 +4756,10 @@ description: Result of parsing gear.kcl ], "properties": [ { - "commentStart": 449, + "commentStart": 0, "end": 0, "key": { - "commentStart": 449, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -4792,10 +4769,10 @@ description: Result of parsing gear.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 469, + "commentStart": 0, "end": 0, "name": { - "commentStart": 469, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -4816,7 +4793,7 @@ description: Result of parsing gear.kcl "nonCodeNodes": { "13": [ { - "commentStart": 1203, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4827,7 +4804,7 @@ description: Result of parsing gear.kcl ], "15": [ { - "commentStart": 1406, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4838,7 +4815,7 @@ description: Result of parsing gear.kcl ], "17": [ { - "commentStart": 1577, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4850,7 +4827,7 @@ description: Result of parsing gear.kcl }, "startNodes": [ { - "commentStart": 472, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/gear/ops.snap b/rust/kcl-lib/tests/kcl_samples/gear/ops.snap index d470ce75c..350c2f5ca 100644 --- a/rust/kcl-lib/tests/kcl_samples/gear/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/gear/ops.snap @@ -5531,7 +5531,7 @@ description: Operations executed gear.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -5578,7 +5578,7 @@ description: Operations executed gear.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -9410,19 +9410,10 @@ description: Operations executed gear.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -9430,7 +9421,15 @@ description: Operations executed gear.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupBegin", diff --git a/rust/kcl-lib/tests/kcl_samples/gear/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/gear/program_memory.snap index 5785c3ccb..3c12a8164 100644 --- a/rust/kcl-lib/tests/kcl_samples/gear/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/gear/program_memory.snap @@ -23,714 +23,918 @@ description: Variables in memory after executing gear.kcl "type": "Number", "value": 0.0, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 3.2781, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 4.6327, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 5.67, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 6.5427, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 7.31, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 8.0023, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 8.6377, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 9.2278, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 9.781, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 10.3031, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 10.7987, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 11.2713, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 11.7237, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 12.1581, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 12.5764, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 12.9802, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 13.3708, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 13.7492, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 14.1166, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 14.4737, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 14.8213, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 15.16, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 15.4905, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 15.8132, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 16.1286, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 16.4372, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 16.7393, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 17.0353, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 17.3255, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 17.6101, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 17.8895, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 18.1639, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 18.4335, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 18.6985, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 18.9591, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 19.2156, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 19.468, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 19.7165, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 19.9613, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 20.2026, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 20.4404, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 20.6748, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 20.906, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 21.1341, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 21.3592, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 21.5814, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 21.8007, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 22.0174, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 22.2313, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 22.4427, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 22.6516, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 22.858, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 23.0621, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 23.2639, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 23.4635, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 23.6608, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 23.8561, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 24.0492, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 24.2404, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 24.4296, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 24.6168, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 24.8022, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 24.9858, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 25.1675, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 25.3475, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 25.5258, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 25.7024, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 25.8774, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 26.0508, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 26.2226, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 26.3928, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 26.5616, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 26.7289, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 26.8947, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 27.0591, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 27.2221, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 27.3837, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 27.544, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 27.703, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 27.8607, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 28.0171, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 28.1723, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 28.3263, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 28.479, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 28.6306, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 28.781, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 28.9302, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 29.0783, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 29.2254, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 29.3713, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 29.5162, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 29.66, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 29.8028, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 29.9445, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 30.0853, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 30.225, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 30.3638, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 30.5016, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 30.6385, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 30.7744, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } }, { "type": "Number", "value": 30.9094, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Degrees" } } ] @@ -739,7 +943,13 @@ description: Variables in memory after executing gear.kcl "type": "Number", "value": 9.8668, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "body": { @@ -795,22 +1005,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -865,7 +1087,13 @@ description: Variables in memory after executing gear.kcl "type": "Number", "value": 0.625, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "gearHeight": { @@ -1801,17 +2029,26 @@ description: Variables in memory after executing gear.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1864,22 +2101,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1956,7 +2205,13 @@ description: Variables in memory after executing gear.kcl "type": "Number", "value": 0.125, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "keywayWidth": { @@ -2005,7 +2260,13 @@ description: Variables in memory after executing gear.kcl "type": "Number", "value": 10.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "pressureAngle": { @@ -2031,714 +2292,1326 @@ description: Variables in memory after executing gear.kcl "type": "Number", "value": 4.9334, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.9415, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.9496, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.9576, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.9657, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.9738, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.9819, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.99, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.9981, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0062, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0142, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0223, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0304, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0385, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0466, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0547, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0628, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0708, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0789, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.087, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0951, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1032, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1113, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1193, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1274, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1355, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1436, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1517, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1598, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1679, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1759, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.184, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1921, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2002, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2083, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2164, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2245, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2325, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2406, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2487, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2568, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2649, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.273, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2811, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2891, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2972, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3053, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3134, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3215, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3296, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3377, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3457, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3538, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3619, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.37, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3781, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3862, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3942, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4023, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4104, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4185, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4266, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4347, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4428, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4508, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4589, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.467, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4751, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4832, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4913, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4994, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5074, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5155, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5236, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5317, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5398, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5479, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.556, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.564, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5721, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5802, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5883, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5964, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6045, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6126, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6206, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6287, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6368, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6449, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.653, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6611, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6691, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6772, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6853, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6934, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.7015, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.7096, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.7177, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.7257, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.7338, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.7419, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.75, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } } ] @@ -2757,22 +3630,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2807,7 +3692,9 @@ description: Variables in memory after executing gear.kcl "type": "Number", "value": 0.1253, "ty": { - "type": "Unknown" + "type": "Known", + "type": "Angle", + "type": "Radians" } }, "teeth": { @@ -6715,22 +7602,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -10670,22 +11569,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -14625,22 +15536,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -18580,22 +19503,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -22535,22 +23470,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -26490,22 +27437,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -30445,22 +31404,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -34400,22 +35371,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -38355,22 +39338,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -42310,22 +43305,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -46265,22 +47272,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -50220,22 +51239,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -54175,22 +55206,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -58130,22 +59173,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -62085,22 +63140,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -66040,22 +67107,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -69995,22 +71074,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -73950,22 +75041,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -77905,22 +79008,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -81860,22 +82975,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -85815,22 +86942,34 @@ description: Variables in memory after executing gear.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -85874,14 +87013,26 @@ description: Variables in memory after executing gear.kcl "type": "Number", "value": 11.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "toothAngle": { "type": "Number", "value": 11.4286, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "xs": { @@ -85891,714 +87042,1326 @@ description: Variables in memory after executing gear.kcl "type": "Number", "value": 4.9334, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.9415, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.9496, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.9576, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.9657, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.9738, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.9819, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.99, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 4.9981, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0061, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0142, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0223, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0304, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0385, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0466, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0546, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0627, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0708, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0789, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.0869, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.095, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1031, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1112, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1192, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1273, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1354, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1434, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1515, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1596, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1676, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1757, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1837, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1918, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.1999, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2079, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.216, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.224, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2321, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2401, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2481, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2562, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2642, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2722, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2803, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2883, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.2963, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3044, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3124, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3204, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3284, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3364, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3444, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3525, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3605, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3685, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3765, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3845, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.3924, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4004, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4084, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4164, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4244, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4324, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4403, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4483, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4563, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4642, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4722, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4801, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.4881, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.496, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.504, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5119, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5198, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5277, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5357, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5436, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5515, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5594, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5673, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5752, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5831, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.591, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.5989, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6068, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6146, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6225, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6304, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6382, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6461, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6539, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6618, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6696, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6775, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6853, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.6931, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.7009, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.7087, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.7165, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.7243, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.7321, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 5.7399, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } } ] @@ -86610,714 +88373,1326 @@ description: Variables in memory after executing gear.kcl "type": "Number", "value": 0.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0003, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0009, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0016, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0025, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0035, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0046, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0058, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.007, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0084, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0098, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0114, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.013, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0146, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0164, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0182, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.02, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.022, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0239, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.026, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0281, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0303, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0325, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0347, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0371, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0394, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0419, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0443, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0469, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0494, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0521, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0547, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0575, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0602, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.063, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0659, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0688, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0717, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0747, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0778, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0808, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.084, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0871, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0903, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0936, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.0969, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1002, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1036, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.107, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1104, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1139, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1174, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.121, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1246, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1283, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.132, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1357, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1395, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1433, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1471, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.151, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1549, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1588, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1628, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1669, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1709, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.175, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1792, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1833, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1875, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1918, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.1961, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.2004, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.2047, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.2091, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.2135, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.218, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.2225, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.227, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.2316, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.2362, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.2408, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.2455, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.2502, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.2549, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.2597, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.2644, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.2693, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.2741, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.279, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.284, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.289, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.294, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.299, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.3041, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.3091, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.3143, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.3194, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.3246, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.3299, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.3351, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 0.3404, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } } ] diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/artifact_commands.snap index 7f7b50489..eb994c903 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/artifact_commands.snap @@ -218,7 +218,8 @@ description: Artifact commands gridfinity-baseplate-magnets.kcl "type": "extrude", "target": "[uuid]", "distance": 34.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -545,7 +546,8 @@ description: Artifact commands gridfinity-baseplate-magnets.kcl "unit": "degrees", "value": -90.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -2852,7 +2854,8 @@ description: Artifact commands gridfinity-baseplate-magnets.kcl "type": "extrude", "target": "[uuid]", "distance": -2.4, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3936,7 +3939,8 @@ description: Artifact commands gridfinity-baseplate-magnets.kcl "type": "extrude", "target": "[uuid]", "distance": -2.4, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/artifact_graph_flowchart.snap.md index 679bafa99..ea17177f6 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/artifact_graph_flowchart.snap.md @@ -3,86 +3,86 @@ flowchart LR subgraph path2 [Path] 2["Path
[922, 947, 0]"] 3["Segment
[955, 977, 0]"] - 4["Segment
[985, 1044, 0]"] - 5["Segment
[1052, 1079, 0]"] - 6["Segment
[1087, 1146, 0]"] - 7["Segment
[1154, 1161, 0]"] + 4["Segment
[985, 1029, 0]"] + 5["Segment
[1037, 1064, 0]"] + 6["Segment
[1072, 1116, 0]"] + 7["Segment
[1124, 1131, 0]"] 8[Solid2d] end subgraph path28 [Path] 28["Path
[922, 947, 0]"] 29["Segment
[955, 977, 0]"] - 30["Segment
[985, 1044, 0]"] - 31["Segment
[1052, 1079, 0]"] - 32["Segment
[1087, 1146, 0]"] - 33["Segment
[1154, 1161, 0]"] + 30["Segment
[985, 1029, 0]"] + 31["Segment
[1037, 1064, 0]"] + 32["Segment
[1072, 1116, 0]"] + 33["Segment
[1124, 1131, 0]"] 34[Solid2d] end subgraph path54 [Path] - 54["Path
[4777, 4857, 0]"] - 55["Segment
[4777, 4857, 0]"] + 54["Path
[4747, 4827, 0]"] + 55["Segment
[4747, 4827, 0]"] 56[Solid2d] end subgraph path58 [Path] - 58["Path
[4408, 4433, 0]"] - 59["Segment
[4441, 4482, 0]"] - 60["Segment
[4490, 4531, 0]"] - 61["Segment
[4539, 4592, 0]"] - 62["Segment
[4600, 4621, 0]"] + 58["Path
[4378, 4403, 0]"] + 59["Segment
[4411, 4452, 0]"] + 60["Segment
[4460, 4501, 0]"] + 61["Segment
[4509, 4562, 0]"] + 62["Segment
[4570, 4591, 0]"] 63[Solid2d] end subgraph path65 [Path] - 65["Path
[2753, 2840, 0]"] - 66["Segment
[2848, 2927, 0]"] - 67["Segment
[2935, 3041, 0]"] - 68["Segment
[3049, 3131, 0]"] - 69["Segment
[3139, 3185, 0]"] - 70["Segment
[3193, 3272, 0]"] - 71["Segment
[3280, 3388, 0]"] - 72["Segment
[3396, 3475, 0]"] - 73["Segment
[3483, 3529, 0]"] - 74["Segment
[3537, 3619, 0]"] - 75["Segment
[3627, 3736, 0]"] - 76["Segment
[3744, 3823, 0]"] - 77["Segment
[3831, 3896, 0]"] - 78["Segment
[3904, 3986, 0]"] - 79["Segment
[3994, 4103, 0]"] - 80["Segment
[4111, 4193, 0]"] - 81["Segment
[4201, 4250, 0]"] - 82["Segment
[4258, 4265, 0]"] + 65["Path
[2723, 2810, 0]"] + 66["Segment
[2818, 2897, 0]"] + 67["Segment
[2905, 3011, 0]"] + 68["Segment
[3019, 3101, 0]"] + 69["Segment
[3109, 3155, 0]"] + 70["Segment
[3163, 3242, 0]"] + 71["Segment
[3250, 3358, 0]"] + 72["Segment
[3366, 3445, 0]"] + 73["Segment
[3453, 3499, 0]"] + 74["Segment
[3507, 3589, 0]"] + 75["Segment
[3597, 3706, 0]"] + 76["Segment
[3714, 3793, 0]"] + 77["Segment
[3801, 3866, 0]"] + 78["Segment
[3874, 3956, 0]"] + 79["Segment
[3964, 4073, 0]"] + 80["Segment
[4081, 4163, 0]"] + 81["Segment
[4171, 4220, 0]"] + 82["Segment
[4228, 4235, 0]"] 83[Solid2d] end subgraph path100 [Path] - 100["Path
[4408, 4433, 0]"] - 101["Segment
[4441, 4482, 0]"] - 102["Segment
[4490, 4531, 0]"] - 103["Segment
[4539, 4592, 0]"] - 104["Segment
[4600, 4621, 0]"] + 100["Path
[4378, 4403, 0]"] + 101["Segment
[4411, 4452, 0]"] + 102["Segment
[4460, 4501, 0]"] + 103["Segment
[4509, 4562, 0]"] + 104["Segment
[4570, 4591, 0]"] 105[Solid2d] end subgraph path106 [Path] - 106["Path
[2753, 2840, 0]"] - 107["Segment
[2848, 2927, 0]"] - 108["Segment
[2935, 3041, 0]"] - 109["Segment
[3049, 3131, 0]"] - 110["Segment
[3139, 3185, 0]"] - 111["Segment
[3193, 3272, 0]"] - 112["Segment
[3280, 3388, 0]"] - 113["Segment
[3396, 3475, 0]"] - 114["Segment
[3483, 3529, 0]"] - 115["Segment
[3537, 3619, 0]"] - 116["Segment
[3627, 3736, 0]"] - 117["Segment
[3744, 3823, 0]"] - 118["Segment
[3831, 3896, 0]"] - 119["Segment
[3904, 3986, 0]"] - 120["Segment
[3994, 4103, 0]"] - 121["Segment
[4111, 4193, 0]"] - 122["Segment
[4201, 4250, 0]"] - 123["Segment
[4258, 4265, 0]"] + 106["Path
[2723, 2810, 0]"] + 107["Segment
[2818, 2897, 0]"] + 108["Segment
[2905, 3011, 0]"] + 109["Segment
[3019, 3101, 0]"] + 110["Segment
[3109, 3155, 0]"] + 111["Segment
[3163, 3242, 0]"] + 112["Segment
[3250, 3358, 0]"] + 113["Segment
[3366, 3445, 0]"] + 114["Segment
[3453, 3499, 0]"] + 115["Segment
[3507, 3589, 0]"] + 116["Segment
[3597, 3706, 0]"] + 117["Segment
[3714, 3793, 0]"] + 118["Segment
[3801, 3866, 0]"] + 119["Segment
[3874, 3956, 0]"] + 120["Segment
[3964, 4073, 0]"] + 121["Segment
[4081, 4163, 0]"] + 122["Segment
[4171, 4220, 0]"] + 123["Segment
[4228, 4235, 0]"] 124[Solid2d] end - 1["Plane
[1247, 1285, 0]"] - 9["Sweep Extrusion
[1234, 1328, 0]"] + 1["Plane
[1217, 1255, 0]"] + 9["Sweep Extrusion
[1204, 1298, 0]"] 10[Wall] 11[Wall] 12[Wall] @@ -100,8 +100,8 @@ flowchart LR 24["SweepEdge Adjacent"] 25["SweepEdge Opposite"] 26["SweepEdge Adjacent"] - 27["Plane
[1741, 1779, 0]"] - 35["Sweep Revolve
[1728, 1810, 0]"] + 27["Plane
[1711, 1749, 0]"] + 35["Sweep Revolve
[1698, 1780, 0]"] 36[Wall] 37[Wall] 38[Wall] @@ -119,10 +119,10 @@ flowchart LR 50["SweepEdge Adjacent"] 51["SweepEdge Opposite"] 52["SweepEdge Adjacent"] - 53["Plane
[4754, 4771, 0]"] - 57["Plane
[4380, 4400, 0]"] - 64["Plane
[2725, 2745, 0]"] - 84["Sweep Extrusion
[5200, 5242, 0]"] + 53["Plane
[4724, 4741, 0]"] + 57["Plane
[4350, 4370, 0]"] + 64["Plane
[2695, 2715, 0]"] + 84["Sweep Extrusion
[5170, 5212, 0]"] 85[Wall] 86[Wall] 87[Wall] @@ -137,8 +137,8 @@ flowchart LR 96["SweepEdge Adjacent"] 97["SweepEdge Opposite"] 98["SweepEdge Adjacent"] - 99["Plane
[5736, 5771, 0]"] - 125["Sweep Extrusion
[5854, 5905, 0]"] + 99["Plane
[5706, 5741, 0]"] + 125["Sweep Extrusion
[5824, 5875, 0]"] 126[Wall] 127[Wall] 128[Wall] @@ -153,18 +153,18 @@ flowchart LR 137["SweepEdge Adjacent"] 138["SweepEdge Opposite"] 139["SweepEdge Adjacent"] - 140["EdgeCut Fillet
[5305, 5644, 0]"] - 141["EdgeCut Fillet
[5305, 5644, 0]"] - 142["EdgeCut Fillet
[5305, 5644, 0]"] - 143["EdgeCut Fillet
[5305, 5644, 0]"] - 144["EdgeCut Fillet
[5969, 6313, 0]"] - 145["EdgeCut Fillet
[5969, 6313, 0]"] - 146["EdgeCut Fillet
[5969, 6313, 0]"] - 147["EdgeCut Fillet
[5969, 6313, 0]"] + 140["EdgeCut Fillet
[5275, 5614, 0]"] + 141["EdgeCut Fillet
[5275, 5614, 0]"] + 142["EdgeCut Fillet
[5275, 5614, 0]"] + 143["EdgeCut Fillet
[5275, 5614, 0]"] + 144["EdgeCut Fillet
[5939, 6283, 0]"] + 145["EdgeCut Fillet
[5939, 6283, 0]"] + 146["EdgeCut Fillet
[5939, 6283, 0]"] + 147["EdgeCut Fillet
[5939, 6283, 0]"] 148["StartSketchOnPlane
[894, 914, 0]"] 149["StartSketchOnPlane
[894, 914, 0]"] - 150["StartSketchOnPlane
[4380, 4400, 0]"] - 151["StartSketchOnPlane
[2725, 2745, 0]"] + 150["StartSketchOnPlane
[4350, 4370, 0]"] + 151["StartSketchOnPlane
[2695, 2715, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/ast.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/ast.snap index 5222e2921..7d04ddae7 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "Ok": { "body": [ { - "commentStart": 417, + "commentStart": 0, "declaration": { - "commentStart": 440, + "commentStart": 0, "end": 0, "id": { - "commentStart": 440, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 452, + "commentStart": 0, "end": 0, "raw": "42.0", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 457, + "commentStart": 0, "declaration": { - "commentStart": 457, + "commentStart": 0, "end": 0, "id": { - "commentStart": 457, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 472, + "commentStart": 0, "end": 0, "raw": "4.0", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 476, + "commentStart": 0, "declaration": { - "commentStart": 476, + "commentStart": 0, "end": 0, "id": { - "commentStart": 476, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 488, + "commentStart": 0, "end": 0, "raw": "0.7", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 492, + "commentStart": 0, "declaration": { - "commentStart": 492, + "commentStart": 0, "end": 0, "id": { - "commentStart": 492, + "commentStart": 0, "end": 0, "name": "secondStep", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 505, + "commentStart": 0, "end": 0, "raw": "1.8", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 509, + "commentStart": 0, "declaration": { - "commentStart": 509, + "commentStart": 0, "end": 0, "id": { - "commentStart": 509, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 521, + "commentStart": 0, "end": 0, "raw": "2.15", "start": 0, @@ -174,19 +174,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 526, + "commentStart": 0, "declaration": { - "commentStart": 526, + "commentStart": 0, "end": 0, "id": { - "commentStart": 526, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 541, + "commentStart": 0, "end": 0, "raw": "6.5", "start": 0, @@ -207,19 +207,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 545, + "commentStart": 0, "declaration": { - "commentStart": 545, + "commentStart": 0, "end": 0, "id": { - "commentStart": 545, + "commentStart": 0, "end": 0, "name": "magOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 557, + "commentStart": 0, "end": 0, "raw": "4.8", "start": 0, @@ -240,19 +240,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 561, + "commentStart": 0, "declaration": { - "commentStart": 561, + "commentStart": 0, "end": 0, "id": { - "commentStart": 561, + "commentStart": 0, "end": 0, "name": "magDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 572, + "commentStart": 0, "end": 0, "raw": "2.4", "start": 0, @@ -273,19 +273,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 575, + "commentStart": 0, "declaration": { - "commentStart": 613, + "commentStart": 0, "end": 0, "id": { - "commentStart": 613, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 629, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -311,19 +311,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 631, + "commentStart": 0, "declaration": { - "commentStart": 631, + "commentStart": 0, "end": 0, "id": { - "commentStart": 631, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 648, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -344,29 +344,29 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 649, + "commentStart": 0, "declaration": { - "commentStart": 750, + "commentStart": 0, "end": 0, "id": { - "commentStart": 750, + "commentStart": 0, "end": 0, "name": "height", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 759, + "commentStart": 0, "end": 0, "left": { - "commentStart": 759, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 759, + "commentStart": 0, "end": 0, "name": { - "commentStart": 759, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, @@ -380,10 +380,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 771, + "commentStart": 0, "end": 0, "name": { - "commentStart": 771, + "commentStart": 0, "end": 0, "name": "secondStep", "start": 0, @@ -401,10 +401,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 784, + "commentStart": 0, "end": 0, "name": { - "commentStart": 784, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, @@ -434,12 +434,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 793, + "commentStart": 0, "declaration": { - "commentStart": 865, + "commentStart": 0, "end": 0, "id": { - "commentStart": 865, + "commentStart": 0, "end": 0, "name": "face", "start": 0, @@ -449,12 +449,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "body": { "body": [ { - "commentStart": 881, + "commentStart": 0, "declaration": { - "commentStart": 881, + "commentStart": 0, "end": 0, "id": { - "commentStart": 881, + "commentStart": 0, "end": 0, "name": "faceSketch", "start": 0, @@ -466,10 +466,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "arguments": [ { "abs_path": false, - "commentStart": 908, + "commentStart": 0, "end": 0, "name": { - "commentStart": 908, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -483,10 +483,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 894, + "commentStart": 0, "end": 0, "name": { - "commentStart": 894, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -496,7 +496,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 894, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -505,10 +505,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "arguments": [ { - "commentStart": 937, + "commentStart": 0, "elements": [ { - "commentStart": 938, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -520,7 +520,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 941, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -538,7 +538,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "ArrayExpression" }, { - "commentStart": 945, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -547,10 +547,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 922, + "commentStart": 0, "end": 0, "name": { - "commentStart": 922, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -560,7 +560,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 922, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -571,7 +571,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 961, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -579,10 +579,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 970, + "commentStart": 0, "end": 0, "name": { - "commentStart": 970, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -597,10 +597,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 955, + "commentStart": 0, "end": 0, "name": { - "commentStart": 955, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -610,7 +610,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 955, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -620,92 +620,70 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "arguments": [ { - "commentStart": 1005, - "end": 0, - "properties": [ - { - "commentStart": 1007, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1007, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "45", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "argument": { - "commentStart": 1016, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - }, - "commentStart": 1015, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "value": 45.0, + "suffix": "None" } }, - { - "commentStart": 1020, - "end": 0, - "key": { - "commentStart": 1020, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1029, - "end": 0, - "name": { - "commentStart": 1029, - "end": 0, - "name": "thirdStep", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } }, { - "commentStart": 1042, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "lengthY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "thirdStep", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 985, + "commentStart": 0, "end": 0, "name": { - "commentStart": 985, + "commentStart": 0, "end": 0, - "name": "angledLineOfYLength", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -713,18 +691,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 985, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1058, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -733,10 +712,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 1068, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1068, + "commentStart": 0, "end": 0, "name": "secondStep", "start": 0, @@ -747,7 +726,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Name", "type": "Name" }, - "commentStart": 1067, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -758,10 +737,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 1052, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1052, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -771,7 +750,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 1052, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -781,92 +760,70 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "arguments": [ { - "commentStart": 1107, - "end": 0, - "properties": [ - { - "commentStart": 1109, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1109, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "45", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "argument": { - "commentStart": 1118, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - }, - "commentStart": 1117, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "value": 45.0, + "suffix": "None" } }, - { - "commentStart": 1122, - "end": 0, - "key": { - "commentStart": 1122, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1131, - "end": 0, - "name": { - "commentStart": 1131, - "end": 0, - "name": "firstStep", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } }, { - "commentStart": 1144, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "lengthY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "firstStep", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1087, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1087, + "commentStart": 0, "end": 0, - "name": "angledLineOfYLength", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -874,20 +831,21 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 1087, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [], "callee": { "abs_path": false, - "commentStart": 1154, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1154, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -897,14 +855,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 1154, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 894, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -922,10 +880,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "argument": { "abs_path": false, - "commentStart": 1171, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1171, + "commentStart": 0, "end": 0, "name": "faceSketch", "start": 0, @@ -936,24 +894,24 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Name", "type": "Name" }, - "commentStart": 1164, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 877, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 869, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 870, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -980,12 +938,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 1183, + "commentStart": 0, "declaration": { - "commentStart": 1221, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1221, + "commentStart": 0, "end": 0, "name": "singleSide", "start": 0, @@ -996,21 +954,21 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 1288, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1297, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1297, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1297, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -1023,14 +981,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 1310, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1310, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1310, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -1043,7 +1001,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "*", "right": { - "commentStart": 1325, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1066,10 +1024,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 1234, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1234, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1079,7 +1037,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 1234, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1091,7 +1049,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 1263, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -1099,10 +1057,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 1272, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1272, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -1117,10 +1075,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 1247, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1247, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -1130,17 +1088,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 1247, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1259, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1259, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -1155,10 +1113,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 1242, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1242, + "commentStart": 0, "end": 0, "name": "face", "start": 0, @@ -1168,7 +1126,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 1242, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1190,12 +1148,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 1328, + "commentStart": 0, "declaration": { - "commentStart": 1395, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1395, + "commentStart": 0, "end": 0, "name": "sides", "start": 0, @@ -1206,14 +1164,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 1438, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1451, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -1228,17 +1186,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 1458, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1465, + "commentStart": 0, "elements": [ { - "commentStart": 1466, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1250,7 +1208,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 1469, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1262,7 +1220,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 1472, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1283,24 +1241,24 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 1478, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1487, + "commentStart": 0, "elements": [ { - "commentStart": 1488, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1488, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1488, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -1313,7 +1271,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 1500, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1329,14 +1287,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "BinaryExpression" }, { - "commentStart": 1503, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1503, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1503, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -1349,7 +1307,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 1515, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1365,7 +1323,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "BinaryExpression" }, { - "commentStart": 1518, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1386,14 +1344,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 1524, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1536, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -1408,14 +1366,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 1541, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1560, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -1427,10 +1385,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 1403, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1403, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -1440,17 +1398,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 1403, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1424, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1424, + "commentStart": 0, "end": 0, "name": "singleSide", "start": 0, @@ -1477,26 +1435,26 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 1567, + "commentStart": 0, "declaration": { - "commentStart": 1595, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1595, + "commentStart": 0, "end": 0, "name": "axis000", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1605, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1609, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1609, + "commentStart": 0, "end": 0, "name": "direction", "start": 0, @@ -1505,10 +1463,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1621, + "commentStart": 0, "elements": [ { - "commentStart": 1622, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -1520,7 +1478,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 1627, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -1539,10 +1497,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 1635, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1635, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -1551,14 +1509,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1644, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1645, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1645, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -1571,10 +1529,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, { "abs_path": false, - "commentStart": 1659, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1659, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -1612,12 +1570,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 1674, + "commentStart": 0, "declaration": { - "commentStart": 1713, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1713, + "commentStart": 0, "end": 0, "name": "singleCorner", "start": 0, @@ -1628,7 +1586,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 1782, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, @@ -1636,7 +1594,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "argument": { - "commentStart": 1791, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1647,7 +1605,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "suffix": "None" } }, - "commentStart": 1790, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1658,7 +1616,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 1795, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -1666,10 +1624,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 1802, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1802, + "commentStart": 0, "end": 0, "name": "axis000", "start": 0, @@ -1684,10 +1642,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 1728, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1728, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -1697,7 +1655,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 1728, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1709,7 +1667,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 1757, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -1717,10 +1675,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 1766, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1766, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -1735,10 +1693,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 1741, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1741, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -1748,17 +1706,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 1741, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1753, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1753, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -1773,10 +1731,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 1736, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1736, + "commentStart": 0, "end": 0, "name": "face", "start": 0, @@ -1786,7 +1744,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 1736, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1808,12 +1766,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 1810, + "commentStart": 0, "declaration": { - "commentStart": 1845, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1845, + "commentStart": 0, "end": 0, "name": "corners", "start": 0, @@ -1824,14 +1782,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 1892, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1905, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -1846,17 +1804,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 1912, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1919, + "commentStart": 0, "elements": [ { - "commentStart": 1920, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1868,7 +1826,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 1923, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1880,7 +1838,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 1926, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1901,24 +1859,24 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 1932, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1941, + "commentStart": 0, "elements": [ { - "commentStart": 1942, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1942, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1942, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -1931,7 +1889,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 1954, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1947,14 +1905,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "BinaryExpression" }, { - "commentStart": 1957, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1957, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1957, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -1967,7 +1925,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 1969, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1983,7 +1941,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "BinaryExpression" }, { - "commentStart": 1972, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2004,14 +1962,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 1978, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1990, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -2026,14 +1984,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 1995, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2014, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -2045,10 +2003,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 1855, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1855, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -2058,17 +2016,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 1855, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1876, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1876, + "commentStart": 0, "end": 0, "name": "singleCorner", "start": 0, @@ -2095,12 +2053,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 2021, + "commentStart": 0, "declaration": { - "commentStart": 2067, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2067, + "commentStart": 0, "end": 0, "name": "basePlateSides", "start": 0, @@ -2113,17 +2071,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 2122, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2129, + "commentStart": 0, "elements": [ { - "commentStart": 2130, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -2135,7 +2093,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 2135, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2147,7 +2105,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 2140, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2168,7 +2126,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 2153, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -2176,10 +2134,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 2165, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2165, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -2194,7 +2152,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 2187, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -2202,10 +2160,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 2198, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2198, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -2220,10 +2178,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 2084, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2084, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -2233,17 +2191,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 2084, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2108, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2108, + "commentStart": 0, "end": 0, "name": "sides", "start": 0, @@ -2260,17 +2218,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 2237, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2244, + "commentStart": 0, "elements": [ { - "commentStart": 2245, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2282,7 +2240,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 2250, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -2294,7 +2252,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 2255, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2315,7 +2273,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 2261, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -2323,10 +2281,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 2273, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2273, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -2341,7 +2299,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 2289, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -2349,10 +2307,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 2300, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2300, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -2367,10 +2325,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 2221, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2221, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -2380,7 +2338,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 2221, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2388,13 +2346,13 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "unlabeled": null } ], - "commentStart": 2084, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 2310, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2427,12 +2385,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 2377, + "commentStart": 0, "declaration": { - "commentStart": 2377, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2377, + "commentStart": 0, "end": 0, "name": "basePlateCorners", "start": 0, @@ -2445,17 +2403,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 2436, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2443, + "commentStart": 0, "elements": [ { - "commentStart": 2444, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -2467,7 +2425,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 2449, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2479,7 +2437,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 2454, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2500,7 +2458,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 2467, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -2508,10 +2466,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 2479, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2479, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -2526,7 +2484,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 2501, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -2534,10 +2492,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 2512, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2512, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -2552,10 +2510,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 2396, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2396, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -2565,17 +2523,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 2396, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2420, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2420, + "commentStart": 0, "end": 0, "name": "corners", "start": 0, @@ -2592,17 +2550,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 2551, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2558, + "commentStart": 0, "elements": [ { - "commentStart": 2559, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2614,7 +2572,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 2564, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -2626,7 +2584,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 2569, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2647,7 +2605,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 2575, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -2655,10 +2613,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 2587, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2587, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -2673,7 +2631,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 2603, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -2681,10 +2639,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 2614, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2614, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -2699,10 +2657,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 2535, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2535, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -2712,7 +2670,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 2535, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2720,13 +2678,13 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "unlabeled": null } ], - "commentStart": 2396, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 2624, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2754,12 +2712,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 2677, + "commentStart": 0, "declaration": { - "commentStart": 2680, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2680, + "commentStart": 0, "end": 0, "name": "magnetCenterCutout", "start": 0, @@ -2769,12 +2727,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "body": { "body": [ { - "commentStart": 2710, + "commentStart": 0, "declaration": { - "commentStart": 2710, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2710, + "commentStart": 0, "end": 0, "name": "magnetSketch", "start": 0, @@ -2786,10 +2744,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "arguments": [ { "abs_path": false, - "commentStart": 2739, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2739, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -2803,10 +2761,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 2725, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2725, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2816,7 +2774,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 2725, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2825,17 +2783,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "arguments": [ { - "commentStart": 2768, + "commentStart": 0, "elements": [ { - "commentStart": 2779, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2779, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2779, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, @@ -2849,10 +2807,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2791, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2791, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, @@ -2868,10 +2826,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "BinaryExpression" }, { - "commentStart": 2811, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2811, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2885,10 +2843,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2815, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2815, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -2910,7 +2868,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "ArrayExpression" }, { - "commentStart": 2838, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2919,10 +2877,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 2753, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2753, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2932,7 +2890,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 2753, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2943,23 +2901,23 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 2854, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2863, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2863, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2863, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2863, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2973,10 +2931,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2867, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2867, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -2993,14 +2951,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 2883, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2883, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2883, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, @@ -3014,10 +2972,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2895, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2895, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, @@ -3038,14 +2996,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 2909, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2909, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2909, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -3058,7 +3016,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 2924, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3081,10 +3039,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 2848, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2848, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -3094,7 +3052,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 2848, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3104,14 +3062,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "arguments": [ { - "commentStart": 2939, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 2950, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2950, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -3120,7 +3078,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2963, + "commentStart": 0, "end": 0, "raw": "90.0", "start": 0, @@ -3133,10 +3091,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 2978, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2978, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -3145,7 +3103,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2989, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -3158,10 +3116,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 3003, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3003, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -3170,14 +3128,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3012, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3012, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3012, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -3190,7 +3148,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 3027, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3212,7 +3170,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "ObjectExpression" }, { - "commentStart": 3039, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3221,10 +3179,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 2935, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2935, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -3234,7 +3192,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 2935, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3245,7 +3203,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 3055, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3253,16 +3211,16 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "argument": { - "commentStart": 3066, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3066, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3066, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3066, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3276,10 +3234,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3070, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3070, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -3296,14 +3254,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 3086, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3086, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3086, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, @@ -3317,10 +3275,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3098, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3098, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, @@ -3341,14 +3299,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 3112, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3112, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3112, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -3361,7 +3319,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 3127, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3380,7 +3338,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 3064, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3391,10 +3349,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 3049, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3049, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -3404,7 +3362,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 3049, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3416,21 +3374,21 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 3145, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3154, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3154, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3154, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -3443,10 +3401,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 3167, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3167, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -3460,10 +3418,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3171, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3171, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -3486,10 +3444,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 3139, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3139, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -3499,7 +3457,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 3139, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3511,23 +3469,23 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 3199, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3208, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3208, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3208, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3208, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3541,10 +3499,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3212, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3212, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -3561,14 +3519,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 3228, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3228, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3228, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, @@ -3582,10 +3540,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3240, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3240, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, @@ -3606,14 +3564,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 3254, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3254, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3254, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -3626,7 +3584,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 3269, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3649,10 +3607,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 3193, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3193, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -3662,7 +3620,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 3193, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3672,14 +3630,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "arguments": [ { - "commentStart": 3284, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 3295, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3295, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -3688,7 +3646,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3308, + "commentStart": 0, "end": 0, "raw": "180.0", "start": 0, @@ -3701,10 +3659,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 3324, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3324, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -3713,7 +3671,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3335, + "commentStart": 0, "end": 0, "raw": "90.0", "start": 0, @@ -3726,10 +3684,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 3350, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3350, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -3738,14 +3696,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3359, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3359, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3359, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -3758,7 +3716,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 3374, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3780,7 +3738,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "ObjectExpression" }, { - "commentStart": 3386, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3789,10 +3747,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 3280, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3280, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -3802,7 +3760,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 3280, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3813,23 +3771,23 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 3402, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3411, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3411, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3411, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3411, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3843,10 +3801,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3415, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3415, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -3863,14 +3821,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 3431, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3431, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3431, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, @@ -3884,10 +3842,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3443, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3443, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, @@ -3908,14 +3866,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 3457, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3457, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3457, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -3928,7 +3886,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 3472, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3951,10 +3909,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 3396, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3396, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -3964,7 +3922,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 3396, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3976,21 +3934,21 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 3489, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3498, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3498, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3498, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -4003,10 +3961,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 3511, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3511, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -4020,10 +3978,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3515, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3515, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -4046,10 +4004,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 3483, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3483, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -4059,7 +4017,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 3483, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4071,7 +4029,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 3543, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4079,16 +4037,16 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "argument": { - "commentStart": 3554, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3554, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3554, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3554, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4102,10 +4060,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3558, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3558, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -4122,14 +4080,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 3574, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3574, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3574, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, @@ -4143,10 +4101,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3586, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3586, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, @@ -4167,14 +4125,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 3600, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3600, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3600, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -4187,7 +4145,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 3615, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4206,7 +4164,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 3552, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4217,10 +4175,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 3537, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3537, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -4230,7 +4188,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 3537, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4240,14 +4198,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "arguments": [ { - "commentStart": 3631, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 3642, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3642, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -4256,7 +4214,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3655, + "commentStart": 0, "end": 0, "raw": "270.0", "start": 0, @@ -4269,10 +4227,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 3671, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3671, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -4281,7 +4239,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3682, + "commentStart": 0, "end": 0, "raw": "180.0", "start": 0, @@ -4294,10 +4252,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 3698, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3698, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -4306,14 +4264,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3707, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3707, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3707, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -4326,7 +4284,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 3722, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4348,7 +4306,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "ObjectExpression" }, { - "commentStart": 3734, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4357,10 +4315,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 3627, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3627, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -4370,7 +4328,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 3627, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4381,23 +4339,23 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 3750, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3759, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3759, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3759, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3759, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4411,10 +4369,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3763, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3763, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -4431,14 +4389,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 3779, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3779, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3779, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, @@ -4452,10 +4410,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3791, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3791, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, @@ -4476,14 +4434,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 3805, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3805, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3805, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -4496,7 +4454,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 3820, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4519,10 +4477,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 3744, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3744, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -4532,7 +4490,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 3744, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4544,7 +4502,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 3837, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4552,14 +4510,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "argument": { - "commentStart": 3848, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3848, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3848, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -4572,10 +4530,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 3861, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3861, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -4589,10 +4547,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3865, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3865, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -4611,7 +4569,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 3846, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4622,14 +4580,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 3881, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3887, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -4640,10 +4598,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 3831, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3831, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -4653,7 +4611,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 3831, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4665,7 +4623,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 3910, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4673,16 +4631,16 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "argument": { - "commentStart": 3921, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3921, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3921, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3921, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4696,10 +4654,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3925, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3925, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -4716,14 +4674,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 3941, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3941, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3941, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, @@ -4737,10 +4695,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3953, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3953, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, @@ -4761,14 +4719,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 3967, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3967, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3967, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -4781,7 +4739,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 3982, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4800,7 +4758,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 3919, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4811,10 +4769,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 3904, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3904, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -4824,7 +4782,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 3904, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4834,14 +4792,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "arguments": [ { - "commentStart": 3998, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 4009, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4009, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -4850,7 +4808,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4022, + "commentStart": 0, "end": 0, "raw": "360.0", "start": 0, @@ -4863,10 +4821,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 4038, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4038, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -4875,7 +4833,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4049, + "commentStart": 0, "end": 0, "raw": "270.0", "start": 0, @@ -4888,10 +4846,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 4065, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4065, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -4900,14 +4858,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4074, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4074, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4074, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -4920,7 +4878,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 4089, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4942,7 +4900,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "ObjectExpression" }, { - "commentStart": 4101, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4951,10 +4909,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 3994, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3994, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -4964,7 +4922,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 3994, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4975,7 +4933,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 4117, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4983,16 +4941,16 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "argument": { - "commentStart": 4128, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4128, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4128, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4128, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5006,10 +4964,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4132, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4132, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -5026,14 +4984,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 4148, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4148, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4148, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, @@ -5047,10 +5005,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 4160, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4160, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, @@ -5071,14 +5029,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 4174, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4174, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4174, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -5091,7 +5049,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 4189, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5110,7 +5068,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 4126, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5121,10 +5079,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 4111, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4111, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -5134,7 +5092,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 4111, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5146,7 +5104,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 4207, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -5154,14 +5112,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "argument": { - "commentStart": 4218, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4218, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4218, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -5174,10 +5132,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "-", "right": { - "commentStart": 4231, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4231, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -5191,10 +5149,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4235, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4235, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -5213,7 +5171,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 4216, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5224,10 +5182,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 4201, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4201, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -5237,7 +5195,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 4201, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5248,10 +5206,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 4258, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4258, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -5261,14 +5219,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 4258, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 2725, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -5286,10 +5244,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "argument": { "abs_path": false, - "commentStart": 4275, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4275, + "commentStart": 0, "end": 0, "name": "magnetSketch", "start": 0, @@ -5300,24 +5258,24 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Name", "type": "Name" }, - "commentStart": 4268, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 2706, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 2698, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 2699, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -5339,12 +5297,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 4289, + "commentStart": 0, "declaration": { - "commentStart": 4339, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4339, + "commentStart": 0, "end": 0, "name": "magnetBase", "start": 0, @@ -5354,12 +5312,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "body": { "body": [ { - "commentStart": 4361, + "commentStart": 0, "declaration": { - "commentStart": 4361, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4361, + "commentStart": 0, "end": 0, "name": "magnetBaseSketch", "start": 0, @@ -5371,10 +5329,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "arguments": [ { "abs_path": false, - "commentStart": 4394, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4394, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -5388,10 +5346,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 4380, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4380, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -5401,7 +5359,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 4380, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5410,10 +5368,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "arguments": [ { - "commentStart": 4423, + "commentStart": 0, "elements": [ { - "commentStart": 4424, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5425,7 +5383,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 4427, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5443,7 +5401,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "ArrayExpression" }, { - "commentStart": 4431, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5452,10 +5410,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 4408, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4408, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -5465,7 +5423,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 4408, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5476,7 +5434,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 4447, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -5484,10 +5442,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 4456, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4456, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -5502,14 +5460,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 4467, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4473, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -5520,10 +5478,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 4441, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4441, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -5533,7 +5491,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 4441, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5545,7 +5503,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 4496, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -5553,10 +5511,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 4505, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4505, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -5571,14 +5529,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 4516, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4522, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -5589,10 +5547,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 4490, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4490, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -5602,7 +5560,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 4490, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5614,7 +5572,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 4545, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -5623,7 +5581,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "arg": { "arguments": [ { - "commentStart": 4573, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5632,10 +5590,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 4559, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4559, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -5645,7 +5603,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 4559, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5655,14 +5613,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 4577, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4583, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -5673,10 +5631,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 4539, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4539, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -5686,7 +5644,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 4539, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5698,14 +5656,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 4606, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4612, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -5716,10 +5674,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 4600, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4600, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -5729,7 +5687,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 4600, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5742,10 +5700,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "arguments": [ { "abs_path": false, - "commentStart": 4653, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4653, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -5759,10 +5717,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 4634, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4634, + "commentStart": 0, "end": 0, "name": "magnetCenterCutout", "start": 0, @@ -5772,14 +5730,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 4634, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, { - "commentStart": 4661, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5788,10 +5746,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 4629, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4629, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -5801,14 +5759,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 4629, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 4380, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -5826,10 +5784,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "argument": { "abs_path": false, - "commentStart": 4673, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4673, + "commentStart": 0, "end": 0, "name": "magnetBaseSketch", "start": 0, @@ -5840,24 +5798,24 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Name", "type": "Name" }, - "commentStart": 4666, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 4357, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 4349, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 4350, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -5884,12 +5842,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 4691, + "commentStart": 0, "declaration": { - "commentStart": 4738, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4738, + "commentStart": 0, "end": 0, "name": "magnetsSketch", "start": 0, @@ -5901,10 +5859,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "arguments": [ { "abs_path": false, - "commentStart": 4768, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4768, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -5918,10 +5876,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 4754, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4754, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -5931,7 +5889,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 4754, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5942,24 +5900,24 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 4784, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4793, + "commentStart": 0, "elements": [ { - "commentStart": 4794, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4794, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4794, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -5972,7 +5930,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "*", "right": { - "commentStart": 4809, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5988,14 +5946,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "BinaryExpression" }, { - "commentStart": 4812, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4812, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4812, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -6008,7 +5966,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "*", "right": { - "commentStart": 4827, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6033,21 +5991,21 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 4831, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4840, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4840, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4840, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -6060,7 +6018,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 4855, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6079,10 +6037,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 4777, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4777, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -6092,7 +6050,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 4777, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6104,24 +6062,24 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 4889, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4898, + "commentStart": 0, "elements": [ { - "commentStart": 4899, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4899, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4899, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -6134,7 +6092,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 4911, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6150,14 +6108,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "BinaryExpression" }, { - "commentStart": 4914, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4914, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4914, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -6170,7 +6128,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "operator": "/", "right": { - "commentStart": 4926, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6195,14 +6153,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 4937, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4949, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -6217,14 +6175,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 4959, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4972, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -6239,14 +6197,14 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 4984, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5003, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -6258,10 +6216,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 4863, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4863, + "commentStart": 0, "end": 0, "name": "patternCircular2d", "start": 0, @@ -6271,7 +6229,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 4863, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6279,13 +6237,13 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "unlabeled": null } ], - "commentStart": 4754, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "commentStart": 5015, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -6318,12 +6276,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 5064, + "commentStart": 0, "declaration": { - "commentStart": 5064, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5064, + "commentStart": 0, "end": 0, "name": "magnetProfile", "start": 0, @@ -6335,10 +6293,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "arguments": [ { "abs_path": false, - "commentStart": 5091, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5091, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -6352,10 +6310,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 5080, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5080, + "commentStart": 0, "end": 0, "name": "magnetBase", "start": 0, @@ -6365,7 +6323,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 5080, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6375,10 +6333,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "arguments": [ { "abs_path": false, - "commentStart": 5105, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5105, + "commentStart": 0, "end": 0, "name": "magnetsSketch", "start": 0, @@ -6390,7 +6348,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Name" }, { - "commentStart": 5120, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6399,10 +6357,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 5100, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5100, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -6412,20 +6370,20 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 5100, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 5080, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 5122, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -6453,12 +6411,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 5179, + "commentStart": 0, "declaration": { - "commentStart": 5179, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5179, + "commentStart": 0, "end": 0, "name": "magnetHolesExtrude", "start": 0, @@ -6469,7 +6427,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 5223, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6478,10 +6436,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 5233, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5233, + "commentStart": 0, "end": 0, "name": "magDepth", "start": 0, @@ -6492,7 +6450,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Name", "type": "Name" }, - "commentStart": 5232, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6503,10 +6461,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 5200, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5200, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -6516,17 +6474,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 5200, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 5208, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5208, + "commentStart": 0, "end": 0, "name": "magnetProfile", "start": 0, @@ -6548,12 +6506,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 5242, + "commentStart": 0, "declaration": { - "commentStart": 5277, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5277, + "commentStart": 0, "end": 0, "name": "magnetHolesExtrudeFillets", "start": 0, @@ -6564,7 +6522,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 5337, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -6572,10 +6530,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 5346, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5346, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -6590,31 +6548,31 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 5362, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5369, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 5395, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5395, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5395, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5395, + "commentStart": 0, "end": 0, "name": "magnetHolesExtrude", "start": 0, @@ -6622,7 +6580,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Identifier" }, "property": { - "commentStart": 5414, + "commentStart": 0, "end": 0, "name": "sketch", "start": 0, @@ -6634,7 +6592,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 5421, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -6646,7 +6604,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 5426, + "commentStart": 0, "end": 0, "name": "line001", "start": 0, @@ -6660,10 +6618,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 5375, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5375, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -6673,7 +6631,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 5375, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6682,19 +6640,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "arguments": [ { - "commentStart": 5464, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5464, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5464, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5464, + "commentStart": 0, "end": 0, "name": "magnetHolesExtrude", "start": 0, @@ -6702,7 +6660,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Identifier" }, "property": { - "commentStart": 5483, + "commentStart": 0, "end": 0, "name": "sketch", "start": 0, @@ -6714,7 +6672,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 5490, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -6726,7 +6684,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 5495, + "commentStart": 0, "end": 0, "name": "line001", "start": 0, @@ -6740,10 +6698,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 5440, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5440, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -6753,7 +6711,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 5440, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6762,19 +6720,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "arguments": [ { - "commentStart": 5529, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5529, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5529, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5529, + "commentStart": 0, "end": 0, "name": "magnetHolesExtrude", "start": 0, @@ -6782,7 +6740,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Identifier" }, "property": { - "commentStart": 5548, + "commentStart": 0, "end": 0, "name": "sketch", "start": 0, @@ -6794,7 +6752,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 5555, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -6806,7 +6764,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 5560, + "commentStart": 0, "end": 0, "name": "line003", "start": 0, @@ -6820,10 +6778,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 5509, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5509, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -6833,7 +6791,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 5509, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6842,19 +6800,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "arguments": [ { - "commentStart": 5598, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5598, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5598, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5598, + "commentStart": 0, "end": 0, "name": "magnetHolesExtrude", "start": 0, @@ -6862,7 +6820,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Identifier" }, "property": { - "commentStart": 5617, + "commentStart": 0, "end": 0, "name": "sketch", "start": 0, @@ -6874,7 +6832,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 5624, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -6886,7 +6844,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 5629, + "commentStart": 0, "end": 0, "name": "line003", "start": 0, @@ -6900,10 +6858,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 5574, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5574, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -6913,7 +6871,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 5574, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6929,10 +6887,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 5305, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5305, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -6942,17 +6900,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 5305, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 5315, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5315, + "commentStart": 0, "end": 0, "name": "magnetHolesExtrude", "start": 0, @@ -6979,12 +6937,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 5644, + "commentStart": 0, "declaration": { - "commentStart": 5700, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5700, + "commentStart": 0, "end": 0, "name": "magnetProfileNoMagnets", "start": 0, @@ -6997,7 +6955,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 5752, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -7006,10 +6964,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 5762, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5762, + "commentStart": 0, "end": 0, "name": "magDepth", "start": 0, @@ -7020,7 +6978,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Name", "type": "Name" }, - "commentStart": 5761, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7031,10 +6989,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 5736, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5736, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -7044,17 +7002,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 5736, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 5748, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5748, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -7069,10 +7027,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 5725, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5725, + "commentStart": 0, "end": 0, "name": "magnetBase", "start": 0, @@ -7082,7 +7040,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 5725, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7103,12 +7061,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 5772, + "commentStart": 0, "declaration": { - "commentStart": 5832, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5832, + "commentStart": 0, "end": 0, "name": "magnetCutoutExtrude", "start": 0, @@ -7119,7 +7077,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 5886, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -7128,10 +7086,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 5896, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5896, + "commentStart": 0, "end": 0, "name": "magDepth", "start": 0, @@ -7142,7 +7100,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Name", "type": "Name" }, - "commentStart": 5895, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7153,10 +7111,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 5854, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5854, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -7166,17 +7124,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 5854, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 5862, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5862, + "commentStart": 0, "end": 0, "name": "magnetProfileNoMagnets", "start": 0, @@ -7203,12 +7161,12 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 5905, + "commentStart": 0, "declaration": { - "commentStart": 5940, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5940, + "commentStart": 0, "end": 0, "name": "magnetCutoutExtrudeFillets", "start": 0, @@ -7219,7 +7177,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 6002, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -7227,10 +7185,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 6011, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6011, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -7245,31 +7203,31 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 6027, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6034, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 6060, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6060, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6060, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6060, + "commentStart": 0, "end": 0, "name": "magnetCutoutExtrude", "start": 0, @@ -7277,7 +7235,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Identifier" }, "property": { - "commentStart": 6080, + "commentStart": 0, "end": 0, "name": "sketch", "start": 0, @@ -7289,7 +7247,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 6087, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -7301,7 +7259,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 6092, + "commentStart": 0, "end": 0, "name": "line001", "start": 0, @@ -7315,10 +7273,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 6040, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6040, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -7328,7 +7286,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 6040, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7337,19 +7295,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "arguments": [ { - "commentStart": 6130, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6130, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6130, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6130, + "commentStart": 0, "end": 0, "name": "magnetCutoutExtrude", "start": 0, @@ -7357,7 +7315,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Identifier" }, "property": { - "commentStart": 6150, + "commentStart": 0, "end": 0, "name": "sketch", "start": 0, @@ -7369,7 +7327,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 6157, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -7381,7 +7339,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 6162, + "commentStart": 0, "end": 0, "name": "line001", "start": 0, @@ -7395,10 +7353,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 6106, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6106, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -7408,7 +7366,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 6106, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7417,19 +7375,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "arguments": [ { - "commentStart": 6196, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6196, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6196, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6196, + "commentStart": 0, "end": 0, "name": "magnetCutoutExtrude", "start": 0, @@ -7437,7 +7395,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Identifier" }, "property": { - "commentStart": 6216, + "commentStart": 0, "end": 0, "name": "sketch", "start": 0, @@ -7449,7 +7407,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 6223, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -7461,7 +7419,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 6228, + "commentStart": 0, "end": 0, "name": "line003", "start": 0, @@ -7475,10 +7433,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 6176, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6176, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -7488,7 +7446,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 6176, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7497,19 +7455,19 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "arguments": [ { - "commentStart": 6266, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6266, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6266, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6266, + "commentStart": 0, "end": 0, "name": "magnetCutoutExtrude", "start": 0, @@ -7517,7 +7475,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "Identifier" }, "property": { - "commentStart": 6286, + "commentStart": 0, "end": 0, "name": "sketch", "start": 0, @@ -7529,7 +7487,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 6293, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -7541,7 +7499,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "MemberExpression" }, "property": { - "commentStart": 6298, + "commentStart": 0, "end": 0, "name": "line003", "start": 0, @@ -7555,10 +7513,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 6242, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6242, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -7568,7 +7526,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 6242, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7584,10 +7542,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 5969, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5969, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -7597,17 +7555,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 5969, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 5979, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5979, + "commentStart": 0, "end": 0, "name": "magnetCutoutExtrude", "start": 0, @@ -7634,7 +7592,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "VariableDeclaration" }, { - "commentStart": 6313, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -7643,17 +7601,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 6414, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6421, + "commentStart": 0, "elements": [ { - "commentStart": 6422, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -7665,7 +7623,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 6427, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -7677,7 +7635,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 6432, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -7698,7 +7656,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 6445, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -7706,10 +7664,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 6457, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6457, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -7724,7 +7682,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 6479, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -7732,10 +7690,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 6490, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6490, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -7750,10 +7708,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 6356, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6356, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -7763,17 +7721,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 6356, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 6380, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6380, + "commentStart": 0, "end": 0, "name": "magnetHolesExtrudeFillets", "start": 0, @@ -7790,17 +7748,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 6529, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6536, + "commentStart": 0, "elements": [ { - "commentStart": 6537, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -7812,7 +7770,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 6542, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -7824,7 +7782,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 6547, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -7845,7 +7803,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 6553, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -7853,10 +7811,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 6565, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6565, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -7871,7 +7829,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 6581, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -7879,10 +7837,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 6592, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6592, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -7897,10 +7855,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 6513, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6513, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -7910,7 +7868,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 6513, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7918,13 +7876,13 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "unlabeled": null } ], - "commentStart": 6356, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 6602, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -7952,7 +7910,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "ExpressionStatement" }, { - "commentStart": 6648, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -7961,17 +7919,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 6707, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6714, + "commentStart": 0, "elements": [ { - "commentStart": 6715, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -7983,7 +7941,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 6720, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -7995,7 +7953,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 6725, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -8016,7 +7974,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 6738, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -8024,10 +7982,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 6750, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6750, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -8042,7 +8000,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 6772, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -8050,10 +8008,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 6783, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6783, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -8068,10 +8026,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 6648, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6648, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -8081,17 +8039,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 6648, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 6672, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6672, + "commentStart": 0, "end": 0, "name": "magnetCutoutExtrudeFillets", "start": 0, @@ -8108,17 +8066,17 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 6822, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6829, + "commentStart": 0, "elements": [ { - "commentStart": 6830, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -8130,7 +8088,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 6835, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -8142,7 +8100,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl } }, { - "commentStart": 6840, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -8163,7 +8121,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 6846, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -8171,10 +8129,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 6858, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6858, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -8189,7 +8147,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl { "type": "LabeledArg", "label": { - "commentStart": 6874, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -8197,10 +8155,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl }, "arg": { "abs_path": false, - "commentStart": 6885, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6885, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -8215,10 +8173,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "callee": { "abs_path": false, - "commentStart": 6806, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6806, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -8228,7 +8186,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "start": 0, "type": "Name" }, - "commentStart": 6806, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8236,7 +8194,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "unlabeled": null } ], - "commentStart": 6648, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -8254,7 +8212,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 385, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -8269,10 +8227,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl ], "properties": [ { - "commentStart": 394, + "commentStart": 0, "end": 0, "key": { - "commentStart": 394, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -8282,10 +8240,10 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 414, + "commentStart": 0, "end": 0, "name": { - "commentStart": 414, + "commentStart": 0, "end": 0, "name": "mm", "start": 0, @@ -8306,7 +8264,7 @@ description: Result of parsing gridfinity-baseplate-magnets.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 417, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/ops.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/ops.snap index ac6694700..964702590 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/ops.snap @@ -40,7 +40,7 @@ description: Operations executed gridfinity-baseplate-magnets.kcl "name": "face", "functionSourceRange": [ 869, - 1183, + 1153, 0 ], "unlabeledArg": null, @@ -50,7 +50,7 @@ description: Operations executed gridfinity-baseplate-magnets.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -73,7 +73,13 @@ description: Operations executed gridfinity-baseplate-magnets.kcl "type": "Number", "value": 34.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -165,14 +171,26 @@ description: Operations executed gridfinity-baseplate-magnets.kcl "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { @@ -266,7 +284,7 @@ description: Operations executed gridfinity-baseplate-magnets.kcl "name": "face", "functionSourceRange": [ 869, - 1183, + 1153, 0 ], "unlabeledArg": null, @@ -276,7 +294,7 @@ description: Operations executed gridfinity-baseplate-magnets.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -472,14 +490,26 @@ description: Operations executed gridfinity-baseplate-magnets.kcl "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { @@ -1058,7 +1088,7 @@ description: Operations executed gridfinity-baseplate-magnets.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1077,8 +1107,8 @@ description: Operations executed gridfinity-baseplate-magnets.kcl "type": "FunctionCall", "name": "magnetBase", "functionSourceRange": [ - 4349, - 4691, + 4319, + 4661, 0 ], "unlabeledArg": null, @@ -1088,7 +1118,7 @@ description: Operations executed gridfinity-baseplate-magnets.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1107,8 +1137,8 @@ description: Operations executed gridfinity-baseplate-magnets.kcl "type": "FunctionCall", "name": "magnetCenterCutout", "functionSourceRange": [ - 2698, - 4289, + 2668, + 4259, 0 ], "unlabeledArg": null, @@ -1118,7 +1148,7 @@ description: Operations executed gridfinity-baseplate-magnets.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1336,8 +1366,8 @@ description: Operations executed gridfinity-baseplate-magnets.kcl "type": "FunctionCall", "name": "magnetBase", "functionSourceRange": [ - 4349, - 4691, + 4319, + 4661, 0 ], "unlabeledArg": null, @@ -1347,7 +1377,7 @@ description: Operations executed gridfinity-baseplate-magnets.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1366,8 +1396,8 @@ description: Operations executed gridfinity-baseplate-magnets.kcl "type": "FunctionCall", "name": "magnetCenterCutout", "functionSourceRange": [ - 2698, - 4289, + 2668, + 4259, 0 ], "unlabeledArg": null, @@ -1377,7 +1407,7 @@ description: Operations executed gridfinity-baseplate-magnets.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/program_memory.snap index c66572871..66e5ce4ef 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate-magnets/program_memory.snap @@ -224,22 +224,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -428,22 +440,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -632,22 +656,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -836,22 +872,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1040,22 +1088,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1244,22 +1304,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1448,22 +1520,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1652,22 +1736,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1856,22 +1952,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2060,22 +2168,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2264,22 +2384,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2468,22 +2600,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2672,22 +2816,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2876,22 +3032,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3080,22 +3248,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3284,22 +3464,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3488,22 +3680,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3692,22 +3896,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3896,22 +4112,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4100,22 +4328,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4304,22 +4544,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4508,22 +4760,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4712,22 +4976,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4916,22 +5192,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5125,22 +5413,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5329,22 +5629,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5533,22 +5845,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5737,22 +6061,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5941,22 +6277,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6145,22 +6493,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6349,22 +6709,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6553,22 +6925,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6757,22 +7141,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6961,22 +7357,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7165,22 +7573,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7369,22 +7789,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7573,22 +8005,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7777,22 +8221,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7981,22 +8437,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8185,22 +8653,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8389,22 +8869,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8593,22 +9085,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8797,22 +9301,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9001,22 +9517,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9205,22 +9733,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9409,22 +9949,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9613,22 +10165,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9817,22 +10381,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10052,22 +10628,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10256,22 +10844,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10460,22 +11060,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10664,22 +11276,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10851,9 +11475,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4473, - "end": 4481, - "start": 4473, + "commentStart": 4443, + "end": 4451, + "start": 4443, "type": "TagDeclarator", "value": "line001" }, @@ -10864,9 +11488,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4522, - "end": 4530, - "start": 4522, + "commentStart": 4492, + "end": 4500, + "start": 4492, "type": "TagDeclarator", "value": "line002" }, @@ -10877,9 +11501,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4583, - "end": 4591, - "start": 4583, + "commentStart": 4553, + "end": 4561, + "start": 4553, "type": "TagDeclarator", "value": "line003" }, @@ -10890,9 +11514,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4612, - "end": 4620, - "start": 4612, + "commentStart": 4582, + "end": 4590, + "start": 4582, "type": "TagDeclarator", "value": "line004" }, @@ -10913,9 +11537,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 0.0 ], "tag": { - "commentStart": 4473, - "end": 4481, - "start": 4473, + "commentStart": 4443, + "end": 4451, + "start": 4443, "type": "TagDeclarator", "value": "line001" }, @@ -10938,9 +11562,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 0.0 ], "tag": { - "commentStart": 4522, - "end": 4530, - "start": 4522, + "commentStart": 4492, + "end": 4500, + "start": 4492, "type": "TagDeclarator", "value": "line002" }, @@ -10963,9 +11587,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 42.0 ], "tag": { - "commentStart": 4583, - "end": 4591, - "start": 4583, + "commentStart": 4553, + "end": 4561, + "start": 4553, "type": "TagDeclarator", "value": "line003" }, @@ -10988,9 +11612,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 42.0 ], "tag": { - "commentStart": 4612, - "end": 4620, - "start": 4612, + "commentStart": 4582, + "end": 4590, + "start": 4582, "type": "TagDeclarator", "value": "line004" }, @@ -11012,22 +11636,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 0.0, "y": 0.0, - "z": -2.4 + "z": -2.4, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11095,9 +11731,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4473, - "end": 4481, - "start": 4473, + "commentStart": 4443, + "end": 4451, + "start": 4443, "type": "TagDeclarator", "value": "line001" }, @@ -11108,9 +11744,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4522, - "end": 4530, - "start": 4522, + "commentStart": 4492, + "end": 4500, + "start": 4492, "type": "TagDeclarator", "value": "line002" }, @@ -11121,9 +11757,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4583, - "end": 4591, - "start": 4583, + "commentStart": 4553, + "end": 4561, + "start": 4553, "type": "TagDeclarator", "value": "line003" }, @@ -11134,9 +11770,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4612, - "end": 4620, - "start": 4612, + "commentStart": 4582, + "end": 4590, + "start": 4582, "type": "TagDeclarator", "value": "line004" }, @@ -11157,9 +11793,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 0.0 ], "tag": { - "commentStart": 4473, - "end": 4481, - "start": 4473, + "commentStart": 4443, + "end": 4451, + "start": 4443, "type": "TagDeclarator", "value": "line001" }, @@ -11182,9 +11818,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 0.0 ], "tag": { - "commentStart": 4522, - "end": 4530, - "start": 4522, + "commentStart": 4492, + "end": 4500, + "start": 4492, "type": "TagDeclarator", "value": "line002" }, @@ -11207,9 +11843,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 42.0 ], "tag": { - "commentStart": 4583, - "end": 4591, - "start": 4583, + "commentStart": 4553, + "end": 4561, + "start": 4553, "type": "TagDeclarator", "value": "line003" }, @@ -11232,9 +11868,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 42.0 ], "tag": { - "commentStart": 4612, - "end": 4620, - "start": 4612, + "commentStart": 4582, + "end": 4590, + "start": 4582, "type": "TagDeclarator", "value": "line004" }, @@ -11256,22 +11892,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 0.0, "y": 0.0, - "z": -2.4 + "z": -2.4, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11326,28 +11974,72 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc { "type": "fillet", "id": "[uuid]", - "radius": 4.0, + "radius": { + "n": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 4.0, + "radius": { + "n": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 4.0, + "radius": { + "n": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 4.0, + "radius": { + "n": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -11369,9 +12061,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4473, - "end": 4481, - "start": 4473, + "commentStart": 4443, + "end": 4451, + "start": 4443, "type": "TagDeclarator", "value": "line001" }, @@ -11382,9 +12074,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4522, - "end": 4530, - "start": 4522, + "commentStart": 4492, + "end": 4500, + "start": 4492, "type": "TagDeclarator", "value": "line002" }, @@ -11395,9 +12087,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4583, - "end": 4591, - "start": 4583, + "commentStart": 4553, + "end": 4561, + "start": 4553, "type": "TagDeclarator", "value": "line003" }, @@ -11408,9 +12100,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4612, - "end": 4620, - "start": 4612, + "commentStart": 4582, + "end": 4590, + "start": 4582, "type": "TagDeclarator", "value": "line004" }, @@ -11431,9 +12123,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 0.0 ], "tag": { - "commentStart": 4473, - "end": 4481, - "start": 4473, + "commentStart": 4443, + "end": 4451, + "start": 4443, "type": "TagDeclarator", "value": "line001" }, @@ -11456,9 +12148,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 0.0 ], "tag": { - "commentStart": 4522, - "end": 4530, - "start": 4522, + "commentStart": 4492, + "end": 4500, + "start": 4492, "type": "TagDeclarator", "value": "line002" }, @@ -11481,9 +12173,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 42.0 ], "tag": { - "commentStart": 4583, - "end": 4591, - "start": 4583, + "commentStart": 4553, + "end": 4561, + "start": 4553, "type": "TagDeclarator", "value": "line003" }, @@ -11506,9 +12198,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 42.0 ], "tag": { - "commentStart": 4612, - "end": 4620, - "start": 4612, + "commentStart": 4582, + "end": 4590, + "start": 4582, "type": "TagDeclarator", "value": "line004" }, @@ -11530,22 +12222,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11613,9 +12317,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4473, - "end": 4481, - "start": 4473, + "commentStart": 4443, + "end": 4451, + "start": 4443, "type": "TagDeclarator", "value": "line001" }, @@ -11626,9 +12330,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4522, - "end": 4530, - "start": 4522, + "commentStart": 4492, + "end": 4500, + "start": 4492, "type": "TagDeclarator", "value": "line002" }, @@ -11639,9 +12343,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4583, - "end": 4591, - "start": 4583, + "commentStart": 4553, + "end": 4561, + "start": 4553, "type": "TagDeclarator", "value": "line003" }, @@ -11652,9 +12356,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4612, - "end": 4620, - "start": 4612, + "commentStart": 4582, + "end": 4590, + "start": 4582, "type": "TagDeclarator", "value": "line004" }, @@ -11675,9 +12379,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 0.0 ], "tag": { - "commentStart": 4473, - "end": 4481, - "start": 4473, + "commentStart": 4443, + "end": 4451, + "start": 4443, "type": "TagDeclarator", "value": "line001" }, @@ -11700,9 +12404,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 0.0 ], "tag": { - "commentStart": 4522, - "end": 4530, - "start": 4522, + "commentStart": 4492, + "end": 4500, + "start": 4492, "type": "TagDeclarator", "value": "line002" }, @@ -11725,9 +12429,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 42.0 ], "tag": { - "commentStart": 4583, - "end": 4591, - "start": 4583, + "commentStart": 4553, + "end": 4561, + "start": 4553, "type": "TagDeclarator", "value": "line003" }, @@ -11750,9 +12454,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 42.0 ], "tag": { - "commentStart": 4612, - "end": 4620, - "start": 4612, + "commentStart": 4582, + "end": 4590, + "start": 4582, "type": "TagDeclarator", "value": "line004" }, @@ -11774,22 +12478,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11844,28 +12560,72 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc { "type": "fillet", "id": "[uuid]", - "radius": 4.0, + "radius": { + "n": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 4.0, + "radius": { + "n": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 4.0, + "radius": { + "n": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 4.0, + "radius": { + "n": 4.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -11891,9 +12651,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 0.0 ], "tag": { - "commentStart": 4473, - "end": 4481, - "start": 4473, + "commentStart": 4443, + "end": 4451, + "start": 4443, "type": "TagDeclarator", "value": "line001" }, @@ -11916,9 +12676,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 0.0 ], "tag": { - "commentStart": 4522, - "end": 4530, - "start": 4522, + "commentStart": 4492, + "end": 4500, + "start": 4492, "type": "TagDeclarator", "value": "line002" }, @@ -11941,9 +12701,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 42.0 ], "tag": { - "commentStart": 4583, - "end": 4591, - "start": 4583, + "commentStart": 4553, + "end": 4561, + "start": 4553, "type": "TagDeclarator", "value": "line003" }, @@ -11966,9 +12726,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 42.0 ], "tag": { - "commentStart": 4612, - "end": 4620, - "start": 4612, + "commentStart": 4582, + "end": 4590, + "start": 4582, "type": "TagDeclarator", "value": "line004" }, @@ -11990,22 +12750,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12070,9 +12842,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 0.0 ], "tag": { - "commentStart": 4473, - "end": 4481, - "start": 4473, + "commentStart": 4443, + "end": 4451, + "start": 4443, "type": "TagDeclarator", "value": "line001" }, @@ -12095,9 +12867,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 0.0 ], "tag": { - "commentStart": 4522, - "end": 4530, - "start": 4522, + "commentStart": 4492, + "end": 4500, + "start": 4492, "type": "TagDeclarator", "value": "line002" }, @@ -12120,9 +12892,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 42.0 ], "tag": { - "commentStart": 4583, - "end": 4591, - "start": 4583, + "commentStart": 4553, + "end": 4561, + "start": 4553, "type": "TagDeclarator", "value": "line003" }, @@ -12145,9 +12917,9 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc 42.0 ], "tag": { - "commentStart": 4612, - "end": 4620, - "start": 4612, + "commentStart": 4582, + "end": 4590, + "start": 4582, "type": "TagDeclarator", "value": "line004" }, @@ -12169,22 +12941,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 0.0, "y": 0.0, - "z": -2.4 + "z": -2.4, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12276,22 +13060,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12362,22 +13158,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12448,22 +13256,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12534,22 +13354,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12749,22 +13581,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12953,22 +13797,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13157,22 +14013,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13361,22 +14229,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13567,22 +14447,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13771,22 +14663,34 @@ description: Variables in memory after executing gridfinity-baseplate-magnets.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/artifact_commands.snap index 2d73345a0..ce6af5a4e 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/artifact_commands.snap @@ -218,7 +218,8 @@ description: Artifact commands gridfinity-baseplate.kcl "type": "extrude", "target": "[uuid]", "distance": 34.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -545,7 +546,8 @@ description: Artifact commands gridfinity-baseplate.kcl "unit": "degrees", "value": -90.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/artifact_graph_flowchart.snap.md index 564827fd6..d05add2cf 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/artifact_graph_flowchart.snap.md @@ -3,23 +3,23 @@ flowchart LR subgraph path2 [Path] 2["Path
[799, 824, 0]"] 3["Segment
[832, 854, 0]"] - 4["Segment
[862, 921, 0]"] - 5["Segment
[929, 956, 0]"] - 6["Segment
[964, 1023, 0]"] - 7["Segment
[1031, 1038, 0]"] + 4["Segment
[862, 906, 0]"] + 5["Segment
[914, 941, 0]"] + 6["Segment
[949, 993, 0]"] + 7["Segment
[1001, 1008, 0]"] 8[Solid2d] end subgraph path28 [Path] 28["Path
[799, 824, 0]"] 29["Segment
[832, 854, 0]"] - 30["Segment
[862, 921, 0]"] - 31["Segment
[929, 956, 0]"] - 32["Segment
[964, 1023, 0]"] - 33["Segment
[1031, 1038, 0]"] + 30["Segment
[862, 906, 0]"] + 31["Segment
[914, 941, 0]"] + 32["Segment
[949, 993, 0]"] + 33["Segment
[1001, 1008, 0]"] 34[Solid2d] end - 1["Plane
[1124, 1162, 0]"] - 9["Sweep Extrusion
[1111, 1205, 0]"] + 1["Plane
[1094, 1132, 0]"] + 9["Sweep Extrusion
[1081, 1175, 0]"] 10[Wall] 11[Wall] 12[Wall] @@ -37,8 +37,8 @@ flowchart LR 24["SweepEdge Adjacent"] 25["SweepEdge Opposite"] 26["SweepEdge Adjacent"] - 27["Plane
[1618, 1656, 0]"] - 35["Sweep Revolve
[1605, 1687, 0]"] + 27["Plane
[1588, 1626, 0]"] + 35["Sweep Revolve
[1575, 1657, 0]"] 36[Wall] 37[Wall] 38[Wall] diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/ast.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/ast.snap index 262e4dd22..893a685bc 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing gridfinity-baseplate.kcl "Ok": { "body": [ { - "commentStart": 344, + "commentStart": 0, "declaration": { - "commentStart": 367, + "commentStart": 0, "end": 0, "id": { - "commentStart": 367, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 379, + "commentStart": 0, "end": 0, "raw": "42.0", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "VariableDeclaration" }, { - "commentStart": 384, + "commentStart": 0, "declaration": { - "commentStart": 384, + "commentStart": 0, "end": 0, "id": { - "commentStart": 384, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 399, + "commentStart": 0, "end": 0, "raw": "4.0", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "VariableDeclaration" }, { - "commentStart": 403, + "commentStart": 0, "declaration": { - "commentStart": 403, + "commentStart": 0, "end": 0, "id": { - "commentStart": 403, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 415, + "commentStart": 0, "end": 0, "raw": "0.7", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "VariableDeclaration" }, { - "commentStart": 419, + "commentStart": 0, "declaration": { - "commentStart": 419, + "commentStart": 0, "end": 0, "id": { - "commentStart": 419, + "commentStart": 0, "end": 0, "name": "secondStep", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 432, + "commentStart": 0, "end": 0, "raw": "1.8", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "VariableDeclaration" }, { - "commentStart": 436, + "commentStart": 0, "declaration": { - "commentStart": 436, + "commentStart": 0, "end": 0, "id": { - "commentStart": 436, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 448, + "commentStart": 0, "end": 0, "raw": "2.15", "start": 0, @@ -174,19 +174,19 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "VariableDeclaration" }, { - "commentStart": 452, + "commentStart": 0, "declaration": { - "commentStart": 490, + "commentStart": 0, "end": 0, "id": { - "commentStart": 490, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 506, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -212,19 +212,19 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "VariableDeclaration" }, { - "commentStart": 508, + "commentStart": 0, "declaration": { - "commentStart": 508, + "commentStart": 0, "end": 0, "id": { - "commentStart": 508, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 525, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -245,29 +245,29 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "VariableDeclaration" }, { - "commentStart": 526, + "commentStart": 0, "declaration": { - "commentStart": 627, + "commentStart": 0, "end": 0, "id": { - "commentStart": 627, + "commentStart": 0, "end": 0, "name": "height", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 636, + "commentStart": 0, "end": 0, "left": { - "commentStart": 636, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 636, + "commentStart": 0, "end": 0, "name": { - "commentStart": 636, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, @@ -281,10 +281,10 @@ description: Result of parsing gridfinity-baseplate.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 648, + "commentStart": 0, "end": 0, "name": { - "commentStart": 648, + "commentStart": 0, "end": 0, "name": "secondStep", "start": 0, @@ -302,10 +302,10 @@ description: Result of parsing gridfinity-baseplate.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 661, + "commentStart": 0, "end": 0, "name": { - "commentStart": 661, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, @@ -335,12 +335,12 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "VariableDeclaration" }, { - "commentStart": 670, + "commentStart": 0, "declaration": { - "commentStart": 742, + "commentStart": 0, "end": 0, "id": { - "commentStart": 742, + "commentStart": 0, "end": 0, "name": "face", "start": 0, @@ -350,12 +350,12 @@ description: Result of parsing gridfinity-baseplate.kcl "body": { "body": [ { - "commentStart": 758, + "commentStart": 0, "declaration": { - "commentStart": 758, + "commentStart": 0, "end": 0, "id": { - "commentStart": 758, + "commentStart": 0, "end": 0, "name": "faceSketch", "start": 0, @@ -367,10 +367,10 @@ description: Result of parsing gridfinity-baseplate.kcl "arguments": [ { "abs_path": false, - "commentStart": 785, + "commentStart": 0, "end": 0, "name": { - "commentStart": 785, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -384,10 +384,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 771, + "commentStart": 0, "end": 0, "name": { - "commentStart": 771, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -397,7 +397,7 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 771, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -406,10 +406,10 @@ description: Result of parsing gridfinity-baseplate.kcl { "arguments": [ { - "commentStart": 814, + "commentStart": 0, "elements": [ { - "commentStart": 815, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -421,7 +421,7 @@ description: Result of parsing gridfinity-baseplate.kcl } }, { - "commentStart": 818, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -439,7 +439,7 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "ArrayExpression" }, { - "commentStart": 822, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -448,10 +448,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 799, + "commentStart": 0, "end": 0, "name": { - "commentStart": 799, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -461,7 +461,7 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 799, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -472,7 +472,7 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 838, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -480,10 +480,10 @@ description: Result of parsing gridfinity-baseplate.kcl }, "arg": { "abs_path": false, - "commentStart": 847, + "commentStart": 0, "end": 0, "name": { - "commentStart": 847, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -498,10 +498,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 832, + "commentStart": 0, "end": 0, "name": { - "commentStart": 832, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -511,7 +511,7 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 832, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -521,92 +521,70 @@ description: Result of parsing gridfinity-baseplate.kcl { "arguments": [ { - "commentStart": 882, - "end": 0, - "properties": [ - { - "commentStart": 884, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 884, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "45", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "argument": { - "commentStart": 893, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - }, - "commentStart": 892, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "value": 45.0, + "suffix": "None" } }, - { - "commentStart": 897, - "end": 0, - "key": { - "commentStart": 897, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 906, - "end": 0, - "name": { - "commentStart": 906, - "end": 0, - "name": "thirdStep", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } }, { - "commentStart": 919, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "lengthY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "thirdStep", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 862, + "commentStart": 0, "end": 0, "name": { - "commentStart": 862, + "commentStart": 0, "end": 0, - "name": "angledLineOfYLength", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -614,18 +592,19 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 862, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 935, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -634,10 +613,10 @@ description: Result of parsing gridfinity-baseplate.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 945, + "commentStart": 0, "end": 0, "name": { - "commentStart": 945, + "commentStart": 0, "end": 0, "name": "secondStep", "start": 0, @@ -648,7 +627,7 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "Name", "type": "Name" }, - "commentStart": 944, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -659,10 +638,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 929, + "commentStart": 0, "end": 0, "name": { - "commentStart": 929, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -672,7 +651,7 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 929, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -682,92 +661,70 @@ description: Result of parsing gridfinity-baseplate.kcl { "arguments": [ { - "commentStart": 984, - "end": 0, - "properties": [ - { - "commentStart": 986, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 986, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "45", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "argument": { - "commentStart": 995, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - }, - "commentStart": 994, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "value": 45.0, + "suffix": "None" } }, - { - "commentStart": 999, - "end": 0, - "key": { - "commentStart": 999, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1008, - "end": 0, - "name": { - "commentStart": 1008, - "end": 0, - "name": "firstStep", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } }, { - "commentStart": 1021, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "lengthY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "firstStep", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 964, + "commentStart": 0, "end": 0, "name": { - "commentStart": 964, + "commentStart": 0, "end": 0, - "name": "angledLineOfYLength", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -775,20 +732,21 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 964, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [], "callee": { "abs_path": false, - "commentStart": 1031, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1031, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -798,14 +756,14 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 1031, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 771, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -823,10 +781,10 @@ description: Result of parsing gridfinity-baseplate.kcl { "argument": { "abs_path": false, - "commentStart": 1048, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1048, + "commentStart": 0, "end": 0, "name": "faceSketch", "start": 0, @@ -837,24 +795,24 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "Name", "type": "Name" }, - "commentStart": 1041, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 754, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 746, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 747, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -881,12 +839,12 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "VariableDeclaration" }, { - "commentStart": 1060, + "commentStart": 0, "declaration": { - "commentStart": 1098, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1098, + "commentStart": 0, "end": 0, "name": "singleSide", "start": 0, @@ -897,21 +855,21 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1165, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1174, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1174, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1174, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -924,14 +882,14 @@ description: Result of parsing gridfinity-baseplate.kcl }, "operator": "-", "right": { - "commentStart": 1187, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1187, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1187, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -944,7 +902,7 @@ description: Result of parsing gridfinity-baseplate.kcl }, "operator": "*", "right": { - "commentStart": 1202, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -967,10 +925,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 1111, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1111, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -980,7 +938,7 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 1111, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -992,7 +950,7 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1140, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -1000,10 +958,10 @@ description: Result of parsing gridfinity-baseplate.kcl }, "arg": { "abs_path": false, - "commentStart": 1149, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1149, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -1018,10 +976,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 1124, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1124, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -1031,17 +989,17 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 1124, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1136, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1136, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -1056,10 +1014,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 1119, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1119, + "commentStart": 0, "end": 0, "name": "face", "start": 0, @@ -1069,7 +1027,7 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 1119, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1091,12 +1049,12 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "VariableDeclaration" }, { - "commentStart": 1205, + "commentStart": 0, "declaration": { - "commentStart": 1272, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1272, + "commentStart": 0, "end": 0, "name": "sides", "start": 0, @@ -1107,14 +1065,14 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1315, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1328, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -1129,17 +1087,17 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1335, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1342, + "commentStart": 0, "elements": [ { - "commentStart": 1343, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1151,7 +1109,7 @@ description: Result of parsing gridfinity-baseplate.kcl } }, { - "commentStart": 1346, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1163,7 +1121,7 @@ description: Result of parsing gridfinity-baseplate.kcl } }, { - "commentStart": 1349, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1184,24 +1142,24 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1355, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1364, + "commentStart": 0, "elements": [ { - "commentStart": 1365, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1365, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1365, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -1214,7 +1172,7 @@ description: Result of parsing gridfinity-baseplate.kcl }, "operator": "/", "right": { - "commentStart": 1377, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1230,14 +1188,14 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "BinaryExpression" }, { - "commentStart": 1380, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1380, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1380, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -1250,7 +1208,7 @@ description: Result of parsing gridfinity-baseplate.kcl }, "operator": "/", "right": { - "commentStart": 1392, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1266,7 +1224,7 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "BinaryExpression" }, { - "commentStart": 1395, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1287,14 +1245,14 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1401, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1413, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -1309,14 +1267,14 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1418, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1437, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -1328,10 +1286,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 1280, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1280, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -1341,17 +1299,17 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 1280, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1301, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1301, + "commentStart": 0, "end": 0, "name": "singleSide", "start": 0, @@ -1378,26 +1336,26 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "VariableDeclaration" }, { - "commentStart": 1444, + "commentStart": 0, "declaration": { - "commentStart": 1472, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1472, + "commentStart": 0, "end": 0, "name": "axis000", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1482, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1486, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1486, + "commentStart": 0, "end": 0, "name": "direction", "start": 0, @@ -1406,10 +1364,10 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1498, + "commentStart": 0, "elements": [ { - "commentStart": 1499, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -1421,7 +1379,7 @@ description: Result of parsing gridfinity-baseplate.kcl } }, { - "commentStart": 1504, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -1440,10 +1398,10 @@ description: Result of parsing gridfinity-baseplate.kcl } }, { - "commentStart": 1512, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1512, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -1452,14 +1410,14 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1521, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1522, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1522, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -1472,10 +1430,10 @@ description: Result of parsing gridfinity-baseplate.kcl }, { "abs_path": false, - "commentStart": 1536, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1536, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -1513,12 +1471,12 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "VariableDeclaration" }, { - "commentStart": 1551, + "commentStart": 0, "declaration": { - "commentStart": 1590, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1590, + "commentStart": 0, "end": 0, "name": "singleCorner", "start": 0, @@ -1529,7 +1487,7 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1659, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, @@ -1537,7 +1495,7 @@ description: Result of parsing gridfinity-baseplate.kcl }, "arg": { "argument": { - "commentStart": 1668, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1548,7 +1506,7 @@ description: Result of parsing gridfinity-baseplate.kcl "suffix": "None" } }, - "commentStart": 1667, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1559,7 +1517,7 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1672, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -1567,10 +1525,10 @@ description: Result of parsing gridfinity-baseplate.kcl }, "arg": { "abs_path": false, - "commentStart": 1679, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1679, + "commentStart": 0, "end": 0, "name": "axis000", "start": 0, @@ -1585,10 +1543,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 1605, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1605, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -1598,7 +1556,7 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 1605, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1610,7 +1568,7 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1634, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -1618,10 +1576,10 @@ description: Result of parsing gridfinity-baseplate.kcl }, "arg": { "abs_path": false, - "commentStart": 1643, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1643, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -1636,10 +1594,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 1618, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1618, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -1649,17 +1607,17 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 1618, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1630, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1630, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -1674,10 +1632,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 1613, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1613, + "commentStart": 0, "end": 0, "name": "face", "start": 0, @@ -1687,7 +1645,7 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 1613, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1709,12 +1667,12 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "VariableDeclaration" }, { - "commentStart": 1687, + "commentStart": 0, "declaration": { - "commentStart": 1722, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1722, + "commentStart": 0, "end": 0, "name": "corners", "start": 0, @@ -1725,14 +1683,14 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1769, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1782, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -1747,17 +1705,17 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1789, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1796, + "commentStart": 0, "elements": [ { - "commentStart": 1797, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1769,7 +1727,7 @@ description: Result of parsing gridfinity-baseplate.kcl } }, { - "commentStart": 1800, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1781,7 +1739,7 @@ description: Result of parsing gridfinity-baseplate.kcl } }, { - "commentStart": 1803, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1802,24 +1760,24 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1809, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1818, + "commentStart": 0, "elements": [ { - "commentStart": 1819, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1819, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1819, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -1832,7 +1790,7 @@ description: Result of parsing gridfinity-baseplate.kcl }, "operator": "/", "right": { - "commentStart": 1831, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1848,14 +1806,14 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "BinaryExpression" }, { - "commentStart": 1834, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1834, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1834, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -1868,7 +1826,7 @@ description: Result of parsing gridfinity-baseplate.kcl }, "operator": "/", "right": { - "commentStart": 1846, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1884,7 +1842,7 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "BinaryExpression" }, { - "commentStart": 1849, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1905,14 +1863,14 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1855, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1867, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -1927,14 +1885,14 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1872, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1891, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -1946,10 +1904,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 1732, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1732, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -1959,17 +1917,17 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 1732, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1753, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1753, + "commentStart": 0, "end": 0, "name": "singleCorner", "start": 0, @@ -1996,12 +1954,12 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "VariableDeclaration" }, { - "commentStart": 1898, + "commentStart": 0, "declaration": { - "commentStart": 1944, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1944, + "commentStart": 0, "end": 0, "name": "basePlateSides", "start": 0, @@ -2014,17 +1972,17 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1999, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2006, + "commentStart": 0, "elements": [ { - "commentStart": 2007, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -2036,7 +1994,7 @@ description: Result of parsing gridfinity-baseplate.kcl } }, { - "commentStart": 2012, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2048,7 +2006,7 @@ description: Result of parsing gridfinity-baseplate.kcl } }, { - "commentStart": 2017, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2069,7 +2027,7 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 2030, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -2077,10 +2035,10 @@ description: Result of parsing gridfinity-baseplate.kcl }, "arg": { "abs_path": false, - "commentStart": 2042, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2042, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -2095,7 +2053,7 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 2064, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -2103,10 +2061,10 @@ description: Result of parsing gridfinity-baseplate.kcl }, "arg": { "abs_path": false, - "commentStart": 2075, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2075, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -2121,10 +2079,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 1961, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1961, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -2134,17 +2092,17 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 1961, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1985, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1985, + "commentStart": 0, "end": 0, "name": "sides", "start": 0, @@ -2161,17 +2119,17 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 2114, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2121, + "commentStart": 0, "elements": [ { - "commentStart": 2122, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2183,7 +2141,7 @@ description: Result of parsing gridfinity-baseplate.kcl } }, { - "commentStart": 2127, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -2195,7 +2153,7 @@ description: Result of parsing gridfinity-baseplate.kcl } }, { - "commentStart": 2132, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2216,7 +2174,7 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 2138, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -2224,10 +2182,10 @@ description: Result of parsing gridfinity-baseplate.kcl }, "arg": { "abs_path": false, - "commentStart": 2150, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2150, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -2242,7 +2200,7 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 2166, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -2250,10 +2208,10 @@ description: Result of parsing gridfinity-baseplate.kcl }, "arg": { "abs_path": false, - "commentStart": 2177, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2177, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -2268,10 +2226,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 2098, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2098, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -2281,7 +2239,7 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 2098, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2289,13 +2247,13 @@ description: Result of parsing gridfinity-baseplate.kcl "unlabeled": null } ], - "commentStart": 1961, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 2187, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2328,12 +2286,12 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "VariableDeclaration" }, { - "commentStart": 2254, + "commentStart": 0, "declaration": { - "commentStart": 2254, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2254, + "commentStart": 0, "end": 0, "name": "basePlateCorners", "start": 0, @@ -2346,17 +2304,17 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 2313, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2320, + "commentStart": 0, "elements": [ { - "commentStart": 2321, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -2368,7 +2326,7 @@ description: Result of parsing gridfinity-baseplate.kcl } }, { - "commentStart": 2326, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2380,7 +2338,7 @@ description: Result of parsing gridfinity-baseplate.kcl } }, { - "commentStart": 2331, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2401,7 +2359,7 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 2344, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -2409,10 +2367,10 @@ description: Result of parsing gridfinity-baseplate.kcl }, "arg": { "abs_path": false, - "commentStart": 2356, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2356, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -2427,7 +2385,7 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 2378, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -2435,10 +2393,10 @@ description: Result of parsing gridfinity-baseplate.kcl }, "arg": { "abs_path": false, - "commentStart": 2389, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2389, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -2453,10 +2411,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 2273, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2273, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -2466,17 +2424,17 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 2273, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2297, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2297, + "commentStart": 0, "end": 0, "name": "corners", "start": 0, @@ -2493,17 +2451,17 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 2428, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2435, + "commentStart": 0, "elements": [ { - "commentStart": 2436, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2515,7 +2473,7 @@ description: Result of parsing gridfinity-baseplate.kcl } }, { - "commentStart": 2441, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -2527,7 +2485,7 @@ description: Result of parsing gridfinity-baseplate.kcl } }, { - "commentStart": 2446, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2548,7 +2506,7 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 2452, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -2556,10 +2514,10 @@ description: Result of parsing gridfinity-baseplate.kcl }, "arg": { "abs_path": false, - "commentStart": 2464, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2464, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -2574,7 +2532,7 @@ description: Result of parsing gridfinity-baseplate.kcl { "type": "LabeledArg", "label": { - "commentStart": 2480, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -2582,10 +2540,10 @@ description: Result of parsing gridfinity-baseplate.kcl }, "arg": { "abs_path": false, - "commentStart": 2491, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2491, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -2600,10 +2558,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "callee": { "abs_path": false, - "commentStart": 2412, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2412, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -2613,7 +2571,7 @@ description: Result of parsing gridfinity-baseplate.kcl "start": 0, "type": "Name" }, - "commentStart": 2412, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2621,7 +2579,7 @@ description: Result of parsing gridfinity-baseplate.kcl "unlabeled": null } ], - "commentStart": 2273, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2644,7 +2602,7 @@ description: Result of parsing gridfinity-baseplate.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 312, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -2659,10 +2617,10 @@ description: Result of parsing gridfinity-baseplate.kcl ], "properties": [ { - "commentStart": 321, + "commentStart": 0, "end": 0, "key": { - "commentStart": 321, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -2672,10 +2630,10 @@ description: Result of parsing gridfinity-baseplate.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 341, + "commentStart": 0, "end": 0, "name": { - "commentStart": 341, + "commentStart": 0, "end": 0, "name": "mm", "start": 0, @@ -2696,7 +2654,7 @@ description: Result of parsing gridfinity-baseplate.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 344, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/ops.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/ops.snap index 25417c2ac..acd5ac042 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/ops.snap @@ -40,7 +40,7 @@ description: Operations executed gridfinity-baseplate.kcl "name": "face", "functionSourceRange": [ 746, - 1060, + 1030, 0 ], "unlabeledArg": null, @@ -50,7 +50,7 @@ description: Operations executed gridfinity-baseplate.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -73,7 +73,13 @@ description: Operations executed gridfinity-baseplate.kcl "type": "Number", "value": 34.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -165,14 +171,26 @@ description: Operations executed gridfinity-baseplate.kcl "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { @@ -266,7 +284,7 @@ description: Operations executed gridfinity-baseplate.kcl "name": "face", "functionSourceRange": [ 746, - 1060, + 1030, 0 ], "unlabeledArg": null, @@ -276,7 +294,7 @@ description: Operations executed gridfinity-baseplate.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -472,14 +490,26 @@ description: Operations executed gridfinity-baseplate.kcl "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/program_memory.snap index 4bb486534..bd1f3acfe 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-baseplate/program_memory.snap @@ -224,22 +224,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -428,22 +440,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -632,22 +656,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -836,22 +872,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1040,22 +1088,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1244,22 +1304,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1448,22 +1520,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1652,22 +1736,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1856,22 +1952,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2060,22 +2168,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2264,22 +2384,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2468,22 +2600,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2672,22 +2816,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2876,22 +3032,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3080,22 +3248,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3284,22 +3464,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3488,22 +3680,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3692,22 +3896,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3896,22 +4112,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4100,22 +4328,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4304,22 +4544,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4508,22 +4760,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4712,22 +4976,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4916,22 +5192,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5125,22 +5413,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5329,22 +5629,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5533,22 +5845,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5737,22 +6061,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5941,22 +6277,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6145,22 +6493,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6349,22 +6709,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6553,22 +6925,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6757,22 +7141,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6961,22 +7357,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7165,22 +7573,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7369,22 +7789,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7573,22 +8005,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7777,22 +8221,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7981,22 +8437,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8185,22 +8653,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8389,22 +8869,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8593,22 +9085,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8797,22 +9301,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9001,22 +9517,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9205,22 +9733,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9409,22 +9949,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9613,22 +10165,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9817,22 +10381,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10052,22 +10628,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10256,22 +10844,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10460,22 +11060,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10664,22 +11276,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10941,22 +11565,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11145,22 +11781,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11349,22 +11997,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11553,22 +12213,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11759,22 +12431,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11963,22 +12647,34 @@ description: Variables in memory after executing gridfinity-baseplate.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/artifact_commands.snap index d0566743f..49e977408 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/artifact_commands.snap @@ -235,7 +235,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl "type": "extrude", "target": "[uuid]", "distance": 34.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -579,7 +580,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl "unit": "degrees", "value": -90.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -870,7 +872,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl "type": "extrude", "target": "[uuid]", "distance": 4.75, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1177,7 +1180,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl "type": "extrude", "target": "[uuid]", "distance": -2.4, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1243,7 +1247,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl "type": "extrude", "target": "[uuid]", "distance": -2.4, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1309,7 +1314,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl "type": "extrude", "target": "[uuid]", "distance": -2.4, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1375,7 +1381,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl "type": "extrude", "target": "[uuid]", "distance": -2.4, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3188,7 +3195,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl "type": "extrude", "target": "[uuid]", "distance": 7.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3622,7 +3630,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl "type": "extrude", "target": "[uuid]", "distance": 76.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4035,7 +4044,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl "type": "extrude", "target": "[uuid]", "distance": 118.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4488,7 +4498,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl "unit": "degrees", "value": -90.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -4892,7 +4903,8 @@ description: Artifact commands gridfinity-bins-stacking-lip.kcl "unit": "degrees", "value": 90.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/artifact_graph_flowchart.snap.md index 3933f744d..b9cfde526 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/artifact_graph_flowchart.snap.md @@ -4,93 +4,93 @@ flowchart LR 2["Path
[1187, 1233, 0]"] 3["Segment
[1241, 1263, 0]"] 4["Segment
[1271, 1301, 0]"] - 5["Segment
[1309, 1368, 0]"] - 6["Segment
[1376, 1403, 0]"] - 7["Segment
[1411, 1470, 0]"] - 8["Segment
[1478, 1485, 0]"] + 5["Segment
[1309, 1353, 0]"] + 6["Segment
[1361, 1388, 0]"] + 7["Segment
[1396, 1440, 0]"] + 8["Segment
[1448, 1455, 0]"] 9[Solid2d] end subgraph path29 [Path] 29["Path
[1187, 1233, 0]"] 30["Segment
[1241, 1263, 0]"] 31["Segment
[1271, 1301, 0]"] - 32["Segment
[1309, 1368, 0]"] - 33["Segment
[1376, 1403, 0]"] - 34["Segment
[1411, 1470, 0]"] - 35["Segment
[1478, 1485, 0]"] + 32["Segment
[1309, 1353, 0]"] + 33["Segment
[1361, 1388, 0]"] + 34["Segment
[1396, 1440, 0]"] + 35["Segment
[1448, 1455, 0]"] 36[Solid2d] end subgraph path56 [Path] - 56["Path
[2526, 2614, 0]"] - 57["Segment
[2620, 2684, 0]"] - 58["Segment
[2690, 2754, 0]"] - 59["Segment
[2760, 2813, 0]"] - 60["Segment
[2819, 2840, 0]"] + 56["Path
[2496, 2584, 0]"] + 57["Segment
[2590, 2654, 0]"] + 58["Segment
[2660, 2724, 0]"] + 59["Segment
[2730, 2783, 0]"] + 60["Segment
[2789, 2810, 0]"] 61[Solid2d] end subgraph path81 [Path] - 81["Path
[3166, 3332, 0]"] - 82["Segment
[3166, 3332, 0]"] + 81["Path
[3141, 3307, 0]"] + 82["Segment
[3141, 3307, 0]"] 83[Solid2d] end subgraph path93 [Path] - 93["Path
[4616, 4641, 0]"] - 94["Segment
[4647, 4719, 0]"] - 95["Segment
[4725, 4798, 0]"] - 96["Segment
[4804, 4857, 0]"] - 97["Segment
[4863, 4884, 0]"] + 93["Path
[4591, 4616, 0]"] + 94["Segment
[4622, 4694, 0]"] + 95["Segment
[4700, 4773, 0]"] + 96["Segment
[4779, 4832, 0]"] + 97["Segment
[4838, 4859, 0]"] 98[Solid2d] end subgraph path119 [Path] - 119["Path
[5353, 5378, 0]"] - 120["Segment
[5438, 5481, 0]"] - 121["Segment
[5489, 5598, 0]"] - 122["Segment
[5673, 5722, 0]"] - 123["Segment
[5730, 5755, 0]"] - 124["Segment
[5763, 5821, 0]"] - 125["Segment
[5829, 5854, 0]"] - 126["Segment
[5862, 5921, 0]"] - 127["Segment
[5929, 5936, 0]"] + 119["Path
[5326, 5351, 0]"] + 120["Segment
[5411, 5454, 0]"] + 121["Segment
[5462, 5571, 0]"] + 122["Segment
[5634, 5683, 0]"] + 123["Segment
[5691, 5716, 0]"] + 124["Segment
[5724, 5767, 0]"] + 125["Segment
[5775, 5800, 0]"] + 126["Segment
[5808, 5852, 0]"] + 127["Segment
[5860, 5867, 0]"] 128[Solid2d] end subgraph path157 [Path] - 157["Path
[5353, 5378, 0]"] - 158["Segment
[5438, 5481, 0]"] - 159["Segment
[5489, 5598, 0]"] - 160["Segment
[5673, 5722, 0]"] - 161["Segment
[5730, 5755, 0]"] - 162["Segment
[5763, 5821, 0]"] - 163["Segment
[5829, 5854, 0]"] - 164["Segment
[5862, 5921, 0]"] - 165["Segment
[5929, 5936, 0]"] + 157["Path
[5326, 5351, 0]"] + 158["Segment
[5411, 5454, 0]"] + 159["Segment
[5462, 5571, 0]"] + 160["Segment
[5634, 5683, 0]"] + 161["Segment
[5691, 5716, 0]"] + 162["Segment
[5724, 5767, 0]"] + 163["Segment
[5775, 5800, 0]"] + 164["Segment
[5808, 5852, 0]"] + 165["Segment
[5860, 5867, 0]"] 166[Solid2d] end subgraph path195 [Path] - 195["Path
[5353, 5378, 0]"] - 196["Segment
[5438, 5481, 0]"] - 197["Segment
[5489, 5598, 0]"] - 198["Segment
[5673, 5722, 0]"] - 199["Segment
[5730, 5755, 0]"] - 200["Segment
[5763, 5821, 0]"] - 201["Segment
[5829, 5854, 0]"] - 202["Segment
[5862, 5921, 0]"] - 203["Segment
[5929, 5936, 0]"] + 195["Path
[5326, 5351, 0]"] + 196["Segment
[5411, 5454, 0]"] + 197["Segment
[5462, 5571, 0]"] + 198["Segment
[5634, 5683, 0]"] + 199["Segment
[5691, 5716, 0]"] + 200["Segment
[5724, 5767, 0]"] + 201["Segment
[5775, 5800, 0]"] + 202["Segment
[5808, 5852, 0]"] + 203["Segment
[5860, 5867, 0]"] 204[Solid2d] end subgraph path233 [Path] - 233["Path
[5353, 5378, 0]"] - 234["Segment
[5438, 5481, 0]"] - 235["Segment
[5489, 5598, 0]"] - 236["Segment
[5673, 5722, 0]"] - 237["Segment
[5730, 5755, 0]"] - 238["Segment
[5763, 5821, 0]"] - 239["Segment
[5829, 5854, 0]"] - 240["Segment
[5862, 5921, 0]"] - 241["Segment
[5929, 5936, 0]"] + 233["Path
[5326, 5351, 0]"] + 234["Segment
[5411, 5454, 0]"] + 235["Segment
[5462, 5571, 0]"] + 236["Segment
[5634, 5683, 0]"] + 237["Segment
[5691, 5716, 0]"] + 238["Segment
[5724, 5767, 0]"] + 239["Segment
[5775, 5800, 0]"] + 240["Segment
[5808, 5852, 0]"] + 241["Segment
[5860, 5867, 0]"] 242[Solid2d] end - 1["Plane
[1571, 1618, 0]"] - 10["Sweep Extrusion
[1558, 1661, 0]"] + 1["Plane
[1541, 1588, 0]"] + 10["Sweep Extrusion
[1528, 1631, 0]"] 11[Wall] 12[Wall] 13[Wall] @@ -108,8 +108,8 @@ flowchart LR 25["SweepEdge Adjacent"] 26["SweepEdge Opposite"] 27["SweepEdge Adjacent"] - 28["Plane
[2150, 2197, 0]"] - 37["Sweep Revolve
[2137, 2228, 0]"] + 28["Plane
[2120, 2167, 0]"] + 37["Sweep Revolve
[2107, 2198, 0]"] 38[Wall] 39[Wall] 40[Wall] @@ -127,8 +127,8 @@ flowchart LR 52["SweepEdge Adjacent"] 53["SweepEdge Opposite"] 54["SweepEdge Adjacent"] - 55["Plane
[2503, 2520, 0]"] - 62["Sweep Extrusion
[2846, 2870, 0]"] + 55["Plane
[2473, 2490, 0]"] + 62["Sweep Extrusion
[2816, 2840, 0]"] 63[Wall] 64[Wall] 65[Wall] @@ -143,20 +143,20 @@ flowchart LR 74["SweepEdge Adjacent"] 75["SweepEdge Opposite"] 76["SweepEdge Adjacent"] - 77["EdgeCut Fillet
[2876, 3106, 0]"] - 78["EdgeCut Fillet
[2876, 3106, 0]"] - 79["EdgeCut Fillet
[2876, 3106, 0]"] - 80["EdgeCut Fillet
[2876, 3106, 0]"] - 84["Sweep Extrusion
[3554, 3581, 0]"] + 77["EdgeCut Fillet
[2846, 3076, 0]"] + 78["EdgeCut Fillet
[2846, 3076, 0]"] + 79["EdgeCut Fillet
[2846, 3076, 0]"] + 80["EdgeCut Fillet
[2846, 3076, 0]"] + 84["Sweep Extrusion
[3529, 3556, 0]"] 85[Wall] 86["Cap Start"] 87["SweepEdge Opposite"] 88["SweepEdge Adjacent"] - 89["Sweep Extrusion
[3554, 3581, 0]"] - 90["Sweep Extrusion
[3554, 3581, 0]"] - 91["Sweep Extrusion
[3554, 3581, 0]"] - 92["Plane
[4577, 4609, 0]"] - 99["Sweep Extrusion
[4890, 4934, 0]"] + 89["Sweep Extrusion
[3529, 3556, 0]"] + 90["Sweep Extrusion
[3529, 3556, 0]"] + 91["Sweep Extrusion
[3529, 3556, 0]"] + 92["Plane
[4552, 4584, 0]"] + 99["Sweep Extrusion
[4865, 4909, 0]"] 100[Wall] 101[Wall] 102[Wall] @@ -171,12 +171,12 @@ flowchart LR 111["SweepEdge Adjacent"] 112["SweepEdge Opposite"] 113["SweepEdge Adjacent"] - 114["EdgeCut Fillet
[4940, 5173, 0]"] - 115["EdgeCut Fillet
[4940, 5173, 0]"] - 116["EdgeCut Fillet
[4940, 5173, 0]"] - 117["EdgeCut Fillet
[4940, 5173, 0]"] - 118["Plane
[5325, 5345, 0]"] - 129["Sweep Extrusion
[6707, 6819, 0]"] + 114["EdgeCut Fillet
[4915, 5148, 0]"] + 115["EdgeCut Fillet
[4915, 5148, 0]"] + 116["EdgeCut Fillet
[4915, 5148, 0]"] + 117["EdgeCut Fillet
[4915, 5148, 0]"] + 118["Plane
[5298, 5318, 0]"] + 129["Sweep Extrusion
[6542, 6654, 0]"] 130[Wall] 131[Wall] 132[Wall] @@ -203,8 +203,8 @@ flowchart LR 153["SweepEdge Adjacent"] 154["SweepEdge Opposite"] 155["SweepEdge Adjacent"] - 156["Plane
[5325, 5345, 0]"] - 167["Sweep Extrusion
[6885, 6999, 0]"] + 156["Plane
[5298, 5318, 0]"] + 167["Sweep Extrusion
[6720, 6834, 0]"] 168[Wall] 169[Wall] 170[Wall] @@ -231,8 +231,8 @@ flowchart LR 191["SweepEdge Adjacent"] 192["SweepEdge Opposite"] 193["SweepEdge Adjacent"] - 194["Plane
[5325, 5345, 0]"] - 205["Sweep Revolve
[7825, 7880, 0]"] + 194["Plane
[5298, 5318, 0]"] + 205["Sweep Revolve
[7660, 7715, 0]"] 206[Wall] 207[Wall] 208[Wall] @@ -259,8 +259,8 @@ flowchart LR 229["SweepEdge Adjacent"] 230["SweepEdge Opposite"] 231["SweepEdge Adjacent"] - 232["Plane
[5325, 5345, 0]"] - 243["Sweep Revolve
[7942, 7996, 0]"] + 232["Plane
[5298, 5318, 0]"] + 243["Sweep Revolve
[7777, 7831, 0]"] 244[Wall] 245[Wall] 246[Wall] @@ -289,8 +289,8 @@ flowchart LR 269["SweepEdge Adjacent"] 270["StartSketchOnPlane
[1159, 1179, 0]"] 271["StartSketchOnPlane
[1159, 1179, 0]"] - 272["StartSketchOnFace
[3123, 3160, 0]"] - 273["StartSketchOnPlane
[4563, 4610, 0]"] + 272["StartSketchOnFace
[3093, 3135, 0]"] + 273["StartSketchOnPlane
[4538, 4585, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/ast.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/ast.snap index 213fb0c64..dc514889d 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "Ok": { "body": [ { - "commentStart": 442, + "commentStart": 0, "declaration": { - "commentStart": 465, + "commentStart": 0, "end": 0, "id": { - "commentStart": 465, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 477, + "commentStart": 0, "end": 0, "raw": "41.5", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 482, + "commentStart": 0, "declaration": { - "commentStart": 482, + "commentStart": 0, "end": 0, "id": { - "commentStart": 482, + "commentStart": 0, "end": 0, "name": "binHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 494, + "commentStart": 0, "end": 0, "raw": "7.0", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 498, + "commentStart": 0, "declaration": { - "commentStart": 498, + "commentStart": 0, "end": 0, "id": { - "commentStart": 498, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 514, + "commentStart": 0, "end": 0, "raw": "2.95", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 519, + "commentStart": 0, "declaration": { - "commentStart": 519, + "commentStart": 0, "end": 0, "id": { - "commentStart": 519, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 528, + "commentStart": 0, "end": 0, "raw": "0.25", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 533, + "commentStart": 0, "declaration": { - "commentStart": 533, + "commentStart": 0, "end": 0, "id": { - "commentStart": 533, + "commentStart": 0, "end": 0, "name": "binThk", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 542, + "commentStart": 0, "end": 0, "raw": "1.2", "start": 0, @@ -174,19 +174,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 546, + "commentStart": 0, "declaration": { - "commentStart": 546, + "commentStart": 0, "end": 0, "id": { - "commentStart": 546, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 561, + "commentStart": 0, "end": 0, "raw": "3.75", "start": 0, @@ -207,19 +207,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 566, + "commentStart": 0, "declaration": { - "commentStart": 566, + "commentStart": 0, "end": 0, "id": { - "commentStart": 566, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 578, + "commentStart": 0, "end": 0, "raw": "0.8", "start": 0, @@ -240,19 +240,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 582, + "commentStart": 0, "declaration": { - "commentStart": 582, + "commentStart": 0, "end": 0, "id": { - "commentStart": 582, + "commentStart": 0, "end": 0, "name": "secondStep", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 595, + "commentStart": 0, "end": 0, "raw": "1.8", "start": 0, @@ -273,19 +273,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 599, + "commentStart": 0, "declaration": { - "commentStart": 599, + "commentStart": 0, "end": 0, "id": { - "commentStart": 599, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 611, + "commentStart": 0, "end": 0, "raw": "2.15", "start": 0, @@ -306,19 +306,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 616, + "commentStart": 0, "declaration": { - "commentStart": 616, + "commentStart": 0, "end": 0, "id": { - "commentStart": 616, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 631, + "commentStart": 0, "end": 0, "raw": "6.5", "start": 0, @@ -339,19 +339,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 635, + "commentStart": 0, "declaration": { - "commentStart": 635, + "commentStart": 0, "end": 0, "id": { - "commentStart": 635, + "commentStart": 0, "end": 0, "name": "magOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 647, + "commentStart": 0, "end": 0, "raw": "4.8", "start": 0, @@ -372,19 +372,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 651, + "commentStart": 0, "declaration": { - "commentStart": 651, + "commentStart": 0, "end": 0, "id": { - "commentStart": 651, + "commentStart": 0, "end": 0, "name": "magDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 662, + "commentStart": 0, "end": 0, "raw": "2.4", "start": 0, @@ -405,19 +405,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 666, + "commentStart": 0, "declaration": { - "commentStart": 666, + "commentStart": 0, "end": 0, "id": { - "commentStart": 666, + "commentStart": 0, "end": 0, "name": "lipRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 678, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -438,19 +438,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 682, + "commentStart": 0, "declaration": { - "commentStart": 682, + "commentStart": 0, "end": 0, "id": { - "commentStart": 682, + "commentStart": 0, "end": 0, "name": "lipStep1", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 693, + "commentStart": 0, "end": 0, "raw": "1.4", "start": 0, @@ -471,19 +471,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 697, + "commentStart": 0, "declaration": { - "commentStart": 697, + "commentStart": 0, "end": 0, "id": { - "commentStart": 697, + "commentStart": 0, "end": 0, "name": "lipStep2", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 708, + "commentStart": 0, "end": 0, "raw": "1.2", "start": 0, @@ -504,19 +504,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 712, + "commentStart": 0, "declaration": { - "commentStart": 712, + "commentStart": 0, "end": 0, "id": { - "commentStart": 712, + "commentStart": 0, "end": 0, "name": "lipStep3", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 723, + "commentStart": 0, "end": 0, "raw": "0.7", "start": 0, @@ -537,19 +537,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 727, + "commentStart": 0, "declaration": { - "commentStart": 727, + "commentStart": 0, "end": 0, "id": { - "commentStart": 727, + "commentStart": 0, "end": 0, "name": "lipStep4", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 738, + "commentStart": 0, "end": 0, "raw": "1.8", "start": 0, @@ -570,19 +570,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 742, + "commentStart": 0, "declaration": { - "commentStart": 742, + "commentStart": 0, "end": 0, "id": { - "commentStart": 742, + "commentStart": 0, "end": 0, "name": "lipStep5", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 753, + "commentStart": 0, "end": 0, "raw": "1.9", "start": 0, @@ -603,19 +603,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 756, + "commentStart": 0, "declaration": { - "commentStart": 794, + "commentStart": 0, "end": 0, "id": { - "commentStart": 794, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 810, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -641,19 +641,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 812, + "commentStart": 0, "declaration": { - "commentStart": 812, + "commentStart": 0, "end": 0, "id": { - "commentStart": 812, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 829, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -674,19 +674,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 831, + "commentStart": 0, "declaration": { - "commentStart": 831, + "commentStart": 0, "end": 0, "id": { - "commentStart": 831, + "commentStart": 0, "end": 0, "name": "countBinHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 848, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -707,29 +707,29 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 849, + "commentStart": 0, "declaration": { - "commentStart": 950, + "commentStart": 0, "end": 0, "id": { - "commentStart": 950, + "commentStart": 0, "end": 0, "name": "height", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 959, + "commentStart": 0, "end": 0, "left": { - "commentStart": 959, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 959, + "commentStart": 0, "end": 0, "name": { - "commentStart": 959, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, @@ -743,10 +743,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 971, + "commentStart": 0, "end": 0, "name": { - "commentStart": 971, + "commentStart": 0, "end": 0, "name": "secondStep", "start": 0, @@ -764,10 +764,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 984, + "commentStart": 0, "end": 0, "name": { - "commentStart": 984, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, @@ -797,35 +797,35 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 994, + "commentStart": 0, "declaration": { - "commentStart": 994, + "commentStart": 0, "end": 0, "id": { - "commentStart": 994, + "commentStart": 0, "end": 0, "name": "lipHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1006, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1006, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1006, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1006, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1006, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1006, + "commentStart": 0, "end": 0, "name": "lipStep1", "start": 0, @@ -839,10 +839,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1017, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1017, + "commentStart": 0, "end": 0, "name": "lipStep2", "start": 0, @@ -860,10 +860,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1028, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1028, + "commentStart": 0, "end": 0, "name": "lipStep3", "start": 0, @@ -881,10 +881,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1039, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1039, + "commentStart": 0, "end": 0, "name": "lipStep4", "start": 0, @@ -902,10 +902,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1050, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1050, + "commentStart": 0, "end": 0, "name": "lipStep5", "start": 0, @@ -930,12 +930,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 1058, + "commentStart": 0, "declaration": { - "commentStart": 1130, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1130, + "commentStart": 0, "end": 0, "name": "face", "start": 0, @@ -945,12 +945,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "body": { "body": [ { - "commentStart": 1146, + "commentStart": 0, "declaration": { - "commentStart": 1146, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1146, + "commentStart": 0, "end": 0, "name": "faceSketch", "start": 0, @@ -962,10 +962,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arguments": [ { "abs_path": false, - "commentStart": 1173, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1173, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -979,10 +979,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 1159, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1159, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -992,7 +992,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 1159, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1001,17 +1001,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "arguments": [ { - "commentStart": 1202, + "commentStart": 0, "elements": [ { - "commentStart": 1203, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1203, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1203, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -1025,10 +1025,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1219, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1219, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -1044,7 +1044,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 1227, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1062,7 +1062,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "ArrayExpression" }, { - "commentStart": 1231, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1071,10 +1071,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 1187, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1187, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1084,7 +1084,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 1187, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1095,7 +1095,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 1247, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1103,10 +1103,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "abs_path": false, - "commentStart": 1256, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1256, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -1121,10 +1121,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 1241, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1241, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1134,7 +1134,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 1241, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1146,7 +1146,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 1277, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1155,10 +1155,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 1287, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1287, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -1169,7 +1169,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "Name", "type": "Name" }, - "commentStart": 1286, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1180,10 +1180,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 1271, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1271, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1193,7 +1193,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 1271, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1203,92 +1203,70 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "arguments": [ { - "commentStart": 1329, - "end": 0, - "properties": [ - { - "commentStart": 1331, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1331, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "45", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "argument": { - "commentStart": 1340, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - }, - "commentStart": 1339, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "value": 45.0, + "suffix": "None" } }, - { - "commentStart": 1344, - "end": 0, - "key": { - "commentStart": 1344, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1353, - "end": 0, - "name": { - "commentStart": 1353, - "end": 0, - "name": "thirdStep", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } }, { - "commentStart": 1366, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "lengthY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "thirdStep", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1309, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1309, + "commentStart": 0, "end": 0, - "name": "angledLineOfYLength", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -1296,18 +1274,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 1309, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1382, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1316,10 +1295,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 1392, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1392, + "commentStart": 0, "end": 0, "name": "secondStep", "start": 0, @@ -1330,7 +1309,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "Name", "type": "Name" }, - "commentStart": 1391, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1341,10 +1320,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 1376, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1376, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1354,7 +1333,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 1376, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1364,92 +1343,70 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "arguments": [ { - "commentStart": 1431, - "end": 0, - "properties": [ - { - "commentStart": 1433, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1433, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "45", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "argument": { - "commentStart": 1442, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - }, - "commentStart": 1441, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "value": 45.0, + "suffix": "None" } }, - { - "commentStart": 1446, - "end": 0, - "key": { - "commentStart": 1446, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1455, - "end": 0, - "name": { - "commentStart": 1455, - "end": 0, - "name": "firstStep", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } }, { - "commentStart": 1468, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "lengthY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "firstStep", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1411, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1411, + "commentStart": 0, "end": 0, - "name": "angledLineOfYLength", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -1457,20 +1414,21 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 1411, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [], "callee": { "abs_path": false, - "commentStart": 1478, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1478, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1480,14 +1438,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 1478, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1159, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1505,10 +1463,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "argument": { "abs_path": false, - "commentStart": 1495, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1495, + "commentStart": 0, "end": 0, "name": "faceSketch", "start": 0, @@ -1519,24 +1477,24 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "Name", "type": "Name" }, - "commentStart": 1488, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 1142, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 1134, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 1135, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -1563,12 +1521,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 1507, + "commentStart": 0, "declaration": { - "commentStart": 1545, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1545, + "commentStart": 0, "end": 0, "name": "singleSide", "start": 0, @@ -1579,21 +1537,21 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 1621, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1630, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1630, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1630, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -1606,14 +1564,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "-", "right": { - "commentStart": 1643, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1643, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1643, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -1626,7 +1584,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "*", "right": { - "commentStart": 1658, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1649,10 +1607,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 1558, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1558, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1662,7 +1620,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 1558, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1674,21 +1632,21 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 1587, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1596, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1596, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1596, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -1702,10 +1660,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1611, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1611, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -1724,10 +1682,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 1571, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1571, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -1737,17 +1695,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 1571, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1583, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1583, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -1762,10 +1720,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 1566, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1566, + "commentStart": 0, "end": 0, "name": "face", "start": 0, @@ -1775,7 +1733,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 1566, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1797,12 +1755,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 1661, + "commentStart": 0, "declaration": { - "commentStart": 1728, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1728, + "commentStart": 0, "end": 0, "name": "sides", "start": 0, @@ -1813,14 +1771,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 1771, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1784, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -1835,17 +1793,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 1791, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1798, + "commentStart": 0, "elements": [ { - "commentStart": 1799, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1857,7 +1815,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 1802, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1869,7 +1827,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 1805, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1890,27 +1848,27 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 1811, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1820, + "commentStart": 0, "elements": [ { - "commentStart": 1827, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1827, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1827, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1827, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -1923,10 +1881,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 1839, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1839, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1940,10 +1898,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1843, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1843, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -1964,7 +1922,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "/", "right": { - "commentStart": 1853, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1980,17 +1938,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 1861, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1861, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1861, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1861, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -2003,10 +1961,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 1873, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1873, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2020,10 +1978,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1877, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1877, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -2044,7 +2002,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "/", "right": { - "commentStart": 1887, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2060,7 +2018,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 1894, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2081,14 +2039,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 1903, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1915, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -2103,14 +2061,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 1920, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1939, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -2122,10 +2080,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 1736, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1736, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -2135,17 +2093,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 1736, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1757, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1757, + "commentStart": 0, "end": 0, "name": "singleSide", "start": 0, @@ -2172,26 +2130,26 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 1946, + "commentStart": 0, "declaration": { - "commentStart": 1974, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1974, + "commentStart": 0, "end": 0, "name": "axis000", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1984, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1988, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1988, + "commentStart": 0, "end": 0, "name": "direction", "start": 0, @@ -2200,10 +2158,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2000, + "commentStart": 0, "elements": [ { - "commentStart": 2001, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -2215,7 +2173,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 2006, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -2234,10 +2192,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 2014, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2014, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -2246,17 +2204,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2023, + "commentStart": 0, "elements": [ { - "commentStart": 2029, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2029, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2029, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -2270,10 +2228,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2044, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2044, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -2289,14 +2247,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 2056, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2056, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2056, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -2310,10 +2268,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2071, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2071, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -2355,12 +2313,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 2083, + "commentStart": 0, "declaration": { - "commentStart": 2122, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2122, + "commentStart": 0, "end": 0, "name": "singleCorner", "start": 0, @@ -2371,7 +2329,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2200, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, @@ -2379,7 +2337,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "argument": { - "commentStart": 2209, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -2390,7 +2348,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "suffix": "None" } }, - "commentStart": 2208, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2401,7 +2359,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2213, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -2409,10 +2367,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "abs_path": false, - "commentStart": 2220, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2220, + "commentStart": 0, "end": 0, "name": "axis000", "start": 0, @@ -2427,10 +2385,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 2137, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2137, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -2440,7 +2398,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 2137, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2452,21 +2410,21 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2166, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2175, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2175, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2175, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -2480,10 +2438,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2190, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2190, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -2502,10 +2460,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 2150, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2150, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -2515,17 +2473,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 2150, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2162, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2162, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -2540,10 +2498,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 2145, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2145, + "commentStart": 0, "end": 0, "name": "face", "start": 0, @@ -2553,7 +2511,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 2145, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2575,12 +2533,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 2228, + "commentStart": 0, "declaration": { - "commentStart": 2263, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2263, + "commentStart": 0, "end": 0, "name": "corners", "start": 0, @@ -2591,14 +2549,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2310, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2323, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -2613,17 +2571,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2330, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2337, + "commentStart": 0, "elements": [ { - "commentStart": 2338, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2635,7 +2593,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 2341, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2647,7 +2605,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 2344, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2668,27 +2626,27 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2350, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2359, + "commentStart": 0, "elements": [ { - "commentStart": 2366, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2366, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2366, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2366, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -2701,10 +2659,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 2378, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2378, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2718,10 +2676,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2382, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2382, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -2742,7 +2700,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "/", "right": { - "commentStart": 2392, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2758,17 +2716,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 2400, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2400, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2400, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2400, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -2781,10 +2739,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 2412, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2412, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2798,10 +2756,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2416, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2416, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -2822,7 +2780,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "/", "right": { - "commentStart": 2426, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2838,7 +2796,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 2433, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2859,14 +2817,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2442, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2454, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -2881,14 +2839,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2459, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2478, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -2900,10 +2858,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 2273, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2273, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -2913,17 +2871,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 2273, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2294, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2294, + "commentStart": 0, "end": 0, "name": "singleCorner", "start": 0, @@ -2950,12 +2908,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 2485, + "commentStart": 0, "declaration": { - "commentStart": 2487, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2487, + "commentStart": 0, "end": 0, "name": "singleBinFill", "start": 0, @@ -2967,10 +2925,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arguments": [ { "abs_path": false, - "commentStart": 2517, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2517, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -2984,10 +2942,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 2503, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2503, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2997,7 +2955,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 2503, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3006,17 +2964,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "arguments": [ { - "commentStart": 2541, + "commentStart": 0, "elements": [ { - "commentStart": 2550, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2550, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2550, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -3030,10 +2988,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2566, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2566, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -3049,14 +3007,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 2581, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2581, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2581, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -3070,10 +3028,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2597, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2597, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -3095,7 +3053,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "ArrayExpression" }, { - "commentStart": 2612, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3104,10 +3062,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 2526, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2526, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -3117,7 +3075,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 2526, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3128,24 +3086,24 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2625, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2631, + "commentStart": 0, "elements": [ { - "commentStart": 2632, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2632, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2632, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -3158,14 +3116,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "-", "right": { - "commentStart": 2645, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2645, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2645, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -3178,7 +3136,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "*", "right": { - "commentStart": 2661, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3198,7 +3156,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 2665, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3219,14 +3177,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2669, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2675, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3237,10 +3195,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 2620, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2620, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3250,7 +3208,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 2620, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3262,17 +3220,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2695, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2701, + "commentStart": 0, "elements": [ { - "commentStart": 2702, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3284,14 +3242,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 2705, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2705, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2705, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -3304,14 +3262,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "-", "right": { - "commentStart": 2718, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2718, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2718, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -3324,7 +3282,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "*", "right": { - "commentStart": 2734, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3353,14 +3311,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2739, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2745, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3371,10 +3329,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 2690, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2690, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3384,7 +3342,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 2690, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3396,7 +3354,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2766, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -3405,7 +3363,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arg": { "arguments": [ { - "commentStart": 2794, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3414,10 +3372,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 2780, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2780, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -3427,7 +3385,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 2780, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3437,14 +3395,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2798, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2804, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3455,10 +3413,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 2760, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2760, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -3468,7 +3426,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 2760, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3480,14 +3438,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2825, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2831, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3498,10 +3456,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 2819, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2819, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -3511,7 +3469,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 2819, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3523,7 +3481,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2854, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3531,10 +3489,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "abs_path": false, - "commentStart": 2863, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2863, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -3549,10 +3507,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 2846, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2846, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3562,7 +3520,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 2846, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3574,7 +3532,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2891, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -3582,10 +3540,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "abs_path": false, - "commentStart": 2900, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2900, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, @@ -3600,23 +3558,23 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 2918, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2925, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 2956, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2956, + "commentStart": 0, "end": 0, "name": "line000", "start": 0, @@ -3630,10 +3588,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 2936, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2936, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -3643,7 +3601,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 2936, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3653,10 +3611,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arguments": [ { "abs_path": false, - "commentStart": 2999, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2999, + "commentStart": 0, "end": 0, "name": "line000", "start": 0, @@ -3670,10 +3628,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 2975, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2975, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -3683,7 +3641,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 2975, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3693,10 +3651,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arguments": [ { "abs_path": false, - "commentStart": 3038, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3038, + "commentStart": 0, "end": 0, "name": "line002", "start": 0, @@ -3710,10 +3668,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 3018, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3018, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -3723,7 +3681,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 3018, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3733,10 +3691,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arguments": [ { "abs_path": false, - "commentStart": 3081, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3081, + "commentStart": 0, "end": 0, "name": "line002", "start": 0, @@ -3750,10 +3708,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 3057, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3057, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -3763,7 +3721,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 3057, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3779,10 +3737,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 2876, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2876, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -3792,7 +3750,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 2876, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3800,7 +3758,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "unlabeled": null } ], - "commentStart": 2503, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -3816,12 +3774,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 3106, + "commentStart": 0, "declaration": { - "commentStart": 3108, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3108, + "commentStart": 0, "end": 0, "name": "magCutout000", "start": 0, @@ -3832,37 +3790,38 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 3137, - "end": 0, - "name": { - "commentStart": 3137, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "singleBinFill", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 3152, - "end": 0, - "raw": "\"start\"", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "start" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 3123, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3123, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -3872,39 +3831,55 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 3123, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "singleBinFill", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 3181, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3190, + "commentStart": 0, "elements": [ { - "commentStart": 3201, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3201, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 3202, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3202, + "commentStart": 0, "end": 0, "name": "magOffset", "start": 0, @@ -3915,7 +3890,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "Name", "type": "Name" }, - "commentStart": 3201, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3925,10 +3900,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 3214, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3214, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -3946,10 +3921,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 3230, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3230, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -3965,17 +3940,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 3247, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3247, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3247, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3247, + "commentStart": 0, "end": 0, "name": "magOffset", "start": 0, @@ -3989,10 +3964,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3259, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3259, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -4010,10 +3985,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3275, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3275, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -4038,21 +4013,21 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 3299, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3308, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3308, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3308, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -4065,7 +4040,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "/", "right": { - "commentStart": 3323, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4084,10 +4059,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 3166, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3166, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -4097,7 +4072,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 3166, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4109,14 +4084,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 3364, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3377, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -4131,28 +4106,28 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 3389, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3398, + "commentStart": 0, "elements": [ { - "commentStart": 3410, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3410, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 3411, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3411, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -4163,7 +4138,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "Name", "type": "Name" }, - "commentStart": 3410, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4172,10 +4147,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 3423, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3423, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4189,10 +4164,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3427, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3427, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -4213,7 +4188,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "/", "right": { - "commentStart": 3437, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4229,17 +4204,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 3450, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3450, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3450, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3450, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -4252,10 +4227,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 3462, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3462, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4269,10 +4244,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3466, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3466, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -4293,7 +4268,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "/", "right": { - "commentStart": 3476, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4318,14 +4293,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 3495, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3507, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -4340,14 +4315,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 3517, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3536, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -4359,10 +4334,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 3338, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3338, + "commentStart": 0, "end": 0, "name": "patternCircular2d", "start": 0, @@ -4372,7 +4347,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 3338, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4384,7 +4359,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 3562, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4393,10 +4368,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 3572, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3572, + "commentStart": 0, "end": 0, "name": "magDepth", "start": 0, @@ -4407,7 +4382,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "Name", "type": "Name" }, - "commentStart": 3571, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4418,10 +4393,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 3554, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3554, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -4431,7 +4406,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 3554, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4439,13 +4414,13 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "unlabeled": null } ], - "commentStart": 3123, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "3": [ { - "commentStart": 3581, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4473,12 +4448,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 3627, + "commentStart": 0, "declaration": { - "commentStart": 3627, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3627, + "commentStart": 0, "end": 0, "name": "binSides", "start": 0, @@ -4491,17 +4466,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 3676, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3683, + "commentStart": 0, "elements": [ { - "commentStart": 3684, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -4513,7 +4488,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 3689, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -4525,7 +4500,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 3694, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -4546,7 +4521,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 3707, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -4554,10 +4529,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "abs_path": false, - "commentStart": 3719, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3719, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -4572,21 +4547,21 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 3741, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3752, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3752, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3752, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -4599,14 +4574,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 3764, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3764, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3764, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -4619,7 +4594,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "*", "right": { - "commentStart": 3773, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4642,10 +4617,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 3638, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3638, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -4655,17 +4630,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 3638, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 3662, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3662, + "commentStart": 0, "end": 0, "name": "sides", "start": 0, @@ -4682,17 +4657,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 3804, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3811, + "commentStart": 0, "elements": [ { - "commentStart": 3812, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -4704,7 +4679,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 3817, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -4716,7 +4691,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 3822, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -4737,7 +4712,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 3828, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -4745,10 +4720,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "abs_path": false, - "commentStart": 3840, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3840, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -4763,21 +4738,21 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 3856, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3867, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3867, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3867, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -4790,14 +4765,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 3879, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3879, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3879, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -4810,7 +4785,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "*", "right": { - "commentStart": 3888, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4833,10 +4808,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 3788, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3788, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -4846,7 +4821,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 3788, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4854,13 +4829,13 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "unlabeled": null } ], - "commentStart": 3638, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 3890, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4888,12 +4863,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 3957, + "commentStart": 0, "declaration": { - "commentStart": 3957, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3957, + "commentStart": 0, "end": 0, "name": "binCorners", "start": 0, @@ -4906,17 +4881,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4010, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4017, + "commentStart": 0, "elements": [ { - "commentStart": 4018, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -4928,7 +4903,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 4023, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -4940,7 +4915,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 4028, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -4961,7 +4936,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4041, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -4969,10 +4944,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "abs_path": false, - "commentStart": 4053, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4053, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -4987,21 +4962,21 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4075, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4086, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4086, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4086, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -5014,14 +4989,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 4098, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4098, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4098, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -5034,7 +5009,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "*", "right": { - "commentStart": 4107, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5057,10 +5032,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 3970, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3970, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -5070,17 +5045,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 3970, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 3994, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3994, + "commentStart": 0, "end": 0, "name": "corners", "start": 0, @@ -5097,17 +5072,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4138, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4145, + "commentStart": 0, "elements": [ { - "commentStart": 4146, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -5119,7 +5094,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 4151, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -5131,7 +5106,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 4156, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -5152,7 +5127,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4162, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -5160,10 +5135,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "abs_path": false, - "commentStart": 4174, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4174, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -5178,21 +5153,21 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4190, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4201, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4201, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4201, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -5205,14 +5180,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 4213, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4213, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4213, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -5225,7 +5200,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "*", "right": { - "commentStart": 4222, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5248,10 +5223,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 4122, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4122, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -5261,7 +5236,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 4122, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5269,13 +5244,13 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "unlabeled": null } ], - "commentStart": 3970, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 4224, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5303,12 +5278,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 4282, + "commentStart": 0, "declaration": { - "commentStart": 4282, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4282, + "commentStart": 0, "end": 0, "name": "binFill", "start": 0, @@ -5321,17 +5296,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4338, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4345, + "commentStart": 0, "elements": [ { - "commentStart": 4346, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -5343,7 +5318,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 4351, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -5355,7 +5330,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 4356, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -5376,7 +5351,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4369, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -5384,10 +5359,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "abs_path": false, - "commentStart": 4381, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4381, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -5402,21 +5377,21 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4403, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4414, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4414, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4414, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -5429,14 +5404,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 4426, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4426, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4426, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -5449,7 +5424,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "*", "right": { - "commentStart": 4435, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5472,10 +5447,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 4292, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4292, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -5485,17 +5460,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 4292, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 4316, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4316, + "commentStart": 0, "end": 0, "name": "singleBinFill", "start": 0, @@ -5512,17 +5487,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4466, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4473, + "commentStart": 0, "elements": [ { - "commentStart": 4474, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -5534,7 +5509,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 4479, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -5546,7 +5521,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 4484, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -5567,7 +5542,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4490, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -5575,10 +5550,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "abs_path": false, - "commentStart": 4502, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4502, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -5593,21 +5568,21 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4518, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4529, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4529, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4529, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -5620,14 +5595,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 4541, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4541, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4541, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -5640,7 +5615,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "*", "right": { - "commentStart": 4550, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5663,10 +5638,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 4450, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4450, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -5676,7 +5651,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 4450, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5684,7 +5659,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "unlabeled": null } ], - "commentStart": 4292, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -5700,12 +5675,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 4552, + "commentStart": 0, "declaration": { - "commentStart": 4554, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4554, + "commentStart": 0, "end": 0, "name": "binTop", "start": 0, @@ -5720,7 +5695,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4593, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -5728,10 +5703,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "abs_path": false, - "commentStart": 4602, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4602, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -5746,10 +5721,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 4577, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4577, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -5759,17 +5734,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 4577, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 4589, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4589, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -5784,10 +5759,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 4563, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4563, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -5797,7 +5772,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 4563, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5806,10 +5781,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "arguments": [ { - "commentStart": 4631, + "commentStart": 0, "elements": [ { - "commentStart": 4632, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5821,7 +5796,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 4635, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5839,7 +5814,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "ArrayExpression" }, { - "commentStart": 4639, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5848,10 +5823,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 4616, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4616, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -5861,7 +5836,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 4616, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5872,24 +5847,24 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4653, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4663, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4663, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4663, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4663, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -5902,10 +5877,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 4675, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4675, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5919,10 +5894,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4679, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4679, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -5944,10 +5919,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4689, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4689, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -5966,14 +5941,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4704, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4710, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -5984,10 +5959,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 4647, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4647, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -5997,7 +5972,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 4647, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6009,24 +5984,24 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4731, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4741, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4741, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4741, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4741, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -6039,10 +6014,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 4753, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4753, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6056,10 +6031,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4757, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4757, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -6081,10 +6056,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4767, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4767, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -6103,14 +6078,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4783, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4789, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -6121,10 +6096,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 4725, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4725, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -6134,7 +6109,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 4725, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6146,7 +6121,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4810, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -6155,7 +6130,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arg": { "arguments": [ { - "commentStart": 4838, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6164,10 +6139,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 4824, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4824, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -6177,7 +6152,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 4824, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6187,14 +6162,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4842, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4848, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -6205,10 +6180,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 4804, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4804, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -6218,7 +6193,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 4804, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6230,14 +6205,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4869, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4875, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -6248,10 +6223,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 4863, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4863, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -6261,7 +6236,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 4863, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6273,21 +6248,21 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4898, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4907, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4907, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4907, + "commentStart": 0, "end": 0, "name": "binHeight", "start": 0, @@ -6301,10 +6276,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4919, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4919, + "commentStart": 0, "end": 0, "name": "countBinHeight", "start": 0, @@ -6323,10 +6298,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 4890, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4890, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -6336,7 +6311,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 4890, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6348,7 +6323,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4955, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -6356,10 +6331,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "abs_path": false, - "commentStart": 4964, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4964, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -6374,23 +6349,23 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 4985, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4992, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 5023, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5023, + "commentStart": 0, "end": 0, "name": "line010", "start": 0, @@ -6404,10 +6379,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 5003, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5003, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -6417,7 +6392,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 5003, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6427,10 +6402,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arguments": [ { "abs_path": false, - "commentStart": 5066, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5066, + "commentStart": 0, "end": 0, "name": "line010", "start": 0, @@ -6444,10 +6419,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 5042, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5042, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -6457,7 +6432,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 5042, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6467,10 +6442,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arguments": [ { "abs_path": false, - "commentStart": 5105, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5105, + "commentStart": 0, "end": 0, "name": "line012", "start": 0, @@ -6484,10 +6459,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 5085, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5085, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -6497,7 +6472,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 5085, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6507,10 +6482,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arguments": [ { "abs_path": false, - "commentStart": 5148, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5148, + "commentStart": 0, "end": 0, "name": "line012", "start": 0, @@ -6524,10 +6499,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 5124, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5124, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -6537,7 +6512,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 5124, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6553,10 +6528,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 4940, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4940, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -6566,7 +6541,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 4940, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6578,23 +6553,30 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 5185, + "commentStart": 0, "end": 0, "name": "faces", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5193, + "commentStart": 0, "elements": [ { - "commentStart": 5194, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "\"end\"", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "end" + "type": "Name", + "type": "Name" } ], "end": 0, @@ -6606,7 +6588,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 5202, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -6614,10 +6596,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "abs_path": false, - "commentStart": 5214, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5214, + "commentStart": 0, "end": 0, "name": "binThk", "start": 0, @@ -6632,10 +6614,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 5179, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5179, + "commentStart": 0, "end": 0, "name": "shell", "start": 0, @@ -6645,7 +6627,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 5179, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6653,13 +6635,13 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "unlabeled": null } ], - "commentStart": 4563, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "8": [ { - "commentStart": 5221, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -6687,12 +6669,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 5290, + "commentStart": 0, "declaration": { - "commentStart": 5293, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5293, + "commentStart": 0, "end": 0, "name": "lipFace", "start": 0, @@ -6702,12 +6684,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "body": { "body": [ { - "commentStart": 5312, + "commentStart": 0, "declaration": { - "commentStart": 5312, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5312, + "commentStart": 0, "end": 0, "name": "faceSketch", "start": 0, @@ -6719,10 +6701,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arguments": [ { "abs_path": false, - "commentStart": 5339, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5339, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -6736,10 +6718,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 5325, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5325, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -6749,7 +6731,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 5325, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6758,10 +6740,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "arguments": [ { - "commentStart": 5368, + "commentStart": 0, "elements": [ { - "commentStart": 5369, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6773,7 +6755,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 5372, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6791,7 +6773,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "ArrayExpression" }, { - "commentStart": 5376, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6800,10 +6782,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 5353, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5353, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -6813,7 +6795,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 5353, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6824,17 +6806,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 5443, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5449, + "commentStart": 0, "elements": [ { - "commentStart": 5450, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -6846,7 +6828,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 5455, + "commentStart": 0, "end": 0, "raw": "5.792893", "start": 0, @@ -6867,14 +6849,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 5466, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5472, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -6885,10 +6867,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 5438, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5438, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6898,7 +6880,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 5438, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6908,14 +6890,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "arguments": [ { - "commentStart": 5493, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 5504, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5504, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -6924,7 +6906,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 5517, + "commentStart": 0, "end": 0, "raw": "180.0", "start": 0, @@ -6937,10 +6919,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 5533, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5533, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -6949,7 +6931,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 5544, + "commentStart": 0, "end": 0, "raw": "45.0", "start": 0, @@ -6962,10 +6944,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 5559, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5559, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -6974,7 +6956,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 5568, + "commentStart": 0, "end": 0, "raw": "0.500000", "start": 0, @@ -6992,14 +6974,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "ObjectExpression" }, { - "commentStart": 5587, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", "type": "PipeSubstitution" }, { - "commentStart": 5590, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -7009,10 +6991,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 5489, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5489, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -7022,7 +7004,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 5489, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7033,17 +7015,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 5678, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5684, + "commentStart": 0, "elements": [ { - "commentStart": 5685, + "commentStart": 0, "end": 0, "raw": "1.046447", "start": 0, @@ -7056,7 +7038,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, { "argument": { - "commentStart": 5696, + "commentStart": 0, "end": 0, "raw": "1.046447", "start": 0, @@ -7067,7 +7049,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "suffix": "None" } }, - "commentStart": 5695, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7084,14 +7066,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 5707, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5713, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -7102,10 +7084,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 5673, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5673, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7115,7 +7097,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 5673, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7127,7 +7109,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 5736, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -7136,10 +7118,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 5746, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5746, + "commentStart": 0, "end": 0, "name": "lipStep4", "start": 0, @@ -7150,7 +7132,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "Name", "type": "Name" }, - "commentStart": 5745, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7161,10 +7143,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 5730, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5730, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -7174,7 +7156,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 5730, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7184,92 +7166,70 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "arguments": [ { - "commentStart": 5783, - "end": 0, - "properties": [ - { - "commentStart": 5785, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 5785, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "45", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "argument": { - "commentStart": 5794, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - }, - "commentStart": 5793, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "value": 45.0, + "suffix": "None" } }, - { - "commentStart": 5798, - "end": 0, - "key": { - "commentStart": 5798, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 5807, - "end": 0, - "name": { - "commentStart": 5807, - "end": 0, - "name": "lipStep3", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } }, { - "commentStart": 5819, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "lengthY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "lipStep3", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 5763, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5763, + "commentStart": 0, "end": 0, - "name": "angledLineOfYLength", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -7277,18 +7237,19 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 5763, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 5835, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -7297,10 +7258,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 5845, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5845, + "commentStart": 0, "end": 0, "name": "lipStep2", "start": 0, @@ -7311,7 +7272,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "Name", "type": "Name" }, - "commentStart": 5844, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7322,10 +7283,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 5829, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5829, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -7335,7 +7296,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 5829, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7345,92 +7306,70 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "arguments": [ { - "commentStart": 5882, - "end": 0, - "properties": [ - { - "commentStart": 5884, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 5884, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "135", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "argument": { - "commentStart": 5893, - "end": 0, - "raw": "135", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 135.0, - "suffix": "None" - } - }, - "commentStart": 5892, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "value": 135.0, + "suffix": "None" } }, - { - "commentStart": 5898, - "end": 0, - "key": { - "commentStart": 5898, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 5907, - "end": 0, - "name": { - "commentStart": 5907, - "end": 0, - "name": "lipStep1", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } }, { - "commentStart": 5919, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "lengthY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "lipStep1", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 5862, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5862, + "commentStart": 0, "end": 0, - "name": "angledLineOfYLength", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -7438,20 +7377,21 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 5862, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [], "callee": { "abs_path": false, - "commentStart": 5929, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5929, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -7461,20 +7401,20 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 5929, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 5325, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 5382, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -7487,13 +7427,13 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "3": [ { - "commentStart": 5602, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", "value": { "type": "blockComment", - "value": "|> angledLineOfYLength({ angle: -45, length: lipStep5 }, %)", + "value": "|> angledLine(angle = -45, lengthY = lipStep5 )", "style": "line" } } @@ -7517,10 +7457,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "argument": { "abs_path": false, - "commentStart": 5946, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5946, + "commentStart": 0, "end": 0, "name": "faceSketch", "start": 0, @@ -7531,24 +7471,24 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "Name", "type": "Name" }, - "commentStart": 5939, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 5308, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 5300, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 5301, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -7570,329 +7510,307 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 5958, + "commentStart": 0, "declaration": { - "commentStart": 5960, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5960, + "commentStart": 0, "end": 0, "name": "plane000", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 5971, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 5975, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5975, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 5983, + "commentStart": 0, + "elements": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "cornerRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "height", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "binHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "countBinHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + ], "end": 0, - "properties": [ + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "xAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ { - "commentStart": 5989, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 5989, - "end": 0, - "name": "origin", - "start": 0, - "type": "Identifier" - }, + "raw": "0.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 5998, - "elements": [ - { - "abs_path": false, - "commentStart": 6006, - "end": 0, - "name": { - "commentStart": 6006, - "end": 0, - "name": "cornerRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 6026, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 6037, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 6037, - "end": 0, - "name": { - "commentStart": 6037, - "end": 0, - "name": "height", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "+", - "right": { - "commentStart": 6046, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 6046, - "end": 0, - "name": { - "commentStart": 6046, - "end": 0, - "name": "binHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 6058, - "end": 0, - "name": { - "commentStart": 6058, - "end": 0, - "name": "countBinHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.0, + "suffix": "None" } }, { - "commentStart": 6084, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 6084, - "end": 0, - "name": "xAxis", - "start": 0, - "type": "Identifier" - }, + "raw": "1.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 6092, - "elements": [ - { - "commentStart": 6093, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 6098, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 6103, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 1.0, + "suffix": "None" } }, { - "commentStart": 6113, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 6113, - "end": 0, - "name": "yAxis", - "start": 0, - "type": "Identifier" - }, + "raw": "0.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 6121, - "elements": [ - { - "commentStart": 6122, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 6127, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 6132, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - }, - { - "commentStart": 6142, - "end": 0, - "key": { - "commentStart": 6142, - "end": 0, - "name": "zAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 6150, - "elements": [ - { - "commentStart": 6151, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 6156, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 6161, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.0, + "suffix": "None" } } ], + "end": 0, "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" } } ], @@ -7910,72 +7828,388 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 6171, + "commentStart": 0, "declaration": { - "commentStart": 6173, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6173, + "commentStart": 0, "end": 0, "name": "plane001", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6184, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 6188, + "commentStart": 0, "end": 0, "key": { - "commentStart": 6188, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 6196, - "end": 0, - "properties": [ + "commentStart": 0, + "elements": [ { - "commentStart": 6202, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 6202, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "name": "origin", + "name": "cornerRadius", "start": 0, "type": "Identifier" }, + "path": [], "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 6211, - "elements": [ - { - "commentStart": 6219, + "type": "Name", + "type": "Name" + }, + { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "height", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "raw": "0.0", + "name": "binHeight", "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } + "type": "Identifier" }, - { + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "countBinHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "xAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "plane002", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "origin", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "countBinWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "left": { "abs_path": false, - "commentStart": 6230, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6230, + "commentStart": 0, "end": 0, - "name": "cornerRadius", + "name": "binLength", "start": 0, "type": "Identifier" }, @@ -7984,17 +8218,31 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "Name", "type": "Name" }, - { - "commentStart": 6250, + "operator": "+", + "right": { + "commentStart": 0, "end": 0, "left": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "operator": "*", + "right": { "abs_path": false, - "commentStart": 6250, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6250, + "commentStart": 0, "end": 0, - "name": "height", + "name": "binTol", "start": 0, "type": "Identifier" }, @@ -8003,668 +8251,294 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "Name", "type": "Name" }, - "operator": "+", - "right": { - "commentStart": 6259, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 6259, - "end": 0, - "name": { - "commentStart": 6259, - "end": 0, - "name": "binHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 6271, - "end": 0, - "name": { - "commentStart": 6271, - "end": 0, - "name": "countBinHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" - } - ], - "end": 0, + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "cornerRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } }, { - "commentStart": 6297, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 6297, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "xAxis", + "name": { + "commentStart": 0, + "end": 0, + "name": "height", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "binHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "countBinHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" }, "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 6305, - "elements": [ - { - "commentStart": 6306, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 6311, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 6316, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - }, - { - "commentStart": 6326, - "end": 0, - "key": { - "commentStart": 6326, - "end": 0, - "name": "yAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 6334, - "elements": [ - { - "commentStart": 6335, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 6340, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 6345, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - }, - { - "commentStart": 6355, - "end": 0, - "key": { - "commentStart": 6355, - "end": 0, - "name": "zAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 6363, - "elements": [ - { - "commentStart": 6364, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 6369, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 6374, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } + "type": "BinaryExpression", + "type": "BinaryExpression" } ], + "end": 0, "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "ArrayExpression", + "type": "ArrayExpression" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - "start": 0, - "type": "VariableDeclarator" - }, - "end": 0, - "kind": "const", - "start": 0, - "type": "VariableDeclaration", - "type": "VariableDeclaration" - }, - { - "commentStart": 6384, - "declaration": { - "commentStart": 6386, - "end": 0, - "id": { - "commentStart": 6386, - "end": 0, - "name": "plane002", - "start": 0, - "type": "Identifier" - }, - "init": { - "commentStart": 6397, - "end": 0, - "properties": [ + }, { - "commentStart": 6401, + "commentStart": 0, "end": 0, "key": { - "commentStart": 6401, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "xAxis", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 6409, - "end": 0, - "properties": [ + "commentStart": 0, + "elements": [ { - "commentStart": 6415, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 6415, - "end": 0, - "name": "origin", - "start": 0, - "type": "Identifier" - }, + "raw": "0.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 6424, - "elements": [ - { - "commentStart": 6432, - "end": 0, - "left": { - "commentStart": 6432, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 6432, - "end": 0, - "name": { - "commentStart": 6432, - "end": 0, - "name": "countBinWidth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "*", - "right": { - "commentStart": 6449, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 6449, - "end": 0, - "name": { - "commentStart": 6449, - "end": 0, - "name": "binLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "+", - "right": { - "commentStart": 6461, - "end": 0, - "left": { - "commentStart": 6461, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 6465, - "end": 0, - "name": { - "commentStart": 6465, - "end": 0, - "name": "binTol", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "-", - "right": { - "abs_path": false, - "commentStart": 6475, - "end": 0, - "name": { - "commentStart": 6475, - "end": 0, - "name": "cornerRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "commentStart": 6495, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 6506, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 6506, - "end": 0, - "name": { - "commentStart": 6506, - "end": 0, - "name": "height", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "+", - "right": { - "commentStart": 6515, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 6515, - "end": 0, - "name": { - "commentStart": 6515, - "end": 0, - "name": "binHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 6527, - "end": 0, - "name": { - "commentStart": 6527, - "end": 0, - "name": "countBinHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.0, + "suffix": "None" } }, { - "commentStart": 6553, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 6553, - "end": 0, - "name": "xAxis", - "start": 0, - "type": "Identifier" - }, + "raw": "1.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 6561, - "elements": [ - { - "commentStart": 6562, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 6567, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 6572, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 1.0, + "suffix": "None" } }, { - "commentStart": 6582, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 6582, - "end": 0, - "name": "yAxis", - "start": 0, - "type": "Identifier" - }, + "raw": "0.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 6590, - "elements": [ - { - "commentStart": 6591, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 6596, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 6601, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - }, - { - "commentStart": 6611, - "end": 0, - "key": { - "commentStart": 6611, - "end": 0, - "name": "zAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 6619, - "elements": [ - { - "commentStart": 6620, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 6625, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 6630, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.0, + "suffix": "None" } } ], + "end": 0, "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" } } ], @@ -8682,12 +8556,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 6640, + "commentStart": 0, "declaration": { - "commentStart": 6689, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6689, + "commentStart": 0, "end": 0, "name": "lipSingleLength", "start": 0, @@ -8698,27 +8572,27 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 6734, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6743, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6743, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6743, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6743, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6743, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -8732,10 +8606,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6755, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6755, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -8752,10 +8626,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "-", "right": { - "commentStart": 6772, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6772, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -8769,10 +8643,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6776, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6776, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -8793,13 +8667,13 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 6792, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6792, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6792, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -8813,10 +8687,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6796, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6796, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -8834,10 +8708,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6805, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6805, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -8860,10 +8734,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 6707, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6707, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -8873,7 +8747,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 6707, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8882,10 +8756,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arguments": [ { "abs_path": false, - "commentStart": 6723, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6723, + "commentStart": 0, "end": 0, "name": "plane000", "start": 0, @@ -8899,10 +8773,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 6715, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6715, + "commentStart": 0, "end": 0, "name": "lipFace", "start": 0, @@ -8912,7 +8786,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 6715, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8934,12 +8808,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 6819, + "commentStart": 0, "declaration": { - "commentStart": 6868, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6868, + "commentStart": 0, "end": 0, "name": "lipSingleWidth", "start": 0, @@ -8950,27 +8824,27 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 6912, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6921, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6921, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6921, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6921, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6921, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -8984,10 +8858,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6933, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6933, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -9004,10 +8878,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "-", "right": { - "commentStart": 6951, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6951, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9021,10 +8895,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6955, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6955, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -9045,13 +8919,13 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 6971, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6971, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6971, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9065,10 +8939,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6975, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6975, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -9086,10 +8960,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6984, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6984, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -9112,10 +8986,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 6885, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6885, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -9125,7 +8999,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 6885, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9134,10 +9008,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arguments": [ { "abs_path": false, - "commentStart": 6901, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6901, + "commentStart": 0, "end": 0, "name": "plane001", "start": 0, @@ -9151,10 +9025,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 6893, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6893, + "commentStart": 0, "end": 0, "name": "lipFace", "start": 0, @@ -9164,7 +9038,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 6893, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9186,12 +9060,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 6999, + "commentStart": 0, "declaration": { - "commentStart": 7067, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7067, + "commentStart": 0, "end": 0, "name": "lipLengths", "start": 0, @@ -9202,14 +9076,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 7120, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7133, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -9224,17 +9098,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 7140, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7147, + "commentStart": 0, "elements": [ { - "commentStart": 7148, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -9246,7 +9120,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 7151, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -9258,7 +9132,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 7154, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -9279,30 +9153,30 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 7160, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7169, + "commentStart": 0, "elements": [ { - "commentStart": 7176, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7176, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7176, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7176, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7176, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -9315,10 +9189,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 7188, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7188, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9332,10 +9206,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 7192, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7192, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -9356,7 +9230,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "/", "right": { - "commentStart": 7202, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9374,10 +9248,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 7206, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7206, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -9393,20 +9267,20 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 7226, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7226, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7226, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7226, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7226, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -9419,10 +9293,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 7238, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7238, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9436,10 +9310,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 7242, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7242, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -9460,7 +9334,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "/", "right": { - "commentStart": 7252, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9478,10 +9352,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 7256, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7256, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -9497,7 +9371,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 7276, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -9518,14 +9392,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 7285, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7297, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9540,14 +9414,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 7302, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7321, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -9559,10 +9433,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 7080, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7080, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -9572,17 +9446,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 7080, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 7101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7101, + "commentStart": 0, "end": 0, "name": "lipSingleLength", "start": 0, @@ -9609,12 +9483,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 7328, + "commentStart": 0, "declaration": { - "commentStart": 7396, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7396, + "commentStart": 0, "end": 0, "name": "lipWidths", "start": 0, @@ -9625,14 +9499,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 7447, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7460, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -9647,17 +9521,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 7467, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7474, + "commentStart": 0, "elements": [ { - "commentStart": 7475, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -9669,7 +9543,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 7478, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -9681,7 +9555,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 7481, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -9702,30 +9576,30 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 7487, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7496, + "commentStart": 0, "elements": [ { - "commentStart": 7503, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7503, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7503, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7503, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7503, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -9738,10 +9612,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 7515, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7515, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9755,10 +9629,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 7519, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7519, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -9779,7 +9653,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "/", "right": { - "commentStart": 7529, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9797,10 +9671,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 7533, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7533, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -9816,20 +9690,20 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 7553, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7553, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7553, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7553, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7553, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -9842,10 +9716,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 7565, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7565, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9859,10 +9733,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 7569, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7569, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -9883,7 +9757,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "/", "right": { - "commentStart": 7579, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9901,10 +9775,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 7583, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7583, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -9920,7 +9794,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 7603, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -9941,14 +9815,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 7612, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7624, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9963,14 +9837,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 7629, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7648, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -9982,10 +9856,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 7408, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7408, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -9995,17 +9869,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 7408, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 7429, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7429, + "commentStart": 0, "end": 0, "name": "lipSingleWidth", "start": 0, @@ -10032,26 +9906,26 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 7655, + "commentStart": 0, "declaration": { - "commentStart": 7683, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7683, + "commentStart": 0, "end": 0, "name": "axis001", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 7693, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 7697, + "commentStart": 0, "end": 0, "key": { - "commentStart": 7697, + "commentStart": 0, "end": 0, "name": "direction", "start": 0, @@ -10060,10 +9934,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 7709, + "commentStart": 0, "elements": [ { - "commentStart": 7710, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -10075,7 +9949,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 7715, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -10094,10 +9968,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 7723, + "commentStart": 0, "end": 0, "key": { - "commentStart": 7723, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -10106,14 +9980,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 7732, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 7733, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7733, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -10126,10 +10000,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, { "abs_path": false, - "commentStart": 7747, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7747, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -10167,12 +10041,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 7762, + "commentStart": 0, "declaration": { - "commentStart": 7801, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7801, + "commentStart": 0, "end": 0, "name": "lipSingleLengthCorner", "start": 0, @@ -10183,7 +10057,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 7852, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, @@ -10191,7 +10065,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "argument": { - "commentStart": 7861, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -10202,7 +10076,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "suffix": "None" } }, - "commentStart": 7860, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10213,7 +10087,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 7865, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -10221,10 +10095,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "abs_path": false, - "commentStart": 7872, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7872, + "commentStart": 0, "end": 0, "name": "axis001", "start": 0, @@ -10239,10 +10113,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 7825, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7825, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -10252,7 +10126,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 7825, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10261,10 +10135,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arguments": [ { "abs_path": false, - "commentStart": 7841, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7841, + "commentStart": 0, "end": 0, "name": "plane000", "start": 0, @@ -10278,10 +10152,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 7833, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7833, + "commentStart": 0, "end": 0, "name": "lipFace", "start": 0, @@ -10291,7 +10165,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 7833, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -10313,12 +10187,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 7880, + "commentStart": 0, "declaration": { - "commentStart": 7919, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7919, + "commentStart": 0, "end": 0, "name": "lipSingleWidthCorner", "start": 0, @@ -10329,14 +10203,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 7969, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7977, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -10351,7 +10225,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 7981, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -10359,10 +10233,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "arg": { "abs_path": false, - "commentStart": 7988, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7988, + "commentStart": 0, "end": 0, "name": "axis001", "start": 0, @@ -10377,10 +10251,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 7942, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7942, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -10390,7 +10264,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 7942, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10399,10 +10273,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "arguments": [ { "abs_path": false, - "commentStart": 7958, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7958, + "commentStart": 0, "end": 0, "name": "plane002", "start": 0, @@ -10416,10 +10290,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 7950, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7950, + "commentStart": 0, "end": 0, "name": "lipFace", "start": 0, @@ -10429,7 +10303,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 7950, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -10451,12 +10325,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 7996, + "commentStart": 0, "declaration": { - "commentStart": 8031, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8031, + "commentStart": 0, "end": 0, "name": "lipCorners000", "start": 0, @@ -10467,14 +10341,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 8093, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8106, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -10489,17 +10363,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 8113, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8120, + "commentStart": 0, "elements": [ { - "commentStart": 8121, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -10511,7 +10385,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 8124, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -10523,7 +10397,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 8127, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -10544,30 +10418,30 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 8133, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8142, + "commentStart": 0, "elements": [ { - "commentStart": 8149, + "commentStart": 0, "end": 0, "left": { - "commentStart": 8149, + "commentStart": 0, "end": 0, "left": { - "commentStart": 8149, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 8149, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8149, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -10580,10 +10454,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 8161, + "commentStart": 0, "end": 0, "left": { - "commentStart": 8161, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -10597,10 +10471,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 8165, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8165, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -10621,7 +10495,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "/", "right": { - "commentStart": 8175, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -10639,10 +10513,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 8179, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8179, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -10658,20 +10532,20 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 8199, + "commentStart": 0, "end": 0, "left": { - "commentStart": 8199, + "commentStart": 0, "end": 0, "left": { - "commentStart": 8199, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 8199, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8199, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -10684,10 +10558,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 8211, + "commentStart": 0, "end": 0, "left": { - "commentStart": 8211, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -10701,10 +10575,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 8215, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8215, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -10725,7 +10599,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "/", "right": { - "commentStart": 8225, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -10743,10 +10617,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 8229, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8229, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -10762,7 +10636,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 8249, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -10783,14 +10657,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 8258, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8270, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -10805,14 +10679,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 8275, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8294, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -10824,10 +10698,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 8047, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8047, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -10837,17 +10711,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 8047, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 8068, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8068, + "commentStart": 0, "end": 0, "name": "lipSingleLengthCorner", "start": 0, @@ -10874,12 +10748,12 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "VariableDeclaration" }, { - "commentStart": 8301, + "commentStart": 0, "declaration": { - "commentStart": 8336, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8336, + "commentStart": 0, "end": 0, "name": "lipCorners001", "start": 0, @@ -10890,14 +10764,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 8397, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8410, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -10912,17 +10786,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 8417, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8424, + "commentStart": 0, "elements": [ { - "commentStart": 8425, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -10934,7 +10808,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 8428, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -10946,7 +10820,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl } }, { - "commentStart": 8431, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -10967,30 +10841,30 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 8437, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8446, + "commentStart": 0, "elements": [ { - "commentStart": 8453, + "commentStart": 0, "end": 0, "left": { - "commentStart": 8453, + "commentStart": 0, "end": 0, "left": { - "commentStart": 8453, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 8453, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8453, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -11003,10 +10877,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 8465, + "commentStart": 0, "end": 0, "left": { - "commentStart": 8465, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -11020,10 +10894,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 8469, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8469, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -11044,7 +10918,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "/", "right": { - "commentStart": 8479, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -11062,10 +10936,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 8483, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8483, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -11081,20 +10955,20 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 8503, + "commentStart": 0, "end": 0, "left": { - "commentStart": 8503, + "commentStart": 0, "end": 0, "left": { - "commentStart": 8503, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 8503, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8503, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -11107,10 +10981,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "+", "right": { - "commentStart": 8515, + "commentStart": 0, "end": 0, "left": { - "commentStart": 8515, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -11124,10 +10998,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 8519, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8519, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -11148,7 +11022,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "operator": "/", "right": { - "commentStart": 8529, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -11166,10 +11040,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 8533, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8533, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -11185,7 +11059,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "BinaryExpression" }, { - "commentStart": 8553, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -11206,14 +11080,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 8562, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8574, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -11228,14 +11102,14 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl { "type": "LabeledArg", "label": { - "commentStart": 8579, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8598, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -11247,10 +11121,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "callee": { "abs_path": false, - "commentStart": 8352, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8352, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -11260,17 +11134,17 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "start": 0, "type": "Name" }, - "commentStart": 8352, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 8373, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8373, + "commentStart": 0, "end": 0, "name": "lipSingleWidthCorner", "start": 0, @@ -11304,7 +11178,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 410, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -11319,10 +11193,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "properties": [ { - "commentStart": 419, + "commentStart": 0, "end": 0, "key": { - "commentStart": 419, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -11332,10 +11206,10 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 439, + "commentStart": 0, "end": 0, "name": { - "commentStart": 439, + "commentStart": 0, "end": 0, "name": "mm", "start": 0, @@ -11356,7 +11230,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl "nonCodeNodes": { "28": [ { - "commentStart": 2485, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11367,7 +11241,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "29": [ { - "commentStart": 3106, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11378,7 +11252,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "33": [ { - "commentStart": 4552, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11389,7 +11263,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "35": [ { - "commentStart": 5958, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11400,7 +11274,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "36": [ { - "commentStart": 6171, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11411,7 +11285,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl ], "37": [ { - "commentStart": 6384, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11423,7 +11297,7 @@ description: Result of parsing gridfinity-bins-stacking-lip.kcl }, "startNodes": [ { - "commentStart": 442, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/ops.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/ops.snap index 9ab477e86..5c7a860b1 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/ops.snap @@ -40,7 +40,7 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "name": "face", "functionSourceRange": [ 1134, - 1507, + 1477, 0 ], "unlabeledArg": null, @@ -50,7 +50,7 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -73,7 +73,13 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 34.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -165,14 +171,26 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { @@ -266,7 +284,7 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "name": "face", "functionSourceRange": [ 1134, - 1507, + 1477, 0 ], "unlabeledArg": null, @@ -276,7 +294,7 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -472,14 +490,26 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { @@ -538,7 +568,7 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -641,16 +671,7 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -661,7 +682,15 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -772,7 +801,13 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -884,7 +919,13 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1020,7 +1061,13 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1132,7 +1179,13 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1268,7 +1321,13 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1357,7 +1416,13 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1435,7 +1500,7 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1455,7 +1520,13 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 7.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1580,8 +1651,8 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "FunctionCall", "name": "lipFace", "functionSourceRange": [ - 5300, - 5958, + 5273, + 5889, 0 ], "unlabeledArg": null, @@ -1591,184 +1662,185 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 3.75, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 3.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 11.75, - "ty": { - "type": "Unknown" - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 11.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -1790,7 +1862,13 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 76.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1815,8 +1893,8 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "FunctionCall", "name": "lipFace", "functionSourceRange": [ - 5300, - 5958, + 5273, + 5889, 0 ], "unlabeledArg": null, @@ -1826,184 +1904,185 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 3.75, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 11.75, - "ty": { - "type": "Unknown" - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 3.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 11.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -2025,7 +2104,13 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 118.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -2117,14 +2202,26 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 63.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { @@ -2254,14 +2351,26 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 63.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { @@ -2324,8 +2433,8 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "FunctionCall", "name": "lipFace", "functionSourceRange": [ - 5300, - 5958, + 5273, + 5889, 0 ], "unlabeledArg": null, @@ -2335,184 +2444,185 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 3.75, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 3.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 11.75, - "ty": { - "type": "Unknown" - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 11.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -2640,8 +2750,8 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "FunctionCall", "name": "lipFace", "functionSourceRange": [ - 5300, - 5958, + 5273, + 5889, 0 ], "unlabeledArg": null, @@ -2651,178 +2761,185 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 80.25, - "ty": { - "type": "Unknown" - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 80.25, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 11.75, - "ty": { - "type": "Unknown" - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 11.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -3017,14 +3134,26 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 63.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { @@ -3154,14 +3283,26 @@ description: Operations executed gridfinity-bins-stacking-lip.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 63.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/program_memory.snap index 2fa276e42..912980a17 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins-stacking-lip/program_memory.snap @@ -328,22 +328,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -551,22 +563,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -774,22 +798,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -997,22 +1033,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1220,22 +1268,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1443,22 +1503,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1666,22 +1738,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1889,22 +1973,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2112,22 +2208,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2335,22 +2443,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2558,22 +2678,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2781,22 +2913,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3004,22 +3148,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3227,22 +3383,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3450,22 +3618,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3673,22 +3853,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3896,22 +4088,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4119,22 +4323,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4342,22 +4558,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4565,22 +4793,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4788,22 +5028,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5011,22 +5263,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5234,22 +5498,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5457,22 +5733,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5527,9 +5815,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -5540,9 +5828,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -5553,9 +5841,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -5566,9 +5854,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -5589,9 +5877,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -5614,9 +5902,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -5639,9 +5927,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -5664,9 +5952,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -5688,22 +5976,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5758,28 +6058,72 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -5801,9 +6145,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -5814,9 +6158,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -5827,9 +6171,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -5840,9 +6184,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -5863,9 +6207,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -5888,9 +6232,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -5913,9 +6257,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -5938,9 +6282,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -5962,22 +6306,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6032,28 +6388,72 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -6075,9 +6475,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -6088,9 +6488,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -6101,9 +6501,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -6114,9 +6514,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -6137,9 +6537,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -6162,9 +6562,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -6187,9 +6587,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -6212,9 +6612,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -6236,22 +6636,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6306,28 +6718,72 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -6349,9 +6805,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -6362,9 +6818,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -6375,9 +6831,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -6388,9 +6844,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -6411,9 +6867,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -6436,9 +6892,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -6461,9 +6917,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -6486,9 +6942,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -6510,22 +6966,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6580,28 +7048,72 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -6623,9 +7135,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -6636,9 +7148,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -6649,9 +7161,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -6662,9 +7174,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -6685,9 +7197,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -6710,9 +7222,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -6735,9 +7247,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -6760,9 +7272,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -6784,22 +7296,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6854,28 +7378,72 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -6897,9 +7465,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -6910,9 +7478,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -6923,9 +7491,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -6936,9 +7504,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -6959,9 +7527,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -6984,9 +7552,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -7009,9 +7577,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -7034,9 +7602,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -7058,22 +7626,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7128,28 +7708,72 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -7360,22 +7984,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7583,22 +8219,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7806,22 +8454,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8029,22 +8689,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8252,22 +8924,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8475,22 +9159,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8698,22 +9394,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8921,22 +9629,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9144,22 +9864,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9367,22 +10099,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9590,22 +10334,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9813,22 +10569,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10036,22 +10804,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10259,22 +11039,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10482,22 +11274,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10705,22 +11509,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10928,22 +11744,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11151,22 +11979,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11374,22 +12214,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11597,22 +12449,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11820,22 +12684,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12043,22 +12919,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12266,22 +13154,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12489,22 +13389,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12582,9 +13494,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4710, - "end": 4718, - "start": 4710, + "commentStart": 4685, + "end": 4693, + "start": 4685, "type": "TagDeclarator", "value": "line010" }, @@ -12595,9 +13507,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4789, - "end": 4797, - "start": 4789, + "commentStart": 4764, + "end": 4772, + "start": 4764, "type": "TagDeclarator", "value": "line011" }, @@ -12608,9 +13520,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4848, - "end": 4856, - "start": 4848, + "commentStart": 4823, + "end": 4831, + "start": 4823, "type": "TagDeclarator", "value": "line012" }, @@ -12621,9 +13533,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4875, - "end": 4883, - "start": 4875, + "commentStart": 4850, + "end": 4858, + "start": 4850, "type": "TagDeclarator", "value": "line013" }, @@ -12644,9 +13556,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 0.0 ], "tag": { - "commentStart": 4710, - "end": 4718, - "start": 4710, + "commentStart": 4685, + "end": 4693, + "start": 4685, "type": "TagDeclarator", "value": "line010" }, @@ -12669,9 +13581,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 0.0 ], "tag": { - "commentStart": 4789, - "end": 4797, - "start": 4789, + "commentStart": 4764, + "end": 4772, + "start": 4764, "type": "TagDeclarator", "value": "line011" }, @@ -12694,9 +13606,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 126.0 ], "tag": { - "commentStart": 4848, - "end": 4856, - "start": 4848, + "commentStart": 4823, + "end": 4831, + "start": 4823, "type": "TagDeclarator", "value": "line012" }, @@ -12719,9 +13631,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 126.0 ], "tag": { - "commentStart": 4875, - "end": 4883, - "start": 4875, + "commentStart": 4850, + "end": 4858, + "start": 4850, "type": "TagDeclarator", "value": "line013" }, @@ -12743,22 +13655,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 0.0, "y": 0.0, - "z": 4.75 + "z": 4.75, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12813,28 +13737,72 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc { "type": "fillet", "id": "[uuid]", - "radius": 3.75, + "radius": { + "n": 3.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 3.75, + "radius": { + "n": 3.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 3.75, + "radius": { + "n": 3.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 3.75, + "radius": { + "n": 3.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -13030,22 +13998,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13253,22 +14233,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13476,22 +14468,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13699,22 +14703,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13877,9 +14893,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -13890,9 +14906,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -13903,9 +14919,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -13961,9 +14977,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 0.0 ], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -13992,9 +15008,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc ], "radius": 0.5, "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -14017,9 +15033,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 6.1464 ], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -14136,22 +15152,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 3.75, "y": 0.0, - "z": 11.75 + "z": 11.75, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14215,9 +15243,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -14228,9 +15256,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -14241,9 +15269,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -14299,9 +15327,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 0.0 ], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -14330,9 +15358,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc ], "radius": 0.5, "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -14355,9 +15383,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 6.1464 ], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -14474,22 +15502,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 3.75, "y": 0.0, - "z": 11.75 + "z": 11.75, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14558,9 +15598,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -14571,9 +15611,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -14584,9 +15624,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -14642,9 +15682,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 0.0 ], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -14673,9 +15713,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc ], "radius": 0.5, "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -14698,9 +15738,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 6.1464 ], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -14817,22 +15857,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 80.25, "y": 0.0, - "z": 11.75 + "z": 11.75, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14896,9 +15948,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -14909,9 +15961,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -14922,9 +15974,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -14980,9 +16032,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 0.0 ], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -15011,9 +16063,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc ], "radius": 0.5, "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -15036,9 +16088,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 6.1464 ], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -15155,22 +16207,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 80.25, "y": 0.0, - "z": 11.75 + "z": 11.75, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15255,9 +16319,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -15268,9 +16332,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -15281,9 +16345,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -15339,9 +16403,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 0.0 ], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -15370,9 +16434,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc ], "radius": 0.5, "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -15395,9 +16459,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 6.1464 ], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -15514,22 +16578,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 3.75, "y": 0.0, - "z": 11.75 + "z": 11.75, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15593,9 +16669,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -15606,9 +16682,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -15619,9 +16695,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -15677,9 +16753,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 0.0 ], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -15708,9 +16784,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc ], "radius": 0.5, "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -15733,9 +16809,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 6.1464 ], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -15852,22 +16928,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 3.75, "y": 0.0, - "z": 11.75 + "z": 11.75, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15946,9 +17034,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -15959,9 +17047,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -15972,9 +17060,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -16030,9 +17118,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 0.0 ], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -16061,9 +17149,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc ], "radius": 0.5, "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -16086,9 +17174,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 6.1464 ], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -16205,22 +17293,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 3.75, "y": 0.0, - "z": 11.75 + "z": 11.75, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16284,9 +17384,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -16297,9 +17397,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -16310,9 +17410,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -16368,9 +17468,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 0.0 ], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -16399,9 +17499,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc ], "radius": 0.5, "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -16424,9 +17524,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 6.1464 ], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -16543,22 +17643,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 3.75, "y": 0.0, - "z": 11.75 + "z": 11.75, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16622,9 +17734,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -16635,9 +17747,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -16648,9 +17760,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -16706,9 +17818,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 0.0 ], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -16737,9 +17849,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc ], "radius": 0.5, "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -16762,9 +17874,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 6.1464 ], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -16881,22 +17993,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 0.0, "y": 3.75, - "z": 11.75 + "z": 11.75, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16960,9 +18084,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -16973,9 +18097,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -16986,9 +18110,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -17044,9 +18168,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 0.0 ], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -17075,9 +18199,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc ], "radius": 0.5, "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -17100,9 +18224,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 6.1464 ], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -17219,22 +18343,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 80.25, "y": 0.0, - "z": 11.75 + "z": 11.75, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -17366,9 +18502,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -17379,9 +18515,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -17392,9 +18528,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -17450,9 +18586,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 0.0 ], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -17481,9 +18617,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc ], "radius": 0.5, "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -17506,9 +18642,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 6.1464 ], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -17625,22 +18761,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 0.0, "y": 3.75, - "z": 11.75 + "z": 11.75, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -17704,9 +18852,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -17717,9 +18865,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -17730,9 +18878,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -17788,9 +18936,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 0.0 ], "tag": { - "commentStart": 5472, - "end": 5480, - "start": 5472, + "commentStart": 5445, + "end": 5453, + "start": 5445, "type": "TagDeclarator", "value": "line000" }, @@ -17819,9 +18967,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc ], "radius": 0.5, "tag": { - "commentStart": 5590, - "end": 5597, - "start": 5590, + "commentStart": 5563, + "end": 5570, + "start": 5563, "type": "TagDeclarator", "value": "arc000" }, @@ -17844,9 +18992,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 6.1464 ], "tag": { - "commentStart": 5713, - "end": 5721, - "start": 5713, + "commentStart": 5674, + "end": 5682, + "start": 5674, "type": "TagDeclarator", "value": "line001" }, @@ -17963,22 +19111,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 0.0, "y": 3.75, - "z": 11.75 + "z": 11.75, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -18088,17 +19248,26 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -18110,9 +19279,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -18123,9 +19292,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -18136,9 +19305,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -18149,9 +19318,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -18172,9 +19341,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -18197,9 +19366,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -18222,9 +19391,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -18247,9 +19416,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -18271,22 +19440,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -18341,28 +19522,72 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -18460,17 +19685,26 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -18482,9 +19716,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -18495,9 +19729,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -18508,9 +19742,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -18521,9 +19755,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -18544,9 +19778,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -18569,9 +19803,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -18594,9 +19828,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -18619,9 +19853,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -18643,22 +19877,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -18713,28 +19959,72 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -18832,17 +20122,26 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -18854,9 +20153,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -18867,9 +20166,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -18880,9 +20179,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -18893,9 +20192,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -18916,9 +20215,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -18941,9 +20240,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -18966,9 +20265,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -18991,9 +20290,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -19015,22 +20314,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -19085,28 +20396,72 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -19204,17 +20559,26 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -19226,9 +20590,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -19239,9 +20603,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -19252,9 +20616,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -19265,9 +20629,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -19288,9 +20652,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -19313,9 +20677,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -19338,9 +20702,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -19363,9 +20727,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -19387,22 +20751,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -19457,28 +20833,72 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -19567,534 +20987,543 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "plane000": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 3.75, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 3.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 11.75, - "ty": { - "type": "Unknown" - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 11.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, "plane001": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 3.75, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 11.75, - "ty": { - "type": "Unknown" - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 3.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 11.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, "plane002": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 80.25, - "ty": { - "type": "Unknown" - } + "origin": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 80.25, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 11.75, - "ty": { - "type": "Unknown" - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 11.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -20284,22 +21713,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -20507,22 +21948,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -20730,22 +22183,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -20953,22 +22418,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -21020,9 +22497,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -21033,9 +22510,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -21046,9 +22523,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -21059,9 +22536,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -21082,9 +22559,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2675, - "end": 2683, - "start": 2675, + "commentStart": 2645, + "end": 2653, + "start": 2645, "type": "TagDeclarator", "value": "line000" }, @@ -21107,9 +22584,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 3.2 ], "tag": { - "commentStart": 2745, - "end": 2753, - "start": 2745, + "commentStart": 2715, + "end": 2723, + "start": 2715, "type": "TagDeclarator", "value": "line001" }, @@ -21132,9 +22609,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2804, - "end": 2812, - "start": 2804, + "commentStart": 2774, + "end": 2782, + "start": 2774, "type": "TagDeclarator", "value": "line002" }, @@ -21157,9 +22634,9 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc 38.8 ], "tag": { - "commentStart": 2831, - "end": 2839, - "start": 2831, + "commentStart": 2801, + "end": 2809, + "start": 2801, "type": "TagDeclarator", "value": "line003" }, @@ -21181,22 +22658,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -21251,28 +22740,72 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -21452,22 +22985,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -21675,22 +23220,34 @@ description: Variables in memory after executing gridfinity-bins-stacking-lip.kc "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/artifact_commands.snap index 1698809ec..d407713ac 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/artifact_commands.snap @@ -235,7 +235,8 @@ description: Artifact commands gridfinity-bins.kcl "type": "extrude", "target": "[uuid]", "distance": 34.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -579,7 +580,8 @@ description: Artifact commands gridfinity-bins.kcl "unit": "degrees", "value": -90.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -870,7 +872,8 @@ description: Artifact commands gridfinity-bins.kcl "type": "extrude", "target": "[uuid]", "distance": 4.75, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1177,7 +1180,8 @@ description: Artifact commands gridfinity-bins.kcl "type": "extrude", "target": "[uuid]", "distance": -2.4, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1243,7 +1247,8 @@ description: Artifact commands gridfinity-bins.kcl "type": "extrude", "target": "[uuid]", "distance": -2.4, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1309,7 +1314,8 @@ description: Artifact commands gridfinity-bins.kcl "type": "extrude", "target": "[uuid]", "distance": -2.4, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1375,7 +1381,8 @@ description: Artifact commands gridfinity-bins.kcl "type": "extrude", "target": "[uuid]", "distance": -2.4, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3188,7 +3195,8 @@ description: Artifact commands gridfinity-bins.kcl "type": "extrude", "target": "[uuid]", "distance": 14.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/artifact_graph_flowchart.snap.md index 2f1238444..e8bf58427 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/artifact_graph_flowchart.snap.md @@ -4,45 +4,45 @@ flowchart LR 2["Path
[928, 974, 0]"] 3["Segment
[982, 1004, 0]"] 4["Segment
[1012, 1042, 0]"] - 5["Segment
[1050, 1109, 0]"] - 6["Segment
[1117, 1144, 0]"] - 7["Segment
[1152, 1211, 0]"] - 8["Segment
[1219, 1226, 0]"] + 5["Segment
[1050, 1094, 0]"] + 6["Segment
[1102, 1129, 0]"] + 7["Segment
[1137, 1181, 0]"] + 8["Segment
[1189, 1196, 0]"] 9[Solid2d] end subgraph path29 [Path] 29["Path
[928, 974, 0]"] 30["Segment
[982, 1004, 0]"] 31["Segment
[1012, 1042, 0]"] - 32["Segment
[1050, 1109, 0]"] - 33["Segment
[1117, 1144, 0]"] - 34["Segment
[1152, 1211, 0]"] - 35["Segment
[1219, 1226, 0]"] + 32["Segment
[1050, 1094, 0]"] + 33["Segment
[1102, 1129, 0]"] + 34["Segment
[1137, 1181, 0]"] + 35["Segment
[1189, 1196, 0]"] 36[Solid2d] end subgraph path56 [Path] - 56["Path
[2267, 2355, 0]"] - 57["Segment
[2361, 2425, 0]"] - 58["Segment
[2431, 2495, 0]"] - 59["Segment
[2501, 2554, 0]"] - 60["Segment
[2560, 2581, 0]"] + 56["Path
[2237, 2325, 0]"] + 57["Segment
[2331, 2395, 0]"] + 58["Segment
[2401, 2465, 0]"] + 59["Segment
[2471, 2524, 0]"] + 60["Segment
[2530, 2551, 0]"] 61[Solid2d] end subgraph path81 [Path] - 81["Path
[2907, 3073, 0]"] - 82["Segment
[2907, 3073, 0]"] + 81["Path
[2882, 3048, 0]"] + 82["Segment
[2882, 3048, 0]"] 83[Solid2d] end subgraph path93 [Path] - 93["Path
[4386, 4411, 0]"] - 94["Segment
[4417, 4489, 0]"] - 95["Segment
[4495, 4568, 0]"] - 96["Segment
[4574, 4627, 0]"] - 97["Segment
[4633, 4654, 0]"] + 93["Path
[4361, 4386, 0]"] + 94["Segment
[4392, 4464, 0]"] + 95["Segment
[4470, 4543, 0]"] + 96["Segment
[4549, 4602, 0]"] + 97["Segment
[4608, 4629, 0]"] 98[Solid2d] end - 1["Plane
[1312, 1359, 0]"] - 10["Sweep Extrusion
[1299, 1402, 0]"] + 1["Plane
[1282, 1329, 0]"] + 10["Sweep Extrusion
[1269, 1372, 0]"] 11[Wall] 12[Wall] 13[Wall] @@ -60,8 +60,8 @@ flowchart LR 25["SweepEdge Adjacent"] 26["SweepEdge Opposite"] 27["SweepEdge Adjacent"] - 28["Plane
[1891, 1938, 0]"] - 37["Sweep Revolve
[1878, 1969, 0]"] + 28["Plane
[1861, 1908, 0]"] + 37["Sweep Revolve
[1848, 1939, 0]"] 38[Wall] 39[Wall] 40[Wall] @@ -79,8 +79,8 @@ flowchart LR 52["SweepEdge Adjacent"] 53["SweepEdge Opposite"] 54["SweepEdge Adjacent"] - 55["Plane
[2244, 2261, 0]"] - 62["Sweep Extrusion
[2587, 2611, 0]"] + 55["Plane
[2214, 2231, 0]"] + 62["Sweep Extrusion
[2557, 2581, 0]"] 63[Wall] 64[Wall] 65[Wall] @@ -95,20 +95,20 @@ flowchart LR 74["SweepEdge Adjacent"] 75["SweepEdge Opposite"] 76["SweepEdge Adjacent"] - 77["EdgeCut Fillet
[2617, 2847, 0]"] - 78["EdgeCut Fillet
[2617, 2847, 0]"] - 79["EdgeCut Fillet
[2617, 2847, 0]"] - 80["EdgeCut Fillet
[2617, 2847, 0]"] - 84["Sweep Extrusion
[3295, 3322, 0]"] + 77["EdgeCut Fillet
[2587, 2817, 0]"] + 78["EdgeCut Fillet
[2587, 2817, 0]"] + 79["EdgeCut Fillet
[2587, 2817, 0]"] + 80["EdgeCut Fillet
[2587, 2817, 0]"] + 84["Sweep Extrusion
[3270, 3297, 0]"] 85[Wall] 86["Cap Start"] 87["SweepEdge Opposite"] 88["SweepEdge Adjacent"] - 89["Sweep Extrusion
[3295, 3322, 0]"] - 90["Sweep Extrusion
[3295, 3322, 0]"] - 91["Sweep Extrusion
[3295, 3322, 0]"] - 92["Plane
[4347, 4379, 0]"] - 99["Sweep Extrusion
[4660, 4704, 0]"] + 89["Sweep Extrusion
[3270, 3297, 0]"] + 90["Sweep Extrusion
[3270, 3297, 0]"] + 91["Sweep Extrusion
[3270, 3297, 0]"] + 92["Plane
[4322, 4354, 0]"] + 99["Sweep Extrusion
[4635, 4679, 0]"] 100[Wall] 101[Wall] 102[Wall] @@ -123,14 +123,14 @@ flowchart LR 111["SweepEdge Adjacent"] 112["SweepEdge Opposite"] 113["SweepEdge Adjacent"] - 114["EdgeCut Fillet
[4710, 4943, 0]"] - 115["EdgeCut Fillet
[4710, 4943, 0]"] - 116["EdgeCut Fillet
[4710, 4943, 0]"] - 117["EdgeCut Fillet
[4710, 4943, 0]"] + 114["EdgeCut Fillet
[4685, 4918, 0]"] + 115["EdgeCut Fillet
[4685, 4918, 0]"] + 116["EdgeCut Fillet
[4685, 4918, 0]"] + 117["EdgeCut Fillet
[4685, 4918, 0]"] 118["StartSketchOnPlane
[900, 920, 0]"] 119["StartSketchOnPlane
[900, 920, 0]"] - 120["StartSketchOnFace
[2864, 2901, 0]"] - 121["StartSketchOnPlane
[4333, 4380, 0]"] + 120["StartSketchOnFace
[2834, 2876, 0]"] + 121["StartSketchOnPlane
[4308, 4355, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/ast.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/ast.snap index 649188ffe..e506961fe 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing gridfinity-bins.kcl "Ok": { "body": [ { - "commentStart": 339, + "commentStart": 0, "declaration": { - "commentStart": 362, + "commentStart": 0, "end": 0, "id": { - "commentStart": 362, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 374, + "commentStart": 0, "end": 0, "raw": "41.5", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 379, + "commentStart": 0, "declaration": { - "commentStart": 379, + "commentStart": 0, "end": 0, "id": { - "commentStart": 379, + "commentStart": 0, "end": 0, "name": "binHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 391, + "commentStart": 0, "end": 0, "raw": "7.0", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 395, + "commentStart": 0, "declaration": { - "commentStart": 395, + "commentStart": 0, "end": 0, "id": { - "commentStart": 395, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 411, + "commentStart": 0, "end": 0, "raw": "2.95", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 416, + "commentStart": 0, "declaration": { - "commentStart": 416, + "commentStart": 0, "end": 0, "id": { - "commentStart": 416, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 425, + "commentStart": 0, "end": 0, "raw": "0.25", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 430, + "commentStart": 0, "declaration": { - "commentStart": 430, + "commentStart": 0, "end": 0, "id": { - "commentStart": 430, + "commentStart": 0, "end": 0, "name": "binThk", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 439, + "commentStart": 0, "end": 0, "raw": "1.2", "start": 0, @@ -174,19 +174,19 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 443, + "commentStart": 0, "declaration": { - "commentStart": 443, + "commentStart": 0, "end": 0, "id": { - "commentStart": 443, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 458, + "commentStart": 0, "end": 0, "raw": "3.75", "start": 0, @@ -207,19 +207,19 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 463, + "commentStart": 0, "declaration": { - "commentStart": 463, + "commentStart": 0, "end": 0, "id": { - "commentStart": 463, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 475, + "commentStart": 0, "end": 0, "raw": "0.8", "start": 0, @@ -240,19 +240,19 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 479, + "commentStart": 0, "declaration": { - "commentStart": 479, + "commentStart": 0, "end": 0, "id": { - "commentStart": 479, + "commentStart": 0, "end": 0, "name": "secondStep", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 492, + "commentStart": 0, "end": 0, "raw": "1.8", "start": 0, @@ -273,19 +273,19 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 496, + "commentStart": 0, "declaration": { - "commentStart": 496, + "commentStart": 0, "end": 0, "id": { - "commentStart": 496, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 508, + "commentStart": 0, "end": 0, "raw": "2.15", "start": 0, @@ -306,19 +306,19 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 513, + "commentStart": 0, "declaration": { - "commentStart": 513, + "commentStart": 0, "end": 0, "id": { - "commentStart": 513, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 528, + "commentStart": 0, "end": 0, "raw": "6.5", "start": 0, @@ -339,19 +339,19 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 532, + "commentStart": 0, "declaration": { - "commentStart": 532, + "commentStart": 0, "end": 0, "id": { - "commentStart": 532, + "commentStart": 0, "end": 0, "name": "magOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 544, + "commentStart": 0, "end": 0, "raw": "4.8", "start": 0, @@ -372,19 +372,19 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 548, + "commentStart": 0, "declaration": { - "commentStart": 548, + "commentStart": 0, "end": 0, "id": { - "commentStart": 548, + "commentStart": 0, "end": 0, "name": "magDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 559, + "commentStart": 0, "end": 0, "raw": "2.4", "start": 0, @@ -405,19 +405,19 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 562, + "commentStart": 0, "declaration": { - "commentStart": 600, + "commentStart": 0, "end": 0, "id": { - "commentStart": 600, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 616, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -443,19 +443,19 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 618, + "commentStart": 0, "declaration": { - "commentStart": 618, + "commentStart": 0, "end": 0, "id": { - "commentStart": 618, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 635, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -476,19 +476,19 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 637, + "commentStart": 0, "declaration": { - "commentStart": 637, + "commentStart": 0, "end": 0, "id": { - "commentStart": 637, + "commentStart": 0, "end": 0, "name": "countBinHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 654, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -509,29 +509,29 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 655, + "commentStart": 0, "declaration": { - "commentStart": 756, + "commentStart": 0, "end": 0, "id": { - "commentStart": 756, + "commentStart": 0, "end": 0, "name": "height", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 765, + "commentStart": 0, "end": 0, "left": { - "commentStart": 765, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 765, + "commentStart": 0, "end": 0, "name": { - "commentStart": 765, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, @@ -545,10 +545,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 777, + "commentStart": 0, "end": 0, "name": { - "commentStart": 777, + "commentStart": 0, "end": 0, "name": "secondStep", "start": 0, @@ -566,10 +566,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 790, + "commentStart": 0, "end": 0, "name": { - "commentStart": 790, + "commentStart": 0, "end": 0, "name": "thirdStep", "start": 0, @@ -599,12 +599,12 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 799, + "commentStart": 0, "declaration": { - "commentStart": 871, + "commentStart": 0, "end": 0, "id": { - "commentStart": 871, + "commentStart": 0, "end": 0, "name": "face", "start": 0, @@ -614,12 +614,12 @@ description: Result of parsing gridfinity-bins.kcl "body": { "body": [ { - "commentStart": 887, + "commentStart": 0, "declaration": { - "commentStart": 887, + "commentStart": 0, "end": 0, "id": { - "commentStart": 887, + "commentStart": 0, "end": 0, "name": "faceSketch", "start": 0, @@ -631,10 +631,10 @@ description: Result of parsing gridfinity-bins.kcl "arguments": [ { "abs_path": false, - "commentStart": 914, + "commentStart": 0, "end": 0, "name": { - "commentStart": 914, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -648,10 +648,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 900, + "commentStart": 0, "end": 0, "name": { - "commentStart": 900, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -661,7 +661,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 900, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -670,17 +670,17 @@ description: Result of parsing gridfinity-bins.kcl { "arguments": [ { - "commentStart": 943, + "commentStart": 0, "elements": [ { - "commentStart": 944, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 944, + "commentStart": 0, "end": 0, "name": { - "commentStart": 944, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -694,10 +694,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 960, + "commentStart": 0, "end": 0, "name": { - "commentStart": 960, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -713,7 +713,7 @@ description: Result of parsing gridfinity-bins.kcl "type": "BinaryExpression" }, { - "commentStart": 968, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -731,7 +731,7 @@ description: Result of parsing gridfinity-bins.kcl "type": "ArrayExpression" }, { - "commentStart": 972, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -740,10 +740,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 928, + "commentStart": 0, "end": 0, "name": { - "commentStart": 928, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -753,7 +753,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 928, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -764,7 +764,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 988, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -772,10 +772,10 @@ description: Result of parsing gridfinity-bins.kcl }, "arg": { "abs_path": false, - "commentStart": 997, + "commentStart": 0, "end": 0, "name": { - "commentStart": 997, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -790,10 +790,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 982, + "commentStart": 0, "end": 0, "name": { - "commentStart": 982, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -803,7 +803,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 982, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -815,7 +815,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 1018, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -824,10 +824,10 @@ description: Result of parsing gridfinity-bins.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 1028, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1028, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -838,7 +838,7 @@ description: Result of parsing gridfinity-bins.kcl "type": "Name", "type": "Name" }, - "commentStart": 1027, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -849,10 +849,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 1012, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1012, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -862,7 +862,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 1012, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -872,92 +872,70 @@ description: Result of parsing gridfinity-bins.kcl { "arguments": [ { - "commentStart": 1070, - "end": 0, - "properties": [ - { - "commentStart": 1072, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1072, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "45", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "argument": { - "commentStart": 1081, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - }, - "commentStart": 1080, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "value": 45.0, + "suffix": "None" } }, - { - "commentStart": 1085, - "end": 0, - "key": { - "commentStart": 1085, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1094, - "end": 0, - "name": { - "commentStart": 1094, - "end": 0, - "name": "thirdStep", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } }, { - "commentStart": 1107, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "lengthY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "thirdStep", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1050, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1050, + "commentStart": 0, "end": 0, - "name": "angledLineOfYLength", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -965,18 +943,19 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 1050, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1123, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -985,10 +964,10 @@ description: Result of parsing gridfinity-bins.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 1133, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1133, + "commentStart": 0, "end": 0, "name": "secondStep", "start": 0, @@ -999,7 +978,7 @@ description: Result of parsing gridfinity-bins.kcl "type": "Name", "type": "Name" }, - "commentStart": 1132, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1010,10 +989,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 1117, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1117, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1023,7 +1002,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 1117, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1033,92 +1012,70 @@ description: Result of parsing gridfinity-bins.kcl { "arguments": [ { - "commentStart": 1172, - "end": 0, - "properties": [ - { - "commentStart": 1174, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1174, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "45", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "argument": { - "commentStart": 1183, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - }, - "commentStart": 1182, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "value": 45.0, + "suffix": "None" } }, - { - "commentStart": 1187, - "end": 0, - "key": { - "commentStart": 1187, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1196, - "end": 0, - "name": { - "commentStart": 1196, - "end": 0, - "name": "firstStep", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } }, { - "commentStart": 1209, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "lengthY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "firstStep", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1152, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1152, + "commentStart": 0, "end": 0, - "name": "angledLineOfYLength", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -1126,20 +1083,21 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 1152, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [], "callee": { "abs_path": false, - "commentStart": 1219, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1219, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1149,14 +1107,14 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 1219, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 900, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1174,10 +1132,10 @@ description: Result of parsing gridfinity-bins.kcl { "argument": { "abs_path": false, - "commentStart": 1236, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1236, + "commentStart": 0, "end": 0, "name": "faceSketch", "start": 0, @@ -1188,24 +1146,24 @@ description: Result of parsing gridfinity-bins.kcl "type": "Name", "type": "Name" }, - "commentStart": 1229, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 883, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 875, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 876, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -1232,12 +1190,12 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 1248, + "commentStart": 0, "declaration": { - "commentStart": 1286, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1286, + "commentStart": 0, "end": 0, "name": "singleSide", "start": 0, @@ -1248,21 +1206,21 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 1362, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1371, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1371, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1371, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -1275,14 +1233,14 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "-", "right": { - "commentStart": 1384, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1384, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1384, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -1295,7 +1253,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "*", "right": { - "commentStart": 1399, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1318,10 +1276,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 1299, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1299, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1331,7 +1289,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 1299, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1343,21 +1301,21 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 1328, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1337, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1337, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1337, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -1371,10 +1329,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1352, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1352, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -1393,10 +1351,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 1312, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1312, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -1406,17 +1364,17 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 1312, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1324, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1324, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -1431,10 +1389,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 1307, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1307, + "commentStart": 0, "end": 0, "name": "face", "start": 0, @@ -1444,7 +1402,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 1307, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1466,12 +1424,12 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 1402, + "commentStart": 0, "declaration": { - "commentStart": 1469, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1469, + "commentStart": 0, "end": 0, "name": "sides", "start": 0, @@ -1482,14 +1440,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 1512, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1525, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -1504,17 +1462,17 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 1532, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1539, + "commentStart": 0, "elements": [ { - "commentStart": 1540, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1526,7 +1484,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 1543, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1538,7 +1496,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 1546, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1559,27 +1517,27 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 1552, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1561, + "commentStart": 0, "elements": [ { - "commentStart": 1568, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1568, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1568, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1568, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -1592,10 +1550,10 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "+", "right": { - "commentStart": 1580, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1580, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1609,10 +1567,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1584, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1584, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -1633,7 +1591,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "/", "right": { - "commentStart": 1594, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1649,17 +1607,17 @@ description: Result of parsing gridfinity-bins.kcl "type": "BinaryExpression" }, { - "commentStart": 1602, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1602, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1602, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1602, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -1672,10 +1630,10 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "+", "right": { - "commentStart": 1614, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1614, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1689,10 +1647,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1618, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1618, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -1713,7 +1671,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "/", "right": { - "commentStart": 1628, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1729,7 +1687,7 @@ description: Result of parsing gridfinity-bins.kcl "type": "BinaryExpression" }, { - "commentStart": 1635, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1750,14 +1708,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 1644, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1656, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -1772,14 +1730,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 1661, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1680, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -1791,10 +1749,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 1477, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1477, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -1804,17 +1762,17 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 1477, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1498, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1498, + "commentStart": 0, "end": 0, "name": "singleSide", "start": 0, @@ -1841,26 +1799,26 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 1687, + "commentStart": 0, "declaration": { - "commentStart": 1715, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1715, + "commentStart": 0, "end": 0, "name": "axis000", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1725, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1729, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1729, + "commentStart": 0, "end": 0, "name": "direction", "start": 0, @@ -1869,10 +1827,10 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1741, + "commentStart": 0, "elements": [ { - "commentStart": 1742, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -1884,7 +1842,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 1747, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -1903,10 +1861,10 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 1755, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1755, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -1915,17 +1873,17 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1764, + "commentStart": 0, "elements": [ { - "commentStart": 1770, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1770, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1770, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -1939,10 +1897,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1785, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1785, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -1958,14 +1916,14 @@ description: Result of parsing gridfinity-bins.kcl "type": "BinaryExpression" }, { - "commentStart": 1797, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1797, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1797, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -1979,10 +1937,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1812, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1812, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -2024,12 +1982,12 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 1824, + "commentStart": 0, "declaration": { - "commentStart": 1863, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1863, + "commentStart": 0, "end": 0, "name": "singleCorner", "start": 0, @@ -2040,7 +1998,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 1941, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, @@ -2048,7 +2006,7 @@ description: Result of parsing gridfinity-bins.kcl }, "arg": { "argument": { - "commentStart": 1950, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -2059,7 +2017,7 @@ description: Result of parsing gridfinity-bins.kcl "suffix": "None" } }, - "commentStart": 1949, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2070,7 +2028,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 1954, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -2078,10 +2036,10 @@ description: Result of parsing gridfinity-bins.kcl }, "arg": { "abs_path": false, - "commentStart": 1961, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1961, + "commentStart": 0, "end": 0, "name": "axis000", "start": 0, @@ -2096,10 +2054,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 1878, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1878, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -2109,7 +2067,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 1878, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2121,21 +2079,21 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 1907, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1916, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1916, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1916, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -2149,10 +2107,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1931, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1931, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -2171,10 +2129,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 1891, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1891, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -2184,17 +2142,17 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 1891, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1903, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1903, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -2209,10 +2167,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 1886, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1886, + "commentStart": 0, "end": 0, "name": "face", "start": 0, @@ -2222,7 +2180,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 1886, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2244,12 +2202,12 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 1969, + "commentStart": 0, "declaration": { - "commentStart": 2004, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2004, + "commentStart": 0, "end": 0, "name": "corners", "start": 0, @@ -2260,14 +2218,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 2051, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2064, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -2282,17 +2240,17 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 2071, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2078, + "commentStart": 0, "elements": [ { - "commentStart": 2079, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2304,7 +2262,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 2082, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2316,7 +2274,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 2085, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2337,27 +2295,27 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 2091, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2100, + "commentStart": 0, "elements": [ { - "commentStart": 2107, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2107, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2107, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2107, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -2370,10 +2328,10 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "+", "right": { - "commentStart": 2119, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2119, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2387,10 +2345,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2123, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2123, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -2411,7 +2369,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "/", "right": { - "commentStart": 2133, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2427,17 +2385,17 @@ description: Result of parsing gridfinity-bins.kcl "type": "BinaryExpression" }, { - "commentStart": 2141, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2141, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2141, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2141, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -2450,10 +2408,10 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "+", "right": { - "commentStart": 2153, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2153, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2467,10 +2425,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 2157, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2157, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -2491,7 +2449,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "/", "right": { - "commentStart": 2167, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2507,7 +2465,7 @@ description: Result of parsing gridfinity-bins.kcl "type": "BinaryExpression" }, { - "commentStart": 2174, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2528,14 +2486,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 2183, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2195, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -2550,14 +2508,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 2200, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2219, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -2569,10 +2527,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 2014, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2014, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -2582,17 +2540,17 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2014, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2035, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2035, + "commentStart": 0, "end": 0, "name": "singleCorner", "start": 0, @@ -2619,12 +2577,12 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 2226, + "commentStart": 0, "declaration": { - "commentStart": 2228, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2228, + "commentStart": 0, "end": 0, "name": "singleBinFill", "start": 0, @@ -2636,10 +2594,10 @@ description: Result of parsing gridfinity-bins.kcl "arguments": [ { "abs_path": false, - "commentStart": 2258, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2258, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -2653,10 +2611,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 2244, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2244, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2666,7 +2624,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2244, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2675,17 +2633,17 @@ description: Result of parsing gridfinity-bins.kcl { "arguments": [ { - "commentStart": 2282, + "commentStart": 0, "elements": [ { - "commentStart": 2291, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2291, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2291, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -2699,10 +2657,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2307, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2307, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -2718,14 +2676,14 @@ description: Result of parsing gridfinity-bins.kcl "type": "BinaryExpression" }, { - "commentStart": 2322, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2322, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2322, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -2739,10 +2697,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2338, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2338, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -2764,7 +2722,7 @@ description: Result of parsing gridfinity-bins.kcl "type": "ArrayExpression" }, { - "commentStart": 2353, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2773,10 +2731,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 2267, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2267, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2786,7 +2744,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2267, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2797,24 +2755,24 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 2366, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2372, + "commentStart": 0, "elements": [ { - "commentStart": 2373, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2373, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2373, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -2827,14 +2785,14 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "-", "right": { - "commentStart": 2386, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2386, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2386, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -2847,7 +2805,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "*", "right": { - "commentStart": 2402, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2867,7 +2825,7 @@ description: Result of parsing gridfinity-bins.kcl "type": "BinaryExpression" }, { - "commentStart": 2406, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2888,14 +2846,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 2410, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2416, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2906,10 +2864,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 2361, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2361, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2919,7 +2877,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2361, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2931,17 +2889,17 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 2436, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2442, + "commentStart": 0, "elements": [ { - "commentStart": 2443, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2953,14 +2911,14 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 2446, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2446, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2446, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -2973,14 +2931,14 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "-", "right": { - "commentStart": 2459, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2459, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2459, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -2993,7 +2951,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "*", "right": { - "commentStart": 2475, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3022,14 +2980,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 2480, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2486, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3040,10 +2998,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 2431, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2431, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3053,7 +3011,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2431, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3065,7 +3023,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 2507, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -3074,7 +3032,7 @@ description: Result of parsing gridfinity-bins.kcl "arg": { "arguments": [ { - "commentStart": 2535, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3083,10 +3041,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 2521, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2521, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -3096,7 +3054,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2521, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3106,14 +3064,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 2539, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2545, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3124,10 +3082,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 2501, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2501, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -3137,7 +3095,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2501, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3149,14 +3107,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 2566, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2572, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3167,10 +3125,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 2560, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2560, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -3180,7 +3138,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2560, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3192,7 +3150,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 2595, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3200,10 +3158,10 @@ description: Result of parsing gridfinity-bins.kcl }, "arg": { "abs_path": false, - "commentStart": 2604, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2604, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -3218,10 +3176,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 2587, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2587, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3231,7 +3189,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2587, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3243,7 +3201,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 2632, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -3251,10 +3209,10 @@ description: Result of parsing gridfinity-bins.kcl }, "arg": { "abs_path": false, - "commentStart": 2641, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2641, + "commentStart": 0, "end": 0, "name": "firstStep", "start": 0, @@ -3269,23 +3227,23 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 2659, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2666, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 2697, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2697, + "commentStart": 0, "end": 0, "name": "line000", "start": 0, @@ -3299,10 +3257,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 2677, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2677, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -3312,7 +3270,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2677, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3322,10 +3280,10 @@ description: Result of parsing gridfinity-bins.kcl "arguments": [ { "abs_path": false, - "commentStart": 2740, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2740, + "commentStart": 0, "end": 0, "name": "line000", "start": 0, @@ -3339,10 +3297,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 2716, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2716, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -3352,7 +3310,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2716, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3362,10 +3320,10 @@ description: Result of parsing gridfinity-bins.kcl "arguments": [ { "abs_path": false, - "commentStart": 2779, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2779, + "commentStart": 0, "end": 0, "name": "line002", "start": 0, @@ -3379,10 +3337,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 2759, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2759, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -3392,7 +3350,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2759, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3402,10 +3360,10 @@ description: Result of parsing gridfinity-bins.kcl "arguments": [ { "abs_path": false, - "commentStart": 2822, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2822, + "commentStart": 0, "end": 0, "name": "line002", "start": 0, @@ -3419,10 +3377,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 2798, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2798, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -3432,7 +3390,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2798, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3448,10 +3406,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 2617, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2617, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -3461,7 +3419,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2617, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3469,7 +3427,7 @@ description: Result of parsing gridfinity-bins.kcl "unlabeled": null } ], - "commentStart": 2244, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -3485,12 +3443,12 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 2847, + "commentStart": 0, "declaration": { - "commentStart": 2849, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2849, + "commentStart": 0, "end": 0, "name": "magCutout000", "start": 0, @@ -3501,37 +3459,38 @@ description: Result of parsing gridfinity-bins.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 2878, - "end": 0, - "name": { - "commentStart": 2878, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "singleBinFill", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 2893, - "end": 0, - "raw": "\"start\"", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "start" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 2864, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2864, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -3541,39 +3500,55 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2864, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "singleBinFill", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2922, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2931, + "commentStart": 0, "elements": [ { - "commentStart": 2942, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2942, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 2943, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2943, + "commentStart": 0, "end": 0, "name": "magOffset", "start": 0, @@ -3584,7 +3559,7 @@ description: Result of parsing gridfinity-bins.kcl "type": "Name", "type": "Name" }, - "commentStart": 2942, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3594,10 +3569,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 2955, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2955, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -3615,10 +3590,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 2971, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2971, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -3634,17 +3609,17 @@ description: Result of parsing gridfinity-bins.kcl "type": "BinaryExpression" }, { - "commentStart": 2988, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2988, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2988, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2988, + "commentStart": 0, "end": 0, "name": "magOffset", "start": 0, @@ -3658,10 +3633,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3000, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3000, + "commentStart": 0, "end": 0, "name": "binBaseLength", "start": 0, @@ -3679,10 +3654,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 3016, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3016, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -3707,21 +3682,21 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3040, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3049, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3049, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3049, + "commentStart": 0, "end": 0, "name": "magOuterDiam", "start": 0, @@ -3734,7 +3709,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "/", "right": { - "commentStart": 3064, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3753,10 +3728,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 2907, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2907, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -3766,7 +3741,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 2907, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3778,14 +3753,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3105, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3118, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -3800,28 +3775,28 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3130, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3139, + "commentStart": 0, "elements": [ { - "commentStart": 3151, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3151, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 3152, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3152, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -3832,7 +3807,7 @@ description: Result of parsing gridfinity-bins.kcl "type": "Name", "type": "Name" }, - "commentStart": 3151, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3841,10 +3816,10 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "+", "right": { - "commentStart": 3164, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3164, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3858,10 +3833,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3168, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3168, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -3882,7 +3857,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "/", "right": { - "commentStart": 3178, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3898,17 +3873,17 @@ description: Result of parsing gridfinity-bins.kcl "type": "BinaryExpression" }, { - "commentStart": 3191, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3191, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3191, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3191, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -3921,10 +3896,10 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "+", "right": { - "commentStart": 3203, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3203, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3938,10 +3913,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 3207, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3207, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -3962,7 +3937,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "/", "right": { - "commentStart": 3217, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3987,14 +3962,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3236, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3248, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -4009,14 +3984,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3258, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3277, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -4028,10 +4003,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 3079, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3079, + "commentStart": 0, "end": 0, "name": "patternCircular2d", "start": 0, @@ -4041,7 +4016,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 3079, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4053,7 +4028,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3303, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4062,10 +4037,10 @@ description: Result of parsing gridfinity-bins.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 3313, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3313, + "commentStart": 0, "end": 0, "name": "magDepth", "start": 0, @@ -4076,7 +4051,7 @@ description: Result of parsing gridfinity-bins.kcl "type": "Name", "type": "Name" }, - "commentStart": 3312, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4087,10 +4062,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 3295, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3295, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -4100,7 +4075,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 3295, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4108,13 +4083,13 @@ description: Result of parsing gridfinity-bins.kcl "unlabeled": null } ], - "commentStart": 2864, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "3": [ { - "commentStart": 3322, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4142,12 +4117,12 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 3368, + "commentStart": 0, "declaration": { - "commentStart": 3368, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3368, + "commentStart": 0, "end": 0, "name": "binSides", "start": 0, @@ -4160,17 +4135,17 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3417, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3424, + "commentStart": 0, "elements": [ { - "commentStart": 3425, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -4182,7 +4157,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 3430, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -4194,7 +4169,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 3435, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -4215,7 +4190,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3448, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -4223,10 +4198,10 @@ description: Result of parsing gridfinity-bins.kcl }, "arg": { "abs_path": false, - "commentStart": 3460, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3460, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -4241,21 +4216,21 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3482, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3493, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3493, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3493, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -4268,14 +4243,14 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "+", "right": { - "commentStart": 3505, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3505, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3505, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -4288,7 +4263,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "*", "right": { - "commentStart": 3514, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4311,10 +4286,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 3379, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3379, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -4324,17 +4299,17 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 3379, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 3403, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3403, + "commentStart": 0, "end": 0, "name": "sides", "start": 0, @@ -4351,17 +4326,17 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3545, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3552, + "commentStart": 0, "elements": [ { - "commentStart": 3553, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -4373,7 +4348,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 3558, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -4385,7 +4360,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 3563, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -4406,7 +4381,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3569, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -4414,10 +4389,10 @@ description: Result of parsing gridfinity-bins.kcl }, "arg": { "abs_path": false, - "commentStart": 3581, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3581, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -4432,21 +4407,21 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3597, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3608, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3608, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3608, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -4459,14 +4434,14 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "+", "right": { - "commentStart": 3620, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3620, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3620, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -4479,7 +4454,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "*", "right": { - "commentStart": 3629, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4502,10 +4477,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 3529, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3529, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -4515,7 +4490,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 3529, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4523,13 +4498,13 @@ description: Result of parsing gridfinity-bins.kcl "unlabeled": null } ], - "commentStart": 3379, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 3631, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4557,12 +4532,12 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 3698, + "commentStart": 0, "declaration": { - "commentStart": 3698, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3698, + "commentStart": 0, "end": 0, "name": "binCorners", "start": 0, @@ -4575,17 +4550,17 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3751, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3758, + "commentStart": 0, "elements": [ { - "commentStart": 3759, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -4597,7 +4572,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 3764, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -4609,7 +4584,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 3769, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -4630,7 +4605,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3782, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -4638,10 +4613,10 @@ description: Result of parsing gridfinity-bins.kcl }, "arg": { "abs_path": false, - "commentStart": 3794, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3794, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -4656,21 +4631,21 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3816, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3827, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3827, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3827, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -4683,14 +4658,14 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "+", "right": { - "commentStart": 3839, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3839, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3839, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -4703,7 +4678,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "*", "right": { - "commentStart": 3848, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4726,10 +4701,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 3711, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3711, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -4739,17 +4714,17 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 3711, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 3735, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3735, + "commentStart": 0, "end": 0, "name": "corners", "start": 0, @@ -4766,17 +4741,17 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3879, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3886, + "commentStart": 0, "elements": [ { - "commentStart": 3887, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -4788,7 +4763,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 3892, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -4800,7 +4775,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 3897, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -4821,7 +4796,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3903, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -4829,10 +4804,10 @@ description: Result of parsing gridfinity-bins.kcl }, "arg": { "abs_path": false, - "commentStart": 3915, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3915, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -4847,21 +4822,21 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 3931, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3942, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3942, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3942, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -4874,14 +4849,14 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "+", "right": { - "commentStart": 3954, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3954, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3954, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -4894,7 +4869,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "*", "right": { - "commentStart": 3963, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4917,10 +4892,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 3863, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3863, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -4930,7 +4905,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 3863, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4938,13 +4913,13 @@ description: Result of parsing gridfinity-bins.kcl "unlabeled": null } ], - "commentStart": 3711, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 3965, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4972,12 +4947,12 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 4023, + "commentStart": 0, "declaration": { - "commentStart": 4023, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4023, + "commentStart": 0, "end": 0, "name": "binFill", "start": 0, @@ -4990,17 +4965,17 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4079, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4086, + "commentStart": 0, "elements": [ { - "commentStart": 4087, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -5012,7 +4987,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 4092, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -5024,7 +4999,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 4097, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -5045,7 +5020,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4110, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -5053,10 +5028,10 @@ description: Result of parsing gridfinity-bins.kcl }, "arg": { "abs_path": false, - "commentStart": 4122, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4122, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -5071,21 +5046,21 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4144, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4155, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4155, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4155, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -5098,14 +5073,14 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "+", "right": { - "commentStart": 4167, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4167, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4167, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -5118,7 +5093,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "*", "right": { - "commentStart": 4176, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5141,10 +5116,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4033, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4033, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -5154,17 +5129,17 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4033, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 4057, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4057, + "commentStart": 0, "end": 0, "name": "singleBinFill", "start": 0, @@ -5181,17 +5156,17 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4207, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4214, + "commentStart": 0, "elements": [ { - "commentStart": 4215, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -5203,7 +5178,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 4220, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -5215,7 +5190,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 4225, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -5236,7 +5211,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4231, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -5244,10 +5219,10 @@ description: Result of parsing gridfinity-bins.kcl }, "arg": { "abs_path": false, - "commentStart": 4243, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4243, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -5262,21 +5237,21 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4259, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4270, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4270, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4270, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -5289,14 +5264,14 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "+", "right": { - "commentStart": 4282, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4282, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4282, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -5309,7 +5284,7 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "*", "right": { - "commentStart": 4291, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5332,10 +5307,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4191, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4191, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -5345,7 +5320,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4191, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5353,13 +5328,13 @@ description: Result of parsing gridfinity-bins.kcl "unlabeled": null } ], - "commentStart": 4033, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 4293, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5387,12 +5362,12 @@ description: Result of parsing gridfinity-bins.kcl "type": "VariableDeclaration" }, { - "commentStart": 4324, + "commentStart": 0, "declaration": { - "commentStart": 4324, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4324, + "commentStart": 0, "end": 0, "name": "binTop", "start": 0, @@ -5407,7 +5382,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4363, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -5415,10 +5390,10 @@ description: Result of parsing gridfinity-bins.kcl }, "arg": { "abs_path": false, - "commentStart": 4372, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4372, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -5433,10 +5408,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4347, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4347, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -5446,17 +5421,17 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4347, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 4359, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4359, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -5471,10 +5446,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4333, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4333, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -5484,7 +5459,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4333, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5493,10 +5468,10 @@ description: Result of parsing gridfinity-bins.kcl { "arguments": [ { - "commentStart": 4401, + "commentStart": 0, "elements": [ { - "commentStart": 4402, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5508,7 +5483,7 @@ description: Result of parsing gridfinity-bins.kcl } }, { - "commentStart": 4405, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5526,7 +5501,7 @@ description: Result of parsing gridfinity-bins.kcl "type": "ArrayExpression" }, { - "commentStart": 4409, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5535,10 +5510,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4386, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4386, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -5548,7 +5523,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4386, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5559,24 +5534,24 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4423, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4433, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4433, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4433, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4433, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -5589,10 +5564,10 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "+", "right": { - "commentStart": 4445, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4445, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5606,10 +5581,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4449, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4449, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -5631,10 +5606,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4459, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4459, + "commentStart": 0, "end": 0, "name": "countBinWidth", "start": 0, @@ -5653,14 +5628,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4474, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4480, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -5671,10 +5646,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4417, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4417, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -5684,7 +5659,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4417, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5696,24 +5671,24 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4501, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4511, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4511, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4511, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4511, + "commentStart": 0, "end": 0, "name": "binLength", "start": 0, @@ -5726,10 +5701,10 @@ description: Result of parsing gridfinity-bins.kcl }, "operator": "+", "right": { - "commentStart": 4523, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4523, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5743,10 +5718,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4527, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4527, + "commentStart": 0, "end": 0, "name": "binTol", "start": 0, @@ -5768,10 +5743,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4537, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4537, + "commentStart": 0, "end": 0, "name": "countBinLength", "start": 0, @@ -5790,14 +5765,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4553, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4559, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -5808,10 +5783,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4495, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4495, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -5821,7 +5796,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4495, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5833,7 +5808,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4580, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -5842,7 +5817,7 @@ description: Result of parsing gridfinity-bins.kcl "arg": { "arguments": [ { - "commentStart": 4608, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5851,10 +5826,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4594, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4594, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -5864,7 +5839,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4594, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5874,14 +5849,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4612, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4618, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -5892,10 +5867,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4574, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4574, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -5905,7 +5880,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4574, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5917,14 +5892,14 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4639, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4645, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -5935,10 +5910,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4633, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4633, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -5948,7 +5923,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4633, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5960,21 +5935,21 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4668, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4677, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4677, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4677, + "commentStart": 0, "end": 0, "name": "binHeight", "start": 0, @@ -5988,10 +5963,10 @@ description: Result of parsing gridfinity-bins.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4689, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4689, + "commentStart": 0, "end": 0, "name": "countBinHeight", "start": 0, @@ -6010,10 +5985,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4660, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4660, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -6023,7 +5998,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4660, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6035,7 +6010,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4725, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -6043,10 +6018,10 @@ description: Result of parsing gridfinity-bins.kcl }, "arg": { "abs_path": false, - "commentStart": 4734, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4734, + "commentStart": 0, "end": 0, "name": "cornerRadius", "start": 0, @@ -6061,23 +6036,23 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4755, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4762, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 4793, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4793, + "commentStart": 0, "end": 0, "name": "line010", "start": 0, @@ -6091,10 +6066,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4773, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4773, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -6104,7 +6079,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4773, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6114,10 +6089,10 @@ description: Result of parsing gridfinity-bins.kcl "arguments": [ { "abs_path": false, - "commentStart": 4836, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4836, + "commentStart": 0, "end": 0, "name": "line010", "start": 0, @@ -6131,10 +6106,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4812, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4812, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -6144,7 +6119,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4812, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6154,10 +6129,10 @@ description: Result of parsing gridfinity-bins.kcl "arguments": [ { "abs_path": false, - "commentStart": 4875, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4875, + "commentStart": 0, "end": 0, "name": "line012", "start": 0, @@ -6171,10 +6146,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4855, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4855, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -6184,7 +6159,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4855, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6194,10 +6169,10 @@ description: Result of parsing gridfinity-bins.kcl "arguments": [ { "abs_path": false, - "commentStart": 4918, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4918, + "commentStart": 0, "end": 0, "name": "line012", "start": 0, @@ -6211,10 +6186,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4894, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4894, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -6224,7 +6199,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4894, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6240,10 +6215,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4710, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4710, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -6253,7 +6228,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4710, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6265,23 +6240,30 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4955, + "commentStart": 0, "end": 0, "name": "faces", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4963, + "commentStart": 0, "elements": [ { - "commentStart": 4964, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "\"end\"", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "end" + "type": "Name", + "type": "Name" } ], "end": 0, @@ -6293,7 +6275,7 @@ description: Result of parsing gridfinity-bins.kcl { "type": "LabeledArg", "label": { - "commentStart": 4972, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -6301,10 +6283,10 @@ description: Result of parsing gridfinity-bins.kcl }, "arg": { "abs_path": false, - "commentStart": 4984, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4984, + "commentStart": 0, "end": 0, "name": "binThk", "start": 0, @@ -6319,10 +6301,10 @@ description: Result of parsing gridfinity-bins.kcl ], "callee": { "abs_path": false, - "commentStart": 4949, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4949, + "commentStart": 0, "end": 0, "name": "shell", "start": 0, @@ -6332,7 +6314,7 @@ description: Result of parsing gridfinity-bins.kcl "start": 0, "type": "Name" }, - "commentStart": 4949, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6340,7 +6322,7 @@ description: Result of parsing gridfinity-bins.kcl "unlabeled": null } ], - "commentStart": 4333, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -6363,7 +6345,7 @@ description: Result of parsing gridfinity-bins.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 307, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -6378,10 +6360,10 @@ description: Result of parsing gridfinity-bins.kcl ], "properties": [ { - "commentStart": 316, + "commentStart": 0, "end": 0, "key": { - "commentStart": 316, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -6391,10 +6373,10 @@ description: Result of parsing gridfinity-bins.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 336, + "commentStart": 0, "end": 0, "name": { - "commentStart": 336, + "commentStart": 0, "end": 0, "name": "mm", "start": 0, @@ -6415,7 +6397,7 @@ description: Result of parsing gridfinity-bins.kcl "nonCodeNodes": { "21": [ { - "commentStart": 2226, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -6426,7 +6408,7 @@ description: Result of parsing gridfinity-bins.kcl ], "22": [ { - "commentStart": 2847, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -6438,7 +6420,7 @@ description: Result of parsing gridfinity-bins.kcl }, "startNodes": [ { - "commentStart": 339, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/ops.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/ops.snap index 4109119b7..257b903f6 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/ops.snap @@ -40,7 +40,7 @@ description: Operations executed gridfinity-bins.kcl "name": "face", "functionSourceRange": [ 875, - 1248, + 1218, 0 ], "unlabeledArg": null, @@ -50,7 +50,7 @@ description: Operations executed gridfinity-bins.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -73,7 +73,13 @@ description: Operations executed gridfinity-bins.kcl "type": "Number", "value": 34.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -165,14 +171,26 @@ description: Operations executed gridfinity-bins.kcl "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { @@ -266,7 +284,7 @@ description: Operations executed gridfinity-bins.kcl "name": "face", "functionSourceRange": [ 875, - 1248, + 1218, 0 ], "unlabeledArg": null, @@ -276,7 +294,7 @@ description: Operations executed gridfinity-bins.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -472,14 +490,26 @@ description: Operations executed gridfinity-bins.kcl "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { "type": "Number", "value": 21.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, { @@ -538,7 +568,7 @@ description: Operations executed gridfinity-bins.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -641,16 +671,7 @@ description: Operations executed gridfinity-bins.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -661,7 +682,15 @@ description: Operations executed gridfinity-bins.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -772,7 +801,13 @@ description: Operations executed gridfinity-bins.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -884,7 +919,13 @@ description: Operations executed gridfinity-bins.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1020,7 +1061,13 @@ description: Operations executed gridfinity-bins.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1132,7 +1179,13 @@ description: Operations executed gridfinity-bins.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1268,7 +1321,13 @@ description: Operations executed gridfinity-bins.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1357,7 +1416,13 @@ description: Operations executed gridfinity-bins.kcl "type": "Number", "value": 42.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1435,7 +1500,7 @@ description: Operations executed gridfinity-bins.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1455,7 +1520,13 @@ description: Operations executed gridfinity-bins.kcl "type": "Number", "value": 14.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] diff --git a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/program_memory.snap index dd27ed553..1fdd53fd5 100644 --- a/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/gridfinity-bins/program_memory.snap @@ -256,22 +256,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -479,22 +491,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -702,22 +726,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -925,22 +961,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1148,22 +1196,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1371,22 +1431,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1594,22 +1666,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1817,22 +1901,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2040,22 +2136,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2263,22 +2371,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2486,22 +2606,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2709,22 +2841,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2932,22 +3076,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3155,22 +3311,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3378,22 +3546,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3601,22 +3781,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3824,22 +4016,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4047,22 +4251,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4270,22 +4486,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4493,22 +4721,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4716,22 +4956,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4939,22 +5191,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5162,22 +5426,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5385,22 +5661,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5455,9 +5743,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -5468,9 +5756,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -5481,9 +5769,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -5494,9 +5782,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -5517,9 +5805,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -5542,9 +5830,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -5567,9 +5855,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -5592,9 +5880,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -5616,22 +5904,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5686,28 +5986,72 @@ description: Variables in memory after executing gridfinity-bins.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -5729,9 +6073,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -5742,9 +6086,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -5755,9 +6099,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -5768,9 +6112,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -5791,9 +6135,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -5816,9 +6160,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -5841,9 +6185,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -5866,9 +6210,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -5890,22 +6234,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5960,28 +6316,72 @@ description: Variables in memory after executing gridfinity-bins.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -6003,9 +6403,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -6016,9 +6416,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -6029,9 +6429,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -6042,9 +6442,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -6065,9 +6465,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -6090,9 +6490,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -6115,9 +6515,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -6140,9 +6540,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -6164,22 +6564,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6234,28 +6646,72 @@ description: Variables in memory after executing gridfinity-bins.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -6277,9 +6733,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -6290,9 +6746,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -6303,9 +6759,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -6316,9 +6772,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -6339,9 +6795,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -6364,9 +6820,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -6389,9 +6845,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -6414,9 +6870,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -6438,22 +6894,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6508,28 +6976,72 @@ description: Variables in memory after executing gridfinity-bins.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -6551,9 +7063,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -6564,9 +7076,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -6577,9 +7089,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -6590,9 +7102,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -6613,9 +7125,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -6638,9 +7150,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -6663,9 +7175,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -6688,9 +7200,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -6712,22 +7224,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6782,28 +7306,72 @@ description: Variables in memory after executing gridfinity-bins.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -6825,9 +7393,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -6838,9 +7406,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -6851,9 +7419,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -6864,9 +7432,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -6887,9 +7455,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -6912,9 +7480,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -6937,9 +7505,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -6962,9 +7530,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -6986,22 +7554,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7056,28 +7636,72 @@ description: Variables in memory after executing gridfinity-bins.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -7288,22 +7912,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7511,22 +8147,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7734,22 +8382,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7957,22 +8617,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8180,22 +8852,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8403,22 +9087,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8626,22 +9322,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8849,22 +9557,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9072,22 +9792,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9295,22 +10027,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9518,22 +10262,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9741,22 +10497,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9964,22 +10732,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10187,22 +10967,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10410,22 +11202,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10633,22 +11437,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10856,22 +11672,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11079,22 +11907,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11302,22 +12142,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11525,22 +12377,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11748,22 +12612,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11971,22 +12847,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12194,22 +13082,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12417,22 +13317,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12510,9 +13422,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4480, - "end": 4488, - "start": 4480, + "commentStart": 4455, + "end": 4463, + "start": 4455, "type": "TagDeclarator", "value": "line010" }, @@ -12523,9 +13435,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4559, - "end": 4567, - "start": 4559, + "commentStart": 4534, + "end": 4542, + "start": 4534, "type": "TagDeclarator", "value": "line011" }, @@ -12536,9 +13448,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4618, - "end": 4626, - "start": 4618, + "commentStart": 4593, + "end": 4601, + "start": 4593, "type": "TagDeclarator", "value": "line012" }, @@ -12549,9 +13461,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4645, - "end": 4653, - "start": 4645, + "commentStart": 4620, + "end": 4628, + "start": 4620, "type": "TagDeclarator", "value": "line013" }, @@ -12572,9 +13484,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 0.0 ], "tag": { - "commentStart": 4480, - "end": 4488, - "start": 4480, + "commentStart": 4455, + "end": 4463, + "start": 4455, "type": "TagDeclarator", "value": "line010" }, @@ -12597,9 +13509,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 0.0 ], "tag": { - "commentStart": 4559, - "end": 4567, - "start": 4559, + "commentStart": 4534, + "end": 4542, + "start": 4534, "type": "TagDeclarator", "value": "line011" }, @@ -12622,9 +13534,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 126.0 ], "tag": { - "commentStart": 4618, - "end": 4626, - "start": 4618, + "commentStart": 4593, + "end": 4601, + "start": 4593, "type": "TagDeclarator", "value": "line012" }, @@ -12647,9 +13559,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 126.0 ], "tag": { - "commentStart": 4645, - "end": 4653, - "start": 4645, + "commentStart": 4620, + "end": 4628, + "start": 4620, "type": "TagDeclarator", "value": "line013" }, @@ -12671,22 +13583,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 4.75 + "z": 4.75, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12741,28 +13665,72 @@ description: Variables in memory after executing gridfinity-bins.kcl { "type": "fillet", "id": "[uuid]", - "radius": 3.75, + "radius": { + "n": 3.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 3.75, + "radius": { + "n": 3.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 3.75, + "radius": { + "n": 3.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 3.75, + "radius": { + "n": 3.75, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -12958,22 +13926,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13181,22 +14161,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13404,22 +14396,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13627,22 +14631,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13846,17 +14862,26 @@ description: Variables in memory after executing gridfinity-bins.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -13868,9 +14893,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -13881,9 +14906,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -13894,9 +14919,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -13907,9 +14932,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -13930,9 +14955,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -13955,9 +14980,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -13980,9 +15005,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -14005,9 +15030,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -14029,22 +15054,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14099,28 +15136,72 @@ description: Variables in memory after executing gridfinity-bins.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -14218,17 +15299,26 @@ description: Variables in memory after executing gridfinity-bins.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -14240,9 +15330,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -14253,9 +15343,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -14266,9 +15356,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -14279,9 +15369,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -14302,9 +15392,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -14327,9 +15417,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -14352,9 +15442,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -14377,9 +15467,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -14401,22 +15491,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14471,28 +15573,72 @@ description: Variables in memory after executing gridfinity-bins.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -14590,17 +15736,26 @@ description: Variables in memory after executing gridfinity-bins.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -14612,9 +15767,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -14625,9 +15780,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -14638,9 +15793,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -14651,9 +15806,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -14674,9 +15829,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -14699,9 +15854,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -14724,9 +15879,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -14749,9 +15904,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -14773,22 +15928,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14843,28 +16010,72 @@ description: Variables in memory after executing gridfinity-bins.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -14962,17 +16173,26 @@ description: Variables in memory after executing gridfinity-bins.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -14984,9 +16204,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -14997,9 +16217,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -15010,9 +16230,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -15023,9 +16243,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -15046,9 +16266,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -15071,9 +16291,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -15096,9 +16316,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -15121,9 +16341,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -15145,22 +16365,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15215,28 +16447,72 @@ description: Variables in memory after executing gridfinity-bins.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -15508,22 +16784,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15731,22 +17019,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15954,22 +17254,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16177,22 +17489,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16244,9 +17568,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -16257,9 +17581,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -16270,9 +17594,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -16283,9 +17607,9 @@ description: Variables in memory after executing gridfinity-bins.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -16306,9 +17630,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2416, - "end": 2424, - "start": 2416, + "commentStart": 2386, + "end": 2394, + "start": 2386, "type": "TagDeclarator", "value": "line000" }, @@ -16331,9 +17655,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 3.2 ], "tag": { - "commentStart": 2486, - "end": 2494, - "start": 2486, + "commentStart": 2456, + "end": 2464, + "start": 2456, "type": "TagDeclarator", "value": "line001" }, @@ -16356,9 +17680,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2545, - "end": 2553, - "start": 2545, + "commentStart": 2515, + "end": 2523, + "start": 2515, "type": "TagDeclarator", "value": "line002" }, @@ -16381,9 +17705,9 @@ description: Variables in memory after executing gridfinity-bins.kcl 38.8 ], "tag": { - "commentStart": 2572, - "end": 2580, - "start": 2572, + "commentStart": 2542, + "end": 2550, + "start": 2542, "type": "TagDeclarator", "value": "line003" }, @@ -16405,22 +17729,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16475,28 +17811,72 @@ description: Variables in memory after executing gridfinity-bins.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.8, + "radius": { + "n": 0.8, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -16676,22 +18056,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16899,22 +18291,34 @@ description: Variables in memory after executing gridfinity-bins.kcl "origin": { "x": 4.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/kcl_samples/hex-nut/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/hex-nut/artifact_commands.snap index 906fc6cf7..f77a21e20 100644 --- a/rust/kcl-lib/tests/kcl_samples/hex-nut/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/hex-nut/artifact_commands.snap @@ -315,7 +315,8 @@ description: Artifact commands hex-nut.kcl "type": "extrude", "target": "[uuid]", "distance": 0.266, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/hex-nut/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/hex-nut/artifact_graph_flowchart.snap.md index 42aafe9c2..b43042c82 100644 --- a/rust/kcl-lib/tests/kcl_samples/hex-nut/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/hex-nut/artifact_graph_flowchart.snap.md @@ -2,21 +2,21 @@ flowchart LR subgraph path2 [Path] 2["Path
[572, 622, 0]"] - 3["Segment
[630, 679, 0]"] - 4["Segment
[687, 736, 0]"] - 5["Segment
[744, 793, 0]"] - 6["Segment
[801, 849, 0]"] - 7["Segment
[857, 910, 0]"] - 8["Segment
[918, 925, 0]"] + 3["Segment
[630, 672, 0]"] + 4["Segment
[680, 722, 0]"] + 5["Segment
[730, 772, 0]"] + 6["Segment
[780, 821, 0]"] + 7["Segment
[829, 875, 0]"] + 8["Segment
[883, 890, 0]"] 9[Solid2d] end subgraph path10 [Path] - 10["Path
[938, 998, 0]"] - 11["Segment
[938, 998, 0]"] + 10["Path
[903, 963, 0]"] + 11["Segment
[903, 963, 0]"] 12[Solid2d] end 1["Plane
[546, 564, 0]"] - 13["Sweep Extrusion
[1010, 1031, 0]"] + 13["Sweep Extrusion
[975, 996, 0]"] 14[Wall] 15[Wall] 16[Wall] diff --git a/rust/kcl-lib/tests/kcl_samples/hex-nut/ast.snap b/rust/kcl-lib/tests/kcl_samples/hex-nut/ast.snap index ff7224642..4249a267d 100644 --- a/rust/kcl-lib/tests/kcl_samples/hex-nut/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/hex-nut/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing hex-nut.kcl "Ok": { "body": [ { - "commentStart": 350, + "commentStart": 0, "declaration": { - "commentStart": 398, + "commentStart": 0, "end": 0, "id": { - "commentStart": 398, + "commentStart": 0, "end": 0, "name": "wallToWallLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 417, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing hex-nut.kcl "type": "VariableDeclaration" }, { - "commentStart": 421, + "commentStart": 0, "declaration": { - "commentStart": 421, + "commentStart": 0, "end": 0, "id": { - "commentStart": 421, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 433, + "commentStart": 0, "end": 0, "raw": "0.266", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing hex-nut.kcl "type": "VariableDeclaration" }, { - "commentStart": 439, + "commentStart": 0, "declaration": { - "commentStart": 439, + "commentStart": 0, "end": 0, "id": { - "commentStart": 439, + "commentStart": 0, "end": 0, "name": "diameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 450, + "commentStart": 0, "end": 0, "raw": "0.3125", "start": 0, @@ -108,12 +108,12 @@ description: Result of parsing hex-nut.kcl "type": "VariableDeclaration" }, { - "commentStart": 456, + "commentStart": 0, "declaration": { - "commentStart": 498, + "commentStart": 0, "end": 0, "id": { - "commentStart": 498, + "commentStart": 0, "end": 0, "name": "hexNut", "start": 0, @@ -123,12 +123,12 @@ description: Result of parsing hex-nut.kcl "body": { "body": [ { - "commentStart": 531, + "commentStart": 0, "declaration": { - "commentStart": 531, + "commentStart": 0, "end": 0, "id": { - "commentStart": 531, + "commentStart": 0, "end": 0, "name": "hexNutSketch", "start": 0, @@ -141,10 +141,10 @@ description: Result of parsing hex-nut.kcl { "argument": { "abs_path": false, - "commentStart": 561, + "commentStart": 0, "end": 0, "name": { - "commentStart": 561, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -155,7 +155,7 @@ description: Result of parsing hex-nut.kcl "type": "Name", "type": "Name" }, - "commentStart": 560, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -165,10 +165,10 @@ description: Result of parsing hex-nut.kcl ], "callee": { "abs_path": false, - "commentStart": 546, + "commentStart": 0, "end": 0, "name": { - "commentStart": 546, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -178,7 +178,7 @@ description: Result of parsing hex-nut.kcl "start": 0, "type": "Name" }, - "commentStart": 546, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -187,17 +187,17 @@ description: Result of parsing hex-nut.kcl { "arguments": [ { - "commentStart": 587, + "commentStart": 0, "elements": [ { - "commentStart": 588, + "commentStart": 0, "end": 0, "left": { - "commentStart": 588, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 588, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -205,7 +205,7 @@ description: Result of parsing hex-nut.kcl "type": "Identifier" }, "property": { - "commentStart": 594, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -223,10 +223,10 @@ description: Result of parsing hex-nut.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 599, + "commentStart": 0, "end": 0, "name": { - "commentStart": 599, + "commentStart": 0, "end": 0, "name": "innerDia", "start": 0, @@ -242,11 +242,11 @@ description: Result of parsing hex-nut.kcl "type": "BinaryExpression" }, { - "commentStart": 609, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 609, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -254,7 +254,7 @@ description: Result of parsing hex-nut.kcl "type": "Identifier" }, "property": { - "commentStart": 615, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -276,7 +276,7 @@ description: Result of parsing hex-nut.kcl "type": "ArrayExpression" }, { - "commentStart": 620, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -285,10 +285,10 @@ description: Result of parsing hex-nut.kcl ], "callee": { "abs_path": false, - "commentStart": 572, + "commentStart": 0, "end": 0, "name": { - "commentStart": 572, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -298,7 +298,7 @@ description: Result of parsing hex-nut.kcl "start": 0, "type": "Name" }, - "commentStart": 572, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -307,82 +307,60 @@ description: Result of parsing hex-nut.kcl { "arguments": [ { - "commentStart": 641, - "end": 0, - "properties": [ - { - "commentStart": 643, - "end": 0, - "key": { - "commentStart": 643, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 651, - "end": 0, - "raw": "240", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 240.0, - "suffix": "None" - } - } - }, - { - "commentStart": 656, - "end": 0, - "key": { - "commentStart": 656, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 665, - "end": 0, - "name": { - "commentStart": 665, - "end": 0, - "name": "innerDia", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "240", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 240.0, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 677, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "innerDia", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 630, + "commentStart": 0, "end": 0, "name": { - "commentStart": 630, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -392,91 +370,70 @@ description: Result of parsing hex-nut.kcl "start": 0, "type": "Name" }, - "commentStart": 630, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 698, - "end": 0, - "properties": [ - { - "commentStart": 700, - "end": 0, - "key": { - "commentStart": 700, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 708, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - } - }, - { - "commentStart": 713, - "end": 0, - "key": { - "commentStart": 713, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 722, - "end": 0, - "name": { - "commentStart": 722, - "end": 0, - "name": "innerDia", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "180", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 180.0, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 734, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "innerDia", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 687, + "commentStart": 0, "end": 0, "name": { - "commentStart": 687, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -486,91 +443,70 @@ description: Result of parsing hex-nut.kcl "start": 0, "type": "Name" }, - "commentStart": 687, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 755, - "end": 0, - "properties": [ - { - "commentStart": 757, - "end": 0, - "key": { - "commentStart": 757, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 765, - "end": 0, - "raw": "120", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 120.0, - "suffix": "None" - } - } - }, - { - "commentStart": 770, - "end": 0, - "key": { - "commentStart": 770, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 779, - "end": 0, - "name": { - "commentStart": 779, - "end": 0, - "name": "innerDia", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "120", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 120.0, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 791, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "innerDia", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 744, + "commentStart": 0, "end": 0, "name": { - "commentStart": 744, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -580,91 +516,70 @@ description: Result of parsing hex-nut.kcl "start": 0, "type": "Name" }, - "commentStart": 744, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 812, - "end": 0, - "properties": [ - { - "commentStart": 814, - "end": 0, - "key": { - "commentStart": 814, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 822, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - } - }, - { - "commentStart": 826, - "end": 0, - "key": { - "commentStart": 826, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 835, - "end": 0, - "name": { - "commentStart": 835, - "end": 0, - "name": "innerDia", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "60", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 60.0, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 847, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "innerDia", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 801, + "commentStart": 0, "end": 0, "name": { - "commentStart": 801, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -674,111 +589,90 @@ description: Result of parsing hex-nut.kcl "start": 0, "type": "Name" }, - "commentStart": 801, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 868, - "end": 0, - "properties": [ - { - "commentStart": 870, - "end": 0, - "key": { - "commentStart": 870, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 878, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 881, - "end": 0, - "key": { - "commentStart": 881, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 890, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 890, - "end": 0, - "name": { - "commentStart": 890, - "end": 0, - "name": "innerDia", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "*", - "right": { - "commentStart": 901, - "end": 0, - "raw": ".90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.9, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 908, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "innerDia", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": ".90", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.9, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 857, + "commentStart": 0, "end": 0, "name": { - "commentStart": 857, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -788,20 +682,21 @@ description: Result of parsing hex-nut.kcl "start": 0, "type": "Name" }, - "commentStart": 857, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [], "callee": { "abs_path": false, - "commentStart": 918, + "commentStart": 0, "end": 0, "name": { - "commentStart": 918, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -811,7 +706,7 @@ description: Result of parsing hex-nut.kcl "start": 0, "type": "Name" }, - "commentStart": 918, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -824,21 +719,21 @@ description: Result of parsing hex-nut.kcl { "type": "LabeledArg", "label": { - "commentStart": 945, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 954, + "commentStart": 0, "elements": [ { - "commentStart": 955, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 955, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -846,7 +741,7 @@ description: Result of parsing hex-nut.kcl "type": "Identifier" }, "property": { - "commentStart": 961, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -862,11 +757,11 @@ description: Result of parsing hex-nut.kcl "type": "MemberExpression" }, { - "commentStart": 965, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 965, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -874,7 +769,7 @@ description: Result of parsing hex-nut.kcl "type": "Identifier" }, "property": { - "commentStart": 971, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -899,21 +794,21 @@ description: Result of parsing hex-nut.kcl { "type": "LabeledArg", "label": { - "commentStart": 976, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 985, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 985, + "commentStart": 0, "end": 0, "name": { - "commentStart": 985, + "commentStart": 0, "end": 0, "name": "innerDia", "start": 0, @@ -926,7 +821,7 @@ description: Result of parsing hex-nut.kcl }, "operator": "/", "right": { - "commentStart": 996, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -945,10 +840,10 @@ description: Result of parsing hex-nut.kcl ], "callee": { "abs_path": false, - "commentStart": 938, + "commentStart": 0, "end": 0, "name": { - "commentStart": 938, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -958,7 +853,7 @@ description: Result of parsing hex-nut.kcl "start": 0, "type": "Name" }, - "commentStart": 938, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -966,7 +861,7 @@ description: Result of parsing hex-nut.kcl "unlabeled": null }, { - "commentStart": 1000, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -975,10 +870,10 @@ description: Result of parsing hex-nut.kcl ], "callee": { "abs_path": false, - "commentStart": 933, + "commentStart": 0, "end": 0, "name": { - "commentStart": 933, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -988,7 +883,7 @@ description: Result of parsing hex-nut.kcl "start": 0, "type": "Name" }, - "commentStart": 933, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -999,7 +894,7 @@ description: Result of parsing hex-nut.kcl { "type": "LabeledArg", "label": { - "commentStart": 1018, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1007,10 +902,10 @@ description: Result of parsing hex-nut.kcl }, "arg": { "abs_path": false, - "commentStart": 1027, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1027, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -1025,10 +920,10 @@ description: Result of parsing hex-nut.kcl ], "callee": { "abs_path": false, - "commentStart": 1010, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1010, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1038,7 +933,7 @@ description: Result of parsing hex-nut.kcl "start": 0, "type": "Name" }, - "commentStart": 1010, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1046,7 +941,7 @@ description: Result of parsing hex-nut.kcl "unlabeled": null } ], - "commentStart": 546, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1064,10 +959,10 @@ description: Result of parsing hex-nut.kcl { "argument": { "abs_path": false, - "commentStart": 1041, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1041, + "commentStart": 0, "end": 0, "name": "hexNutSketch", "start": 0, @@ -1078,24 +973,24 @@ description: Result of parsing hex-nut.kcl "type": "Name", "type": "Name" }, - "commentStart": 1034, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 527, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 504, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 505, + "commentStart": 0, "end": 0, "name": "start", "start": 0, @@ -1105,7 +1000,7 @@ description: Result of parsing hex-nut.kcl { "type": "Parameter", "identifier": { - "commentStart": 512, + "commentStart": 0, "end": 0, "name": "thk", "start": 0, @@ -1115,7 +1010,7 @@ description: Result of parsing hex-nut.kcl { "type": "Parameter", "identifier": { - "commentStart": 517, + "commentStart": 0, "end": 0, "name": "innerDia", "start": 0, @@ -1142,15 +1037,15 @@ description: Result of parsing hex-nut.kcl "type": "VariableDeclaration" }, { - "commentStart": 1055, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 1084, + "commentStart": 0, "elements": [ { - "commentStart": 1085, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1162,7 +1057,7 @@ description: Result of parsing hex-nut.kcl } }, { - "commentStart": 1088, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1181,10 +1076,10 @@ description: Result of parsing hex-nut.kcl }, { "abs_path": false, - "commentStart": 1092, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1092, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -1197,10 +1092,10 @@ description: Result of parsing hex-nut.kcl }, { "abs_path": false, - "commentStart": 1103, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1103, + "commentStart": 0, "end": 0, "name": "diameter", "start": 0, @@ -1214,10 +1109,10 @@ description: Result of parsing hex-nut.kcl ], "callee": { "abs_path": false, - "commentStart": 1077, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1077, + "commentStart": 0, "end": 0, "name": "hexNut", "start": 0, @@ -1227,7 +1122,7 @@ description: Result of parsing hex-nut.kcl "start": 0, "type": "Name" }, - "commentStart": 1077, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1250,7 +1145,7 @@ description: Result of parsing hex-nut.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 318, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -1265,10 +1160,10 @@ description: Result of parsing hex-nut.kcl ], "properties": [ { - "commentStart": 327, + "commentStart": 0, "end": 0, "key": { - "commentStart": 327, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -1278,10 +1173,10 @@ description: Result of parsing hex-nut.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 347, + "commentStart": 0, "end": 0, "name": { - "commentStart": 347, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -1302,7 +1197,7 @@ description: Result of parsing hex-nut.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 350, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/hex-nut/ops.snap b/rust/kcl-lib/tests/kcl_samples/hex-nut/ops.snap index d3efc8d9b..eaa34747c 100644 --- a/rust/kcl-lib/tests/kcl_samples/hex-nut/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/hex-nut/ops.snap @@ -10,7 +10,7 @@ description: Operations executed hex-nut.kcl "name": "hexNut", "functionSourceRange": [ 504, - 1055, + 1020, 0 ], "unlabeledArg": null, @@ -20,7 +20,7 @@ description: Operations executed hex-nut.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_commands.snap index 7e6f3108a..de2e8614b 100644 --- a/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_commands.snap @@ -267,8 +267,9 @@ description: Artifact commands i-beam.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": 72.00000000000001, - "faces": null + "distance": 72.0, + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_graph_flowchart.snap.md index 8791eef80..ab5aa44a7 100644 --- a/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/i-beam/artifact_graph_flowchart.snap.md @@ -1,15 +1,15 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[462, 500, 0]"] - 3["Segment
[506, 537, 0]"] - 4["Segment
[543, 575, 0]"] - 5["Segment
[581, 631, 0]"] - 6["Segment
[637, 691, 0]"] - 7["Segment
[697, 719, 0]"] + 2["Path
[463, 501, 0]"] + 3["Segment
[507, 538, 0]"] + 4["Segment
[544, 576, 0]"] + 5["Segment
[582, 632, 0]"] + 6["Segment
[638, 684, 0]"] + 7["Segment
[690, 712, 0]"] end - 1["Plane
[438, 456, 0]"] - 8["Sweep Extrusion
[773, 801, 0]"] + 1["Plane
[439, 457, 0]"] + 8["Sweep Extrusion
[766, 794, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/i-beam/ast.snap b/rust/kcl-lib/tests/kcl_samples/i-beam/ast.snap index 22707a203..2a7150c8e 100644 --- a/rust/kcl-lib/tests/kcl_samples/i-beam/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/i-beam/ast.snap @@ -6,59 +6,52 @@ description: Result of parsing i-beam.kcl "Ok": { "body": [ { - "commentStart": 160, + "commentStart": 0, "declaration": { - "commentStart": 183, + "commentStart": 0, "end": 0, "id": { - "commentStart": 183, + "commentStart": 0, "end": 0, "name": "beamLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 196, - "end": 0, - "left": { - "commentStart": 196, - "end": 0, - "raw": "6", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 6.0, - "suffix": "None" - } - }, - "operator": "*", - "right": { - "arguments": [], - "callee": { - "abs_path": false, - "commentStart": 200, + "arguments": [ + { + "commentStart": 0, "end": 0, - "name": { - "commentStart": 200, - "end": 0, - "name": "ft", - "start": 0, - "type": "Identifier" - }, - "path": [], + "raw": "6", "start": 0, - "type": "Name" - }, - "commentStart": 200, + "type": "Literal", + "type": "Literal", + "value": { + "value": 6.0, + "suffix": "None" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "fromFt", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "Name" }, + "commentStart": 0, + "end": 0, "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "CallExpression", + "type": "CallExpression" }, "start": 0, "type": "VariableDeclarator" @@ -73,19 +66,19 @@ description: Result of parsing i-beam.kcl "type": "VariableDeclaration" }, { - "commentStart": 205, + "commentStart": 0, "declaration": { - "commentStart": 205, + "commentStart": 0, "end": 0, "id": { - "commentStart": 205, + "commentStart": 0, "end": 0, "name": "beamHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 218, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -106,19 +99,19 @@ description: Result of parsing i-beam.kcl "type": "VariableDeclaration" }, { - "commentStart": 220, + "commentStart": 0, "declaration": { - "commentStart": 220, + "commentStart": 0, "end": 0, "id": { - "commentStart": 220, + "commentStart": 0, "end": 0, "name": "flangeWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 234, + "commentStart": 0, "end": 0, "raw": "2.663", "start": 0, @@ -139,19 +132,19 @@ description: Result of parsing i-beam.kcl "type": "VariableDeclaration" }, { - "commentStart": 240, + "commentStart": 0, "declaration": { - "commentStart": 240, + "commentStart": 0, "end": 0, "id": { - "commentStart": 240, + "commentStart": 0, "end": 0, "name": "flangeThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 258, + "commentStart": 0, "end": 0, "raw": "0.293", "start": 0, @@ -172,19 +165,19 @@ description: Result of parsing i-beam.kcl "type": "VariableDeclaration" }, { - "commentStart": 264, + "commentStart": 0, "declaration": { - "commentStart": 264, + "commentStart": 0, "end": 0, "id": { - "commentStart": 264, + "commentStart": 0, "end": 0, "name": "webThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 279, + "commentStart": 0, "end": 0, "raw": "0.193", "start": 0, @@ -205,19 +198,19 @@ description: Result of parsing i-beam.kcl "type": "VariableDeclaration" }, { - "commentStart": 285, + "commentStart": 0, "declaration": { - "commentStart": 285, + "commentStart": 0, "end": 0, "id": { - "commentStart": 285, + "commentStart": 0, "end": 0, "name": "rootRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 298, + "commentStart": 0, "end": 0, "raw": "0.457", "start": 0, @@ -238,12 +231,12 @@ description: Result of parsing i-beam.kcl "type": "VariableDeclaration" }, { - "commentStart": 303, + "commentStart": 0, "declaration": { - "commentStart": 430, + "commentStart": 0, "end": 0, "id": { - "commentStart": 430, + "commentStart": 0, "end": 0, "name": "iBeam", "start": 0, @@ -256,10 +249,10 @@ description: Result of parsing i-beam.kcl { "argument": { "abs_path": false, - "commentStart": 453, + "commentStart": 0, "end": 0, "name": { - "commentStart": 453, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -270,7 +263,7 @@ description: Result of parsing i-beam.kcl "type": "Name", "type": "Name" }, - "commentStart": 452, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -280,10 +273,10 @@ description: Result of parsing i-beam.kcl ], "callee": { "abs_path": false, - "commentStart": 438, + "commentStart": 0, "end": 0, "name": { - "commentStart": 438, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -293,7 +286,7 @@ description: Result of parsing i-beam.kcl "start": 0, "type": "Name" }, - "commentStart": 438, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -302,10 +295,10 @@ description: Result of parsing i-beam.kcl { "arguments": [ { - "commentStart": 477, + "commentStart": 0, "elements": [ { - "commentStart": 478, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -317,14 +310,14 @@ description: Result of parsing i-beam.kcl } }, { - "commentStart": 481, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 481, + "commentStart": 0, "end": 0, "name": { - "commentStart": 481, + "commentStart": 0, "end": 0, "name": "beamHeight", "start": 0, @@ -337,7 +330,7 @@ description: Result of parsing i-beam.kcl }, "operator": "/", "right": { - "commentStart": 494, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -359,7 +352,7 @@ description: Result of parsing i-beam.kcl "type": "ArrayExpression" }, { - "commentStart": 498, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -368,10 +361,10 @@ description: Result of parsing i-beam.kcl ], "callee": { "abs_path": false, - "commentStart": 462, + "commentStart": 0, "end": 0, "name": { - "commentStart": 462, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -381,7 +374,7 @@ description: Result of parsing i-beam.kcl "start": 0, "type": "Name" }, - "commentStart": 462, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -392,21 +385,21 @@ description: Result of parsing i-beam.kcl { "type": "LabeledArg", "label": { - "commentStart": 512, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 521, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 521, + "commentStart": 0, "end": 0, "name": { - "commentStart": 521, + "commentStart": 0, "end": 0, "name": "flangeWidth", "start": 0, @@ -419,7 +412,7 @@ description: Result of parsing i-beam.kcl }, "operator": "/", "right": { - "commentStart": 535, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -438,10 +431,10 @@ description: Result of parsing i-beam.kcl ], "callee": { "abs_path": false, - "commentStart": 506, + "commentStart": 0, "end": 0, "name": { - "commentStart": 506, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -451,7 +444,7 @@ description: Result of parsing i-beam.kcl "start": 0, "type": "Name" }, - "commentStart": 506, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -463,7 +456,7 @@ description: Result of parsing i-beam.kcl { "type": "LabeledArg", "label": { - "commentStart": 549, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -472,10 +465,10 @@ description: Result of parsing i-beam.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 559, + "commentStart": 0, "end": 0, "name": { - "commentStart": 559, + "commentStart": 0, "end": 0, "name": "flangeThickness", "start": 0, @@ -486,7 +479,7 @@ description: Result of parsing i-beam.kcl "type": "Name", "type": "Name" }, - "commentStart": 558, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -497,10 +490,10 @@ description: Result of parsing i-beam.kcl ], "callee": { "abs_path": false, - "commentStart": 543, + "commentStart": 0, "end": 0, "name": { - "commentStart": 543, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -510,7 +503,7 @@ description: Result of parsing i-beam.kcl "start": 0, "type": "Name" }, - "commentStart": 543, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -522,24 +515,24 @@ description: Result of parsing i-beam.kcl { "type": "LabeledArg", "label": { - "commentStart": 587, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 601, + "commentStart": 0, "end": 0, "left": { - "commentStart": 601, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 601, + "commentStart": 0, "end": 0, "name": { - "commentStart": 601, + "commentStart": 0, "end": 0, "name": "webThickness", "start": 0, @@ -552,7 +545,7 @@ description: Result of parsing i-beam.kcl }, "operator": "/", "right": { - "commentStart": 616, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -570,10 +563,10 @@ description: Result of parsing i-beam.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 620, + "commentStart": 0, "end": 0, "name": { - "commentStart": 620, + "commentStart": 0, "end": 0, "name": "rootRadius", "start": 0, @@ -592,10 +585,10 @@ description: Result of parsing i-beam.kcl ], "callee": { "abs_path": false, - "commentStart": 581, + "commentStart": 0, "end": 0, "name": { - "commentStart": 581, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -605,7 +598,7 @@ description: Result of parsing i-beam.kcl "start": 0, "type": "Name" }, - "commentStart": 581, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -615,82 +608,60 @@ description: Result of parsing i-beam.kcl { "arguments": [ { - "commentStart": 651, - "end": 0, - "properties": [ - { - "commentStart": 653, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 653, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, + "name": "rootRadius", "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 662, - "end": 0, - "name": { - "commentStart": 662, - "end": 0, - "name": "rootRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "Identifier" }, - { - "commentStart": 674, - "end": 0, - "key": { - "commentStart": 674, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 683, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 689, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "90", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + } } ], "callee": { "abs_path": false, - "commentStart": 637, + "commentStart": 0, "end": 0, "name": { - "commentStart": 637, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -700,25 +671,26 @@ description: Result of parsing i-beam.kcl "start": 0, "type": "Name" }, - "commentStart": 637, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 703, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 717, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -733,10 +705,10 @@ description: Result of parsing i-beam.kcl ], "callee": { "abs_path": false, - "commentStart": 697, + "commentStart": 0, "end": 0, "name": { - "commentStart": 697, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -746,7 +718,7 @@ description: Result of parsing i-beam.kcl "start": 0, "type": "Name" }, - "commentStart": 697, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -758,7 +730,7 @@ description: Result of parsing i-beam.kcl { "type": "LabeledArg", "label": { - "commentStart": 734, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -766,10 +738,10 @@ description: Result of parsing i-beam.kcl }, "arg": { "abs_path": false, - "commentStart": 741, + "commentStart": 0, "end": 0, "name": { - "commentStart": 741, + "commentStart": 0, "end": 0, "name": "X", "start": 0, @@ -784,10 +756,10 @@ description: Result of parsing i-beam.kcl ], "callee": { "abs_path": false, - "commentStart": 725, + "commentStart": 0, "end": 0, "name": { - "commentStart": 725, + "commentStart": 0, "end": 0, "name": "mirror2d", "start": 0, @@ -797,7 +769,7 @@ description: Result of parsing i-beam.kcl "start": 0, "type": "Name" }, - "commentStart": 725, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -809,7 +781,7 @@ description: Result of parsing i-beam.kcl { "type": "LabeledArg", "label": { - "commentStart": 758, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -817,10 +789,10 @@ description: Result of parsing i-beam.kcl }, "arg": { "abs_path": false, - "commentStart": 765, + "commentStart": 0, "end": 0, "name": { - "commentStart": 765, + "commentStart": 0, "end": 0, "name": "Y", "start": 0, @@ -835,10 +807,10 @@ description: Result of parsing i-beam.kcl ], "callee": { "abs_path": false, - "commentStart": 749, + "commentStart": 0, "end": 0, "name": { - "commentStart": 749, + "commentStart": 0, "end": 0, "name": "mirror2d", "start": 0, @@ -848,7 +820,7 @@ description: Result of parsing i-beam.kcl "start": 0, "type": "Name" }, - "commentStart": 749, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -860,7 +832,7 @@ description: Result of parsing i-beam.kcl { "type": "LabeledArg", "label": { - "commentStart": 781, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -868,10 +840,10 @@ description: Result of parsing i-beam.kcl }, "arg": { "abs_path": false, - "commentStart": 790, + "commentStart": 0, "end": 0, "name": { - "commentStart": 790, + "commentStart": 0, "end": 0, "name": "beamLength", "start": 0, @@ -886,10 +858,10 @@ description: Result of parsing i-beam.kcl ], "callee": { "abs_path": false, - "commentStart": 773, + "commentStart": 0, "end": 0, "name": { - "commentStart": 773, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -899,7 +871,7 @@ description: Result of parsing i-beam.kcl "start": 0, "type": "Name" }, - "commentStart": 773, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -907,7 +879,7 @@ description: Result of parsing i-beam.kcl "unlabeled": null } ], - "commentStart": 438, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -935,7 +907,7 @@ description: Result of parsing i-beam.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 128, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -950,10 +922,10 @@ description: Result of parsing i-beam.kcl ], "properties": [ { - "commentStart": 137, + "commentStart": 0, "end": 0, "key": { - "commentStart": 137, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -963,10 +935,10 @@ description: Result of parsing i-beam.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 157, + "commentStart": 0, "end": 0, "name": { - "commentStart": 157, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -987,7 +959,7 @@ description: Result of parsing i-beam.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 160, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/i-beam/ops.snap b/rust/kcl-lib/tests/kcl_samples/i-beam/ops.snap index f721eb5ec..6a23fb2ba 100644 --- a/rust/kcl-lib/tests/kcl_samples/i-beam/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/i-beam/ops.snap @@ -5,7 +5,7 @@ description: Operations executed i-beam.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -23,9 +23,15 @@ description: Operations executed i-beam.kcl "length": { "value": { "type": "Number", - "value": 72.00000000000001, + "value": 72.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] diff --git a/rust/kcl-lib/tests/kcl_samples/i-beam/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/i-beam/program_memory.snap index a764460ad..d178fdb9e 100644 --- a/rust/kcl-lib/tests/kcl_samples/i-beam/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/i-beam/program_memory.snap @@ -20,7 +20,13 @@ description: Variables in memory after executing i-beam.kcl "type": "Number", "value": 72.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "flangeThickness": { @@ -169,22 +175,34 @@ description: Variables in memory after executing i-beam.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -214,7 +232,7 @@ description: Variables in memory after executing i-beam.kcl "type": "Inches" } }, - "height": 72.00000000000001, + "height": 72.0, "startCapId": "[uuid]", "endCapId": "[uuid]", "units": { diff --git a/rust/kcl-lib/tests/kcl_samples/keyboard/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/keyboard/artifact_commands.snap index b715a9bec..b6264b93c 100644 --- a/rust/kcl-lib/tests/kcl_samples/keyboard/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/keyboard/artifact_commands.snap @@ -204,7 +204,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 13.6, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -703,7 +704,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -769,7 +771,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -835,7 +838,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -901,7 +905,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1188,7 +1193,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1642,7 +1648,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2155,7 +2162,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2609,7 +2617,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3063,7 +3072,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3517,7 +3527,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3971,7 +3982,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4425,7 +4437,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4879,7 +4892,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5595,7 +5609,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6049,7 +6064,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6503,7 +6519,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -7248,7 +7265,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -7702,7 +7720,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -8156,7 +8175,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -8930,7 +8950,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -9384,7 +9405,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -10187,7 +10209,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -10641,7 +10664,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -11095,7 +11119,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -11869,7 +11894,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": 0.1, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -12437,7 +12463,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": -0.03, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -12967,7 +12994,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": -0.03, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -13257,7 +13285,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": -0.03, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -13547,7 +13576,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": -0.03, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -13837,7 +13867,8 @@ description: Artifact commands keyboard.kcl "type": "extrude", "target": "[uuid]", "distance": -0.03, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/keyboard/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/keyboard/artifact_graph_flowchart.snap.md index 0862984ab..4c9ca922b 100644 --- a/rust/kcl-lib/tests/kcl_samples/keyboard/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/keyboard/artifact_graph_flowchart.snap.md @@ -3,359 +3,359 @@ flowchart LR subgraph path2 [Path] 2["Path
[555, 580, 0]"] 3["Segment
[586, 625, 0]"] - 4["Segment
[631, 689, 0]"] - 5["Segment
[695, 738, 0]"] - 6["Segment
[744, 814, 0]"] - 7["Segment
[820, 827, 0]"] + 4["Segment
[631, 707, 0]"] + 5["Segment
[713, 756, 0]"] + 6["Segment
[762, 832, 0]"] + 7["Segment
[838, 845, 0]"] 8[Solid2d] end subgraph path28 [Path] - 28["Path
[1178, 1232, 0]"] - 29["Segment
[1178, 1232, 0]"] + 28["Path
[1203, 1257, 0]"] + 29["Segment
[1203, 1257, 0]"] 30[Solid2d] end subgraph path31 [Path] - 31["Path
[1246, 1299, 0]"] - 32["Segment
[1246, 1299, 0]"] + 31["Path
[1271, 1324, 0]"] + 32["Segment
[1271, 1324, 0]"] 33[Solid2d] end subgraph path34 [Path] - 34["Path
[1313, 1373, 0]"] - 35["Segment
[1313, 1373, 0]"] + 34["Path
[1338, 1398, 0]"] + 35["Segment
[1338, 1398, 0]"] 36[Solid2d] end subgraph path37 [Path] - 37["Path
[1387, 1446, 0]"] - 38["Segment
[1387, 1446, 0]"] + 37["Path
[1412, 1471, 0]"] + 38["Segment
[1412, 1471, 0]"] 39[Solid2d] end subgraph path61 [Path] - 61["Path
[1992, 2051, 0]"] - 62["Segment
[2059, 2151, 0]"] - 63["Segment
[2159, 2215, 0]"] - 64["Segment
[2223, 2270, 0]"] - 65["Segment
[2278, 2394, 0]"] - 66["Segment
[2402, 2449, 0]"] - 67["Segment
[2457, 2583, 0]"] - 68["Segment
[2591, 2638, 0]"] - 69["Segment
[2646, 2731, 0]"] - 70["Segment
[2739, 2746, 0]"] + 61["Path
[1993, 2052, 0]"] + 62["Segment
[2060, 2152, 0]"] + 63["Segment
[2160, 2234, 0]"] + 64["Segment
[2242, 2281, 0]"] + 65["Segment
[2289, 2396, 0]"] + 66["Segment
[2404, 2443, 0]"] + 67["Segment
[2451, 2568, 0]"] + 68["Segment
[2576, 2615, 0]"] + 69["Segment
[2623, 2708, 0]"] + 70["Segment
[2716, 2723, 0]"] 71[Solid2d] end subgraph path100 [Path] - 100["Path
[1992, 2051, 0]"] - 101["Segment
[2059, 2151, 0]"] - 102["Segment
[2159, 2215, 0]"] - 103["Segment
[2223, 2270, 0]"] - 104["Segment
[2278, 2394, 0]"] - 105["Segment
[2402, 2449, 0]"] - 106["Segment
[2457, 2583, 0]"] - 107["Segment
[2591, 2638, 0]"] - 108["Segment
[2646, 2731, 0]"] - 109["Segment
[2739, 2746, 0]"] + 100["Path
[1993, 2052, 0]"] + 101["Segment
[2060, 2152, 0]"] + 102["Segment
[2160, 2234, 0]"] + 103["Segment
[2242, 2281, 0]"] + 104["Segment
[2289, 2396, 0]"] + 105["Segment
[2404, 2443, 0]"] + 106["Segment
[2451, 2568, 0]"] + 107["Segment
[2576, 2615, 0]"] + 108["Segment
[2623, 2708, 0]"] + 109["Segment
[2716, 2723, 0]"] 110[Solid2d] end subgraph path139 [Path] - 139["Path
[1992, 2051, 0]"] - 140["Segment
[2059, 2151, 0]"] - 141["Segment
[2159, 2215, 0]"] - 142["Segment
[2223, 2270, 0]"] - 143["Segment
[2278, 2394, 0]"] - 144["Segment
[2402, 2449, 0]"] - 145["Segment
[2457, 2583, 0]"] - 146["Segment
[2591, 2638, 0]"] - 147["Segment
[2646, 2731, 0]"] - 148["Segment
[2739, 2746, 0]"] + 139["Path
[1993, 2052, 0]"] + 140["Segment
[2060, 2152, 0]"] + 141["Segment
[2160, 2234, 0]"] + 142["Segment
[2242, 2281, 0]"] + 143["Segment
[2289, 2396, 0]"] + 144["Segment
[2404, 2443, 0]"] + 145["Segment
[2451, 2568, 0]"] + 146["Segment
[2576, 2615, 0]"] + 147["Segment
[2623, 2708, 0]"] + 148["Segment
[2716, 2723, 0]"] 149[Solid2d] end subgraph path178 [Path] - 178["Path
[1992, 2051, 0]"] - 179["Segment
[2059, 2151, 0]"] - 180["Segment
[2159, 2215, 0]"] - 181["Segment
[2223, 2270, 0]"] - 182["Segment
[2278, 2394, 0]"] - 183["Segment
[2402, 2449, 0]"] - 184["Segment
[2457, 2583, 0]"] - 185["Segment
[2591, 2638, 0]"] - 186["Segment
[2646, 2731, 0]"] - 187["Segment
[2739, 2746, 0]"] + 178["Path
[1993, 2052, 0]"] + 179["Segment
[2060, 2152, 0]"] + 180["Segment
[2160, 2234, 0]"] + 181["Segment
[2242, 2281, 0]"] + 182["Segment
[2289, 2396, 0]"] + 183["Segment
[2404, 2443, 0]"] + 184["Segment
[2451, 2568, 0]"] + 185["Segment
[2576, 2615, 0]"] + 186["Segment
[2623, 2708, 0]"] + 187["Segment
[2716, 2723, 0]"] 188[Solid2d] end subgraph path217 [Path] - 217["Path
[1992, 2051, 0]"] - 218["Segment
[2059, 2151, 0]"] - 219["Segment
[2159, 2215, 0]"] - 220["Segment
[2223, 2270, 0]"] - 221["Segment
[2278, 2394, 0]"] - 222["Segment
[2402, 2449, 0]"] - 223["Segment
[2457, 2583, 0]"] - 224["Segment
[2591, 2638, 0]"] - 225["Segment
[2646, 2731, 0]"] - 226["Segment
[2739, 2746, 0]"] + 217["Path
[1993, 2052, 0]"] + 218["Segment
[2060, 2152, 0]"] + 219["Segment
[2160, 2234, 0]"] + 220["Segment
[2242, 2281, 0]"] + 221["Segment
[2289, 2396, 0]"] + 222["Segment
[2404, 2443, 0]"] + 223["Segment
[2451, 2568, 0]"] + 224["Segment
[2576, 2615, 0]"] + 225["Segment
[2623, 2708, 0]"] + 226["Segment
[2716, 2723, 0]"] 227[Solid2d] end subgraph path256 [Path] - 256["Path
[1992, 2051, 0]"] - 257["Segment
[2059, 2151, 0]"] - 258["Segment
[2159, 2215, 0]"] - 259["Segment
[2223, 2270, 0]"] - 260["Segment
[2278, 2394, 0]"] - 261["Segment
[2402, 2449, 0]"] - 262["Segment
[2457, 2583, 0]"] - 263["Segment
[2591, 2638, 0]"] - 264["Segment
[2646, 2731, 0]"] - 265["Segment
[2739, 2746, 0]"] + 256["Path
[1993, 2052, 0]"] + 257["Segment
[2060, 2152, 0]"] + 258["Segment
[2160, 2234, 0]"] + 259["Segment
[2242, 2281, 0]"] + 260["Segment
[2289, 2396, 0]"] + 261["Segment
[2404, 2443, 0]"] + 262["Segment
[2451, 2568, 0]"] + 263["Segment
[2576, 2615, 0]"] + 264["Segment
[2623, 2708, 0]"] + 265["Segment
[2716, 2723, 0]"] 266[Solid2d] end subgraph path295 [Path] - 295["Path
[1992, 2051, 0]"] - 296["Segment
[2059, 2151, 0]"] - 297["Segment
[2159, 2215, 0]"] - 298["Segment
[2223, 2270, 0]"] - 299["Segment
[2278, 2394, 0]"] - 300["Segment
[2402, 2449, 0]"] - 301["Segment
[2457, 2583, 0]"] - 302["Segment
[2591, 2638, 0]"] - 303["Segment
[2646, 2731, 0]"] - 304["Segment
[2739, 2746, 0]"] + 295["Path
[1993, 2052, 0]"] + 296["Segment
[2060, 2152, 0]"] + 297["Segment
[2160, 2234, 0]"] + 298["Segment
[2242, 2281, 0]"] + 299["Segment
[2289, 2396, 0]"] + 300["Segment
[2404, 2443, 0]"] + 301["Segment
[2451, 2568, 0]"] + 302["Segment
[2576, 2615, 0]"] + 303["Segment
[2623, 2708, 0]"] + 304["Segment
[2716, 2723, 0]"] 305[Solid2d] end subgraph path334 [Path] - 334["Path
[1992, 2051, 0]"] - 335["Segment
[2059, 2151, 0]"] - 336["Segment
[2159, 2215, 0]"] - 337["Segment
[2223, 2270, 0]"] - 338["Segment
[2278, 2394, 0]"] - 339["Segment
[2402, 2449, 0]"] - 340["Segment
[2457, 2583, 0]"] - 341["Segment
[2591, 2638, 0]"] - 342["Segment
[2646, 2731, 0]"] - 343["Segment
[2739, 2746, 0]"] + 334["Path
[1993, 2052, 0]"] + 335["Segment
[2060, 2152, 0]"] + 336["Segment
[2160, 2234, 0]"] + 337["Segment
[2242, 2281, 0]"] + 338["Segment
[2289, 2396, 0]"] + 339["Segment
[2404, 2443, 0]"] + 340["Segment
[2451, 2568, 0]"] + 341["Segment
[2576, 2615, 0]"] + 342["Segment
[2623, 2708, 0]"] + 343["Segment
[2716, 2723, 0]"] 344[Solid2d] end subgraph path373 [Path] - 373["Path
[1992, 2051, 0]"] - 374["Segment
[2059, 2151, 0]"] - 375["Segment
[2159, 2215, 0]"] - 376["Segment
[2223, 2270, 0]"] - 377["Segment
[2278, 2394, 0]"] - 378["Segment
[2402, 2449, 0]"] - 379["Segment
[2457, 2583, 0]"] - 380["Segment
[2591, 2638, 0]"] - 381["Segment
[2646, 2731, 0]"] - 382["Segment
[2739, 2746, 0]"] + 373["Path
[1993, 2052, 0]"] + 374["Segment
[2060, 2152, 0]"] + 375["Segment
[2160, 2234, 0]"] + 376["Segment
[2242, 2281, 0]"] + 377["Segment
[2289, 2396, 0]"] + 378["Segment
[2404, 2443, 0]"] + 379["Segment
[2451, 2568, 0]"] + 380["Segment
[2576, 2615, 0]"] + 381["Segment
[2623, 2708, 0]"] + 382["Segment
[2716, 2723, 0]"] 383[Solid2d] end subgraph path412 [Path] - 412["Path
[1992, 2051, 0]"] - 413["Segment
[2059, 2151, 0]"] - 414["Segment
[2159, 2215, 0]"] - 415["Segment
[2223, 2270, 0]"] - 416["Segment
[2278, 2394, 0]"] - 417["Segment
[2402, 2449, 0]"] - 418["Segment
[2457, 2583, 0]"] - 419["Segment
[2591, 2638, 0]"] - 420["Segment
[2646, 2731, 0]"] - 421["Segment
[2739, 2746, 0]"] + 412["Path
[1993, 2052, 0]"] + 413["Segment
[2060, 2152, 0]"] + 414["Segment
[2160, 2234, 0]"] + 415["Segment
[2242, 2281, 0]"] + 416["Segment
[2289, 2396, 0]"] + 417["Segment
[2404, 2443, 0]"] + 418["Segment
[2451, 2568, 0]"] + 419["Segment
[2576, 2615, 0]"] + 420["Segment
[2623, 2708, 0]"] + 421["Segment
[2716, 2723, 0]"] 422[Solid2d] end subgraph path451 [Path] - 451["Path
[1992, 2051, 0]"] - 452["Segment
[2059, 2151, 0]"] - 453["Segment
[2159, 2215, 0]"] - 454["Segment
[2223, 2270, 0]"] - 455["Segment
[2278, 2394, 0]"] - 456["Segment
[2402, 2449, 0]"] - 457["Segment
[2457, 2583, 0]"] - 458["Segment
[2591, 2638, 0]"] - 459["Segment
[2646, 2731, 0]"] - 460["Segment
[2739, 2746, 0]"] + 451["Path
[1993, 2052, 0]"] + 452["Segment
[2060, 2152, 0]"] + 453["Segment
[2160, 2234, 0]"] + 454["Segment
[2242, 2281, 0]"] + 455["Segment
[2289, 2396, 0]"] + 456["Segment
[2404, 2443, 0]"] + 457["Segment
[2451, 2568, 0]"] + 458["Segment
[2576, 2615, 0]"] + 459["Segment
[2623, 2708, 0]"] + 460["Segment
[2716, 2723, 0]"] 461[Solid2d] end subgraph path490 [Path] - 490["Path
[1992, 2051, 0]"] - 491["Segment
[2059, 2151, 0]"] - 492["Segment
[2159, 2215, 0]"] - 493["Segment
[2223, 2270, 0]"] - 494["Segment
[2278, 2394, 0]"] - 495["Segment
[2402, 2449, 0]"] - 496["Segment
[2457, 2583, 0]"] - 497["Segment
[2591, 2638, 0]"] - 498["Segment
[2646, 2731, 0]"] - 499["Segment
[2739, 2746, 0]"] + 490["Path
[1993, 2052, 0]"] + 491["Segment
[2060, 2152, 0]"] + 492["Segment
[2160, 2234, 0]"] + 493["Segment
[2242, 2281, 0]"] + 494["Segment
[2289, 2396, 0]"] + 495["Segment
[2404, 2443, 0]"] + 496["Segment
[2451, 2568, 0]"] + 497["Segment
[2576, 2615, 0]"] + 498["Segment
[2623, 2708, 0]"] + 499["Segment
[2716, 2723, 0]"] 500[Solid2d] end subgraph path529 [Path] - 529["Path
[1992, 2051, 0]"] - 530["Segment
[2059, 2151, 0]"] - 531["Segment
[2159, 2215, 0]"] - 532["Segment
[2223, 2270, 0]"] - 533["Segment
[2278, 2394, 0]"] - 534["Segment
[2402, 2449, 0]"] - 535["Segment
[2457, 2583, 0]"] - 536["Segment
[2591, 2638, 0]"] - 537["Segment
[2646, 2731, 0]"] - 538["Segment
[2739, 2746, 0]"] + 529["Path
[1993, 2052, 0]"] + 530["Segment
[2060, 2152, 0]"] + 531["Segment
[2160, 2234, 0]"] + 532["Segment
[2242, 2281, 0]"] + 533["Segment
[2289, 2396, 0]"] + 534["Segment
[2404, 2443, 0]"] + 535["Segment
[2451, 2568, 0]"] + 536["Segment
[2576, 2615, 0]"] + 537["Segment
[2623, 2708, 0]"] + 538["Segment
[2716, 2723, 0]"] 539[Solid2d] end subgraph path568 [Path] - 568["Path
[1992, 2051, 0]"] - 569["Segment
[2059, 2151, 0]"] - 570["Segment
[2159, 2215, 0]"] - 571["Segment
[2223, 2270, 0]"] - 572["Segment
[2278, 2394, 0]"] - 573["Segment
[2402, 2449, 0]"] - 574["Segment
[2457, 2583, 0]"] - 575["Segment
[2591, 2638, 0]"] - 576["Segment
[2646, 2731, 0]"] - 577["Segment
[2739, 2746, 0]"] + 568["Path
[1993, 2052, 0]"] + 569["Segment
[2060, 2152, 0]"] + 570["Segment
[2160, 2234, 0]"] + 571["Segment
[2242, 2281, 0]"] + 572["Segment
[2289, 2396, 0]"] + 573["Segment
[2404, 2443, 0]"] + 574["Segment
[2451, 2568, 0]"] + 575["Segment
[2576, 2615, 0]"] + 576["Segment
[2623, 2708, 0]"] + 577["Segment
[2716, 2723, 0]"] 578[Solid2d] end subgraph path607 [Path] - 607["Path
[1992, 2051, 0]"] - 608["Segment
[2059, 2151, 0]"] - 609["Segment
[2159, 2215, 0]"] - 610["Segment
[2223, 2270, 0]"] - 611["Segment
[2278, 2394, 0]"] - 612["Segment
[2402, 2449, 0]"] - 613["Segment
[2457, 2583, 0]"] - 614["Segment
[2591, 2638, 0]"] - 615["Segment
[2646, 2731, 0]"] - 616["Segment
[2739, 2746, 0]"] + 607["Path
[1993, 2052, 0]"] + 608["Segment
[2060, 2152, 0]"] + 609["Segment
[2160, 2234, 0]"] + 610["Segment
[2242, 2281, 0]"] + 611["Segment
[2289, 2396, 0]"] + 612["Segment
[2404, 2443, 0]"] + 613["Segment
[2451, 2568, 0]"] + 614["Segment
[2576, 2615, 0]"] + 615["Segment
[2623, 2708, 0]"] + 616["Segment
[2716, 2723, 0]"] 617[Solid2d] end subgraph path646 [Path] - 646["Path
[1992, 2051, 0]"] - 647["Segment
[2059, 2151, 0]"] - 648["Segment
[2159, 2215, 0]"] - 649["Segment
[2223, 2270, 0]"] - 650["Segment
[2278, 2394, 0]"] - 651["Segment
[2402, 2449, 0]"] - 652["Segment
[2457, 2583, 0]"] - 653["Segment
[2591, 2638, 0]"] - 654["Segment
[2646, 2731, 0]"] - 655["Segment
[2739, 2746, 0]"] + 646["Path
[1993, 2052, 0]"] + 647["Segment
[2060, 2152, 0]"] + 648["Segment
[2160, 2234, 0]"] + 649["Segment
[2242, 2281, 0]"] + 650["Segment
[2289, 2396, 0]"] + 651["Segment
[2404, 2443, 0]"] + 652["Segment
[2451, 2568, 0]"] + 653["Segment
[2576, 2615, 0]"] + 654["Segment
[2623, 2708, 0]"] + 655["Segment
[2716, 2723, 0]"] 656[Solid2d] end subgraph path685 [Path] - 685["Path
[1992, 2051, 0]"] - 686["Segment
[2059, 2151, 0]"] - 687["Segment
[2159, 2215, 0]"] - 688["Segment
[2223, 2270, 0]"] - 689["Segment
[2278, 2394, 0]"] - 690["Segment
[2402, 2449, 0]"] - 691["Segment
[2457, 2583, 0]"] - 692["Segment
[2591, 2638, 0]"] - 693["Segment
[2646, 2731, 0]"] - 694["Segment
[2739, 2746, 0]"] + 685["Path
[1993, 2052, 0]"] + 686["Segment
[2060, 2152, 0]"] + 687["Segment
[2160, 2234, 0]"] + 688["Segment
[2242, 2281, 0]"] + 689["Segment
[2289, 2396, 0]"] + 690["Segment
[2404, 2443, 0]"] + 691["Segment
[2451, 2568, 0]"] + 692["Segment
[2576, 2615, 0]"] + 693["Segment
[2623, 2708, 0]"] + 694["Segment
[2716, 2723, 0]"] 695[Solid2d] end subgraph path724 [Path] - 724["Path
[1992, 2051, 0]"] - 725["Segment
[2059, 2151, 0]"] - 726["Segment
[2159, 2215, 0]"] - 727["Segment
[2223, 2270, 0]"] - 728["Segment
[2278, 2394, 0]"] - 729["Segment
[2402, 2449, 0]"] - 730["Segment
[2457, 2583, 0]"] - 731["Segment
[2591, 2638, 0]"] - 732["Segment
[2646, 2731, 0]"] - 733["Segment
[2739, 2746, 0]"] + 724["Path
[1993, 2052, 0]"] + 725["Segment
[2060, 2152, 0]"] + 726["Segment
[2160, 2234, 0]"] + 727["Segment
[2242, 2281, 0]"] + 728["Segment
[2289, 2396, 0]"] + 729["Segment
[2404, 2443, 0]"] + 730["Segment
[2451, 2568, 0]"] + 731["Segment
[2576, 2615, 0]"] + 732["Segment
[2623, 2708, 0]"] + 733["Segment
[2716, 2723, 0]"] 734[Solid2d] end subgraph path763 [Path] - 763["Path
[1992, 2051, 0]"] - 764["Segment
[2059, 2151, 0]"] - 765["Segment
[2159, 2215, 0]"] - 766["Segment
[2223, 2270, 0]"] - 767["Segment
[2278, 2394, 0]"] - 768["Segment
[2402, 2449, 0]"] - 769["Segment
[2457, 2583, 0]"] - 770["Segment
[2591, 2638, 0]"] - 771["Segment
[2646, 2731, 0]"] - 772["Segment
[2739, 2746, 0]"] + 763["Path
[1993, 2052, 0]"] + 764["Segment
[2060, 2152, 0]"] + 765["Segment
[2160, 2234, 0]"] + 766["Segment
[2242, 2281, 0]"] + 767["Segment
[2289, 2396, 0]"] + 768["Segment
[2404, 2443, 0]"] + 769["Segment
[2451, 2568, 0]"] + 770["Segment
[2576, 2615, 0]"] + 771["Segment
[2623, 2708, 0]"] + 772["Segment
[2716, 2723, 0]"] 773[Solid2d] end subgraph path802 [Path] - 802["Path
[1992, 2051, 0]"] - 803["Segment
[2059, 2151, 0]"] - 804["Segment
[2159, 2215, 0]"] - 805["Segment
[2223, 2270, 0]"] - 806["Segment
[2278, 2394, 0]"] - 807["Segment
[2402, 2449, 0]"] - 808["Segment
[2457, 2583, 0]"] - 809["Segment
[2591, 2638, 0]"] - 810["Segment
[2646, 2731, 0]"] - 811["Segment
[2739, 2746, 0]"] + 802["Path
[1993, 2052, 0]"] + 803["Segment
[2060, 2152, 0]"] + 804["Segment
[2160, 2234, 0]"] + 805["Segment
[2242, 2281, 0]"] + 806["Segment
[2289, 2396, 0]"] + 807["Segment
[2404, 2443, 0]"] + 808["Segment
[2451, 2568, 0]"] + 809["Segment
[2576, 2615, 0]"] + 810["Segment
[2623, 2708, 0]"] + 811["Segment
[2716, 2723, 0]"] 812[Solid2d] end subgraph path841 [Path] - 841["Path
[1992, 2051, 0]"] - 842["Segment
[2059, 2151, 0]"] - 843["Segment
[2159, 2215, 0]"] - 844["Segment
[2223, 2270, 0]"] - 845["Segment
[2278, 2394, 0]"] - 846["Segment
[2402, 2449, 0]"] - 847["Segment
[2457, 2583, 0]"] - 848["Segment
[2591, 2638, 0]"] - 849["Segment
[2646, 2731, 0]"] - 850["Segment
[2739, 2746, 0]"] + 841["Path
[1993, 2052, 0]"] + 842["Segment
[2060, 2152, 0]"] + 843["Segment
[2160, 2234, 0]"] + 844["Segment
[2242, 2281, 0]"] + 845["Segment
[2289, 2396, 0]"] + 846["Segment
[2404, 2443, 0]"] + 847["Segment
[2451, 2568, 0]"] + 848["Segment
[2576, 2615, 0]"] + 849["Segment
[2623, 2708, 0]"] + 850["Segment
[2716, 2723, 0]"] 851[Solid2d] end subgraph path880 [Path] - 880["Path
[5002, 5089, 0]"] - 881["Segment
[5097, 5126, 0]"] - 882["Segment
[5134, 5162, 0]"] - 883["Segment
[5170, 5267, 0]"] - 884["Segment
[5275, 5322, 0]"] - 885["Segment
[5330, 5358, 0]"] - 886["Segment
[5366, 5395, 0]"] - 887["Segment
[5403, 5432, 0]"] - 888["Segment
[5440, 5531, 0]"] - 889["Segment
[5539, 5567, 0]"] - 890["Segment
[5575, 5604, 0]"] - 891["Segment
[5612, 5700, 0]"] - 892["Segment
[5708, 5736, 0]"] - 893["Segment
[5744, 5778, 0]"] - 894["Segment
[5786, 5816, 0]"] - 895["Segment
[5824, 5933, 0]"] - 896["Segment
[5941, 5948, 0]"] + 880["Path
[4955, 5042, 0]"] + 881["Segment
[5050, 5079, 0]"] + 882["Segment
[5087, 5115, 0]"] + 883["Segment
[5123, 5201, 0]"] + 884["Segment
[5209, 5256, 0]"] + 885["Segment
[5264, 5292, 0]"] + 886["Segment
[5300, 5329, 0]"] + 887["Segment
[5337, 5366, 0]"] + 888["Segment
[5374, 5440, 0]"] + 889["Segment
[5448, 5476, 0]"] + 890["Segment
[5484, 5513, 0]"] + 891["Segment
[5521, 5583, 0]"] + 892["Segment
[5591, 5619, 0]"] + 893["Segment
[5627, 5661, 0]"] + 894["Segment
[5669, 5699, 0]"] + 895["Segment
[5707, 5816, 0]"] + 896["Segment
[5824, 5831, 0]"] 897[Solid2d] end subgraph path950 [Path] - 950["Path
[6148, 6246, 0]"] - 951["Segment
[6254, 6373, 0]"] - 952["Segment
[6381, 6435, 0]"] - 953["Segment
[6443, 6564, 0]"] - 954["Segment
[6572, 6579, 0]"] + 950["Path
[6031, 6129, 0]"] + 951["Segment
[6137, 6256, 0]"] + 952["Segment
[6264, 6311, 0]"] + 953["Segment
[6319, 6440, 0]"] + 954["Segment
[6448, 6455, 0]"] 955[Solid2d] end subgraph path972 [Path] - 972["Path
[6687, 6784, 0]"] - 973["Segment
[6792, 6911, 0]"] - 974["Segment
[6919, 6974, 0]"] - 975["Segment
[6982, 7103, 0]"] - 976["Segment
[7111, 7118, 0]"] + 972["Path
[6563, 6660, 0]"] + 973["Segment
[6668, 6787, 0]"] + 974["Segment
[6795, 6843, 0]"] + 975["Segment
[6851, 6972, 0]"] + 976["Segment
[6980, 6987, 0]"] 977[Solid2d] end subgraph path994 [Path] - 994["Path
[6148, 6246, 0]"] - 995["Segment
[6254, 6373, 0]"] - 996["Segment
[6381, 6435, 0]"] - 997["Segment
[6443, 6564, 0]"] - 998["Segment
[6572, 6579, 0]"] + 994["Path
[6031, 6129, 0]"] + 995["Segment
[6137, 6256, 0]"] + 996["Segment
[6264, 6311, 0]"] + 997["Segment
[6319, 6440, 0]"] + 998["Segment
[6448, 6455, 0]"] 999[Solid2d] end subgraph path1016 [Path] - 1016["Path
[6687, 6784, 0]"] - 1017["Segment
[6792, 6911, 0]"] - 1018["Segment
[6919, 6974, 0]"] - 1019["Segment
[6982, 7103, 0]"] - 1020["Segment
[7111, 7118, 0]"] + 1016["Path
[6563, 6660, 0]"] + 1017["Segment
[6668, 6787, 0]"] + 1018["Segment
[6795, 6843, 0]"] + 1019["Segment
[6851, 6972, 0]"] + 1020["Segment
[6980, 6987, 0]"] 1021[Solid2d] end 1["Plane
[532, 549, 0]"] - 9["Sweep Extrusion
[833, 855, 0]"] + 9["Sweep Extrusion
[851, 873, 0]"] 10[Wall] 11[Wall] 12[Wall] @@ -370,32 +370,32 @@ flowchart LR 21["SweepEdge Adjacent"] 22["SweepEdge Opposite"] 23["SweepEdge Adjacent"] - 24["EdgeCut Fillet
[896, 1053, 0]"] - 25["EdgeCut Fillet
[896, 1053, 0]"] - 26["EdgeCut Fillet
[896, 1053, 0]"] - 27["EdgeCut Fillet
[896, 1053, 0]"] - 40["Sweep Extrusion
[1447, 1545, 0]"] + 24["EdgeCut Fillet
[914, 1071, 0]"] + 25["EdgeCut Fillet
[914, 1071, 0]"] + 26["EdgeCut Fillet
[914, 1071, 0]"] + 27["EdgeCut Fillet
[914, 1071, 0]"] + 40["Sweep Extrusion
[1472, 1570, 0]"] 41[Wall] 42["Cap End"] 43["SweepEdge Opposite"] 44["SweepEdge Adjacent"] - 45["Sweep Extrusion
[1447, 1545, 0]"] + 45["Sweep Extrusion
[1472, 1570, 0]"] 46[Wall] 47["Cap End"] 48["SweepEdge Opposite"] 49["SweepEdge Adjacent"] - 50["Sweep Extrusion
[1447, 1545, 0]"] + 50["Sweep Extrusion
[1472, 1570, 0]"] 51[Wall] 52["Cap End"] 53["SweepEdge Opposite"] 54["SweepEdge Adjacent"] - 55["Sweep Extrusion
[1447, 1545, 0]"] + 55["Sweep Extrusion
[1472, 1570, 0]"] 56[Wall] 57["Cap End"] 58["SweepEdge Opposite"] 59["SweepEdge Adjacent"] - 60["Plane
[1953, 1976, 0]"] - 72["Sweep Extrusion
[2754, 2780, 0]"] + 60["Plane
[1954, 1977, 0]"] + 72["Sweep Extrusion
[2731, 2757, 0]"] 73[Wall] 74[Wall] 75[Wall] @@ -422,8 +422,8 @@ flowchart LR 96["SweepEdge Adjacent"] 97["SweepEdge Opposite"] 98["SweepEdge Adjacent"] - 99["Plane
[1953, 1976, 0]"] - 111["Sweep Extrusion
[2754, 2780, 0]"] + 99["Plane
[1954, 1977, 0]"] + 111["Sweep Extrusion
[2731, 2757, 0]"] 112[Wall] 113[Wall] 114[Wall] @@ -450,8 +450,8 @@ flowchart LR 135["SweepEdge Adjacent"] 136["SweepEdge Opposite"] 137["SweepEdge Adjacent"] - 138["Plane
[1953, 1976, 0]"] - 150["Sweep Extrusion
[2754, 2780, 0]"] + 138["Plane
[1954, 1977, 0]"] + 150["Sweep Extrusion
[2731, 2757, 0]"] 151[Wall] 152[Wall] 153[Wall] @@ -478,8 +478,8 @@ flowchart LR 174["SweepEdge Adjacent"] 175["SweepEdge Opposite"] 176["SweepEdge Adjacent"] - 177["Plane
[1953, 1976, 0]"] - 189["Sweep Extrusion
[2754, 2780, 0]"] + 177["Plane
[1954, 1977, 0]"] + 189["Sweep Extrusion
[2731, 2757, 0]"] 190[Wall] 191[Wall] 192[Wall] @@ -506,8 +506,8 @@ flowchart LR 213["SweepEdge Adjacent"] 214["SweepEdge Opposite"] 215["SweepEdge Adjacent"] - 216["Plane
[1953, 1976, 0]"] - 228["Sweep Extrusion
[2754, 2780, 0]"] + 216["Plane
[1954, 1977, 0]"] + 228["Sweep Extrusion
[2731, 2757, 0]"] 229[Wall] 230[Wall] 231[Wall] @@ -534,8 +534,8 @@ flowchart LR 252["SweepEdge Adjacent"] 253["SweepEdge Opposite"] 254["SweepEdge Adjacent"] - 255["Plane
[1953, 1976, 0]"] - 267["Sweep Extrusion
[2754, 2780, 0]"] + 255["Plane
[1954, 1977, 0]"] + 267["Sweep Extrusion
[2731, 2757, 0]"] 268[Wall] 269[Wall] 270[Wall] @@ -562,8 +562,8 @@ flowchart LR 291["SweepEdge Adjacent"] 292["SweepEdge Opposite"] 293["SweepEdge Adjacent"] - 294["Plane
[1953, 1976, 0]"] - 306["Sweep Extrusion
[2754, 2780, 0]"] + 294["Plane
[1954, 1977, 0]"] + 306["Sweep Extrusion
[2731, 2757, 0]"] 307[Wall] 308[Wall] 309[Wall] @@ -590,8 +590,8 @@ flowchart LR 330["SweepEdge Adjacent"] 331["SweepEdge Opposite"] 332["SweepEdge Adjacent"] - 333["Plane
[1953, 1976, 0]"] - 345["Sweep Extrusion
[2754, 2780, 0]"] + 333["Plane
[1954, 1977, 0]"] + 345["Sweep Extrusion
[2731, 2757, 0]"] 346[Wall] 347[Wall] 348[Wall] @@ -618,8 +618,8 @@ flowchart LR 369["SweepEdge Adjacent"] 370["SweepEdge Opposite"] 371["SweepEdge Adjacent"] - 372["Plane
[1953, 1976, 0]"] - 384["Sweep Extrusion
[2754, 2780, 0]"] + 372["Plane
[1954, 1977, 0]"] + 384["Sweep Extrusion
[2731, 2757, 0]"] 385[Wall] 386[Wall] 387[Wall] @@ -646,8 +646,8 @@ flowchart LR 408["SweepEdge Adjacent"] 409["SweepEdge Opposite"] 410["SweepEdge Adjacent"] - 411["Plane
[1953, 1976, 0]"] - 423["Sweep Extrusion
[2754, 2780, 0]"] + 411["Plane
[1954, 1977, 0]"] + 423["Sweep Extrusion
[2731, 2757, 0]"] 424[Wall] 425[Wall] 426[Wall] @@ -674,8 +674,8 @@ flowchart LR 447["SweepEdge Adjacent"] 448["SweepEdge Opposite"] 449["SweepEdge Adjacent"] - 450["Plane
[1953, 1976, 0]"] - 462["Sweep Extrusion
[2754, 2780, 0]"] + 450["Plane
[1954, 1977, 0]"] + 462["Sweep Extrusion
[2731, 2757, 0]"] 463[Wall] 464[Wall] 465[Wall] @@ -702,8 +702,8 @@ flowchart LR 486["SweepEdge Adjacent"] 487["SweepEdge Opposite"] 488["SweepEdge Adjacent"] - 489["Plane
[1953, 1976, 0]"] - 501["Sweep Extrusion
[2754, 2780, 0]"] + 489["Plane
[1954, 1977, 0]"] + 501["Sweep Extrusion
[2731, 2757, 0]"] 502[Wall] 503[Wall] 504[Wall] @@ -730,8 +730,8 @@ flowchart LR 525["SweepEdge Adjacent"] 526["SweepEdge Opposite"] 527["SweepEdge Adjacent"] - 528["Plane
[1953, 1976, 0]"] - 540["Sweep Extrusion
[2754, 2780, 0]"] + 528["Plane
[1954, 1977, 0]"] + 540["Sweep Extrusion
[2731, 2757, 0]"] 541[Wall] 542[Wall] 543[Wall] @@ -758,8 +758,8 @@ flowchart LR 564["SweepEdge Adjacent"] 565["SweepEdge Opposite"] 566["SweepEdge Adjacent"] - 567["Plane
[1953, 1976, 0]"] - 579["Sweep Extrusion
[2754, 2780, 0]"] + 567["Plane
[1954, 1977, 0]"] + 579["Sweep Extrusion
[2731, 2757, 0]"] 580[Wall] 581[Wall] 582[Wall] @@ -786,8 +786,8 @@ flowchart LR 603["SweepEdge Adjacent"] 604["SweepEdge Opposite"] 605["SweepEdge Adjacent"] - 606["Plane
[1953, 1976, 0]"] - 618["Sweep Extrusion
[2754, 2780, 0]"] + 606["Plane
[1954, 1977, 0]"] + 618["Sweep Extrusion
[2731, 2757, 0]"] 619[Wall] 620[Wall] 621[Wall] @@ -814,8 +814,8 @@ flowchart LR 642["SweepEdge Adjacent"] 643["SweepEdge Opposite"] 644["SweepEdge Adjacent"] - 645["Plane
[1953, 1976, 0]"] - 657["Sweep Extrusion
[2754, 2780, 0]"] + 645["Plane
[1954, 1977, 0]"] + 657["Sweep Extrusion
[2731, 2757, 0]"] 658[Wall] 659[Wall] 660[Wall] @@ -842,8 +842,8 @@ flowchart LR 681["SweepEdge Adjacent"] 682["SweepEdge Opposite"] 683["SweepEdge Adjacent"] - 684["Plane
[1953, 1976, 0]"] - 696["Sweep Extrusion
[2754, 2780, 0]"] + 684["Plane
[1954, 1977, 0]"] + 696["Sweep Extrusion
[2731, 2757, 0]"] 697[Wall] 698[Wall] 699[Wall] @@ -870,8 +870,8 @@ flowchart LR 720["SweepEdge Adjacent"] 721["SweepEdge Opposite"] 722["SweepEdge Adjacent"] - 723["Plane
[1953, 1976, 0]"] - 735["Sweep Extrusion
[2754, 2780, 0]"] + 723["Plane
[1954, 1977, 0]"] + 735["Sweep Extrusion
[2731, 2757, 0]"] 736[Wall] 737[Wall] 738[Wall] @@ -898,8 +898,8 @@ flowchart LR 759["SweepEdge Adjacent"] 760["SweepEdge Opposite"] 761["SweepEdge Adjacent"] - 762["Plane
[1953, 1976, 0]"] - 774["Sweep Extrusion
[2754, 2780, 0]"] + 762["Plane
[1954, 1977, 0]"] + 774["Sweep Extrusion
[2731, 2757, 0]"] 775[Wall] 776[Wall] 777[Wall] @@ -926,8 +926,8 @@ flowchart LR 798["SweepEdge Adjacent"] 799["SweepEdge Opposite"] 800["SweepEdge Adjacent"] - 801["Plane
[1953, 1976, 0]"] - 813["Sweep Extrusion
[2754, 2780, 0]"] + 801["Plane
[1954, 1977, 0]"] + 813["Sweep Extrusion
[2731, 2757, 0]"] 814[Wall] 815[Wall] 816[Wall] @@ -954,8 +954,8 @@ flowchart LR 837["SweepEdge Adjacent"] 838["SweepEdge Opposite"] 839["SweepEdge Adjacent"] - 840["Plane
[1953, 1976, 0]"] - 852["Sweep Extrusion
[2754, 2780, 0]"] + 840["Plane
[1954, 1977, 0]"] + 852["Sweep Extrusion
[2731, 2757, 0]"] 853[Wall] 854[Wall] 855[Wall] @@ -982,8 +982,8 @@ flowchart LR 876["SweepEdge Adjacent"] 877["SweepEdge Opposite"] 878["SweepEdge Adjacent"] - 879["Plane
[4971, 4994, 0]"] - 898["Sweep Extrusion
[5956, 5980, 0]"] + 879["Plane
[4924, 4947, 0]"] + 898["Sweep Extrusion
[5839, 5863, 0]"] 899[Wall] 900[Wall] 901[Wall] @@ -1034,8 +1034,8 @@ flowchart LR 946["SweepEdge Adjacent"] 947["SweepEdge Opposite"] 948["SweepEdge Adjacent"] - 949["Plane
[6117, 6140, 0]"] - 956["Sweep Extrusion
[6587, 6611, 0]"] + 949["Plane
[6000, 6023, 0]"] + 956["Sweep Extrusion
[6463, 6487, 0]"] 957[Wall] 958[Wall] 959[Wall] @@ -1050,8 +1050,8 @@ flowchart LR 968["SweepEdge Adjacent"] 969["SweepEdge Opposite"] 970["SweepEdge Adjacent"] - 971["Plane
[6656, 6679, 0]"] - 978["Sweep Extrusion
[7126, 7150, 0]"] + 971["Plane
[6532, 6555, 0]"] + 978["Sweep Extrusion
[6995, 7019, 0]"] 979[Wall] 980[Wall] 981[Wall] @@ -1066,8 +1066,8 @@ flowchart LR 990["SweepEdge Adjacent"] 991["SweepEdge Opposite"] 992["SweepEdge Adjacent"] - 993["Plane
[6117, 6140, 0]"] - 1000["Sweep Extrusion
[6587, 6611, 0]"] + 993["Plane
[6000, 6023, 0]"] + 1000["Sweep Extrusion
[6463, 6487, 0]"] 1001[Wall] 1002[Wall] 1003[Wall] @@ -1082,8 +1082,8 @@ flowchart LR 1012["SweepEdge Adjacent"] 1013["SweepEdge Opposite"] 1014["SweepEdge Adjacent"] - 1015["Plane
[6656, 6679, 0]"] - 1022["Sweep Extrusion
[7126, 7150, 0]"] + 1015["Plane
[6532, 6555, 0]"] + 1022["Sweep Extrusion
[6995, 7019, 0]"] 1023[Wall] 1024[Wall] 1025[Wall] @@ -1098,7 +1098,7 @@ flowchart LR 1034["SweepEdge Adjacent"] 1035["SweepEdge Opposite"] 1036["SweepEdge Adjacent"] - 1037["StartSketchOnFace
[1133, 1164, 0]"] + 1037["StartSketchOnFace
[1151, 1189, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/keyboard/ast.snap b/rust/kcl-lib/tests/kcl_samples/keyboard/ast.snap index 096d628bf..3ac3aebda 100644 --- a/rust/kcl-lib/tests/kcl_samples/keyboard/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/keyboard/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing keyboard.kcl "Ok": { "body": [ { - "commentStart": 109, + "commentStart": 0, "declaration": { - "commentStart": 132, + "commentStart": 0, "end": 0, "id": { - "commentStart": 132, + "commentStart": 0, "end": 0, "name": "baseColor", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 144, + "commentStart": 0, "end": 0, "raw": "\"#0f0f0f\"", "start": 0, @@ -39,19 +39,19 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 154, + "commentStart": 0, "declaration": { - "commentStart": 154, + "commentStart": 0, "end": 0, "id": { - "commentStart": 154, + "commentStart": 0, "end": 0, "name": "highlightColor1", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 172, + "commentStart": 0, "end": 0, "raw": "\"#b0b0b0\"", "start": 0, @@ -69,19 +69,19 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 182, + "commentStart": 0, "declaration": { - "commentStart": 182, + "commentStart": 0, "end": 0, "id": { - "commentStart": 182, + "commentStart": 0, "end": 0, "name": "highlightColor2", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 200, + "commentStart": 0, "end": 0, "raw": "\"#23af93\"", "start": 0, @@ -99,19 +99,19 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 210, + "commentStart": 0, "declaration": { - "commentStart": 210, + "commentStart": 0, "end": 0, "id": { - "commentStart": 210, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 222, + "commentStart": 0, "end": 0, "raw": "0.8", "start": 0, @@ -132,19 +132,19 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 226, + "commentStart": 0, "declaration": { - "commentStart": 226, + "commentStart": 0, "end": 0, "id": { - "commentStart": 226, + "commentStart": 0, "end": 0, "name": "keyDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 237, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -165,19 +165,19 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 241, + "commentStart": 0, "declaration": { - "commentStart": 241, + "commentStart": 0, "end": 0, "id": { - "commentStart": 241, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 251, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -198,26 +198,26 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 255, + "commentStart": 0, "declaration": { - "commentStart": 255, + "commentStart": 0, "end": 0, "id": { - "commentStart": 255, + "commentStart": 0, "end": 0, "name": "row1", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 262, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 262, + "commentStart": 0, "end": 0, "name": { - "commentStart": 262, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -230,7 +230,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 272, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -255,29 +255,29 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 274, + "commentStart": 0, "declaration": { - "commentStart": 274, + "commentStart": 0, "end": 0, "id": { - "commentStart": 274, + "commentStart": 0, "end": 0, "name": "row2", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 281, + "commentStart": 0, "end": 0, "left": { - "commentStart": 281, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 281, + "commentStart": 0, "end": 0, "name": { - "commentStart": 281, + "commentStart": 0, "end": 0, "name": "row1", "start": 0, @@ -291,10 +291,10 @@ description: Result of parsing keyboard.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 288, + "commentStart": 0, "end": 0, "name": { - "commentStart": 288, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -312,10 +312,10 @@ description: Result of parsing keyboard.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 300, + "commentStart": 0, "end": 0, "name": { - "commentStart": 300, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -340,29 +340,29 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 308, + "commentStart": 0, "declaration": { - "commentStart": 308, + "commentStart": 0, "end": 0, "id": { - "commentStart": 308, + "commentStart": 0, "end": 0, "name": "row3", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 315, + "commentStart": 0, "end": 0, "left": { - "commentStart": 315, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 315, + "commentStart": 0, "end": 0, "name": { - "commentStart": 315, + "commentStart": 0, "end": 0, "name": "row2", "start": 0, @@ -376,10 +376,10 @@ description: Result of parsing keyboard.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 322, + "commentStart": 0, "end": 0, "name": { - "commentStart": 322, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -397,10 +397,10 @@ description: Result of parsing keyboard.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 334, + "commentStart": 0, "end": 0, "name": { - "commentStart": 334, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -425,29 +425,29 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 342, + "commentStart": 0, "declaration": { - "commentStart": 342, + "commentStart": 0, "end": 0, "id": { - "commentStart": 342, + "commentStart": 0, "end": 0, "name": "row4", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 349, + "commentStart": 0, "end": 0, "left": { - "commentStart": 349, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 349, + "commentStart": 0, "end": 0, "name": { - "commentStart": 349, + "commentStart": 0, "end": 0, "name": "row3", "start": 0, @@ -461,10 +461,10 @@ description: Result of parsing keyboard.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 356, + "commentStart": 0, "end": 0, "name": { - "commentStart": 356, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -482,10 +482,10 @@ description: Result of parsing keyboard.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 368, + "commentStart": 0, "end": 0, "name": { - "commentStart": 368, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -510,29 +510,29 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 376, + "commentStart": 0, "declaration": { - "commentStart": 376, + "commentStart": 0, "end": 0, "id": { - "commentStart": 376, + "commentStart": 0, "end": 0, "name": "row5", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 383, + "commentStart": 0, "end": 0, "left": { - "commentStart": 383, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 383, + "commentStart": 0, "end": 0, "name": { - "commentStart": 383, + "commentStart": 0, "end": 0, "name": "row4", "start": 0, @@ -546,10 +546,10 @@ description: Result of parsing keyboard.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 390, + "commentStart": 0, "end": 0, "name": { - "commentStart": 390, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -567,10 +567,10 @@ description: Result of parsing keyboard.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 402, + "commentStart": 0, "end": 0, "name": { - "commentStart": 402, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -595,29 +595,29 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 410, + "commentStart": 0, "declaration": { - "commentStart": 410, + "commentStart": 0, "end": 0, "id": { - "commentStart": 410, + "commentStart": 0, "end": 0, "name": "row6", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 417, + "commentStart": 0, "end": 0, "left": { - "commentStart": 417, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 417, + "commentStart": 0, "end": 0, "name": { - "commentStart": 417, + "commentStart": 0, "end": 0, "name": "row5", "start": 0, @@ -631,10 +631,10 @@ description: Result of parsing keyboard.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 424, + "commentStart": 0, "end": 0, "name": { - "commentStart": 424, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -652,10 +652,10 @@ description: Result of parsing keyboard.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 436, + "commentStart": 0, "end": 0, "name": { - "commentStart": 436, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -680,12 +680,12 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 443, + "commentStart": 0, "declaration": { - "commentStart": 520, + "commentStart": 0, "end": 0, "id": { - "commentStart": 520, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -697,10 +697,10 @@ description: Result of parsing keyboard.kcl "arguments": [ { "abs_path": false, - "commentStart": 546, + "commentStart": 0, "end": 0, "name": { - "commentStart": 546, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -714,10 +714,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 532, + "commentStart": 0, "end": 0, "name": { - "commentStart": 532, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -727,7 +727,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 532, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -736,10 +736,10 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 570, + "commentStart": 0, "elements": [ { - "commentStart": 571, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -751,7 +751,7 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 574, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -769,7 +769,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 578, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -778,10 +778,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 555, + "commentStart": 0, "end": 0, "name": { - "commentStart": 555, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -791,7 +791,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 555, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -802,18 +802,18 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 591, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 597, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 599, + "commentStart": 0, "end": 0, "raw": "0.14", "start": 0, @@ -824,7 +824,7 @@ description: Result of parsing keyboard.kcl "suffix": "None" } }, - "commentStart": 598, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -832,7 +832,7 @@ description: Result of parsing keyboard.kcl "type": "UnaryExpression" }, { - "commentStart": 605, + "commentStart": 0, "end": 0, "raw": "0.68", "start": 0, @@ -853,14 +853,14 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 612, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 618, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -871,10 +871,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 586, + "commentStart": 0, "end": 0, "name": { - "commentStart": 586, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -884,7 +884,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 586, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -894,92 +894,50 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 642, - "elements": [ - { - "commentStart": 643, - "end": 0, - "raw": "7", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 7.0, - "suffix": "None" - } - }, - { - "commentStart": 646, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "7", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 7.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, "left": { - "commentStart": 646, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 646, - "end": 0, - "name": { - "commentStart": 646, - "end": 0, - "name": "row6", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "+", - "right": { - "commentStart": 653, - "end": 0, - "left": { - "commentStart": 653, - "end": 0, - "raw": "3", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 3.0, - "suffix": "None" - } - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 657, - "end": 0, - "name": { - "commentStart": 657, - "end": 0, - "name": "spacing", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { "abs_path": false, - "commentStart": 667, + "commentStart": 0, "end": 0, "name": { - "commentStart": 667, + "commentStart": 0, "end": 0, - "name": "keyHeight", + "name": "row6", "start": 0, "type": "Identifier" }, @@ -988,38 +946,94 @@ description: Result of parsing keyboard.kcl "type": "Name", "type": "Name" }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "raw": "3", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 3.0, + "suffix": "None" + } + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "spacing", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "keyHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 679, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 682, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "seg02" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "seg02" + } } ], "callee": { "abs_path": false, - "commentStart": 631, + "commentStart": 0, "end": 0, "name": { - "commentStart": 631, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -1029,28 +1043,29 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 631, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 700, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 714, + "commentStart": 0, "elements": [ { - "commentStart": 715, + "commentStart": 0, "end": 0, "raw": "5.13", "start": 0, @@ -1062,7 +1077,7 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 721, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1083,14 +1098,14 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 725, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 731, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1101,10 +1116,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 695, + "commentStart": 0, "end": 0, "name": { - "commentStart": 695, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1114,7 +1129,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 695, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1126,19 +1141,19 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 749, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 763, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 778, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1147,10 +1162,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 764, + "commentStart": 0, "end": 0, "name": { - "commentStart": 764, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -1160,7 +1175,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 764, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1169,7 +1184,7 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 796, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1178,10 +1193,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 782, + "commentStart": 0, "end": 0, "name": { - "commentStart": 782, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -1191,7 +1206,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 782, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1207,14 +1222,14 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 801, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 807, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1225,10 +1240,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 744, + "commentStart": 0, "end": 0, "name": { - "commentStart": 744, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1238,7 +1253,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 744, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1249,10 +1264,10 @@ description: Result of parsing keyboard.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 820, + "commentStart": 0, "end": 0, "name": { - "commentStart": 820, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1262,7 +1277,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 820, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1273,14 +1288,14 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 841, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 850, + "commentStart": 0, "end": 0, "raw": "13.6", "start": 0, @@ -1295,10 +1310,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 833, + "commentStart": 0, "end": 0, "name": { - "commentStart": 833, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1308,7 +1323,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 833, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1320,7 +1335,7 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 872, + "commentStart": 0, "end": 0, "name": "color", "start": 0, @@ -1328,10 +1343,10 @@ description: Result of parsing keyboard.kcl }, "arg": { "abs_path": false, - "commentStart": 880, + "commentStart": 0, "end": 0, "name": { - "commentStart": 880, + "commentStart": 0, "end": 0, "name": "baseColor", "start": 0, @@ -1346,10 +1361,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 861, + "commentStart": 0, "end": 0, "name": { - "commentStart": 861, + "commentStart": 0, "end": 0, "name": "appearance", "start": 0, @@ -1359,7 +1374,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 861, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1371,14 +1386,14 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 911, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 920, + "commentStart": 0, "end": 0, "raw": ".6", "start": 0, @@ -1393,23 +1408,23 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 931, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 938, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 965, + "commentStart": 0, "end": 0, "name": { - "commentStart": 965, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -1423,10 +1438,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 949, + "commentStart": 0, "end": 0, "name": { - "commentStart": 949, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -1436,7 +1451,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 949, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1446,10 +1461,10 @@ description: Result of parsing keyboard.kcl "arguments": [ { "abs_path": false, - "commentStart": 998, + "commentStart": 0, "end": 0, "name": { - "commentStart": 998, + "commentStart": 0, "end": 0, "name": "seg03", "start": 0, @@ -1463,10 +1478,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 982, + "commentStart": 0, "end": 0, "name": { - "commentStart": 982, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -1476,7 +1491,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 982, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1484,10 +1499,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 1015, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1015, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -1500,10 +1515,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 1031, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1031, + "commentStart": 0, "end": 0, "name": "seg03", "start": 0, @@ -1524,10 +1539,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 896, + "commentStart": 0, "end": 0, "name": { - "commentStart": 896, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -1537,7 +1552,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 896, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1545,13 +1560,13 @@ description: Result of parsing keyboard.kcl "unlabeled": null } ], - "commentStart": 532, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "9": [ { - "commentStart": 1053, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1584,12 +1599,12 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 1121, + "commentStart": 0, "declaration": { - "commentStart": 1121, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1121, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -1598,44 +1613,38 @@ description: Result of parsing keyboard.kcl "init": { "arguments": [ { - "abs_path": false, - "commentStart": 1147, - "end": 0, - "name": { - "commentStart": 1147, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "sketch001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 1158, - "end": 0, - "name": { - "commentStart": 1158, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg04", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg04", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1133, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1133, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1645,11 +1654,27 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 1133, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "sketch001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, "start": 0, "type": "VariableDeclarator" @@ -1661,12 +1686,12 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 1165, + "commentStart": 0, "declaration": { - "commentStart": 1165, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1165, + "commentStart": 0, "end": 0, "name": "profile001", "start": 0, @@ -1677,17 +1702,17 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 1196, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1205, + "commentStart": 0, "elements": [ { - "commentStart": 1206, + "commentStart": 0, "end": 0, "raw": "0.75", "start": 0, @@ -1699,7 +1724,7 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 1212, + "commentStart": 0, "end": 0, "raw": "0.75", "start": 0, @@ -1720,14 +1745,14 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 1219, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1228, + "commentStart": 0, "end": 0, "raw": "0.4", "start": 0, @@ -1742,10 +1767,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 1178, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1178, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1755,17 +1780,17 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 1178, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1185, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1185, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -1787,12 +1812,12 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 1233, + "commentStart": 0, "declaration": { - "commentStart": 1233, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1233, + "commentStart": 0, "end": 0, "name": "profile003", "start": 0, @@ -1803,17 +1828,17 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 1264, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1273, + "commentStart": 0, "elements": [ { - "commentStart": 1274, + "commentStart": 0, "end": 0, "raw": "4.4", "start": 0, @@ -1825,7 +1850,7 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 1279, + "commentStart": 0, "end": 0, "raw": "0.75", "start": 0, @@ -1846,14 +1871,14 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 1286, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1295, + "commentStart": 0, "end": 0, "raw": "0.4", "start": 0, @@ -1868,10 +1893,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 1246, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1246, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1881,17 +1906,17 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 1246, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1253, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1253, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -1913,12 +1938,12 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 1300, + "commentStart": 0, "declaration": { - "commentStart": 1300, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1300, + "commentStart": 0, "end": 0, "name": "profile004", "start": 0, @@ -1929,17 +1954,17 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 1331, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1340, + "commentStart": 0, "elements": [ { - "commentStart": 1341, + "commentStart": 0, "end": 0, "raw": "0.73", "start": 0, @@ -1951,10 +1976,10 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 1347, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1347, + "commentStart": 0, "end": 0, "raw": "13.6", "start": 0, @@ -1967,7 +1992,7 @@ description: Result of parsing keyboard.kcl }, "operator": "-", "right": { - "commentStart": 1354, + "commentStart": 0, "end": 0, "raw": ".75", "start": 0, @@ -1992,14 +2017,14 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 1360, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1369, + "commentStart": 0, "end": 0, "raw": "0.4", "start": 0, @@ -2014,10 +2039,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 1313, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1313, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -2027,17 +2052,17 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 1313, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1320, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1320, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -2059,12 +2084,12 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 1374, + "commentStart": 0, "declaration": { - "commentStart": 1374, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1374, + "commentStart": 0, "end": 0, "name": "profile005", "start": 0, @@ -2075,17 +2100,17 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 1405, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1414, + "commentStart": 0, "elements": [ { - "commentStart": 1415, + "commentStart": 0, "end": 0, "raw": "4.4", "start": 0, @@ -2097,10 +2122,10 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 1420, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1420, + "commentStart": 0, "end": 0, "raw": "13.6", "start": 0, @@ -2113,7 +2138,7 @@ description: Result of parsing keyboard.kcl }, "operator": "-", "right": { - "commentStart": 1427, + "commentStart": 0, "end": 0, "raw": ".75", "start": 0, @@ -2138,14 +2163,14 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 1433, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1442, + "commentStart": 0, "end": 0, "raw": "0.4", "start": 0, @@ -2160,10 +2185,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 1387, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1387, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -2173,17 +2198,17 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 1387, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1394, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1394, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -2205,21 +2230,21 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 1447, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1530, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1539, + "commentStart": 0, "end": 0, "raw": ".15", "start": 0, @@ -2234,10 +2259,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 1447, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1447, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2247,20 +2272,20 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 1447, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 1458, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1464, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1464, + "commentStart": 0, "end": 0, "name": "profile001", "start": 0, @@ -2273,10 +2298,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 1480, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1480, + "commentStart": 0, "end": 0, "name": "profile003", "start": 0, @@ -2289,10 +2314,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 1496, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1496, + "commentStart": 0, "end": 0, "name": "profile004", "start": 0, @@ -2305,10 +2330,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 1512, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1512, + "commentStart": 0, "end": 0, "name": "profile005", "start": 0, @@ -2331,321 +2356,299 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 1545, + "commentStart": 0, "declaration": { - "commentStart": 1594, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1594, + "commentStart": 0, "end": 0, "name": "plane001", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1605, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1609, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1609, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1617, - "end": 0, - "properties": [ + "commentStart": 0, + "elements": [ { - "commentStart": 1623, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1623, - "end": 0, - "name": "origin", - "start": 0, - "type": "Identifier" - }, + "raw": "0.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1632, - "elements": [ - { - "commentStart": 1633, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 1638, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 1643, - "end": 0, - "raw": "0.7", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.7, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.0, + "suffix": "None" } }, { - "commentStart": 1653, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1653, - "end": 0, - "name": "xAxis", - "start": 0, - "type": "Identifier" - }, + "raw": "0.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1661, - "elements": [ - { - "commentStart": 1662, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 1667, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 1672, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.0, + "suffix": "None" } }, { - "commentStart": 1682, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1682, - "end": 0, - "name": "yAxis", - "start": 0, - "type": "Identifier" - }, + "raw": "0.7", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1690, - "elements": [ - { - "commentStart": 1691, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 1696, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "arguments": [ - { - "arguments": [ - { - "commentStart": 1715, - "end": 0, - "raw": "7", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 7.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 1705, - "end": 0, - "name": { - "commentStart": 1705, - "end": 0, - "name": "toRadians", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1705, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1701, - "end": 0, - "name": { - "commentStart": 1701, - "end": 0, - "name": "sin", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1701, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - }, - { - "commentStart": 1725, - "end": 0, - "key": { - "commentStart": 1725, - "end": 0, - "name": "zAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1733, - "elements": [ - { - "commentStart": 1734, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 1739, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 1744, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.7, + "suffix": "None" } } ], + "end": 0, "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "xAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "commentStart": 0, + "end": 0, + "raw": "7", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 7.0, + "suffix": "None" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "toRadians", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "sin", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" } } ], @@ -2668,12 +2671,12 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 1754, + "commentStart": 0, "declaration": { - "commentStart": 1881, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1881, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -2683,12 +2686,12 @@ description: Result of parsing keyboard.kcl "body": { "body": [ { - "commentStart": 1941, + "commentStart": 0, "declaration": { - "commentStart": 1941, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1941, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -2698,10 +2701,10 @@ description: Result of parsing keyboard.kcl "arguments": [ { "abs_path": false, - "commentStart": 1967, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1967, + "commentStart": 0, "end": 0, "name": "plane001", "start": 0, @@ -2715,10 +2718,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 1953, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1953, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2728,7 +2731,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 1953, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2744,12 +2747,12 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 1979, + "commentStart": 0, "declaration": { - "commentStart": 1979, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1979, + "commentStart": 0, "end": 0, "name": "profile002", "start": 0, @@ -2760,14 +2763,14 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 2007, + "commentStart": 0, "elements": [ { - "commentStart": 2008, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 2008, + "commentStart": 0, "end": 0, "name": "originStart", "start": 0, @@ -2775,7 +2778,7 @@ description: Result of parsing keyboard.kcl "type": "Identifier" }, "property": { - "commentStart": 2020, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2791,11 +2794,11 @@ description: Result of parsing keyboard.kcl "type": "MemberExpression" }, { - "commentStart": 2024, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 2024, + "commentStart": 0, "end": 0, "name": "originStart", "start": 0, @@ -2803,7 +2806,7 @@ description: Result of parsing keyboard.kcl "type": "Identifier" }, "property": { - "commentStart": 2036, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2826,10 +2829,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 2041, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2041, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -2843,10 +2846,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 1992, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1992, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2856,7 +2859,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 1992, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2865,14 +2868,14 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 2063, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 2074, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2074, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -2881,7 +2884,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2087, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -2894,10 +2897,10 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 2101, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2101, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -2906,7 +2909,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2112, + "commentStart": 0, "end": 0, "raw": "270", "start": 0, @@ -2919,10 +2922,10 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 2126, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2126, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2931,7 +2934,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2135, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -2949,7 +2952,7 @@ description: Result of parsing keyboard.kcl "type": "ObjectExpression" }, { - "commentStart": 2149, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2958,10 +2961,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 2059, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2059, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -2971,7 +2974,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 2059, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2980,84 +2983,98 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 2170, - "elements": [ - { - "commentStart": 2171, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "0", + "name": { + "commentStart": 0, + "end": 0, + "name": "keyWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "commentStart": 0, + "end": 0, + "raw": ".2", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 0.0, + "value": 0.2, "suffix": "None" } }, - { - "commentStart": 2174, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 2174, - "end": 0, - "name": { - "commentStart": 2174, - "end": 0, - "name": "keyWidth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "-", - "right": { - "commentStart": 2185, - "end": 0, - "raw": ".2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.2, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 2190, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 2193, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA001" + } } ], "callee": { "abs_path": false, - "commentStart": 2159, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2159, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -3067,87 +3084,66 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 2159, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 2237, - "end": 0, - "properties": [ - { - "commentStart": 2239, - "end": 0, - "key": { - "commentStart": 2239, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2248, - "end": 0, - "raw": "0.1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.1, - "suffix": "None" - } - } - }, - { - "commentStart": 2253, - "end": 0, - "key": { - "commentStart": 2253, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2262, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0.1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.1, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 2268, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "90", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + } } ], "callee": { "abs_path": false, - "commentStart": 2223, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2223, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -3157,259 +3153,35 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 2223, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 2289, - "elements": [ - { - "commentStart": 2300, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 2307, - "end": 0, - "name": { - "commentStart": 2307, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2300, - "end": 0, - "name": { - "commentStart": 2300, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2300, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "+", - "right": { - "commentStart": 2331, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "commentStart": 2344, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 2344, - "end": 0, - "name": { - "commentStart": 2344, - "end": 0, - "name": "keyHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "-", - "right": { - "commentStart": 2356, - "end": 0, - "raw": ".2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.2, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2369, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 2372, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentB001" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2278, - "end": 0, - "name": { - "commentStart": 2278, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2278, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2416, - "end": 0, - "properties": [ - { - "commentStart": 2418, - "end": 0, - "key": { - "commentStart": 2418, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2427, - "end": 0, - "raw": "0.1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.1, - "suffix": "None" - } - } - }, - { - "commentStart": 2432, - "end": 0, - "key": { - "commentStart": 2432, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2441, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 2447, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2402, - "end": 0, - "name": { - "commentStart": 2402, - "end": 0, - "name": "tangentialArc", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2402, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2468, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 2486, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2486, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA001", "start": 0, @@ -3423,10 +3195,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 2479, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2479, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -3436,88 +3208,101 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 2479, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 2526, - "end": 0, - "name": { - "commentStart": 2526, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2519, - "end": 0, - "name": { - "commentStart": 2519, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2519, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 2518, + "operator": "+", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 2558, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "keyHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "commentStart": 0, + "end": 0, + "raw": ".2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.2, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 2561, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentC001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentB001" + } } ], "callee": { "abs_path": false, - "commentStart": 2457, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2457, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -3527,87 +3312,66 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 2457, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 2605, - "end": 0, - "properties": [ - { - "commentStart": 2607, - "end": 0, - "key": { - "commentStart": 2607, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2616, - "end": 0, - "raw": "0.1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.1, - "suffix": "None" - } - } - }, - { - "commentStart": 2621, - "end": 0, - "key": { - "commentStart": 2621, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2630, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0.1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.1, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 2636, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "90", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + } } ], "callee": { "abs_path": false, - "commentStart": 2591, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2591, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -3617,30 +3381,251 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 2591, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2651, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentC001" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0.1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.1, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "90", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2665, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 2680, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3649,10 +3634,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 2666, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2666, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -3662,7 +3647,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 2666, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3671,7 +3656,7 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 2698, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3680,10 +3665,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 2684, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2684, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -3693,7 +3678,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 2684, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3709,14 +3694,14 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 2703, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2709, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3727,10 +3712,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 2646, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2646, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3740,7 +3725,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 2646, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3751,10 +3736,10 @@ description: Result of parsing keyboard.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2739, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2739, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -3764,7 +3749,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 2739, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3775,7 +3760,7 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 2762, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3783,10 +3768,10 @@ description: Result of parsing keyboard.kcl }, "arg": { "abs_path": false, - "commentStart": 2771, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2771, + "commentStart": 0, "end": 0, "name": "keyDepth", "start": 0, @@ -3801,10 +3786,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 2754, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2754, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3814,7 +3799,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 2754, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3826,7 +3811,7 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 2799, + "commentStart": 0, "end": 0, "name": "color", "start": 0, @@ -3834,10 +3819,10 @@ description: Result of parsing keyboard.kcl }, "arg": { "abs_path": false, - "commentStart": 2807, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2807, + "commentStart": 0, "end": 0, "name": "color", "start": 0, @@ -3852,10 +3837,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 2788, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2788, + "commentStart": 0, "end": 0, "name": "appearance", "start": 0, @@ -3865,7 +3850,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 2788, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3877,21 +3862,21 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 2917, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2929, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2929, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2929, + "commentStart": 0, "end": 0, "name": "repeats", "start": 0, @@ -3904,7 +3889,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 2939, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3923,21 +3908,21 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 2951, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2962, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2962, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2962, + "commentStart": 0, "end": 0, "name": "keyWidth", "start": 0, @@ -3951,10 +3936,10 @@ description: Result of parsing keyboard.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2973, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2973, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -3973,17 +3958,17 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 2991, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2998, + "commentStart": 0, "elements": [ { - "commentStart": 2999, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3995,7 +3980,7 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 3002, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4007,7 +3992,7 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 3005, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4028,10 +4013,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 2879, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2879, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -4041,13 +4026,13 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 2879, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 2905, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4055,13 +4040,13 @@ description: Result of parsing keyboard.kcl } } ], - "commentStart": 1992, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "11": [ { - "commentStart": 2817, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4091,10 +4076,10 @@ description: Result of parsing keyboard.kcl { "argument": { "abs_path": false, - "commentStart": 3027, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3027, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -4105,24 +4090,24 @@ description: Result of parsing keyboard.kcl "type": "Name", "type": "Name" }, - "commentStart": 3020, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 1937, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 1886, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 1887, + "commentStart": 0, "end": 0, "name": "originStart", "start": 0, @@ -4132,7 +4117,7 @@ description: Result of parsing keyboard.kcl { "type": "Parameter", "identifier": { - "commentStart": 1900, + "commentStart": 0, "end": 0, "name": "keyWidth", "start": 0, @@ -4142,7 +4127,7 @@ description: Result of parsing keyboard.kcl { "type": "Parameter", "identifier": { - "commentStart": 1910, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -4152,7 +4137,7 @@ description: Result of parsing keyboard.kcl { "type": "Parameter", "identifier": { - "commentStart": 1921, + "commentStart": 0, "end": 0, "name": "repeats", "start": 0, @@ -4162,7 +4147,7 @@ description: Result of parsing keyboard.kcl { "type": "Parameter", "identifier": { - "commentStart": 1930, + "commentStart": 0, "end": 0, "name": "color", "start": 0, @@ -4189,15 +4174,15 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 3038, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 3077, + "commentStart": 0, "elements": [ { - "commentStart": 3078, + "commentStart": 0, "end": 0, "raw": "0.3", "start": 0, @@ -4210,10 +4195,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3083, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3083, + "commentStart": 0, "end": 0, "name": "row1", "start": 0, @@ -4231,7 +4216,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 3090, + "commentStart": 0, "end": 0, "raw": "1.1", "start": 0, @@ -4244,10 +4229,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3095, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3095, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -4259,7 +4244,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 3106, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4272,10 +4257,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3109, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3109, + "commentStart": 0, "end": 0, "name": "highlightColor2", "start": 0, @@ -4289,10 +4274,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 3071, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3071, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -4302,7 +4287,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 3071, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4318,15 +4303,15 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 3126, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 3132, + "commentStart": 0, "elements": [ { - "commentStart": 3133, + "commentStart": 0, "end": 0, "raw": "1.5", "start": 0, @@ -4339,10 +4324,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3138, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3138, + "commentStart": 0, "end": 0, "name": "row1", "start": 0, @@ -4360,7 +4345,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 3145, + "commentStart": 0, "end": 0, "raw": "0.8", "start": 0, @@ -4373,10 +4358,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3150, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3150, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -4388,7 +4373,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 3161, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4401,10 +4386,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3164, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3164, + "commentStart": 0, "end": 0, "name": "highlightColor1", "start": 0, @@ -4418,10 +4403,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 3126, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3126, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -4431,7 +4416,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 3126, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4442,25 +4427,25 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 3181, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 3187, + "commentStart": 0, "elements": [ { - "commentStart": 3188, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3188, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3188, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3188, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -4473,7 +4458,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 3198, + "commentStart": 0, "end": 0, "raw": "7", "start": 0, @@ -4490,7 +4475,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 3202, + "commentStart": 0, "end": 0, "raw": "3.5", "start": 0, @@ -4507,10 +4492,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3207, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3207, + "commentStart": 0, "end": 0, "name": "row1", "start": 0, @@ -4528,7 +4513,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 3214, + "commentStart": 0, "end": 0, "raw": "5.2", "start": 0, @@ -4541,10 +4526,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3219, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3219, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -4556,7 +4541,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 3230, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4569,10 +4554,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3233, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3233, + "commentStart": 0, "end": 0, "name": "highlightColor2", "start": 0, @@ -4586,10 +4571,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 3181, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3181, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -4599,7 +4584,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 3181, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4610,25 +4595,25 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 3250, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 3256, + "commentStart": 0, "elements": [ { - "commentStart": 3257, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3257, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3257, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3257, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -4641,7 +4626,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 3267, + "commentStart": 0, "end": 0, "raw": "8", "start": 0, @@ -4658,7 +4643,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 3271, + "commentStart": 0, "end": 0, "raw": "8.7", "start": 0, @@ -4675,10 +4660,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3276, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3276, + "commentStart": 0, "end": 0, "name": "row1", "start": 0, @@ -4696,7 +4681,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 3283, + "commentStart": 0, "end": 0, "raw": "0.8", "start": 0, @@ -4709,10 +4694,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3288, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3288, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -4724,7 +4709,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 3299, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4737,10 +4722,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3302, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3302, + "commentStart": 0, "end": 0, "name": "highlightColor1", "start": 0, @@ -4754,10 +4739,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 3250, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3250, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -4767,7 +4752,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 3250, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4778,25 +4763,25 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 3319, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 3325, + "commentStart": 0, "elements": [ { - "commentStart": 3326, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3326, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3326, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3326, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -4809,7 +4794,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 3336, + "commentStart": 0, "end": 0, "raw": "8", "start": 0, @@ -4826,7 +4811,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 3340, + "commentStart": 0, "end": 0, "raw": "9.6", "start": 0, @@ -4843,10 +4828,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3345, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3345, + "commentStart": 0, "end": 0, "name": "row1", "start": 0, @@ -4864,7 +4849,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 3352, + "commentStart": 0, "end": 0, "raw": "0.8", "start": 0, @@ -4877,10 +4862,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3357, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3357, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -4892,7 +4877,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 3368, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4905,10 +4890,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3371, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3371, + "commentStart": 0, "end": 0, "name": "highlightColor1", "start": 0, @@ -4922,10 +4907,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 3319, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3319, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -4935,7 +4920,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 3319, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4946,25 +4931,25 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 3388, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 3394, + "commentStart": 0, "elements": [ { - "commentStart": 3395, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3395, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3395, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3395, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -4977,7 +4962,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 3405, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -4994,7 +4979,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 3410, + "commentStart": 0, "end": 0, "raw": "10.3", "start": 0, @@ -5011,10 +4996,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3416, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3416, + "commentStart": 0, "end": 0, "name": "row1", "start": 0, @@ -5032,7 +5017,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 3423, + "commentStart": 0, "end": 0, "raw": "1.1", "start": 0, @@ -5045,10 +5030,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3428, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3428, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -5060,7 +5045,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 3439, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5073,10 +5058,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3442, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3442, + "commentStart": 0, "end": 0, "name": "highlightColor1", "start": 0, @@ -5090,10 +5075,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 3388, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3388, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -5103,7 +5088,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 3388, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5114,28 +5099,28 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 3459, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 3465, + "commentStart": 0, "elements": [ { - "commentStart": 3466, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3466, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3466, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3466, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3466, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -5148,7 +5133,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 3476, + "commentStart": 0, "end": 0, "raw": "12", "start": 0, @@ -5165,7 +5150,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 3481, + "commentStart": 0, "end": 0, "raw": "10.3", "start": 0, @@ -5182,7 +5167,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 3488, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -5199,10 +5184,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3491, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3491, + "commentStart": 0, "end": 0, "name": "row1", "start": 0, @@ -5220,7 +5205,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 3498, + "commentStart": 0, "end": 0, "raw": "0.8", "start": 0, @@ -5233,10 +5218,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3503, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3503, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -5248,7 +5233,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 3514, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5261,10 +5246,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3517, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3517, + "commentStart": 0, "end": 0, "name": "highlightColor2", "start": 0, @@ -5278,10 +5263,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 3459, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3459, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -5291,7 +5276,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 3459, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5302,22 +5287,22 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 3533, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 3573, + "commentStart": 0, "elements": [ { - "commentStart": 3574, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3574, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3574, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -5330,7 +5315,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 3584, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -5347,10 +5332,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3587, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3587, + "commentStart": 0, "end": 0, "name": "row2", "start": 0, @@ -5368,7 +5353,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 3594, + "commentStart": 0, "end": 0, "raw": "1.7", "start": 0, @@ -5381,10 +5366,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3599, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3599, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -5396,7 +5381,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 3610, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5409,10 +5394,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3613, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3613, + "commentStart": 0, "end": 0, "name": "highlightColor2", "start": 0, @@ -5426,10 +5411,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 3567, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3567, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -5439,7 +5424,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 3567, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5455,25 +5440,25 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 3630, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 3636, + "commentStart": 0, "elements": [ { - "commentStart": 3637, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3637, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3637, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3637, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -5486,7 +5471,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 3647, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -5503,7 +5488,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 3651, + "commentStart": 0, "end": 0, "raw": "1.7", "start": 0, @@ -5520,10 +5505,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3656, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3656, + "commentStart": 0, "end": 0, "name": "row2", "start": 0, @@ -5541,7 +5526,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 3663, + "commentStart": 0, "end": 0, "raw": "0.8", "start": 0, @@ -5554,10 +5539,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3668, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3668, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -5569,7 +5554,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 3679, + "commentStart": 0, "end": 0, "raw": "9", "start": 0, @@ -5582,10 +5567,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3682, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3682, + "commentStart": 0, "end": 0, "name": "highlightColor1", "start": 0, @@ -5599,10 +5584,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 3630, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3630, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -5612,7 +5597,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 3630, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5623,28 +5608,28 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 3699, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 3705, + "commentStart": 0, "elements": [ { - "commentStart": 3706, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3706, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3706, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3706, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3706, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -5657,7 +5642,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 3716, + "commentStart": 0, "end": 0, "raw": "14", "start": 0, @@ -5674,7 +5659,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 3721, + "commentStart": 0, "end": 0, "raw": "1.7", "start": 0, @@ -5691,10 +5676,10 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 3727, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3727, + "commentStart": 0, "end": 0, "raw": "0.8", "start": 0, @@ -5707,7 +5692,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 3733, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -5728,10 +5713,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3737, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3737, + "commentStart": 0, "end": 0, "name": "row2", "start": 0, @@ -5749,7 +5734,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 3744, + "commentStart": 0, "end": 0, "raw": "2.2", "start": 0, @@ -5762,10 +5747,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3749, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3749, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -5777,7 +5762,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 3760, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5790,10 +5775,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3763, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3763, + "commentStart": 0, "end": 0, "name": "highlightColor2", "start": 0, @@ -5807,10 +5792,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 3699, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3699, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -5820,7 +5805,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 3699, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5831,22 +5816,22 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 3779, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 3818, + "commentStart": 0, "elements": [ { - "commentStart": 3819, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3819, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3819, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -5859,7 +5844,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 3829, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -5876,10 +5861,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3832, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3832, + "commentStart": 0, "end": 0, "name": "row3", "start": 0, @@ -5897,10 +5882,10 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 3839, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3839, + "commentStart": 0, "end": 0, "raw": "1.1", "start": 0, @@ -5913,7 +5898,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 3845, + "commentStart": 0, "end": 0, "raw": ".1", "start": 0, @@ -5930,10 +5915,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3849, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3849, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -5945,7 +5930,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 3860, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5958,10 +5943,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3863, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3863, + "commentStart": 0, "end": 0, "name": "highlightColor1", "start": 0, @@ -5975,10 +5960,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 3812, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3812, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -5988,7 +5973,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 3812, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6004,28 +5989,28 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 3880, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 3886, + "commentStart": 0, "elements": [ { - "commentStart": 3887, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3887, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3887, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3887, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3887, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -6038,7 +6023,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 3897, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -6055,7 +6040,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 3901, + "commentStart": 0, "end": 0, "raw": "1.1", "start": 0, @@ -6072,7 +6057,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 3907, + "commentStart": 0, "end": 0, "raw": ".1", "start": 0, @@ -6089,10 +6074,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3911, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3911, + "commentStart": 0, "end": 0, "name": "row3", "start": 0, @@ -6110,7 +6095,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 3918, + "commentStart": 0, "end": 0, "raw": "0.8", "start": 0, @@ -6123,10 +6108,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3923, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3923, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -6138,7 +6123,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 3934, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -6151,10 +6136,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3938, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3938, + "commentStart": 0, "end": 0, "name": "highlightColor1", "start": 0, @@ -6168,10 +6153,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 3880, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3880, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -6181,7 +6166,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 3880, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6192,28 +6177,28 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 3955, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 3961, + "commentStart": 0, "elements": [ { - "commentStart": 3962, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3962, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3962, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3962, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3962, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -6226,7 +6211,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 3972, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -6243,7 +6228,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 3976, + "commentStart": 0, "end": 0, "raw": "11.1", "start": 0, @@ -6260,7 +6245,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 3983, + "commentStart": 0, "end": 0, "raw": ".1", "start": 0, @@ -6277,10 +6262,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 3987, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3987, + "commentStart": 0, "end": 0, "name": "row3", "start": 0, @@ -6298,10 +6283,10 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 3994, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3994, + "commentStart": 0, "end": 0, "raw": "1.4", "start": 0, @@ -6314,7 +6299,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 4000, + "commentStart": 0, "end": 0, "raw": ".4", "start": 0, @@ -6331,10 +6316,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4004, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4004, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -6346,7 +6331,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 4015, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6359,10 +6344,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4018, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4018, + "commentStart": 0, "end": 0, "name": "highlightColor2", "start": 0, @@ -6376,10 +6361,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 3955, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3955, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -6389,7 +6374,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 3955, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6400,22 +6385,22 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 4034, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 4074, + "commentStart": 0, "elements": [ { - "commentStart": 4075, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4075, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4075, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -6428,7 +6413,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 4085, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -6445,10 +6430,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4088, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4088, + "commentStart": 0, "end": 0, "name": "row4", "start": 0, @@ -6466,7 +6451,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 4095, + "commentStart": 0, "end": 0, "raw": "0.9", "start": 0, @@ -6479,10 +6464,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4100, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4100, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -6494,7 +6479,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 4111, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6507,10 +6492,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4114, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4114, + "commentStart": 0, "end": 0, "name": "highlightColor1", "start": 0, @@ -6524,10 +6509,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 4068, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4068, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -6537,7 +6522,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 4068, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6553,25 +6538,25 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 4131, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 4137, + "commentStart": 0, "elements": [ { - "commentStart": 4138, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4138, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4138, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4138, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -6584,7 +6569,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 4148, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -6601,7 +6586,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 4152, + "commentStart": 0, "end": 0, "raw": "0.9", "start": 0, @@ -6618,10 +6603,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4157, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4157, + "commentStart": 0, "end": 0, "name": "row4", "start": 0, @@ -6639,7 +6624,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 4164, + "commentStart": 0, "end": 0, "raw": "0.8", "start": 0, @@ -6652,10 +6637,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4169, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4169, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -6667,7 +6652,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 4180, + "commentStart": 0, "end": 0, "raw": "11", "start": 0, @@ -6680,10 +6665,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4184, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4184, + "commentStart": 0, "end": 0, "name": "highlightColor1", "start": 0, @@ -6697,10 +6682,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 4131, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4131, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -6710,7 +6695,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 4131, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6721,25 +6706,25 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 4201, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 4207, + "commentStart": 0, "elements": [ { - "commentStart": 4208, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4208, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4208, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4208, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -6752,7 +6737,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 4218, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -6769,7 +6754,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 4222, + "commentStart": 0, "end": 0, "raw": "11.8", "start": 0, @@ -6786,10 +6771,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4228, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4228, + "commentStart": 0, "end": 0, "name": "row4", "start": 0, @@ -6807,7 +6792,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 4235, + "commentStart": 0, "end": 0, "raw": "1.2", "start": 0, @@ -6820,10 +6805,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4240, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4240, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -6835,7 +6820,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 4251, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6848,10 +6833,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4254, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4254, + "commentStart": 0, "end": 0, "name": "highlightColor1", "start": 0, @@ -6865,10 +6850,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 4201, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4201, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -6878,7 +6863,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 4201, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6889,22 +6874,22 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 4270, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 4309, + "commentStart": 0, "elements": [ { - "commentStart": 4310, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4310, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4310, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -6917,7 +6902,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 4320, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -6934,10 +6919,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4323, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4323, + "commentStart": 0, "end": 0, "name": "row5", "start": 0, @@ -6955,7 +6940,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 4330, + "commentStart": 0, "end": 0, "raw": "0.8", "start": 0, @@ -6968,10 +6953,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4335, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4335, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -6983,7 +6968,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 4346, + "commentStart": 0, "end": 0, "raw": "12", "start": 0, @@ -6996,10 +6981,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4350, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4350, + "commentStart": 0, "end": 0, "name": "highlightColor1", "start": 0, @@ -7013,10 +6998,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 4303, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4303, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -7026,7 +7011,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 4303, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7042,25 +7027,25 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 4367, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 4373, + "commentStart": 0, "elements": [ { - "commentStart": 4374, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4374, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4374, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4374, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -7073,7 +7058,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 4384, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -7090,7 +7075,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 4388, + "commentStart": 0, "end": 0, "raw": "11.7", "start": 0, @@ -7107,10 +7092,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4394, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4394, + "commentStart": 0, "end": 0, "name": "row5", "start": 0, @@ -7128,7 +7113,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 4401, + "commentStart": 0, "end": 0, "raw": "1.3", "start": 0, @@ -7141,10 +7126,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4406, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4406, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -7156,7 +7141,7 @@ description: Result of parsing keyboard.kcl "type": "Name" }, { - "commentStart": 4417, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -7169,10 +7154,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4420, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4420, + "commentStart": 0, "end": 0, "name": "highlightColor2", "start": 0, @@ -7186,10 +7171,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 4367, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4367, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -7199,7 +7184,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 4367, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7210,22 +7195,22 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 4436, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 4475, + "commentStart": 0, "elements": [ { - "commentStart": 4476, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4476, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4476, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -7238,7 +7223,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 4486, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -7255,10 +7240,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4489, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4489, + "commentStart": 0, "end": 0, "name": "row6", "start": 0, @@ -7276,7 +7261,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 4496, + "commentStart": 0, "end": 0, "raw": "1.1", "start": 0, @@ -7288,14 +7273,14 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 4501, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4501, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4501, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -7308,7 +7293,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 4513, + "commentStart": 0, "end": 0, "raw": ".6", "start": 0, @@ -7324,7 +7309,7 @@ description: Result of parsing keyboard.kcl "type": "BinaryExpression" }, { - "commentStart": 4517, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -7337,10 +7322,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4520, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4520, + "commentStart": 0, "end": 0, "name": "highlightColor2", "start": 0, @@ -7354,10 +7339,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 4469, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4469, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -7367,7 +7352,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 4469, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7383,25 +7368,25 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 4537, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 4543, + "commentStart": 0, "elements": [ { - "commentStart": 4544, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4544, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4544, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4544, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -7414,7 +7399,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 4554, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -7431,7 +7416,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 4558, + "commentStart": 0, "end": 0, "raw": "1.1", "start": 0, @@ -7448,10 +7433,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4563, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4563, + "commentStart": 0, "end": 0, "name": "row6", "start": 0, @@ -7469,7 +7454,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 4570, + "commentStart": 0, "end": 0, "raw": "0.8", "start": 0, @@ -7481,14 +7466,14 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 4575, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4575, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4575, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -7501,7 +7486,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 4587, + "commentStart": 0, "end": 0, "raw": ".6", "start": 0, @@ -7517,7 +7502,7 @@ description: Result of parsing keyboard.kcl "type": "BinaryExpression" }, { - "commentStart": 4591, + "commentStart": 0, "end": 0, "raw": "11", "start": 0, @@ -7530,10 +7515,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4595, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4595, + "commentStart": 0, "end": 0, "name": "highlightColor1", "start": 0, @@ -7547,10 +7532,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 4537, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4537, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -7560,7 +7545,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 4537, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7571,25 +7556,25 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 4612, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 4618, + "commentStart": 0, "elements": [ { - "commentStart": 4619, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4619, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4619, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4619, + "commentStart": 0, "end": 0, "name": "spacing", "start": 0, @@ -7602,7 +7587,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 4629, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -7619,7 +7604,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 4633, + "commentStart": 0, "end": 0, "raw": "12", "start": 0, @@ -7636,10 +7621,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4637, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4637, + "commentStart": 0, "end": 0, "name": "row6", "start": 0, @@ -7657,7 +7642,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 4644, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -7669,14 +7654,14 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 4647, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4647, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4647, + "commentStart": 0, "end": 0, "name": "keyHeight", "start": 0, @@ -7689,7 +7674,7 @@ description: Result of parsing keyboard.kcl }, "operator": "*", "right": { - "commentStart": 4659, + "commentStart": 0, "end": 0, "raw": ".6", "start": 0, @@ -7705,7 +7690,7 @@ description: Result of parsing keyboard.kcl "type": "BinaryExpression" }, { - "commentStart": 4663, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -7718,10 +7703,10 @@ description: Result of parsing keyboard.kcl }, { "abs_path": false, - "commentStart": 4666, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4666, + "commentStart": 0, "end": 0, "name": "highlightColor2", "start": 0, @@ -7735,10 +7720,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 4612, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4612, + "commentStart": 0, "end": 0, "name": "keyFn", "start": 0, @@ -7748,7 +7733,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 4612, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7759,321 +7744,299 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 4682, + "commentStart": 0, "declaration": { - "commentStart": 4733, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4733, + "commentStart": 0, "end": 0, "name": "plane002", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4744, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 4748, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4748, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4756, - "end": 0, - "properties": [ + "commentStart": 0, + "elements": [ { - "commentStart": 4762, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 4762, - "end": 0, - "name": "origin", - "start": 0, - "type": "Identifier" - }, + "raw": "0.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 4771, - "elements": [ - { - "commentStart": 4772, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 4777, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 4782, - "end": 0, - "raw": ".81", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.81, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.0, + "suffix": "None" } }, { - "commentStart": 4792, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 4792, - "end": 0, - "name": "xAxis", - "start": 0, - "type": "Identifier" - }, + "raw": "0.0", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 4800, - "elements": [ - { - "commentStart": 4801, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "commentStart": 4806, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 4811, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.0, + "suffix": "None" } }, { - "commentStart": 4821, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 4821, - "end": 0, - "name": "yAxis", - "start": 0, - "type": "Identifier" - }, + "raw": ".81", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 4829, - "elements": [ - { - "commentStart": 4830, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 4835, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - { - "arguments": [ - { - "arguments": [ - { - "commentStart": 4854, - "end": 0, - "raw": "7", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 7.0, - "suffix": "None" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 4844, - "end": 0, - "name": { - "commentStart": 4844, - "end": 0, - "name": "toRadians", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 4844, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "callee": { - "abs_path": false, - "commentStart": 4840, - "end": 0, - "name": { - "commentStart": 4840, - "end": 0, - "name": "sin", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 4840, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - } - }, - { - "commentStart": 4864, - "end": 0, - "key": { - "commentStart": 4864, - "end": 0, - "name": "zAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4872, - "elements": [ - { - "commentStart": 4873, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 4878, - "end": 0, - "raw": "0.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 4883, - "end": 0, - "raw": "1.0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "value": 0.81, + "suffix": "None" } } ], + "end": 0, "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "xAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "commentStart": 0, + "end": 0, + "raw": "7", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 7.0, + "suffix": "None" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "toRadians", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "sin", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1.0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" } } ], @@ -8096,12 +8059,12 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 4893, + "commentStart": 0, "declaration": { - "commentStart": 4939, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4939, + "commentStart": 0, "end": 0, "name": "z", "start": 0, @@ -8111,12 +8074,12 @@ description: Result of parsing keyboard.kcl "body": { "body": [ { - "commentStart": 4967, + "commentStart": 0, "declaration": { - "commentStart": 4967, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4967, + "commentStart": 0, "end": 0, "name": "z", "start": 0, @@ -8128,10 +8091,10 @@ description: Result of parsing keyboard.kcl "arguments": [ { "abs_path": false, - "commentStart": 4985, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4985, + "commentStart": 0, "end": 0, "name": "plane002", "start": 0, @@ -8145,10 +8108,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 4971, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4971, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -8158,7 +8121,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 4971, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8167,13 +8130,13 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 5017, + "commentStart": 0, "elements": [ { - "commentStart": 5028, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5028, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -8186,11 +8149,11 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 5032, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5032, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -8198,7 +8161,7 @@ description: Result of parsing keyboard.kcl "type": "Identifier" }, "property": { - "commentStart": 5039, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -8218,13 +8181,13 @@ description: Result of parsing keyboard.kcl "type": "BinaryExpression" }, { - "commentStart": 5052, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5052, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5052, + "commentStart": 0, "end": 0, "raw": "0.15", "start": 0, @@ -8238,10 +8201,10 @@ description: Result of parsing keyboard.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5059, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5059, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -8258,11 +8221,11 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 5067, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5067, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -8270,7 +8233,7 @@ description: Result of parsing keyboard.kcl "type": "Identifier" }, "property": { - "commentStart": 5074, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -8296,7 +8259,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 5087, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -8305,10 +8268,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 5002, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5002, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -8318,7 +8281,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 5002, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8329,18 +8292,18 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 5103, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5112, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 5113, + "commentStart": 0, "end": 0, "raw": "0.15", "start": 0, @@ -8351,7 +8314,7 @@ description: Result of parsing keyboard.kcl "suffix": "None" } }, - "commentStart": 5112, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8361,10 +8324,10 @@ description: Result of parsing keyboard.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5120, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5120, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -8383,10 +8346,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 5097, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5097, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -8396,7 +8359,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 5097, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8408,17 +8371,17 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 5140, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5149, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5149, + "commentStart": 0, "end": 0, "raw": "0.15", "start": 0, @@ -8432,10 +8395,10 @@ description: Result of parsing keyboard.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5156, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5156, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -8454,10 +8417,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 5134, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5134, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -8467,7 +8430,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 5134, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8477,148 +8440,136 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 5184, - "end": 0, - "properties": [ - { - "commentStart": 5195, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "47.15", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 47.15, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 5195, + "left": { + "commentStart": 0, "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 5203, - "end": 0, - "raw": "47.15", + "raw": "0.3", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 47.15, + "value": 0.3, "suffix": "None" } - } - }, - { - "commentStart": 5219, - "end": 0, - "key": { - "commentStart": 5219, + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "to", + "name": { + "commentStart": 0, + "end": 0, + "name": "scale", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 5224, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, "end": 0, - "left": { - "commentStart": 5224, - "end": 0, - "left": { - "commentStart": 5224, - "end": 0, - "raw": "0.3", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.3, - "suffix": "None" - } - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 5230, - "end": 0, - "name": { - "commentStart": 5230, - "end": 0, - "name": "scale", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "commentStart": 5238, - "computed": false, - "end": 0, - "object": { - "commentStart": 5238, - "end": 0, - "name": "origin", - "start": 0, - "type": "Identifier", - "type": "Identifier" - }, - "property": { - "commentStart": 5245, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - "start": 0, - "type": "MemberExpression", - "type": "MemberExpression" - }, + "name": "origin", "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 5258, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 5261, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "seg1" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "seg1" + } } ], "callee": { "abs_path": false, - "commentStart": 5170, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5170, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -8626,28 +8577,29 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 5170, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 5281, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5295, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5295, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -8660,11 +8612,11 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 5299, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5299, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -8672,7 +8624,7 @@ description: Result of parsing keyboard.kcl "type": "Identifier" }, "property": { - "commentStart": 5306, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -8695,14 +8647,14 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 5310, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5316, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -8713,10 +8665,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 5275, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5275, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -8726,7 +8678,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 5275, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8738,17 +8690,17 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 5336, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5345, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5345, + "commentStart": 0, "end": 0, "raw": "0.63", "start": 0, @@ -8762,10 +8714,10 @@ description: Result of parsing keyboard.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5352, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5352, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -8784,10 +8736,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 5330, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5330, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -8797,7 +8749,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 5330, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8809,17 +8761,17 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 5372, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5381, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5381, + "commentStart": 0, "end": 0, "raw": "0.225", "start": 0, @@ -8833,10 +8785,10 @@ description: Result of parsing keyboard.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5389, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5389, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -8855,10 +8807,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 5366, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5366, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -8868,7 +8820,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 5366, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8880,18 +8832,18 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 5409, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5418, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 5419, + "commentStart": 0, "end": 0, "raw": "0.57", "start": 0, @@ -8902,7 +8854,7 @@ description: Result of parsing keyboard.kcl "suffix": "None" } }, - "commentStart": 5418, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8912,10 +8864,10 @@ description: Result of parsing keyboard.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 5426, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5426, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -8934,10 +8886,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 5403, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5403, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -8947,468 +8899,73 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 5403, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, - { - "arguments": [ - { - "commentStart": 5454, - "end": 0, - "properties": [ - { - "commentStart": 5465, - "end": 0, - "key": { - "commentStart": 5465, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 5473, - "end": 0, - "raw": "47.15", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 47.15, - "suffix": "None" - } - } - }, - { - "commentStart": 5489, - "end": 0, - "key": { - "commentStart": 5489, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 5494, - "end": 0, - "left": { - "commentStart": 5494, - "end": 0, - "left": { - "commentStart": 5494, - "end": 0, - "raw": "0.93", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.93, - "suffix": "None" - } - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 5501, - "end": 0, - "name": { - "commentStart": 5501, - "end": 0, - "name": "scale", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "commentStart": 5509, - "computed": false, - "end": 0, - "object": { - "commentStart": 5509, - "end": 0, - "name": "origin", - "start": 0, - "type": "Identifier", - "type": "Identifier" - }, - "property": { - "commentStart": 5516, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - "start": 0, - "type": "MemberExpression", - "type": "MemberExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 5529, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 5440, - "end": 0, - "name": { - "commentStart": 5440, - "end": 0, - "name": "angledLineToX", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 5440, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 5545, + "commentStart": 0, "end": 0, - "name": "length", + "name": "angle", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5554, + "commentStart": 0, + "end": 0, + "raw": "47.15", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 47.15, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, "end": 0, "left": { - "commentStart": 5554, + "commentStart": 0, "end": 0, - "raw": "0.15", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.15, - "suffix": "None" - } - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 5561, - "end": 0, - "name": { - "commentStart": 5561, + "left": { + "commentStart": 0, "end": 0, - "name": "scale", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 5539, - "end": 0, - "name": { - "commentStart": 5539, - "end": 0, - "name": "yLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 5539, - "end": 0, - "start": 0, - "type": "CallExpressionKw", - "type": "CallExpressionKw", - "unlabeled": null - }, - { - "arguments": [ - { - "type": "LabeledArg", - "label": { - "commentStart": 5581, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "arg": { - "commentStart": 5590, - "end": 0, - "left": { - "argument": { - "commentStart": 5591, - "end": 0, - "raw": "0.15", + "raw": "0.93", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 0.15, + "value": 0.93, "suffix": "None" } }, - "commentStart": 5590, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 5598, - "end": 0, - "name": { - "commentStart": 5598, - "end": 0, - "name": "scale", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 5575, - "end": 0, - "name": { - "commentStart": 5575, - "end": 0, - "name": "xLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 5575, - "end": 0, - "start": 0, - "type": "CallExpressionKw", - "type": "CallExpressionKw", - "unlabeled": null - }, - { - "arguments": [ - { - "commentStart": 5623, - "end": 0, - "properties": [ - { - "commentStart": 5634, - "end": 0, - "key": { - "commentStart": 5634, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 5642, - "end": 0, - "raw": "47.15", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 47.15, - "suffix": "None" - } - } - }, - { - "commentStart": 5658, - "end": 0, - "key": { - "commentStart": 5658, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 5675, - "end": 0, - "name": { - "commentStart": 5675, - "end": 0, - "name": "seg1", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 5668, - "end": 0, - "name": { - "commentStart": 5668, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 5668, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 5667, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 5691, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 5694, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "seg2" - } - ], - "callee": { - "abs_path": false, - "commentStart": 5612, - "end": 0, - "name": { - "commentStart": 5612, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 5612, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "type": "LabeledArg", - "label": { - "commentStart": 5714, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "arg": { - "arguments": [ - { + "operator": "*", + "right": { "abs_path": false, - "commentStart": 5730, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5730, + "commentStart": 0, "end": 0, - "name": "seg3", + "name": "scale", "start": 0, "type": "Identifier" }, @@ -9416,86 +8973,18 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name", "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 5723, - "end": 0, - "name": { - "commentStart": 5723, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" }, - "path": [], "start": 0, - "type": "Name" - }, - "commentStart": 5723, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - } - ], - "callee": { - "abs_path": false, - "commentStart": 5708, - "end": 0, - "name": { - "commentStart": 5708, - "end": 0, - "name": "yLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 5708, - "end": 0, - "start": 0, - "type": "CallExpressionKw", - "type": "CallExpressionKw", - "unlabeled": null - }, - { - "arguments": [ - { - "type": "LabeledArg", - "label": { - "commentStart": 5750, - "end": 0, - "name": "endAbsolute", - "start": 0, - "type": "Identifier" - }, - "arg": { - "commentStart": 5764, - "end": 0, - "left": { - "commentStart": 5764, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } + "type": "BinaryExpression", + "type": "BinaryExpression" }, "operator": "+", "right": { - "commentStart": 5768, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 5768, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -9503,7 +8992,7 @@ description: Result of parsing keyboard.kcl "type": "Identifier" }, "property": { - "commentStart": 5775, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -9526,12 +9015,12 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 5744, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5744, + "commentStart": 0, "end": 0, - "name": "xLine", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -9539,7 +9028,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 5744, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9551,42 +9040,34 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 5792, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5801, + "commentStart": 0, "end": 0, "left": { - "argument": { - "commentStart": 5802, - "end": 0, - "raw": "0.225", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.225, - "suffix": "None" - } - }, - "commentStart": 5801, + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "0.15", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.15, + "suffix": "None" + } }, "operator": "*", "right": { "abs_path": false, - "commentStart": 5810, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5810, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -9605,10 +9086,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 5786, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5786, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -9618,7 +9099,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 5786, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9628,14 +9109,453 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 5849, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "0.15", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.15, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "scale", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "xLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "47.15", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 47.15, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg1", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "seg2" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg3", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "yLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + "operator": "+", + "right": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "origin", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "xLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "0.225", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.225, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "scale", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "yLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 5860, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5860, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, @@ -9644,7 +9564,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 5868, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -9657,10 +9577,10 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 5880, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5880, + "commentStart": 0, "end": 0, "name": "intersectTag", "start": 0, @@ -9670,10 +9590,10 @@ description: Result of parsing keyboard.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 5895, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5895, + "commentStart": 0, "end": 0, "name": "seg2", "start": 0, @@ -9686,10 +9606,10 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 5910, + "commentStart": 0, "end": 0, "key": { - "commentStart": 5910, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -9698,7 +9618,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 5919, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -9716,7 +9636,7 @@ description: Result of parsing keyboard.kcl "type": "ObjectExpression" }, { - "commentStart": 5931, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -9725,10 +9645,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 5824, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5824, + "commentStart": 0, "end": 0, "name": "angledLineThatIntersects", "start": 0, @@ -9738,7 +9658,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 5824, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9748,10 +9668,10 @@ description: Result of parsing keyboard.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 5941, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5941, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -9761,7 +9681,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 5941, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9772,7 +9692,7 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 5964, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -9781,10 +9701,10 @@ description: Result of parsing keyboard.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 5974, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5974, + "commentStart": 0, "end": 0, "name": "depth", "start": 0, @@ -9795,7 +9715,7 @@ description: Result of parsing keyboard.kcl "type": "Name", "type": "Name" }, - "commentStart": 5973, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9806,10 +9726,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 5956, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5956, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -9819,7 +9739,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 5956, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9831,7 +9751,7 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 5999, + "commentStart": 0, "end": 0, "name": "color", "start": 0, @@ -9839,10 +9759,10 @@ description: Result of parsing keyboard.kcl }, "arg": { "abs_path": false, - "commentStart": 6007, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6007, + "commentStart": 0, "end": 0, "name": "baseColor", "start": 0, @@ -9857,10 +9777,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 5988, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5988, + "commentStart": 0, "end": 0, "name": "appearance", "start": 0, @@ -9870,7 +9790,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 5988, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9878,7 +9798,7 @@ description: Result of parsing keyboard.kcl "unlabeled": null } ], - "commentStart": 4971, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -9896,10 +9816,10 @@ description: Result of parsing keyboard.kcl { "argument": { "abs_path": false, - "commentStart": 6027, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6027, + "commentStart": 0, "end": 0, "name": "z", "start": 0, @@ -9910,24 +9830,24 @@ description: Result of parsing keyboard.kcl "type": "Name", "type": "Name" }, - "commentStart": 6020, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 4963, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 4940, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 4941, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -9937,7 +9857,7 @@ description: Result of parsing keyboard.kcl { "type": "Parameter", "identifier": { - "commentStart": 4949, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -9947,7 +9867,7 @@ description: Result of parsing keyboard.kcl { "type": "Parameter", "identifier": { - "commentStart": 4956, + "commentStart": 0, "end": 0, "name": "depth", "start": 0, @@ -9974,12 +9894,12 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 6030, + "commentStart": 0, "declaration": { - "commentStart": 6076, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6076, + "commentStart": 0, "end": 0, "name": "o", "start": 0, @@ -9989,12 +9909,12 @@ description: Result of parsing keyboard.kcl "body": { "body": [ { - "commentStart": 6104, + "commentStart": 0, "declaration": { - "commentStart": 6104, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6104, + "commentStart": 0, "end": 0, "name": "oSketch001", "start": 0, @@ -10006,10 +9926,10 @@ description: Result of parsing keyboard.kcl "arguments": [ { "abs_path": false, - "commentStart": 6131, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6131, + "commentStart": 0, "end": 0, "name": "plane002", "start": 0, @@ -10023,10 +9943,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 6117, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6117, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -10036,7 +9956,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 6117, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -10045,16 +9965,16 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 6163, + "commentStart": 0, "elements": [ { - "commentStart": 6174, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6174, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6174, + "commentStart": 0, "end": 0, "raw": ".788", "start": 0, @@ -10068,10 +9988,10 @@ description: Result of parsing keyboard.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6181, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6181, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -10088,11 +10008,11 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 6189, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6189, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -10100,7 +10020,7 @@ description: Result of parsing keyboard.kcl "type": "Identifier" }, "property": { - "commentStart": 6196, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -10120,13 +10040,13 @@ description: Result of parsing keyboard.kcl "type": "BinaryExpression" }, { - "commentStart": 6209, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6209, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6209, + "commentStart": 0, "end": 0, "raw": ".921", "start": 0, @@ -10140,10 +10060,10 @@ description: Result of parsing keyboard.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6216, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6216, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -10160,11 +10080,11 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 6224, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6224, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -10172,7 +10092,7 @@ description: Result of parsing keyboard.kcl "type": "Identifier" }, "property": { - "commentStart": 6231, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -10198,7 +10118,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 6244, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -10207,10 +10127,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 6148, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6148, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -10220,7 +10140,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 6148, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -10229,14 +10149,14 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 6258, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 6269, + "commentStart": 0, "end": 0, "key": { - "commentStart": 6269, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -10245,10 +10165,10 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 6282, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6282, + "commentStart": 0, "end": 0, "raw": "47.15", "start": 0, @@ -10261,7 +10181,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 6290, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -10278,10 +10198,10 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 6302, + "commentStart": 0, "end": 0, "key": { - "commentStart": 6302, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -10290,13 +10210,13 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 6313, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6313, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6313, + "commentStart": 0, "end": 0, "raw": "47.15", "start": 0, @@ -10309,7 +10229,7 @@ description: Result of parsing keyboard.kcl }, "operator": "-", "right": { - "commentStart": 6321, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -10326,7 +10246,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 6325, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -10343,10 +10263,10 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 6339, + "commentStart": 0, "end": 0, "key": { - "commentStart": 6339, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -10355,10 +10275,10 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 6348, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6348, + "commentStart": 0, "end": 0, "raw": ".525", "start": 0, @@ -10372,10 +10292,10 @@ description: Result of parsing keyboard.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6355, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6355, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -10397,7 +10317,7 @@ description: Result of parsing keyboard.kcl "type": "ObjectExpression" }, { - "commentStart": 6371, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -10406,10 +10326,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 6254, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6254, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -10419,7 +10339,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 6254, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -10428,102 +10348,80 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 6392, - "end": 0, - "properties": [ - { - "commentStart": 6394, - "end": 0, - "key": { - "commentStart": 6394, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 6402, - "end": 0, - "raw": "47.15", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 47.15, - "suffix": "None" - } - } - }, - { - "commentStart": 6409, - "end": 0, - "key": { - "commentStart": 6409, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 6418, - "end": 0, - "left": { - "commentStart": 6418, - "end": 0, - "raw": ".24", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.24, - "suffix": "None" - } - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 6424, - "end": 0, - "name": { - "commentStart": 6424, - "end": 0, - "name": "scale", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "47.15", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 47.15, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 6433, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "raw": ".24", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.24, + "suffix": "None" + } + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "scale", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 6381, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6381, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -10533,23 +10431,24 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 6381, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 6447, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 6458, + "commentStart": 0, "end": 0, "key": { - "commentStart": 6458, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -10558,13 +10457,13 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 6471, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6471, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6471, + "commentStart": 0, "end": 0, "raw": "47.15", "start": 0, @@ -10577,7 +10476,7 @@ description: Result of parsing keyboard.kcl }, "operator": "-", "right": { - "commentStart": 6479, + "commentStart": 0, "end": 0, "raw": "11", "start": 0, @@ -10594,7 +10493,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 6484, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -10611,10 +10510,10 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 6498, + "commentStart": 0, "end": 0, "key": { - "commentStart": 6498, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -10623,10 +10522,10 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 6509, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6509, + "commentStart": 0, "end": 0, "raw": "47.15", "start": 0, @@ -10639,7 +10538,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 6517, + "commentStart": 0, "end": 0, "raw": "11", "start": 0, @@ -10656,10 +10555,10 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 6530, + "commentStart": 0, "end": 0, "key": { - "commentStart": 6530, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -10668,10 +10567,10 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 6539, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6539, + "commentStart": 0, "end": 0, "raw": ".288", "start": 0, @@ -10685,10 +10584,10 @@ description: Result of parsing keyboard.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6546, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6546, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -10710,7 +10609,7 @@ description: Result of parsing keyboard.kcl "type": "ObjectExpression" }, { - "commentStart": 6562, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -10719,10 +10618,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 6443, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6443, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -10732,7 +10631,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 6443, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -10742,10 +10641,10 @@ description: Result of parsing keyboard.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 6572, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6572, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -10755,7 +10654,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 6572, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -10766,7 +10665,7 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 6595, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -10775,10 +10674,10 @@ description: Result of parsing keyboard.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 6605, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6605, + "commentStart": 0, "end": 0, "name": "depth", "start": 0, @@ -10789,7 +10688,7 @@ description: Result of parsing keyboard.kcl "type": "Name", "type": "Name" }, - "commentStart": 6604, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10800,10 +10699,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 6587, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6587, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -10813,7 +10712,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 6587, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10825,7 +10724,7 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 6630, + "commentStart": 0, "end": 0, "name": "color", "start": 0, @@ -10833,10 +10732,10 @@ description: Result of parsing keyboard.kcl }, "arg": { "abs_path": false, - "commentStart": 6638, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6638, + "commentStart": 0, "end": 0, "name": "baseColor", "start": 0, @@ -10851,10 +10750,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 6619, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6619, + "commentStart": 0, "end": 0, "name": "appearance", "start": 0, @@ -10864,7 +10763,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 6619, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10872,7 +10771,7 @@ description: Result of parsing keyboard.kcl "unlabeled": null } ], - "commentStart": 6117, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -10888,12 +10787,12 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 6648, + "commentStart": 0, "declaration": { - "commentStart": 6652, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6652, + "commentStart": 0, "end": 0, "name": "o", "start": 0, @@ -10905,10 +10804,10 @@ description: Result of parsing keyboard.kcl "arguments": [ { "abs_path": false, - "commentStart": 6670, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6670, + "commentStart": 0, "end": 0, "name": "plane002", "start": 0, @@ -10922,10 +10821,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 6656, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6656, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -10935,7 +10834,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 6656, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -10944,16 +10843,16 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 6702, + "commentStart": 0, "elements": [ { - "commentStart": 6713, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6713, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6713, + "commentStart": 0, "end": 0, "raw": ".16", "start": 0, @@ -10967,10 +10866,10 @@ description: Result of parsing keyboard.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6719, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6719, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -10987,11 +10886,11 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 6727, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6727, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -10999,7 +10898,7 @@ description: Result of parsing keyboard.kcl "type": "Identifier" }, "property": { - "commentStart": 6734, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -11019,13 +10918,13 @@ description: Result of parsing keyboard.kcl "type": "BinaryExpression" }, { - "commentStart": 6747, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6747, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6747, + "commentStart": 0, "end": 0, "raw": ".079", "start": 0, @@ -11039,10 +10938,10 @@ description: Result of parsing keyboard.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6754, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6754, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -11059,11 +10958,11 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 6762, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 6762, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -11071,7 +10970,7 @@ description: Result of parsing keyboard.kcl "type": "Identifier" }, "property": { - "commentStart": 6769, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -11097,7 +10996,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 6782, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -11106,10 +11005,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 6687, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6687, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -11119,7 +11018,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 6687, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -11128,14 +11027,14 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 6796, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 6807, + "commentStart": 0, "end": 0, "key": { - "commentStart": 6807, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -11144,13 +11043,13 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 6820, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6820, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6820, + "commentStart": 0, "end": 0, "raw": "47.15", "start": 0, @@ -11163,7 +11062,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 6828, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -11180,7 +11079,7 @@ description: Result of parsing keyboard.kcl }, "operator": "-", "right": { - "commentStart": 6832, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -11197,10 +11096,10 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 6846, + "commentStart": 0, "end": 0, "key": { - "commentStart": 6846, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -11209,10 +11108,10 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 6857, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6857, + "commentStart": 0, "end": 0, "raw": "47.15", "start": 0, @@ -11225,7 +11124,7 @@ description: Result of parsing keyboard.kcl }, "operator": "-", "right": { - "commentStart": 6865, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -11242,10 +11141,10 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 6877, + "commentStart": 0, "end": 0, "key": { - "commentStart": 6877, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -11254,10 +11153,10 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 6886, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6886, + "commentStart": 0, "end": 0, "raw": ".525", "start": 0, @@ -11271,10 +11170,10 @@ description: Result of parsing keyboard.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6893, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6893, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -11296,7 +11195,7 @@ description: Result of parsing keyboard.kcl "type": "ObjectExpression" }, { - "commentStart": 6909, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -11305,10 +11204,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 6792, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6792, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -11318,7 +11217,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 6792, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -11327,110 +11226,88 @@ description: Result of parsing keyboard.kcl { "arguments": [ { - "commentStart": 6930, - "end": 0, - "properties": [ - { - "commentStart": 6932, - "end": 0, - "key": { - "commentStart": 6932, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "47.15", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 47.15, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "argument": { + "commentStart": 0, "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 6940, - "end": 0, - "raw": "47.15", + "raw": ".24", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 47.15, + "value": 0.24, "suffix": "None" } - } - }, - { - "commentStart": 6947, + }, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 6947, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "name": "length", + "name": "scale", "start": 0, "type": "Identifier" }, + "path": [], "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 6956, - "end": 0, - "left": { - "argument": { - "commentStart": 6957, - "end": 0, - "raw": ".24", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.24, - "suffix": "None" - } - }, - "commentStart": 6956, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 6963, - "end": 0, - "name": { - "commentStart": 6963, - "end": 0, - "name": "scale", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 6972, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 6919, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6919, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -11440,23 +11317,24 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 6919, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 6986, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 6997, + "commentStart": 0, "end": 0, "key": { - "commentStart": 6997, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -11465,10 +11343,10 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 7010, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7010, + "commentStart": 0, "end": 0, "raw": "47.15", "start": 0, @@ -11481,7 +11359,7 @@ description: Result of parsing keyboard.kcl }, "operator": "-", "right": { - "commentStart": 7018, + "commentStart": 0, "end": 0, "raw": "11", "start": 0, @@ -11498,10 +11376,10 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 7031, + "commentStart": 0, "end": 0, "key": { - "commentStart": 7031, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -11510,13 +11388,13 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 7042, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7042, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7042, + "commentStart": 0, "end": 0, "raw": "47.15", "start": 0, @@ -11529,7 +11407,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 7050, + "commentStart": 0, "end": 0, "raw": "11", "start": 0, @@ -11546,7 +11424,7 @@ description: Result of parsing keyboard.kcl }, "operator": "-", "right": { - "commentStart": 7055, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -11563,10 +11441,10 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 7069, + "commentStart": 0, "end": 0, "key": { - "commentStart": 7069, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -11575,10 +11453,10 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 7078, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7078, + "commentStart": 0, "end": 0, "raw": ".288", "start": 0, @@ -11592,10 +11470,10 @@ description: Result of parsing keyboard.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 7085, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7085, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -11617,7 +11495,7 @@ description: Result of parsing keyboard.kcl "type": "ObjectExpression" }, { - "commentStart": 7101, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -11626,10 +11504,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 6982, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6982, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -11639,7 +11517,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 6982, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -11649,10 +11527,10 @@ description: Result of parsing keyboard.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 7111, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7111, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -11662,7 +11540,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 7111, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -11673,7 +11551,7 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 7134, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -11682,10 +11560,10 @@ description: Result of parsing keyboard.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 7144, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7144, + "commentStart": 0, "end": 0, "name": "depth", "start": 0, @@ -11696,7 +11574,7 @@ description: Result of parsing keyboard.kcl "type": "Name", "type": "Name" }, - "commentStart": 7143, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11707,10 +11585,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 7126, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7126, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -11720,7 +11598,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 7126, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11732,7 +11610,7 @@ description: Result of parsing keyboard.kcl { "type": "LabeledArg", "label": { - "commentStart": 7169, + "commentStart": 0, "end": 0, "name": "color", "start": 0, @@ -11740,10 +11618,10 @@ description: Result of parsing keyboard.kcl }, "arg": { "abs_path": false, - "commentStart": 7177, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7177, + "commentStart": 0, "end": 0, "name": "baseColor", "start": 0, @@ -11758,10 +11636,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 7158, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7158, + "commentStart": 0, "end": 0, "name": "appearance", "start": 0, @@ -11771,7 +11649,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 7158, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11779,7 +11657,7 @@ description: Result of parsing keyboard.kcl "unlabeled": null } ], - "commentStart": 6656, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -11797,10 +11675,10 @@ description: Result of parsing keyboard.kcl { "argument": { "abs_path": false, - "commentStart": 7197, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7197, + "commentStart": 0, "end": 0, "name": "o", "start": 0, @@ -11811,20 +11689,20 @@ description: Result of parsing keyboard.kcl "type": "Name", "type": "Name" }, - "commentStart": 7190, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 6100, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "0": [ { - "commentStart": 6648, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -11838,13 +11716,13 @@ description: Result of parsing keyboard.kcl }, "start": 0 }, - "commentStart": 6077, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 6078, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -11854,7 +11732,7 @@ description: Result of parsing keyboard.kcl { "type": "Parameter", "identifier": { - "commentStart": 6086, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -11864,7 +11742,7 @@ description: Result of parsing keyboard.kcl { "type": "Parameter", "identifier": { - "commentStart": 6093, + "commentStart": 0, "end": 0, "name": "depth", "start": 0, @@ -11891,15 +11769,15 @@ description: Result of parsing keyboard.kcl "type": "VariableDeclaration" }, { - "commentStart": 7200, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 7275, + "commentStart": 0, "elements": [ { - "commentStart": 7276, + "commentStart": 0, "end": 0, "raw": "2.3", "start": 0, @@ -11911,7 +11789,7 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 7281, + "commentStart": 0, "end": 0, "raw": "1.3", "start": 0, @@ -11929,7 +11807,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 7287, + "commentStart": 0, "end": 0, "raw": ".4", "start": 0, @@ -11941,7 +11819,7 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 7291, + "commentStart": 0, "end": 0, "raw": "0.03", "start": 0, @@ -11955,10 +11833,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 7273, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7273, + "commentStart": 0, "end": 0, "name": "z", "start": 0, @@ -11968,7 +11846,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 7273, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -11984,15 +11862,15 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 7297, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 7299, + "commentStart": 0, "elements": [ { - "commentStart": 7300, + "commentStart": 0, "end": 0, "raw": "8.71", "start": 0, @@ -12004,14 +11882,14 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 7306, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7306, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7306, + "commentStart": 0, "end": 0, "name": "row4", "start": 0, @@ -12024,7 +11902,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 7313, + "commentStart": 0, "end": 0, "raw": ".08", "start": 0, @@ -12046,7 +11924,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 7319, + "commentStart": 0, "end": 0, "raw": "0.4", "start": 0, @@ -12058,7 +11936,7 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 7324, + "commentStart": 0, "end": 0, "raw": "0.03", "start": 0, @@ -12072,10 +11950,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 7297, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7297, + "commentStart": 0, "end": 0, "name": "o", "start": 0, @@ -12085,7 +11963,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 7297, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -12096,18 +11974,18 @@ description: Result of parsing keyboard.kcl "type": "ExpressionStatement" }, { - "commentStart": 7330, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { - "commentStart": 7332, + "commentStart": 0, "elements": [ { - "commentStart": 7333, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7333, + "commentStart": 0, "end": 0, "raw": "8.71", "start": 0, @@ -12120,7 +11998,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 7340, + "commentStart": 0, "end": 0, "raw": "0.9", "start": 0, @@ -12136,14 +12014,14 @@ description: Result of parsing keyboard.kcl "type": "BinaryExpression" }, { - "commentStart": 7345, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7345, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7345, + "commentStart": 0, "end": 0, "name": "row4", "start": 0, @@ -12156,7 +12034,7 @@ description: Result of parsing keyboard.kcl }, "operator": "+", "right": { - "commentStart": 7352, + "commentStart": 0, "end": 0, "raw": ".08", "start": 0, @@ -12178,7 +12056,7 @@ description: Result of parsing keyboard.kcl "type": "ArrayExpression" }, { - "commentStart": 7358, + "commentStart": 0, "end": 0, "raw": "0.4", "start": 0, @@ -12190,7 +12068,7 @@ description: Result of parsing keyboard.kcl } }, { - "commentStart": 7363, + "commentStart": 0, "end": 0, "raw": "0.03", "start": 0, @@ -12204,10 +12082,10 @@ description: Result of parsing keyboard.kcl ], "callee": { "abs_path": false, - "commentStart": 7330, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7330, + "commentStart": 0, "end": 0, "name": "o", "start": 0, @@ -12217,7 +12095,7 @@ description: Result of parsing keyboard.kcl "start": 0, "type": "Name" }, - "commentStart": 7330, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -12235,7 +12113,7 @@ description: Result of parsing keyboard.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 77, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -12250,10 +12128,10 @@ description: Result of parsing keyboard.kcl ], "properties": [ { - "commentStart": 86, + "commentStart": 0, "end": 0, "key": { - "commentStart": 86, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -12263,10 +12141,10 @@ description: Result of parsing keyboard.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 106, + "commentStart": 0, "end": 0, "name": { - "commentStart": 106, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -12287,7 +12165,7 @@ description: Result of parsing keyboard.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 109, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/keyboard/ops.snap b/rust/kcl-lib/tests/kcl_samples/keyboard/ops.snap index f28c29cb8..e9b0baa1a 100644 --- a/rust/kcl-lib/tests/kcl_samples/keyboard/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/keyboard/ops.snap @@ -5,7 +5,7 @@ description: Operations executed keyboard.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -110,16 +110,7 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg04", @@ -131,7 +122,15 @@ description: Operations executed keyboard.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -212,8 +211,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -223,185 +222,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -549,8 +543,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -560,185 +554,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -886,8 +875,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -897,185 +886,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -1223,8 +1207,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -1234,185 +1218,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -1560,8 +1539,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -1571,185 +1550,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -1897,8 +1871,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -1908,185 +1882,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -2234,8 +2203,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -2245,185 +2214,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -2571,8 +2535,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -2582,185 +2546,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -2908,8 +2867,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -2919,185 +2878,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -3245,8 +3199,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -3256,185 +3210,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -3582,8 +3531,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -3593,185 +3542,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -3919,8 +3863,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -3930,185 +3874,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -4256,8 +4195,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -4267,185 +4206,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -4593,8 +4527,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -4604,185 +4538,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -4930,8 +4859,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -4941,185 +4870,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -5267,8 +5191,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -5278,185 +5202,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -5604,8 +5523,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -5615,185 +5534,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -5941,8 +5855,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -5952,185 +5866,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -6278,8 +6187,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -6289,185 +6198,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -6615,8 +6519,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -6626,185 +6530,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -6952,8 +6851,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "keyFn", "functionSourceRange": [ - 1886, - 3038, + 1887, + 3015, 0 ], "unlabeledArg": null, @@ -6963,185 +6862,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -7307,8 +7201,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "z", "functionSourceRange": [ - 4940, - 6030, + 4893, + 5913, 0 ], "unlabeledArg": null, @@ -7318,185 +7212,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.81, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.81, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -7549,8 +7438,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "o", "functionSourceRange": [ - 6077, - 7200, + 5960, + 7069, 0 ], "unlabeledArg": null, @@ -7560,185 +7449,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.81, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.81, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -7784,185 +7668,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.81, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.81, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -8015,8 +7894,8 @@ description: Operations executed keyboard.kcl "type": "FunctionCall", "name": "o", "functionSourceRange": [ - 6077, - 7200, + 5960, + 7069, 0 ], "unlabeledArg": null, @@ -8026,185 +7905,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.81, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.81, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -8250,185 +8124,180 @@ description: Operations executed keyboard.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.81, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.81, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.12186934340514748, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.12186934340514748, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, diff --git a/rust/kcl-lib/tests/kcl_samples/keyboard/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/keyboard/program_memory.snap index 80400b928..6dfe5f6a6 100644 --- a/rust/kcl-lib/tests/kcl_samples/keyboard/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/keyboard/program_memory.snap @@ -50,362 +50,352 @@ description: Variables in memory after executing keyboard.kcl "plane001": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.7, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.7, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.1219, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.1219, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, "plane002": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.81, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.81, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.1219, - "ty": { - "type": "Known", - "type": "Count" - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "MixedArray", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.1219, + "ty": { + "type": "Known", + "type": "Count" + } + } + ] + }, + "zAxis": { + "type": "MixedArray", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -449,17 +439,26 @@ description: Variables in memory after executing keyboard.kcl "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -484,9 +483,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 682, - "end": 688, - "start": 682, + "commentStart": 700, + "end": 706, + "start": 700, "type": "TagDeclarator", "value": "seg02" }, @@ -497,9 +496,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 731, - "end": 737, - "start": 731, + "commentStart": 749, + "end": 755, + "start": 749, "type": "TagDeclarator", "value": "seg03" }, @@ -510,9 +509,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 807, - "end": 813, - "start": 807, + "commentStart": 825, + "end": 831, + "start": 825, "type": "TagDeclarator", "value": "seg04" }, @@ -558,9 +557,9 @@ description: Variables in memory after executing keyboard.kcl 0.68 ], "tag": { - "commentStart": 682, - "end": 688, - "start": 682, + "commentStart": 700, + "end": 706, + "start": 700, "type": "TagDeclarator", "value": "seg02" }, @@ -583,9 +582,9 @@ description: Variables in memory after executing keyboard.kcl 1.399 ], "tag": { - "commentStart": 731, - "end": 737, - "start": 731, + "commentStart": 749, + "end": 755, + "start": 749, "type": "TagDeclarator", "value": "seg03" }, @@ -608,9 +607,9 @@ description: Variables in memory after executing keyboard.kcl 0.0 ], "tag": { - "commentStart": 807, - "end": 813, - "start": 807, + "commentStart": 825, + "end": 831, + "start": 825, "type": "TagDeclarator", "value": "seg04" }, @@ -651,22 +650,34 @@ description: Variables in memory after executing keyboard.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -721,28 +732,72 @@ description: Variables in memory after executing keyboard.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -820,17 +875,26 @@ description: Variables in memory after executing keyboard.kcl "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -855,9 +919,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 682, - "end": 688, - "start": 682, + "commentStart": 700, + "end": 706, + "start": 700, "type": "TagDeclarator", "value": "seg02" }, @@ -868,9 +932,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 731, - "end": 737, - "start": 731, + "commentStart": 749, + "end": 755, + "start": 749, "type": "TagDeclarator", "value": "seg03" }, @@ -881,9 +945,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 807, - "end": 813, - "start": 807, + "commentStart": 825, + "end": 831, + "start": 825, "type": "TagDeclarator", "value": "seg04" }, @@ -929,9 +993,9 @@ description: Variables in memory after executing keyboard.kcl 0.68 ], "tag": { - "commentStart": 682, - "end": 688, - "start": 682, + "commentStart": 700, + "end": 706, + "start": 700, "type": "TagDeclarator", "value": "seg02" }, @@ -954,9 +1018,9 @@ description: Variables in memory after executing keyboard.kcl 1.399 ], "tag": { - "commentStart": 731, - "end": 737, - "start": 731, + "commentStart": 749, + "end": 755, + "start": 749, "type": "TagDeclarator", "value": "seg03" }, @@ -979,9 +1043,9 @@ description: Variables in memory after executing keyboard.kcl 0.0 ], "tag": { - "commentStart": 807, - "end": 813, - "start": 807, + "commentStart": 825, + "end": 831, + "start": 825, "type": "TagDeclarator", "value": "seg04" }, @@ -1022,22 +1086,34 @@ description: Variables in memory after executing keyboard.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1092,28 +1168,72 @@ description: Variables in memory after executing keyboard.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -1191,17 +1311,26 @@ description: Variables in memory after executing keyboard.kcl "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1226,9 +1355,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 682, - "end": 688, - "start": 682, + "commentStart": 700, + "end": 706, + "start": 700, "type": "TagDeclarator", "value": "seg02" }, @@ -1239,9 +1368,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 731, - "end": 737, - "start": 731, + "commentStart": 749, + "end": 755, + "start": 749, "type": "TagDeclarator", "value": "seg03" }, @@ -1252,9 +1381,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 807, - "end": 813, - "start": 807, + "commentStart": 825, + "end": 831, + "start": 825, "type": "TagDeclarator", "value": "seg04" }, @@ -1300,9 +1429,9 @@ description: Variables in memory after executing keyboard.kcl 0.68 ], "tag": { - "commentStart": 682, - "end": 688, - "start": 682, + "commentStart": 700, + "end": 706, + "start": 700, "type": "TagDeclarator", "value": "seg02" }, @@ -1325,9 +1454,9 @@ description: Variables in memory after executing keyboard.kcl 1.399 ], "tag": { - "commentStart": 731, - "end": 737, - "start": 731, + "commentStart": 749, + "end": 755, + "start": 749, "type": "TagDeclarator", "value": "seg03" }, @@ -1350,9 +1479,9 @@ description: Variables in memory after executing keyboard.kcl 0.0 ], "tag": { - "commentStart": 807, - "end": 813, - "start": 807, + "commentStart": 825, + "end": 831, + "start": 825, "type": "TagDeclarator", "value": "seg04" }, @@ -1393,22 +1522,34 @@ description: Variables in memory after executing keyboard.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1463,28 +1604,72 @@ description: Variables in memory after executing keyboard.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -1562,17 +1747,26 @@ description: Variables in memory after executing keyboard.kcl "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1597,9 +1791,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 682, - "end": 688, - "start": 682, + "commentStart": 700, + "end": 706, + "start": 700, "type": "TagDeclarator", "value": "seg02" }, @@ -1610,9 +1804,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 731, - "end": 737, - "start": 731, + "commentStart": 749, + "end": 755, + "start": 749, "type": "TagDeclarator", "value": "seg03" }, @@ -1623,9 +1817,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 807, - "end": 813, - "start": 807, + "commentStart": 825, + "end": 831, + "start": 825, "type": "TagDeclarator", "value": "seg04" }, @@ -1671,9 +1865,9 @@ description: Variables in memory after executing keyboard.kcl 0.68 ], "tag": { - "commentStart": 682, - "end": 688, - "start": 682, + "commentStart": 700, + "end": 706, + "start": 700, "type": "TagDeclarator", "value": "seg02" }, @@ -1696,9 +1890,9 @@ description: Variables in memory after executing keyboard.kcl 1.399 ], "tag": { - "commentStart": 731, - "end": 737, - "start": 731, + "commentStart": 749, + "end": 755, + "start": 749, "type": "TagDeclarator", "value": "seg03" }, @@ -1721,9 +1915,9 @@ description: Variables in memory after executing keyboard.kcl 0.0 ], "tag": { - "commentStart": 807, - "end": 813, - "start": 807, + "commentStart": 825, + "end": 831, + "start": 825, "type": "TagDeclarator", "value": "seg04" }, @@ -1764,22 +1958,34 @@ description: Variables in memory after executing keyboard.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1834,28 +2040,72 @@ description: Variables in memory after executing keyboard.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -1897,42 +2147,78 @@ description: Variables in memory after executing keyboard.kcl "type": "Number", "value": 0.3, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "row2": { "type": "Number", "value": 1.2, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "row3": { "type": "Number", "value": 2.1, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "row4": { "type": "Number", "value": 3.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "row5": { "type": "Number", "value": 3.9, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "row6": { "type": "Number", "value": 4.8, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "seg01": { @@ -1980,9 +2266,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 682, - "end": 688, - "start": 682, + "commentStart": 700, + "end": 706, + "start": 700, "type": "TagDeclarator", "value": "seg02" }, @@ -1993,9 +2279,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 731, - "end": 737, - "start": 731, + "commentStart": 749, + "end": 755, + "start": 749, "type": "TagDeclarator", "value": "seg03" }, @@ -2006,9 +2292,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 807, - "end": 813, - "start": 807, + "commentStart": 825, + "end": 831, + "start": 825, "type": "TagDeclarator", "value": "seg04" }, @@ -2054,9 +2340,9 @@ description: Variables in memory after executing keyboard.kcl 0.68 ], "tag": { - "commentStart": 682, - "end": 688, - "start": 682, + "commentStart": 700, + "end": 706, + "start": 700, "type": "TagDeclarator", "value": "seg02" }, @@ -2079,9 +2365,9 @@ description: Variables in memory after executing keyboard.kcl 1.399 ], "tag": { - "commentStart": 731, - "end": 737, - "start": 731, + "commentStart": 749, + "end": 755, + "start": 749, "type": "TagDeclarator", "value": "seg03" }, @@ -2104,9 +2390,9 @@ description: Variables in memory after executing keyboard.kcl 0.0 ], "tag": { - "commentStart": 807, - "end": 813, - "start": 807, + "commentStart": 825, + "end": 831, + "start": 825, "type": "TagDeclarator", "value": "seg04" }, @@ -2147,22 +2433,34 @@ description: Variables in memory after executing keyboard.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2217,28 +2515,72 @@ description: Variables in memory after executing keyboard.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -2257,17 +2599,26 @@ description: Variables in memory after executing keyboard.kcl "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2292,9 +2643,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 682, - "end": 688, - "start": 682, + "commentStart": 700, + "end": 706, + "start": 700, "type": "TagDeclarator", "value": "seg02" }, @@ -2305,9 +2656,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 731, - "end": 737, - "start": 731, + "commentStart": 749, + "end": 755, + "start": 749, "type": "TagDeclarator", "value": "seg03" }, @@ -2318,9 +2669,9 @@ description: Variables in memory after executing keyboard.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 807, - "end": 813, - "start": 807, + "commentStart": 825, + "end": 831, + "start": 825, "type": "TagDeclarator", "value": "seg04" }, @@ -2366,9 +2717,9 @@ description: Variables in memory after executing keyboard.kcl 0.68 ], "tag": { - "commentStart": 682, - "end": 688, - "start": 682, + "commentStart": 700, + "end": 706, + "start": 700, "type": "TagDeclarator", "value": "seg02" }, @@ -2391,9 +2742,9 @@ description: Variables in memory after executing keyboard.kcl 1.399 ], "tag": { - "commentStart": 731, - "end": 737, - "start": 731, + "commentStart": 749, + "end": 755, + "start": 749, "type": "TagDeclarator", "value": "seg03" }, @@ -2416,9 +2767,9 @@ description: Variables in memory after executing keyboard.kcl 0.0 ], "tag": { - "commentStart": 807, - "end": 813, - "start": 807, + "commentStart": 825, + "end": 831, + "start": 825, "type": "TagDeclarator", "value": "seg04" }, @@ -2459,22 +2810,34 @@ description: Variables in memory after executing keyboard.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2529,28 +2892,72 @@ description: Variables in memory after executing keyboard.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.6, + "radius": { + "n": 0.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } diff --git a/rust/kcl-lib/tests/kcl_samples/kitt/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/kitt/artifact_commands.snap index 27f8b072f..da0902507 100644 --- a/rust/kcl-lib/tests/kcl_samples/kitt/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/kitt/artifact_commands.snap @@ -196,7 +196,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 18.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -437,7 +438,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -814,7 +816,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1215,7 +1218,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1456,7 +1460,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1697,7 +1702,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1938,7 +1944,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2315,7 +2322,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2716,7 +2724,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2957,7 +2966,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3198,7 +3208,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3439,7 +3450,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3680,7 +3692,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3921,7 +3934,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4162,7 +4176,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4403,7 +4418,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4644,7 +4660,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4885,7 +4902,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 4.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5126,7 +5144,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5367,7 +5386,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5608,7 +5628,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5882,7 +5903,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6123,7 +6145,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6397,7 +6420,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6638,7 +6662,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6879,7 +6904,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -7120,7 +7146,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -7361,7 +7388,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -7602,7 +7630,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -7843,7 +7872,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -8084,7 +8114,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -8325,7 +8356,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -8566,7 +8598,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": 2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -8807,7 +8840,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -9048,7 +9082,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -9289,7 +9324,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -9530,7 +9566,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -9771,7 +9808,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -10012,7 +10050,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -10253,7 +10292,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -10494,7 +10534,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -10735,7 +10776,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -10976,7 +11018,8 @@ description: Artifact commands kitt.kcl "type": "extrude", "target": "[uuid]", "distance": -2.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/kitt/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/kitt/artifact_graph_flowchart.snap.md index c7cebedcc..9535ee968 100644 --- a/rust/kcl-lib/tests/kcl_samples/kitt/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/kitt/artifact_graph_flowchart.snap.md @@ -1,410 +1,410 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[625, 681, 0]"] - 3["Segment
[687, 717, 0]"] - 4["Segment
[723, 766, 0]"] - 5["Segment
[772, 817, 0]"] - 6["Segment
[823, 879, 0]"] - 7["Segment
[885, 892, 0]"] + 2["Path
[632, 688, 0]"] + 3["Segment
[694, 724, 0]"] + 4["Segment
[730, 773, 0]"] + 5["Segment
[779, 824, 0]"] + 6["Segment
[830, 886, 0]"] + 7["Segment
[892, 899, 0]"] 8[Solid2d] end subgraph path24 [Path] - 24["Path
[228, 269, 0]"] - 25["Segment
[277, 300, 0]"] - 26["Segment
[308, 330, 0]"] - 27["Segment
[338, 362, 0]"] - 28["Segment
[370, 426, 0]"] - 29["Segment
[434, 441, 0]"] + 24["Path
[235, 276, 0]"] + 25["Segment
[284, 307, 0]"] + 26["Segment
[315, 337, 0]"] + 27["Segment
[345, 369, 0]"] + 28["Segment
[377, 433, 0]"] + 29["Segment
[441, 448, 0]"] 30[Solid2d] end subgraph path45 [Path] - 45["Path
[1496, 1552, 0]"] - 46["Segment
[1558, 1576, 0]"] - 47["Segment
[1606, 1625, 0]"] - 48["Segment
[1657, 1687, 0]"] - 49["Segment
[1709, 1727, 0]"] - 50["Segment
[1760, 1778, 0]"] - 51["Segment
[1808, 1837, 0]"] - 52["Segment
[1863, 1882, 0]"] - 53["Segment
[1915, 1933, 0]"] - 54["Segment
[1967, 1998, 0]"] - 55["Segment
[2023, 2042, 0]"] - 56["Segment
[2075, 2094, 0]"] - 57["Segment
[2127, 2183, 0]"] - 58["Segment
[2189, 2196, 0]"] + 45["Path
[1506, 1562, 0]"] + 46["Segment
[1568, 1586, 0]"] + 47["Segment
[1616, 1635, 0]"] + 48["Segment
[1667, 1697, 0]"] + 49["Segment
[1719, 1737, 0]"] + 50["Segment
[1770, 1788, 0]"] + 51["Segment
[1818, 1847, 0]"] + 52["Segment
[1873, 1892, 0]"] + 53["Segment
[1925, 1943, 0]"] + 54["Segment
[1977, 2008, 0]"] + 55["Segment
[2033, 2052, 0]"] + 56["Segment
[2085, 2104, 0]"] + 57["Segment
[2137, 2193, 0]"] + 58["Segment
[2199, 2206, 0]"] 59[Solid2d] end subgraph path98 [Path] - 98["Path
[228, 269, 0]"] - 99["Segment
[277, 300, 0]"] - 100["Segment
[308, 330, 0]"] - 101["Segment
[338, 362, 0]"] - 102["Segment
[370, 426, 0]"] - 103["Segment
[434, 441, 0]"] + 98["Path
[235, 276, 0]"] + 99["Segment
[284, 307, 0]"] + 100["Segment
[315, 337, 0]"] + 101["Segment
[345, 369, 0]"] + 102["Segment
[377, 433, 0]"] + 103["Segment
[441, 448, 0]"] 104[Solid2d] end subgraph path119 [Path] - 119["Path
[228, 269, 0]"] - 120["Segment
[277, 300, 0]"] - 121["Segment
[308, 330, 0]"] - 122["Segment
[338, 362, 0]"] - 123["Segment
[370, 426, 0]"] - 124["Segment
[434, 441, 0]"] + 119["Path
[235, 276, 0]"] + 120["Segment
[284, 307, 0]"] + 121["Segment
[315, 337, 0]"] + 122["Segment
[345, 369, 0]"] + 123["Segment
[377, 433, 0]"] + 124["Segment
[441, 448, 0]"] 125[Solid2d] end subgraph path140 [Path] - 140["Path
[228, 269, 0]"] - 141["Segment
[277, 300, 0]"] - 142["Segment
[308, 330, 0]"] - 143["Segment
[338, 362, 0]"] - 144["Segment
[370, 426, 0]"] - 145["Segment
[434, 441, 0]"] + 140["Path
[235, 276, 0]"] + 141["Segment
[284, 307, 0]"] + 142["Segment
[315, 337, 0]"] + 143["Segment
[345, 369, 0]"] + 144["Segment
[377, 433, 0]"] + 145["Segment
[441, 448, 0]"] 146[Solid2d] end subgraph path161 [Path] - 161["Path
[228, 269, 0]"] - 162["Segment
[277, 300, 0]"] - 163["Segment
[308, 330, 0]"] - 164["Segment
[338, 362, 0]"] - 165["Segment
[370, 426, 0]"] - 166["Segment
[434, 441, 0]"] + 161["Path
[235, 276, 0]"] + 162["Segment
[284, 307, 0]"] + 163["Segment
[315, 337, 0]"] + 164["Segment
[345, 369, 0]"] + 165["Segment
[377, 433, 0]"] + 166["Segment
[441, 448, 0]"] 167[Solid2d] end subgraph path182 [Path] - 182["Path
[2880, 2921, 0]"] - 183["Segment
[2934, 2952, 0]"] - 184["Segment
[2975, 2993, 0]"] - 185["Segment
[3019, 3037, 0]"] - 186["Segment
[3058, 3077, 0]"] - 187["Segment
[3102, 3120, 0]"] - 188["Segment
[3143, 3161, 0]"] - 189["Segment
[3186, 3205, 0]"] - 190["Segment
[3231, 3250, 0]"] - 191["Segment
[3276, 3295, 0]"] - 192["Segment
[3318, 3336, 0]"] - 193["Segment
[3363, 3382, 0]"] - 194["Segment
[3408, 3464, 0]"] - 195["Segment
[3470, 3477, 0]"] + 182["Path
[2887, 2928, 0]"] + 183["Segment
[2941, 2959, 0]"] + 184["Segment
[2982, 3000, 0]"] + 185["Segment
[3026, 3044, 0]"] + 186["Segment
[3065, 3084, 0]"] + 187["Segment
[3109, 3127, 0]"] + 188["Segment
[3150, 3168, 0]"] + 189["Segment
[3193, 3212, 0]"] + 190["Segment
[3238, 3257, 0]"] + 191["Segment
[3283, 3302, 0]"] + 192["Segment
[3325, 3343, 0]"] + 193["Segment
[3370, 3389, 0]"] + 194["Segment
[3415, 3471, 0]"] + 195["Segment
[3477, 3484, 0]"] 196[Solid2d] end subgraph path235 [Path] - 235["Path
[228, 269, 0]"] - 236["Segment
[277, 300, 0]"] - 237["Segment
[308, 330, 0]"] - 238["Segment
[338, 362, 0]"] - 239["Segment
[370, 426, 0]"] - 240["Segment
[434, 441, 0]"] + 235["Path
[235, 276, 0]"] + 236["Segment
[284, 307, 0]"] + 237["Segment
[315, 337, 0]"] + 238["Segment
[345, 369, 0]"] + 239["Segment
[377, 433, 0]"] + 240["Segment
[441, 448, 0]"] 241[Solid2d] end subgraph path256 [Path] - 256["Path
[228, 269, 0]"] - 257["Segment
[277, 300, 0]"] - 258["Segment
[308, 330, 0]"] - 259["Segment
[338, 362, 0]"] - 260["Segment
[370, 426, 0]"] - 261["Segment
[434, 441, 0]"] + 256["Path
[235, 276, 0]"] + 257["Segment
[284, 307, 0]"] + 258["Segment
[315, 337, 0]"] + 259["Segment
[345, 369, 0]"] + 260["Segment
[377, 433, 0]"] + 261["Segment
[441, 448, 0]"] 262[Solid2d] end subgraph path277 [Path] - 277["Path
[228, 269, 0]"] - 278["Segment
[277, 300, 0]"] - 279["Segment
[308, 330, 0]"] - 280["Segment
[338, 362, 0]"] - 281["Segment
[370, 426, 0]"] - 282["Segment
[434, 441, 0]"] + 277["Path
[235, 276, 0]"] + 278["Segment
[284, 307, 0]"] + 279["Segment
[315, 337, 0]"] + 280["Segment
[345, 369, 0]"] + 281["Segment
[377, 433, 0]"] + 282["Segment
[441, 448, 0]"] 283[Solid2d] end subgraph path298 [Path] - 298["Path
[228, 269, 0]"] - 299["Segment
[277, 300, 0]"] - 300["Segment
[308, 330, 0]"] - 301["Segment
[338, 362, 0]"] - 302["Segment
[370, 426, 0]"] - 303["Segment
[434, 441, 0]"] + 298["Path
[235, 276, 0]"] + 299["Segment
[284, 307, 0]"] + 300["Segment
[315, 337, 0]"] + 301["Segment
[345, 369, 0]"] + 302["Segment
[377, 433, 0]"] + 303["Segment
[441, 448, 0]"] 304[Solid2d] end subgraph path319 [Path] - 319["Path
[228, 269, 0]"] - 320["Segment
[277, 300, 0]"] - 321["Segment
[308, 330, 0]"] - 322["Segment
[338, 362, 0]"] - 323["Segment
[370, 426, 0]"] - 324["Segment
[434, 441, 0]"] + 319["Path
[235, 276, 0]"] + 320["Segment
[284, 307, 0]"] + 321["Segment
[315, 337, 0]"] + 322["Segment
[345, 369, 0]"] + 323["Segment
[377, 433, 0]"] + 324["Segment
[441, 448, 0]"] 325[Solid2d] end subgraph path340 [Path] - 340["Path
[228, 269, 0]"] - 341["Segment
[277, 300, 0]"] - 342["Segment
[308, 330, 0]"] - 343["Segment
[338, 362, 0]"] - 344["Segment
[370, 426, 0]"] - 345["Segment
[434, 441, 0]"] + 340["Path
[235, 276, 0]"] + 341["Segment
[284, 307, 0]"] + 342["Segment
[315, 337, 0]"] + 343["Segment
[345, 369, 0]"] + 344["Segment
[377, 433, 0]"] + 345["Segment
[441, 448, 0]"] 346[Solid2d] end subgraph path361 [Path] - 361["Path
[228, 269, 0]"] - 362["Segment
[277, 300, 0]"] - 363["Segment
[308, 330, 0]"] - 364["Segment
[338, 362, 0]"] - 365["Segment
[370, 426, 0]"] - 366["Segment
[434, 441, 0]"] + 361["Path
[235, 276, 0]"] + 362["Segment
[284, 307, 0]"] + 363["Segment
[315, 337, 0]"] + 364["Segment
[345, 369, 0]"] + 365["Segment
[377, 433, 0]"] + 366["Segment
[441, 448, 0]"] 367[Solid2d] end subgraph path382 [Path] - 382["Path
[228, 269, 0]"] - 383["Segment
[277, 300, 0]"] - 384["Segment
[308, 330, 0]"] - 385["Segment
[338, 362, 0]"] - 386["Segment
[370, 426, 0]"] - 387["Segment
[434, 441, 0]"] + 382["Path
[235, 276, 0]"] + 383["Segment
[284, 307, 0]"] + 384["Segment
[315, 337, 0]"] + 385["Segment
[345, 369, 0]"] + 386["Segment
[377, 433, 0]"] + 387["Segment
[441, 448, 0]"] 388[Solid2d] end subgraph path403 [Path] - 403["Path
[228, 269, 0]"] - 404["Segment
[277, 300, 0]"] - 405["Segment
[308, 330, 0]"] - 406["Segment
[338, 362, 0]"] - 407["Segment
[370, 426, 0]"] - 408["Segment
[434, 441, 0]"] + 403["Path
[235, 276, 0]"] + 404["Segment
[284, 307, 0]"] + 405["Segment
[315, 337, 0]"] + 406["Segment
[345, 369, 0]"] + 407["Segment
[377, 433, 0]"] + 408["Segment
[441, 448, 0]"] 409[Solid2d] end subgraph path424 [Path] - 424["Path
[228, 269, 0]"] - 425["Segment
[277, 300, 0]"] - 426["Segment
[308, 330, 0]"] - 427["Segment
[338, 362, 0]"] - 428["Segment
[370, 426, 0]"] - 429["Segment
[434, 441, 0]"] + 424["Path
[235, 276, 0]"] + 425["Segment
[284, 307, 0]"] + 426["Segment
[315, 337, 0]"] + 427["Segment
[345, 369, 0]"] + 428["Segment
[377, 433, 0]"] + 429["Segment
[441, 448, 0]"] 430[Solid2d] end subgraph path445 [Path] - 445["Path
[228, 269, 0]"] - 446["Segment
[277, 300, 0]"] - 447["Segment
[308, 330, 0]"] - 448["Segment
[338, 362, 0]"] - 449["Segment
[370, 426, 0]"] - 450["Segment
[434, 441, 0]"] + 445["Path
[235, 276, 0]"] + 446["Segment
[284, 307, 0]"] + 447["Segment
[315, 337, 0]"] + 448["Segment
[345, 369, 0]"] + 449["Segment
[377, 433, 0]"] + 450["Segment
[441, 448, 0]"] 451[Solid2d] end subgraph path466 [Path] - 466["Path
[228, 269, 0]"] - 467["Segment
[277, 300, 0]"] - 468["Segment
[308, 330, 0]"] - 469["Segment
[338, 362, 0]"] - 470["Segment
[370, 426, 0]"] - 471["Segment
[434, 441, 0]"] + 466["Path
[235, 276, 0]"] + 467["Segment
[284, 307, 0]"] + 468["Segment
[315, 337, 0]"] + 469["Segment
[345, 369, 0]"] + 470["Segment
[377, 433, 0]"] + 471["Segment
[441, 448, 0]"] 472[Solid2d] end subgraph path487 [Path] - 487["Path
[228, 269, 0]"] - 488["Segment
[277, 300, 0]"] - 489["Segment
[308, 330, 0]"] - 490["Segment
[338, 362, 0]"] - 491["Segment
[370, 426, 0]"] - 492["Segment
[434, 441, 0]"] + 487["Path
[235, 276, 0]"] + 488["Segment
[284, 307, 0]"] + 489["Segment
[315, 337, 0]"] + 490["Segment
[345, 369, 0]"] + 491["Segment
[377, 433, 0]"] + 492["Segment
[441, 448, 0]"] 493[Solid2d] end subgraph path509 [Path] - 509["Path
[6227, 6278, 0]"] - 510["Segment
[6286, 6315, 0]"] - 511["Segment
[6323, 6354, 0]"] - 512["Segment
[6362, 6392, 0]"] - 513["Segment
[6400, 6456, 0]"] - 514["Segment
[6464, 6471, 0]"] + 509["Path
[6208, 6259, 0]"] + 510["Segment
[6267, 6296, 0]"] + 511["Segment
[6304, 6335, 0]"] + 512["Segment
[6343, 6373, 0]"] + 513["Segment
[6381, 6437, 0]"] + 514["Segment
[6445, 6452, 0]"] 515[Solid2d] end subgraph path531 [Path] - 531["Path
[228, 269, 0]"] - 532["Segment
[277, 300, 0]"] - 533["Segment
[308, 330, 0]"] - 534["Segment
[338, 362, 0]"] - 535["Segment
[370, 426, 0]"] - 536["Segment
[434, 441, 0]"] + 531["Path
[235, 276, 0]"] + 532["Segment
[284, 307, 0]"] + 533["Segment
[315, 337, 0]"] + 534["Segment
[345, 369, 0]"] + 535["Segment
[377, 433, 0]"] + 536["Segment
[441, 448, 0]"] 537[Solid2d] end subgraph path553 [Path] - 553["Path
[6227, 6278, 0]"] - 554["Segment
[6286, 6315, 0]"] - 555["Segment
[6323, 6354, 0]"] - 556["Segment
[6362, 6392, 0]"] - 557["Segment
[6400, 6456, 0]"] - 558["Segment
[6464, 6471, 0]"] + 553["Path
[6208, 6259, 0]"] + 554["Segment
[6267, 6296, 0]"] + 555["Segment
[6304, 6335, 0]"] + 556["Segment
[6343, 6373, 0]"] + 557["Segment
[6381, 6437, 0]"] + 558["Segment
[6445, 6452, 0]"] 559[Solid2d] end subgraph path575 [Path] - 575["Path
[228, 269, 0]"] - 576["Segment
[277, 300, 0]"] - 577["Segment
[308, 330, 0]"] - 578["Segment
[338, 362, 0]"] - 579["Segment
[370, 426, 0]"] - 580["Segment
[434, 441, 0]"] + 575["Path
[235, 276, 0]"] + 576["Segment
[284, 307, 0]"] + 577["Segment
[315, 337, 0]"] + 578["Segment
[345, 369, 0]"] + 579["Segment
[377, 433, 0]"] + 580["Segment
[441, 448, 0]"] 581[Solid2d] end subgraph path596 [Path] - 596["Path
[228, 269, 0]"] - 597["Segment
[277, 300, 0]"] - 598["Segment
[308, 330, 0]"] - 599["Segment
[338, 362, 0]"] - 600["Segment
[370, 426, 0]"] - 601["Segment
[434, 441, 0]"] + 596["Path
[235, 276, 0]"] + 597["Segment
[284, 307, 0]"] + 598["Segment
[315, 337, 0]"] + 599["Segment
[345, 369, 0]"] + 600["Segment
[377, 433, 0]"] + 601["Segment
[441, 448, 0]"] 602[Solid2d] end subgraph path617 [Path] - 617["Path
[228, 269, 0]"] - 618["Segment
[277, 300, 0]"] - 619["Segment
[308, 330, 0]"] - 620["Segment
[338, 362, 0]"] - 621["Segment
[370, 426, 0]"] - 622["Segment
[434, 441, 0]"] + 617["Path
[235, 276, 0]"] + 618["Segment
[284, 307, 0]"] + 619["Segment
[315, 337, 0]"] + 620["Segment
[345, 369, 0]"] + 621["Segment
[377, 433, 0]"] + 622["Segment
[441, 448, 0]"] 623[Solid2d] end subgraph path638 [Path] - 638["Path
[228, 269, 0]"] - 639["Segment
[277, 300, 0]"] - 640["Segment
[308, 330, 0]"] - 641["Segment
[338, 362, 0]"] - 642["Segment
[370, 426, 0]"] - 643["Segment
[434, 441, 0]"] + 638["Path
[235, 276, 0]"] + 639["Segment
[284, 307, 0]"] + 640["Segment
[315, 337, 0]"] + 641["Segment
[345, 369, 0]"] + 642["Segment
[377, 433, 0]"] + 643["Segment
[441, 448, 0]"] 644[Solid2d] end subgraph path659 [Path] - 659["Path
[228, 269, 0]"] - 660["Segment
[277, 300, 0]"] - 661["Segment
[308, 330, 0]"] - 662["Segment
[338, 362, 0]"] - 663["Segment
[370, 426, 0]"] - 664["Segment
[434, 441, 0]"] + 659["Path
[235, 276, 0]"] + 660["Segment
[284, 307, 0]"] + 661["Segment
[315, 337, 0]"] + 662["Segment
[345, 369, 0]"] + 663["Segment
[377, 433, 0]"] + 664["Segment
[441, 448, 0]"] 665[Solid2d] end subgraph path680 [Path] - 680["Path
[228, 269, 0]"] - 681["Segment
[277, 300, 0]"] - 682["Segment
[308, 330, 0]"] - 683["Segment
[338, 362, 0]"] - 684["Segment
[370, 426, 0]"] - 685["Segment
[434, 441, 0]"] + 680["Path
[235, 276, 0]"] + 681["Segment
[284, 307, 0]"] + 682["Segment
[315, 337, 0]"] + 683["Segment
[345, 369, 0]"] + 684["Segment
[377, 433, 0]"] + 685["Segment
[441, 448, 0]"] 686[Solid2d] end subgraph path701 [Path] - 701["Path
[228, 269, 0]"] - 702["Segment
[277, 300, 0]"] - 703["Segment
[308, 330, 0]"] - 704["Segment
[338, 362, 0]"] - 705["Segment
[370, 426, 0]"] - 706["Segment
[434, 441, 0]"] + 701["Path
[235, 276, 0]"] + 702["Segment
[284, 307, 0]"] + 703["Segment
[315, 337, 0]"] + 704["Segment
[345, 369, 0]"] + 705["Segment
[377, 433, 0]"] + 706["Segment
[441, 448, 0]"] 707[Solid2d] end subgraph path722 [Path] - 722["Path
[228, 269, 0]"] - 723["Segment
[277, 300, 0]"] - 724["Segment
[308, 330, 0]"] - 725["Segment
[338, 362, 0]"] - 726["Segment
[370, 426, 0]"] - 727["Segment
[434, 441, 0]"] + 722["Path
[235, 276, 0]"] + 723["Segment
[284, 307, 0]"] + 724["Segment
[315, 337, 0]"] + 725["Segment
[345, 369, 0]"] + 726["Segment
[377, 433, 0]"] + 727["Segment
[441, 448, 0]"] 728[Solid2d] end subgraph path743 [Path] - 743["Path
[228, 269, 0]"] - 744["Segment
[277, 300, 0]"] - 745["Segment
[308, 330, 0]"] - 746["Segment
[338, 362, 0]"] - 747["Segment
[370, 426, 0]"] - 748["Segment
[434, 441, 0]"] + 743["Path
[235, 276, 0]"] + 744["Segment
[284, 307, 0]"] + 745["Segment
[315, 337, 0]"] + 746["Segment
[345, 369, 0]"] + 747["Segment
[377, 433, 0]"] + 748["Segment
[441, 448, 0]"] 749[Solid2d] end subgraph path764 [Path] - 764["Path
[228, 269, 0]"] - 765["Segment
[277, 300, 0]"] - 766["Segment
[308, 330, 0]"] - 767["Segment
[338, 362, 0]"] - 768["Segment
[370, 426, 0]"] - 769["Segment
[434, 441, 0]"] + 764["Path
[235, 276, 0]"] + 765["Segment
[284, 307, 0]"] + 766["Segment
[315, 337, 0]"] + 767["Segment
[345, 369, 0]"] + 768["Segment
[377, 433, 0]"] + 769["Segment
[441, 448, 0]"] 770[Solid2d] end subgraph path785 [Path] - 785["Path
[228, 269, 0]"] - 786["Segment
[277, 300, 0]"] - 787["Segment
[308, 330, 0]"] - 788["Segment
[338, 362, 0]"] - 789["Segment
[370, 426, 0]"] - 790["Segment
[434, 441, 0]"] + 785["Path
[235, 276, 0]"] + 786["Segment
[284, 307, 0]"] + 787["Segment
[315, 337, 0]"] + 788["Segment
[345, 369, 0]"] + 789["Segment
[377, 433, 0]"] + 790["Segment
[441, 448, 0]"] 791[Solid2d] end subgraph path806 [Path] - 806["Path
[228, 269, 0]"] - 807["Segment
[277, 300, 0]"] - 808["Segment
[308, 330, 0]"] - 809["Segment
[338, 362, 0]"] - 810["Segment
[370, 426, 0]"] - 811["Segment
[434, 441, 0]"] + 806["Path
[235, 276, 0]"] + 807["Segment
[284, 307, 0]"] + 808["Segment
[315, 337, 0]"] + 809["Segment
[345, 369, 0]"] + 810["Segment
[377, 433, 0]"] + 811["Segment
[441, 448, 0]"] 812[Solid2d] end subgraph path827 [Path] - 827["Path
[228, 269, 0]"] - 828["Segment
[277, 300, 0]"] - 829["Segment
[308, 330, 0]"] - 830["Segment
[338, 362, 0]"] - 831["Segment
[370, 426, 0]"] - 832["Segment
[434, 441, 0]"] + 827["Path
[235, 276, 0]"] + 828["Segment
[284, 307, 0]"] + 829["Segment
[315, 337, 0]"] + 830["Segment
[345, 369, 0]"] + 831["Segment
[377, 433, 0]"] + 832["Segment
[441, 448, 0]"] 833[Solid2d] end subgraph path848 [Path] - 848["Path
[228, 269, 0]"] - 849["Segment
[277, 300, 0]"] - 850["Segment
[308, 330, 0]"] - 851["Segment
[338, 362, 0]"] - 852["Segment
[370, 426, 0]"] - 853["Segment
[434, 441, 0]"] + 848["Path
[235, 276, 0]"] + 849["Segment
[284, 307, 0]"] + 850["Segment
[315, 337, 0]"] + 851["Segment
[345, 369, 0]"] + 852["Segment
[377, 433, 0]"] + 853["Segment
[441, 448, 0]"] 854[Solid2d] end subgraph path869 [Path] - 869["Path
[228, 269, 0]"] - 870["Segment
[277, 300, 0]"] - 871["Segment
[308, 330, 0]"] - 872["Segment
[338, 362, 0]"] - 873["Segment
[370, 426, 0]"] - 874["Segment
[434, 441, 0]"] + 869["Path
[235, 276, 0]"] + 870["Segment
[284, 307, 0]"] + 871["Segment
[315, 337, 0]"] + 872["Segment
[345, 369, 0]"] + 873["Segment
[377, 433, 0]"] + 874["Segment
[441, 448, 0]"] 875[Solid2d] end subgraph path890 [Path] - 890["Path
[228, 269, 0]"] - 891["Segment
[277, 300, 0]"] - 892["Segment
[308, 330, 0]"] - 893["Segment
[338, 362, 0]"] - 894["Segment
[370, 426, 0]"] - 895["Segment
[434, 441, 0]"] + 890["Path
[235, 276, 0]"] + 891["Segment
[284, 307, 0]"] + 892["Segment
[315, 337, 0]"] + 893["Segment
[345, 369, 0]"] + 894["Segment
[377, 433, 0]"] + 895["Segment
[441, 448, 0]"] 896[Solid2d] end subgraph path911 [Path] - 911["Path
[228, 269, 0]"] - 912["Segment
[277, 300, 0]"] - 913["Segment
[308, 330, 0]"] - 914["Segment
[338, 362, 0]"] - 915["Segment
[370, 426, 0]"] - 916["Segment
[434, 441, 0]"] + 911["Path
[235, 276, 0]"] + 912["Segment
[284, 307, 0]"] + 913["Segment
[315, 337, 0]"] + 914["Segment
[345, 369, 0]"] + 915["Segment
[377, 433, 0]"] + 916["Segment
[441, 448, 0]"] 917[Solid2d] end subgraph path932 [Path] - 932["Path
[228, 269, 0]"] - 933["Segment
[277, 300, 0]"] - 934["Segment
[308, 330, 0]"] - 935["Segment
[338, 362, 0]"] - 936["Segment
[370, 426, 0]"] - 937["Segment
[434, 441, 0]"] + 932["Path
[235, 276, 0]"] + 933["Segment
[284, 307, 0]"] + 934["Segment
[315, 337, 0]"] + 935["Segment
[345, 369, 0]"] + 936["Segment
[377, 433, 0]"] + 937["Segment
[441, 448, 0]"] 938[Solid2d] end subgraph path953 [Path] - 953["Path
[228, 269, 0]"] - 954["Segment
[277, 300, 0]"] - 955["Segment
[308, 330, 0]"] - 956["Segment
[338, 362, 0]"] - 957["Segment
[370, 426, 0]"] - 958["Segment
[434, 441, 0]"] + 953["Path
[235, 276, 0]"] + 954["Segment
[284, 307, 0]"] + 955["Segment
[315, 337, 0]"] + 956["Segment
[345, 369, 0]"] + 957["Segment
[377, 433, 0]"] + 958["Segment
[441, 448, 0]"] 959[Solid2d] end - 1["Plane
[602, 619, 0]"] - 9["Sweep Extrusion
[898, 928, 0]"] + 1["Plane
[609, 626, 0]"] + 9["Sweep Extrusion
[905, 935, 0]"] 10[Wall] 11[Wall] 12[Wall] @@ -419,7 +419,7 @@ flowchart LR 21["SweepEdge Adjacent"] 22["SweepEdge Opposite"] 23["SweepEdge Adjacent"] - 31["Sweep Extrusion
[449, 472, 0]"] + 31["Sweep Extrusion
[456, 479, 0]"] 32[Wall] 33[Wall] 34[Wall] @@ -433,7 +433,7 @@ flowchart LR 42["SweepEdge Adjacent"] 43["SweepEdge Opposite"] 44["SweepEdge Adjacent"] - 60["Sweep Extrusion
[2202, 2233, 0]"] + 60["Sweep Extrusion
[2212, 2243, 0]"] 61[Wall] 62[Wall] 63[Wall] @@ -471,7 +471,7 @@ flowchart LR 95["SweepEdge Adjacent"] 96["SweepEdge Opposite"] 97["SweepEdge Adjacent"] - 105["Sweep Extrusion
[449, 472, 0]"] + 105["Sweep Extrusion
[456, 479, 0]"] 106[Wall] 107[Wall] 108[Wall] @@ -485,7 +485,7 @@ flowchart LR 116["SweepEdge Adjacent"] 117["SweepEdge Opposite"] 118["SweepEdge Adjacent"] - 126["Sweep Extrusion
[449, 472, 0]"] + 126["Sweep Extrusion
[456, 479, 0]"] 127[Wall] 128[Wall] 129[Wall] @@ -499,7 +499,7 @@ flowchart LR 137["SweepEdge Adjacent"] 138["SweepEdge Opposite"] 139["SweepEdge Adjacent"] - 147["Sweep Extrusion
[449, 472, 0]"] + 147["Sweep Extrusion
[456, 479, 0]"] 148[Wall] 149[Wall] 150[Wall] @@ -513,7 +513,7 @@ flowchart LR 158["SweepEdge Adjacent"] 159["SweepEdge Opposite"] 160["SweepEdge Adjacent"] - 168["Sweep Extrusion
[449, 472, 0]"] + 168["Sweep Extrusion
[456, 479, 0]"] 169[Wall] 170[Wall] 171[Wall] @@ -527,7 +527,7 @@ flowchart LR 179["SweepEdge Adjacent"] 180["SweepEdge Opposite"] 181["SweepEdge Adjacent"] - 197["Sweep Extrusion
[3483, 3512, 0]"] + 197["Sweep Extrusion
[3490, 3519, 0]"] 198[Wall] 199[Wall] 200[Wall] @@ -565,7 +565,7 @@ flowchart LR 232["SweepEdge Adjacent"] 233["SweepEdge Opposite"] 234["SweepEdge Adjacent"] - 242["Sweep Extrusion
[449, 472, 0]"] + 242["Sweep Extrusion
[456, 479, 0]"] 243[Wall] 244[Wall] 245[Wall] @@ -579,7 +579,7 @@ flowchart LR 253["SweepEdge Adjacent"] 254["SweepEdge Opposite"] 255["SweepEdge Adjacent"] - 263["Sweep Extrusion
[449, 472, 0]"] + 263["Sweep Extrusion
[456, 479, 0]"] 264[Wall] 265[Wall] 266[Wall] @@ -593,7 +593,7 @@ flowchart LR 274["SweepEdge Adjacent"] 275["SweepEdge Opposite"] 276["SweepEdge Adjacent"] - 284["Sweep Extrusion
[449, 472, 0]"] + 284["Sweep Extrusion
[456, 479, 0]"] 285[Wall] 286[Wall] 287[Wall] @@ -607,7 +607,7 @@ flowchart LR 295["SweepEdge Adjacent"] 296["SweepEdge Opposite"] 297["SweepEdge Adjacent"] - 305["Sweep Extrusion
[449, 472, 0]"] + 305["Sweep Extrusion
[456, 479, 0]"] 306[Wall] 307[Wall] 308[Wall] @@ -621,7 +621,7 @@ flowchart LR 316["SweepEdge Adjacent"] 317["SweepEdge Opposite"] 318["SweepEdge Adjacent"] - 326["Sweep Extrusion
[449, 472, 0]"] + 326["Sweep Extrusion
[456, 479, 0]"] 327[Wall] 328[Wall] 329[Wall] @@ -635,7 +635,7 @@ flowchart LR 337["SweepEdge Adjacent"] 338["SweepEdge Opposite"] 339["SweepEdge Adjacent"] - 347["Sweep Extrusion
[449, 472, 0]"] + 347["Sweep Extrusion
[456, 479, 0]"] 348[Wall] 349[Wall] 350[Wall] @@ -649,7 +649,7 @@ flowchart LR 358["SweepEdge Adjacent"] 359["SweepEdge Opposite"] 360["SweepEdge Adjacent"] - 368["Sweep Extrusion
[449, 472, 0]"] + 368["Sweep Extrusion
[456, 479, 0]"] 369[Wall] 370[Wall] 371[Wall] @@ -663,7 +663,7 @@ flowchart LR 379["SweepEdge Adjacent"] 380["SweepEdge Opposite"] 381["SweepEdge Adjacent"] - 389["Sweep Extrusion
[449, 472, 0]"] + 389["Sweep Extrusion
[456, 479, 0]"] 390[Wall] 391[Wall] 392[Wall] @@ -677,7 +677,7 @@ flowchart LR 400["SweepEdge Adjacent"] 401["SweepEdge Opposite"] 402["SweepEdge Adjacent"] - 410["Sweep Extrusion
[449, 472, 0]"] + 410["Sweep Extrusion
[456, 479, 0]"] 411[Wall] 412[Wall] 413[Wall] @@ -691,7 +691,7 @@ flowchart LR 421["SweepEdge Adjacent"] 422["SweepEdge Opposite"] 423["SweepEdge Adjacent"] - 431["Sweep Extrusion
[449, 472, 0]"] + 431["Sweep Extrusion
[456, 479, 0]"] 432[Wall] 433[Wall] 434[Wall] @@ -705,7 +705,7 @@ flowchart LR 442["SweepEdge Adjacent"] 443["SweepEdge Opposite"] 444["SweepEdge Adjacent"] - 452["Sweep Extrusion
[449, 472, 0]"] + 452["Sweep Extrusion
[456, 479, 0]"] 453[Wall] 454[Wall] 455[Wall] @@ -719,7 +719,7 @@ flowchart LR 463["SweepEdge Adjacent"] 464["SweepEdge Opposite"] 465["SweepEdge Adjacent"] - 473["Sweep Extrusion
[449, 472, 0]"] + 473["Sweep Extrusion
[456, 479, 0]"] 474[Wall] 475[Wall] 476[Wall] @@ -733,7 +733,7 @@ flowchart LR 484["SweepEdge Adjacent"] 485["SweepEdge Opposite"] 486["SweepEdge Adjacent"] - 494["Sweep Extrusion
[449, 472, 0]"] + 494["Sweep Extrusion
[456, 479, 0]"] 495[Wall] 496[Wall] 497[Wall] @@ -747,8 +747,8 @@ flowchart LR 505["SweepEdge Adjacent"] 506["SweepEdge Opposite"] 507["SweepEdge Adjacent"] - 508["Plane
[6202, 6219, 0]"] - 516["Sweep Extrusion
[6485, 6530, 0]"] + 508["Plane
[6183, 6200, 0]"] + 516["Sweep Extrusion
[6466, 6511, 0]"] 517[Wall] 518[Wall] 519[Wall] @@ -763,7 +763,7 @@ flowchart LR 528["SweepEdge Adjacent"] 529["SweepEdge Opposite"] 530["SweepEdge Adjacent"] - 538["Sweep Extrusion
[449, 472, 0]"] + 538["Sweep Extrusion
[456, 479, 0]"] 539[Wall] 540[Wall] 541[Wall] @@ -777,8 +777,8 @@ flowchart LR 549["SweepEdge Adjacent"] 550["SweepEdge Opposite"] 551["SweepEdge Adjacent"] - 552["Plane
[6202, 6219, 0]"] - 560["Sweep Extrusion
[6485, 6530, 0]"] + 552["Plane
[6183, 6200, 0]"] + 560["Sweep Extrusion
[6466, 6511, 0]"] 561[Wall] 562[Wall] 563[Wall] @@ -793,7 +793,7 @@ flowchart LR 572["SweepEdge Adjacent"] 573["SweepEdge Opposite"] 574["SweepEdge Adjacent"] - 582["Sweep Extrusion
[449, 472, 0]"] + 582["Sweep Extrusion
[456, 479, 0]"] 583[Wall] 584[Wall] 585[Wall] @@ -807,7 +807,7 @@ flowchart LR 593["SweepEdge Adjacent"] 594["SweepEdge Opposite"] 595["SweepEdge Adjacent"] - 603["Sweep Extrusion
[449, 472, 0]"] + 603["Sweep Extrusion
[456, 479, 0]"] 604[Wall] 605[Wall] 606[Wall] @@ -821,7 +821,7 @@ flowchart LR 614["SweepEdge Adjacent"] 615["SweepEdge Opposite"] 616["SweepEdge Adjacent"] - 624["Sweep Extrusion
[449, 472, 0]"] + 624["Sweep Extrusion
[456, 479, 0]"] 625[Wall] 626[Wall] 627[Wall] @@ -835,7 +835,7 @@ flowchart LR 635["SweepEdge Adjacent"] 636["SweepEdge Opposite"] 637["SweepEdge Adjacent"] - 645["Sweep Extrusion
[449, 472, 0]"] + 645["Sweep Extrusion
[456, 479, 0]"] 646[Wall] 647[Wall] 648[Wall] @@ -849,7 +849,7 @@ flowchart LR 656["SweepEdge Adjacent"] 657["SweepEdge Opposite"] 658["SweepEdge Adjacent"] - 666["Sweep Extrusion
[449, 472, 0]"] + 666["Sweep Extrusion
[456, 479, 0]"] 667[Wall] 668[Wall] 669[Wall] @@ -863,7 +863,7 @@ flowchart LR 677["SweepEdge Adjacent"] 678["SweepEdge Opposite"] 679["SweepEdge Adjacent"] - 687["Sweep Extrusion
[449, 472, 0]"] + 687["Sweep Extrusion
[456, 479, 0]"] 688[Wall] 689[Wall] 690[Wall] @@ -877,7 +877,7 @@ flowchart LR 698["SweepEdge Adjacent"] 699["SweepEdge Opposite"] 700["SweepEdge Adjacent"] - 708["Sweep Extrusion
[449, 472, 0]"] + 708["Sweep Extrusion
[456, 479, 0]"] 709[Wall] 710[Wall] 711[Wall] @@ -891,7 +891,7 @@ flowchart LR 719["SweepEdge Adjacent"] 720["SweepEdge Opposite"] 721["SweepEdge Adjacent"] - 729["Sweep Extrusion
[449, 472, 0]"] + 729["Sweep Extrusion
[456, 479, 0]"] 730[Wall] 731[Wall] 732[Wall] @@ -905,7 +905,7 @@ flowchart LR 740["SweepEdge Adjacent"] 741["SweepEdge Opposite"] 742["SweepEdge Adjacent"] - 750["Sweep Extrusion
[449, 472, 0]"] + 750["Sweep Extrusion
[456, 479, 0]"] 751[Wall] 752[Wall] 753[Wall] @@ -919,7 +919,7 @@ flowchart LR 761["SweepEdge Adjacent"] 762["SweepEdge Opposite"] 763["SweepEdge Adjacent"] - 771["Sweep Extrusion
[449, 472, 0]"] + 771["Sweep Extrusion
[456, 479, 0]"] 772[Wall] 773[Wall] 774[Wall] @@ -933,7 +933,7 @@ flowchart LR 782["SweepEdge Adjacent"] 783["SweepEdge Opposite"] 784["SweepEdge Adjacent"] - 792["Sweep Extrusion
[449, 472, 0]"] + 792["Sweep Extrusion
[456, 479, 0]"] 793[Wall] 794[Wall] 795[Wall] @@ -947,7 +947,7 @@ flowchart LR 803["SweepEdge Adjacent"] 804["SweepEdge Opposite"] 805["SweepEdge Adjacent"] - 813["Sweep Extrusion
[449, 472, 0]"] + 813["Sweep Extrusion
[456, 479, 0]"] 814[Wall] 815[Wall] 816[Wall] @@ -961,7 +961,7 @@ flowchart LR 824["SweepEdge Adjacent"] 825["SweepEdge Opposite"] 826["SweepEdge Adjacent"] - 834["Sweep Extrusion
[449, 472, 0]"] + 834["Sweep Extrusion
[456, 479, 0]"] 835[Wall] 836[Wall] 837[Wall] @@ -975,7 +975,7 @@ flowchart LR 845["SweepEdge Adjacent"] 846["SweepEdge Opposite"] 847["SweepEdge Adjacent"] - 855["Sweep Extrusion
[449, 472, 0]"] + 855["Sweep Extrusion
[456, 479, 0]"] 856[Wall] 857[Wall] 858[Wall] @@ -989,7 +989,7 @@ flowchart LR 866["SweepEdge Adjacent"] 867["SweepEdge Opposite"] 868["SweepEdge Adjacent"] - 876["Sweep Extrusion
[449, 472, 0]"] + 876["Sweep Extrusion
[456, 479, 0]"] 877[Wall] 878[Wall] 879[Wall] @@ -1003,7 +1003,7 @@ flowchart LR 887["SweepEdge Adjacent"] 888["SweepEdge Opposite"] 889["SweepEdge Adjacent"] - 897["Sweep Extrusion
[449, 472, 0]"] + 897["Sweep Extrusion
[456, 479, 0]"] 898[Wall] 899[Wall] 900[Wall] @@ -1017,7 +1017,7 @@ flowchart LR 908["SweepEdge Adjacent"] 909["SweepEdge Opposite"] 910["SweepEdge Adjacent"] - 918["Sweep Extrusion
[449, 472, 0]"] + 918["Sweep Extrusion
[456, 479, 0]"] 919[Wall] 920[Wall] 921[Wall] @@ -1031,7 +1031,7 @@ flowchart LR 929["SweepEdge Adjacent"] 930["SweepEdge Opposite"] 931["SweepEdge Adjacent"] - 939["Sweep Extrusion
[449, 472, 0]"] + 939["Sweep Extrusion
[456, 479, 0]"] 940[Wall] 941[Wall] 942[Wall] @@ -1045,7 +1045,7 @@ flowchart LR 950["SweepEdge Adjacent"] 951["SweepEdge Opposite"] 952["SweepEdge Adjacent"] - 960["Sweep Extrusion
[449, 472, 0]"] + 960["Sweep Extrusion
[456, 479, 0]"] 961[Wall] 962[Wall] 963[Wall] @@ -1059,46 +1059,46 @@ flowchart LR 971["SweepEdge Adjacent"] 972["SweepEdge Opposite"] 973["SweepEdge Adjacent"] - 974["StartSketchOnFace
[183, 220, 0]"] - 975["StartSketchOnFace
[1461, 1490, 0]"] - 976["StartSketchOnFace
[183, 220, 0]"] - 977["StartSketchOnFace
[183, 220, 0]"] - 978["StartSketchOnFace
[183, 220, 0]"] - 979["StartSketchOnFace
[183, 220, 0]"] - 980["StartSketchOnFace
[2843, 2874, 0]"] - 981["StartSketchOnFace
[183, 220, 0]"] - 982["StartSketchOnFace
[183, 220, 0]"] - 983["StartSketchOnFace
[183, 220, 0]"] - 984["StartSketchOnFace
[183, 220, 0]"] - 985["StartSketchOnFace
[183, 220, 0]"] - 986["StartSketchOnFace
[183, 220, 0]"] - 987["StartSketchOnFace
[183, 220, 0]"] - 988["StartSketchOnFace
[183, 220, 0]"] - 989["StartSketchOnFace
[183, 220, 0]"] - 990["StartSketchOnFace
[183, 220, 0]"] - 991["StartSketchOnFace
[183, 220, 0]"] - 992["StartSketchOnFace
[183, 220, 0]"] - 993["StartSketchOnFace
[183, 220, 0]"] - 994["StartSketchOnFace
[183, 220, 0]"] - 995["StartSketchOnFace
[183, 220, 0]"] - 996["StartSketchOnFace
[183, 220, 0]"] - 997["StartSketchOnFace
[183, 220, 0]"] - 998["StartSketchOnFace
[183, 220, 0]"] - 999["StartSketchOnFace
[183, 220, 0]"] - 1000["StartSketchOnFace
[183, 220, 0]"] - 1001["StartSketchOnFace
[183, 220, 0]"] - 1002["StartSketchOnFace
[183, 220, 0]"] - 1003["StartSketchOnFace
[183, 220, 0]"] - 1004["StartSketchOnFace
[183, 220, 0]"] - 1005["StartSketchOnFace
[183, 220, 0]"] - 1006["StartSketchOnFace
[183, 220, 0]"] - 1007["StartSketchOnFace
[183, 220, 0]"] - 1008["StartSketchOnFace
[183, 220, 0]"] - 1009["StartSketchOnFace
[183, 220, 0]"] - 1010["StartSketchOnFace
[183, 220, 0]"] - 1011["StartSketchOnFace
[183, 220, 0]"] - 1012["StartSketchOnFace
[183, 220, 0]"] - 1013["StartSketchOnFace
[183, 220, 0]"] + 974["StartSketchOnFace
[183, 227, 0]"] + 975["StartSketchOnFace
[1466, 1500, 0]"] + 976["StartSketchOnFace
[183, 227, 0]"] + 977["StartSketchOnFace
[183, 227, 0]"] + 978["StartSketchOnFace
[183, 227, 0]"] + 979["StartSketchOnFace
[183, 227, 0]"] + 980["StartSketchOnFace
[2845, 2881, 0]"] + 981["StartSketchOnFace
[183, 227, 0]"] + 982["StartSketchOnFace
[183, 227, 0]"] + 983["StartSketchOnFace
[183, 227, 0]"] + 984["StartSketchOnFace
[183, 227, 0]"] + 985["StartSketchOnFace
[183, 227, 0]"] + 986["StartSketchOnFace
[183, 227, 0]"] + 987["StartSketchOnFace
[183, 227, 0]"] + 988["StartSketchOnFace
[183, 227, 0]"] + 989["StartSketchOnFace
[183, 227, 0]"] + 990["StartSketchOnFace
[183, 227, 0]"] + 991["StartSketchOnFace
[183, 227, 0]"] + 992["StartSketchOnFace
[183, 227, 0]"] + 993["StartSketchOnFace
[183, 227, 0]"] + 994["StartSketchOnFace
[183, 227, 0]"] + 995["StartSketchOnFace
[183, 227, 0]"] + 996["StartSketchOnFace
[183, 227, 0]"] + 997["StartSketchOnFace
[183, 227, 0]"] + 998["StartSketchOnFace
[183, 227, 0]"] + 999["StartSketchOnFace
[183, 227, 0]"] + 1000["StartSketchOnFace
[183, 227, 0]"] + 1001["StartSketchOnFace
[183, 227, 0]"] + 1002["StartSketchOnFace
[183, 227, 0]"] + 1003["StartSketchOnFace
[183, 227, 0]"] + 1004["StartSketchOnFace
[183, 227, 0]"] + 1005["StartSketchOnFace
[183, 227, 0]"] + 1006["StartSketchOnFace
[183, 227, 0]"] + 1007["StartSketchOnFace
[183, 227, 0]"] + 1008["StartSketchOnFace
[183, 227, 0]"] + 1009["StartSketchOnFace
[183, 227, 0]"] + 1010["StartSketchOnFace
[183, 227, 0]"] + 1011["StartSketchOnFace
[183, 227, 0]"] + 1012["StartSketchOnFace
[183, 227, 0]"] + 1013["StartSketchOnFace
[183, 227, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/kitt/ast.snap b/rust/kcl-lib/tests/kcl_samples/kitt/ast.snap index 77fedb2a4..9ddafc75f 100644 --- a/rust/kcl-lib/tests/kcl_samples/kitt/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/kitt/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing kitt.kcl { "commentStart": 0, "declaration": { - "commentStart": 87, + "commentStart": 0, "end": 0, "id": { - "commentStart": 87, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -21,12 +21,12 @@ description: Result of parsing kitt.kcl "body": { "body": [ { - "commentStart": 168, + "commentStart": 0, "declaration": { - "commentStart": 168, + "commentStart": 0, "end": 0, "id": { - "commentStart": 168, + "commentStart": 0, "end": 0, "name": "pixelBoxBody", "start": 0, @@ -37,44 +37,38 @@ description: Result of parsing kitt.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 197, - "end": 0, - "name": { - "commentStart": 197, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "kitExtrude", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 209, - "end": 0, - "name": { - "commentStart": 209, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "extrudeTag", + "name": { + "commentStart": 0, + "end": 0, + "name": "extrudeTag", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 183, + "commentStart": 0, "end": 0, "name": { - "commentStart": 183, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -84,23 +78,39 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 183, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "kitExtrude", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 243, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 244, + "commentStart": 0, "end": 0, "name": { - "commentStart": 244, + "commentStart": 0, "end": 0, "name": "positionY", "start": 0, @@ -113,10 +123,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 255, + "commentStart": 0, "end": 0, "name": { - "commentStart": 255, + "commentStart": 0, "end": 0, "name": "positionZ", "start": 0, @@ -134,7 +144,7 @@ description: Result of parsing kitt.kcl "type": "ArrayExpression" }, { - "commentStart": 267, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -143,10 +153,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 228, + "commentStart": 0, "end": 0, "name": { - "commentStart": 228, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -156,7 +166,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 228, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -167,17 +177,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 282, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 288, + "commentStart": 0, "elements": [ { - "commentStart": 289, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -190,10 +200,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 292, + "commentStart": 0, "end": 0, "name": { - "commentStart": 292, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -214,10 +224,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 277, + "commentStart": 0, "end": 0, "name": { - "commentStart": 277, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -227,7 +237,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 277, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -239,21 +249,21 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 313, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 319, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 320, + "commentStart": 0, "end": 0, "name": { - "commentStart": 320, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -265,7 +275,7 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 327, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -286,10 +296,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 308, + "commentStart": 0, "end": 0, "name": { - "commentStart": 308, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -299,7 +309,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 308, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -311,17 +321,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 343, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 349, + "commentStart": 0, "elements": [ { - "commentStart": 350, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -335,10 +345,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 354, + "commentStart": 0, "end": 0, "name": { - "commentStart": 354, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -349,7 +359,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 353, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -366,10 +376,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 338, + "commentStart": 0, "end": 0, "name": { - "commentStart": 338, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -379,7 +389,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 338, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -391,19 +401,19 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 375, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 389, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 404, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -412,10 +422,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 390, + "commentStart": 0, "end": 0, "name": { - "commentStart": 390, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -425,7 +435,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 390, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -434,7 +444,7 @@ description: Result of parsing kitt.kcl { "arguments": [ { - "commentStart": 422, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -443,10 +453,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 408, + "commentStart": 0, "end": 0, "name": { - "commentStart": 408, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -456,7 +466,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 408, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -472,10 +482,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 370, + "commentStart": 0, "end": 0, "name": { - "commentStart": 370, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -485,7 +495,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 370, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -496,10 +506,10 @@ description: Result of parsing kitt.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 434, + "commentStart": 0, "end": 0, "name": { - "commentStart": 434, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -509,7 +519,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 434, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -520,7 +530,7 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 457, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -528,10 +538,10 @@ description: Result of parsing kitt.kcl }, "arg": { "abs_path": false, - "commentStart": 466, + "commentStart": 0, "end": 0, "name": { - "commentStart": 466, + "commentStart": 0, "end": 0, "name": "depth", "start": 0, @@ -546,10 +556,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 449, + "commentStart": 0, "end": 0, "name": { - "commentStart": 449, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -559,7 +569,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 449, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -567,7 +577,7 @@ description: Result of parsing kitt.kcl "unlabeled": null } ], - "commentStart": 183, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -585,10 +595,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 482, + "commentStart": 0, "end": 0, "name": { - "commentStart": 482, + "commentStart": 0, "end": 0, "name": "pixelBoxBody", "start": 0, @@ -599,24 +609,24 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 475, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 164, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 95, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 96, + "commentStart": 0, "end": 0, "name": "kitExtrude", "start": 0, @@ -626,7 +636,7 @@ description: Result of parsing kitt.kcl { "type": "Parameter", "identifier": { - "commentStart": 108, + "commentStart": 0, "end": 0, "name": "extrudeTag", "start": 0, @@ -636,7 +646,7 @@ description: Result of parsing kitt.kcl { "type": "Parameter", "identifier": { - "commentStart": 120, + "commentStart": 0, "end": 0, "name": "positionY", "start": 0, @@ -646,7 +656,7 @@ description: Result of parsing kitt.kcl { "type": "Parameter", "identifier": { - "commentStart": 131, + "commentStart": 0, "end": 0, "name": "positionZ", "start": 0, @@ -656,7 +666,7 @@ description: Result of parsing kitt.kcl { "type": "Parameter", "identifier": { - "commentStart": 142, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -666,7 +676,7 @@ description: Result of parsing kitt.kcl { "type": "Parameter", "identifier": { - "commentStart": 149, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -676,7 +686,7 @@ description: Result of parsing kitt.kcl { "type": "Parameter", "identifier": { - "commentStart": 157, + "commentStart": 0, "end": 0, "name": "depth", "start": 0, @@ -705,19 +715,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 496, + "commentStart": 0, "declaration": { - "commentStart": 515, + "commentStart": 0, "end": 0, "id": { - "commentStart": 515, + "commentStart": 0, "end": 0, "name": "kitBodyElevation", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 534, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -743,19 +753,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 536, + "commentStart": 0, "declaration": { - "commentStart": 536, + "commentStart": 0, "end": 0, "id": { - "commentStart": 536, + "commentStart": 0, "end": 0, "name": "kitBodyWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 551, + "commentStart": 0, "end": 0, "raw": "26", "start": 0, @@ -776,19 +786,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 554, + "commentStart": 0, "declaration": { - "commentStart": 554, + "commentStart": 0, "end": 0, "id": { - "commentStart": 554, + "commentStart": 0, "end": 0, "name": "kitBodyHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 570, + "commentStart": 0, "end": 0, "raw": "25", "start": 0, @@ -809,19 +819,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 573, + "commentStart": 0, "declaration": { - "commentStart": 573, + "commentStart": 0, "end": 0, "id": { - "commentStart": 573, + "commentStart": 0, "end": 0, "name": "kitBodyDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 588, + "commentStart": 0, "end": 0, "raw": "18", "start": 0, @@ -842,12 +852,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 590, + "commentStart": 0, "declaration": { - "commentStart": 592, + "commentStart": 0, "end": 0, "id": { - "commentStart": 592, + "commentStart": 0, "end": 0, "name": "kitBody", "start": 0, @@ -859,10 +869,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 616, + "commentStart": 0, "end": 0, "name": { - "commentStart": 616, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -876,10 +886,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 602, + "commentStart": 0, "end": 0, "name": { - "commentStart": 602, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -889,7 +899,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 602, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -898,18 +908,18 @@ description: Result of parsing kitt.kcl { "arguments": [ { - "commentStart": 640, + "commentStart": 0, "elements": [ { - "commentStart": 641, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 642, + "commentStart": 0, "end": 0, "name": { - "commentStart": 642, + "commentStart": 0, "end": 0, "name": "kitBodyWidth", "start": 0, @@ -920,7 +930,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 641, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -929,7 +939,7 @@ description: Result of parsing kitt.kcl }, "operator": "/", "right": { - "commentStart": 657, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -946,10 +956,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 660, + "commentStart": 0, "end": 0, "name": { - "commentStart": 660, + "commentStart": 0, "end": 0, "name": "kitBodyElevation", "start": 0, @@ -967,7 +977,7 @@ description: Result of parsing kitt.kcl "type": "ArrayExpression" }, { - "commentStart": 679, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -976,10 +986,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 625, + "commentStart": 0, "end": 0, "name": { - "commentStart": 625, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -989,7 +999,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 625, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1000,17 +1010,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 692, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 698, + "commentStart": 0, "elements": [ { - "commentStart": 699, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1023,10 +1033,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 702, + "commentStart": 0, "end": 0, "name": { - "commentStart": 702, + "commentStart": 0, "end": 0, "name": "kitBodyHeight", "start": 0, @@ -1047,10 +1057,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 687, + "commentStart": 0, "end": 0, "name": { - "commentStart": 687, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1060,7 +1070,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 687, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1072,21 +1082,21 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 728, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 734, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 735, + "commentStart": 0, "end": 0, "name": { - "commentStart": 735, + "commentStart": 0, "end": 0, "name": "kitBodyWidth", "start": 0, @@ -1098,7 +1108,7 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 749, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1119,14 +1129,14 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 753, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 759, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1137,10 +1147,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 723, + "commentStart": 0, "end": 0, "name": { - "commentStart": 723, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1150,7 +1160,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 723, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1162,17 +1172,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 777, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 783, + "commentStart": 0, "elements": [ { - "commentStart": 784, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1186,10 +1196,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 788, + "commentStart": 0, "end": 0, "name": { - "commentStart": 788, + "commentStart": 0, "end": 0, "name": "kitBodyHeight", "start": 0, @@ -1200,7 +1210,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 787, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1217,14 +1227,14 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 804, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 810, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1235,10 +1245,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 772, + "commentStart": 0, "end": 0, "name": { - "commentStart": 772, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1248,7 +1258,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 772, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1260,19 +1270,19 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 828, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 842, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 857, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1281,10 +1291,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 843, + "commentStart": 0, "end": 0, "name": { - "commentStart": 843, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -1294,7 +1304,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 843, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1303,7 +1313,7 @@ description: Result of parsing kitt.kcl { "arguments": [ { - "commentStart": 875, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1312,10 +1322,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 861, + "commentStart": 0, "end": 0, "name": { - "commentStart": 861, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -1325,7 +1335,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 861, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1341,10 +1351,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 823, + "commentStart": 0, "end": 0, "name": { - "commentStart": 823, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1354,7 +1364,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 823, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1365,10 +1375,10 @@ description: Result of parsing kitt.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 885, + "commentStart": 0, "end": 0, "name": { - "commentStart": 885, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1378,7 +1388,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 885, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1389,7 +1399,7 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 906, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1397,10 +1407,10 @@ description: Result of parsing kitt.kcl }, "arg": { "abs_path": false, - "commentStart": 915, + "commentStart": 0, "end": 0, "name": { - "commentStart": 915, + "commentStart": 0, "end": 0, "name": "kitBodyDepth", "start": 0, @@ -1415,10 +1425,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 898, + "commentStart": 0, "end": 0, "name": { - "commentStart": 898, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1428,7 +1438,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 898, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1436,13 +1446,13 @@ description: Result of parsing kitt.kcl "unlabeled": null } ], - "commentStart": 602, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "7": [ { - "commentStart": 928, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1470,19 +1480,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 966, + "commentStart": 0, "declaration": { - "commentStart": 966, + "commentStart": 0, "end": 0, "id": { - "commentStart": 966, + "commentStart": 0, "end": 0, "name": "kitHeadOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 982, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1503,19 +1513,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 984, + "commentStart": 0, "declaration": { - "commentStart": 984, + "commentStart": 0, "end": 0, "id": { - "commentStart": 984, + "commentStart": 0, "end": 0, "name": "kitHeadHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1000, + "commentStart": 0, "end": 0, "raw": "16", "start": 0, @@ -1536,32 +1546,32 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 1002, + "commentStart": 0, "declaration": { - "commentStart": 1004, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1004, + "commentStart": 0, "end": 0, "name": "kitHeadElevation", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1023, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1023, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1023, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1023, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1023, + "commentStart": 0, "end": 0, "name": "kitBodyElevation", "start": 0, @@ -1575,10 +1585,10 @@ description: Result of parsing kitt.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1042, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1042, + "commentStart": 0, "end": 0, "name": "kitBodyHeight", "start": 0, @@ -1596,10 +1606,10 @@ description: Result of parsing kitt.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1058, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1058, + "commentStart": 0, "end": 0, "name": "kitHeadOffset", "start": 0, @@ -1617,10 +1627,10 @@ description: Result of parsing kitt.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1074, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1074, + "commentStart": 0, "end": 0, "name": "kitHeadHeight", "start": 0, @@ -1645,26 +1655,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 1087, + "commentStart": 0, "declaration": { - "commentStart": 1089, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1089, + "commentStart": 0, "end": 0, "name": "kitHeadWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1104, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1104, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1104, + "commentStart": 0, "end": 0, "name": "kitBodyWidth", "start": 0, @@ -1677,14 +1687,14 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 1120, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1120, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1120, + "commentStart": 0, "end": 0, "name": "kitHeadOffset", "start": 0, @@ -1697,7 +1707,7 @@ description: Result of parsing kitt.kcl }, "operator": "*", "right": { - "commentStart": 1136, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1726,19 +1736,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 1139, + "commentStart": 0, "declaration": { - "commentStart": 1139, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1139, + "commentStart": 0, "end": 0, "name": "kitHeadDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1154, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -1759,12 +1769,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 1156, + "commentStart": 0, "declaration": { - "commentStart": 1156, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1156, + "commentStart": 0, "end": 0, "name": "kitHead", "start": 0, @@ -1774,10 +1784,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 1175, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1175, + "commentStart": 0, "end": 0, "name": "kitBody", "start": 0, @@ -1789,24 +1799,31 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 1184, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'END'", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "type": "Name", + "type": "Name" }, { - "commentStart": 1191, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1192, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1192, + "commentStart": 0, "end": 0, "name": "kitHeadWidth", "start": 0, @@ -1817,7 +1834,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 1191, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1826,7 +1843,7 @@ description: Result of parsing kitt.kcl }, "operator": "/", "right": { - "commentStart": 1207, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1843,10 +1860,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 1210, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1210, + "commentStart": 0, "end": 0, "name": "kitHeadElevation", "start": 0, @@ -1859,10 +1876,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 1228, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1228, + "commentStart": 0, "end": 0, "name": "kitHeadWidth", "start": 0, @@ -1875,10 +1892,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 1242, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1242, + "commentStart": 0, "end": 0, "name": "kitHeadHeight", "start": 0, @@ -1891,10 +1908,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 1257, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1257, + "commentStart": 0, "end": 0, "name": "kitHeadDepth", "start": 0, @@ -1908,10 +1925,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 1166, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1166, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -1921,7 +1938,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 1166, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1937,26 +1954,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 1271, + "commentStart": 0, "declaration": { - "commentStart": 1271, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1271, + "commentStart": 0, "end": 0, "name": "kitFaceElevation", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1290, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1290, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1290, + "commentStart": 0, "end": 0, "name": "kitHeadElevation", "start": 0, @@ -1969,7 +1986,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 1309, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1994,26 +2011,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 1310, + "commentStart": 0, "declaration": { - "commentStart": 1329, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1329, + "commentStart": 0, "end": 0, "name": "kitFaceWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1344, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1344, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1344, + "commentStart": 0, "end": 0, "name": "kitHeadWidth", "start": 0, @@ -2026,7 +2043,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 1359, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -2056,32 +2073,32 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 1361, + "commentStart": 0, "declaration": { - "commentStart": 1361, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1361, + "commentStart": 0, "end": 0, "name": "kitFaceHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1377, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1377, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1377, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1377, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1377, + "commentStart": 0, "end": 0, "name": "kitHeadElevation", "start": 0, @@ -2095,10 +2112,10 @@ description: Result of parsing kitt.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1396, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1396, + "commentStart": 0, "end": 0, "name": "kitHeadHeight", "start": 0, @@ -2116,10 +2133,10 @@ description: Result of parsing kitt.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1412, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1412, + "commentStart": 0, "end": 0, "name": "kitFaceElevation", "start": 0, @@ -2136,7 +2153,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 1431, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -2161,19 +2178,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 1433, + "commentStart": 0, "declaration": { - "commentStart": 1433, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1433, + "commentStart": 0, "end": 0, "name": "kitFaceDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1448, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2194,12 +2211,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 1449, + "commentStart": 0, "declaration": { - "commentStart": 1451, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1451, + "commentStart": 0, "end": 0, "name": "kitFace", "start": 0, @@ -2210,37 +2227,38 @@ description: Result of parsing kitt.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1475, - "end": 0, - "name": { - "commentStart": 1475, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "kitHead", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 1484, - "end": 0, - "raw": "'END'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1461, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1461, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2250,27 +2268,43 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 1461, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "kitHead", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 1511, + "commentStart": 0, "elements": [ { - "commentStart": 1512, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1513, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1513, + "commentStart": 0, "end": 0, "name": "kitFaceWidth", "start": 0, @@ -2281,7 +2315,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 1512, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2290,7 +2324,7 @@ description: Result of parsing kitt.kcl }, "operator": "/", "right": { - "commentStart": 1528, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2307,10 +2341,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 1531, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1531, + "commentStart": 0, "end": 0, "name": "kitFaceElevation", "start": 0, @@ -2328,7 +2362,7 @@ description: Result of parsing kitt.kcl "type": "ArrayExpression" }, { - "commentStart": 1550, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2337,10 +2371,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 1496, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1496, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2350,7 +2384,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 1496, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2361,17 +2395,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 1563, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1569, + "commentStart": 0, "elements": [ { - "commentStart": 1570, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2383,7 +2417,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 1573, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2404,10 +2438,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 1558, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1558, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2417,7 +2451,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 1558, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2429,18 +2463,18 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 1611, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1617, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1619, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2451,7 +2485,7 @@ description: Result of parsing kitt.kcl "suffix": "None" } }, - "commentStart": 1618, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2459,7 +2493,7 @@ description: Result of parsing kitt.kcl "type": "UnaryExpression" }, { - "commentStart": 1622, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2480,10 +2514,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 1606, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1606, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2493,7 +2527,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 1606, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2505,17 +2539,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 1662, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1668, + "commentStart": 0, "elements": [ { - "commentStart": 1669, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2528,10 +2562,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 1672, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1672, + "commentStart": 0, "end": 0, "name": "kitFaceHeight", "start": 0, @@ -2552,10 +2586,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 1657, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1657, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2565,7 +2599,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 1657, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2577,17 +2611,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 1714, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1720, + "commentStart": 0, "elements": [ { - "commentStart": 1721, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2599,7 +2633,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 1724, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2620,10 +2654,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 1709, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1709, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2633,7 +2667,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 1709, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2645,17 +2679,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 1765, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1771, + "commentStart": 0, "elements": [ { - "commentStart": 1772, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2667,7 +2701,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 1775, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2688,10 +2722,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 1760, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1760, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2701,7 +2735,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 1760, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2713,21 +2747,21 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 1813, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1819, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1820, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1820, + "commentStart": 0, "end": 0, "name": "kitFaceWidth", "start": 0, @@ -2739,7 +2773,7 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 1834, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2760,10 +2794,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 1808, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1808, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2773,7 +2807,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 1808, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2785,17 +2819,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 1868, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1874, + "commentStart": 0, "elements": [ { - "commentStart": 1875, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2808,7 +2842,7 @@ description: Result of parsing kitt.kcl }, { "argument": { - "commentStart": 1879, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2819,7 +2853,7 @@ description: Result of parsing kitt.kcl "suffix": "None" } }, - "commentStart": 1878, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2836,10 +2870,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 1863, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1863, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2849,7 +2883,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 1863, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2861,17 +2895,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 1920, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1926, + "commentStart": 0, "elements": [ { - "commentStart": 1927, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2883,7 +2917,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 1930, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2904,10 +2938,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 1915, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1915, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2917,7 +2951,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 1915, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2929,17 +2963,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 1972, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1978, + "commentStart": 0, "elements": [ { - "commentStart": 1979, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2953,10 +2987,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 1983, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1983, + "commentStart": 0, "end": 0, "name": "kitFaceHeight", "start": 0, @@ -2967,7 +3001,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 1982, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2984,10 +3018,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 1967, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1967, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2997,7 +3031,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 1967, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3009,18 +3043,18 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 2028, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2034, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 2036, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3031,7 +3065,7 @@ description: Result of parsing kitt.kcl "suffix": "None" } }, - "commentStart": 2035, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3039,7 +3073,7 @@ description: Result of parsing kitt.kcl "type": "UnaryExpression" }, { - "commentStart": 2039, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3060,10 +3094,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 2023, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2023, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3073,7 +3107,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 2023, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3085,17 +3119,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 2080, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2086, + "commentStart": 0, "elements": [ { - "commentStart": 2087, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3108,7 +3142,7 @@ description: Result of parsing kitt.kcl }, { "argument": { - "commentStart": 2091, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3119,7 +3153,7 @@ description: Result of parsing kitt.kcl "suffix": "None" } }, - "commentStart": 2090, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3136,10 +3170,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 2075, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2075, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3149,7 +3183,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 2075, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3161,19 +3195,19 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 2132, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2146, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 2161, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3182,10 +3216,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 2147, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2147, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -3195,7 +3229,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 2147, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3204,7 +3238,7 @@ description: Result of parsing kitt.kcl { "arguments": [ { - "commentStart": 2179, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3213,10 +3247,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 2165, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2165, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -3226,7 +3260,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 2165, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3242,10 +3276,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 2127, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2127, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3255,7 +3289,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 2127, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3266,10 +3300,10 @@ description: Result of parsing kitt.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2189, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2189, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -3279,7 +3313,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 2189, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3290,7 +3324,7 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 2210, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3299,10 +3333,10 @@ description: Result of parsing kitt.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 2220, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2220, + "commentStart": 0, "end": 0, "name": "kitFaceDepth", "start": 0, @@ -3313,7 +3347,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 2219, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3324,10 +3358,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 2202, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2202, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3337,7 +3371,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 2202, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3345,13 +3379,13 @@ description: Result of parsing kitt.kcl "unlabeled": null } ], - "commentStart": 1461, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "commentStart": 1576, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3364,7 +3398,7 @@ description: Result of parsing kitt.kcl ], "3": [ { - "commentStart": 1625, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3377,7 +3411,7 @@ description: Result of parsing kitt.kcl ], "4": [ { - "commentStart": 1687, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3390,7 +3424,7 @@ description: Result of parsing kitt.kcl ], "5": [ { - "commentStart": 1727, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3403,7 +3437,7 @@ description: Result of parsing kitt.kcl ], "6": [ { - "commentStart": 1778, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3416,7 +3450,7 @@ description: Result of parsing kitt.kcl ], "7": [ { - "commentStart": 1837, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3429,7 +3463,7 @@ description: Result of parsing kitt.kcl ], "8": [ { - "commentStart": 1882, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3442,7 +3476,7 @@ description: Result of parsing kitt.kcl ], "9": [ { - "commentStart": 1933, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3455,7 +3489,7 @@ description: Result of parsing kitt.kcl ], "10": [ { - "commentStart": 1998, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3468,7 +3502,7 @@ description: Result of parsing kitt.kcl ], "11": [ { - "commentStart": 2042, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3481,7 +3515,7 @@ description: Result of parsing kitt.kcl ], "12": [ { - "commentStart": 2094, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3494,7 +3528,7 @@ description: Result of parsing kitt.kcl ], "15": [ { - "commentStart": 2235, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3505,7 +3539,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 2262, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3516,7 +3550,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 2280, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3544,19 +3578,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 2306, + "commentStart": 0, "declaration": { - "commentStart": 2306, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2306, + "commentStart": 0, "end": 0, "name": "kitEyeDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 2320, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -3577,26 +3611,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 2324, + "commentStart": 0, "declaration": { - "commentStart": 2324, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2324, + "commentStart": 0, "end": 0, "name": "kitEyeHeihgt", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 2339, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2339, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2339, + "commentStart": 0, "end": 0, "name": "kitFaceElevation", "start": 0, @@ -3609,7 +3643,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 2358, + "commentStart": 0, "end": 0, "raw": "7", "start": 0, @@ -3634,19 +3668,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 2360, + "commentStart": 0, "declaration": { - "commentStart": 2360, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2360, + "commentStart": 0, "end": 0, "name": "kitEyeOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 2375, + "commentStart": 0, "end": 0, "raw": "7", "start": 0, @@ -3667,12 +3701,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 2376, + "commentStart": 0, "declaration": { - "commentStart": 2403, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2403, + "commentStart": 0, "end": 0, "name": "kitLeftEye1", "start": 0, @@ -3682,10 +3716,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 2426, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2426, + "commentStart": 0, "end": 0, "name": "kitFace", "start": 0, @@ -3697,21 +3731,28 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 2435, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'START'", + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "START" + "type": "Name", + "type": "Name" }, { "argument": { "abs_path": false, - "commentStart": 2445, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2445, + "commentStart": 0, "end": 0, "name": "kitEyeOffset", "start": 0, @@ -3722,7 +3763,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 2444, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3731,10 +3772,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 2459, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2459, + "commentStart": 0, "end": 0, "name": "kitEyeHeihgt", "start": 0, @@ -3746,7 +3787,7 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 2473, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3758,7 +3799,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 2476, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3771,10 +3812,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 2479, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2479, + "commentStart": 0, "end": 0, "name": "kitEyeDepth", "start": 0, @@ -3788,10 +3829,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 2417, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2417, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -3801,7 +3842,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 2417, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3822,12 +3863,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 2491, + "commentStart": 0, "declaration": { - "commentStart": 2511, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2511, + "commentStart": 0, "end": 0, "name": "kitLeftEye2", "start": 0, @@ -3837,10 +3878,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 2534, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2534, + "commentStart": 0, "end": 0, "name": "kitFace", "start": 0, @@ -3852,24 +3893,31 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 2543, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'START'", + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "START" + "type": "Name", + "type": "Name" }, { - "commentStart": 2552, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 2553, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2553, + "commentStart": 0, "end": 0, "name": "kitEyeOffset", "start": 0, @@ -3880,7 +3928,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 2552, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3889,7 +3937,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 2568, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3905,14 +3953,14 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 2571, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2571, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2571, + "commentStart": 0, "end": 0, "name": "kitEyeHeihgt", "start": 0, @@ -3925,7 +3973,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 2586, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3941,7 +3989,7 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 2589, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -3953,7 +4001,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 2592, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3966,10 +4014,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 2595, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2595, + "commentStart": 0, "end": 0, "name": "kitEyeDepth", "start": 0, @@ -3983,10 +4031,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 2525, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2525, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -3996,7 +4044,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 2525, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4017,12 +4065,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 2608, + "commentStart": 0, "declaration": { - "commentStart": 2608, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2608, + "commentStart": 0, "end": 0, "name": "kitLeftEye3", "start": 0, @@ -4032,10 +4080,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 2631, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2631, + "commentStart": 0, "end": 0, "name": "kitFace", "start": 0, @@ -4047,24 +4095,31 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 2640, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'START'", + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "START" + "type": "Name", + "type": "Name" }, { - "commentStart": 2649, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 2650, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2650, + "commentStart": 0, "end": 0, "name": "kitEyeOffset", "start": 0, @@ -4075,7 +4130,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 2649, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4084,7 +4139,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 2665, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -4101,10 +4156,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 2668, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2668, + "commentStart": 0, "end": 0, "name": "kitEyeHeihgt", "start": 0, @@ -4116,7 +4171,7 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 2682, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -4128,7 +4183,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 2685, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -4141,10 +4196,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 2688, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2688, + "commentStart": 0, "end": 0, "name": "kitEyeDepth", "start": 0, @@ -4158,10 +4213,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 2622, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2622, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -4171,7 +4226,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 2622, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4187,12 +4242,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 2701, + "commentStart": 0, "declaration": { - "commentStart": 2701, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2701, + "commentStart": 0, "end": 0, "name": "kitRightEye", "start": 0, @@ -4202,10 +4257,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 2724, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2724, + "commentStart": 0, "end": 0, "name": "kitFace", "start": 0, @@ -4217,23 +4272,30 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 2733, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'START'", + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "START" + "type": "Name", + "type": "Name" }, { - "commentStart": 2742, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2742, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2742, + "commentStart": 0, "end": 0, "name": "kitEyeOffset", "start": 0, @@ -4246,7 +4308,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 2757, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -4262,14 +4324,14 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 2760, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2760, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2760, + "commentStart": 0, "end": 0, "name": "kitEyeHeihgt", "start": 0, @@ -4282,7 +4344,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 2775, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -4298,7 +4360,7 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 2778, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4310,7 +4372,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 2781, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -4323,10 +4385,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 2784, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2784, + "commentStart": 0, "end": 0, "name": "kitEyeDepth", "start": 0, @@ -4340,10 +4402,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 2715, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2715, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -4353,7 +4415,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 2715, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4369,26 +4431,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 2797, + "commentStart": 0, "declaration": { - "commentStart": 2797, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2797, + "commentStart": 0, "end": 0, "name": "kitNoseElevation", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 2816, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2816, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2816, + "commentStart": 0, "end": 0, "name": "kitEyeHeihgt", "start": 0, @@ -4401,7 +4463,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 2831, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -4426,12 +4488,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 2833, + "commentStart": 0, "declaration": { - "commentStart": 2833, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2833, + "commentStart": 0, "end": 0, "name": "kitNose", "start": 0, @@ -4442,37 +4504,38 @@ description: Result of parsing kitt.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 2857, - "end": 0, - "name": { - "commentStart": 2857, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "kitFace", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 2866, - "end": 0, - "raw": "'START'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "START" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 2843, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2843, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -4482,20 +4545,36 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 2843, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "kitFace", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 2895, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 2897, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4506,7 +4585,7 @@ description: Result of parsing kitt.kcl "suffix": "None" } }, - "commentStart": 2896, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4515,10 +4594,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 2900, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2900, + "commentStart": 0, "end": 0, "name": "kitNoseElevation", "start": 0, @@ -4536,7 +4615,7 @@ description: Result of parsing kitt.kcl "type": "ArrayExpression" }, { - "commentStart": 2919, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4545,10 +4624,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 2880, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2880, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -4558,7 +4637,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 2880, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4569,17 +4648,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 2939, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2945, + "commentStart": 0, "elements": [ { - "commentStart": 2946, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4591,7 +4670,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 2949, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -4612,10 +4691,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 2934, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2934, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4625,7 +4704,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 2934, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4637,17 +4716,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 2980, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2986, + "commentStart": 0, "elements": [ { - "commentStart": 2987, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4659,7 +4738,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 2990, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4680,10 +4759,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 2975, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2975, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4693,7 +4772,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 2975, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4705,17 +4784,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 3024, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3030, + "commentStart": 0, "elements": [ { - "commentStart": 3031, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4727,7 +4806,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 3034, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4748,10 +4827,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3019, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3019, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4761,7 +4840,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3019, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4773,18 +4852,18 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 3063, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3069, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 3071, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -4795,7 +4874,7 @@ description: Result of parsing kitt.kcl "suffix": "None" } }, - "commentStart": 3070, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4803,7 +4882,7 @@ description: Result of parsing kitt.kcl "type": "UnaryExpression" }, { - "commentStart": 3074, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4824,10 +4903,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3058, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3058, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4837,7 +4916,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3058, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4849,17 +4928,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 3107, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3113, + "commentStart": 0, "elements": [ { - "commentStart": 3114, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4871,7 +4950,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 3117, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -4892,10 +4971,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3102, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3102, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4905,7 +4984,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3102, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4917,17 +4996,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 3148, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3154, + "commentStart": 0, "elements": [ { - "commentStart": 3155, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -4939,7 +5018,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 3158, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4960,10 +5039,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3143, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3143, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4973,7 +5052,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3143, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4985,17 +5064,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 3191, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3197, + "commentStart": 0, "elements": [ { - "commentStart": 3198, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5008,7 +5087,7 @@ description: Result of parsing kitt.kcl }, { "argument": { - "commentStart": 3202, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -5019,7 +5098,7 @@ description: Result of parsing kitt.kcl "suffix": "None" } }, - "commentStart": 3201, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5036,10 +5115,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3186, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3186, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5049,7 +5128,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3186, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5061,18 +5140,18 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 3236, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3242, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 3244, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -5083,7 +5162,7 @@ description: Result of parsing kitt.kcl "suffix": "None" } }, - "commentStart": 3243, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5091,7 +5170,7 @@ description: Result of parsing kitt.kcl "type": "UnaryExpression" }, { - "commentStart": 3247, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5112,10 +5191,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3231, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5125,7 +5204,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3231, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5137,17 +5216,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 3281, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3287, + "commentStart": 0, "elements": [ { - "commentStart": 3288, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5160,7 +5239,7 @@ description: Result of parsing kitt.kcl }, { "argument": { - "commentStart": 3292, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5171,7 +5250,7 @@ description: Result of parsing kitt.kcl "suffix": "None" } }, - "commentStart": 3291, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5188,10 +5267,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3276, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3276, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5201,7 +5280,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3276, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5213,17 +5292,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 3323, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3329, + "commentStart": 0, "elements": [ { - "commentStart": 3330, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -5235,7 +5314,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 3333, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5256,10 +5335,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3318, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3318, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5269,7 +5348,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3318, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5281,17 +5360,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 3368, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3374, + "commentStart": 0, "elements": [ { - "commentStart": 3375, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5304,7 +5383,7 @@ description: Result of parsing kitt.kcl }, { "argument": { - "commentStart": 3379, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -5315,7 +5394,7 @@ description: Result of parsing kitt.kcl "suffix": "None" } }, - "commentStart": 3378, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5332,10 +5411,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3363, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3363, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5345,7 +5424,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3363, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5357,19 +5436,19 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 3413, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3427, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 3442, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5378,10 +5457,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3428, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3428, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -5391,7 +5470,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3428, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5400,7 +5479,7 @@ description: Result of parsing kitt.kcl { "arguments": [ { - "commentStart": 3460, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5409,10 +5488,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3446, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3446, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -5422,7 +5501,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3446, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5438,10 +5517,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3408, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3408, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5451,7 +5530,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3408, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5462,10 +5541,10 @@ description: Result of parsing kitt.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 3470, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3470, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -5475,7 +5554,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3470, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5486,7 +5565,7 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 3491, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -5494,10 +5573,10 @@ description: Result of parsing kitt.kcl }, "arg": { "abs_path": false, - "commentStart": 3500, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3500, + "commentStart": 0, "end": 0, "name": "kitEyeDepth", "start": 0, @@ -5512,10 +5591,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3483, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3483, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -5525,7 +5604,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3483, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5533,13 +5612,13 @@ description: Result of parsing kitt.kcl "unlabeled": null } ], - "commentStart": 2843, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 2921, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5552,7 +5631,7 @@ description: Result of parsing kitt.kcl ], "2": [ { - "commentStart": 2952, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5565,7 +5644,7 @@ description: Result of parsing kitt.kcl ], "3": [ { - "commentStart": 2993, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5578,7 +5657,7 @@ description: Result of parsing kitt.kcl ], "4": [ { - "commentStart": 3037, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5591,7 +5670,7 @@ description: Result of parsing kitt.kcl ], "5": [ { - "commentStart": 3077, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5604,7 +5683,7 @@ description: Result of parsing kitt.kcl ], "6": [ { - "commentStart": 3120, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5617,7 +5696,7 @@ description: Result of parsing kitt.kcl ], "7": [ { - "commentStart": 3161, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5630,7 +5709,7 @@ description: Result of parsing kitt.kcl ], "8": [ { - "commentStart": 3205, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5643,7 +5722,7 @@ description: Result of parsing kitt.kcl ], "9": [ { - "commentStart": 3250, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5656,7 +5735,7 @@ description: Result of parsing kitt.kcl ], "10": [ { - "commentStart": 3295, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5669,7 +5748,7 @@ description: Result of parsing kitt.kcl ], "11": [ { - "commentStart": 3336, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5682,7 +5761,7 @@ description: Result of parsing kitt.kcl ], "12": [ { - "commentStart": 3382, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5695,7 +5774,7 @@ description: Result of parsing kitt.kcl ], "15": [ { - "commentStart": 3512, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -5723,19 +5802,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 3533, + "commentStart": 0, "declaration": { - "commentStart": 3533, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3533, + "commentStart": 0, "end": 0, "name": "kitMouthOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 3550, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -5756,26 +5835,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 3552, + "commentStart": 0, "declaration": { - "commentStart": 3552, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3552, + "commentStart": 0, "end": 0, "name": "kitMouthHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 3569, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3569, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3569, + "commentStart": 0, "end": 0, "name": "kitEyeHeihgt", "start": 0, @@ -5788,7 +5867,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 3584, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -5813,12 +5892,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 3586, + "commentStart": 0, "declaration": { - "commentStart": 3586, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3586, + "commentStart": 0, "end": 0, "name": "kitMouthUpLeft", "start": 0, @@ -5828,10 +5907,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 3612, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3612, + "commentStart": 0, "end": 0, "name": "kitFace", "start": 0, @@ -5843,21 +5922,28 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 3621, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'START'", + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "START" + "type": "Name", + "type": "Name" }, { "argument": { "abs_path": false, - "commentStart": 3631, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3631, + "commentStart": 0, "end": 0, "name": "kitMouthOffset", "start": 0, @@ -5868,7 +5954,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 3630, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5877,10 +5963,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 3647, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3647, + "commentStart": 0, "end": 0, "name": "kitMouthHeight", "start": 0, @@ -5892,7 +5978,7 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 3663, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -5904,7 +5990,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 3666, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -5917,10 +6003,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 3669, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3669, + "commentStart": 0, "end": 0, "name": "kitEyeDepth", "start": 0, @@ -5934,10 +6020,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3603, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3603, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -5947,7 +6033,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3603, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5963,12 +6049,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 3681, + "commentStart": 0, "declaration": { - "commentStart": 3701, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3701, + "commentStart": 0, "end": 0, "name": "kitMouthDownLeft", "start": 0, @@ -5978,10 +6064,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 3729, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3729, + "commentStart": 0, "end": 0, "name": "kitFace", "start": 0, @@ -5993,24 +6079,31 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 3738, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'START'", + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "START" + "type": "Name", + "type": "Name" }, { - "commentStart": 3747, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 3748, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3748, + "commentStart": 0, "end": 0, "name": "kitMouthOffset", "start": 0, @@ -6021,7 +6114,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 3747, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6030,7 +6123,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 3765, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6046,14 +6139,14 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 3768, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3768, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3768, + "commentStart": 0, "end": 0, "name": "kitMouthHeight", "start": 0, @@ -6066,7 +6159,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 3785, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6082,7 +6175,7 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 3788, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6094,7 +6187,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 3791, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6107,10 +6200,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 3794, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3794, + "commentStart": 0, "end": 0, "name": "kitEyeDepth", "start": 0, @@ -6124,10 +6217,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3720, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3720, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -6137,7 +6230,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3720, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6158,12 +6251,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 3807, + "commentStart": 0, "declaration": { - "commentStart": 3807, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3807, + "commentStart": 0, "end": 0, "name": "kitMouthUpRight", "start": 0, @@ -6173,10 +6266,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 3834, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3834, + "commentStart": 0, "end": 0, "name": "kitFace", "start": 0, @@ -6188,20 +6281,27 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 3843, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'START'", + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "START" + "type": "Name", + "type": "Name" }, { "abs_path": false, - "commentStart": 3852, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3852, + "commentStart": 0, "end": 0, "name": "kitMouthOffset", "start": 0, @@ -6214,10 +6314,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 3868, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3868, + "commentStart": 0, "end": 0, "name": "kitMouthHeight", "start": 0, @@ -6229,7 +6329,7 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 3884, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6241,7 +6341,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 3887, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6254,10 +6354,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 3890, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3890, + "commentStart": 0, "end": 0, "name": "kitEyeDepth", "start": 0, @@ -6271,10 +6371,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3825, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3825, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -6284,7 +6384,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3825, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6300,12 +6400,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 3903, + "commentStart": 0, "declaration": { - "commentStart": 3903, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3903, + "commentStart": 0, "end": 0, "name": "kitMouthDownRight", "start": 0, @@ -6315,10 +6415,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 3932, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3932, + "commentStart": 0, "end": 0, "name": "kitFace", "start": 0, @@ -6330,23 +6430,30 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 3941, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'START'", + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "START" + "type": "Name", + "type": "Name" }, { - "commentStart": 3950, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3950, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3950, + "commentStart": 0, "end": 0, "name": "kitMouthOffset", "start": 0, @@ -6359,7 +6466,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 3967, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6375,14 +6482,14 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 3970, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3970, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3970, + "commentStart": 0, "end": 0, "name": "kitMouthHeight", "start": 0, @@ -6395,7 +6502,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 3987, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6411,7 +6518,7 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 3990, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6423,7 +6530,7 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 3993, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6436,10 +6543,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 3996, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3996, + "commentStart": 0, "end": 0, "name": "kitEyeDepth", "start": 0, @@ -6453,10 +6560,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 3923, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3923, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -6466,7 +6573,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 3923, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6482,26 +6589,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4009, + "commentStart": 0, "declaration": { - "commentStart": 4009, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4009, + "commentStart": 0, "end": 0, "name": "kitBellyElevation", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4029, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4029, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4029, + "commentStart": 0, "end": 0, "name": "kitBodyElevation", "start": 0, @@ -6514,7 +6621,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 4048, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6539,29 +6646,29 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4049, + "commentStart": 0, "declaration": { - "commentStart": 4051, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4051, + "commentStart": 0, "end": 0, "name": "kitBellyHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4068, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4068, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4068, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4068, + "commentStart": 0, "end": 0, "name": "kitHeadElevation", "start": 0, @@ -6575,10 +6682,10 @@ description: Result of parsing kitt.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 4087, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4087, + "commentStart": 0, "end": 0, "name": "kitBellyElevation", "start": 0, @@ -6595,7 +6702,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 4107, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6620,12 +6727,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4108, + "commentStart": 0, "declaration": { - "commentStart": 4127, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4127, + "commentStart": 0, "end": 0, "name": "kitBellyWidth", "start": 0, @@ -6633,10 +6740,10 @@ description: Result of parsing kitt.kcl }, "init": { "abs_path": false, - "commentStart": 4143, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4143, + "commentStart": 0, "end": 0, "name": "kitHeadWidth", "start": 0, @@ -6662,12 +6769,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4156, + "commentStart": 0, "declaration": { - "commentStart": 4156, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4156, + "commentStart": 0, "end": 0, "name": "kitBellyDepth", "start": 0, @@ -6675,10 +6782,10 @@ description: Result of parsing kitt.kcl }, "init": { "abs_path": false, - "commentStart": 4172, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4172, + "commentStart": 0, "end": 0, "name": "kitHeadDepth", "start": 0, @@ -6699,12 +6806,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4185, + "commentStart": 0, "declaration": { - "commentStart": 4185, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4185, + "commentStart": 0, "end": 0, "name": "kitBelly", "start": 0, @@ -6714,10 +6821,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 4205, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4205, + "commentStart": 0, "end": 0, "name": "kitBody", "start": 0, @@ -6729,24 +6836,31 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 4214, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'END'", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "type": "Name", + "type": "Name" }, { - "commentStart": 4221, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 4222, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4222, + "commentStart": 0, "end": 0, "name": "kitBellyWidth", "start": 0, @@ -6757,7 +6871,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 4221, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6766,7 +6880,7 @@ description: Result of parsing kitt.kcl }, "operator": "/", "right": { - "commentStart": 4238, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6783,10 +6897,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 4241, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4241, + "commentStart": 0, "end": 0, "name": "kitBellyElevation", "start": 0, @@ -6799,10 +6913,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 4260, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4260, + "commentStart": 0, "end": 0, "name": "kitBellyWidth", "start": 0, @@ -6815,10 +6929,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 4275, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4275, + "commentStart": 0, "end": 0, "name": "kitBellyHeight", "start": 0, @@ -6831,10 +6945,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 4291, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4291, + "commentStart": 0, "end": 0, "name": "kitBellyDepth", "start": 0, @@ -6848,10 +6962,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 4196, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4196, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -6861,7 +6975,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 4196, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6877,26 +6991,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4306, + "commentStart": 0, "declaration": { - "commentStart": 4306, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4306, + "commentStart": 0, "end": 0, "name": "kitVHSelevation", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4324, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4324, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4324, + "commentStart": 0, "end": 0, "name": "kitBellyElevation", "start": 0, @@ -6909,7 +7023,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 4344, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6934,19 +7048,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4345, + "commentStart": 0, "declaration": { - "commentStart": 4347, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4347, + "commentStart": 0, "end": 0, "name": "kitVHSheight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4362, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6967,19 +7081,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4363, + "commentStart": 0, "declaration": { - "commentStart": 4385, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4385, + "commentStart": 0, "end": 0, "name": "kitVHSwidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4399, + "commentStart": 0, "end": 0, "raw": "8", "start": 0, @@ -7005,19 +7119,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4401, + "commentStart": 0, "declaration": { - "commentStart": 4401, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4401, + "commentStart": 0, "end": 0, "name": "kitVHSdepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4415, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -7038,12 +7152,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4417, + "commentStart": 0, "declaration": { - "commentStart": 4417, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4417, + "commentStart": 0, "end": 0, "name": "kitVHS", "start": 0, @@ -7053,10 +7167,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 4435, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4435, + "commentStart": 0, "end": 0, "name": "kitBelly", "start": 0, @@ -7068,24 +7182,31 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 4445, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'END'", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "type": "Name", + "type": "Name" }, { - "commentStart": 4452, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 4453, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4453, + "commentStart": 0, "end": 0, "name": "kitVHSwidth", "start": 0, @@ -7096,7 +7217,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 4452, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7105,7 +7226,7 @@ description: Result of parsing kitt.kcl }, "operator": "/", "right": { - "commentStart": 4467, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -7122,10 +7243,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 4470, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4470, + "commentStart": 0, "end": 0, "name": "kitVHSelevation", "start": 0, @@ -7138,10 +7259,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 4487, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4487, + "commentStart": 0, "end": 0, "name": "kitVHSwidth", "start": 0, @@ -7154,10 +7275,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 4500, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4500, + "commentStart": 0, "end": 0, "name": "kitVHSheight", "start": 0, @@ -7170,10 +7291,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 4514, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4514, + "commentStart": 0, "end": 0, "name": "kitVHSdepth", "start": 0, @@ -7187,10 +7308,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 4426, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4426, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -7200,7 +7321,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 4426, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7216,26 +7337,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4527, + "commentStart": 0, "declaration": { - "commentStart": 4527, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4527, + "commentStart": 0, "end": 0, "name": "kitFloppyElevation", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4548, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4548, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4548, + "commentStart": 0, "end": 0, "name": "kitBellyElevation", "start": 0, @@ -7248,7 +7369,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 4568, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -7273,19 +7394,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4570, + "commentStart": 0, "declaration": { - "commentStart": 4570, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4570, + "commentStart": 0, "end": 0, "name": "kitFloppyHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4588, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -7306,19 +7427,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4589, + "commentStart": 0, "declaration": { - "commentStart": 4591, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4591, + "commentStart": 0, "end": 0, "name": "kitFloppyWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4608, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -7339,29 +7460,29 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4610, + "commentStart": 0, "declaration": { - "commentStart": 4610, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4610, + "commentStart": 0, "end": 0, "name": "kitFloppyOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4628, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4628, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4628, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4628, + "commentStart": 0, "end": 0, "name": "kitBellyWidth", "start": 0, @@ -7374,7 +7495,7 @@ description: Result of parsing kitt.kcl }, "operator": "/", "right": { - "commentStart": 4644, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -7391,7 +7512,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 4648, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -7416,19 +7537,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4650, + "commentStart": 0, "declaration": { - "commentStart": 4650, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4650, + "commentStart": 0, "end": 0, "name": "kitFloppyDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4667, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -7449,12 +7570,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4668, + "commentStart": 0, "declaration": { - "commentStart": 4696, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4696, + "commentStart": 0, "end": 0, "name": "kitFloppy1", "start": 0, @@ -7464,10 +7585,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 4718, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4718, + "commentStart": 0, "end": 0, "name": "kitBelly", "start": 0, @@ -7479,21 +7600,28 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 4728, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'END'", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "type": "Name", + "type": "Name" }, { "argument": { "abs_path": false, - "commentStart": 4736, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4736, + "commentStart": 0, "end": 0, "name": "kitFloppyOffset", "start": 0, @@ -7504,7 +7632,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 4735, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7513,10 +7641,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 4753, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4753, + "commentStart": 0, "end": 0, "name": "kitFloppyElevation", "start": 0, @@ -7529,10 +7657,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 4773, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4773, + "commentStart": 0, "end": 0, "name": "kitFloppyWidth", "start": 0, @@ -7545,10 +7673,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 4789, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4789, + "commentStart": 0, "end": 0, "name": "kitFloppyHeight", "start": 0, @@ -7562,10 +7690,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 4807, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4807, + "commentStart": 0, "end": 0, "name": "kitFloppyDepth", "start": 0, @@ -7576,7 +7704,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 4806, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7586,10 +7714,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 4709, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4709, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -7599,7 +7727,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 4709, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7620,12 +7748,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4823, + "commentStart": 0, "declaration": { - "commentStart": 4823, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4823, + "commentStart": 0, "end": 0, "name": "kitFloppy2", "start": 0, @@ -7635,10 +7763,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 4845, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4845, + "commentStart": 0, "end": 0, "name": "kitBelly", "start": 0, @@ -7650,21 +7778,28 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 4855, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'END'", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "type": "Name", + "type": "Name" }, { "argument": { "abs_path": false, - "commentStart": 4863, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4863, + "commentStart": 0, "end": 0, "name": "kitFloppyOffset", "start": 0, @@ -7675,7 +7810,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 4862, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7683,14 +7818,14 @@ description: Result of parsing kitt.kcl "type": "UnaryExpression" }, { - "commentStart": 4880, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4880, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4880, + "commentStart": 0, "end": 0, "name": "kitFloppyElevation", "start": 0, @@ -7703,7 +7838,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 4901, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -7720,10 +7855,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 4904, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4904, + "commentStart": 0, "end": 0, "name": "kitFloppyWidth", "start": 0, @@ -7736,10 +7871,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 4920, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4920, + "commentStart": 0, "end": 0, "name": "kitFloppyHeight", "start": 0, @@ -7753,10 +7888,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 4938, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4938, + "commentStart": 0, "end": 0, "name": "kitFloppyDepth", "start": 0, @@ -7767,7 +7902,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 4937, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7777,10 +7912,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 4836, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4836, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -7790,7 +7925,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 4836, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7806,12 +7941,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 4954, + "commentStart": 0, "declaration": { - "commentStart": 4954, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4954, + "commentStart": 0, "end": 0, "name": "kitFloppy3", "start": 0, @@ -7821,10 +7956,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 4976, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4976, + "commentStart": 0, "end": 0, "name": "kitBelly", "start": 0, @@ -7836,20 +7971,27 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 4986, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'END'", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "type": "Name", + "type": "Name" }, { "abs_path": false, - "commentStart": 4993, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4993, + "commentStart": 0, "end": 0, "name": "kitFloppyOffset", "start": 0, @@ -7862,10 +8004,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 5010, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5010, + "commentStart": 0, "end": 0, "name": "kitFloppyElevation", "start": 0, @@ -7879,10 +8021,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 5031, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5031, + "commentStart": 0, "end": 0, "name": "kitFloppyWidth", "start": 0, @@ -7893,7 +8035,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 5030, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7902,10 +8044,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 5047, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5047, + "commentStart": 0, "end": 0, "name": "kitFloppyHeight", "start": 0, @@ -7919,10 +8061,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 5065, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5065, + "commentStart": 0, "end": 0, "name": "kitFloppyDepth", "start": 0, @@ -7933,7 +8075,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 5064, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7943,10 +8085,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 4967, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4967, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -7956,7 +8098,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 4967, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7972,29 +8114,29 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 5081, + "commentStart": 0, "declaration": { - "commentStart": 5081, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5081, + "commentStart": 0, "end": 0, "name": "kitBellyButtonOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 5104, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5104, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5104, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5104, + "commentStart": 0, "end": 0, "name": "kitHeadWidth", "start": 0, @@ -8007,7 +8149,7 @@ description: Result of parsing kitt.kcl }, "operator": "/", "right": { - "commentStart": 5119, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -8024,7 +8166,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 5123, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -8049,26 +8191,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 5125, + "commentStart": 0, "declaration": { - "commentStart": 5125, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5125, + "commentStart": 0, "end": 0, "name": "kitBellyButtonElevation", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 5151, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5151, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5151, + "commentStart": 0, "end": 0, "name": "kitHeadElevation", "start": 0, @@ -8081,7 +8223,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 5170, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -8106,19 +8248,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 5171, + "commentStart": 0, "declaration": { - "commentStart": 5173, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5173, + "commentStart": 0, "end": 0, "name": "kitBellyButtonWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 5195, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -8139,19 +8281,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 5196, + "commentStart": 0, "declaration": { - "commentStart": 5219, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5219, + "commentStart": 0, "end": 0, "name": "kitBellyButtonHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 5242, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -8177,26 +8319,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 5244, + "commentStart": 0, "declaration": { - "commentStart": 5244, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5244, + "commentStart": 0, "end": 0, "name": "kitBellyButtonDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 5266, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5266, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5266, + "commentStart": 0, "end": 0, "name": "kitHeadDepth", "start": 0, @@ -8209,7 +8351,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 5281, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -8234,12 +8376,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 5283, + "commentStart": 0, "declaration": { - "commentStart": 5283, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5283, + "commentStart": 0, "end": 0, "name": "kitBellyButton", "start": 0, @@ -8249,10 +8391,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 5309, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5309, + "commentStart": 0, "end": 0, "name": "kitBody", "start": 0, @@ -8264,21 +8406,28 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 5318, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'END'", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "type": "Name", + "type": "Name" }, { "argument": { "abs_path": false, - "commentStart": 5326, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5326, + "commentStart": 0, "end": 0, "name": "kitBellyButtonOffset", "start": 0, @@ -8289,7 +8438,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 5325, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8298,10 +8447,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 5348, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5348, + "commentStart": 0, "end": 0, "name": "kitBellyButtonElevation", "start": 0, @@ -8314,10 +8463,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 5373, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5373, + "commentStart": 0, "end": 0, "name": "kitBellyButtonWidth", "start": 0, @@ -8330,10 +8479,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 5394, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5394, + "commentStart": 0, "end": 0, "name": "kitBellyButtonHeight", "start": 0, @@ -8346,10 +8495,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 5416, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5416, + "commentStart": 0, "end": 0, "name": "kitBellyButtonDepth", "start": 0, @@ -8363,10 +8512,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 5300, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5300, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -8376,7 +8525,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 5300, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8392,19 +8541,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 5436, + "commentStart": 0, "declaration": { - "commentStart": 5438, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5438, + "commentStart": 0, "end": 0, "name": "kitButtonWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 5455, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -8425,19 +8574,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 5457, + "commentStart": 0, "declaration": { - "commentStart": 5457, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5457, + "commentStart": 0, "end": 0, "name": "kitButtonHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 5475, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -8458,12 +8607,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 5477, + "commentStart": 0, "declaration": { - "commentStart": 5477, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5477, + "commentStart": 0, "end": 0, "name": "kitButtonDepth", "start": 0, @@ -8471,10 +8620,10 @@ description: Result of parsing kitt.kcl }, "init": { "abs_path": false, - "commentStart": 5494, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5494, + "commentStart": 0, "end": 0, "name": "kitFloppyDepth", "start": 0, @@ -8495,26 +8644,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 5509, + "commentStart": 0, "declaration": { - "commentStart": 5509, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5509, + "commentStart": 0, "end": 0, "name": "kitButtonElevation", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 5530, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5530, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5530, + "commentStart": 0, "end": 0, "name": "kitFloppyElevation", "start": 0, @@ -8527,7 +8676,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 5551, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -8552,12 +8701,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 5552, + "commentStart": 0, "declaration": { - "commentStart": 5554, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5554, + "commentStart": 0, "end": 0, "name": "kitButton1", "start": 0, @@ -8567,10 +8716,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 5576, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5576, + "commentStart": 0, "end": 0, "name": "kitBelly", "start": 0, @@ -8582,20 +8731,27 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 5586, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'END'", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "type": "Name", + "type": "Name" }, { "abs_path": false, - "commentStart": 5593, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5593, + "commentStart": 0, "end": 0, "name": "kitFloppyOffset", "start": 0, @@ -8607,14 +8763,14 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 5610, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5610, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5610, + "commentStart": 0, "end": 0, "name": "kitFloppyElevation", "start": 0, @@ -8627,7 +8783,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 5631, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -8645,10 +8801,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 5635, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5635, + "commentStart": 0, "end": 0, "name": "kitButtonWidth", "start": 0, @@ -8659,7 +8815,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 5634, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8668,10 +8824,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 5651, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5651, + "commentStart": 0, "end": 0, "name": "kitButtonHeight", "start": 0, @@ -8685,10 +8841,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 5669, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5669, + "commentStart": 0, "end": 0, "name": "kitButtonDepth", "start": 0, @@ -8699,7 +8855,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 5668, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8709,10 +8865,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 5567, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5567, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -8722,7 +8878,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 5567, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8738,12 +8894,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 5684, + "commentStart": 0, "declaration": { - "commentStart": 5703, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5703, + "commentStart": 0, "end": 0, "name": "kitButton2", "start": 0, @@ -8753,10 +8909,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 5725, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5725, + "commentStart": 0, "end": 0, "name": "kitBelly", "start": 0, @@ -8768,26 +8924,33 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 5735, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'END'", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "type": "Name", + "type": "Name" }, { - "commentStart": 5742, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5742, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5742, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5742, + "commentStart": 0, "end": 0, "name": "kitFloppyOffset", "start": 0, @@ -8801,10 +8964,10 @@ description: Result of parsing kitt.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 5760, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5760, + "commentStart": 0, "end": 0, "name": "kitButtonWidth", "start": 0, @@ -8821,7 +8984,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 5777, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -8837,14 +9000,14 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 5780, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5780, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5780, + "commentStart": 0, "end": 0, "name": "kitFloppyElevation", "start": 0, @@ -8857,7 +9020,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 5801, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -8875,10 +9038,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 5805, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5805, + "commentStart": 0, "end": 0, "name": "kitButtonWidth", "start": 0, @@ -8889,7 +9052,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 5804, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8898,10 +9061,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 5821, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5821, + "commentStart": 0, "end": 0, "name": "kitButtonHeight", "start": 0, @@ -8915,10 +9078,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 5839, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5839, + "commentStart": 0, "end": 0, "name": "kitButtonDepth", "start": 0, @@ -8929,7 +9092,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 5838, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8939,10 +9102,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 5716, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5716, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -8952,7 +9115,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 5716, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -8973,12 +9136,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 5855, + "commentStart": 0, "declaration": { - "commentStart": 5855, + "commentStart": 0, "end": 0, "id": { - "commentStart": 5855, + "commentStart": 0, "end": 0, "name": "kitButton3", "start": 0, @@ -8988,10 +9151,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 5877, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5877, + "commentStart": 0, "end": 0, "name": "kitBelly", "start": 0, @@ -9003,23 +9166,30 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 5887, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'END'", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "type": "Name", + "type": "Name" }, { - "commentStart": 5894, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5894, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5894, + "commentStart": 0, "end": 0, "name": "kitFloppyOffset", "start": 0, @@ -9032,10 +9202,10 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 5913, + "commentStart": 0, "end": 0, "left": { - "commentStart": 5913, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9048,14 +9218,14 @@ description: Result of parsing kitt.kcl }, "operator": "*", "right": { - "commentStart": 5918, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5918, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5918, + "commentStart": 0, "end": 0, "name": "kitButtonWidth", "start": 0, @@ -9068,7 +9238,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 5935, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -9092,14 +9262,14 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 5940, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 5940, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5940, + "commentStart": 0, "end": 0, "name": "kitFloppyElevation", "start": 0, @@ -9112,7 +9282,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 5961, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9130,10 +9300,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 5965, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5965, + "commentStart": 0, "end": 0, "name": "kitButtonWidth", "start": 0, @@ -9144,7 +9314,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 5964, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9153,10 +9323,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 5981, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5981, + "commentStart": 0, "end": 0, "name": "kitButtonHeight", "start": 0, @@ -9170,10 +9340,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 5999, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5999, + "commentStart": 0, "end": 0, "name": "kitButtonDepth", "start": 0, @@ -9184,7 +9354,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 5998, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9194,10 +9364,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 5868, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5868, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -9207,7 +9377,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 5868, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9223,19 +9393,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 6014, + "commentStart": 0, "declaration": { - "commentStart": 6016, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6016, + "commentStart": 0, "end": 0, "name": "kitShoeWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6031, + "commentStart": 0, "end": 0, "raw": "7", "start": 0, @@ -9256,19 +9426,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 6033, + "commentStart": 0, "declaration": { - "commentStart": 6033, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6033, + "commentStart": 0, "end": 0, "name": "kitShoeLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6049, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -9289,19 +9459,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 6052, + "commentStart": 0, "declaration": { - "commentStart": 6052, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6052, + "commentStart": 0, "end": 0, "name": "kitShoeHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6068, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -9322,12 +9492,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 6069, + "commentStart": 0, "declaration": { - "commentStart": 6074, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6074, + "commentStart": 0, "end": 0, "name": "kitLeg", "start": 0, @@ -9337,32 +9507,32 @@ description: Result of parsing kitt.kcl "body": { "body": [ { - "commentStart": 6110, + "commentStart": 0, "declaration": { - "commentStart": 6110, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6110, + "commentStart": 0, "end": 0, "name": "kitShoeOffsetFront", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6131, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6131, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6131, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6131, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6131, + "commentStart": 0, "end": 0, "name": "kitShoeLength", "start": 0, @@ -9375,7 +9545,7 @@ description: Result of parsing kitt.kcl }, "operator": "/", "right": { - "commentStart": 6147, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9392,14 +9562,14 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 6152, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6152, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6152, + "commentStart": 0, "end": 0, "name": "kitBodyDepth", "start": 0, @@ -9412,7 +9582,7 @@ description: Result of parsing kitt.kcl }, "operator": "/", "right": { - "commentStart": 6167, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -9434,10 +9604,10 @@ description: Result of parsing kitt.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 6172, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6172, + "commentStart": 0, "end": 0, "name": "offsetFront", "start": 0, @@ -9462,12 +9632,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 6183, + "commentStart": 0, "declaration": { - "commentStart": 6187, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6187, + "commentStart": 0, "end": 0, "name": "kitFootPrint", "start": 0, @@ -9479,10 +9649,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 6216, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6216, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -9496,10 +9666,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 6202, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6202, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -9509,7 +9679,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 6202, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9518,14 +9688,14 @@ description: Result of parsing kitt.kcl { "arguments": [ { - "commentStart": 6242, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 6243, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6243, + "commentStart": 0, "end": 0, "name": "offsetSide", "start": 0, @@ -9538,10 +9708,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 6255, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6255, + "commentStart": 0, "end": 0, "name": "kitShoeOffsetFront", "start": 0, @@ -9559,7 +9729,7 @@ description: Result of parsing kitt.kcl "type": "ArrayExpression" }, { - "commentStart": 6276, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -9568,10 +9738,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 6227, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6227, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -9581,7 +9751,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 6227, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9592,21 +9762,21 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 6291, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6297, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 6298, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6298, + "commentStart": 0, "end": 0, "name": "kitShoeWidth", "start": 0, @@ -9618,7 +9788,7 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 6312, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -9639,10 +9809,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 6286, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6286, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9652,7 +9822,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 6286, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9664,17 +9834,17 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 6328, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6334, + "commentStart": 0, "elements": [ { - "commentStart": 6335, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -9688,10 +9858,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 6339, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6339, + "commentStart": 0, "end": 0, "name": "kitShoeLength", "start": 0, @@ -9702,7 +9872,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 6338, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9719,10 +9889,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 6323, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6323, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9732,7 +9902,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 6323, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9744,22 +9914,22 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 6367, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6373, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 6375, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6375, + "commentStart": 0, "end": 0, "name": "kitShoeWidth", "start": 0, @@ -9770,7 +9940,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 6374, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9778,7 +9948,7 @@ description: Result of parsing kitt.kcl "type": "UnaryExpression" }, { - "commentStart": 6389, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -9799,10 +9969,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 6362, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6362, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9812,7 +9982,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 6362, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9824,19 +9994,19 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 6405, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6419, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 6434, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -9845,10 +10015,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 6420, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6420, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -9858,7 +10028,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 6420, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9867,7 +10037,7 @@ description: Result of parsing kitt.kcl { "arguments": [ { - "commentStart": 6452, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -9876,10 +10046,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 6438, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6438, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -9889,7 +10059,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 6438, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -9905,10 +10075,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 6400, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6400, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9918,7 +10088,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 6400, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9929,10 +10099,10 @@ description: Result of parsing kitt.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 6464, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6464, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -9942,14 +10112,14 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 6464, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 6202, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -9965,12 +10135,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 6471, + "commentStart": 0, "declaration": { - "commentStart": 6475, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6475, + "commentStart": 0, "end": 0, "name": "kitShoe", "start": 0, @@ -9981,7 +10151,7 @@ description: Result of parsing kitt.kcl { "type": "LabeledArg", "label": { - "commentStart": 6507, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -9989,10 +10159,10 @@ description: Result of parsing kitt.kcl }, "arg": { "abs_path": false, - "commentStart": 6516, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6516, + "commentStart": 0, "end": 0, "name": "kitShoeHeight", "start": 0, @@ -10007,10 +10177,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 6485, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6485, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -10020,17 +10190,17 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 6485, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 6493, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6493, + "commentStart": 0, "end": 0, "name": "kitFootPrint", "start": 0, @@ -10052,26 +10222,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 6530, + "commentStart": 0, "declaration": { - "commentStart": 6534, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6534, + "commentStart": 0, "end": 0, "name": "kitPantsOffsetSide", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6555, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6555, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6555, + "commentStart": 0, "end": 0, "name": "offsetSide", "start": 0, @@ -10084,7 +10254,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 6568, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -10109,25 +10279,25 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 6572, + "commentStart": 0, "declaration": { - "commentStart": 6572, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6572, + "commentStart": 0, "end": 0, "name": "kitPantsOffsetFront", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6594, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6594, + "commentStart": 0, "end": 0, "left": { - "commentStart": 6594, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -10141,10 +10311,10 @@ description: Result of parsing kitt.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 6598, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6598, + "commentStart": 0, "end": 0, "name": "kitShoeOffsetFront", "start": 0, @@ -10161,7 +10331,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 6619, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -10186,26 +10356,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 6623, + "commentStart": 0, "declaration": { - "commentStart": 6623, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6623, + "commentStart": 0, "end": 0, "name": "kitPantsWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6639, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6639, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6639, + "commentStart": 0, "end": 0, "name": "kitShoeWidth", "start": 0, @@ -10218,7 +10388,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 6654, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -10243,12 +10413,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 6658, + "commentStart": 0, "declaration": { - "commentStart": 6658, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6658, + "commentStart": 0, "end": 0, "name": "kitPantsFrontWidth", "start": 0, @@ -10256,10 +10426,10 @@ description: Result of parsing kitt.kcl }, "init": { "abs_path": false, - "commentStart": 6679, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6679, + "commentStart": 0, "end": 0, "name": "kitPantsWidth", "start": 0, @@ -10280,26 +10450,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 6695, + "commentStart": 0, "declaration": { - "commentStart": 6695, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6695, + "commentStart": 0, "end": 0, "name": "kitPantsHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6712, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 6712, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6712, + "commentStart": 0, "end": 0, "name": "kitBodyElevation", "start": 0, @@ -10313,10 +10483,10 @@ description: Result of parsing kitt.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 6731, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6731, + "commentStart": 0, "end": 0, "name": "kitShoeHeight", "start": 0, @@ -10341,12 +10511,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 6744, + "commentStart": 0, "declaration": { - "commentStart": 6748, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6748, + "commentStart": 0, "end": 0, "name": "kitPants", "start": 0, @@ -10356,10 +10526,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 6768, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6768, + "commentStart": 0, "end": 0, "name": "kitShoe", "start": 0, @@ -10371,20 +10541,27 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 6777, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'END'", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "type": "Name", + "type": "Name" }, { "abs_path": false, - "commentStart": 6784, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6784, + "commentStart": 0, "end": 0, "name": "kitPantsOffsetSide", "start": 0, @@ -10397,10 +10574,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 6804, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6804, + "commentStart": 0, "end": 0, "name": "kitPantsOffsetFront", "start": 0, @@ -10413,10 +10590,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 6825, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6825, + "commentStart": 0, "end": 0, "name": "kitPantsFrontWidth", "start": 0, @@ -10429,10 +10606,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 6845, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6845, + "commentStart": 0, "end": 0, "name": "kitPantsWidth", "start": 0, @@ -10445,10 +10622,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 6860, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6860, + "commentStart": 0, "end": 0, "name": "kitPantsHeight", "start": 0, @@ -10462,10 +10639,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 6759, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6759, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -10475,7 +10652,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 6759, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -10493,10 +10670,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 6886, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6886, + "commentStart": 0, "end": 0, "name": "kitShoe", "start": 0, @@ -10507,20 +10684,20 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 6875, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 6106, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "0": [ { - "commentStart": 6183, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -10531,7 +10708,7 @@ description: Result of parsing kitt.kcl ], "1": [ { - "commentStart": 6471, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -10542,7 +10719,7 @@ description: Result of parsing kitt.kcl ], "2": [ { - "commentStart": 6530, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -10553,7 +10730,7 @@ description: Result of parsing kitt.kcl ], "7": [ { - "commentStart": 6744, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -10564,7 +10741,7 @@ description: Result of parsing kitt.kcl ], "8": [ { - "commentStart": 6875, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -10578,13 +10755,13 @@ description: Result of parsing kitt.kcl }, "start": 0 }, - "commentStart": 6080, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 6081, + "commentStart": 0, "end": 0, "name": "offsetFront", "start": 0, @@ -10594,7 +10771,7 @@ description: Result of parsing kitt.kcl { "type": "Parameter", "identifier": { - "commentStart": 6094, + "commentStart": 0, "end": 0, "name": "offsetSide", "start": 0, @@ -10616,19 +10793,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 6896, + "commentStart": 0, "declaration": { - "commentStart": 6896, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6896, + "commentStart": 0, "end": 0, "name": "kitLegOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 6911, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -10649,12 +10826,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 6912, + "commentStart": 0, "declaration": { - "commentStart": 6914, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6914, + "commentStart": 0, "end": 0, "name": "kitRightLeg", "start": 0, @@ -10663,7 +10840,7 @@ description: Result of parsing kitt.kcl "init": { "arguments": [ { - "commentStart": 6935, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -10676,10 +10853,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 6938, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6938, + "commentStart": 0, "end": 0, "name": "kitLegOffset", "start": 0, @@ -10693,10 +10870,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 6928, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6928, + "commentStart": 0, "end": 0, "name": "kitLeg", "start": 0, @@ -10706,7 +10883,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 6928, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -10722,12 +10899,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 6952, + "commentStart": 0, "declaration": { - "commentStart": 6952, + "commentStart": 0, "end": 0, "id": { - "commentStart": 6952, + "commentStart": 0, "end": 0, "name": "kitLeftLeg", "start": 0, @@ -10736,7 +10913,7 @@ description: Result of parsing kitt.kcl "init": { "arguments": [ { - "commentStart": 6972, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -10748,15 +10925,15 @@ description: Result of parsing kitt.kcl } }, { - "commentStart": 6975, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 6976, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6976, + "commentStart": 0, "end": 0, "name": "kitLegOffset", "start": 0, @@ -10767,7 +10944,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 6975, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10777,10 +10954,10 @@ description: Result of parsing kitt.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 6991, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6991, + "commentStart": 0, "end": 0, "name": "kitShoeWidth", "start": 0, @@ -10798,10 +10975,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 6965, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6965, + "commentStart": 0, "end": 0, "name": "kitLeg", "start": 0, @@ -10811,7 +10988,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 6965, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -10827,19 +11004,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 7004, + "commentStart": 0, "declaration": { - "commentStart": 7023, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7023, + "commentStart": 0, "end": 0, "name": "kitEarWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 7037, + "commentStart": 0, "end": 0, "raw": "8", "start": 0, @@ -10865,19 +11042,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 7039, + "commentStart": 0, "declaration": { - "commentStart": 7039, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7039, + "commentStart": 0, "end": 0, "name": "kitEarDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 7053, + "commentStart": 0, "end": 0, "raw": "8", "start": 0, @@ -10898,19 +11075,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 7055, + "commentStart": 0, "declaration": { - "commentStart": 7055, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7055, + "commentStart": 0, "end": 0, "name": "kitEarHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 7070, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -10931,12 +11108,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 7071, + "commentStart": 0, "declaration": { - "commentStart": 7076, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7076, + "commentStart": 0, "end": 0, "name": "kitEar", "start": 0, @@ -10946,26 +11123,26 @@ description: Result of parsing kitt.kcl "body": { "body": [ { - "commentStart": 7118, + "commentStart": 0, "declaration": { - "commentStart": 7118, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7118, + "commentStart": 0, "end": 0, "name": "kitNewEarOffsetFront", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 7141, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7141, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7141, + "commentStart": 0, "end": 0, "name": "kitBodyDepth", "start": 0, @@ -10979,10 +11156,10 @@ description: Result of parsing kitt.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 7156, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7156, + "commentStart": 0, "end": 0, "name": "earOffsetFront", "start": 0, @@ -11007,12 +11184,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 7173, + "commentStart": 0, "declaration": { - "commentStart": 7173, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7173, + "commentStart": 0, "end": 0, "name": "kitNewEarOffsetSide", "start": 0, @@ -11020,17 +11197,17 @@ description: Result of parsing kitt.kcl }, "init": { "argument": { - "commentStart": 7197, + "commentStart": 0, "end": 0, "left": { - "commentStart": 7197, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7197, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7197, + "commentStart": 0, "end": 0, "name": "kitBodyWidth", "start": 0, @@ -11043,7 +11220,7 @@ description: Result of parsing kitt.kcl }, "operator": "/", "right": { - "commentStart": 7212, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -11061,10 +11238,10 @@ description: Result of parsing kitt.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 7216, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7216, + "commentStart": 0, "end": 0, "name": "earOffsetSide", "start": 0, @@ -11079,7 +11256,7 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 7195, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11096,12 +11273,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 7233, + "commentStart": 0, "declaration": { - "commentStart": 7233, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7233, + "commentStart": 0, "end": 0, "name": "baseVolume", "start": 0, @@ -11111,10 +11288,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 7255, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7255, + "commentStart": 0, "end": 0, "name": "kitBody", "start": 0, @@ -11127,10 +11304,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 7264, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7264, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -11143,10 +11320,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 7271, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7271, + "commentStart": 0, "end": 0, "name": "kitNewEarOffsetSide", "start": 0, @@ -11159,10 +11336,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 7292, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7292, + "commentStart": 0, "end": 0, "name": "kitNewEarOffsetFront", "start": 0, @@ -11175,10 +11352,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 7314, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7314, + "commentStart": 0, "end": 0, "name": "kitEarWidth", "start": 0, @@ -11192,10 +11369,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 7328, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7328, + "commentStart": 0, "end": 0, "name": "kitEarDepth", "start": 0, @@ -11206,7 +11383,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 7327, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11215,10 +11392,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 7341, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7341, + "commentStart": 0, "end": 0, "name": "kitEarHeight", "start": 0, @@ -11232,10 +11409,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 7246, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7246, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -11245,7 +11422,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 7246, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -11261,19 +11438,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 7354, + "commentStart": 0, "declaration": { - "commentStart": 7358, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7358, + "commentStart": 0, "end": 0, "name": "secondOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 7373, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -11294,12 +11471,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 7377, + "commentStart": 0, "declaration": { - "commentStart": 7377, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7377, + "commentStart": 0, "end": 0, "name": "secondLevel", "start": 0, @@ -11309,10 +11486,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 7400, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7400, + "commentStart": 0, "end": 0, "name": "baseVolume", "start": 0, @@ -11324,23 +11501,30 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 7412, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'END'", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "type": "Name", + "type": "Name" }, { - "commentStart": 7419, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7419, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7419, + "commentStart": 0, "end": 0, "name": "kitNewEarOffsetSide", "start": 0, @@ -11354,10 +11538,10 @@ description: Result of parsing kitt.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 7441, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7441, + "commentStart": 0, "end": 0, "name": "secondOffset", "start": 0, @@ -11373,14 +11557,14 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 7455, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7455, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7455, + "commentStart": 0, "end": 0, "name": "kitNewEarOffsetFront", "start": 0, @@ -11393,7 +11577,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 7478, + "commentStart": 0, "end": 0, "raw": "0.01", "start": 0, @@ -11409,14 +11593,14 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 7484, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7484, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7484, + "commentStart": 0, "end": 0, "name": "kitEarWidth", "start": 0, @@ -11429,14 +11613,14 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 7499, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7499, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7499, + "commentStart": 0, "end": 0, "name": "secondOffset", "start": 0, @@ -11449,7 +11633,7 @@ description: Result of parsing kitt.kcl }, "operator": "*", "right": { - "commentStart": 7514, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -11469,15 +11653,15 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 7518, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 7519, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7519, + "commentStart": 0, "end": 0, "name": "kitEarDepth", "start": 0, @@ -11488,7 +11672,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 7518, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11497,14 +11681,14 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 7533, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7533, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7533, + "commentStart": 0, "end": 0, "name": "secondOffset", "start": 0, @@ -11517,7 +11701,7 @@ description: Result of parsing kitt.kcl }, "operator": "*", "right": { - "commentStart": 7548, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -11538,10 +11722,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 7551, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7551, + "commentStart": 0, "end": 0, "name": "kitEarHeight", "start": 0, @@ -11555,10 +11739,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 7391, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7391, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -11568,7 +11752,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 7391, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -11584,19 +11768,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 7564, + "commentStart": 0, "declaration": { - "commentStart": 7568, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7568, + "commentStart": 0, "end": 0, "name": "thirdOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 7582, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -11617,12 +11801,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 7586, + "commentStart": 0, "declaration": { - "commentStart": 7586, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7586, + "commentStart": 0, "end": 0, "name": "thirdLevel", "start": 0, @@ -11632,10 +11816,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 7608, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7608, + "commentStart": 0, "end": 0, "name": "secondLevel", "start": 0, @@ -11647,23 +11831,30 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 7621, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'END'", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "type": "Name", + "type": "Name" }, { - "commentStart": 7628, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7628, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7628, + "commentStart": 0, "end": 0, "name": "kitNewEarOffsetSide", "start": 0, @@ -11677,10 +11868,10 @@ description: Result of parsing kitt.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 7650, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7650, + "commentStart": 0, "end": 0, "name": "thirdOffset", "start": 0, @@ -11696,14 +11887,14 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 7663, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7663, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7663, + "commentStart": 0, "end": 0, "name": "kitNewEarOffsetFront", "start": 0, @@ -11716,7 +11907,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 7686, + "commentStart": 0, "end": 0, "raw": "0.02", "start": 0, @@ -11732,14 +11923,14 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 7692, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7692, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7692, + "commentStart": 0, "end": 0, "name": "kitEarWidth", "start": 0, @@ -11752,14 +11943,14 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 7707, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7707, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7707, + "commentStart": 0, "end": 0, "name": "thirdOffset", "start": 0, @@ -11772,7 +11963,7 @@ description: Result of parsing kitt.kcl }, "operator": "*", "right": { - "commentStart": 7721, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -11792,15 +11983,15 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 7725, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 7726, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7726, + "commentStart": 0, "end": 0, "name": "kitEarDepth", "start": 0, @@ -11811,7 +12002,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 7725, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11820,14 +12011,14 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 7740, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7740, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7740, + "commentStart": 0, "end": 0, "name": "thirdOffset", "start": 0, @@ -11840,7 +12031,7 @@ description: Result of parsing kitt.kcl }, "operator": "*", "right": { - "commentStart": 7754, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -11861,10 +12052,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 7757, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7757, + "commentStart": 0, "end": 0, "name": "kitEarHeight", "start": 0, @@ -11878,10 +12069,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 7599, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7599, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -11891,7 +12082,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 7599, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -11907,19 +12098,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 7770, + "commentStart": 0, "declaration": { - "commentStart": 7774, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7774, + "commentStart": 0, "end": 0, "name": "fourthOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 7789, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -11940,12 +12131,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 7793, + "commentStart": 0, "declaration": { - "commentStart": 7793, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7793, + "commentStart": 0, "end": 0, "name": "fourthLevel", "start": 0, @@ -11955,10 +12146,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 7816, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7816, + "commentStart": 0, "end": 0, "name": "thirdLevel", "start": 0, @@ -11970,23 +12161,30 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 7828, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'END'", + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "type": "Name", + "type": "Name" }, { - "commentStart": 7835, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7835, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7835, + "commentStart": 0, "end": 0, "name": "kitNewEarOffsetSide", "start": 0, @@ -12000,10 +12198,10 @@ description: Result of parsing kitt.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 7857, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7857, + "commentStart": 0, "end": 0, "name": "fourthOffset", "start": 0, @@ -12019,14 +12217,14 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 7871, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7871, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7871, + "commentStart": 0, "end": 0, "name": "kitNewEarOffsetFront", "start": 0, @@ -12039,7 +12237,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 7894, + "commentStart": 0, "end": 0, "raw": "0.03", "start": 0, @@ -12055,14 +12253,14 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 7900, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7900, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7900, + "commentStart": 0, "end": 0, "name": "kitEarWidth", "start": 0, @@ -12075,14 +12273,14 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 7915, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7915, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7915, + "commentStart": 0, "end": 0, "name": "fourthOffset", "start": 0, @@ -12095,7 +12293,7 @@ description: Result of parsing kitt.kcl }, "operator": "*", "right": { - "commentStart": 7930, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -12115,15 +12313,15 @@ description: Result of parsing kitt.kcl "type": "BinaryExpression" }, { - "commentStart": 7934, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 7935, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7935, + "commentStart": 0, "end": 0, "name": "kitEarDepth", "start": 0, @@ -12134,7 +12332,7 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 7934, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12143,14 +12341,14 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 7949, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 7949, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7949, + "commentStart": 0, "end": 0, "name": "fourthOffset", "start": 0, @@ -12163,7 +12361,7 @@ description: Result of parsing kitt.kcl }, "operator": "*", "right": { - "commentStart": 7964, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -12184,10 +12382,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 7967, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7967, + "commentStart": 0, "end": 0, "name": "kitEarHeight", "start": 0, @@ -12201,10 +12399,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 7807, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7807, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -12214,7 +12412,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 7807, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -12232,10 +12430,10 @@ description: Result of parsing kitt.kcl { "argument": { "abs_path": false, - "commentStart": 7991, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7991, + "commentStart": 0, "end": 0, "name": "baseVolume", "start": 0, @@ -12246,20 +12444,20 @@ description: Result of parsing kitt.kcl "type": "Name", "type": "Name" }, - "commentStart": 7980, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 7114, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "commentStart": 7354, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -12270,7 +12468,7 @@ description: Result of parsing kitt.kcl ], "4": [ { - "commentStart": 7564, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -12281,7 +12479,7 @@ description: Result of parsing kitt.kcl ], "6": [ { - "commentStart": 7770, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -12292,7 +12490,7 @@ description: Result of parsing kitt.kcl ], "8": [ { - "commentStart": 7980, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -12306,13 +12504,13 @@ description: Result of parsing kitt.kcl }, "start": 0 }, - "commentStart": 7082, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 7083, + "commentStart": 0, "end": 0, "name": "earOffsetFront", "start": 0, @@ -12322,7 +12520,7 @@ description: Result of parsing kitt.kcl { "type": "Parameter", "identifier": { - "commentStart": 7099, + "commentStart": 0, "end": 0, "name": "earOffsetSide", "start": 0, @@ -12344,19 +12542,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8004, + "commentStart": 0, "declaration": { - "commentStart": 8004, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8004, + "commentStart": 0, "end": 0, "name": "kitEarOffsetFront", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 8024, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -12377,19 +12575,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8026, + "commentStart": 0, "declaration": { - "commentStart": 8026, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8026, + "commentStart": 0, "end": 0, "name": "kitEarOffsetSide", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 8045, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -12410,12 +12608,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8046, + "commentStart": 0, "declaration": { - "commentStart": 8048, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8048, + "commentStart": 0, "end": 0, "name": "kitRightEar", "start": 0, @@ -12425,10 +12623,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 8069, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8069, + "commentStart": 0, "end": 0, "name": "kitEarOffsetFront", "start": 0, @@ -12441,10 +12639,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8088, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8088, + "commentStart": 0, "end": 0, "name": "kitEarOffsetSide", "start": 0, @@ -12458,10 +12656,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 8062, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8062, + "commentStart": 0, "end": 0, "name": "kitEar", "start": 0, @@ -12471,7 +12669,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 8062, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -12487,12 +12685,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8106, + "commentStart": 0, "declaration": { - "commentStart": 8106, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8106, + "commentStart": 0, "end": 0, "name": "kitLeftEar", "start": 0, @@ -12502,10 +12700,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 8126, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8126, + "commentStart": 0, "end": 0, "name": "kitEarOffsetFront", "start": 0, @@ -12517,17 +12715,17 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 8145, + "commentStart": 0, "end": 0, "left": { - "commentStart": 8145, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 8145, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8145, + "commentStart": 0, "end": 0, "name": "kitBodyWidth", "start": 0, @@ -12541,10 +12739,10 @@ description: Result of parsing kitt.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 8160, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8160, + "commentStart": 0, "end": 0, "name": "kitEarWidth", "start": 0, @@ -12562,10 +12760,10 @@ description: Result of parsing kitt.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 8174, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8174, + "commentStart": 0, "end": 0, "name": "kitEarOffsetSide", "start": 0, @@ -12583,10 +12781,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 8119, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8119, + "commentStart": 0, "end": 0, "name": "kitEar", "start": 0, @@ -12596,7 +12794,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 8119, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -12612,19 +12810,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8191, + "commentStart": 0, "declaration": { - "commentStart": 8223, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8223, + "commentStart": 0, "end": 0, "name": "grillOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 8237, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -12651,29 +12849,29 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8238, + "commentStart": 0, "declaration": { - "commentStart": 8240, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8240, + "commentStart": 0, "end": 0, "name": "grillRowA", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 8252, + "commentStart": 0, "end": 0, "left": { - "commentStart": 8252, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 8252, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8252, + "commentStart": 0, "end": 0, "name": "kitBodyElevation", "start": 0, @@ -12687,10 +12885,10 @@ description: Result of parsing kitt.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 8271, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8271, + "commentStart": 0, "end": 0, "name": "kitBodyHeight", "start": 0, @@ -12708,10 +12906,10 @@ description: Result of parsing kitt.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 8287, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8287, + "commentStart": 0, "end": 0, "name": "grillOffset", "start": 0, @@ -12736,26 +12934,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8299, + "commentStart": 0, "declaration": { - "commentStart": 8299, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8299, + "commentStart": 0, "end": 0, "name": "grillRowB", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 8311, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 8311, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8311, + "commentStart": 0, "end": 0, "name": "grillRowA", "start": 0, @@ -12768,7 +12966,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 8323, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -12793,26 +12991,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8325, + "commentStart": 0, "declaration": { - "commentStart": 8325, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8325, + "commentStart": 0, "end": 0, "name": "grillRowC", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 8337, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 8337, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8337, + "commentStart": 0, "end": 0, "name": "grillRowA", "start": 0, @@ -12825,7 +13023,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 8349, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -12850,26 +13048,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8350, + "commentStart": 0, "declaration": { - "commentStart": 8352, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8352, + "commentStart": 0, "end": 0, "name": "grillColumnA", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 8367, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 8367, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8367, + "commentStart": 0, "end": 0, "name": "kitBodyDepth", "start": 0, @@ -12883,10 +13081,10 @@ description: Result of parsing kitt.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 8382, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8382, + "commentStart": 0, "end": 0, "name": "grillOffset", "start": 0, @@ -12911,26 +13109,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8394, + "commentStart": 0, "declaration": { - "commentStart": 8394, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8394, + "commentStart": 0, "end": 0, "name": "grillColumnB", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 8409, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 8409, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8409, + "commentStart": 0, "end": 0, "name": "grillColumnA", "start": 0, @@ -12943,7 +13141,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 8424, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -12968,26 +13166,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8426, + "commentStart": 0, "declaration": { - "commentStart": 8426, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8426, + "commentStart": 0, "end": 0, "name": "grillColumnC", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 8441, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 8441, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8441, + "commentStart": 0, "end": 0, "name": "grillColumnA", "start": 0, @@ -13000,7 +13198,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 8456, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -13025,26 +13223,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8458, + "commentStart": 0, "declaration": { - "commentStart": 8458, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8458, + "commentStart": 0, "end": 0, "name": "grillColumnD", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 8473, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 8473, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8473, + "commentStart": 0, "end": 0, "name": "grillColumnA", "start": 0, @@ -13057,7 +13255,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 8488, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -13082,26 +13280,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8490, + "commentStart": 0, "declaration": { - "commentStart": 8490, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8490, + "commentStart": 0, "end": 0, "name": "grillColumnE", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 8505, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 8505, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8505, + "commentStart": 0, "end": 0, "name": "grillColumnA", "start": 0, @@ -13114,7 +13312,7 @@ description: Result of parsing kitt.kcl }, "operator": "-", "right": { - "commentStart": 8520, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -13139,19 +13337,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8521, + "commentStart": 0, "declaration": { - "commentStart": 8523, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8523, + "commentStart": 0, "end": 0, "name": "grillHoleSize", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 8539, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -13172,12 +13370,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8541, + "commentStart": 0, "declaration": { - "commentStart": 8541, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8541, + "commentStart": 0, "end": 0, "name": "grillHoleDepth", "start": 0, @@ -13185,7 +13383,7 @@ description: Result of parsing kitt.kcl }, "init": { "argument": { - "commentStart": 8559, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -13196,7 +13394,7 @@ description: Result of parsing kitt.kcl "suffix": "None" } }, - "commentStart": 8558, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13213,12 +13411,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8560, + "commentStart": 0, "declaration": { - "commentStart": 8562, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8562, + "commentStart": 0, "end": 0, "name": "grillHoleAB", "start": 0, @@ -13228,10 +13426,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 8585, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8585, + "commentStart": 0, "end": 0, "name": "kitBody", "start": 0, @@ -13244,10 +13442,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8594, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8594, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -13260,10 +13458,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8601, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8601, + "commentStart": 0, "end": 0, "name": "grillRowA", "start": 0, @@ -13276,10 +13474,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8612, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8612, + "commentStart": 0, "end": 0, "name": "grillColumnB", "start": 0, @@ -13292,10 +13490,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8626, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8626, + "commentStart": 0, "end": 0, "name": "grillHoleSize", "start": 0, @@ -13308,10 +13506,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8641, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8641, + "commentStart": 0, "end": 0, "name": "grillHoleSize", "start": 0, @@ -13324,10 +13522,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8656, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8656, + "commentStart": 0, "end": 0, "name": "grillHoleDepth", "start": 0, @@ -13341,10 +13539,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 8576, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8576, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -13354,7 +13552,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 8576, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -13370,12 +13568,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8671, + "commentStart": 0, "declaration": { - "commentStart": 8673, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8673, + "commentStart": 0, "end": 0, "name": "grillHoleAD", "start": 0, @@ -13385,10 +13583,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 8696, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8696, + "commentStart": 0, "end": 0, "name": "kitBody", "start": 0, @@ -13401,10 +13599,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8705, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8705, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -13417,10 +13615,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8712, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8712, + "commentStart": 0, "end": 0, "name": "grillRowA", "start": 0, @@ -13433,10 +13631,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8723, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8723, + "commentStart": 0, "end": 0, "name": "grillColumnD", "start": 0, @@ -13449,10 +13647,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8737, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8737, + "commentStart": 0, "end": 0, "name": "grillHoleSize", "start": 0, @@ -13465,10 +13663,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8752, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8752, + "commentStart": 0, "end": 0, "name": "grillHoleSize", "start": 0, @@ -13481,10 +13679,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8767, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8767, + "commentStart": 0, "end": 0, "name": "grillHoleDepth", "start": 0, @@ -13498,10 +13696,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 8687, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8687, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -13511,7 +13709,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 8687, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -13527,12 +13725,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8782, + "commentStart": 0, "declaration": { - "commentStart": 8784, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8784, + "commentStart": 0, "end": 0, "name": "grillHoleBA", "start": 0, @@ -13542,10 +13740,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 8807, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8807, + "commentStart": 0, "end": 0, "name": "kitBody", "start": 0, @@ -13558,10 +13756,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8816, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8816, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -13574,10 +13772,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8823, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8823, + "commentStart": 0, "end": 0, "name": "grillRowB", "start": 0, @@ -13590,10 +13788,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8834, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8834, + "commentStart": 0, "end": 0, "name": "grillColumnA", "start": 0, @@ -13606,10 +13804,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8848, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8848, + "commentStart": 0, "end": 0, "name": "grillHoleSize", "start": 0, @@ -13622,10 +13820,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8863, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8863, + "commentStart": 0, "end": 0, "name": "grillHoleSize", "start": 0, @@ -13638,10 +13836,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8878, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8878, + "commentStart": 0, "end": 0, "name": "grillHoleDepth", "start": 0, @@ -13655,10 +13853,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 8798, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8798, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -13668,7 +13866,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 8798, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -13684,12 +13882,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 8893, + "commentStart": 0, "declaration": { - "commentStart": 8895, + "commentStart": 0, "end": 0, "id": { - "commentStart": 8895, + "commentStart": 0, "end": 0, "name": "grillHoleBC", "start": 0, @@ -13699,10 +13897,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 8918, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8918, + "commentStart": 0, "end": 0, "name": "kitBody", "start": 0, @@ -13715,10 +13913,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8927, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8927, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -13731,10 +13929,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8934, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8934, + "commentStart": 0, "end": 0, "name": "grillRowB", "start": 0, @@ -13747,10 +13945,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8945, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8945, + "commentStart": 0, "end": 0, "name": "grillColumnC", "start": 0, @@ -13763,10 +13961,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8959, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8959, + "commentStart": 0, "end": 0, "name": "grillHoleSize", "start": 0, @@ -13779,10 +13977,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8974, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8974, + "commentStart": 0, "end": 0, "name": "grillHoleSize", "start": 0, @@ -13795,10 +13993,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 8989, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8989, + "commentStart": 0, "end": 0, "name": "grillHoleDepth", "start": 0, @@ -13812,10 +14010,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 8909, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8909, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -13825,7 +14023,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 8909, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -13841,12 +14039,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 9004, + "commentStart": 0, "declaration": { - "commentStart": 9006, + "commentStart": 0, "end": 0, "id": { - "commentStart": 9006, + "commentStart": 0, "end": 0, "name": "grillHoleBE", "start": 0, @@ -13856,10 +14054,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 9029, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9029, + "commentStart": 0, "end": 0, "name": "kitBody", "start": 0, @@ -13872,10 +14070,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9038, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9038, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -13888,10 +14086,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9045, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9045, + "commentStart": 0, "end": 0, "name": "grillRowB", "start": 0, @@ -13904,10 +14102,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9056, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9056, + "commentStart": 0, "end": 0, "name": "grillColumnE", "start": 0, @@ -13920,10 +14118,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9070, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9070, + "commentStart": 0, "end": 0, "name": "grillHoleSize", "start": 0, @@ -13936,10 +14134,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9085, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9085, + "commentStart": 0, "end": 0, "name": "grillHoleSize", "start": 0, @@ -13952,10 +14150,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9100, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9100, + "commentStart": 0, "end": 0, "name": "grillHoleDepth", "start": 0, @@ -13969,10 +14167,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 9020, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9020, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -13982,7 +14180,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 9020, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -13998,12 +14196,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 9115, + "commentStart": 0, "declaration": { - "commentStart": 9117, + "commentStart": 0, "end": 0, "id": { - "commentStart": 9117, + "commentStart": 0, "end": 0, "name": "grillHoleCB", "start": 0, @@ -14013,10 +14211,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 9140, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9140, + "commentStart": 0, "end": 0, "name": "kitBody", "start": 0, @@ -14029,10 +14227,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9149, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9149, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -14045,10 +14243,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9156, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9156, + "commentStart": 0, "end": 0, "name": "grillRowC", "start": 0, @@ -14061,10 +14259,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9167, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9167, + "commentStart": 0, "end": 0, "name": "grillColumnB", "start": 0, @@ -14077,10 +14275,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9181, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9181, + "commentStart": 0, "end": 0, "name": "grillHoleSize", "start": 0, @@ -14093,10 +14291,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9196, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9196, + "commentStart": 0, "end": 0, "name": "grillHoleSize", "start": 0, @@ -14109,10 +14307,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9211, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9211, + "commentStart": 0, "end": 0, "name": "grillHoleDepth", "start": 0, @@ -14126,10 +14324,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 9131, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9131, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -14139,7 +14337,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 9131, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -14155,12 +14353,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 9226, + "commentStart": 0, "declaration": { - "commentStart": 9228, + "commentStart": 0, "end": 0, "id": { - "commentStart": 9228, + "commentStart": 0, "end": 0, "name": "grillHoleCD", "start": 0, @@ -14170,10 +14368,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 9251, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9251, + "commentStart": 0, "end": 0, "name": "kitBody", "start": 0, @@ -14186,10 +14384,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9260, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9260, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -14202,10 +14400,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9267, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9267, + "commentStart": 0, "end": 0, "name": "grillRowC", "start": 0, @@ -14218,10 +14416,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9278, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9278, + "commentStart": 0, "end": 0, "name": "grillColumnD", "start": 0, @@ -14234,10 +14432,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9292, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9292, + "commentStart": 0, "end": 0, "name": "grillHoleSize", "start": 0, @@ -14250,10 +14448,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9307, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9307, + "commentStart": 0, "end": 0, "name": "grillHoleSize", "start": 0, @@ -14266,10 +14464,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9322, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9322, + "commentStart": 0, "end": 0, "name": "grillHoleDepth", "start": 0, @@ -14283,10 +14481,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 9242, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9242, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -14296,7 +14494,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 9242, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -14312,26 +14510,26 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 9337, + "commentStart": 0, "declaration": { - "commentStart": 9357, + "commentStart": 0, "end": 0, "id": { - "commentStart": 9357, + "commentStart": 0, "end": 0, "name": "kitVentElevation", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 9376, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 9376, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9376, + "commentStart": 0, "end": 0, "name": "kitBodyElevation", "start": 0, @@ -14344,7 +14542,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 9395, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -14374,19 +14572,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 9397, + "commentStart": 0, "declaration": { - "commentStart": 9397, + "commentStart": 0, "end": 0, "id": { - "commentStart": 9397, + "commentStart": 0, "end": 0, "name": "kitVentOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 9413, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -14407,19 +14605,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 9415, + "commentStart": 0, "declaration": { - "commentStart": 9415, + "commentStart": 0, "end": 0, "id": { - "commentStart": 9415, + "commentStart": 0, "end": 0, "name": "kitVentHoleWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 9434, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -14440,19 +14638,19 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 9436, + "commentStart": 0, "declaration": { - "commentStart": 9436, + "commentStart": 0, "end": 0, "id": { - "commentStart": 9436, + "commentStart": 0, "end": 0, "name": "kitVentHoleHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 9456, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -14473,12 +14671,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 9458, + "commentStart": 0, "declaration": { - "commentStart": 9458, + "commentStart": 0, "end": 0, "id": { - "commentStart": 9458, + "commentStart": 0, "end": 0, "name": "kitVentHoleDepth", "start": 0, @@ -14486,10 +14684,10 @@ description: Result of parsing kitt.kcl }, "init": { "abs_path": false, - "commentStart": 9477, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9477, + "commentStart": 0, "end": 0, "name": "grillHoleDepth", "start": 0, @@ -14510,12 +14708,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 9491, + "commentStart": 0, "declaration": { - "commentStart": 9493, + "commentStart": 0, "end": 0, "id": { - "commentStart": 9493, + "commentStart": 0, "end": 0, "name": "kitVentA", "start": 0, @@ -14525,10 +14723,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 9513, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9513, + "commentStart": 0, "end": 0, "name": "kitBody", "start": 0, @@ -14541,10 +14739,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9522, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9522, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -14557,10 +14755,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9529, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9529, + "commentStart": 0, "end": 0, "name": "kitVentElevation", "start": 0, @@ -14573,10 +14771,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9547, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9547, + "commentStart": 0, "end": 0, "name": "kitVentOffset", "start": 0, @@ -14589,10 +14787,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9562, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9562, + "commentStart": 0, "end": 0, "name": "kitVentHoleHeight", "start": 0, @@ -14605,10 +14803,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9581, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9581, + "commentStart": 0, "end": 0, "name": "kitVentHoleWidth", "start": 0, @@ -14621,10 +14819,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9599, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9599, + "commentStart": 0, "end": 0, "name": "kitVentHoleDepth", "start": 0, @@ -14638,10 +14836,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 9504, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9504, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -14651,7 +14849,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 9504, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -14667,12 +14865,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 9616, + "commentStart": 0, "declaration": { - "commentStart": 9618, + "commentStart": 0, "end": 0, "id": { - "commentStart": 9618, + "commentStart": 0, "end": 0, "name": "kitVentB", "start": 0, @@ -14682,10 +14880,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 9638, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9638, + "commentStart": 0, "end": 0, "name": "kitBody", "start": 0, @@ -14698,10 +14896,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9647, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9647, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -14714,10 +14912,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9654, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9654, + "commentStart": 0, "end": 0, "name": "kitVentElevation", "start": 0, @@ -14729,14 +14927,14 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 9672, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 9672, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9672, + "commentStart": 0, "end": 0, "name": "kitVentOffset", "start": 0, @@ -14749,7 +14947,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 9688, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -14766,10 +14964,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9691, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9691, + "commentStart": 0, "end": 0, "name": "kitVentHoleHeight", "start": 0, @@ -14782,10 +14980,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9710, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9710, + "commentStart": 0, "end": 0, "name": "kitVentHoleWidth", "start": 0, @@ -14798,10 +14996,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9728, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9728, + "commentStart": 0, "end": 0, "name": "kitVentHoleDepth", "start": 0, @@ -14815,10 +15013,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 9629, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9629, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -14828,7 +15026,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 9629, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -14844,12 +15042,12 @@ description: Result of parsing kitt.kcl "type": "VariableDeclaration" }, { - "commentStart": 9745, + "commentStart": 0, "declaration": { - "commentStart": 9747, + "commentStart": 0, "end": 0, "id": { - "commentStart": 9747, + "commentStart": 0, "end": 0, "name": "kitVentC", "start": 0, @@ -14859,10 +15057,10 @@ description: Result of parsing kitt.kcl "arguments": [ { "abs_path": false, - "commentStart": 9767, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9767, + "commentStart": 0, "end": 0, "name": "kitBody", "start": 0, @@ -14875,10 +15073,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9776, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9776, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -14891,10 +15089,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9783, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9783, + "commentStart": 0, "end": 0, "name": "kitVentElevation", "start": 0, @@ -14906,14 +15104,14 @@ description: Result of parsing kitt.kcl "type": "Name" }, { - "commentStart": 9801, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 9801, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9801, + "commentStart": 0, "end": 0, "name": "kitVentOffset", "start": 0, @@ -14926,7 +15124,7 @@ description: Result of parsing kitt.kcl }, "operator": "+", "right": { - "commentStart": 9817, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -14943,10 +15141,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9820, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9820, + "commentStart": 0, "end": 0, "name": "kitVentHoleHeight", "start": 0, @@ -14959,10 +15157,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9839, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9839, + "commentStart": 0, "end": 0, "name": "kitVentHoleWidth", "start": 0, @@ -14975,10 +15173,10 @@ description: Result of parsing kitt.kcl }, { "abs_path": false, - "commentStart": 9857, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9857, + "commentStart": 0, "end": 0, "name": "kitVentHoleDepth", "start": 0, @@ -14992,10 +15190,10 @@ description: Result of parsing kitt.kcl ], "callee": { "abs_path": false, - "commentStart": 9758, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9758, + "commentStart": 0, "end": 0, "name": "pixelBox", "start": 0, @@ -15005,7 +15203,7 @@ description: Result of parsing kitt.kcl "start": 0, "type": "Name" }, - "commentStart": 9758, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -15027,7 +15225,7 @@ description: Result of parsing kitt.kcl "nonCodeNodes": { "4": [ { - "commentStart": 590, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15038,7 +15236,7 @@ description: Result of parsing kitt.kcl ], "7": [ { - "commentStart": 1002, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15049,7 +15247,7 @@ description: Result of parsing kitt.kcl ], "8": [ { - "commentStart": 1087, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15060,7 +15258,7 @@ description: Result of parsing kitt.kcl ], "15": [ { - "commentStart": 1449, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15071,7 +15269,7 @@ description: Result of parsing kitt.kcl ], "32": [ { - "commentStart": 4049, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15082,7 +15280,7 @@ description: Result of parsing kitt.kcl ], "37": [ { - "commentStart": 4345, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15093,7 +15291,7 @@ description: Result of parsing kitt.kcl ], "43": [ { - "commentStart": 4589, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15104,7 +15302,7 @@ description: Result of parsing kitt.kcl ], "51": [ { - "commentStart": 5171, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15115,7 +15313,7 @@ description: Result of parsing kitt.kcl ], "55": [ { - "commentStart": 5436, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15126,7 +15324,7 @@ description: Result of parsing kitt.kcl ], "59": [ { - "commentStart": 5552, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15137,7 +15335,7 @@ description: Result of parsing kitt.kcl ], "62": [ { - "commentStart": 6014, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15148,7 +15346,7 @@ description: Result of parsing kitt.kcl ], "65": [ { - "commentStart": 6069, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15159,7 +15357,7 @@ description: Result of parsing kitt.kcl ], "67": [ { - "commentStart": 6912, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15170,7 +15368,7 @@ description: Result of parsing kitt.kcl ], "72": [ { - "commentStart": 7071, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15181,7 +15379,7 @@ description: Result of parsing kitt.kcl ], "75": [ { - "commentStart": 8046, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15192,7 +15390,7 @@ description: Result of parsing kitt.kcl ], "78": [ { - "commentStart": 8238, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15203,7 +15401,7 @@ description: Result of parsing kitt.kcl ], "81": [ { - "commentStart": 8350, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15214,7 +15412,7 @@ description: Result of parsing kitt.kcl ], "86": [ { - "commentStart": 8521, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15225,7 +15423,7 @@ description: Result of parsing kitt.kcl ], "88": [ { - "commentStart": 8560, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15236,7 +15434,7 @@ description: Result of parsing kitt.kcl ], "89": [ { - "commentStart": 8671, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15247,7 +15445,7 @@ description: Result of parsing kitt.kcl ], "90": [ { - "commentStart": 8782, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15258,7 +15456,7 @@ description: Result of parsing kitt.kcl ], "91": [ { - "commentStart": 8893, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15269,7 +15467,7 @@ description: Result of parsing kitt.kcl ], "92": [ { - "commentStart": 9004, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15280,7 +15478,7 @@ description: Result of parsing kitt.kcl ], "93": [ { - "commentStart": 9115, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15291,7 +15489,7 @@ description: Result of parsing kitt.kcl ], "94": [ { - "commentStart": 9226, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15302,7 +15500,7 @@ description: Result of parsing kitt.kcl ], "100": [ { - "commentStart": 9491, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15313,7 +15511,7 @@ description: Result of parsing kitt.kcl ], "101": [ { - "commentStart": 9616, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -15324,7 +15522,7 @@ description: Result of parsing kitt.kcl ], "102": [ { - "commentStart": 9745, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/kitt/ops.snap b/rust/kcl-lib/tests/kcl_samples/kitt/ops.snap index 528763b2c..f7ba975f4 100644 --- a/rust/kcl-lib/tests/kcl_samples/kitt/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/kitt/ops.snap @@ -5,7 +5,7 @@ description: Operations executed kitt.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -57,7 +57,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -67,19 +67,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -87,7 +78,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -126,19 +125,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -146,7 +136,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -187,7 +185,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -197,19 +195,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -217,7 +206,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -261,7 +258,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -271,19 +268,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -291,7 +279,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -335,7 +331,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -345,19 +341,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -365,7 +352,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -409,7 +404,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -419,19 +414,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -439,7 +425,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -478,19 +472,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -498,7 +483,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -539,7 +532,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -549,19 +542,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -569,7 +553,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -613,7 +605,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -623,19 +615,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -643,7 +626,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -687,7 +678,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -697,19 +688,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -717,7 +699,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -761,7 +751,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -771,19 +761,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -791,7 +772,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -835,7 +824,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -845,19 +834,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -865,7 +845,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -909,7 +897,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -919,19 +907,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -939,7 +918,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -983,7 +970,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -993,19 +980,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -1013,7 +991,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1057,7 +1043,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -1067,19 +1053,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -1087,7 +1064,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1131,7 +1116,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -1141,19 +1126,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -1161,7 +1137,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1205,7 +1189,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -1215,19 +1199,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -1235,7 +1210,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1279,7 +1262,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -1289,19 +1272,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -1309,7 +1283,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1353,7 +1335,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -1363,19 +1345,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -1383,7 +1356,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1427,7 +1408,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -1437,19 +1418,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -1457,7 +1429,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1500,8 +1480,8 @@ description: Operations executed kitt.kcl "type": "FunctionCall", "name": "kitLeg", "functionSourceRange": [ - 6080, - 6895, + 6061, + 6874, 0 ], "unlabeledArg": null, @@ -1511,7 +1491,7 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1563,7 +1543,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -1573,19 +1553,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -1593,7 +1564,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1639,8 +1618,8 @@ description: Operations executed kitt.kcl "type": "FunctionCall", "name": "kitLeg", "functionSourceRange": [ - 6080, - 6895, + 6061, + 6874, 0 ], "unlabeledArg": null, @@ -1650,7 +1629,7 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1702,7 +1681,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -1712,19 +1691,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -1732,7 +1702,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1778,8 +1756,8 @@ description: Operations executed kitt.kcl "type": "FunctionCall", "name": "kitEar", "functionSourceRange": [ - 7082, - 8003, + 7061, + 7976, 0 ], "unlabeledArg": null, @@ -1794,7 +1772,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -1804,16 +1782,7 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg01", @@ -1825,7 +1794,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1869,7 +1846,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -1879,19 +1856,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -1899,7 +1867,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1943,7 +1919,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -1953,19 +1929,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -1973,7 +1940,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -2017,7 +1992,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -2027,19 +2002,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -2047,7 +2013,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -2093,8 +2067,8 @@ description: Operations executed kitt.kcl "type": "FunctionCall", "name": "kitEar", "functionSourceRange": [ - 7082, - 8003, + 7061, + 7976, 0 ], "unlabeledArg": null, @@ -2109,7 +2083,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -2119,16 +2093,7 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg01", @@ -2140,7 +2105,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -2184,7 +2157,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -2194,19 +2167,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -2214,7 +2178,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -2258,7 +2230,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -2268,19 +2240,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -2288,7 +2251,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -2332,7 +2303,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -2342,19 +2313,10 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -2362,7 +2324,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -2409,7 +2379,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -2419,16 +2389,7 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg02", @@ -2440,7 +2401,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -2484,7 +2453,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -2494,16 +2463,7 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg02", @@ -2515,7 +2475,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -2559,7 +2527,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -2569,16 +2537,7 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg02", @@ -2590,7 +2549,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -2634,7 +2601,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -2644,16 +2611,7 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg02", @@ -2665,7 +2623,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -2709,7 +2675,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -2719,16 +2685,7 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg02", @@ -2740,7 +2697,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -2784,7 +2749,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -2794,16 +2759,7 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg02", @@ -2815,7 +2771,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -2859,7 +2823,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -2869,16 +2833,7 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg02", @@ -2890,7 +2845,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -2934,7 +2897,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -2944,16 +2907,7 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg02", @@ -2965,7 +2919,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -3009,7 +2971,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -3019,16 +2981,7 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg02", @@ -3040,7 +2993,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -3084,7 +3045,7 @@ description: Operations executed kitt.kcl "name": "pixelBox", "functionSourceRange": [ 95, - 496, + 503, 0 ], "unlabeledArg": null, @@ -3094,16 +3055,7 @@ description: Operations executed kitt.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg02", @@ -3115,7 +3067,15 @@ description: Operations executed kitt.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/kcl_samples/kitt/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/kitt/program_memory.snap index 923501153..0580bbeaf 100644 --- a/rust/kcl-lib/tests/kcl_samples/kitt/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/kitt/program_memory.snap @@ -212,17 +212,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -241,9 +250,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -254,9 +263,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -303,9 +312,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -328,9 +337,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -390,22 +399,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -632,17 +653,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -661,9 +691,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -674,9 +704,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -723,9 +753,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -748,9 +778,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -810,22 +840,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1052,17 +1094,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1081,9 +1132,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -1094,9 +1145,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -1143,9 +1194,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -1168,9 +1219,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -1230,22 +1281,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1472,17 +1535,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1501,9 +1573,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -1514,9 +1586,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -1563,9 +1635,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -1588,9 +1660,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -1650,22 +1722,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1892,17 +1976,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1921,9 +2014,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -1934,9 +2027,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -1983,9 +2076,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -2008,9 +2101,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -2070,22 +2163,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2312,17 +2417,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2341,9 +2455,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -2354,9 +2468,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -2403,9 +2517,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -2428,9 +2542,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -2490,22 +2604,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2732,17 +2858,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2761,9 +2896,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -2774,9 +2909,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -2823,9 +2958,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -2848,9 +2983,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -2910,22 +3045,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3230,17 +3377,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3259,9 +3415,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -3272,9 +3428,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -3321,9 +3477,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -3346,9 +3502,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -3408,22 +3564,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3650,17 +3818,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3679,9 +3856,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -3692,9 +3869,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -3741,9 +3918,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -3766,9 +3943,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -3828,22 +4005,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3969,7 +4158,13 @@ description: Variables in memory after executing kitt.kcl "type": "Number", "value": 9.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "kitBellyButtonWidth": { @@ -4028,7 +4223,13 @@ description: Variables in memory after executing kitt.kcl "type": "Number", "value": 24.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "kitBody": { @@ -4050,9 +4251,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -4063,9 +4264,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -4112,9 +4313,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -4137,9 +4338,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -4199,22 +4400,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4458,17 +4671,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -4612,17 +4834,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -4641,9 +4872,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -4654,9 +4885,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -4703,9 +4934,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -4728,9 +4959,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -4790,22 +5021,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5067,17 +5310,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -5221,17 +5473,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -5250,9 +5511,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -5263,9 +5524,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -5312,9 +5573,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -5337,9 +5598,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -5399,22 +5660,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5676,17 +5949,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -5830,17 +6112,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -5859,9 +6150,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -5872,9 +6163,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -5921,9 +6212,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -5946,9 +6237,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -6008,22 +6299,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6652,17 +6955,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -6806,17 +7118,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -6835,9 +7156,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -6848,9 +7169,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -6897,9 +7218,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -6922,9 +7243,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -6984,22 +7305,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7160,7 +7493,13 @@ description: Variables in memory after executing kitt.kcl "type": "Number", "value": 20.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "kitFloppy1": { @@ -7307,17 +7646,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -7461,17 +7809,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -7490,9 +7847,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -7503,9 +7860,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -7552,9 +7909,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -7577,9 +7934,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -7639,22 +7996,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7916,17 +8285,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -8070,17 +8448,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -8099,9 +8486,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -8112,9 +8499,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -8161,9 +8548,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -8186,9 +8573,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -8248,22 +8635,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8525,17 +8924,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -8679,17 +9087,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -8708,9 +9125,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -8721,9 +9138,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -8770,9 +9187,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -8795,9 +9212,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -8857,22 +9274,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9033,7 +9462,13 @@ description: Variables in memory after executing kitt.kcl "type": "Number", "value": 11.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "kitFloppyWidth": { @@ -9193,17 +9628,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -9222,9 +9666,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -9235,9 +9679,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -9284,9 +9728,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -9309,9 +9753,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -9371,22 +9815,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9525,7 +9981,13 @@ description: Variables in memory after executing kitt.kcl "type": "Number", "value": 24.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "kitLeftEar": { @@ -9672,17 +10134,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -9701,9 +10172,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -9714,9 +10185,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -9763,9 +10234,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -9788,9 +10259,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -9850,22 +10321,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10092,17 +10575,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -10454,17 +10946,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -10608,17 +11109,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -10637,9 +11147,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -10650,9 +11160,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -10699,9 +11209,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -10724,9 +11234,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -10786,22 +11296,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -11098,17 +11620,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -11460,17 +11991,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -11614,17 +12154,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -11643,9 +12192,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -11656,9 +12205,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -11705,9 +12254,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -11730,9 +12279,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -11792,22 +12341,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -12104,17 +12665,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -12466,17 +13036,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -12620,17 +13199,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -12649,9 +13237,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -12662,9 +13250,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -12711,9 +13299,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -12736,9 +13324,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -12798,22 +13386,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13110,22 +13710,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -13323,17 +13935,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -13685,17 +14306,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -13839,17 +14469,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -13868,9 +14507,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -13881,9 +14520,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -13930,9 +14569,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -13955,9 +14594,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -14017,22 +14656,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -14329,17 +14980,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -14691,17 +15351,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -14845,17 +15514,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -14874,9 +15552,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -14887,9 +15565,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -14936,9 +15614,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -14961,9 +15639,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -15023,22 +15701,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -15361,17 +16051,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -15723,17 +16422,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -15877,17 +16585,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -15906,9 +16623,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -15919,9 +16636,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -15968,9 +16685,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -15993,9 +16710,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -16055,22 +16772,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -16367,17 +17096,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -16729,17 +17467,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -16883,17 +17630,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -16912,9 +17668,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -16925,9 +17681,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -16974,9 +17730,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -16999,9 +17755,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -17061,22 +17817,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -17581,17 +18349,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -17943,17 +18720,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -18097,17 +18883,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -18126,9 +18921,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -18139,9 +18934,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -18188,9 +18983,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -18213,9 +19008,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -18275,22 +19070,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -18600,17 +19407,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -18629,9 +19445,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -18642,9 +19458,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -18691,9 +19507,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -18716,9 +19532,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -18778,22 +19594,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -19020,17 +19848,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -19382,17 +20219,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -19536,17 +20382,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -19565,9 +20420,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -19578,9 +20433,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -19627,9 +20482,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -19652,9 +20507,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -19714,22 +20569,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -20026,22 +20893,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -20262,17 +21141,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -20416,17 +21304,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -20445,9 +21342,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -20458,9 +21355,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -20507,9 +21404,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -20532,9 +21429,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -20594,22 +21491,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -20923,17 +21832,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -20952,9 +21870,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -20965,9 +21883,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -21014,9 +21932,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -21039,9 +21957,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -21101,22 +22019,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -21343,17 +22273,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -21372,9 +22311,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -21385,9 +22324,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -21434,9 +22373,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -21459,9 +22398,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -21521,22 +22460,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -21763,17 +22714,26 @@ description: Variables in memory after executing kitt.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -21792,9 +22752,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -21805,9 +22765,9 @@ description: Variables in memory after executing kitt.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -21854,9 +22814,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 759, - "end": 765, - "start": 759, + "commentStart": 766, + "end": 772, + "start": 766, "type": "TagDeclarator", "value": "seg01" }, @@ -21879,9 +22839,9 @@ description: Variables in memory after executing kitt.kcl 31.0 ], "tag": { - "commentStart": 810, - "end": 816, - "start": 810, + "commentStart": 817, + "end": 823, + "start": 817, "type": "TagDeclarator", "value": "seg02" }, @@ -21941,22 +22901,34 @@ description: Variables in memory after executing kitt.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/kcl_samples/lego/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/lego/artifact_commands.snap index 08bd20cdd..efaeb75d4 100644 --- a/rust/kcl-lib/tests/kcl_samples/lego/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/lego/artifact_commands.snap @@ -187,7 +187,8 @@ description: Artifact commands lego.kcl "type": "extrude", "target": "[uuid]", "distance": 3.2, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -411,7 +412,8 @@ description: Artifact commands lego.kcl "type": "extrude", "target": "[uuid]", "distance": -1.7000000000000002, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -787,7 +789,8 @@ description: Artifact commands lego.kcl "type": "extrude", "target": "[uuid]", "distance": 1.8, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -853,7 +856,8 @@ description: Artifact commands lego.kcl "type": "extrude", "target": "[uuid]", "distance": 1.8, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -919,7 +923,8 @@ description: Artifact commands lego.kcl "type": "extrude", "target": "[uuid]", "distance": 1.8, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -985,7 +990,8 @@ description: Artifact commands lego.kcl "type": "extrude", "target": "[uuid]", "distance": 1.8, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1051,7 +1057,8 @@ description: Artifact commands lego.kcl "type": "extrude", "target": "[uuid]", "distance": 1.8, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1117,7 +1124,8 @@ description: Artifact commands lego.kcl "type": "extrude", "target": "[uuid]", "distance": 1.8, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1305,7 +1313,8 @@ description: Artifact commands lego.kcl "type": "extrude", "target": "[uuid]", "distance": 1.8, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1371,7 +1380,8 @@ description: Artifact commands lego.kcl "type": "extrude", "target": "[uuid]", "distance": 1.8, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/lego/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/lego/artifact_graph_flowchart.snap.md index b709c2502..e21d54236 100644 --- a/rust/kcl-lib/tests/kcl_samples/lego/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/lego/artifact_graph_flowchart.snap.md @@ -9,21 +9,21 @@ flowchart LR 7[Solid2d] end subgraph path23 [Path] - 23["Path
[1403, 1490, 0]"] - 24["Segment
[1496, 1533, 0]"] - 25["Segment
[1539, 1577, 0]"] - 26["Segment
[1583, 1623, 0]"] - 27["Segment
[1629, 1636, 0]"] + 23["Path
[1408, 1495, 0]"] + 24["Segment
[1501, 1538, 0]"] + 25["Segment
[1544, 1582, 0]"] + 26["Segment
[1588, 1628, 0]"] + 27["Segment
[1634, 1641, 0]"] 28[Solid2d] end subgraph path43 [Path] - 43["Path
[1755, 1902, 0]"] - 44["Segment
[1755, 1902, 0]"] + 43["Path
[1765, 1912, 0]"] + 44["Segment
[1765, 1912, 0]"] 45[Solid2d] end subgraph path56 [Path] - 56["Path
[2187, 2362, 0]"] - 57["Segment
[2187, 2362, 0]"] + 56["Path
[2202, 2377, 0]"] + 57["Segment
[2202, 2377, 0]"] 58[Solid2d] end 1["Plane
[970, 987, 0]"] @@ -42,7 +42,7 @@ flowchart LR 20["SweepEdge Adjacent"] 21["SweepEdge Opposite"] 22["SweepEdge Adjacent"] - 29["Sweep Extrusion
[1642, 1673, 0]"] + 29["Sweep Extrusion
[1647, 1678, 0]"] 30[Wall] 31[Wall] 32[Wall] @@ -56,25 +56,25 @@ flowchart LR 40["SweepEdge Adjacent"] 41["SweepEdge Opposite"] 42["SweepEdge Adjacent"] - 46["Sweep Extrusion
[2056, 2084, 0]"] + 46["Sweep Extrusion
[2066, 2094, 0]"] 47[Wall] 48["Cap End"] 49["SweepEdge Opposite"] 50["SweepEdge Adjacent"] - 51["Sweep Extrusion
[2056, 2084, 0]"] - 52["Sweep Extrusion
[2056, 2084, 0]"] - 53["Sweep Extrusion
[2056, 2084, 0]"] - 54["Sweep Extrusion
[2056, 2084, 0]"] - 55["Sweep Extrusion
[2056, 2084, 0]"] - 59["Sweep Extrusion
[2524, 2552, 0]"] + 51["Sweep Extrusion
[2066, 2094, 0]"] + 52["Sweep Extrusion
[2066, 2094, 0]"] + 53["Sweep Extrusion
[2066, 2094, 0]"] + 54["Sweep Extrusion
[2066, 2094, 0]"] + 55["Sweep Extrusion
[2066, 2094, 0]"] + 59["Sweep Extrusion
[2539, 2567, 0]"] 60[Wall] 61["Cap End"] 62["SweepEdge Opposite"] 63["SweepEdge Adjacent"] - 64["Sweep Extrusion
[2524, 2552, 0]"] - 65["StartSketchOnFace
[1369, 1397, 0]"] - 66["StartSketchOnFace
[1723, 1749, 0]"] - 67["StartSketchOnFace
[2145, 2181, 0]"] + 64["Sweep Extrusion
[2539, 2567, 0]"] + 65["StartSketchOnFace
[1369, 1402, 0]"] + 66["StartSketchOnFace
[1728, 1759, 0]"] + 67["StartSketchOnFace
[2155, 2196, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/lego/ast.snap b/rust/kcl-lib/tests/kcl_samples/lego/ast.snap index cb67312b6..4e73a981f 100644 --- a/rust/kcl-lib/tests/kcl_samples/lego/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/lego/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing lego.kcl "Ok": { "body": [ { - "commentStart": 271, + "commentStart": 0, "declaration": { - "commentStart": 294, + "commentStart": 0, "end": 0, "id": { - "commentStart": 294, + "commentStart": 0, "end": 0, "name": "lbumps", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 303, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 304, + "commentStart": 0, "declaration": { - "commentStart": 329, + "commentStart": 0, "end": 0, "id": { - "commentStart": 329, + "commentStart": 0, "end": 0, "name": "wbumps", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 338, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 339, + "commentStart": 0, "declaration": { - "commentStart": 364, + "commentStart": 0, "end": 0, "id": { - "commentStart": 364, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 372, + "commentStart": 0, "end": 0, "raw": "8.0", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 376, + "commentStart": 0, "declaration": { - "commentStart": 376, + "commentStart": 0, "end": 0, "id": { - "commentStart": 376, + "commentStart": 0, "end": 0, "name": "clearance", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 388, + "commentStart": 0, "end": 0, "raw": "0.1", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 392, + "commentStart": 0, "declaration": { - "commentStart": 392, + "commentStart": 0, "end": 0, "id": { - "commentStart": 392, + "commentStart": 0, "end": 0, "name": "bumpDiam", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 403, + "commentStart": 0, "end": 0, "raw": "4.8", "start": 0, @@ -174,19 +174,19 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 407, + "commentStart": 0, "declaration": { - "commentStart": 407, + "commentStart": 0, "end": 0, "id": { - "commentStart": 407, + "commentStart": 0, "end": 0, "name": "bumpHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 420, + "commentStart": 0, "end": 0, "raw": "1.8", "start": 0, @@ -207,19 +207,19 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 424, + "commentStart": 0, "declaration": { - "commentStart": 424, + "commentStart": 0, "end": 0, "id": { - "commentStart": 424, + "commentStart": 0, "end": 0, "name": "height", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 433, + "commentStart": 0, "end": 0, "raw": "3.2", "start": 0, @@ -240,32 +240,32 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 437, + "commentStart": 0, "declaration": { - "commentStart": 437, + "commentStart": 0, "end": 0, "id": { - "commentStart": 437, + "commentStart": 0, "end": 0, "name": "t", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 442, + "commentStart": 0, "end": 0, "left": { - "commentStart": 442, + "commentStart": 0, "end": 0, "left": { - "commentStart": 442, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 442, + "commentStart": 0, "end": 0, "name": { - "commentStart": 442, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, @@ -278,10 +278,10 @@ description: Result of parsing lego.kcl }, "operator": "-", "right": { - "commentStart": 451, + "commentStart": 0, "end": 0, "left": { - "commentStart": 451, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -295,10 +295,10 @@ description: Result of parsing lego.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 455, + "commentStart": 0, "end": 0, "name": { - "commentStart": 455, + "commentStart": 0, "end": 0, "name": "clearance", "start": 0, @@ -320,10 +320,10 @@ description: Result of parsing lego.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 468, + "commentStart": 0, "end": 0, "name": { - "commentStart": 468, + "commentStart": 0, "end": 0, "name": "bumpDiam", "start": 0, @@ -340,7 +340,7 @@ description: Result of parsing lego.kcl }, "operator": "/", "right": { - "commentStart": 480, + "commentStart": 0, "end": 0, "raw": "2.0", "start": 0, @@ -365,26 +365,26 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 484, + "commentStart": 0, "declaration": { - "commentStart": 484, + "commentStart": 0, "end": 0, "id": { - "commentStart": 484, + "commentStart": 0, "end": 0, "name": "postDiam", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 495, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 495, + "commentStart": 0, "end": 0, "name": { - "commentStart": 495, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, @@ -398,10 +398,10 @@ description: Result of parsing lego.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 503, + "commentStart": 0, "end": 0, "name": { - "commentStart": 503, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -426,29 +426,29 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 504, + "commentStart": 0, "declaration": { - "commentStart": 525, + "commentStart": 0, "end": 0, "id": { - "commentStart": 525, + "commentStart": 0, "end": 0, "name": "totalLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 539, + "commentStart": 0, "end": 0, "left": { - "commentStart": 539, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 539, + "commentStart": 0, "end": 0, "name": { - "commentStart": 539, + "commentStart": 0, "end": 0, "name": "lbumps", "start": 0, @@ -462,10 +462,10 @@ description: Result of parsing lego.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 548, + "commentStart": 0, "end": 0, "name": { - "commentStart": 548, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, @@ -482,10 +482,10 @@ description: Result of parsing lego.kcl }, "operator": "-", "right": { - "commentStart": 557, + "commentStart": 0, "end": 0, "left": { - "commentStart": 557, + "commentStart": 0, "end": 0, "raw": "2.0", "start": 0, @@ -499,10 +499,10 @@ description: Result of parsing lego.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 563, + "commentStart": 0, "end": 0, "name": { - "commentStart": 563, + "commentStart": 0, "end": 0, "name": "clearance", "start": 0, @@ -531,29 +531,29 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 574, + "commentStart": 0, "declaration": { - "commentStart": 574, + "commentStart": 0, "end": 0, "id": { - "commentStart": 574, + "commentStart": 0, "end": 0, "name": "totalWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 587, + "commentStart": 0, "end": 0, "left": { - "commentStart": 587, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 587, + "commentStart": 0, "end": 0, "name": { - "commentStart": 587, + "commentStart": 0, "end": 0, "name": "wbumps", "start": 0, @@ -567,10 +567,10 @@ description: Result of parsing lego.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 596, + "commentStart": 0, "end": 0, "name": { - "commentStart": 596, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, @@ -587,10 +587,10 @@ description: Result of parsing lego.kcl }, "operator": "-", "right": { - "commentStart": 605, + "commentStart": 0, "end": 0, "left": { - "commentStart": 605, + "commentStart": 0, "end": 0, "raw": "2.0", "start": 0, @@ -604,10 +604,10 @@ description: Result of parsing lego.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 611, + "commentStart": 0, "end": 0, "name": { - "commentStart": 611, + "commentStart": 0, "end": 0, "name": "clearance", "start": 0, @@ -636,26 +636,26 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 621, + "commentStart": 0, "declaration": { - "commentStart": 683, + "commentStart": 0, "end": 0, "id": { - "commentStart": 683, + "commentStart": 0, "end": 0, "name": "lSegments", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 695, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 695, + "commentStart": 0, "end": 0, "name": { - "commentStart": 695, + "commentStart": 0, "end": 0, "name": "totalLength", "start": 0, @@ -669,10 +669,10 @@ description: Result of parsing lego.kcl "operator": "/", "right": { "abs_path": false, - "commentStart": 709, + "commentStart": 0, "end": 0, "name": { - "commentStart": 709, + "commentStart": 0, "end": 0, "name": "lbumps", "start": 0, @@ -702,26 +702,26 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 716, + "commentStart": 0, "declaration": { - "commentStart": 716, + "commentStart": 0, "end": 0, "id": { - "commentStart": 716, + "commentStart": 0, "end": 0, "name": "wSegments", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 728, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 728, + "commentStart": 0, "end": 0, "name": { - "commentStart": 728, + "commentStart": 0, "end": 0, "name": "totalWidth", "start": 0, @@ -735,10 +735,10 @@ description: Result of parsing lego.kcl "operator": "/", "right": { "abs_path": false, - "commentStart": 741, + "commentStart": 0, "end": 0, "name": { - "commentStart": 741, + "commentStart": 0, "end": 0, "name": "wbumps", "start": 0, @@ -763,16 +763,16 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 747, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 839, + "commentStart": 0, "end": 0, "name": { - "commentStart": 839, + "commentStart": 0, "end": 0, "name": "lbumps", "start": 0, @@ -784,7 +784,7 @@ description: Result of parsing lego.kcl "type": "Name" }, { - "commentStart": 847, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -796,7 +796,7 @@ description: Result of parsing lego.kcl } }, { - "commentStart": 850, + "commentStart": 0, "end": 0, "raw": "\"lbumps must be greater than 1\"", "start": 0, @@ -807,10 +807,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 821, + "commentStart": 0, "end": 0, "name": { - "commentStart": 821, + "commentStart": 0, "end": 0, "name": "assertGreaterThan", "start": 0, @@ -820,7 +820,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 821, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -836,16 +836,16 @@ description: Result of parsing lego.kcl "type": "ExpressionStatement" }, { - "commentStart": 883, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 901, + "commentStart": 0, "end": 0, "name": { - "commentStart": 901, + "commentStart": 0, "end": 0, "name": "wbumps", "start": 0, @@ -857,7 +857,7 @@ description: Result of parsing lego.kcl "type": "Name" }, { - "commentStart": 909, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -869,7 +869,7 @@ description: Result of parsing lego.kcl } }, { - "commentStart": 912, + "commentStart": 0, "end": 0, "raw": "\"wbumps must be greater than 1\"", "start": 0, @@ -880,10 +880,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 883, + "commentStart": 0, "end": 0, "name": { - "commentStart": 883, + "commentStart": 0, "end": 0, "name": "assertGreaterThan", "start": 0, @@ -893,7 +893,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 883, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -904,12 +904,12 @@ description: Result of parsing lego.kcl "type": "ExpressionStatement" }, { - "commentStart": 944, + "commentStart": 0, "declaration": { - "commentStart": 963, + "commentStart": 0, "end": 0, "id": { - "commentStart": 963, + "commentStart": 0, "end": 0, "name": "base", "start": 0, @@ -921,10 +921,10 @@ description: Result of parsing lego.kcl "arguments": [ { "abs_path": false, - "commentStart": 984, + "commentStart": 0, "end": 0, "name": { - "commentStart": 984, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -938,10 +938,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 970, + "commentStart": 0, "end": 0, "name": { - "commentStart": 970, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -951,7 +951,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 970, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -960,18 +960,18 @@ description: Result of parsing lego.kcl { "arguments": [ { - "commentStart": 1008, + "commentStart": 0, "elements": [ { - "commentStart": 1009, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1010, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1010, + "commentStart": 0, "end": 0, "name": "totalWidth", "start": 0, @@ -982,7 +982,7 @@ description: Result of parsing lego.kcl "type": "Name", "type": "Name" }, - "commentStart": 1009, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -991,7 +991,7 @@ description: Result of parsing lego.kcl }, "operator": "/", "right": { - "commentStart": 1023, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1007,15 +1007,15 @@ description: Result of parsing lego.kcl "type": "BinaryExpression" }, { - "commentStart": 1026, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1027, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1027, + "commentStart": 0, "end": 0, "name": "totalLength", "start": 0, @@ -1026,7 +1026,7 @@ description: Result of parsing lego.kcl "type": "Name", "type": "Name" }, - "commentStart": 1026, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1035,7 +1035,7 @@ description: Result of parsing lego.kcl }, "operator": "/", "right": { - "commentStart": 1041, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1057,7 +1057,7 @@ description: Result of parsing lego.kcl "type": "ArrayExpression" }, { - "commentStart": 1045, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1066,10 +1066,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 993, + "commentStart": 0, "end": 0, "name": { - "commentStart": 993, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1079,7 +1079,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 993, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1090,21 +1090,21 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 1058, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1064, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1065, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1065, + "commentStart": 0, "end": 0, "name": "totalWidth", "start": 0, @@ -1116,7 +1116,7 @@ description: Result of parsing lego.kcl "type": "Name" }, { - "commentStart": 1077, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1137,10 +1137,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 1053, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1053, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1150,7 +1150,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1053, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1162,17 +1162,17 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 1091, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1097, + "commentStart": 0, "elements": [ { - "commentStart": 1098, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1185,10 +1185,10 @@ description: Result of parsing lego.kcl }, { "abs_path": false, - "commentStart": 1101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1101, + "commentStart": 0, "end": 0, "name": "totalLength", "start": 0, @@ -1209,10 +1209,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 1086, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1086, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1222,7 +1222,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1086, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1234,22 +1234,22 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 1125, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1131, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 1133, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1133, + "commentStart": 0, "end": 0, "name": "totalWidth", "start": 0, @@ -1260,7 +1260,7 @@ description: Result of parsing lego.kcl "type": "Name", "type": "Name" }, - "commentStart": 1132, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1268,7 +1268,7 @@ description: Result of parsing lego.kcl "type": "UnaryExpression" }, { - "commentStart": 1145, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1289,10 +1289,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 1120, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1120, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1302,7 +1302,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1120, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1313,10 +1313,10 @@ description: Result of parsing lego.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1154, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1154, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1326,7 +1326,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1154, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1337,7 +1337,7 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 1175, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1345,10 +1345,10 @@ description: Result of parsing lego.kcl }, "arg": { "abs_path": false, - "commentStart": 1184, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1184, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -1363,10 +1363,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 1167, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1167, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1376,7 +1376,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1167, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1384,13 +1384,13 @@ description: Result of parsing lego.kcl "unlabeled": null } ], - "commentStart": 970, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "6": [ { - "commentStart": 1191, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1423,12 +1423,12 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 1354, + "commentStart": 0, "declaration": { - "commentStart": 1354, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1354, + "commentStart": 0, "end": 0, "name": "shellExtrude", "start": 0, @@ -1439,37 +1439,38 @@ description: Result of parsing lego.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1383, - "end": 0, - "name": { - "commentStart": 1383, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "base", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 1389, - "end": 0, - "raw": "\"start\"", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "start" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1369, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1369, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1479,30 +1480,46 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1369, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "base", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 1418, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1429, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1429, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1429, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1429, + "commentStart": 0, "end": 0, "name": "totalWidth", "start": 0, @@ -1515,7 +1532,7 @@ description: Result of parsing lego.kcl }, "operator": "/", "right": { - "commentStart": 1442, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1533,10 +1550,10 @@ description: Result of parsing lego.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1446, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1446, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -1551,7 +1568,7 @@ description: Result of parsing lego.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1427, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1560,17 +1577,17 @@ description: Result of parsing lego.kcl }, { "argument": { - "commentStart": 1459, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1459, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1459, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1459, + "commentStart": 0, "end": 0, "name": "totalLength", "start": 0, @@ -1583,7 +1600,7 @@ description: Result of parsing lego.kcl }, "operator": "/", "right": { - "commentStart": 1473, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1601,10 +1618,10 @@ description: Result of parsing lego.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1477, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1477, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -1619,7 +1636,7 @@ description: Result of parsing lego.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1457, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1633,7 +1650,7 @@ description: Result of parsing lego.kcl "type": "ArrayExpression" }, { - "commentStart": 1488, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1642,10 +1659,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 1403, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1403, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1655,7 +1672,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1403, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1666,24 +1683,24 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 1501, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1507, + "commentStart": 0, "elements": [ { - "commentStart": 1508, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1508, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1508, + "commentStart": 0, "end": 0, "name": "totalWidth", "start": 0, @@ -1696,10 +1713,10 @@ description: Result of parsing lego.kcl }, "operator": "-", "right": { - "commentStart": 1522, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1522, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1713,10 +1730,10 @@ description: Result of parsing lego.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1526, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1526, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -1736,7 +1753,7 @@ description: Result of parsing lego.kcl "type": "BinaryExpression" }, { - "commentStart": 1530, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1757,10 +1774,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 1496, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1496, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1770,7 +1787,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1496, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1782,17 +1799,17 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 1544, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1550, + "commentStart": 0, "elements": [ { - "commentStart": 1551, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1804,14 +1821,14 @@ description: Result of parsing lego.kcl } }, { - "commentStart": 1554, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1554, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1554, + "commentStart": 0, "end": 0, "name": "totalLength", "start": 0, @@ -1824,10 +1841,10 @@ description: Result of parsing lego.kcl }, "operator": "-", "right": { - "commentStart": 1569, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1569, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1841,10 +1858,10 @@ description: Result of parsing lego.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1573, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1573, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -1873,10 +1890,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 1539, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1539, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1886,7 +1903,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1539, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1898,25 +1915,25 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 1588, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1594, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1597, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1597, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1597, + "commentStart": 0, "end": 0, "name": "totalWidth", "start": 0, @@ -1929,10 +1946,10 @@ description: Result of parsing lego.kcl }, "operator": "-", "right": { - "commentStart": 1611, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1611, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1946,10 +1963,10 @@ description: Result of parsing lego.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 1615, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1615, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -1968,7 +1985,7 @@ description: Result of parsing lego.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1595, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1976,7 +1993,7 @@ description: Result of parsing lego.kcl "type": "UnaryExpression" }, { - "commentStart": 1620, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1997,10 +2014,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 1583, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1583, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2010,7 +2027,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1583, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2021,10 +2038,10 @@ description: Result of parsing lego.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1629, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1629, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2034,7 +2051,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1629, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2045,7 +2062,7 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 1650, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2053,14 +2070,14 @@ description: Result of parsing lego.kcl }, "arg": { "argument": { - "commentStart": 1661, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1661, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1661, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -2074,10 +2091,10 @@ description: Result of parsing lego.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1670, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1670, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -2092,7 +2109,7 @@ description: Result of parsing lego.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1659, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2103,10 +2120,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 1642, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1642, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2116,7 +2133,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1642, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2124,13 +2141,13 @@ description: Result of parsing lego.kcl "unlabeled": null } ], - "commentStart": 1369, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "6": [ { - "commentStart": 1673, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2158,12 +2175,12 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 1717, + "commentStart": 0, "declaration": { - "commentStart": 1717, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1717, + "commentStart": 0, "end": 0, "name": "peg", "start": 0, @@ -2174,37 +2191,38 @@ description: Result of parsing lego.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1737, - "end": 0, - "name": { - "commentStart": 1737, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "base", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 1743, - "end": 0, - "raw": "'end'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "end" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1723, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1723, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2214,39 +2232,55 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1723, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "base", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1770, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1779, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1792, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1792, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1792, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1792, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, @@ -2259,14 +2293,14 @@ description: Result of parsing lego.kcl }, "operator": "*", "right": { - "commentStart": 1801, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1801, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1801, + "commentStart": 0, "end": 0, "name": "wbumps", "start": 0, @@ -2279,7 +2313,7 @@ description: Result of parsing lego.kcl }, "operator": "-", "right": { - "commentStart": 1810, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2300,7 +2334,7 @@ description: Result of parsing lego.kcl }, "operator": "/", "right": { - "commentStart": 1815, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2315,7 +2349,7 @@ description: Result of parsing lego.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1790, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2324,17 +2358,17 @@ description: Result of parsing lego.kcl }, { "argument": { - "commentStart": 1830, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1830, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1830, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1830, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, @@ -2347,14 +2381,14 @@ description: Result of parsing lego.kcl }, "operator": "*", "right": { - "commentStart": 1839, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1839, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1839, + "commentStart": 0, "end": 0, "name": "lbumps", "start": 0, @@ -2367,7 +2401,7 @@ description: Result of parsing lego.kcl }, "operator": "-", "right": { - "commentStart": 1848, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2388,7 +2422,7 @@ description: Result of parsing lego.kcl }, "operator": "/", "right": { - "commentStart": 1853, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2403,7 +2437,7 @@ description: Result of parsing lego.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1828, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2420,21 +2454,21 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 1873, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1882, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1882, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1882, + "commentStart": 0, "end": 0, "name": "bumpDiam", "start": 0, @@ -2447,7 +2481,7 @@ description: Result of parsing lego.kcl }, "operator": "/", "right": { - "commentStart": 1893, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2466,10 +2500,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 1755, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1755, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -2479,7 +2513,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1755, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2491,17 +2525,17 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 1924, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1931, + "commentStart": 0, "elements": [ { - "commentStart": 1932, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2513,7 +2547,7 @@ description: Result of parsing lego.kcl } }, { - "commentStart": 1935, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2534,7 +2568,7 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 1939, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -2542,10 +2576,10 @@ description: Result of parsing lego.kcl }, "arg": { "abs_path": false, - "commentStart": 1951, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1951, + "commentStart": 0, "end": 0, "name": "wbumps", "start": 0, @@ -2560,7 +2594,7 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 1959, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -2568,10 +2602,10 @@ description: Result of parsing lego.kcl }, "arg": { "abs_path": false, - "commentStart": 1970, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1970, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, @@ -2586,10 +2620,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 1908, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1908, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -2599,7 +2633,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1908, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2611,17 +2645,17 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 1998, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2005, + "commentStart": 0, "elements": [ { - "commentStart": 2006, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2633,7 +2667,7 @@ description: Result of parsing lego.kcl } }, { - "commentStart": 2009, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2654,7 +2688,7 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 2013, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, @@ -2662,10 +2696,10 @@ description: Result of parsing lego.kcl }, "arg": { "abs_path": false, - "commentStart": 2025, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2025, + "commentStart": 0, "end": 0, "name": "lbumps", "start": 0, @@ -2680,7 +2714,7 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 2033, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -2688,10 +2722,10 @@ description: Result of parsing lego.kcl }, "arg": { "abs_path": false, - "commentStart": 2044, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2044, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, @@ -2706,10 +2740,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 1982, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1982, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -2719,7 +2753,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 1982, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2731,7 +2765,7 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 2064, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2739,10 +2773,10 @@ description: Result of parsing lego.kcl }, "arg": { "abs_path": false, - "commentStart": 2073, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2073, + "commentStart": 0, "end": 0, "name": "bumpHeight", "start": 0, @@ -2757,10 +2791,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 2056, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2056, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2770,7 +2804,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 2056, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2778,13 +2812,13 @@ description: Result of parsing lego.kcl "unlabeled": null } ], - "commentStart": 1723, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "4": [ { - "commentStart": 2084, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2812,12 +2846,12 @@ description: Result of parsing lego.kcl "type": "VariableDeclaration" }, { - "commentStart": 2131, + "commentStart": 0, "declaration": { - "commentStart": 2131, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2131, + "commentStart": 0, "end": 0, "name": "tubePattern", "start": 0, @@ -2828,37 +2862,38 @@ description: Result of parsing lego.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 2159, - "end": 0, - "name": { - "commentStart": 2159, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "shellExtrude", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 2173, - "end": 0, - "raw": "'start'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "start" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 2145, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2145, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2868,42 +2903,58 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 2145, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "shellExtrude", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2202, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2211, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 2224, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2224, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2224, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2224, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2224, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, @@ -2916,14 +2967,14 @@ description: Result of parsing lego.kcl }, "operator": "*", "right": { - "commentStart": 2233, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2233, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2233, + "commentStart": 0, "end": 0, "name": "wbumps", "start": 0, @@ -2936,7 +2987,7 @@ description: Result of parsing lego.kcl }, "operator": "-", "right": { - "commentStart": 2242, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2957,7 +3008,7 @@ description: Result of parsing lego.kcl }, "operator": "/", "right": { - "commentStart": 2247, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2974,14 +3025,14 @@ description: Result of parsing lego.kcl }, "operator": "-", "right": { - "commentStart": 2252, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2252, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2252, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, @@ -2994,7 +3045,7 @@ description: Result of parsing lego.kcl }, "operator": "/", "right": { - "commentStart": 2260, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3013,7 +3064,7 @@ description: Result of parsing lego.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 2222, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3022,20 +3073,20 @@ description: Result of parsing lego.kcl }, { "argument": { - "commentStart": 2276, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2276, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2276, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2276, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2276, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, @@ -3048,14 +3099,14 @@ description: Result of parsing lego.kcl }, "operator": "*", "right": { - "commentStart": 2285, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2285, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2285, + "commentStart": 0, "end": 0, "name": "lbumps", "start": 0, @@ -3068,7 +3119,7 @@ description: Result of parsing lego.kcl }, "operator": "-", "right": { - "commentStart": 2294, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3089,7 +3140,7 @@ description: Result of parsing lego.kcl }, "operator": "/", "right": { - "commentStart": 2299, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3106,14 +3157,14 @@ description: Result of parsing lego.kcl }, "operator": "-", "right": { - "commentStart": 2304, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2304, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2304, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, @@ -3126,7 +3177,7 @@ description: Result of parsing lego.kcl }, "operator": "/", "right": { - "commentStart": 2312, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3145,7 +3196,7 @@ description: Result of parsing lego.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 2274, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3162,21 +3213,21 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 2333, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2342, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2342, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2342, + "commentStart": 0, "end": 0, "name": "bumpDiam", "start": 0, @@ -3189,7 +3240,7 @@ description: Result of parsing lego.kcl }, "operator": "/", "right": { - "commentStart": 2353, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3208,10 +3259,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 2187, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2187, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -3221,7 +3272,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 2187, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3233,17 +3284,17 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 2384, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2391, + "commentStart": 0, "elements": [ { - "commentStart": 2392, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3255,7 +3306,7 @@ description: Result of parsing lego.kcl } }, { - "commentStart": 2395, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3276,21 +3327,21 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 2399, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2411, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2411, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2411, + "commentStart": 0, "end": 0, "name": "wbumps", "start": 0, @@ -3303,7 +3354,7 @@ description: Result of parsing lego.kcl }, "operator": "-", "right": { - "commentStart": 2420, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3322,7 +3373,7 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 2423, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -3330,10 +3381,10 @@ description: Result of parsing lego.kcl }, "arg": { "abs_path": false, - "commentStart": 2434, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2434, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, @@ -3348,10 +3399,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 2368, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2368, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -3361,7 +3412,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 2368, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3373,17 +3424,17 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 2462, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2469, + "commentStart": 0, "elements": [ { - "commentStart": 2470, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3395,7 +3446,7 @@ description: Result of parsing lego.kcl } }, { - "commentStart": 2473, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3416,21 +3467,21 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 2477, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2489, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2489, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2489, + "commentStart": 0, "end": 0, "name": "lbumps", "start": 0, @@ -3443,7 +3494,7 @@ description: Result of parsing lego.kcl }, "operator": "-", "right": { - "commentStart": 2498, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3462,7 +3513,7 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 2501, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -3470,10 +3521,10 @@ description: Result of parsing lego.kcl }, "arg": { "abs_path": false, - "commentStart": 2512, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2512, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, @@ -3488,10 +3539,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 2446, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2446, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -3501,7 +3552,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 2446, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3513,7 +3564,7 @@ description: Result of parsing lego.kcl { "type": "LabeledArg", "label": { - "commentStart": 2532, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3521,10 +3572,10 @@ description: Result of parsing lego.kcl }, "arg": { "abs_path": false, - "commentStart": 2541, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2541, + "commentStart": 0, "end": 0, "name": "bumpHeight", "start": 0, @@ -3539,10 +3590,10 @@ description: Result of parsing lego.kcl ], "callee": { "abs_path": false, - "commentStart": 2524, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2524, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3552,7 +3603,7 @@ description: Result of parsing lego.kcl "start": 0, "type": "Name" }, - "commentStart": 2524, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3560,7 +3611,7 @@ description: Result of parsing lego.kcl "unlabeled": null } ], - "commentStart": 2145, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -3583,7 +3634,7 @@ description: Result of parsing lego.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 239, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -3598,10 +3649,10 @@ description: Result of parsing lego.kcl ], "properties": [ { - "commentStart": 248, + "commentStart": 0, "end": 0, "key": { - "commentStart": 248, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -3611,10 +3662,10 @@ description: Result of parsing lego.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 268, + "commentStart": 0, "end": 0, "name": { - "commentStart": 268, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -3635,7 +3686,7 @@ description: Result of parsing lego.kcl "nonCodeNodes": { "0": [ { - "commentStart": 304, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3648,7 +3699,7 @@ description: Result of parsing lego.kcl ], "1": [ { - "commentStart": 339, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3661,7 +3712,7 @@ description: Result of parsing lego.kcl ], "8": [ { - "commentStart": 504, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3675,7 +3726,7 @@ description: Result of parsing lego.kcl }, "startNodes": [ { - "commentStart": 271, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/lego/ops.snap b/rust/kcl-lib/tests/kcl_samples/lego/ops.snap index 12b97ce75..1956612e7 100644 --- a/rust/kcl-lib/tests/kcl_samples/lego/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/lego/ops.snap @@ -5,7 +5,7 @@ description: Operations executed lego.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -52,16 +52,7 @@ description: Operations executed lego.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -72,7 +63,15 @@ description: Operations executed lego.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -81,7 +80,13 @@ description: Operations executed lego.kcl "type": "Number", "value": -1.7000000000000002, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -102,16 +107,7 @@ description: Operations executed lego.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -122,7 +118,15 @@ description: Operations executed lego.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -193,16 +197,7 @@ description: Operations executed lego.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -213,7 +208,15 @@ description: Operations executed lego.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/kcl_samples/lego/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/lego/program_memory.snap index a8b6b3ef0..05c671136 100644 --- a/rust/kcl-lib/tests/kcl_samples/lego/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/lego/program_memory.snap @@ -128,22 +128,34 @@ description: Variables in memory after executing lego.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -237,7 +249,13 @@ description: Variables in memory after executing lego.kcl "type": "Number", "value": 7.9333, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "lbumps": { @@ -309,17 +327,26 @@ description: Variables in memory after executing lego.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -444,22 +471,34 @@ description: Variables in memory after executing lego.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -585,17 +624,26 @@ description: Variables in memory after executing lego.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -720,22 +768,34 @@ description: Variables in memory after executing lego.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -861,17 +921,26 @@ description: Variables in memory after executing lego.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -996,22 +1065,34 @@ description: Variables in memory after executing lego.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1137,17 +1218,26 @@ description: Variables in memory after executing lego.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1272,22 +1362,34 @@ description: Variables in memory after executing lego.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1413,17 +1515,26 @@ description: Variables in memory after executing lego.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1548,22 +1659,34 @@ description: Variables in memory after executing lego.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1689,17 +1812,26 @@ description: Variables in memory after executing lego.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1824,22 +1956,34 @@ description: Variables in memory after executing lego.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1931,7 +2075,13 @@ description: Variables in memory after executing lego.kcl "type": "Number", "value": 6.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "shellExtrude": { @@ -2059,17 +2209,26 @@ description: Variables in memory after executing lego.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2194,22 +2353,34 @@ description: Variables in memory after executing lego.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2286,21 +2457,39 @@ description: Variables in memory after executing lego.kcl "type": "Number", "value": 1.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "totalLength": { "type": "Number", "value": 23.8, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "totalWidth": { "type": "Number", "value": 15.8, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "tubePattern": { @@ -2359,17 +2548,26 @@ description: Variables in memory after executing lego.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2494,17 +2692,26 @@ description: Variables in memory after executing lego.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2629,22 +2836,34 @@ description: Variables in memory after executing lego.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2805,17 +3024,26 @@ description: Variables in memory after executing lego.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2940,17 +3168,26 @@ description: Variables in memory after executing lego.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3075,22 +3312,34 @@ description: Variables in memory after executing lego.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -3204,7 +3453,13 @@ description: Variables in memory after executing lego.kcl "type": "Number", "value": 7.9, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "wbumps": { diff --git a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/artifact_commands.snap index 938ecf4ba..c89c9c182 100644 --- a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/artifact_commands.snap @@ -175,7 +175,8 @@ description: Artifact commands makeup-mirror.kcl "type": "extrude", "target": "[uuid]", "distance": 24.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -360,7 +361,8 @@ description: Artifact commands makeup-mirror.kcl "type": "extrude", "target": "[uuid]", "distance": 24.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -545,7 +547,8 @@ description: Artifact commands makeup-mirror.kcl "type": "extrude", "target": "[uuid]", "distance": 24.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -730,7 +733,8 @@ description: Artifact commands makeup-mirror.kcl "type": "extrude", "target": "[uuid]", "distance": 24.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -915,7 +919,8 @@ description: Artifact commands makeup-mirror.kcl "type": "extrude", "target": "[uuid]", "distance": 24.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1100,7 +1105,8 @@ description: Artifact commands makeup-mirror.kcl "type": "extrude", "target": "[uuid]", "distance": 24.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1285,7 +1291,8 @@ description: Artifact commands makeup-mirror.kcl "type": "extrude", "target": "[uuid]", "distance": 24.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1456,7 +1463,8 @@ description: Artifact commands makeup-mirror.kcl "type": "extrude", "target": "[uuid]", "distance": 170.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1627,7 +1635,8 @@ description: Artifact commands makeup-mirror.kcl "type": "extrude", "target": "[uuid]", "distance": 170.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1812,7 +1821,8 @@ description: Artifact commands makeup-mirror.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2011,7 +2021,8 @@ description: Artifact commands makeup-mirror.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ast.snap b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ast.snap index 0da9dc682..11cb5775a 100644 --- a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing makeup-mirror.kcl "Ok": { "body": [ { - "commentStart": 166, + "commentStart": 0, "declaration": { - "commentStart": 188, + "commentStart": 0, "end": 0, "id": { - "commentStart": 188, + "commentStart": 0, "end": 0, "name": "hingeRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 202, + "commentStart": 0, "end": 0, "raw": "8", "start": 0, @@ -42,26 +42,26 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 204, + "commentStart": 0, "declaration": { - "commentStart": 204, + "commentStart": 0, "end": 0, "id": { - "commentStart": 204, + "commentStart": 0, "end": 0, "name": "hingeHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 218, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 218, + "commentStart": 0, "end": 0, "name": { - "commentStart": 218, + "commentStart": 0, "end": 0, "name": "hingeRadius", "start": 0, @@ -74,7 +74,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "*", "right": { - "commentStart": 232, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -99,19 +99,19 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 234, + "commentStart": 0, "declaration": { - "commentStart": 234, + "commentStart": 0, "end": 0, "id": { - "commentStart": 234, + "commentStart": 0, "end": 0, "name": "hingeGap", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 245, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -132,19 +132,19 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 248, + "commentStart": 0, "declaration": { - "commentStart": 268, + "commentStart": 0, "end": 0, "id": { - "commentStart": 268, + "commentStart": 0, "end": 0, "name": "armLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 280, + "commentStart": 0, "end": 0, "raw": "170", "start": 0, @@ -170,19 +170,19 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 284, + "commentStart": 0, "declaration": { - "commentStart": 284, + "commentStart": 0, "end": 0, "id": { - "commentStart": 284, + "commentStart": 0, "end": 0, "name": "armRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 296, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -203,22 +203,22 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 297, + "commentStart": 0, "declaration": { - "commentStart": 320, + "commentStart": 0, "end": 0, "id": { - "commentStart": 320, + "commentStart": 0, "end": 0, "name": "mirrorRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 335, + "commentStart": 0, "end": 0, "left": { - "commentStart": 335, + "commentStart": 0, "end": 0, "raw": "170", "start": 0, @@ -231,7 +231,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "/", "right": { - "commentStart": 341, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -261,19 +261,19 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 343, + "commentStart": 0, "declaration": { - "commentStart": 343, + "commentStart": 0, "end": 0, "id": { - "commentStart": 343, + "commentStart": 0, "end": 0, "name": "mirrorThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 361, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -294,19 +294,19 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 364, + "commentStart": 0, "declaration": { - "commentStart": 364, + "commentStart": 0, "end": 0, "id": { - "commentStart": 364, + "commentStart": 0, "end": 0, "name": "archToMirrorGap", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 382, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -327,19 +327,19 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 384, + "commentStart": 0, "declaration": { - "commentStart": 384, + "commentStart": 0, "end": 0, "id": { - "commentStart": 384, + "commentStart": 0, "end": 0, "name": "archThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 400, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -360,26 +360,26 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 402, + "commentStart": 0, "declaration": { - "commentStart": 402, + "commentStart": 0, "end": 0, "id": { - "commentStart": 402, + "commentStart": 0, "end": 0, "name": "archRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 415, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 415, + "commentStart": 0, "end": 0, "name": { - "commentStart": 415, + "commentStart": 0, "end": 0, "name": "mirrorRadius", "start": 0, @@ -393,10 +393,10 @@ description: Result of parsing makeup-mirror.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 430, + "commentStart": 0, "end": 0, "name": { - "commentStart": 430, + "commentStart": 0, "end": 0, "name": "archToMirrorGap", "start": 0, @@ -421,12 +421,12 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 445, + "commentStart": 0, "declaration": { - "commentStart": 500, + "commentStart": 0, "end": 0, "id": { - "commentStart": 500, + "commentStart": 0, "end": 0, "name": "hingeFn", "start": 0, @@ -436,12 +436,12 @@ description: Result of parsing makeup-mirror.kcl "body": { "body": [ { - "commentStart": 521, + "commentStart": 0, "declaration": { - "commentStart": 521, + "commentStart": 0, "end": 0, "id": { - "commentStart": 521, + "commentStart": 0, "end": 0, "name": "hingeBody", "start": 0, @@ -456,7 +456,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "LabeledArg", "label": { - "commentStart": 563, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -464,10 +464,10 @@ description: Result of parsing makeup-mirror.kcl }, "arg": { "abs_path": false, - "commentStart": 572, + "commentStart": 0, "end": 0, "name": { - "commentStart": 572, + "commentStart": 0, "end": 0, "name": "z", "start": 0, @@ -482,10 +482,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 547, + "commentStart": 0, "end": 0, "name": { - "commentStart": 547, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -495,17 +495,17 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 547, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 559, + "commentStart": 0, "end": 0, "name": { - "commentStart": 559, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -520,10 +520,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 533, + "commentStart": 0, "end": 0, "name": { - "commentStart": 533, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -533,7 +533,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 533, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -544,21 +544,21 @@ description: Result of parsing makeup-mirror.kcl { "type": "LabeledArg", "label": { - "commentStart": 590, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 599, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 600, + "commentStart": 0, "end": 0, "name": { - "commentStart": 600, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -571,10 +571,10 @@ description: Result of parsing makeup-mirror.kcl }, { "abs_path": false, - "commentStart": 603, + "commentStart": 0, "end": 0, "name": { - "commentStart": 603, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -595,7 +595,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "LabeledArg", "label": { - "commentStart": 607, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -603,10 +603,10 @@ description: Result of parsing makeup-mirror.kcl }, "arg": { "abs_path": false, - "commentStart": 616, + "commentStart": 0, "end": 0, "name": { - "commentStart": 616, + "commentStart": 0, "end": 0, "name": "hingeRadius", "start": 0, @@ -621,10 +621,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 583, + "commentStart": 0, "end": 0, "name": { - "commentStart": 583, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -634,7 +634,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 583, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -646,7 +646,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "LabeledArg", "label": { - "commentStart": 644, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -654,10 +654,10 @@ description: Result of parsing makeup-mirror.kcl }, "arg": { "abs_path": false, - "commentStart": 653, + "commentStart": 0, "end": 0, "name": { - "commentStart": 653, + "commentStart": 0, "end": 0, "name": "hingeHeight", "start": 0, @@ -672,10 +672,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 636, + "commentStart": 0, "end": 0, "name": { - "commentStart": 636, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -685,7 +685,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 636, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -693,7 +693,7 @@ description: Result of parsing makeup-mirror.kcl "unlabeled": null } ], - "commentStart": 533, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -711,10 +711,10 @@ description: Result of parsing makeup-mirror.kcl { "argument": { "abs_path": false, - "commentStart": 675, + "commentStart": 0, "end": 0, "name": { - "commentStart": 675, + "commentStart": 0, "end": 0, "name": "hingeBody", "start": 0, @@ -725,24 +725,24 @@ description: Result of parsing makeup-mirror.kcl "type": "Name", "type": "Name" }, - "commentStart": 668, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 517, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 507, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 508, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -752,7 +752,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "Parameter", "identifier": { - "commentStart": 511, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -762,7 +762,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "Parameter", "identifier": { - "commentStart": 514, + "commentStart": 0, "end": 0, "name": "z", "start": 0, @@ -790,12 +790,12 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 686, + "commentStart": 0, "declaration": { - "commentStart": 688, + "commentStart": 0, "end": 0, "id": { - "commentStart": 688, + "commentStart": 0, "end": 0, "name": "hingePartA1", "start": 0, @@ -804,7 +804,7 @@ description: Result of parsing makeup-mirror.kcl "init": { "arguments": [ { - "commentStart": 710, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -816,7 +816,7 @@ description: Result of parsing makeup-mirror.kcl } }, { - "commentStart": 713, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -828,7 +828,7 @@ description: Result of parsing makeup-mirror.kcl } }, { - "commentStart": 716, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -842,10 +842,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 702, + "commentStart": 0, "end": 0, "name": { - "commentStart": 702, + "commentStart": 0, "end": 0, "name": "hingeFn", "start": 0, @@ -855,7 +855,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 702, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -871,12 +871,12 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 719, + "commentStart": 0, "declaration": { - "commentStart": 719, + "commentStart": 0, "end": 0, "id": { - "commentStart": 719, + "commentStart": 0, "end": 0, "name": "hingePartA2", "start": 0, @@ -885,7 +885,7 @@ description: Result of parsing makeup-mirror.kcl "init": { "arguments": [ { - "commentStart": 741, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -897,7 +897,7 @@ description: Result of parsing makeup-mirror.kcl } }, { - "commentStart": 744, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -909,14 +909,14 @@ description: Result of parsing makeup-mirror.kcl } }, { - "commentStart": 747, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 747, + "commentStart": 0, "end": 0, "name": { - "commentStart": 747, + "commentStart": 0, "end": 0, "name": "hingeHeight", "start": 0, @@ -930,10 +930,10 @@ description: Result of parsing makeup-mirror.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 761, + "commentStart": 0, "end": 0, "name": { - "commentStart": 761, + "commentStart": 0, "end": 0, "name": "hingeGap", "start": 0, @@ -951,10 +951,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 733, + "commentStart": 0, "end": 0, "name": { - "commentStart": 733, + "commentStart": 0, "end": 0, "name": "hingeFn", "start": 0, @@ -964,7 +964,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 733, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -980,12 +980,12 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 771, + "commentStart": 0, "declaration": { - "commentStart": 771, + "commentStart": 0, "end": 0, "id": { - "commentStart": 771, + "commentStart": 0, "end": 0, "name": "hingePartA3", "start": 0, @@ -994,7 +994,7 @@ description: Result of parsing makeup-mirror.kcl "init": { "arguments": [ { - "commentStart": 793, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1006,7 +1006,7 @@ description: Result of parsing makeup-mirror.kcl } }, { - "commentStart": 796, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1018,17 +1018,17 @@ description: Result of parsing makeup-mirror.kcl } }, { - "commentStart": 799, + "commentStart": 0, "end": 0, "left": { - "commentStart": 799, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 799, + "commentStart": 0, "end": 0, "name": { - "commentStart": 799, + "commentStart": 0, "end": 0, "name": "hingeHeight", "start": 0, @@ -1041,7 +1041,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "*", "right": { - "commentStart": 813, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1058,14 +1058,14 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "+", "right": { - "commentStart": 817, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 817, + "commentStart": 0, "end": 0, "name": { - "commentStart": 817, + "commentStart": 0, "end": 0, "name": "hingeGap", "start": 0, @@ -1078,7 +1078,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "*", "right": { - "commentStart": 828, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1100,10 +1100,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 785, + "commentStart": 0, "end": 0, "name": { - "commentStart": 785, + "commentStart": 0, "end": 0, "name": "hingeFn", "start": 0, @@ -1113,7 +1113,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 785, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1129,12 +1129,12 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 830, + "commentStart": 0, "declaration": { - "commentStart": 832, + "commentStart": 0, "end": 0, "id": { - "commentStart": 832, + "commentStart": 0, "end": 0, "name": "hingePartB2", "start": 0, @@ -1144,10 +1144,10 @@ description: Result of parsing makeup-mirror.kcl "arguments": [ { "abs_path": false, - "commentStart": 854, + "commentStart": 0, "end": 0, "name": { - "commentStart": 854, + "commentStart": 0, "end": 0, "name": "armLength", "start": 0, @@ -1159,7 +1159,7 @@ description: Result of parsing makeup-mirror.kcl "type": "Name" }, { - "commentStart": 865, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1171,14 +1171,14 @@ description: Result of parsing makeup-mirror.kcl } }, { - "commentStart": 868, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 868, + "commentStart": 0, "end": 0, "name": { - "commentStart": 868, + "commentStart": 0, "end": 0, "name": "hingeHeight", "start": 0, @@ -1192,10 +1192,10 @@ description: Result of parsing makeup-mirror.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 882, + "commentStart": 0, "end": 0, "name": { - "commentStart": 882, + "commentStart": 0, "end": 0, "name": "hingeGap", "start": 0, @@ -1213,10 +1213,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 846, + "commentStart": 0, "end": 0, "name": { - "commentStart": 846, + "commentStart": 0, "end": 0, "name": "hingeFn", "start": 0, @@ -1226,7 +1226,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 846, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1242,12 +1242,12 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 892, + "commentStart": 0, "declaration": { - "commentStart": 892, + "commentStart": 0, "end": 0, "id": { - "commentStart": 892, + "commentStart": 0, "end": 0, "name": "hingePartB3", "start": 0, @@ -1257,10 +1257,10 @@ description: Result of parsing makeup-mirror.kcl "arguments": [ { "abs_path": false, - "commentStart": 914, + "commentStart": 0, "end": 0, "name": { - "commentStart": 914, + "commentStart": 0, "end": 0, "name": "armLength", "start": 0, @@ -1272,7 +1272,7 @@ description: Result of parsing makeup-mirror.kcl "type": "Name" }, { - "commentStart": 925, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1284,17 +1284,17 @@ description: Result of parsing makeup-mirror.kcl } }, { - "commentStart": 928, + "commentStart": 0, "end": 0, "left": { - "commentStart": 928, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 928, + "commentStart": 0, "end": 0, "name": { - "commentStart": 928, + "commentStart": 0, "end": 0, "name": "hingeHeight", "start": 0, @@ -1307,7 +1307,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "*", "right": { - "commentStart": 942, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1324,14 +1324,14 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "+", "right": { - "commentStart": 946, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 946, + "commentStart": 0, "end": 0, "name": { - "commentStart": 946, + "commentStart": 0, "end": 0, "name": "hingeGap", "start": 0, @@ -1344,7 +1344,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "*", "right": { - "commentStart": 957, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1366,10 +1366,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 906, + "commentStart": 0, "end": 0, "name": { - "commentStart": 906, + "commentStart": 0, "end": 0, "name": "hingeFn", "start": 0, @@ -1379,7 +1379,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 906, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1395,12 +1395,12 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 959, + "commentStart": 0, "declaration": { - "commentStart": 961, + "commentStart": 0, "end": 0, "id": { - "commentStart": 961, + "commentStart": 0, "end": 0, "name": "hingePartC2", "start": 0, @@ -1410,10 +1410,10 @@ description: Result of parsing makeup-mirror.kcl "arguments": [ { "abs_path": false, - "commentStart": 983, + "commentStart": 0, "end": 0, "name": { - "commentStart": 983, + "commentStart": 0, "end": 0, "name": "armLength", "start": 0, @@ -1427,10 +1427,10 @@ description: Result of parsing makeup-mirror.kcl { "argument": { "abs_path": false, - "commentStart": 995, + "commentStart": 0, "end": 0, "name": { - "commentStart": 995, + "commentStart": 0, "end": 0, "name": "armLength", "start": 0, @@ -1441,7 +1441,7 @@ description: Result of parsing makeup-mirror.kcl "type": "Name", "type": "Name" }, - "commentStart": 994, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1449,17 +1449,17 @@ description: Result of parsing makeup-mirror.kcl "type": "UnaryExpression" }, { - "commentStart": 1006, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1006, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1006, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1006, + "commentStart": 0, "end": 0, "name": "hingeHeight", "start": 0, @@ -1472,7 +1472,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "*", "right": { - "commentStart": 1020, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1489,14 +1489,14 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "+", "right": { - "commentStart": 1024, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1024, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1024, + "commentStart": 0, "end": 0, "name": "hingeGap", "start": 0, @@ -1509,7 +1509,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "*", "right": { - "commentStart": 1035, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1531,10 +1531,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 975, + "commentStart": 0, "end": 0, "name": { - "commentStart": 975, + "commentStart": 0, "end": 0, "name": "hingeFn", "start": 0, @@ -1544,7 +1544,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 975, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1560,12 +1560,12 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 1038, + "commentStart": 0, "declaration": { - "commentStart": 1038, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1038, + "commentStart": 0, "end": 0, "name": "hingePartC3", "start": 0, @@ -1575,10 +1575,10 @@ description: Result of parsing makeup-mirror.kcl "arguments": [ { "abs_path": false, - "commentStart": 1060, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1060, + "commentStart": 0, "end": 0, "name": "armLength", "start": 0, @@ -1592,10 +1592,10 @@ description: Result of parsing makeup-mirror.kcl { "argument": { "abs_path": false, - "commentStart": 1072, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1072, + "commentStart": 0, "end": 0, "name": "armLength", "start": 0, @@ -1606,7 +1606,7 @@ description: Result of parsing makeup-mirror.kcl "type": "Name", "type": "Name" }, - "commentStart": 1071, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1614,17 +1614,17 @@ description: Result of parsing makeup-mirror.kcl "type": "UnaryExpression" }, { - "commentStart": 1083, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1083, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1083, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1083, + "commentStart": 0, "end": 0, "name": "hingeHeight", "start": 0, @@ -1637,7 +1637,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "*", "right": { - "commentStart": 1097, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -1654,14 +1654,14 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "+", "right": { - "commentStart": 1101, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1101, + "commentStart": 0, "end": 0, "name": "hingeGap", "start": 0, @@ -1674,7 +1674,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "*", "right": { - "commentStart": 1112, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -1696,10 +1696,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 1052, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1052, + "commentStart": 0, "end": 0, "name": "hingeFn", "start": 0, @@ -1709,7 +1709,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 1052, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1725,12 +1725,12 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 1114, + "commentStart": 0, "declaration": { - "commentStart": 1155, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1155, + "commentStart": 0, "end": 0, "name": "armFn", "start": 0, @@ -1740,12 +1740,12 @@ description: Result of parsing makeup-mirror.kcl "body": { "body": [ { - "commentStart": 1190, + "commentStart": 0, "declaration": { - "commentStart": 1190, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1190, + "commentStart": 0, "end": 0, "name": "armBody", "start": 0, @@ -1757,10 +1757,10 @@ description: Result of parsing makeup-mirror.kcl "arguments": [ { "abs_path": false, - "commentStart": 1214, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1214, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -1774,10 +1774,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 1200, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1200, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1787,7 +1787,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 1200, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1798,21 +1798,21 @@ description: Result of parsing makeup-mirror.kcl { "type": "LabeledArg", "label": { - "commentStart": 1235, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1244, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1245, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1245, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -1825,10 +1825,10 @@ description: Result of parsing makeup-mirror.kcl }, { "abs_path": false, - "commentStart": 1253, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1253, + "commentStart": 0, "end": 0, "name": "altitude", "start": 0, @@ -1849,7 +1849,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "LabeledArg", "label": { - "commentStart": 1264, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -1857,10 +1857,10 @@ description: Result of parsing makeup-mirror.kcl }, "arg": { "abs_path": false, - "commentStart": 1273, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1273, + "commentStart": 0, "end": 0, "name": "armRadius", "start": 0, @@ -1875,10 +1875,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 1228, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1228, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1888,7 +1888,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 1228, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1900,7 +1900,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "LabeledArg", "label": { - "commentStart": 1299, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1908,10 +1908,10 @@ description: Result of parsing makeup-mirror.kcl }, "arg": { "abs_path": false, - "commentStart": 1308, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1308, + "commentStart": 0, "end": 0, "name": "armLength", "start": 0, @@ -1926,10 +1926,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 1291, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1291, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1939,7 +1939,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 1291, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1947,7 +1947,7 @@ description: Result of parsing makeup-mirror.kcl "unlabeled": null } ], - "commentStart": 1200, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1965,10 +1965,10 @@ description: Result of parsing makeup-mirror.kcl { "argument": { "abs_path": false, - "commentStart": 1328, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1328, + "commentStart": 0, "end": 0, "name": "armBody", "start": 0, @@ -1979,24 +1979,24 @@ description: Result of parsing makeup-mirror.kcl "type": "Name", "type": "Name" }, - "commentStart": 1321, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 1186, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 1160, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 1161, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -2006,7 +2006,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "Parameter", "identifier": { - "commentStart": 1168, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, @@ -2016,7 +2016,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "Parameter", "identifier": { - "commentStart": 1176, + "commentStart": 0, "end": 0, "name": "altitude", "start": 0, @@ -2043,12 +2043,12 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 1337, + "commentStart": 0, "declaration": { - "commentStart": 1339, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1339, + "commentStart": 0, "end": 0, "name": "armPartA", "start": 0, @@ -2058,10 +2058,10 @@ description: Result of parsing makeup-mirror.kcl "arguments": [ { "abs_path": false, - "commentStart": 1356, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1356, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -2073,7 +2073,7 @@ description: Result of parsing makeup-mirror.kcl "type": "Name" }, { - "commentStart": 1360, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2085,17 +2085,17 @@ description: Result of parsing makeup-mirror.kcl } }, { - "commentStart": 1363, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1363, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1363, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1363, + "commentStart": 0, "end": 0, "name": "hingeHeight", "start": 0, @@ -2108,7 +2108,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "*", "right": { - "commentStart": 1377, + "commentStart": 0, "end": 0, "raw": "1.5", "start": 0, @@ -2126,10 +2126,10 @@ description: Result of parsing makeup-mirror.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1383, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1383, + "commentStart": 0, "end": 0, "name": "hingeGap", "start": 0, @@ -2147,10 +2147,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 1350, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1350, + "commentStart": 0, "end": 0, "name": "armFn", "start": 0, @@ -2160,7 +2160,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 1350, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2176,12 +2176,12 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 1393, + "commentStart": 0, "declaration": { - "commentStart": 1393, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1393, + "commentStart": 0, "end": 0, "name": "armPartB", "start": 0, @@ -2191,10 +2191,10 @@ description: Result of parsing makeup-mirror.kcl "arguments": [ { "abs_path": false, - "commentStart": 1410, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1410, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -2207,10 +2207,10 @@ description: Result of parsing makeup-mirror.kcl }, { "abs_path": false, - "commentStart": 1414, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1414, + "commentStart": 0, "end": 0, "name": "armLength", "start": 0, @@ -2222,17 +2222,17 @@ description: Result of parsing makeup-mirror.kcl "type": "Name" }, { - "commentStart": 1425, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1425, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1425, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1425, + "commentStart": 0, "end": 0, "name": "hingeHeight", "start": 0, @@ -2245,7 +2245,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "*", "right": { - "commentStart": 1439, + "commentStart": 0, "end": 0, "raw": "2.5", "start": 0, @@ -2262,14 +2262,14 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "+", "right": { - "commentStart": 1445, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1445, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1445, + "commentStart": 0, "end": 0, "name": "hingeGap", "start": 0, @@ -2282,7 +2282,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "*", "right": { - "commentStart": 1456, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2304,10 +2304,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 1404, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1404, + "commentStart": 0, "end": 0, "name": "armFn", "start": 0, @@ -2317,7 +2317,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 1404, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2333,12 +2333,12 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 1458, + "commentStart": 0, "declaration": { - "commentStart": 1502, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1502, + "commentStart": 0, "end": 0, "name": "mirrorFn", "start": 0, @@ -2348,12 +2348,12 @@ description: Result of parsing makeup-mirror.kcl "body": { "body": [ { - "commentStart": 1585, + "commentStart": 0, "declaration": { - "commentStart": 1585, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1585, + "commentStart": 0, "end": 0, "name": "armPlane", "start": 0, @@ -2366,21 +2366,21 @@ description: Result of parsing makeup-mirror.kcl { "type": "LabeledArg", "label": { - "commentStart": 1631, + "commentStart": 0, "end": 0, "name": "offset", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1640, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1640, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1640, + "commentStart": 0, "end": 0, "name": "offsetY", "start": 0, @@ -2393,14 +2393,14 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "-", "right": { - "commentStart": 1651, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1651, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1651, + "commentStart": 0, "end": 0, "name": "tiefe", "start": 0, @@ -2413,7 +2413,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "/", "right": { - "commentStart": 1659, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2436,10 +2436,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 1612, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1612, + "commentStart": 0, "end": 0, "name": "offsetPlane", "start": 0, @@ -2449,17 +2449,17 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 1612, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1624, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1624, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -2474,10 +2474,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 1596, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1596, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2487,7 +2487,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 1596, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2503,12 +2503,12 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 1666, + "commentStart": 0, "declaration": { - "commentStart": 1666, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1666, + "commentStart": 0, "end": 0, "name": "armBody", "start": 0, @@ -2521,21 +2521,21 @@ description: Result of parsing makeup-mirror.kcl { "type": "LabeledArg", "label": { - "commentStart": 1693, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1702, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1703, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1703, + "commentStart": 0, "end": 0, "name": "offsetX", "start": 0, @@ -2548,10 +2548,10 @@ description: Result of parsing makeup-mirror.kcl }, { "abs_path": false, - "commentStart": 1712, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1712, + "commentStart": 0, "end": 0, "name": "altitude", "start": 0, @@ -2572,7 +2572,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "LabeledArg", "label": { - "commentStart": 1723, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2580,10 +2580,10 @@ description: Result of parsing makeup-mirror.kcl }, "arg": { "abs_path": false, - "commentStart": 1732, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1732, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2598,10 +2598,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 1676, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1676, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -2611,17 +2611,17 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 1676, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1683, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1683, + "commentStart": 0, "end": 0, "name": "armPlane", "start": 0, @@ -2638,7 +2638,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "LabeledArg", "label": { - "commentStart": 1755, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2646,10 +2646,10 @@ description: Result of parsing makeup-mirror.kcl }, "arg": { "abs_path": false, - "commentStart": 1764, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1764, + "commentStart": 0, "end": 0, "name": "tiefe", "start": 0, @@ -2664,10 +2664,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 1747, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1747, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2677,7 +2677,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 1747, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2685,7 +2685,7 @@ description: Result of parsing makeup-mirror.kcl "unlabeled": null } ], - "commentStart": 1676, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2701,12 +2701,12 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 1770, + "commentStart": 0, "declaration": { - "commentStart": 1774, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1774, + "commentStart": 0, "end": 0, "name": "archBody", "start": 0, @@ -2717,17 +2717,17 @@ description: Result of parsing makeup-mirror.kcl { "arguments": [ { - "commentStart": 1800, + "commentStart": 0, "elements": [ { - "commentStart": 1801, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1801, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1801, + "commentStart": 0, "end": 0, "name": "offsetX", "start": 0, @@ -2741,10 +2741,10 @@ description: Result of parsing makeup-mirror.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1811, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1811, + "commentStart": 0, "end": 0, "name": "gestellR", "start": 0, @@ -2761,10 +2761,10 @@ description: Result of parsing makeup-mirror.kcl }, { "abs_path": false, - "commentStart": 1821, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1821, + "commentStart": 0, "end": 0, "name": "altitude", "start": 0, @@ -2783,10 +2783,10 @@ description: Result of parsing makeup-mirror.kcl }, { "abs_path": false, - "commentStart": 1832, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1832, + "commentStart": 0, "end": 0, "name": "armPlane", "start": 0, @@ -2800,10 +2800,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 1785, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1785, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2813,7 +2813,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 1785, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2824,7 +2824,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "LabeledArg", "label": { - "commentStart": 1855, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2832,10 +2832,10 @@ description: Result of parsing makeup-mirror.kcl }, "arg": { "abs_path": false, - "commentStart": 1864, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1864, + "commentStart": 0, "end": 0, "name": "gestellD", "start": 0, @@ -2850,10 +2850,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 1849, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1849, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2863,7 +2863,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 1849, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2873,14 +2873,14 @@ description: Result of parsing makeup-mirror.kcl { "arguments": [ { - "commentStart": 1887, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1898, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1898, + "commentStart": 0, "end": 0, "name": "interior", "start": 0, @@ -2889,14 +2889,14 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1909, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1910, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1910, + "commentStart": 0, "end": 0, "name": "offsetX", "start": 0, @@ -2908,14 +2908,14 @@ description: Result of parsing makeup-mirror.kcl "type": "Name" }, { - "commentStart": 1919, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1919, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1919, + "commentStart": 0, "end": 0, "name": "altitude", "start": 0, @@ -2929,10 +2929,10 @@ description: Result of parsing makeup-mirror.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1930, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1930, + "commentStart": 0, "end": 0, "name": "gestellR", "start": 0, @@ -2955,10 +2955,10 @@ description: Result of parsing makeup-mirror.kcl } }, { - "commentStart": 1950, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1950, + "commentStart": 0, "end": 0, "name": "end", "start": 0, @@ -2967,17 +2967,17 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1956, + "commentStart": 0, "elements": [ { - "commentStart": 1957, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1957, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1957, + "commentStart": 0, "end": 0, "name": "offsetX", "start": 0, @@ -2991,10 +2991,10 @@ description: Result of parsing makeup-mirror.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1967, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1967, + "commentStart": 0, "end": 0, "name": "gestellR", "start": 0, @@ -3011,10 +3011,10 @@ description: Result of parsing makeup-mirror.kcl }, { "abs_path": false, - "commentStart": 1977, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1977, + "commentStart": 0, "end": 0, "name": "altitude", "start": 0, @@ -3038,7 +3038,7 @@ description: Result of parsing makeup-mirror.kcl "type": "ObjectExpression" }, { - "commentStart": 1997, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3047,10 +3047,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 1881, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1881, + "commentStart": 0, "end": 0, "name": "arcTo", "start": 0, @@ -3060,7 +3060,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 1881, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3071,7 +3071,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "LabeledArg", "label": { - "commentStart": 2013, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3079,10 +3079,10 @@ description: Result of parsing makeup-mirror.kcl }, "arg": { "abs_path": false, - "commentStart": 2022, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2022, + "commentStart": 0, "end": 0, "name": "gestellD", "start": 0, @@ -3097,10 +3097,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 2007, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2007, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -3110,7 +3110,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 2007, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3120,14 +3120,14 @@ description: Result of parsing makeup-mirror.kcl { "arguments": [ { - "commentStart": 2045, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 2056, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2056, + "commentStart": 0, "end": 0, "name": "interior", "start": 0, @@ -3136,14 +3136,14 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2067, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 2080, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2080, + "commentStart": 0, "end": 0, "name": "offsetX", "start": 0, @@ -3155,17 +3155,17 @@ description: Result of parsing makeup-mirror.kcl "type": "Name" }, { - "commentStart": 2100, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2100, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2100, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2100, + "commentStart": 0, "end": 0, "name": "altitude", "start": 0, @@ -3179,10 +3179,10 @@ description: Result of parsing makeup-mirror.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 2111, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2111, + "commentStart": 0, "end": 0, "name": "gestellR", "start": 0, @@ -3200,10 +3200,10 @@ description: Result of parsing makeup-mirror.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 2122, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2122, + "commentStart": 0, "end": 0, "name": "gestellD", "start": 0, @@ -3226,10 +3226,10 @@ description: Result of parsing makeup-mirror.kcl } }, { - "commentStart": 2152, + "commentStart": 0, "end": 0, "key": { - "commentStart": 2152, + "commentStart": 0, "end": 0, "name": "end", "start": 0, @@ -3238,12 +3238,12 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 2158, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 2173, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3252,10 +3252,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 2159, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2159, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -3265,7 +3265,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 2159, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3274,7 +3274,7 @@ description: Result of parsing makeup-mirror.kcl { "arguments": [ { - "commentStart": 2191, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3283,10 +3283,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 2177, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2177, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -3296,7 +3296,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 2177, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3315,7 +3315,7 @@ description: Result of parsing makeup-mirror.kcl "type": "ObjectExpression" }, { - "commentStart": 2205, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3324,10 +3324,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 2039, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2039, + "commentStart": 0, "end": 0, "name": "arcTo", "start": 0, @@ -3337,7 +3337,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 2039, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3347,10 +3347,10 @@ description: Result of parsing makeup-mirror.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2215, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2215, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -3360,7 +3360,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 2215, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3371,7 +3371,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "LabeledArg", "label": { - "commentStart": 2238, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3379,10 +3379,10 @@ description: Result of parsing makeup-mirror.kcl }, "arg": { "abs_path": false, - "commentStart": 2247, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2247, + "commentStart": 0, "end": 0, "name": "tiefe", "start": 0, @@ -3397,10 +3397,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 2230, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2230, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3410,7 +3410,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 2230, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3418,7 +3418,7 @@ description: Result of parsing makeup-mirror.kcl "unlabeled": null } ], - "commentStart": 1785, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -3436,10 +3436,10 @@ description: Result of parsing makeup-mirror.kcl { "argument": { "abs_path": false, - "commentStart": 2263, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2263, + "commentStart": 0, "end": 0, "name": "armBody", "start": 0, @@ -3450,20 +3450,20 @@ description: Result of parsing makeup-mirror.kcl "type": "Name", "type": "Name" }, - "commentStart": 2256, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 1581, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 1770, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3477,13 +3477,13 @@ description: Result of parsing makeup-mirror.kcl }, "start": 0 }, - "commentStart": 1510, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 1511, + "commentStart": 0, "end": 0, "name": "plane", "start": 0, @@ -3493,7 +3493,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "Parameter", "identifier": { - "commentStart": 1518, + "commentStart": 0, "end": 0, "name": "offsetX", "start": 0, @@ -3503,7 +3503,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "Parameter", "identifier": { - "commentStart": 1527, + "commentStart": 0, "end": 0, "name": "offsetY", "start": 0, @@ -3513,7 +3513,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "Parameter", "identifier": { - "commentStart": 1536, + "commentStart": 0, "end": 0, "name": "altitude", "start": 0, @@ -3523,7 +3523,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "Parameter", "identifier": { - "commentStart": 1546, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -3533,7 +3533,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "Parameter", "identifier": { - "commentStart": 1554, + "commentStart": 0, "end": 0, "name": "tiefe", "start": 0, @@ -3543,7 +3543,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "Parameter", "identifier": { - "commentStart": 1561, + "commentStart": 0, "end": 0, "name": "gestellR", "start": 0, @@ -3553,7 +3553,7 @@ description: Result of parsing makeup-mirror.kcl { "type": "Parameter", "identifier": { - "commentStart": 1571, + "commentStart": 0, "end": 0, "name": "gestellD", "start": 0, @@ -3580,12 +3580,12 @@ description: Result of parsing makeup-mirror.kcl "type": "VariableDeclaration" }, { - "commentStart": 2272, + "commentStart": 0, "declaration": { - "commentStart": 2274, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2274, + "commentStart": 0, "end": 0, "name": "mirror", "start": 0, @@ -3595,10 +3595,10 @@ description: Result of parsing makeup-mirror.kcl "arguments": [ { "abs_path": false, - "commentStart": 2292, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2292, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -3611,10 +3611,10 @@ description: Result of parsing makeup-mirror.kcl }, { "abs_path": false, - "commentStart": 2296, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2296, + "commentStart": 0, "end": 0, "name": "armLength", "start": 0, @@ -3627,10 +3627,10 @@ description: Result of parsing makeup-mirror.kcl }, { "abs_path": false, - "commentStart": 2307, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2307, + "commentStart": 0, "end": 0, "name": "armLength", "start": 0, @@ -3642,26 +3642,26 @@ description: Result of parsing makeup-mirror.kcl "type": "Name" }, { - "commentStart": 2318, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2318, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2318, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2318, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2318, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2318, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2318, + "commentStart": 0, "end": 0, "name": "hingeHeight", "start": 0, @@ -3674,7 +3674,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "*", "right": { - "commentStart": 2332, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -3691,14 +3691,14 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "+", "right": { - "commentStart": 2336, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2336, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2336, + "commentStart": 0, "end": 0, "name": "hingeGap", "start": 0, @@ -3711,7 +3711,7 @@ description: Result of parsing makeup-mirror.kcl }, "operator": "*", "right": { - "commentStart": 2347, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -3733,10 +3733,10 @@ description: Result of parsing makeup-mirror.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2351, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2351, + "commentStart": 0, "end": 0, "name": "mirrorRadius", "start": 0, @@ -3754,10 +3754,10 @@ description: Result of parsing makeup-mirror.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2366, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2366, + "commentStart": 0, "end": 0, "name": "archToMirrorGap", "start": 0, @@ -3775,10 +3775,10 @@ description: Result of parsing makeup-mirror.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2384, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2384, + "commentStart": 0, "end": 0, "name": "archThickness", "start": 0, @@ -3795,10 +3795,10 @@ description: Result of parsing makeup-mirror.kcl }, { "abs_path": false, - "commentStart": 2399, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2399, + "commentStart": 0, "end": 0, "name": "mirrorRadius", "start": 0, @@ -3811,10 +3811,10 @@ description: Result of parsing makeup-mirror.kcl }, { "abs_path": false, - "commentStart": 2413, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2413, + "commentStart": 0, "end": 0, "name": "mirrorThickness", "start": 0, @@ -3827,10 +3827,10 @@ description: Result of parsing makeup-mirror.kcl }, { "abs_path": false, - "commentStart": 2430, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2430, + "commentStart": 0, "end": 0, "name": "archRadius", "start": 0, @@ -3843,10 +3843,10 @@ description: Result of parsing makeup-mirror.kcl }, { "abs_path": false, - "commentStart": 2442, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2442, + "commentStart": 0, "end": 0, "name": "archThickness", "start": 0, @@ -3860,10 +3860,10 @@ description: Result of parsing makeup-mirror.kcl ], "callee": { "abs_path": false, - "commentStart": 2283, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2283, + "commentStart": 0, "end": 0, "name": "mirrorFn", "start": 0, @@ -3873,7 +3873,7 @@ description: Result of parsing makeup-mirror.kcl "start": 0, "type": "Name" }, - "commentStart": 2283, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3896,7 +3896,7 @@ description: Result of parsing makeup-mirror.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 134, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -3911,10 +3911,10 @@ description: Result of parsing makeup-mirror.kcl ], "properties": [ { - "commentStart": 143, + "commentStart": 0, "end": 0, "key": { - "commentStart": 143, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -3924,10 +3924,10 @@ description: Result of parsing makeup-mirror.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 163, + "commentStart": 0, "end": 0, "name": { - "commentStart": 163, + "commentStart": 0, "end": 0, "name": "mm", "start": 0, @@ -3948,7 +3948,7 @@ description: Result of parsing makeup-mirror.kcl "nonCodeNodes": { "10": [ { - "commentStart": 686, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3959,7 +3959,7 @@ description: Result of parsing makeup-mirror.kcl ], "13": [ { - "commentStart": 830, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3970,7 +3970,7 @@ description: Result of parsing makeup-mirror.kcl ], "15": [ { - "commentStart": 959, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3981,7 +3981,7 @@ description: Result of parsing makeup-mirror.kcl ], "18": [ { - "commentStart": 1337, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3992,7 +3992,7 @@ description: Result of parsing makeup-mirror.kcl ], "21": [ { - "commentStart": 2272, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4004,7 +4004,7 @@ description: Result of parsing makeup-mirror.kcl }, "startNodes": [ { - "commentStart": 166, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ops.snap b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ops.snap index 3f7b5b9d4..ceb7e751e 100644 --- a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/ops.snap @@ -50,7 +50,7 @@ description: Operations executed makeup-mirror.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -70,7 +70,13 @@ description: Operations executed makeup-mirror.kcl "type": "Number", "value": 24.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -114,7 +120,13 @@ description: Operations executed makeup-mirror.kcl "type": "Number", "value": 24.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -133,7 +145,7 @@ description: Operations executed makeup-mirror.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -153,7 +165,13 @@ description: Operations executed makeup-mirror.kcl "type": "Number", "value": 24.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -197,7 +215,13 @@ description: Operations executed makeup-mirror.kcl "type": "Number", "value": 49.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -216,7 +240,7 @@ description: Operations executed makeup-mirror.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -236,7 +260,13 @@ description: Operations executed makeup-mirror.kcl "type": "Number", "value": 24.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -280,7 +310,13 @@ description: Operations executed makeup-mirror.kcl "type": "Number", "value": 24.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -299,7 +335,7 @@ description: Operations executed makeup-mirror.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -319,7 +355,13 @@ description: Operations executed makeup-mirror.kcl "type": "Number", "value": 24.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -363,7 +405,13 @@ description: Operations executed makeup-mirror.kcl "type": "Number", "value": 49.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -382,7 +430,7 @@ description: Operations executed makeup-mirror.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -402,7 +450,13 @@ description: Operations executed makeup-mirror.kcl "type": "Number", "value": 24.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -446,7 +500,13 @@ description: Operations executed makeup-mirror.kcl "type": "Number", "value": 49.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -465,7 +525,7 @@ description: Operations executed makeup-mirror.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -485,7 +545,13 @@ description: Operations executed makeup-mirror.kcl "type": "Number", "value": 24.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -529,7 +595,13 @@ description: Operations executed makeup-mirror.kcl "type": "Number", "value": 73.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -548,7 +620,7 @@ description: Operations executed makeup-mirror.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -568,7 +640,13 @@ description: Operations executed makeup-mirror.kcl "type": "Number", "value": 24.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -607,7 +685,7 @@ description: Operations executed makeup-mirror.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -672,7 +750,7 @@ description: Operations executed makeup-mirror.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -742,7 +820,13 @@ description: Operations executed makeup-mirror.kcl "type": "Number", "value": 165.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -761,7 +845,7 @@ description: Operations executed makeup-mirror.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/program_memory.snap index 37174df9f..392b9807e 100644 --- a/rust/kcl-lib/tests/kcl_samples/makeup-mirror/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/makeup-mirror/program_memory.snap @@ -7,7 +7,13 @@ description: Variables in memory after executing makeup-mirror.kcl "type": "Number", "value": 90.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "archThickness": { @@ -105,22 +111,34 @@ description: Variables in memory after executing makeup-mirror.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -211,22 +229,34 @@ description: Variables in memory after executing makeup-mirror.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -297,7 +327,13 @@ description: Variables in memory after executing makeup-mirror.kcl "type": "Number", "value": 24.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "hingePartA1": { @@ -353,22 +389,34 @@ description: Variables in memory after executing makeup-mirror.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -459,22 +507,34 @@ description: Variables in memory after executing makeup-mirror.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 24.5 + "z": 24.5, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -565,22 +625,34 @@ description: Variables in memory after executing makeup-mirror.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 49.0 + "z": 49.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -671,22 +743,34 @@ description: Variables in memory after executing makeup-mirror.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 24.5 + "z": 24.5, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -777,22 +861,34 @@ description: Variables in memory after executing makeup-mirror.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 49.0 + "z": 49.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -883,22 +979,34 @@ description: Variables in memory after executing makeup-mirror.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 49.0 + "z": 49.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -989,22 +1097,34 @@ description: Variables in memory after executing makeup-mirror.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 73.5 + "z": 73.5, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1108,22 +1228,34 @@ description: Variables in memory after executing makeup-mirror.kcl "origin": { "x": 0.0, "y": -165.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1168,7 +1300,13 @@ description: Variables in memory after executing makeup-mirror.kcl "type": "Number", "value": 85.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "mirrorThickness": { diff --git a/rust/kcl-lib/tests/kcl_samples/mounting-plate/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/mounting-plate/artifact_commands.snap index 327e110dc..41c26c356 100644 --- a/rust/kcl-lib/tests/kcl_samples/mounting-plate/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/mounting-plate/artifact_commands.snap @@ -657,7 +657,8 @@ description: Artifact commands mounting-plate.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/mounting-plate/ast.snap b/rust/kcl-lib/tests/kcl_samples/mounting-plate/ast.snap index b80a51bf7..ff824d874 100644 --- a/rust/kcl-lib/tests/kcl_samples/mounting-plate/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/mounting-plate/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing mounting-plate.kcl "Ok": { "body": [ { - "commentStart": 240, + "commentStart": 0, "declaration": { - "commentStart": 263, + "commentStart": 0, "end": 0, "id": { - "commentStart": 263, + "commentStart": 0, "end": 0, "name": "plateLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 277, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing mounting-plate.kcl "type": "VariableDeclaration" }, { - "commentStart": 280, + "commentStart": 0, "declaration": { - "commentStart": 280, + "commentStart": 0, "end": 0, "id": { - "commentStart": 280, + "commentStart": 0, "end": 0, "name": "plateWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 293, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing mounting-plate.kcl "type": "VariableDeclaration" }, { - "commentStart": 295, + "commentStart": 0, "declaration": { - "commentStart": 295, + "commentStart": 0, "end": 0, "id": { - "commentStart": 295, + "commentStart": 0, "end": 0, "name": "filletRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 310, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing mounting-plate.kcl "type": "VariableDeclaration" }, { - "commentStart": 314, + "commentStart": 0, "declaration": { - "commentStart": 314, + "commentStart": 0, "end": 0, "id": { - "commentStart": 314, + "commentStart": 0, "end": 0, "name": "plateThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 331, + "commentStart": 0, "end": 0, "raw": ".5", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing mounting-plate.kcl "type": "VariableDeclaration" }, { - "commentStart": 334, + "commentStart": 0, "declaration": { - "commentStart": 334, + "commentStart": 0, "end": 0, "id": { - "commentStart": 334, + "commentStart": 0, "end": 0, "name": "centerHoleDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 355, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -174,12 +174,12 @@ description: Result of parsing mounting-plate.kcl "type": "VariableDeclaration" }, { - "commentStart": 356, + "commentStart": 0, "declaration": { - "commentStart": 511, + "commentStart": 0, "end": 0, "id": { - "commentStart": 511, + "commentStart": 0, "end": 0, "name": "rectShape", "start": 0, @@ -189,12 +189,12 @@ description: Result of parsing mounting-plate.kcl "body": { "body": [ { - "commentStart": 536, + "commentStart": 0, "declaration": { - "commentStart": 536, + "commentStart": 0, "end": 0, "id": { - "commentStart": 536, + "commentStart": 0, "end": 0, "name": "rr", "start": 0, @@ -206,10 +206,10 @@ description: Result of parsing mounting-plate.kcl "arguments": [ { "abs_path": false, - "commentStart": 555, + "commentStart": 0, "end": 0, "name": { - "commentStart": 555, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -223,10 +223,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 541, + "commentStart": 0, "end": 0, "name": { - "commentStart": 541, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -236,7 +236,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 541, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -245,17 +245,17 @@ description: Result of parsing mounting-plate.kcl { "arguments": [ { - "commentStart": 581, + "commentStart": 0, "elements": [ { - "commentStart": 582, + "commentStart": 0, "end": 0, "left": { - "commentStart": 582, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 582, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -263,7 +263,7 @@ description: Result of parsing mounting-plate.kcl "type": "Identifier" }, "property": { - "commentStart": 586, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -280,14 +280,14 @@ description: Result of parsing mounting-plate.kcl }, "operator": "-", "right": { - "commentStart": 592, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 592, + "commentStart": 0, "end": 0, "name": { - "commentStart": 592, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -300,7 +300,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 596, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -320,14 +320,14 @@ description: Result of parsing mounting-plate.kcl "type": "BinaryExpression" }, { - "commentStart": 600, + "commentStart": 0, "end": 0, "left": { - "commentStart": 600, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 600, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -335,7 +335,7 @@ description: Result of parsing mounting-plate.kcl "type": "Identifier" }, "property": { - "commentStart": 604, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -352,14 +352,14 @@ description: Result of parsing mounting-plate.kcl }, "operator": "-", "right": { - "commentStart": 610, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 610, + "commentStart": 0, "end": 0, "name": { - "commentStart": 610, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -372,7 +372,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 614, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -398,7 +398,7 @@ description: Result of parsing mounting-plate.kcl "type": "ArrayExpression" }, { - "commentStart": 619, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -407,10 +407,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 566, + "commentStart": 0, "end": 0, "name": { - "commentStart": 566, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -420,7 +420,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 566, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -431,24 +431,24 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 634, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 648, + "commentStart": 0, "elements": [ { - "commentStart": 649, + "commentStart": 0, "end": 0, "left": { - "commentStart": 649, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 649, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -456,7 +456,7 @@ description: Result of parsing mounting-plate.kcl "type": "Identifier" }, "property": { - "commentStart": 653, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -473,14 +473,14 @@ description: Result of parsing mounting-plate.kcl }, "operator": "+", "right": { - "commentStart": 658, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 658, + "commentStart": 0, "end": 0, "name": { - "commentStart": 658, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -493,7 +493,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 662, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -513,14 +513,14 @@ description: Result of parsing mounting-plate.kcl "type": "BinaryExpression" }, { - "commentStart": 665, + "commentStart": 0, "end": 0, "left": { - "commentStart": 665, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 665, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -528,7 +528,7 @@ description: Result of parsing mounting-plate.kcl "type": "Identifier" }, "property": { - "commentStart": 669, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -545,14 +545,14 @@ description: Result of parsing mounting-plate.kcl }, "operator": "-", "right": { - "commentStart": 675, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 675, + "commentStart": 0, "end": 0, "name": { - "commentStart": 675, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -565,7 +565,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 679, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -594,14 +594,14 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 684, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 690, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -612,10 +612,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 629, + "commentStart": 0, "end": 0, "name": { - "commentStart": 629, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -625,7 +625,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 629, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -637,24 +637,24 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 710, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 724, + "commentStart": 0, "elements": [ { - "commentStart": 725, + "commentStart": 0, "end": 0, "left": { - "commentStart": 725, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 725, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -662,7 +662,7 @@ description: Result of parsing mounting-plate.kcl "type": "Identifier" }, "property": { - "commentStart": 729, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -679,14 +679,14 @@ description: Result of parsing mounting-plate.kcl }, "operator": "+", "right": { - "commentStart": 734, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 734, + "commentStart": 0, "end": 0, "name": { - "commentStart": 734, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -699,7 +699,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 738, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -719,14 +719,14 @@ description: Result of parsing mounting-plate.kcl "type": "BinaryExpression" }, { - "commentStart": 741, + "commentStart": 0, "end": 0, "left": { - "commentStart": 741, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 741, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -734,7 +734,7 @@ description: Result of parsing mounting-plate.kcl "type": "Identifier" }, "property": { - "commentStart": 745, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -751,14 +751,14 @@ description: Result of parsing mounting-plate.kcl }, "operator": "+", "right": { - "commentStart": 750, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 750, + "commentStart": 0, "end": 0, "name": { - "commentStart": 750, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -771,7 +771,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 754, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -800,14 +800,14 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 758, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 764, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -818,10 +818,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 705, + "commentStart": 0, "end": 0, "name": { - "commentStart": 705, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -831,7 +831,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 705, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -843,24 +843,24 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 784, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 798, + "commentStart": 0, "elements": [ { - "commentStart": 799, + "commentStart": 0, "end": 0, "left": { - "commentStart": 799, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 799, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -868,7 +868,7 @@ description: Result of parsing mounting-plate.kcl "type": "Identifier" }, "property": { - "commentStart": 803, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -885,14 +885,14 @@ description: Result of parsing mounting-plate.kcl }, "operator": "-", "right": { - "commentStart": 809, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 809, + "commentStart": 0, "end": 0, "name": { - "commentStart": 809, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -905,7 +905,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 813, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -925,14 +925,14 @@ description: Result of parsing mounting-plate.kcl "type": "BinaryExpression" }, { - "commentStart": 817, + "commentStart": 0, "end": 0, "left": { - "commentStart": 817, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 817, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -940,7 +940,7 @@ description: Result of parsing mounting-plate.kcl "type": "Identifier" }, "property": { - "commentStart": 821, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -957,14 +957,14 @@ description: Result of parsing mounting-plate.kcl }, "operator": "+", "right": { - "commentStart": 826, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 826, + "commentStart": 0, "end": 0, "name": { - "commentStart": 826, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -977,7 +977,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 830, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1006,14 +1006,14 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 834, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 840, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1024,10 +1024,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 779, + "commentStart": 0, "end": 0, "name": { - "commentStart": 779, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1037,7 +1037,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 779, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1049,14 +1049,14 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 861, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 867, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1067,10 +1067,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 855, + "commentStart": 0, "end": 0, "name": { - "commentStart": 855, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1080,7 +1080,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 855, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1088,7 +1088,7 @@ description: Result of parsing mounting-plate.kcl "unlabeled": null } ], - "commentStart": 541, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1106,10 +1106,10 @@ description: Result of parsing mounting-plate.kcl { "argument": { "abs_path": false, - "commentStart": 884, + "commentStart": 0, "end": 0, "name": { - "commentStart": 884, + "commentStart": 0, "end": 0, "name": "rr", "start": 0, @@ -1120,24 +1120,24 @@ description: Result of parsing mounting-plate.kcl "type": "Name", "type": "Name" }, - "commentStart": 877, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 532, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 520, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 521, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -1147,7 +1147,7 @@ description: Result of parsing mounting-plate.kcl { "type": "Parameter", "identifier": { - "commentStart": 526, + "commentStart": 0, "end": 0, "name": "w", "start": 0, @@ -1157,7 +1157,7 @@ description: Result of parsing mounting-plate.kcl { "type": "Parameter", "identifier": { - "commentStart": 529, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -1184,19 +1184,19 @@ description: Result of parsing mounting-plate.kcl "type": "VariableDeclaration" }, { - "commentStart": 888, + "commentStart": 0, "declaration": { - "commentStart": 944, + "commentStart": 0, "end": 0, "id": { - "commentStart": 944, + "commentStart": 0, "end": 0, "name": "holeRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 957, + "commentStart": 0, "end": 0, "raw": ".25", "start": 0, @@ -1222,19 +1222,19 @@ description: Result of parsing mounting-plate.kcl "type": "VariableDeclaration" }, { - "commentStart": 961, + "commentStart": 0, "declaration": { - "commentStart": 961, + "commentStart": 0, "end": 0, "id": { - "commentStart": 961, + "commentStart": 0, "end": 0, "name": "holeIndex", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 973, + "commentStart": 0, "end": 0, "raw": ".75", "start": 0, @@ -1255,12 +1255,12 @@ description: Result of parsing mounting-plate.kcl "type": "VariableDeclaration" }, { - "commentStart": 976, + "commentStart": 0, "declaration": { - "commentStart": 1037, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1037, + "commentStart": 0, "end": 0, "name": "rs", "start": 0, @@ -1269,10 +1269,10 @@ description: Result of parsing mounting-plate.kcl "init": { "arguments": [ { - "commentStart": 1052, + "commentStart": 0, "elements": [ { - "commentStart": 1053, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1284,7 +1284,7 @@ description: Result of parsing mounting-plate.kcl } }, { - "commentStart": 1056, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1303,10 +1303,10 @@ description: Result of parsing mounting-plate.kcl }, { "abs_path": false, - "commentStart": 1060, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1060, + "commentStart": 0, "end": 0, "name": "plateWidth", "start": 0, @@ -1319,10 +1319,10 @@ description: Result of parsing mounting-plate.kcl }, { "abs_path": false, - "commentStart": 1072, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1072, + "commentStart": 0, "end": 0, "name": "plateLength", "start": 0, @@ -1336,10 +1336,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 1042, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1042, + "commentStart": 0, "end": 0, "name": "rectShape", "start": 0, @@ -1349,7 +1349,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 1042, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1370,12 +1370,12 @@ description: Result of parsing mounting-plate.kcl "type": "VariableDeclaration" }, { - "commentStart": 1085, + "commentStart": 0, "declaration": { - "commentStart": 1085, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1085, + "commentStart": 0, "end": 0, "name": "part", "start": 0, @@ -1385,10 +1385,10 @@ description: Result of parsing mounting-plate.kcl "body": [ { "abs_path": false, - "commentStart": 1092, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1092, + "commentStart": 0, "end": 0, "name": "rs", "start": 0, @@ -1406,28 +1406,28 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1120, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1129, + "commentStart": 0, "elements": [ { - "commentStart": 1140, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1140, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1141, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1141, + "commentStart": 0, "end": 0, "name": "plateWidth", "start": 0, @@ -1438,7 +1438,7 @@ description: Result of parsing mounting-plate.kcl "type": "Name", "type": "Name" }, - "commentStart": 1140, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1447,7 +1447,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 1154, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1465,10 +1465,10 @@ description: Result of parsing mounting-plate.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1158, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1158, + "commentStart": 0, "end": 0, "name": "holeIndex", "start": 0, @@ -1484,17 +1484,17 @@ description: Result of parsing mounting-plate.kcl "type": "BinaryExpression" }, { - "commentStart": 1178, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1178, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1178, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1178, + "commentStart": 0, "end": 0, "name": "plateLength", "start": 0, @@ -1507,7 +1507,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 1192, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1525,10 +1525,10 @@ description: Result of parsing mounting-plate.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1196, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1196, + "commentStart": 0, "end": 0, "name": "holeIndex", "start": 0, @@ -1553,7 +1553,7 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1223, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -1561,10 +1561,10 @@ description: Result of parsing mounting-plate.kcl }, "arg": { "abs_path": false, - "commentStart": 1232, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1232, + "commentStart": 0, "end": 0, "name": "holeRadius", "start": 0, @@ -1579,10 +1579,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 1105, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1105, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1592,7 +1592,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 1105, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1600,7 +1600,7 @@ description: Result of parsing mounting-plate.kcl "unlabeled": null }, { - "commentStart": 1252, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1609,10 +1609,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 1100, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1100, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -1622,7 +1622,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 1100, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1635,27 +1635,27 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1280, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1289, + "commentStart": 0, "elements": [ { - "commentStart": 1300, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1300, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1300, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1300, + "commentStart": 0, "end": 0, "name": "plateWidth", "start": 0, @@ -1668,7 +1668,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 1313, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1686,10 +1686,10 @@ description: Result of parsing mounting-plate.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1317, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1317, + "commentStart": 0, "end": 0, "name": "holeIndex", "start": 0, @@ -1705,17 +1705,17 @@ description: Result of parsing mounting-plate.kcl "type": "BinaryExpression" }, { - "commentStart": 1337, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1337, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1337, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1337, + "commentStart": 0, "end": 0, "name": "plateLength", "start": 0, @@ -1728,7 +1728,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 1351, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1746,10 +1746,10 @@ description: Result of parsing mounting-plate.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1355, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1355, + "commentStart": 0, "end": 0, "name": "holeIndex", "start": 0, @@ -1774,7 +1774,7 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1382, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -1782,10 +1782,10 @@ description: Result of parsing mounting-plate.kcl }, "arg": { "abs_path": false, - "commentStart": 1391, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1391, + "commentStart": 0, "end": 0, "name": "holeRadius", "start": 0, @@ -1800,10 +1800,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 1265, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1265, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1813,7 +1813,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 1265, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1821,7 +1821,7 @@ description: Result of parsing mounting-plate.kcl "unlabeled": null }, { - "commentStart": 1411, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1830,10 +1830,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 1260, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1260, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -1843,7 +1843,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 1260, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1856,28 +1856,28 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1439, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1448, + "commentStart": 0, "elements": [ { - "commentStart": 1459, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1459, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1460, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1460, + "commentStart": 0, "end": 0, "name": "plateWidth", "start": 0, @@ -1888,7 +1888,7 @@ description: Result of parsing mounting-plate.kcl "type": "Name", "type": "Name" }, - "commentStart": 1459, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1897,7 +1897,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 1473, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1915,10 +1915,10 @@ description: Result of parsing mounting-plate.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1477, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1477, + "commentStart": 0, "end": 0, "name": "holeIndex", "start": 0, @@ -1934,18 +1934,18 @@ description: Result of parsing mounting-plate.kcl "type": "BinaryExpression" }, { - "commentStart": 1497, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1497, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1498, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1498, + "commentStart": 0, "end": 0, "name": "plateLength", "start": 0, @@ -1956,7 +1956,7 @@ description: Result of parsing mounting-plate.kcl "type": "Name", "type": "Name" }, - "commentStart": 1497, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1965,7 +1965,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 1512, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1983,10 +1983,10 @@ description: Result of parsing mounting-plate.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1516, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1516, + "commentStart": 0, "end": 0, "name": "holeIndex", "start": 0, @@ -2011,7 +2011,7 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1543, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2019,10 +2019,10 @@ description: Result of parsing mounting-plate.kcl }, "arg": { "abs_path": false, - "commentStart": 1552, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1552, + "commentStart": 0, "end": 0, "name": "holeRadius", "start": 0, @@ -2037,10 +2037,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 1424, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1424, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -2050,7 +2050,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 1424, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2058,7 +2058,7 @@ description: Result of parsing mounting-plate.kcl "unlabeled": null }, { - "commentStart": 1572, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2067,10 +2067,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 1419, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1419, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -2080,7 +2080,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 1419, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2093,27 +2093,27 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1600, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1609, + "commentStart": 0, "elements": [ { - "commentStart": 1620, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1620, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1620, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1620, + "commentStart": 0, "end": 0, "name": "plateWidth", "start": 0, @@ -2126,7 +2126,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 1633, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2144,10 +2144,10 @@ description: Result of parsing mounting-plate.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1637, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1637, + "commentStart": 0, "end": 0, "name": "holeIndex", "start": 0, @@ -2163,18 +2163,18 @@ description: Result of parsing mounting-plate.kcl "type": "BinaryExpression" }, { - "commentStart": 1657, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1657, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1658, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1658, + "commentStart": 0, "end": 0, "name": "plateLength", "start": 0, @@ -2185,7 +2185,7 @@ description: Result of parsing mounting-plate.kcl "type": "Name", "type": "Name" }, - "commentStart": 1657, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2194,7 +2194,7 @@ description: Result of parsing mounting-plate.kcl }, "operator": "/", "right": { - "commentStart": 1672, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2212,10 +2212,10 @@ description: Result of parsing mounting-plate.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1676, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1676, + "commentStart": 0, "end": 0, "name": "holeIndex", "start": 0, @@ -2240,7 +2240,7 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1703, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2248,10 +2248,10 @@ description: Result of parsing mounting-plate.kcl }, "arg": { "abs_path": false, - "commentStart": 1712, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1712, + "commentStart": 0, "end": 0, "name": "holeRadius", "start": 0, @@ -2266,10 +2266,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 1585, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1585, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -2279,7 +2279,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 1585, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2287,7 +2287,7 @@ description: Result of parsing mounting-plate.kcl "unlabeled": null }, { - "commentStart": 1732, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2296,10 +2296,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 1580, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1580, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -2309,7 +2309,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 1580, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2322,17 +2322,17 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1752, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1761, + "commentStart": 0, "elements": [ { - "commentStart": 1762, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2344,7 +2344,7 @@ description: Result of parsing mounting-plate.kcl } }, { - "commentStart": 1765, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2365,7 +2365,7 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1769, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2373,10 +2373,10 @@ description: Result of parsing mounting-plate.kcl }, "arg": { "abs_path": false, - "commentStart": 1778, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1778, + "commentStart": 0, "end": 0, "name": "centerHoleDiameter", "start": 0, @@ -2391,10 +2391,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 1745, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1745, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -2404,7 +2404,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 1745, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2412,7 +2412,7 @@ description: Result of parsing mounting-plate.kcl "unlabeled": null }, { - "commentStart": 1799, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2421,10 +2421,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 1740, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1740, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -2434,7 +2434,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 1740, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2445,7 +2445,7 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1815, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2453,10 +2453,10 @@ description: Result of parsing mounting-plate.kcl }, "arg": { "abs_path": false, - "commentStart": 1824, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1824, + "commentStart": 0, "end": 0, "name": "plateThickness", "start": 0, @@ -2471,10 +2471,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 1807, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1807, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2484,7 +2484,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 1807, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2496,7 +2496,7 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1860, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2504,10 +2504,10 @@ description: Result of parsing mounting-plate.kcl }, "arg": { "abs_path": false, - "commentStart": 1869, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1869, + "commentStart": 0, "end": 0, "name": "filletRadius", "start": 0, @@ -2522,27 +2522,27 @@ description: Result of parsing mounting-plate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1890, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1897, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1932, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1932, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1932, + "commentStart": 0, "end": 0, "name": "rs", "start": 0, @@ -2550,7 +2550,7 @@ description: Result of parsing mounting-plate.kcl "type": "Identifier" }, "property": { - "commentStart": 1935, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -2562,7 +2562,7 @@ description: Result of parsing mounting-plate.kcl "type": "MemberExpression" }, "property": { - "commentStart": 1940, + "commentStart": 0, "end": 0, "name": "edge1", "start": 0, @@ -2576,10 +2576,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 1908, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1908, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -2589,7 +2589,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 1908, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2598,15 +2598,15 @@ description: Result of parsing mounting-plate.kcl { "arguments": [ { - "commentStart": 1981, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1981, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 1981, + "commentStart": 0, "end": 0, "name": "rs", "start": 0, @@ -2614,7 +2614,7 @@ description: Result of parsing mounting-plate.kcl "type": "Identifier" }, "property": { - "commentStart": 1984, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -2626,7 +2626,7 @@ description: Result of parsing mounting-plate.kcl "type": "MemberExpression" }, "property": { - "commentStart": 1989, + "commentStart": 0, "end": 0, "name": "edge2", "start": 0, @@ -2640,10 +2640,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 1957, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1957, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -2653,7 +2653,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 1957, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2662,15 +2662,15 @@ description: Result of parsing mounting-plate.kcl { "arguments": [ { - "commentStart": 2030, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 2030, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 2030, + "commentStart": 0, "end": 0, "name": "rs", "start": 0, @@ -2678,7 +2678,7 @@ description: Result of parsing mounting-plate.kcl "type": "Identifier" }, "property": { - "commentStart": 2033, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -2690,7 +2690,7 @@ description: Result of parsing mounting-plate.kcl "type": "MemberExpression" }, "property": { - "commentStart": 2038, + "commentStart": 0, "end": 0, "name": "edge3", "start": 0, @@ -2704,10 +2704,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 2006, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2006, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -2717,7 +2717,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 2006, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2726,15 +2726,15 @@ description: Result of parsing mounting-plate.kcl { "arguments": [ { - "commentStart": 2079, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 2079, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 2079, + "commentStart": 0, "end": 0, "name": "rs", "start": 0, @@ -2742,7 +2742,7 @@ description: Result of parsing mounting-plate.kcl "type": "Identifier" }, "property": { - "commentStart": 2082, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -2754,7 +2754,7 @@ description: Result of parsing mounting-plate.kcl "type": "MemberExpression" }, "property": { - "commentStart": 2087, + "commentStart": 0, "end": 0, "name": "edge4", "start": 0, @@ -2768,10 +2768,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 2055, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2055, + "commentStart": 0, "end": 0, "name": "getPreviousAdjacentEdge", "start": 0, @@ -2781,7 +2781,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 2055, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2797,10 +2797,10 @@ description: Result of parsing mounting-plate.kcl ], "callee": { "abs_path": false, - "commentStart": 1845, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1845, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -2810,7 +2810,7 @@ description: Result of parsing mounting-plate.kcl "start": 0, "type": "Name" }, - "commentStart": 1845, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2818,7 +2818,7 @@ description: Result of parsing mounting-plate.kcl "unlabeled": null } ], - "commentStart": 1092, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2841,7 +2841,7 @@ description: Result of parsing mounting-plate.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 208, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -2856,10 +2856,10 @@ description: Result of parsing mounting-plate.kcl ], "properties": [ { - "commentStart": 217, + "commentStart": 0, "end": 0, "key": { - "commentStart": 217, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -2869,10 +2869,10 @@ description: Result of parsing mounting-plate.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 237, + "commentStart": 0, "end": 0, "name": { - "commentStart": 237, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -2893,7 +2893,7 @@ description: Result of parsing mounting-plate.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 240, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/mounting-plate/ops.snap b/rust/kcl-lib/tests/kcl_samples/mounting-plate/ops.snap index 9e60d9709..546639cd9 100644 --- a/rust/kcl-lib/tests/kcl_samples/mounting-plate/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/mounting-plate/ops.snap @@ -20,7 +20,7 @@ description: Operations executed mounting-plate.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/kcl_samples/mounting-plate/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/mounting-plate/program_memory.snap index ea4fa9f24..a89a83a66 100644 --- a/rust/kcl-lib/tests/kcl_samples/mounting-plate/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/mounting-plate/program_memory.snap @@ -248,22 +248,34 @@ description: Variables in memory after executing mounting-plate.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -318,28 +330,72 @@ description: Variables in memory after executing mounting-plate.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -506,22 +562,34 @@ description: Variables in memory after executing mounting-plate.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" diff --git a/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/artifact_commands.snap index 8ad94c113..a3b8642dc 100644 --- a/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/artifact_commands.snap @@ -212,7 +212,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -498,7 +499,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 3.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -658,7 +660,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -817,7 +820,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": -0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -883,7 +887,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": -0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -949,7 +954,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": -0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1015,7 +1021,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": -0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1174,7 +1181,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": -0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1240,7 +1248,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": -0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1306,7 +1315,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": -0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1372,7 +1382,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": -0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1619,7 +1630,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 1.4, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1868,7 +1880,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2066,7 +2079,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 1.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2247,7 +2261,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.2, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2313,7 +2328,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.2, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2379,7 +2395,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.2, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2445,7 +2462,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.2, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2583,7 +2601,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2781,7 +2800,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": -1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3070,7 +3090,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": -2.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3268,7 +3289,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3428,7 +3450,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3609,7 +3632,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3675,7 +3699,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3741,7 +3766,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3807,7 +3833,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3873,7 +3900,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3939,7 +3967,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4005,7 +4034,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4071,7 +4101,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4230,7 +4261,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4296,7 +4328,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4362,7 +4395,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4428,7 +4462,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4566,7 +4601,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4830,7 +4866,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 2.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5028,7 +5065,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5209,7 +5247,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5275,7 +5314,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5341,7 +5381,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5407,7 +5448,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5473,7 +5515,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5539,7 +5582,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5605,7 +5649,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5671,7 +5716,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": 0.15, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5809,7 +5855,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": -0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -5947,7 +5994,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": -0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6085,7 +6133,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": -0.01, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6325,7 +6374,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": -1.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -6685,7 +6735,8 @@ description: Artifact commands multi-axis-robot.kcl "type": "extrude", "target": "[uuid]", "distance": -1.5, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/artifact_graph_flowchart.snap.md index ee2173e4c..32a47ae91 100644 --- a/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/artifact_graph_flowchart.snap.md @@ -2,31 +2,31 @@ flowchart LR subgraph path2 [Path] 2["Path
[224, 279, 5]"] - 3["Segment
[285, 347, 5]"] - 4["Segment
[353, 468, 5]"] - 5["Segment
[474, 594, 5]"] - 6["Segment
[600, 685, 5]"] - 7["Segment
[691, 698, 5]"] + 3["Segment
[285, 365, 5]"] + 4["Segment
[371, 483, 5]"] + 5["Segment
[489, 606, 5]"] + 6["Segment
[612, 697, 5]"] + 7["Segment
[703, 710, 5]"] 8[Solid2d] end subgraph path28 [Path] - 28["Path
[1134, 1191, 5]"] - 29["Segment
[1134, 1191, 5]"] + 28["Path
[1151, 1208, 5]"] + 29["Segment
[1151, 1208, 5]"] 30[Solid2d] end subgraph path36 [Path] - 36["Path
[1389, 1426, 5]"] - 37["Segment
[1389, 1426, 5]"] + 36["Path
[1411, 1448, 5]"] + 37["Segment
[1411, 1448, 5]"] 38[Solid2d] end subgraph path44 [Path] - 44["Path
[1558, 1698, 5]"] - 45["Segment
[1558, 1698, 5]"] + 44["Path
[1585, 1725, 5]"] + 45["Segment
[1585, 1725, 5]"] 46[Solid2d] end subgraph path54 [Path] - 54["Path
[1944, 2084, 5]"] - 55["Segment
[1944, 2084, 5]"] + 54["Path
[1976, 2116, 5]"] + 55["Segment
[1976, 2116, 5]"] 56[Solid2d] end subgraph path65 [Path] @@ -36,127 +36,127 @@ flowchart LR end subgraph path75 [Path] 75["Path
[493, 529, 6]"] - 76["Segment
[535, 579, 6]"] - 77["Segment
[585, 673, 6]"] - 78["Segment
[679, 728, 6]"] - 79["Segment
[734, 790, 6]"] - 80["Segment
[796, 803, 6]"] + 76["Segment
[535, 572, 6]"] + 77["Segment
[578, 666, 6]"] + 78["Segment
[672, 721, 6]"] + 79["Segment
[727, 783, 6]"] + 80["Segment
[789, 796, 6]"] 81[Solid2d] end subgraph path97 [Path] - 97["Path
[900, 1075, 6]"] - 98["Segment
[900, 1075, 6]"] + 97["Path
[898, 1073, 6]"] + 98["Segment
[898, 1073, 6]"] 99[Solid2d] end subgraph path105 [Path] - 105["Path
[1279, 1426, 6]"] - 106["Segment
[1279, 1426, 6]"] + 105["Path
[1282, 1429, 6]"] + 106["Segment
[1282, 1429, 6]"] 107[Solid2d] end subgraph path116 [Path] - 116["Path
[1743, 1917, 6]"] - 117["Segment
[1743, 1917, 6]"] + 116["Path
[1751, 1925, 6]"] + 117["Segment
[1751, 1925, 6]"] 118[Solid2d] end subgraph path125 [Path] - 125["Path
[2142, 2182, 6]"] - 126["Segment
[2142, 2182, 6]"] + 125["Path
[2150, 2190, 6]"] + 126["Segment
[2150, 2190, 6]"] 127[Solid2d] end subgraph path137 [Path] 137["Path
[251, 394, 7]"] 138["Segment
[400, 516, 7]"] - 139["Segment
[522, 600, 7]"] - 140["Segment
[606, 722, 7]"] - 141["Segment
[728, 784, 7]"] - 142["Segment
[790, 797, 7]"] + 139["Segment
[522, 574, 7]"] + 140["Segment
[580, 696, 7]"] + 141["Segment
[702, 758, 7]"] + 142["Segment
[764, 771, 7]"] 143[Solid2d] end subgraph path159 [Path] - 159["Path
[913, 977, 7]"] - 160["Segment
[913, 977, 7]"] + 159["Path
[892, 956, 7]"] + 160["Segment
[892, 956, 7]"] 161[Solid2d] end subgraph path167 [Path] - 167["Path
[1146, 1354, 7]"] - 168["Segment
[1146, 1354, 7]"] + 167["Path
[1130, 1338, 7]"] + 168["Segment
[1130, 1338, 7]"] 169[Solid2d] end subgraph path175 [Path] - 175["Path
[1557, 1601, 7]"] - 176["Segment
[1557, 1601, 7]"] + 175["Path
[1546, 1590, 7]"] + 176["Segment
[1546, 1590, 7]"] 177[Solid2d] end subgraph path190 [Path] - 190["Path
[1839, 2031, 7]"] - 191["Segment
[1839, 2031, 7]"] + 190["Path
[1833, 2025, 7]"] + 191["Segment
[1833, 2025, 7]"] 192[Solid2d] end subgraph path201 [Path] - 201["Path
[2384, 2559, 7]"] - 202["Segment
[2384, 2559, 7]"] + 201["Path
[2383, 2558, 7]"] + 202["Segment
[2383, 2558, 7]"] 203[Solid2d] end subgraph path210 [Path] 210["Path
[271, 504, 8]"] 211["Segment
[510, 629, 8]"] - 212["Segment
[635, 715, 8]"] - 213["Segment
[721, 840, 8]"] - 214["Segment
[846, 916, 8]"] - 215["Segment
[922, 929, 8]"] + 212["Segment
[635, 689, 8]"] + 213["Segment
[695, 814, 8]"] + 214["Segment
[820, 890, 8]"] + 215["Segment
[896, 903, 8]"] 216[Solid2d] end subgraph path232 [Path] - 232["Path
[1043, 1252, 8]"] - 233["Segment
[1043, 1252, 8]"] + 232["Path
[1022, 1231, 8]"] + 233["Segment
[1022, 1231, 8]"] 234[Solid2d] end subgraph path240 [Path] - 240["Path
[1457, 1646, 8]"] - 241["Segment
[1457, 1646, 8]"] + 240["Path
[1441, 1630, 8]"] + 241["Segment
[1441, 1630, 8]"] 242[Solid2d] end subgraph path255 [Path] - 255["Path
[2067, 2353, 8]"] - 256["Segment
[2067, 2353, 8]"] + 255["Path
[2056, 2342, 8]"] + 256["Segment
[2056, 2342, 8]"] 257[Solid2d] end subgraph path264 [Path] - 264["Path
[2452, 2736, 8]"] - 265["Segment
[2452, 2736, 8]"] + 264["Path
[2446, 2730, 8]"] + 265["Segment
[2446, 2730, 8]"] 266[Solid2d] end subgraph path273 [Path] - 273["Path
[2890, 2928, 8]"] - 274["Segment
[2890, 2928, 8]"] + 273["Path
[2889, 2927, 8]"] + 274["Segment
[2889, 2927, 8]"] 275[Solid2d] end subgraph path282 [Path] - 282["Path
[3058, 3283, 8]"] - 283["Segment
[3289, 3383, 8]"] - 284["Segment
[3389, 3532, 8]"] - 285["Segment
[3538, 3632, 8]"] - 286["Segment
[3638, 3740, 8]"] - 287["Segment
[3746, 3848, 8]"] - 288["Segment
[3854, 3954, 8]"] - 289["Segment
[3960, 4016, 8]"] - 290["Segment
[4022, 4029, 8]"] + 282["Path
[3062, 3287, 8]"] + 283["Segment
[3293, 3361, 8]"] + 284["Segment
[3367, 3510, 8]"] + 285["Segment
[3516, 3584, 8]"] + 286["Segment
[3590, 3666, 8]"] + 287["Segment
[3672, 3748, 8]"] + 288["Segment
[3754, 3828, 8]"] + 289["Segment
[3834, 3890, 8]"] + 290["Segment
[3896, 3903, 8]"] 291[Solid2d] end subgraph path316 [Path] - 316["Path
[4158, 4383, 8]"] - 317["Segment
[4389, 4485, 8]"] - 318["Segment
[4491, 4639, 8]"] - 319["Segment
[4645, 4741, 8]"] - 320["Segment
[4747, 4851, 8]"] - 321["Segment
[4857, 4961, 8]"] - 322["Segment
[4967, 5069, 8]"] - 323["Segment
[5075, 5131, 8]"] - 324["Segment
[5137, 5144, 8]"] + 316["Path
[4037, 4262, 8]"] + 317["Segment
[4268, 4338, 8]"] + 318["Segment
[4344, 4492, 8]"] + 319["Segment
[4498, 4568, 8]"] + 320["Segment
[4574, 4652, 8]"] + 321["Segment
[4658, 4736, 8]"] + 322["Segment
[4742, 4818, 8]"] + 323["Segment
[4824, 4880, 8]"] + 324["Segment
[4886, 4893, 8]"] 325[Solid2d] end 1["Plane
[201, 218, 5]"] - 9["Sweep Extrusion
[712, 759, 5]"] + 9["Sweep Extrusion
[724, 771, 5]"] 10[Wall] 11[Wall] 12[Wall] @@ -171,34 +171,34 @@ flowchart LR 21["SweepEdge Adjacent"] 22["SweepEdge Opposite"] 23["SweepEdge Adjacent"] - 24["EdgeCut Chamfer
[765, 1042, 5]"] - 25["EdgeCut Chamfer
[765, 1042, 5]"] - 26["EdgeCut Chamfer
[765, 1042, 5]"] - 27["EdgeCut Chamfer
[765, 1042, 5]"] - 31["Sweep Extrusion
[1205, 1271, 5]"] + 24["EdgeCut Chamfer
[777, 1054, 5]"] + 25["EdgeCut Chamfer
[777, 1054, 5]"] + 26["EdgeCut Chamfer
[777, 1054, 5]"] + 27["EdgeCut Chamfer
[777, 1054, 5]"] + 31["Sweep Extrusion
[1222, 1288, 5]"] 32[Wall] 33["Cap End"] 34["SweepEdge Opposite"] 35["SweepEdge Adjacent"] - 39["Sweep Extrusion
[1440, 1470, 5]"] + 39["Sweep Extrusion
[1462, 1492, 5]"] 40[Wall] 41["Cap End"] 42["SweepEdge Opposite"] 43["SweepEdge Adjacent"] - 47["Sweep Extrusion
[1846, 1893, 5]"] + 47["Sweep Extrusion
[1873, 1920, 5]"] 48[Wall] 49["SweepEdge Opposite"] 50["SweepEdge Adjacent"] - 51["Sweep Extrusion
[1846, 1893, 5]"] - 52["Sweep Extrusion
[1846, 1893, 5]"] - 53["Sweep Extrusion
[1846, 1893, 5]"] - 57["Sweep Extrusion
[2220, 2267, 5]"] + 51["Sweep Extrusion
[1873, 1920, 5]"] + 52["Sweep Extrusion
[1873, 1920, 5]"] + 53["Sweep Extrusion
[1873, 1920, 5]"] + 57["Sweep Extrusion
[2252, 2299, 5]"] 58[Wall] 59["SweepEdge Opposite"] 60["SweepEdge Adjacent"] - 61["Sweep Extrusion
[2220, 2267, 5]"] - 62["Sweep Extrusion
[2220, 2267, 5]"] - 63["Sweep Extrusion
[2220, 2267, 5]"] + 61["Sweep Extrusion
[2252, 2299, 5]"] + 62["Sweep Extrusion
[2252, 2299, 5]"] + 63["Sweep Extrusion
[2252, 2299, 5]"] 64["Plane
[174, 197, 6]"] 68["Sweep Extrusion
[277, 315, 6]"] 69[Wall] @@ -207,7 +207,7 @@ flowchart LR 72["SweepEdge Opposite"] 73["SweepEdge Adjacent"] 74["Plane
[464, 487, 6]"] - 82["Sweep Extrusion
[818, 848, 6]"] + 82["Sweep Extrusion
[811, 841, 6]"] 83[Wall] 84[Wall] 85[Wall] @@ -222,35 +222,35 @@ flowchart LR 94["SweepEdge Adjacent"] 95["SweepEdge Opposite"] 96["SweepEdge Adjacent"] - 100["Sweep Extrusion
[1089, 1121, 6]"] + 100["Sweep Extrusion
[1087, 1119, 6]"] 101[Wall] 102["Cap End"] 103["SweepEdge Opposite"] 104["SweepEdge Adjacent"] - 108["Sweep Extrusion
[1659, 1691, 6]"] + 108["Sweep Extrusion
[1662, 1694, 6]"] 109[Wall] 110["Cap End"] 111["SweepEdge Opposite"] 112["SweepEdge Adjacent"] - 113["Sweep Extrusion
[1659, 1691, 6]"] - 114["Sweep Extrusion
[1659, 1691, 6]"] - 115["Sweep Extrusion
[1659, 1691, 6]"] - 119["Sweep Extrusion
[1931, 1964, 6]"] + 113["Sweep Extrusion
[1662, 1694, 6]"] + 114["Sweep Extrusion
[1662, 1694, 6]"] + 115["Sweep Extrusion
[1662, 1694, 6]"] + 119["Sweep Extrusion
[1939, 1972, 6]"] 120[Wall] 121["Cap End"] 122["SweepEdge Opposite"] 123["SweepEdge Adjacent"] - 124["Plane
[2113, 2136, 6]"] - 128["Sweep Extrusion
[2184, 2215, 6]"] + 124["Plane
[2121, 2144, 6]"] + 128["Sweep Extrusion
[2192, 2223, 6]"] 129[Wall] 130["Cap Start"] 131["Cap End"] 132["SweepEdge Opposite"] 133["SweepEdge Adjacent"] 134["EdgeCut Fillet
[321, 383, 6]"] - 135["EdgeCut Fillet
[1970, 2032, 6]"] + 135["EdgeCut Fillet
[1978, 2040, 6]"] 136["Plane
[222, 245, 7]"] - 144["Sweep Extrusion
[811, 859, 7]"] + 144["Sweep Extrusion
[785, 833, 7]"] 145[Wall] 146[Wall] 147[Wall] @@ -265,43 +265,43 @@ flowchart LR 156["SweepEdge Adjacent"] 157["SweepEdge Opposite"] 158["SweepEdge Adjacent"] - 162["Sweep Extrusion
[992, 1025, 7]"] + 162["Sweep Extrusion
[971, 1004, 7]"] 163[Wall] 164["Cap End"] 165["SweepEdge Opposite"] 166["SweepEdge Adjacent"] - 170["Sweep Extrusion
[1369, 1399, 7]"] + 170["Sweep Extrusion
[1353, 1383, 7]"] 171[Wall] 172["Cap End"] 173["SweepEdge Opposite"] 174["SweepEdge Adjacent"] - 178["Sweep Extrusion
[1754, 1787, 7]"] + 178["Sweep Extrusion
[1743, 1776, 7]"] 179[Wall] 180["Cap End"] 181["SweepEdge Opposite"] 182["SweepEdge Adjacent"] - 183["Sweep Extrusion
[1754, 1787, 7]"] - 184["Sweep Extrusion
[1754, 1787, 7]"] - 185["Sweep Extrusion
[1754, 1787, 7]"] - 186["Sweep Extrusion
[1754, 1787, 7]"] - 187["Sweep Extrusion
[1754, 1787, 7]"] - 188["Sweep Extrusion
[1754, 1787, 7]"] - 189["Sweep Extrusion
[1754, 1787, 7]"] - 193["Sweep Extrusion
[2299, 2332, 7]"] + 183["Sweep Extrusion
[1743, 1776, 7]"] + 184["Sweep Extrusion
[1743, 1776, 7]"] + 185["Sweep Extrusion
[1743, 1776, 7]"] + 186["Sweep Extrusion
[1743, 1776, 7]"] + 187["Sweep Extrusion
[1743, 1776, 7]"] + 188["Sweep Extrusion
[1743, 1776, 7]"] + 189["Sweep Extrusion
[1743, 1776, 7]"] + 193["Sweep Extrusion
[2293, 2326, 7]"] 194[Wall] 195["Cap End"] 196["SweepEdge Opposite"] 197["SweepEdge Adjacent"] - 198["Sweep Extrusion
[2299, 2332, 7]"] - 199["Sweep Extrusion
[2299, 2332, 7]"] - 200["Sweep Extrusion
[2299, 2332, 7]"] - 204["Sweep Extrusion
[2561, 2591, 7]"] + 198["Sweep Extrusion
[2293, 2326, 7]"] + 199["Sweep Extrusion
[2293, 2326, 7]"] + 200["Sweep Extrusion
[2293, 2326, 7]"] + 204["Sweep Extrusion
[2560, 2590, 7]"] 205[Wall] 206["Cap End"] 207["SweepEdge Opposite"] 208["SweepEdge Adjacent"] 209["Plane
[242, 265, 8]"] - 217["Sweep Extrusion
[943, 991, 8]"] + 217["Sweep Extrusion
[917, 965, 8]"] 218[Wall] 219[Wall] 220[Wall] @@ -316,42 +316,42 @@ flowchart LR 229["SweepEdge Adjacent"] 230["SweepEdge Opposite"] 231["SweepEdge Adjacent"] - 235["Sweep Extrusion
[1267, 1300, 8]"] + 235["Sweep Extrusion
[1246, 1279, 8]"] 236[Wall] 237["Cap End"] 238["SweepEdge Opposite"] 239["SweepEdge Adjacent"] - 243["Sweep Extrusion
[1911, 1944, 8]"] + 243["Sweep Extrusion
[1895, 1928, 8]"] 244[Wall] 245["Cap End"] 246["SweepEdge Opposite"] 247["SweepEdge Adjacent"] - 248["Sweep Extrusion
[1911, 1944, 8]"] - 249["Sweep Extrusion
[1911, 1944, 8]"] - 250["Sweep Extrusion
[1911, 1944, 8]"] - 251["Sweep Extrusion
[1911, 1944, 8]"] - 252["Sweep Extrusion
[1911, 1944, 8]"] - 253["Sweep Extrusion
[1911, 1944, 8]"] - 254["Sweep Extrusion
[1911, 1944, 8]"] - 258["Sweep Extrusion
[2367, 2400, 8]"] + 248["Sweep Extrusion
[1895, 1928, 8]"] + 249["Sweep Extrusion
[1895, 1928, 8]"] + 250["Sweep Extrusion
[1895, 1928, 8]"] + 251["Sweep Extrusion
[1895, 1928, 8]"] + 252["Sweep Extrusion
[1895, 1928, 8]"] + 253["Sweep Extrusion
[1895, 1928, 8]"] + 254["Sweep Extrusion
[1895, 1928, 8]"] + 258["Sweep Extrusion
[2356, 2389, 8]"] 259[Wall] 260["Cap Start"] 261["Cap End"] 262["SweepEdge Opposite"] 263["SweepEdge Adjacent"] - 267["Sweep Extrusion
[2751, 2784, 8]"] + 267["Sweep Extrusion
[2745, 2778, 8]"] 268[Wall] 269["Cap Start"] 270["Cap End"] 271["SweepEdge Opposite"] 272["SweepEdge Adjacent"] - 276["Sweep Extrusion
[2943, 2977, 8]"] + 276["Sweep Extrusion
[2942, 2976, 8]"] 277[Wall] 278["Cap Start"] 279["Cap End"] 280["SweepEdge Opposite"] 281["SweepEdge Adjacent"] - 292["Sweep Extrusion
[4044, 4077, 8]"] + 292["Sweep Extrusion
[3918, 3951, 8]"] 293[Wall] 294[Wall] 295[Wall] @@ -375,7 +375,7 @@ flowchart LR 313["SweepEdge Adjacent"] 314["SweepEdge Opposite"] 315["SweepEdge Adjacent"] - 326["Sweep Extrusion
[5146, 5179, 8]"] + 326["Sweep Extrusion
[4895, 4928, 8]"] 327[Wall] 328[Wall] 329[Wall] @@ -399,25 +399,25 @@ flowchart LR 347["SweepEdge Adjacent"] 348["SweepEdge Opposite"] 349["SweepEdge Adjacent"] - 350["StartSketchOnFace
[1096, 1128, 5]"] - 351["StartSketchOnFace
[1351, 1383, 5]"] - 352["StartSketchOnFace
[1520, 1552, 5]"] - 353["StartSketchOnFace
[1906, 1938, 5]"] - 354["StartSketchOnFace
[862, 894, 6]"] - 355["StartSketchOnFace
[1241, 1273, 6]"] - 356["StartSketchOnFace
[1705, 1737, 6]"] - 357["StartSketchOnFace
[873, 907, 7]"] - 358["StartSketchOnFace
[1106, 1140, 7]"] - 359["StartSketchOnFace
[1519, 1551, 7]"] - 360["StartSketchOnFace
[1801, 1833, 7]"] - 361["StartSketchOnFace
[2346, 2378, 7]"] - 362["StartSketchOnFace
[1005, 1037, 8]"] - 363["StartSketchOnFace
[1419, 1451, 8]"] - 364["StartSketchOnFace
[2027, 2061, 8]"] - 365["StartSketchOnFace
[2414, 2446, 8]"] - 366["StartSketchOnFace
[2850, 2884, 8]"] - 367["StartSketchOnFace
[3018, 3052, 8]"] - 368["StartSketchOnFace
[4118, 4152, 8]"] + 350["StartSketchOnFace
[1108, 1145, 5]"] + 351["StartSketchOnFace
[1368, 1405, 5]"] + 352["StartSketchOnFace
[1542, 1579, 5]"] + 353["StartSketchOnFace
[1933, 1970, 5]"] + 354["StartSketchOnFace
[855, 892, 6]"] + 355["StartSketchOnFace
[1239, 1276, 6]"] + 356["StartSketchOnFace
[1708, 1745, 6]"] + 357["StartSketchOnFace
[847, 886, 7]"] + 358["StartSketchOnFace
[1085, 1124, 7]"] + 359["StartSketchOnFace
[1503, 1540, 7]"] + 360["StartSketchOnFace
[1790, 1827, 7]"] + 361["StartSketchOnFace
[2340, 2377, 7]"] + 362["StartSketchOnFace
[979, 1016, 8]"] + 363["StartSketchOnFace
[1398, 1435, 8]"] + 364["StartSketchOnFace
[2011, 2050, 8]"] + 365["StartSketchOnFace
[2403, 2440, 8]"] + 366["StartSketchOnFace
[2844, 2883, 8]"] + 367["StartSketchOnFace
[3017, 3056, 8]"] + 368["StartSketchOnFace
[3992, 4031, 8]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/ast.snap b/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/ast.snap index f13900e4a..b3012fa85 100644 --- a/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/ast.snap @@ -6,7 +6,7 @@ description: Result of parsing multi-axis-robot.kcl "Ok": { "body": [ { - "commentStart": 212, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -18,7 +18,7 @@ description: Result of parsing multi-axis-robot.kcl "selector": { "type": "None", "alias": { - "commentStart": 261, + "commentStart": 0, "end": 0, "name": "robotArmBase", "start": 0, @@ -30,7 +30,7 @@ description: Result of parsing multi-axis-robot.kcl "type": "ImportStatement" }, { - "commentStart": 274, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -39,7 +39,7 @@ description: Result of parsing multi-axis-robot.kcl "selector": { "type": "None", "alias": { - "commentStart": 310, + "commentStart": 0, "end": 0, "name": "rotatingBase", "start": 0, @@ -51,7 +51,7 @@ description: Result of parsing multi-axis-robot.kcl "type": "ImportStatement" }, { - "commentStart": 323, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -60,7 +60,7 @@ description: Result of parsing multi-axis-robot.kcl "selector": { "type": "None", "alias": { - "commentStart": 352, + "commentStart": 0, "end": 0, "name": "j2RobotArm", "start": 0, @@ -72,7 +72,7 @@ description: Result of parsing multi-axis-robot.kcl "type": "ImportStatement" }, { - "commentStart": 363, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -81,7 +81,7 @@ description: Result of parsing multi-axis-robot.kcl "selector": { "type": "None", "alias": { - "commentStart": 392, + "commentStart": 0, "end": 0, "name": "j3RobotArm", "start": 0, @@ -93,14 +93,14 @@ description: Result of parsing multi-axis-robot.kcl "type": "ImportStatement" }, { - "commentStart": 402, + "commentStart": 0, "end": 0, "expression": { "abs_path": false, - "commentStart": 404, + "commentStart": 0, "end": 0, "name": { - "commentStart": 404, + "commentStart": 0, "end": 0, "name": "robotArmBase", "start": 0, @@ -116,14 +116,14 @@ description: Result of parsing multi-axis-robot.kcl "type": "ExpressionStatement" }, { - "commentStart": 417, + "commentStart": 0, "end": 0, "expression": { "abs_path": false, - "commentStart": 417, + "commentStart": 0, "end": 0, "name": { - "commentStart": 417, + "commentStart": 0, "end": 0, "name": "rotatingBase", "start": 0, @@ -139,14 +139,14 @@ description: Result of parsing multi-axis-robot.kcl "type": "ExpressionStatement" }, { - "commentStart": 430, + "commentStart": 0, "end": 0, "expression": { "abs_path": false, - "commentStart": 430, + "commentStart": 0, "end": 0, "name": { - "commentStart": 430, + "commentStart": 0, "end": 0, "name": "j2RobotArm", "start": 0, @@ -162,14 +162,14 @@ description: Result of parsing multi-axis-robot.kcl "type": "ExpressionStatement" }, { - "commentStart": 441, + "commentStart": 0, "end": 0, "expression": { "abs_path": false, - "commentStart": 441, + "commentStart": 0, "end": 0, "name": { - "commentStart": 441, + "commentStart": 0, "end": 0, "name": "j3RobotArm", "start": 0, @@ -192,7 +192,7 @@ description: Result of parsing multi-axis-robot.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 180, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -207,10 +207,10 @@ description: Result of parsing multi-axis-robot.kcl ], "properties": [ { - "commentStart": 189, + "commentStart": 0, "end": 0, "key": { - "commentStart": 189, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -220,10 +220,10 @@ description: Result of parsing multi-axis-robot.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 209, + "commentStart": 0, "end": 0, "name": { - "commentStart": 209, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -244,7 +244,7 @@ description: Result of parsing multi-axis-robot.kcl "nonCodeNodes": { "3": [ { - "commentStart": 402, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -256,7 +256,7 @@ description: Result of parsing multi-axis-robot.kcl }, "startNodes": [ { - "commentStart": 212, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/exported_step.step b/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/exported_step.step new file mode 100644 index 000000000..a6622ddf4 --- /dev/null +++ b/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/exported_step.step @@ -0,0 +1,4635 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION((('zoo.dev export')), '2;1'); +FILE_NAME('dump.step', '2021-01-01T00:00:00+00:00', ('Author unknown'), ('Organization unknown'), 'zoo.dev beta', 'zoo.dev', 'Authorization unknown'); +FILE_SCHEMA(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF')); +ENDSEC; +DATA; +#1 = ( + LENGTH_UNIT() + NAMED_UNIT(*) + SI_UNIT($, .METRE.) +); +#2 = UNCERTAINTY_MEASURE_WITH_UNIT(0.00001, #1, 'DISTANCE_ACCURACY_VALUE', $); +#3 = ( + GEOMETRIC_REPRESENTATION_CONTEXT(3) + GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2)) + GLOBAL_UNIT_ASSIGNED_CONTEXT((#1)) + REPRESENTATION_CONTEXT('', '3D') +); +#4 = CARTESIAN_POINT('NONE', (-0.2132962282631353, 0.9900154388440311, 0.0376098799261422)); +#5 = VERTEX_POINT('NONE', #4); +#6 = CARTESIAN_POINT('NONE', (-0.2295849375890203, 0.8962125003696184, 0.040482018861213324)); +#7 = VERTEX_POINT('NONE', #6); +#8 = CARTESIAN_POINT('NONE', (-0.2185582783071702, 0.8962125003696184, 0.10301731117748855)); +#9 = VERTEX_POINT('NONE', #8); +#10 = CARTESIAN_POINT('NONE', (-0.20226956898128523, 0.9900154388440311, 0.10014517224241742)); +#11 = VERTEX_POINT('NONE', #10); +#12 = CARTESIAN_POINT('NONE', (0.2630969880906004, 0.8079992261148178, -0.04639109754350654)); +#13 = VERTEX_POINT('NONE', #12); +#14 = CARTESIAN_POINT('NONE', (0.2741236473724505, 0.8079992261148178, 0.016144194772768686)); +#15 = VERTEX_POINT('NONE', #14); +#16 = CARTESIAN_POINT('NONE', (0.2793856974164853, 0.9018021645892303, -0.04926323647857764)); +#17 = VERTEX_POINT('NONE', #16); +#18 = CARTESIAN_POINT('NONE', (0.29041235669833537, 0.9018021645892303, 0.013272055837697586)); +#19 = VERTEX_POINT('NONE', #18); +#20 = CARTESIAN_POINT('NONE', (-0.16413780733018402, 0.9431139696068244, 0.09342151384138395)); +#21 = VERTEX_POINT('NONE', #20); +#22 = CARTESIAN_POINT('NONE', (-0.16391727414454701, 0.9431139696068244, 0.09467221968770945)); +#23 = VERTEX_POINT('NONE', #22); +#24 = CARTESIAN_POINT('NONE', (-0.165977619465924, 0.9431139696068244, 0.09761469775163442)); +#25 = VERTEX_POINT('NONE', #24); +#26 = CARTESIAN_POINT('NONE', (-0.19619416884564464, 0.9073116807548814, 0.1029426906711889)); +#27 = VERTEX_POINT('NONE', #26); +#28 = CARTESIAN_POINT('NONE', (-0.19553256928873364, 0.9073116807548814, 0.1066948082101654)); +#29 = VERTEX_POINT('NONE', #28); +#30 = CARTESIAN_POINT('NONE', (-0.1752338268974491, 0.9275328877973024, 0.09924681686084659)); +#31 = VERTEX_POINT('NONE', #30); +#32 = CARTESIAN_POINT('NONE', (-0.1745722273405381, 0.9275328877973024, 0.1029989343998231)); +#33 = VERTEX_POINT('NONE', #32); +#34 = CARTESIAN_POINT('NONE', (-0.17449395245034033, 0.9568812812472968, 0.09911635703348456)); +#35 = VERTEX_POINT('NONE', #34); +#36 = CARTESIAN_POINT('NONE', (-0.17383235289342933, 0.9568812812472968, 0.10286847457246107)); +#37 = VERTEX_POINT('NONE', #36); +#38 = CARTESIAN_POINT('NONE', (-0.19440795392098145, 0.9781649702557196, 0.10262773278662665)); +#39 = VERTEX_POINT('NONE', #38); +#40 = CARTESIAN_POINT('NONE', (-0.19374635436407045, 0.9781649702557196, 0.10637985032560315)); +#41 = VERTEX_POINT('NONE', #40); +#42 = CARTESIAN_POINT('NONE', (-0.22331047932898865, 0.9789162584587681, 0.10772402782667026)); +#43 = VERTEX_POINT('NONE', #42); +#44 = CARTESIAN_POINT('NONE', (-0.22264887977207765, 0.9789162584587681, 0.11147614536564678)); +#45 = VERTEX_POINT('NONE', #44); +#46 = CARTESIAN_POINT('NONE', (-0.24427082127718422, 0.9586950514163473, 0.11141990163701258)); +#47 = VERTEX_POINT('NONE', #46); +#48 = CARTESIAN_POINT('NONE', (-0.24360922172027322, 0.9586950514163473, 0.1151720191759891)); +#49 = VERTEX_POINT('NONE', #48); +#50 = CARTESIAN_POINT('NONE', (-0.245010695724293, 0.9293466579663529, 0.11155036146437462)); +#51 = VERTEX_POINT('NONE', #50); +#52 = CARTESIAN_POINT('NONE', (-0.24434909616738199, 0.9293466579663529, 0.11530247900335112)); +#53 = VERTEX_POINT('NONE', #52); +#54 = CARTESIAN_POINT('NONE', (-0.22509669425365186, 0.9080629689579299, 0.10803898571123252)); +#55 = VERTEX_POINT('NONE', #54); +#56 = CARTESIAN_POINT('NONE', (-0.22443509469674086, 0.9080629689579299, 0.11179110325020904)); +#57 = VERTEX_POINT('NONE', #56); +#58 = CARTESIAN_POINT('NONE', (0.22654537902088406, 0.854900695352024, -0.02704912927864647)); +#59 = VERTEX_POINT('NONE', #58); +#60 = CARTESIAN_POINT('NONE', (0.22433987351633639, 0.854900695352024, -0.039557172549654525)); +#61 = VERTEX_POINT('NONE', #60); +#62 = CARTESIAN_POINT('NONE', (0.32673062512508044, 0.8549006953520236, -0.006028768176110774)); +#63 = VERTEX_POINT('NONE', #62); +#64 = CARTESIAN_POINT('NONE', (0.3289361306296281, 0.8549006953520236, 0.006479275094897282)); +#65 = VERTEX_POINT('NONE', #64); +#66 = CARTESIAN_POINT('NONE', (0.006364022369956452, 0, 0.050719441393559286)); +#67 = VERTEX_POINT('NONE', #66); +#68 = CARTESIAN_POINT('NONE', (0.0063197420846513854, 0, 0.050468315416541176)); +#69 = VERTEX_POINT('NONE', #68); +#70 = CARTESIAN_POINT('NONE', (0.2734906075988626, 0.854900695352024, -0.035070952186275)); +#71 = VERTEX_POINT('NONE', #70); +#72 = CARTESIAN_POINT('NONE', (0.3172236484011361, 0.856839577120413, -0.04278226722813999)); +#73 = VERTEX_POINT('NONE', #72); +#74 = CARTESIAN_POINT('NONE', (0.32383981761842373, 0.856839577120413, -0.005260107030621853)); +#75 = VERTEX_POINT('NONE', #74); +#76 = CARTESIAN_POINT('NONE', (0.28010677681615026, 0.854900695352024, 0.002451208011243139)); +#77 = VERTEX_POINT('NONE', #76); +#78 = CARTESIAN_POINT('NONE', (0.41822077991983, 0.8613172327640384, -0.06059078648904706)); +#79 = VERTEX_POINT('NONE', #78); +#80 = CARTESIAN_POINT('NONE', (0.42483694913711767, 0.8613172327640384, -0.02306862629152892)); +#81 = VERTEX_POINT('NONE', #80); +#82 = CARTESIAN_POINT('NONE', (0.44737614045467894, 0.8626098206096312, -0.06573166318362372)); +#83 = VERTEX_POINT('NONE', #82); +#84 = CARTESIAN_POINT('NONE', (0.45399230967196663, 0.8626098206096312, -0.028209502986105583)); +#85 = VERTEX_POINT('NONE', #84); +#86 = CARTESIAN_POINT('NONE', (0.41231088787053777, 0.8988429434266636, -0.0595487130676824)); +#87 = VERTEX_POINT('NONE', #86); +#88 = CARTESIAN_POINT('NONE', (0.41892705708782546, 0.8988429434266636, -0.022026552870164258)); +#89 = VERTEX_POINT('NONE', #88); +#90 = CARTESIAN_POINT('NONE', (0.36459811322891605, 0.9141187980414807, -0.05113566357390182)); +#91 = VERTEX_POINT('NONE', #90); +#92 = CARTESIAN_POINT('NONE', (0.37121428244620375, 0.9141187980414807, -0.013613503376383684)); +#93 = VERTEX_POINT('NONE', #92); +#94 = CARTESIAN_POINT('NONE', (0.31067470837367356, 0.8914384266166431, -0.04162751240625672)); +#95 = VERTEX_POINT('NONE', #94); +#96 = CARTESIAN_POINT('NONE', (0.31729087759096125, 0.8914384266166431, -0.00410535220873858)); +#97 = VERTEX_POINT('NONE', #96); +#98 = CARTESIAN_POINT('NONE', (0.2734906075988626, 0.854900695352024, -0.035070952186275)); +#99 = VERTEX_POINT('NONE', #98); +#100 = CARTESIAN_POINT('NONE', (0.2961254446662646, 0.8076525562269439, -0.039062084665198046)); +#101 = VERTEX_POINT('NONE', #100); +#102 = CARTESIAN_POINT('NONE', (0.3027416138835523, 0.8076525562269439, -0.0015399244676799029)); +#103 = VERTEX_POINT('NONE', #102); +#104 = CARTESIAN_POINT('NONE', (0.28010677681615026, 0.854900695352024, 0.002451208011243139)); +#105 = VERTEX_POINT('NONE', #104); +#106 = CARTESIAN_POINT('NONE', (0.33915757485681153, 0.7676125765889222, -0.04664981025515078)); +#107 = VERTEX_POINT('NONE', #106); +#108 = CARTESIAN_POINT('NONE', (0.3457737440740992, 0.7676125765889222, -0.009127650057632643)); +#109 = VERTEX_POINT('NONE', #108); +#110 = CARTESIAN_POINT('NONE', (0.3891381929165526, 0.7653967117107632, -0.05546274173156791)); +#111 = VERTEX_POINT('NONE', #110); +#112 = CARTESIAN_POINT('NONE', (0.3957543621338403, 0.7653967117107632, -0.017940581534049777)); +#113 = VERTEX_POINT('NONE', #112); +#114 = CARTESIAN_POINT('NONE', (0.4342929405943022, 0.7872666754286247, -0.06342474205423808)); +#115 = VERTEX_POINT('NONE', #114); +#116 = CARTESIAN_POINT('NONE', (0.44090910981158987, 0.7872666754286247, -0.025902581856719942)); +#117 = VERTEX_POINT('NONE', #116); +#118 = CARTESIAN_POINT('NONE', (0.4073312381666809, 0.7986068611410435, -0.05867066647041551)); +#119 = VERTEX_POINT('NONE', #118); +#120 = CARTESIAN_POINT('NONE', (0.4139474073839685, 0.7986068611410435, -0.021148506272897372)); +#121 = VERTEX_POINT('NONE', #120); +#122 = CARTESIAN_POINT('NONE', (0.3139331612402946, 0.8378904167833957, -0.042202065562008846)); +#123 = VERTEX_POINT('NONE', #122); +#124 = CARTESIAN_POINT('NONE', (0.32054933045758227, 0.8378904167833957, -0.004679905364490707)); +#125 = VERTEX_POINT('NONE', #124); +#126 = CARTESIAN_POINT('NONE', (-0.016803116843092273, 0.18582537671905608, -0.06196461752631031)); +#127 = VERTEX_POINT('NONE', #126); +#128 = CARTESIAN_POINT('NONE', (0.07721920752217738, 0.22057462328094402, -0.07854329010083025)); +#129 = VERTEX_POINT('NONE', #128); +#130 = CARTESIAN_POINT('NONE', (0.08824586680402746, 0.22057462328094402, -0.016007997784555028)); +#131 = VERTEX_POINT('NONE', #130); +#132 = CARTESIAN_POINT('NONE', (-0.0057764575612421895, 0.18582537671905608, 0.0005706747899649171)); +#133 = VERTEX_POINT('NONE', #132); +#134 = CARTESIAN_POINT('NONE', (-0.18799608002529306, 0.9604885928877687, -0.03177867920985743)); +#135 = VERTEX_POINT('NONE', #134); +#136 = CARTESIAN_POINT('NONE', (-0.17696942074344296, 0.9604885928877687, 0.030756613106417797)); +#137 = VERTEX_POINT('NONE', #136); +#138 = CARTESIAN_POINT('NONE', (-0.2820184043905627, 0.9257393463258807, -0.01520000663533748)); +#139 = VERTEX_POINT('NONE', #138); +#140 = CARTESIAN_POINT('NONE', (-0.2709917451087126, 0.9257393463258807, 0.04733528568093774)); +#141 = VERTEX_POINT('NONE', #140); +#142 = CARTESIAN_POINT('NONE', (-0.014855367192428503, 0.20320000000000005, -0.06230805834138782)); +#143 = VERTEX_POINT('NONE', #142); +#144 = CARTESIAN_POINT('NONE', (-0.015075900378065516, 0.20320000000000005, -0.06355876418771332)); +#145 = VERTEX_POINT('NONE', #144); +#146 = CARTESIAN_POINT('NONE', (-0.013015555056688503, 0.20320000000000005, -0.06650124225163835)); +#147 = VERTEX_POINT('NONE', #146); +#148 = CARTESIAN_POINT('NONE', (-0.28007065473989895, 0.9431139696068247, -0.015543447450414987)); +#149 = VERTEX_POINT('NONE', #148); +#150 = CARTESIAN_POINT('NONE', (-0.28404025208136496, 0.9431139696068247, -0.03805615268427404)); +#151 = VERTEX_POINT('NONE', #150); +#152 = CARTESIAN_POINT('NONE', (-0.281979906759988, 0.9431139696068247, -0.04099863074819905)); +#153 = VERTEX_POINT('NONE', #152); +#154 = CARTESIAN_POINT('NONE', (0.027007032025727625, 0.17145000000000002, -0.0735583041920224)); +#155 = VERTEX_POINT('NONE', #154); +#156 = CARTESIAN_POINT('NONE', (0.02634543246881662, 0.17145000000000002, -0.0773104217309989)); +#157 = VERTEX_POINT('NONE', #156); +#158 = CARTESIAN_POINT('NONE', (0.006362760440043338, 0.1843414621457548, -0.06991816211439313)); +#159 = VERTEX_POINT('NONE', #158); +#160 = CARTESIAN_POINT('NONE', (0.005701160883132333, 0.1843414621457548, -0.07367027965336963)); +#161 = VERTEX_POINT('NONE', #160); +#162 = CARTESIAN_POINT('NONE', (0.0007422092528920388, 0.20828000000000005, -0.06892710729364536)); +#163 = VERTEX_POINT('NONE', #162); +#164 = CARTESIAN_POINT('NONE', (0.00008060969598103363, 0.20828000000000005, -0.07267922483262187)); +#165 = VERTEX_POINT('NONE', #164); +#166 = CARTESIAN_POINT('NONE', (0.013437821121694754, 0.2292427427511006, -0.07116568620271789)); +#167 = VERTEX_POINT('NONE', #166); +#168 = CARTESIAN_POINT('NONE', (0.012776221564783748, 0.2292427427511006, -0.0749178037416944)); +#169 = VERTEX_POINT('NONE', #168); +#170 = CARTESIAN_POINT('NONE', (0.03701267879633165, 0.23495000000000005, -0.07532256967711842)); +#171 = VERTEX_POINT('NONE', #170); +#172 = CARTESIAN_POINT('NONE', (0.036351079239420644, 0.23495000000000005, -0.07907468721609492)); +#173 = VERTEX_POINT('NONE', #172); +#174 = CARTESIAN_POINT('NONE', (0.05765695038201592, 0.22205853785424526, -0.07896271175474769)); +#175 = VERTEX_POINT('NONE', #174); +#176 = CARTESIAN_POINT('NONE', (0.05699535082510491, 0.22205853785424526, -0.08271482929372419)); +#177 = VERTEX_POINT('NONE', #176); +#178 = CARTESIAN_POINT('NONE', (0.06327750156916725, 0.19812000000000005, -0.07995376657549547)); +#179 = VERTEX_POINT('NONE', #178); +#180 = CARTESIAN_POINT('NONE', (0.06261590201225624, 0.19812000000000005, -0.08370588411447197)); +#181 = VERTEX_POINT('NONE', #180); +#182 = CARTESIAN_POINT('NONE', (0.050581889700364556, 0.1771572572488995, -0.07771518766642294)); +#183 = VERTEX_POINT('NONE', #182); +#184 = CARTESIAN_POINT('NONE', (0.04992029014345355, 0.1771572572488995, -0.08146730520539944)); +#185 = VERTEX_POINT('NONE', #184); +#186 = CARTESIAN_POINT('NONE', (-0.23340198782120183, 0.9073116807548814, -0.049564228523775816)); +#187 = VERTEX_POINT('NONE', #186); +#188 = CARTESIAN_POINT('NONE', (-0.23406358737811284, 0.9073116807548814, -0.053316346062752325)); +#189 = VERTEX_POINT('NONE', #188); +#190 = CARTESIAN_POINT('NONE', (-0.27221286792924615, 0.9395066579663529, -0.04272082321568614)); +#191 = VERTEX_POINT('NONE', #190); +#192 = CARTESIAN_POINT('NONE', (-0.2728744674861572, 0.9395066579663529, -0.04647294075466264)); +#193 = VERTEX_POINT('NONE', #192); +#194 = CARTESIAN_POINT('NONE', (-0.24050700476333775, 0.9789162584587681, -0.0483114223384865)); +#195 = VERTEX_POINT('NONE', #194); +#196 = CARTESIAN_POINT('NONE', (-0.24116860432024875, 0.9789162584587681, -0.05206353987746301)); +#197 = VERTEX_POINT('NONE', #196); +#198 = CARTESIAN_POINT('NONE', (-0.2016961246552935, 0.9467212812472967, -0.055154827646576164)); +#199 = VERTEX_POINT('NONE', #198); +#200 = CARTESIAN_POINT('NONE', (-0.2023577242122045, 0.9467212812472967, -0.05890694518555267)); +#201 = VERTEX_POINT('NONE', #200); +#202 = CARTESIAN_POINT('NONE', (-0.21401293821972667, 0.9431139696068247, 0.03728838469783215)); +#203 = VERTEX_POINT('NONE', #202); +#204 = CARTESIAN_POINT('NONE', (-0.20960227450698665, 0.9431139696068247, 0.06230250162434224)); +#205 = VERTEX_POINT('NONE', #204); +#206 = CARTESIAN_POINT('NONE', (0.04686827598660563, 0.20320000000000005, -0.03405597753762715)); +#207 = VERTEX_POINT('NONE', #206); +#208 = CARTESIAN_POINT('NONE', (0.05127893969934566, 0.20320000000000005, -0.009041860611117062)); +#209 = VERTEX_POINT('NONE', #208); +#210 = CARTESIAN_POINT('NONE', (0.08754940924278527, 0.12700000000000003, -0.015437322994590108)); +#211 = VERTEX_POINT('NONE', #210); +#212 = CARTESIAN_POINT('NONE', (0.10943676155348162, 0.1654948291982183, -0.01929665374323764)); +#213 = VERTEX_POINT('NONE', #212); +#214 = CARTESIAN_POINT('NONE', (0.11384742526622164, 0.1654948291982183, 0.00571746318327245)); +#215 = VERTEX_POINT('NONE', #214); +#216 = CARTESIAN_POINT('NONE', (0.0919600729555253, 0.12700000000000003, 0.00957679393191998)); +#217 = VERTEX_POINT('NONE', #216); +#218 = CARTESIAN_POINT('NONE', (-0.020540402716070747, 0.2416948291982183, 0.0036218271934607086)); +#219 = VERTEX_POINT('NONE', #218); +#220 = CARTESIAN_POINT('NONE', (-0.016129739003330715, 0.2416948291982183, 0.028635944119970794)); +#221 = VERTEX_POINT('NONE', #220); +#222 = CARTESIAN_POINT('NONE', (-0.0857534764499512, 0.12700000000000003, 0.01512065158767435)); +#223 = VERTEX_POINT('NONE', #222); +#224 = CARTESIAN_POINT('NONE', (-0.08134281273721117, 0.12700000000000003, 0.04013476851418444)); +#225 = VERTEX_POINT('NONE', #224); +#226 = CARTESIAN_POINT('NONE', (0.11697418988203542, 0.20319999999999996, 0.005166130219179945)); +#227 = VERTEX_POINT('NONE', #226); +#228 = CARTESIAN_POINT('NONE', (0.1231491190798715, 0.20319999999999996, 0.04018589391629406)); +#229 = VERTEX_POINT('NONE', #228); +#230 = CARTESIAN_POINT('NONE', (0.1210887737584945, 0.20319999999999996, 0.04312837198021907)); +#231 = VERTEX_POINT('NONE', #230); +#232 = CARTESIAN_POINT('NONE', (0.05980418728854474, 0.17145000000000002, 0.05393449807643218)); +#233 = VERTEX_POINT('NONE', #232); +#234 = CARTESIAN_POINT('NONE', (0.06068632003109275, 0.17145000000000002, 0.0589373214617342)); +#235 = VERTEX_POINT('NONE', #234); +#236 = CARTESIAN_POINT('NONE', (0.0860690100613803, 0.20828000000000005, 0.04930330117805515)); +#237 = VERTEX_POINT('NONE', #236); +#238 = CARTESIAN_POINT('NONE', (0.08695114280392831, 0.20828000000000005, 0.05430612456335717)); +#239 = VERTEX_POINT('NONE', #238); +#240 = CARTESIAN_POINT('NONE', (0.049798540517940706, 0.23495000000000005, 0.05569876356152818)); +#241 = VERTEX_POINT('NONE', #240); +#242 = CARTESIAN_POINT('NONE', (0.050680673260488716, 0.23495000000000005, 0.060701586946830206)); +#243 = VERTEX_POINT('NONE', #242); +#244 = CARTESIAN_POINT('NONE', (0.02353371774510511, 0.19812000000000007, 0.060329960459905206)); +#245 = VERTEX_POINT('NONE', #244); +#246 = CARTESIAN_POINT('NONE', (0.02441585048765311, 0.19812000000000007, 0.06533278384520723)); +#247 = VERTEX_POINT('NONE', #246); +#248 = CARTESIAN_POINT('NONE', (0.06730842236649776, 0.20320000000000005, 0.052611298962610124)); +#249 = VERTEX_POINT('NONE', #248); +#250 = CARTESIAN_POINT('NONE', (0.06752895555213474, 0.20320000000000005, 0.05386200480893561)); +#251 = VERTEX_POINT('NONE', #250); +#252 = CARTESIAN_POINT('NONE', (0.06546861023075776, 0.20320000000000005, 0.056804482872860634)); +#253 = VERTEX_POINT('NONE', #252); +#254 = CARTESIAN_POINT('NONE', (0.09906000000000001, 0.09144, -0)); +#255 = VERTEX_POINT('NONE', #254); +#256 = CARTESIAN_POINT('NONE', (0.09906000000000001, 0.12445999999999999, 0.0000000000000000002576561983481067)); +#257 = VERTEX_POINT('NONE', #256); +#258 = CARTESIAN_POINT('NONE', (0.09652, 0.12699999999999997, -0.00000000000000000000000000000000009860761315262648)); +#259 = VERTEX_POINT('NONE', #258); +#260 = CARTESIAN_POINT('NONE', (0.0762, 0, 0.127)); +#261 = VERTEX_POINT('NONE', #260); +#262 = CARTESIAN_POINT('NONE', (0.0762, 0.0127, 0.127)); +#263 = VERTEX_POINT('NONE', #262); +#264 = CARTESIAN_POINT('NONE', (0.127, 0.0127, 0.0762)); +#265 = VERTEX_POINT('NONE', #264); +#266 = CARTESIAN_POINT('NONE', (0.127, 0, 0.0762)); +#267 = VERTEX_POINT('NONE', #266); +#268 = CARTESIAN_POINT('NONE', (0.127, 0, -0.0762)); +#269 = VERTEX_POINT('NONE', #268); +#270 = CARTESIAN_POINT('NONE', (0.127, 0.0127, -0.0762)); +#271 = VERTEX_POINT('NONE', #270); +#272 = CARTESIAN_POINT('NONE', (0.07620000000000002, 0.0127, -0.127)); +#273 = VERTEX_POINT('NONE', #272); +#274 = CARTESIAN_POINT('NONE', (0.07620000000000002, 0, -0.127)); +#275 = VERTEX_POINT('NONE', #274); +#276 = CARTESIAN_POINT('NONE', (-0.07619999999999999, 0, -0.127)); +#277 = VERTEX_POINT('NONE', #276); +#278 = CARTESIAN_POINT('NONE', (-0.07619999999999999, 0.0127, -0.127)); +#279 = VERTEX_POINT('NONE', #278); +#280 = CARTESIAN_POINT('NONE', (-0.12699999999999997, 0.0127, -0.0762)); +#281 = VERTEX_POINT('NONE', #280); +#282 = CARTESIAN_POINT('NONE', (-0.12699999999999997, 0, -0.0762)); +#283 = VERTEX_POINT('NONE', #282); +#284 = CARTESIAN_POINT('NONE', (-0.0762, 0, 0.127)); +#285 = VERTEX_POINT('NONE', #284); +#286 = CARTESIAN_POINT('NONE', (-0.0762, 0.0127, 0.127)); +#287 = VERTEX_POINT('NONE', #286); +#288 = CARTESIAN_POINT('NONE', (-0.127, 0.0127, 0.0762)); +#289 = VERTEX_POINT('NONE', #288); +#290 = CARTESIAN_POINT('NONE', (-0.127, 0, 0.0762)); +#291 = VERTEX_POINT('NONE', #290); +#292 = CARTESIAN_POINT('NONE', (0.1016, 0.0127, -0)); +#293 = VERTEX_POINT('NONE', #292); +#294 = CARTESIAN_POINT('NONE', (0.1016, 0.08636, -0)); +#295 = VERTEX_POINT('NONE', #294); +#296 = CARTESIAN_POINT('NONE', (0.09905999999999998, 0.0889, -0)); +#297 = VERTEX_POINT('NONE', #296); +#298 = CARTESIAN_POINT('NONE', (0.0127, 0.0889, -0)); +#299 = VERTEX_POINT('NONE', #298); +#300 = CARTESIAN_POINT('NONE', (0.0127, 0.11430000000000001, -0)); +#301 = VERTEX_POINT('NONE', #300); +#302 = CARTESIAN_POINT('NONE', (-0.09144, -0.0000009999999999994458, 0.0635)); +#303 = VERTEX_POINT('NONE', #302); +#304 = CARTESIAN_POINT('NONE', (-0.09144, 0.0127, 0.0635)); +#305 = VERTEX_POINT('NONE', #304); +#306 = CARTESIAN_POINT('NONE', (0.06349999999999999, -0.0000009999999999994458, 0.09144)); +#307 = VERTEX_POINT('NONE', #306); +#308 = CARTESIAN_POINT('NONE', (0.06349999999999999, 0.0127, 0.09144)); +#309 = VERTEX_POINT('NONE', #308); +#310 = CARTESIAN_POINT('NONE', (0.09144000000000001, -0.0000009999999999994458, -0.06349999999999999)); +#311 = VERTEX_POINT('NONE', #310); +#312 = CARTESIAN_POINT('NONE', (0.09144000000000001, 0.0127, -0.06349999999999999)); +#313 = VERTEX_POINT('NONE', #312); +#314 = CARTESIAN_POINT('NONE', (-0.06349999999999997, -0.0000009999999999994458, -0.09144000000000001)); +#315 = VERTEX_POINT('NONE', #314); +#316 = CARTESIAN_POINT('NONE', (-0.06349999999999997, 0.0127, -0.09144000000000001)); +#317 = VERTEX_POINT('NONE', #316); +#318 = CARTESIAN_POINT('NONE', (-0.053340000000000005, -0.0000009999999999994458, 0.1016)); +#319 = VERTEX_POINT('NONE', #318); +#320 = CARTESIAN_POINT('NONE', (-0.053340000000000005, 0.0127, 0.1016)); +#321 = VERTEX_POINT('NONE', #320); +#322 = CARTESIAN_POINT('NONE', (0.1016, -0.0000009999999999994458, 0.053340000000000005)); +#323 = VERTEX_POINT('NONE', #322); +#324 = CARTESIAN_POINT('NONE', (0.1016, 0.0127, 0.053340000000000005)); +#325 = VERTEX_POINT('NONE', #324); +#326 = CARTESIAN_POINT('NONE', (0.05334000000000002, -0.0000009999999999994458, -0.10159999999999998)); +#327 = VERTEX_POINT('NONE', #326); +#328 = CARTESIAN_POINT('NONE', (0.05334000000000002, 0.0127, -0.10159999999999998)); +#329 = VERTEX_POINT('NONE', #328); +#330 = CARTESIAN_POINT('NONE', (-0.10159999999999998, -0.0000009999999999994458, -0.05334000000000002)); +#331 = VERTEX_POINT('NONE', #330); +#332 = CARTESIAN_POINT('NONE', (-0.10159999999999998, 0.0127, -0.05334000000000002)); +#333 = VERTEX_POINT('NONE', #332); +#334 = DIRECTION('NONE', (0.17101007166283685, 0.9848077530122077, -0.030153689607045984)); +#335 = DIRECTION('NONE', (0.1736481776669303, -0.00000000000000025326962749261384, 0.984807753012208)); +#336 = CARTESIAN_POINT('NONE', (-0.22144058292607793, 0.9431139696068246, 0.039045949393677774)); +#337 = AXIS2_PLACEMENT_3D('NONE', #336, #335, #334); +#338 = CIRCLE('NONE', #337, 0.04762500000000008); +#339 = DIRECTION('NONE', (0.17364817766693055, 0, 0.984807753012208)); +#340 = VECTOR('NONE', #339, 1); +#341 = CARTESIAN_POINT('NONE', (-0.2295849375890203, 0.8962125003696184, 0.040482018861213324)); +#342 = LINE('NONE', #341, #340); +#343 = DIRECTION('NONE', (0.17101007166283566, 0.9848077530122079, -0.03015368960704584)); +#344 = DIRECTION('NONE', (0.17364817766693014, -0.00000000000000015959455978986625, 0.984807753012208)); +#345 = CARTESIAN_POINT('NONE', (-0.21041392364422778, 0.9431139696068246, 0.10158124170995299)); +#346 = AXIS2_PLACEMENT_3D('NONE', #345, #344, #343); +#347 = CIRCLE('NONE', #346, 0.04762500000000007); +#348 = DIRECTION('NONE', (0.17364817766693016, 0, 0.9848077530122082)); +#349 = VECTOR('NONE', #348, 1); +#350 = CARTESIAN_POINT('NONE', (-0.2132962282631353, 0.9900154388440311, 0.0376098799261422)); +#351 = LINE('NONE', #350, #349); +#352 = DIRECTION('NONE', (0.9698463103929543, -0.17364817766693041, -0.1710100716628344)); +#353 = VECTOR('NONE', #352, 1); +#354 = CARTESIAN_POINT('NONE', (-0.22958493758902027, 0.8962125003696184, 0.04048201886121332)); +#355 = LINE('NONE', #354, #353); +#356 = DIRECTION('NONE', (0.17364817766693055, 0, 0.984807753012208)); +#357 = VECTOR('NONE', #356, 1); +#358 = CARTESIAN_POINT('NONE', (0.2630969880906004, 0.8079992261148178, -0.04639109754350654)); +#359 = LINE('NONE', #358, #357); +#360 = DIRECTION('NONE', (0.9698463103929543, -0.17364817766693041, -0.17101007166283444)); +#361 = VECTOR('NONE', #360, 1); +#362 = CARTESIAN_POINT('NONE', (-0.21855827830717017, 0.8962125003696184, 0.10301731117748855)); +#363 = LINE('NONE', #362, #361); +#364 = DIRECTION('NONE', (-0.17101007166283472, -0.9848077530122079, 0.030153689607045543)); +#365 = DIRECTION('NONE', (-0.1736481776669302, 0.00000000000000030184188481996443, -0.984807753012208)); +#366 = CARTESIAN_POINT('NONE', (0.2712413427535428, 0.8549006953520238, -0.04782716701104207)); +#367 = AXIS2_PLACEMENT_3D('NONE', #366, #365, #364); +#368 = CIRCLE('NONE', #367, 0.047624999999999834); +#369 = DIRECTION('NONE', (0.17364817766693055, 0, 0.984807753012208)); +#370 = VECTOR('NONE', #369, 1); +#371 = CARTESIAN_POINT('NONE', (0.2793856974164853, 0.9018021645892303, -0.04926323647857764)); +#372 = LINE('NONE', #371, #370); +#373 = DIRECTION('NONE', (-0.1710100716628332, -0.9848077530122085, 0.030153689607045633)); +#374 = DIRECTION('NONE', (-0.1736481776669303, -0.00000000000000005204170427930421, -0.9848077530122084)); +#375 = CARTESIAN_POINT('NONE', (0.28226800203539276, 0.854900695352024, 0.014708125305233154)); +#376 = AXIS2_PLACEMENT_3D('NONE', #375, #374, #373); +#377 = CIRCLE('NONE', #376, 0.04762499999999993); +#378 = DIRECTION('NONE', (-0.9698463103929542, 0.17364817766693044, 0.17101007166283438)); +#379 = VECTOR('NONE', #378, 1); +#380 = CARTESIAN_POINT('NONE', (0.2793856974164853, 0.9018021645892303, -0.04926323647857764)); +#381 = LINE('NONE', #380, #379); +#382 = DIRECTION('NONE', (-0.9698463103929542, 0.17364817766693041, 0.17101007166283438)); +#383 = VECTOR('NONE', #382, 1); +#384 = CARTESIAN_POINT('NONE', (0.29041235669833537, 0.9018021645892303, 0.013272055837697586)); +#385 = LINE('NONE', #384, #383); +#386 = DIRECTION('NONE', (0.9848077530122079, -0.0000000000000024193836501727235, -0.1736481776669312)); +#387 = DIRECTION('NONE', (0.1736481776669312, 0.000000000000000012871800649991134, 0.9848077530122079)); +#388 = CARTESIAN_POINT('NONE', (-0.21041392364422756, 0.9431139696068245, 0.10158124170995302)); +#389 = AXIS2_PLACEMENT_3D('NONE', #388, #387, #386); +#390 = CIRCLE('NONE', #389, 0.04698999999999989); +#391 = DIRECTION('NONE', (0.9848077530122075, 0.0000000000000024193836501726986, -0.17364817766693363)); +#392 = DIRECTION('NONE', (0.17364817766693363, 0.00000000000000016733340844990906, 0.9848077530122075)); +#393 = CARTESIAN_POINT('NONE', (-0.210193390458591, 0.9431139696068243, 0.10283194755627872)); +#394 = AXIS2_PLACEMENT_3D('NONE', #393, #392, #391); +#395 = CIRCLE('NONE', #394, 0.04699000000000038); +#396 = DIRECTION('NONE', (0.9848077530122172, 0, -0.17364817766687823)); +#397 = DIRECTION('NONE', (0, -1, 0)); +#398 = CARTESIAN_POINT('NONE', (-0.16641868583719815, 0.9431139696068244, 0.09511328605898334)); +#399 = AXIS2_PLACEMENT_3D('NONE', #398, #397, #396); +#400 = CIRCLE('NONE', #399, 0.0025400000000001164); +#401 = DIRECTION('NONE', (0.9848077530122076, 0.0000000000000051152682889365606, -0.17364817766693313)); +#402 = DIRECTION('NONE', (-0.17364817766693313, -0.00000000000000012946404555800697, -0.9848077530122076)); +#403 = CARTESIAN_POINT('NONE', (-0.209752324087317, 0.9431139696068241, 0.10533335924892967)); +#404 = AXIS2_PLACEMENT_3D('NONE', #403, #402, #401); +#405 = CIRCLE('NONE', #404, 0.04445000000000038); +#406 = DIRECTION('NONE', (0.17364817766693524, 0, 0.9848077530122072)); +#407 = VECTOR('NONE', #406, 1); +#408 = CARTESIAN_POINT('NONE', (-0.16413780733018402, 0.9431139696068244, 0.09342151384138395)); +#409 = LINE('NONE', #408, #407); +#410 = DIRECTION('NONE', (0.9848077530122077, 0, -0.17364817766693233)); +#411 = DIRECTION('NONE', (0.17364817766693233, 0.0000000000000008948415475309627, 0.9848077530122077)); +#412 = CARTESIAN_POINT('NONE', (-0.20119699223094653, 0.9073116807548814, 0.10382482341373689)); +#413 = AXIS2_PLACEMENT_3D('NONE', #412, #411, #410); +#414 = CIRCLE('NONE', #413, 0.005079999999999877); +#415 = DIRECTION('NONE', (0.17364817766693025, 0, 0.9848077530122081)); +#416 = VECTOR('NONE', #415, 1); +#417 = CARTESIAN_POINT('NONE', (-0.19619416884564464, 0.9073116807548814, 0.1029426906711889)); +#418 = LINE('NONE', #417, #416); +#419 = DIRECTION('NONE', (0.9848077530122081, 0, -0.17364817766692944)); +#420 = DIRECTION('NONE', (0.17364817766692944, 0.0000000000000008948415475309625, 0.9848077530122081)); +#421 = CARTESIAN_POINT('NONE', (-0.2005353926740356, 0.9073116807548814, 0.1075769409527134)); +#422 = AXIS2_PLACEMENT_3D('NONE', #421, #420, #419); +#423 = CIRCLE('NONE', #422, 0.005079999999999962); +#424 = DIRECTION('NONE', (0.6963642403200169, 0.7071067811865492, -0.12278780396897408)); +#425 = DIRECTION('NONE', (0.1736481776669319, 0.0000000000000006245004513516506, 0.9848077530122077)); +#426 = CARTESIAN_POINT('NONE', (-0.17877135723827478, 0.9239407853488747, 0.09987057890500899)); +#427 = AXIS2_PLACEMENT_3D('NONE', #426, #425, #424); +#428 = CIRCLE('NONE', #427, 0.005080000000000016); +#429 = DIRECTION('NONE', (0.17364817766692964, 0, 0.9848077530122082)); +#430 = VECTOR('NONE', #429, 1); +#431 = CARTESIAN_POINT('NONE', (-0.1752338268974491, 0.9275328877973024, 0.09924681686084659)); +#432 = LINE('NONE', #431, #430); +#433 = DIRECTION('NONE', (0.6963642403200168, 0.7071067811865491, -0.12278780396897686)); +#434 = DIRECTION('NONE', (0.17364817766693386, 0.000000000000002581268532253489, 0.9848077530122075)); +#435 = CARTESIAN_POINT('NONE', (-0.17810975768136378, 0.9239407853488747, 0.1036226964439855)); +#436 = AXIS2_PLACEMENT_3D('NONE', #435, #434, #433); +#437 = CIRCLE('NONE', #436, 0.005080000000000017); +#438 = DIRECTION('NONE', (0, 1, 0.0000000000000027974123455121827)); +#439 = DIRECTION('NONE', (0.17364817766693025, -0.0000000000000027549133662324636, 0.9848077530122081)); +#440 = CARTESIAN_POINT('NONE', (-0.17449395245034033, 0.9518012812472968, 0.09911635703348455)); +#441 = AXIS2_PLACEMENT_3D('NONE', #440, #439, #438); +#442 = CIRCLE('NONE', #441, 0.005080000000000041); +#443 = DIRECTION('NONE', (0.17364817766693025, 0, 0.9848077530122081)); +#444 = VECTOR('NONE', #443, 1); +#445 = CARTESIAN_POINT('NONE', (-0.17449395245034033, 0.9568812812472968, 0.09911635703348456)); +#446 = LINE('NONE', #445, #444); +#447 = DIRECTION('NONE', (0.0000000000000167844740730731, 1, -0)); +#448 = DIRECTION('NONE', (0.17364817766693025, -0.000000000000002914593335886982, 0.9848077530122081)); +#449 = CARTESIAN_POINT('NONE', (-0.1738323528934294, 0.9518012812472968, 0.10286847457246107)); +#450 = AXIS2_PLACEMENT_3D('NONE', #449, #448, #447); +#451 = CIRCLE('NONE', #450, 0.005080000000000041); +#452 = DIRECTION('NONE', (-0.69636424032002, 0.7071067811865467, 0.12278780396897086)); +#453 = DIRECTION('NONE', (0.17364817766693216, 0.000000000000004884981308350689, 0.9848077530122077)); +#454 = CARTESIAN_POINT('NONE', (-0.1908704235801557, 0.9745728678072919, 0.10200397074246427)); +#455 = AXIS2_PLACEMENT_3D('NONE', #454, #453, #452); +#456 = CIRCLE('NONE', #455, 0.005080000000000034); +#457 = DIRECTION('NONE', (0.17364817766693025, 0, 0.9848077530122081)); +#458 = VECTOR('NONE', #457, 1); +#459 = CARTESIAN_POINT('NONE', (-0.19440795392098145, 0.9781649702557196, 0.10262773278662665)); +#460 = LINE('NONE', #459, #458); +#461 = DIRECTION('NONE', (-0.6963642403200334, 0.7071067811865323, 0.12278780396897783)); +#462 = DIRECTION('NONE', (0.1736481776669353, 0.0000000000000016792123247455493, 0.984807753012207)); +#463 = CARTESIAN_POINT('NONE', (-0.19020882402324468, 0.974572867807292, 0.10575608828144076)); +#464 = AXIS2_PLACEMENT_3D('NONE', #463, #462, #461); +#465 = CIRCLE('NONE', #464, 0.005079999999999977); +#466 = DIRECTION('NONE', (-0.9848077530122081, 0.00000000000004475859752819664, 0.1736481776669306)); +#467 = DIRECTION('NONE', (0.1736481776669306, 0.0000000000000004818377563628341, 0.9848077530122081)); +#468 = CARTESIAN_POINT('NONE', (-0.21830765594368676, 0.9789162584587678, 0.10684189508412228)); +#469 = AXIS2_PLACEMENT_3D('NONE', #468, #467, #466); +#470 = CIRCLE('NONE', #469, 0.005079999999999847); +#471 = DIRECTION('NONE', (0.17364817766692964, 0, 0.9848077530122082)); +#472 = VECTOR('NONE', #471, 1); +#473 = CARTESIAN_POINT('NONE', (-0.22331047932898865, 0.9789162584587681, 0.10772402782667026)); +#474 = LINE('NONE', #473, #472); +#475 = DIRECTION('NONE', (-0.984807753012207, 0.000000000000044758597528195315, 0.17364817766693666)); +#476 = DIRECTION('NONE', (0.17364817766693666, 0.000000000000000481837756362558, 0.984807753012207)); +#477 = CARTESIAN_POINT('NONE', (-0.21764605638677562, 0.9789162584587678, 0.11059401262309873)); +#478 = AXIS2_PLACEMENT_3D('NONE', #477, #476, #475); +#479 = CIRCLE('NONE', #478, 0.005079999999999997); +#480 = DIRECTION('NONE', (-0.6963642403199891, -0.7071067811865775, 0.12278780396896953)); +#481 = DIRECTION('NONE', (0.17364817766692936, 0.000000000000003733124920302089, 0.9848077530122084)); +#482 = CARTESIAN_POINT('NONE', (-0.24073329093635867, 0.962287153864775, 0.11079613959285023)); +#483 = AXIS2_PLACEMENT_3D('NONE', #482, #481, #480); +#484 = CIRCLE('NONE', #483, 0.005079999999999973); +#485 = DIRECTION('NONE', (0.17364817766692964, 0, 0.9848077530122082)); +#486 = VECTOR('NONE', #485, 1); +#487 = CARTESIAN_POINT('NONE', (-0.24427082127718422, 0.9586950514163473, 0.11141990163701258)); +#488 = LINE('NONE', #487, #486); +#489 = DIRECTION('NONE', (-0.6963642403199783, -0.7071067811865889, 0.12278780396896481)); +#490 = DIRECTION('NONE', (0.17364817766692742, 0.0000000000000017763568394002505, 0.9848077530122086)); +#491 = CARTESIAN_POINT('NONE', (-0.24007169137944767, 0.9622871538647751, 0.11454825713182674)); +#492 = AXIS2_PLACEMENT_3D('NONE', #491, #490, #489); +#493 = CIRCLE('NONE', #492, 0.005080000000000052); +#494 = DIRECTION('NONE', (0.000000000000022379298764096963, -1, -0.0000000000000027974123455121204)); +#495 = DIRECTION('NONE', (0.17364817766693025, 0.00000000000000113121108161682, 0.9848077530122081)); +#496 = CARTESIAN_POINT('NONE', (-0.2450106957242931, 0.9344266579663529, 0.11155036146437464)); +#497 = AXIS2_PLACEMENT_3D('NONE', #496, #495, #494); +#498 = CIRCLE('NONE', #497, 0.005080000000000155); +#499 = DIRECTION('NONE', (0.17364817766693025, 0, 0.9848077530122081)); +#500 = VECTOR('NONE', #499, 1); +#501 = CARTESIAN_POINT('NONE', (-0.245010695724293, 0.9293466579663529, 0.11155036146437462)); +#502 = LINE('NONE', #501, #500); +#503 = DIRECTION('NONE', (0.000000000000016784474073072723, -1, -0.0000000000000027974123455121204)); +#504 = DIRECTION('NONE', (0.17364817766693025, 0.00000000000000015967996965451469, 0.9848077530122081)); +#505 = CARTESIAN_POINT('NONE', (-0.24434909616738207, 0.9344266579663529, 0.11530247900335114)); +#506 = AXIS2_PLACEMENT_3D('NONE', #505, #504, #503); +#507 = CIRCLE('NONE', #506, 0.005080000000000155); +#508 = DIRECTION('NONE', (0.6963642403200141, -0.707106781186552, -0.12278780396897458)); +#509 = DIRECTION('NONE', (0.17364817766693258, -0.0000000000000013183898417423734, 0.9848077530122077)); +#510 = CARTESIAN_POINT('NONE', (-0.22863422459447752, 0.9116550714063576, 0.10866274775539492)); +#511 = AXIS2_PLACEMENT_3D('NONE', #510, #509, #508); +#512 = CIRCLE('NONE', #511, 0.005079999999999996); +#513 = DIRECTION('NONE', (0.17364817766692964, 0, 0.9848077530122082)); +#514 = VECTOR('NONE', #513, 1); +#515 = CARTESIAN_POINT('NONE', (-0.22509669425365186, 0.9080629689579299, 0.10803898571123252)); +#516 = LINE('NONE', #515, #514); +#517 = DIRECTION('NONE', (0.6963642403200199, -0.7071067811865466, -0.12278780396897364)); +#518 = DIRECTION('NONE', (0.17364817766693125, 0.00000000000000005551115123125783, 0.9848077530122079)); +#519 = CARTESIAN_POINT('NONE', (-0.2279726250375666, 0.9116550714063576, 0.11241486529437142)); +#520 = AXIS2_PLACEMENT_3D('NONE', #519, #518, #517); +#521 = CIRCLE('NONE', #520, 0.005080000000000035); +#522 = DIRECTION('NONE', (-0.9848077530122081, -0.0000000000000023871252015037514, 0.17364817766693064)); +#523 = DIRECTION('NONE', (-0.17364817766693064, -0.000000000000000025061681905551695, -0.9848077530122081)); +#524 = CARTESIAN_POINT('NONE', (0.2734468482580904, 0.8549006953520241, -0.03531912374003403)); +#525 = AXIS2_PLACEMENT_3D('NONE', #524, #523, #522); +#526 = CIRCLE('NONE', #525, 0.047624999999999945); +#527 = DIRECTION('NONE', (-0.17364817766693, 0, -0.9848077530122081)); +#528 = VECTOR('NONE', #527, 1); +#529 = CARTESIAN_POINT('NONE', (0.22654537902088406, 0.854900695352024, -0.02704912927864647)); +#530 = LINE('NONE', #529, #528); +#531 = DIRECTION('NONE', (-0.9848077530122079, 0.0000000000000023871252015037612, 0.1736481776669309)); +#532 = DIRECTION('NONE', (-0.1736481776669309, 0.000000000000000025061681905552484, -0.9848077530122079)); +#533 = CARTESIAN_POINT('NONE', (0.27124134275354256, 0.8549006953520238, -0.04782716701104207)); +#534 = AXIS2_PLACEMENT_3D('NONE', #533, #532, #531); +#535 = CIRCLE('NONE', #534, 0.04762499999999975); +#536 = DIRECTION('NONE', (0.9848077530122081, -0.0000000000000023990608275112683, -0.1736481776669301)); +#537 = DIRECTION('NONE', (0.1736481776669301, 0.00000000000000000000000000000019721522630525295, 0.9848077530122081)); +#538 = CARTESIAN_POINT('NONE', (0.28006249653084525, 0.8549006953520237, 0.0022000820342250905)); +#539 = AXIS2_PLACEMENT_3D('NONE', #538, #537, #536); +#540 = CIRCLE('NONE', #539, 0.04738805970149251); +#541 = DIRECTION('NONE', (0.17364817766693, 0, 0.9848077530122081)); +#542 = VECTOR('NONE', #541, 1); +#543 = CARTESIAN_POINT('NONE', (0.32673062512508044, 0.8549006953520236, -0.006028768176110774)); +#544 = LINE('NONE', #543, #542); +#545 = DIRECTION('NONE', (0.9848077530122081, 0, -0.17364817766692986)); +#546 = DIRECTION('NONE', (0.17364817766692986, 0.00000000000000005062585053330857, 0.9848077530122081)); +#547 = CARTESIAN_POINT('NONE', (0.28226800203539276, 0.8549006953520236, 0.014708125305233154)); +#548 = AXIS2_PLACEMENT_3D('NONE', #547, #546, #545); +#549 = CIRCLE('NONE', #548, 0.04738805970149263); +#550 = DIRECTION('NONE', (-0.9848077530122079, -0.00000000000000024725865491083095, 0.17364817766693103)); +#551 = DIRECTION('NONE', (-0.17364817766693103, -0.000000000000000034416982597345073, -0.9848077530122079)); +#552 = CARTESIAN_POINT('NONE', (0.00886543406260746, 0.0000000000000000006280369834735103, 0.050278375022285285)); +#553 = AXIS2_PLACEMENT_3D('NONE', #552, #551, #550); +#554 = CIRCLE('NONE', #553, 0.002539999999999999); +#555 = DIRECTION('NONE', (-0.17364817766693041, 0, -0.9848077530122081)); +#556 = VECTOR('NONE', #555, 1); +#557 = CARTESIAN_POINT('NONE', (0.006364022369956452, 0, 0.050719441393559286)); +#558 = LINE('NONE', #557, #556); +#559 = DIRECTION('NONE', (-0.9848077530122079, 0.0000000000000002472586549108306, 0.1736481776669308)); +#560 = DIRECTION('NONE', (-0.1736481776669308, -0.00000000000000003441698259734506, -0.9848077530122079)); +#561 = CARTESIAN_POINT('NONE', (0.008821153777302396, -0.0000000000000000006280369834735103, 0.05002724904526717)); +#562 = AXIS2_PLACEMENT_3D('NONE', #561, #560, #559); +#563 = CIRCLE('NONE', #562, 0.0025400000000000023); +#564 = DIRECTION('NONE', (0.9838704342468719, 0.04361938736533358, -0.17348290307907743)); +#565 = VECTOR('NONE', #564, 1); +#566 = CARTESIAN_POINT('NONE', (0.2734906075988626, 0.854900695352024, -0.035070952186275)); +#567 = LINE('NONE', #566, #565); +#568 = DIRECTION('NONE', (0.17364817766692844, 0, 0.9848077530122085)); +#569 = VECTOR('NONE', #568, 1); +#570 = CARTESIAN_POINT('NONE', (0.3172236484011361, 0.856839577120413, -0.04278226722813999)); +#571 = LINE('NONE', #570, #569); +#572 = DIRECTION('NONE', (0.9838704342468719, 0.04361938736533358, -0.17348290307907738)); +#573 = VECTOR('NONE', #572, 1); +#574 = CARTESIAN_POINT('NONE', (0.28010677681615026, 0.854900695352024, 0.002451208011243139)); +#575 = LINE('NONE', #574, #573); +#576 = DIRECTION('NONE', (0.17364817766692844, 0, 0.9848077530122085)); +#577 = VECTOR('NONE', #576, 1); +#578 = CARTESIAN_POINT('NONE', (0.2734906075988626, 0.854900695352024, -0.035070952186275)); +#579 = LINE('NONE', #578, #577); +#580 = DIRECTION('NONE', (-0.873535145519731, 0.4617486132350337, 0.15402781475222438)); +#581 = DIRECTION('NONE', (-0.17364817766693083, 0.0000000000000003469446951953614, -0.9848077530122078)); +#582 = CARTESIAN_POINT('NONE', (0.3689951646922721, 0.8294732759760167, -0.05191098238245516)); +#583 = AXIS2_PLACEMENT_3D('NONE', #582, #581, #580); +#584 = CIRCLE('NONE', #583, 0.05926666666666658); +#585 = DIRECTION('NONE', (0.17364817766692983, 0, 0.9848077530122082)); +#586 = VECTOR('NONE', #585, 1); +#587 = CARTESIAN_POINT('NONE', (0.41822077991983, 0.8613172327640384, -0.06059078648904706)); +#588 = LINE('NONE', #587, #586); +#589 = DIRECTION('NONE', (-0.8735351455197296, 0.46174861323503674, 0.15402781475222377)); +#590 = DIRECTION('NONE', (-0.17364817766693053, 0.00000000000000018041124150158794, -0.9848077530122079)); +#591 = CARTESIAN_POINT('NONE', (0.3756113339095598, 0.8294732759760165, -0.014388822184936999)); +#592 = AXIS2_PLACEMENT_3D('NONE', #591, #590, #589); +#593 = CIRCLE('NONE', #592, 0.05926666666666668); +#594 = DIRECTION('NONE', (0.9838704342468718, 0.043619387365337346, -0.17348290307907752)); +#595 = VECTOR('NONE', #594, 1); +#596 = CARTESIAN_POINT('NONE', (0.41822077991983, 0.8613172327640384, -0.06059078648904706)); +#597 = LINE('NONE', #596, #595); +#598 = DIRECTION('NONE', (0.17364817766692983, 0, 0.9848077530122082)); +#599 = VECTOR('NONE', #598, 1); +#600 = CARTESIAN_POINT('NONE', (0.44737614045467894, 0.8626098206096312, -0.06573166318362372)); +#601 = LINE('NONE', #600, #599); +#602 = DIRECTION('NONE', (0.9838704342468718, 0.043619387365337346, -0.17348290307907752)); +#603 = VECTOR('NONE', #602, 1); +#604 = CARTESIAN_POINT('NONE', (0.42483694913711767, 0.8613172327640384, -0.02306862629152892)); +#605 = LINE('NONE', #604, #603); +#606 = DIRECTION('NONE', (-0.6902608776405754, 0.7132504491541821, 0.1217116164555381)); +#607 = VECTOR('NONE', #606, 1); +#608 = CARTESIAN_POINT('NONE', (0.44737614045467894, 0.8626098206096312, -0.06573166318362372)); +#609 = LINE('NONE', #608, #607); +#610 = DIRECTION('NONE', (0.17364817766692983, 0, 0.9848077530122082)); +#611 = VECTOR('NONE', #610, 1); +#612 = CARTESIAN_POINT('NONE', (0.41231088787053777, 0.8988429434266636, -0.0595487130676824)); +#613 = LINE('NONE', #612, #611); +#614 = DIRECTION('NONE', (-0.6902608776405754, 0.7132504491541821, 0.1217116164555381)); +#615 = VECTOR('NONE', #614, 1); +#616 = CARTESIAN_POINT('NONE', (0.45399230967196663, 0.8626098206096312, -0.028209502986105583)); +#617 = LINE('NONE', #616, #615); +#618 = DIRECTION('NONE', (-0.9392278472760163, 0.3007057995042724, 0.1656112105074914)); +#619 = VECTOR('NONE', #618, 1); +#620 = CARTESIAN_POINT('NONE', (0.41231088787053777, 0.8988429434266636, -0.0595487130676824)); +#621 = LINE('NONE', #620, #619); +#622 = DIRECTION('NONE', (0.17364817766692983, 0, 0.9848077530122082)); +#623 = VECTOR('NONE', #622, 1); +#624 = CARTESIAN_POINT('NONE', (0.36459811322891605, 0.9141187980414807, -0.05113566357390182)); +#625 = LINE('NONE', #624, #623); +#626 = DIRECTION('NONE', (-0.9392278472760163, 0.3007057995042724, 0.16561121050749134)); +#627 = VECTOR('NONE', #626, 1); +#628 = CARTESIAN_POINT('NONE', (0.41892705708782546, 0.8988429434266636, -0.022026552870164258)); +#629 = LINE('NONE', #628, #627); +#630 = DIRECTION('NONE', (-0.9098437264664098, -0.38268343236508906, 0.16042999720436066)); +#631 = VECTOR('NONE', #630, 1); +#632 = CARTESIAN_POINT('NONE', (0.36459811322891605, 0.9141187980414807, -0.05113566357390182)); +#633 = LINE('NONE', #632, #631); +#634 = DIRECTION('NONE', (0.17364817766692983, 0, 0.9848077530122082)); +#635 = VECTOR('NONE', #634, 1); +#636 = CARTESIAN_POINT('NONE', (0.31067470837367356, 0.8914384266166431, -0.04162751240625672)); +#637 = LINE('NONE', #636, #635); +#638 = DIRECTION('NONE', (-0.9098437264664098, -0.38268343236508906, 0.16042999720436074)); +#639 = VECTOR('NONE', #638, 1); +#640 = CARTESIAN_POINT('NONE', (0.37121428244620375, 0.9141187980414807, -0.013613503376383684)); +#641 = LINE('NONE', #640, #639); +#642 = DIRECTION('NONE', (-0.7077037221231495, -0.6954017409350084, 0.12478726055811777)); +#643 = VECTOR('NONE', #642, 1); +#644 = CARTESIAN_POINT('NONE', (0.31067470837367356, 0.8914384266166431, -0.04162751240625672)); +#645 = LINE('NONE', #644, #643); +#646 = DIRECTION('NONE', (-0.70770372212315, -0.695401740935008, 0.12478726055811759)); +#647 = VECTOR('NONE', #646, 1); +#648 = CARTESIAN_POINT('NONE', (0.31729087759096125, 0.8914384266166431, -0.00410535220873858)); +#649 = LINE('NONE', #648, #647); +#650 = DIRECTION('NONE', (0.43079590761820313, -0.8992468077878794, -0.07596094169188074)); +#651 = VECTOR('NONE', #650, 1); +#652 = CARTESIAN_POINT('NONE', (0.2734906075988626, 0.854900695352024, -0.035070952186275)); +#653 = LINE('NONE', #652, #651); +#654 = DIRECTION('NONE', (0.1736481776669298, 0, 0.9848077530122082)); +#655 = VECTOR('NONE', #654, 1); +#656 = CARTESIAN_POINT('NONE', (0.2961254446662646, 0.8076525562269439, -0.039062084665198046)); +#657 = LINE('NONE', #656, #655); +#658 = DIRECTION('NONE', (0.430795907618204, -0.899246807787879, -0.07596094169188058)); +#659 = VECTOR('NONE', #658, 1); +#660 = CARTESIAN_POINT('NONE', (0.28010677681615026, 0.854900695352024, 0.002451208011243139)); +#661 = LINE('NONE', #660, #659); +#662 = DIRECTION('NONE', (0.17364817766692844, 0, 0.9848077530122085)); +#663 = VECTOR('NONE', #662, 1); +#664 = CARTESIAN_POINT('NONE', (0.2734906075988626, 0.854900695352024, -0.035070952186275)); +#665 = LINE('NONE', #664, #663); +#666 = DIRECTION('NONE', (0.7260764374108015, -0.675590207615662, -0.12802686597220567)); +#667 = VECTOR('NONE', #666, 1); +#668 = CARTESIAN_POINT('NONE', (0.2961254446662646, 0.8076525562269439, -0.039062084665198046)); +#669 = LINE('NONE', #668, #667); +#670 = DIRECTION('NONE', (0.17364817766692983, 0, 0.9848077530122082)); +#671 = VECTOR('NONE', #670, 1); +#672 = CARTESIAN_POINT('NONE', (0.33915757485681153, 0.7676125765889222, -0.04664981025515078)); +#673 = LINE('NONE', #672, #671); +#674 = DIRECTION('NONE', (0.7260764374108015, -0.675590207615662, -0.12802686597220575)); +#675 = VECTOR('NONE', #674, 1); +#676 = CARTESIAN_POINT('NONE', (0.3027416138835523, 0.8076525562269439, -0.0015399244676799029)); +#677 = LINE('NONE', #676, #675); +#678 = DIRECTION('NONE', (0.9838704342468718, -0.043619387365335785, -0.17348290307907743)); +#679 = VECTOR('NONE', #678, 1); +#680 = CARTESIAN_POINT('NONE', (0.33915757485681153, 0.7676125765889222, -0.04664981025515078)); +#681 = LINE('NONE', #680, #679); +#682 = DIRECTION('NONE', (0.17364817766692983, 0, 0.9848077530122082)); +#683 = VECTOR('NONE', #682, 1); +#684 = CARTESIAN_POINT('NONE', (0.3891381929165526, 0.7653967117107632, -0.05546274173156791)); +#685 = LINE('NONE', #684, #683); +#686 = DIRECTION('NONE', (0.9838704342468718, -0.043619387365335785, -0.1734829030790775)); +#687 = VECTOR('NONE', #686, 1); +#688 = CARTESIAN_POINT('NONE', (0.3457737440740992, 0.7676125765889222, -0.009127650057632643)); +#689 = LINE('NONE', #688, #687); +#690 = DIRECTION('NONE', (0.8888729857824702, 0.4305110968082972, -0.15673228981634152)); +#691 = VECTOR('NONE', #690, 1); +#692 = CARTESIAN_POINT('NONE', (0.3891381929165526, 0.7653967117107632, -0.05546274173156791)); +#693 = LINE('NONE', #692, #691); +#694 = DIRECTION('NONE', (0.17364817766692983, 0, 0.9848077530122082)); +#695 = VECTOR('NONE', #694, 1); +#696 = CARTESIAN_POINT('NONE', (0.4342929405943022, 0.7872666754286247, -0.06342474205423808)); +#697 = LINE('NONE', #696, #695); +#698 = DIRECTION('NONE', (0.8888729857824702, 0.4305110968082972, -0.15673228981634152)); +#699 = VECTOR('NONE', #698, 1); +#700 = CARTESIAN_POINT('NONE', (0.3957543621338403, 0.7653967117107632, -0.017940581534049777)); +#701 = LINE('NONE', #700, #699); +#702 = DIRECTION('NONE', (-0.90984372646641, 0.38268343236508834, 0.16042999720436107)); +#703 = VECTOR('NONE', #702, 1); +#704 = CARTESIAN_POINT('NONE', (0.4342929405943022, 0.7872666754286247, -0.06342474205423808)); +#705 = LINE('NONE', #704, #703); +#706 = DIRECTION('NONE', (0.17364817766692844, 0, 0.9848077530122085)); +#707 = VECTOR('NONE', #706, 1); +#708 = CARTESIAN_POINT('NONE', (0.4073312381666809, 0.7986068611410435, -0.05867066647041551)); +#709 = LINE('NONE', #708, #707); +#710 = DIRECTION('NONE', (-0.9098437264664104, 0.3826834323650878, 0.16042999720436082)); +#711 = VECTOR('NONE', #710, 1); +#712 = CARTESIAN_POINT('NONE', (0.44090910981158987, 0.7872666754286247, -0.025902581856719942)); +#713 = LINE('NONE', #712, #711); +#714 = DIRECTION('NONE', (0.5995129750225769, -0.7933533402912369, -0.1057103127812804)); +#715 = DIRECTION('NONE', (-0.1736481776669308, -0.00000000000000033306690738754696, -0.984807753012208)); +#716 = CARTESIAN_POINT('NONE', (0.3718001025136762, 0.8456262691089709, -0.0524055685995783)); +#717 = AXIS2_PLACEMENT_3D('NONE', #716, #715, #714); +#718 = CIRCLE('NONE', #717, 0.05926666666666672); +#719 = DIRECTION('NONE', (0.17364817766692983, 0, 0.9848077530122082)); +#720 = VECTOR('NONE', #719, 1); +#721 = CARTESIAN_POINT('NONE', (0.3139331612402946, 0.8378904167833957, -0.042202065562008846)); +#722 = LINE('NONE', #721, #720); +#723 = DIRECTION('NONE', (0.5995129750225774, -0.7933533402912364, -0.1057103127812805)); +#724 = DIRECTION('NONE', (-0.17364817766693083, -0.0000000000000003191891195797325, -0.9848077530122079)); +#725 = CARTESIAN_POINT('NONE', (0.37841627173096376, 0.8456262691089709, -0.014883408402060152)); +#726 = AXIS2_PLACEMENT_3D('NONE', #725, #724, #723); +#727 = CIRCLE('NONE', #726, 0.05926666666666676); +#728 = DIRECTION('NONE', (-0.9098437264664095, 0.38268343236508995, 0.16042999720436077)); +#729 = VECTOR('NONE', #728, 1); +#730 = CARTESIAN_POINT('NONE', (0.3139331612402945, 0.8378904167833957, -0.04220206556200883)); +#731 = LINE('NONE', #730, #729); +#732 = DIRECTION('NONE', (-0.9098437264664095, 0.38268343236508995, 0.1604299972043607)); +#733 = VECTOR('NONE', #732, 1); +#734 = CARTESIAN_POINT('NONE', (0.32054933045758216, 0.8378904167833957, -0.0046799053644906935)); +#735 = LINE('NONE', #734, #733); +#736 = DIRECTION('NONE', (-0.9254165783983233, -0.342020143325669, 0.1631759111665352)); +#737 = DIRECTION('NONE', (0.17364817766693083, -0.00000000000000020816681711721685, 0.9848077530122079)); +#738 = CARTESIAN_POINT('NONE', (0.030208045339542536, 0.20320000000000005, -0.07025395381357029)); +#739 = AXIS2_PLACEMENT_3D('NONE', #738, #737, #736); +#740 = CIRCLE('NONE', #739, 0.050799999999999984); +#741 = DIRECTION('NONE', (0.1736481776669304, 0, 0.9848077530122081)); +#742 = VECTOR('NONE', #741, 1); +#743 = CARTESIAN_POINT('NONE', (0.07721920752217738, 0.22057462328094402, -0.07854329010083025)); +#744 = LINE('NONE', #743, #742); +#745 = DIRECTION('NONE', (-0.9254165783983231, -0.3420201433256694, 0.16317591116653488)); +#746 = DIRECTION('NONE', (0.17364817766693044, 0, 0.984807753012208)); +#747 = CARTESIAN_POINT('NONE', (0.04123470462139263, 0.20320000000000008, -0.007718661497295056)); +#748 = AXIS2_PLACEMENT_3D('NONE', #747, #746, #745); +#749 = CIRCLE('NONE', #748, 0.050800000000000005); +#750 = DIRECTION('NONE', (0.17364817766693044, 0, 0.9848077530122081)); +#751 = VECTOR('NONE', #750, 1); +#752 = CARTESIAN_POINT('NONE', (-0.016803116843092273, 0.18582537671905608, -0.06196461752631031)); +#753 = LINE('NONE', #752, #751); +#754 = DIRECTION('NONE', (-0.336824088833465, 0.9396926207859085, 0.05939117461388469)); +#755 = VECTOR('NONE', #754, 1); +#756 = CARTESIAN_POINT('NONE', (0.07721920752217737, 0.22057462328094402, -0.07854329010083025)); +#757 = LINE('NONE', #756, #755); +#758 = DIRECTION('NONE', (0.17364817766693055, 0, 0.984807753012208)); +#759 = VECTOR('NONE', #758, 1); +#760 = CARTESIAN_POINT('NONE', (-0.18799608002529306, 0.9604885928877687, -0.03177867920985743)); +#761 = LINE('NONE', #760, #759); +#762 = DIRECTION('NONE', (-0.336824088833465, 0.9396926207859085, 0.05939117461388469)); +#763 = VECTOR('NONE', #762, 1); +#764 = CARTESIAN_POINT('NONE', (0.08824586680402745, 0.22057462328094402, -0.016007997784555025)); +#765 = LINE('NONE', #764, #763); +#766 = DIRECTION('NONE', (0.9254165783983218, 0.34202014332567243, -0.16317591116653518)); +#767 = DIRECTION('NONE', (0.1736481776669309, 0.0000000000000002498001805406602, 0.9848077530122079)); +#768 = CARTESIAN_POINT('NONE', (-0.23500724220792796, 0.9431139696068245, -0.023489342922597415)); +#769 = AXIS2_PLACEMENT_3D('NONE', #768, #767, #766); +#770 = CIRCLE('NONE', #769, 0.05080000000000014); +#771 = DIRECTION('NONE', (0.17364817766693055, 0, 0.984807753012208)); +#772 = VECTOR('NONE', #771, 1); +#773 = CARTESIAN_POINT('NONE', (-0.2820184043905627, 0.9257393463258807, -0.01520000663533748)); +#774 = LINE('NONE', #773, #772); +#775 = DIRECTION('NONE', (0.925416578398323, 0.34202014332566943, -0.16317591116653518)); +#776 = DIRECTION('NONE', (0.1736481776669307, 0.00000000000000015959455978986625, 0.9848077530122078)); +#777 = CARTESIAN_POINT('NONE', (-0.22398058292607773, 0.9431139696068247, 0.039045949393677774)); +#778 = AXIS2_PLACEMENT_3D('NONE', #777, #776, #775); +#779 = CIRCLE('NONE', #778, 0.05079999999999992); +#780 = DIRECTION('NONE', (0.33682408883346504, -0.9396926207859085, -0.059391174613884705)); +#781 = VECTOR('NONE', #780, 1); +#782 = CARTESIAN_POINT('NONE', (-0.28201840439056275, 0.9257393463258807, -0.015200006635337474)); +#783 = LINE('NONE', #782, #781); +#784 = DIRECTION('NONE', (0.33682408883346504, -0.9396926207859085, -0.059391174613884705)); +#785 = VECTOR('NONE', #784, 1); +#786 = CARTESIAN_POINT('NONE', (-0.27099174510871266, 0.9257393463258807, 0.04733528568093775)); +#787 = LINE('NONE', #786, #785); +#788 = DIRECTION('NONE', (-0.9848077530122081, 0.0000000000000005889289148446752, 0.17364817766693047)); +#789 = DIRECTION('NONE', (-0.17364817766693047, 0.00000000000000014643901736709695, -0.9848077530122081)); +#790 = CARTESIAN_POINT('NONE', (0.03267145496794063, 0.20320000000000002, -0.07068831939559388)); +#791 = AXIS2_PLACEMENT_3D('NONE', #790, #789, #788); +#792 = CIRCLE('NONE', #791, 0.04825999999999997); +#793 = DIRECTION('NONE', (-0.9848077530122081, 0.0000000000000011778578296893497, 0.17364817766693066)); +#794 = DIRECTION('NONE', (-0.17364817766693066, 0.00000000000000008542276013080656, -0.9848077530122081)); +#795 = CARTESIAN_POINT('NONE', (0.03245092178230365, 0.2032, -0.07193902524191939)); +#796 = AXIS2_PLACEMENT_3D('NONE', #795, #794, #793); +#797 = CIRCLE('NONE', #796, 0.04826); +#798 = DIRECTION('NONE', (-0.9848077530122075, 0, 0.17364817766693333)); +#799 = DIRECTION('NONE', (-0, -0.9999999999999999, 0)); +#800 = CARTESIAN_POINT('NONE', (-0.012574488685414503, 0.20320000000000005, -0.06399983055898734)); +#801 = AXIS2_PLACEMENT_3D('NONE', #800, #799, #798); +#802 = CIRCLE('NONE', #801, 0.0025400000000000062); +#803 = DIRECTION('NONE', (-0.9848077530122081, 0.0000000000000006216471878916012, 0.1736481776669306)); +#804 = DIRECTION('NONE', (0.1736481776669306, -0.0000000000000000679841631552497, 0.9848077530122081)); +#805 = CARTESIAN_POINT('NONE', (0.03200985541102966, 0.20320000000000002, -0.07444043693457042)); +#806 = AXIS2_PLACEMENT_3D('NONE', #805, #804, #803); +#807 = CIRCLE('NONE', #806, 0.045720000000000004); +#808 = DIRECTION('NONE', (-0.1736481776669305, 0.00000000000004370956789862737, -0.9848077530122081)); +#809 = VECTOR('NONE', #808, 1); +#810 = CARTESIAN_POINT('NONE', (-0.014855367192428503, 0.20320000000000005, -0.06230805834138782)); +#811 = LINE('NONE', #810, #809); +#812 = DIRECTION('NONE', (-0.9848077530122079, 0.000000000000002355715659378692, 0.1736481776669307)); +#813 = DIRECTION('NONE', (-0.1736481776669307, -0.00000000000000007321950868354781, -0.9848077530122079)); +#814 = CARTESIAN_POINT('NONE', (-0.23254383257952962, 0.9431139696068246, -0.02392370850462109)); +#815 = AXIS2_PLACEMENT_3D('NONE', #814, #813, #812); +#816 = CIRCLE('NONE', #815, 0.04826000000000016); +#817 = DIRECTION('NONE', (-0.9848077530122072, -0.0000000000000023557156593786986, 0.17364817766693458)); +#818 = DIRECTION('NONE', (-0.17364817766693458, 0.00000000000000002440650289451464, -0.9848077530122072)); +#819 = CARTESIAN_POINT('NONE', (-0.2365134299209958, 0.9431139696068249, -0.046436413738480314)); +#820 = AXIS2_PLACEMENT_3D('NONE', #819, #818, #817); +#821 = CIRCLE('NONE', #820, 0.04826000000000001); +#822 = DIRECTION('NONE', (-0.9848077530122186, 0, 0.1736481776668709)); +#823 = DIRECTION('NONE', (-0, -1, 0)); +#824 = CARTESIAN_POINT('NONE', (-0.28153884038871374, 0.9431139696068247, -0.03849721905554792)); +#825 = AXIS2_PLACEMENT_3D('NONE', #824, #823, #822); +#826 = CIRCLE('NONE', #825, 0.0025400000000001415); +#827 = DIRECTION('NONE', (-0.9848077530122076, -0.0000000000000049731775031327904, 0.17364817766693322)); +#828 = DIRECTION('NONE', (0.17364817766693322, 0.00000000000000006798416315524583, 0.9848077530122076)); +#829 = CARTESIAN_POINT('NONE', (-0.23695449629226972, 0.943113969606825, -0.048937825431131274)); +#830 = AXIS2_PLACEMENT_3D('NONE', #829, #828, #827); +#831 = CIRCLE('NONE', #830, 0.04572000000000018); +#832 = DIRECTION('NONE', (-0.17364817766693183, 0, -0.9848077530122078)); +#833 = VECTOR('NONE', #832, 1); +#834 = CARTESIAN_POINT('NONE', (-0.28007065473989895, 0.9431139696068247, -0.015543447450414987)); +#835 = LINE('NONE', #834, #833); +#836 = DIRECTION('NONE', (-0.9848077530122077, 0, 0.173648177666933)); +#837 = DIRECTION('NONE', (-0.173648177666933, 0, -0.9848077530122077)); +#838 = CARTESIAN_POINT('NONE', (0.03200985541102966, 0.17145000000000002, -0.07444043693457043)); +#839 = AXIS2_PLACEMENT_3D('NONE', #838, #837, #836); +#840 = CIRCLE('NONE', #839, 0.005080000000000022); +#841 = DIRECTION('NONE', (-0.17364817766693114, 0, -0.9848077530122079)); +#842 = VECTOR('NONE', #841, 1); +#843 = CARTESIAN_POINT('NONE', (0.027007032025727625, 0.17145000000000002, -0.0735583041920224)); +#844 = LINE('NONE', #843, #842); +#845 = DIRECTION('NONE', (-0.9848077530122086, 0.000000000000005594824691024384, 0.1736481776669273)); +#846 = DIRECTION('NONE', (-0.1736481776669273, -0.000000000000000000000000000021102029214662066, -0.9848077530122086)); +#847 = CARTESIAN_POINT('NONE', (0.03134825585411866, 0.17145, -0.07819255447354691)); +#848 = AXIS2_PLACEMENT_3D('NONE', #847, #846, #845); +#849 = CIRCLE('NONE', #848, 0.005080000000000025); +#850 = DIRECTION('NONE', (-0.6963642403200193, 0.7071067811865468, 0.12278780396897465)); +#851 = DIRECTION('NONE', (-0.1736481776669318, 0.0000000000000009575673587391975, -0.9848077530122078)); +#852 = CARTESIAN_POINT('NONE', (0.009900290780869032, 0.18074935969732714, -0.07054192415855552)); +#853 = AXIS2_PLACEMENT_3D('NONE', #852, #851, #850); +#854 = CIRCLE('NONE', #853, 0.005079999999999993); +#855 = DIRECTION('NONE', (-0.17364817766693094, 0, -0.984807753012208)); +#856 = VECTOR('NONE', #855, 1); +#857 = CARTESIAN_POINT('NONE', (0.006362760440043338, 0.1843414621457548, -0.06991816211439313)); +#858 = LINE('NONE', #857, #856); +#859 = DIRECTION('NONE', (-0.6963642403200195, 0.7071067811865467, 0.12278780396897462)); +#860 = DIRECTION('NONE', (-0.17364817766693172, 0.0000000000000009298117831235686, -0.9848077530122078)); +#861 = CARTESIAN_POINT('NONE', (0.009238691223958028, 0.18074935969732714, -0.07429404169753202)); +#862 = AXIS2_PLACEMENT_3D('NONE', #861, #860, #859); +#863 = CIRCLE('NONE', #862, 0.005079999999999994); +#864 = DIRECTION('NONE', (0.000000000000008392237036536595, 1, 0.0000000000000027974123455121985)); +#865 = DIRECTION('NONE', (-0.17364817766693103, 0.000000000000004212210034175983, -0.9848077530122079)); +#866 = CARTESIAN_POINT('NONE', (0.0007422092528919962, 0.20320000000000005, -0.06892710729364537)); +#867 = AXIS2_PLACEMENT_3D('NONE', #866, #865, #864); +#868 = CIRCLE('NONE', #867, 0.0050800000000000125); +#869 = DIRECTION('NONE', (-0.1736481776669304, 0, -0.9848077530122081)); +#870 = VECTOR('NONE', #869, 1); +#871 = CARTESIAN_POINT('NONE', (0.0007422092528920388, 0.20828000000000005, -0.06892710729364536)); +#872 = LINE('NONE', #871, #870); +#873 = DIRECTION('NONE', (0.000000000000001748382715945134, 1, -0.0000000000000027974123455122143)); +#874 = DIRECTION('NONE', (-0.17364817766693103, -0.000000000000002451309893744262, -0.9848077530122079)); +#875 = CARTESIAN_POINT('NONE', (0.00008060969598102474, 0.20320000000000008, -0.07267922483262186)); +#876 = AXIS2_PLACEMENT_3D('NONE', #875, #874, #873); +#877 = CIRCLE('NONE', #876, 0.005079999999999984); +#878 = DIRECTION('NONE', (0.6963642403200251, 0.7071067811865417, -0.12278780396897193)); +#879 = DIRECTION('NONE', (-0.17364817766693003, 0.000000000000002456368441983159, -0.9848077530122081)); +#880 = CARTESIAN_POINT('NONE', (0.009900290780869033, 0.22565064030267296, -0.07054192415855552)); +#881 = AXIS2_PLACEMENT_3D('NONE', #880, #879, #878); +#882 = CIRCLE('NONE', #881, 0.005079999999999989); +#883 = DIRECTION('NONE', (-0.17364817766693053, 0, -0.984807753012208)); +#884 = VECTOR('NONE', #883, 1); +#885 = CARTESIAN_POINT('NONE', (0.013437821121694754, 0.2292427427511006, -0.07116568620271789)); +#886 = LINE('NONE', #885, #884); +#887 = DIRECTION('NONE', (0.6963642403200245, 0.7071067811865418, -0.12278780396897475)); +#888 = DIRECTION('NONE', (-0.17364817766693202, 0.00000000000000043021142204224816, -0.9848077530122078)); +#889 = CARTESIAN_POINT('NONE', (0.009238691223958031, 0.22565064030267296, -0.07429404169753201)); +#890 = AXIS2_PLACEMENT_3D('NONE', #889, #888, #887); +#891 = CIRCLE('NONE', #890, 0.005079999999999988); +#892 = DIRECTION('NONE', (0.9848077530122077, 0.000000000000011189649382048758, -0.17364817766693275)); +#893 = DIRECTION('NONE', (-0.17364817766693275, -0.000000000000000000000000000019721522630525295, -0.9848077530122077)); +#894 = CARTESIAN_POINT('NONE', (0.0320098554110296, 0.23495, -0.0744404369345704)); +#895 = AXIS2_PLACEMENT_3D('NONE', #894, #893, #892); +#896 = CIRCLE('NONE', #895, 0.00508000000000003); +#897 = DIRECTION('NONE', (-0.17364817766693025, 0, -0.9848077530122081)); +#898 = VECTOR('NONE', #897, 1); +#899 = CARTESIAN_POINT('NONE', (0.03701267879633165, 0.23495000000000005, -0.07532256967711842)); +#900 = LINE('NONE', #899, #898); +#901 = DIRECTION('NONE', (0.9848077530122079, 0.00000000000001118964938204884, -0.17364817766693122)); +#902 = DIRECTION('NONE', (-0.17364817766693122, -0.0000000000000000000000000000023665827156630354, -0.9848077530122079)); +#903 = CARTESIAN_POINT('NONE', (0.031348255854118635, 0.23495, -0.07819255447354692)); +#904 = AXIS2_PLACEMENT_3D('NONE', #903, #902, #901); +#905 = CIRCLE('NONE', #904, 0.0050799999999999925); +#906 = DIRECTION('NONE', (0.6963642403200118, -0.7071067811865553, -0.12278780396896857)); +#907 = DIRECTION('NONE', (-0.17364817766692964, -0.0000000000000034833247397614286, -0.9848077530122081)); +#908 = CARTESIAN_POINT('NONE', (0.05411942004119025, 0.22565064030267296, -0.07833894971058533)); +#909 = AXIS2_PLACEMENT_3D('NONE', #908, #907, #906); +#910 = CIRCLE('NONE', #909, 0.0050800000000000125); +#911 = DIRECTION('NONE', (-0.17364817766693202, 0, -0.9848077530122078)); +#912 = VECTOR('NONE', #911, 1); +#913 = CARTESIAN_POINT('NONE', (0.05765695038201592, 0.22205853785424526, -0.07896271175474769)); +#914 = LINE('NONE', #913, #912); +#915 = DIRECTION('NONE', (0.696364240320015, -0.7071067811865516, -0.1227878039689717)); +#916 = DIRECTION('NONE', (-0.1736481776669314, -0.0000000000000017069679003611782, -0.9848077530122079)); +#917 = CARTESIAN_POINT('NONE', (0.05345782048427923, 0.22565064030267293, -0.08209106724956182)); +#918 = AXIS2_PLACEMENT_3D('NONE', #917, #916, #915); +#919 = CIRCLE('NONE', #918, 0.0050799999999999994); +#920 = DIRECTION('NONE', (0.0000000000000013987061727561071, -1, 0.0000000000000027974123455122143)); +#921 = DIRECTION('NONE', (-0.17364817766693072, -0.0000000000000029977961442230795, -0.984807753012208)); +#922 = CARTESIAN_POINT('NONE', (0.06327750156916724, 0.20320000000000002, -0.07995376657549548)); +#923 = AXIS2_PLACEMENT_3D('NONE', #922, #921, #920); +#924 = CIRCLE('NONE', #923, 0.005079999999999984); +#925 = DIRECTION('NONE', (-0.17364817766693377, 0, -0.9848077530122075)); +#926 = VECTOR('NONE', #925, 1); +#927 = CARTESIAN_POINT('NONE', (0.06327750156916725, 0.19812000000000005, -0.07995376657549547)); +#928 = LINE('NONE', #927, #926); +#929 = DIRECTION('NONE', (0, -1, -0)); +#930 = DIRECTION('NONE', (-0.17364817766693072, 0, -0.984807753012208)); +#931 = CARTESIAN_POINT('NONE', (0.06261590201225624, 0.20320000000000002, -0.08370588411447197)); +#932 = AXIS2_PLACEMENT_3D('NONE', #931, #930, #929); +#933 = CIRCLE('NONE', #932, 0.005079999999999984); +#934 = DIRECTION('NONE', (-0.6963642403200171, -0.7071067811865495, 0.12278780396897133)); +#935 = DIRECTION('NONE', (-0.17364817766693053, 0.0000000000000018457457784393227, -0.9848077530122079)); +#936 = CARTESIAN_POINT('NONE', (0.054119420041190254, 0.18074935969732717, -0.07833894971058532)); +#937 = AXIS2_PLACEMENT_3D('NONE', #936, #935, #934); +#938 = CIRCLE('NONE', #937, 0.005080000000000014); +#939 = DIRECTION('NONE', (-0.17364817766693202, 0, -0.9848077530122078)); +#940 = VECTOR('NONE', #939, 1); +#941 = CARTESIAN_POINT('NONE', (0.050581889700364556, 0.1771572572488995, -0.07771518766642294)); +#942 = LINE('NONE', #941, #940); +#943 = DIRECTION('NONE', (-0.696364240320016, -0.7071067811865512, 0.12278780396896884)); +#944 = DIRECTION('NONE', (-0.17364817766692897, 0.0000000000000034416913763379853, -0.9848077530122084)); +#945 = CARTESIAN_POINT('NONE', (0.05345782048427923, 0.18074935969732717, -0.0820910672495618)); +#946 = AXIS2_PLACEMENT_3D('NONE', #945, #944, #943); +#947 = CIRCLE('NONE', #946, 0.005080000000000002); +#948 = DIRECTION('NONE', (-0.9848077530122089, -0.00000000000002237929876409821, 0.17364817766692556)); +#949 = DIRECTION('NONE', (-0.17364817766692556, 0.00000000000000000000000000010570736129961558, -0.9848077530122089)); +#950 = CARTESIAN_POINT('NONE', (-0.22839916443589994, 0.9073116807548816, -0.05044636126632378)); +#951 = AXIS2_PLACEMENT_3D('NONE', #950, #949, #948); +#952 = CIRCLE('NONE', #951, 0.005079999999999871); +#953 = DIRECTION('NONE', (-0.17364817766692994, 0, -0.9848077530122082)); +#954 = VECTOR('NONE', #953, 1); +#955 = CARTESIAN_POINT('NONE', (-0.23340198782120183, 0.9073116807548814, -0.049564228523775816)); +#956 = LINE('NONE', #955, #954); +#957 = DIRECTION('NONE', (-0.9848077530122075, -0.000000000000022379298764097796, 0.17364817766693352)); +#958 = DIRECTION('NONE', (-0.17364817766693352, -0.00000000000000000000000000007415292509077511, -0.9848077530122075)); +#959 = CARTESIAN_POINT('NONE', (-0.22906076399281086, 0.9073116807548816, -0.05419847880530034)); +#960 = AXIS2_PLACEMENT_3D('NONE', #959, #958, #957); +#961 = CIRCLE('NONE', #960, 0.005079999999999966); +#962 = DIRECTION('NONE', (-0.000000000000044758597528194924, 1, 0.00000000000000839223703653655)); +#963 = DIRECTION('NONE', (-0.17364817766693122, 0.0000000000000004924912029987293, -0.9848077530122079)); +#964 = CARTESIAN_POINT('NONE', (-0.2722128679292459, 0.9344266579663528, -0.04272082321568618)); +#965 = AXIS2_PLACEMENT_3D('NONE', #964, #963, #962); +#966 = CIRCLE('NONE', #965, 0.005080000000000041); +#967 = DIRECTION('NONE', (-0.17364817766693733, 0, -0.9848077530122069)); +#968 = VECTOR('NONE', #967, 1); +#969 = CARTESIAN_POINT('NONE', (-0.27221286792924615, 0.9395066579663529, -0.04272082321568614)); +#970 = LINE('NONE', #969, #968); +#971 = DIRECTION('NONE', (0, 1, -0)); +#972 = DIRECTION('NONE', (-0.1736481776669293, 0, -0.9848077530122084)); +#973 = CARTESIAN_POINT('NONE', (-0.2728744674861572, 0.9344266579663526, -0.04647294075466264)); +#974 = AXIS2_PLACEMENT_3D('NONE', #973, #972, #971); +#975 = CIRCLE('NONE', #974, 0.005080000000000268); +#976 = DIRECTION('NONE', (0.9848077530122095, 0.000000000000044758597528192885, -0.17364817766692303)); +#977 = DIRECTION('NONE', (-0.17364817766692303, -0.0000000000000004818377563624744, -0.9848077530122095)); +#978 = CARTESIAN_POINT('NONE', (-0.24550982814864006, 0.9789162584587678, -0.047429289595938486)); +#979 = AXIS2_PLACEMENT_3D('NONE', #978, #977, #976); +#980 = CIRCLE('NONE', #979, 0.005080000000000273); +#981 = DIRECTION('NONE', (-0.17364817766692994, 0, -0.9848077530122082)); +#982 = VECTOR('NONE', #981, 1); +#983 = CARTESIAN_POINT('NONE', (-0.24050700476333775, 0.9789162584587681, -0.0483114223384865)); +#984 = LINE('NONE', #983, #982); +#985 = DIRECTION('NONE', (0.9848077530122094, 0.00000000000004475859752819364, -0.17364817766692317)); +#986 = DIRECTION('NONE', (-0.17364817766692317, -0.0000000000000004818377563624807, -0.9848077530122094)); +#987 = CARTESIAN_POINT('NONE', (-0.24617142770555098, 0.9789162584587678, -0.05118140713491501)); +#988 = AXIS2_PLACEMENT_3D('NONE', #987, #986, #985); +#989 = CIRCLE('NONE', #988, 0.005080000000000187); +#990 = DIRECTION('NONE', (-0.00000000000006713789629228939, -1, 0.000000000000011189649382048231)); +#991 = DIRECTION('NONE', (-0.17364817766693122, 0.0000000000000006387198786181124, -0.9848077530122079)); +#992 = CARTESIAN_POINT('NONE', (-0.20169612465529316, 0.951801281247297, -0.05515482764657622)); +#993 = AXIS2_PLACEMENT_3D('NONE', #992, #991, #990); +#994 = CIRCLE('NONE', #993, 0.005080000000000268); +#995 = DIRECTION('NONE', (-0.17364817766692994, 0, -0.9848077530122082)); +#996 = VECTOR('NONE', #995, 1); +#997 = CARTESIAN_POINT('NONE', (-0.2016961246552935, 0.9467212812472967, -0.055154827646576164)); +#998 = LINE('NONE', #997, #996); +#999 = DIRECTION('NONE', (-0.000000000000039163772837168806, -1, 0.0000000000000027974123455120577)); +#1000 = DIRECTION('NONE', (-0.17364817766693122, 0.000000000000004045804417503685, -0.9848077530122079)); +#1001 = CARTESIAN_POINT('NONE', (-0.2023577242122043, 0.951801281247297, -0.05890694518555269)); +#1002 = AXIS2_PLACEMENT_3D('NONE', #1001, #1000, #999); +#1003 = CIRCLE('NONE', #1002, 0.005080000000000268); +#1004 = DIRECTION('NONE', (0.9848077530122077, 0.000000000000014919532509398337, -0.17364817766693266)); +#1005 = DIRECTION('NONE', (0.17364817766693266, -0.00000000000000015296436709927762, 0.9848077530122077)); +#1006 = CARTESIAN_POINT('NONE', (-0.22151717329767973, 0.9431139696068246, 0.038611583811654186)); +#1007 = AXIS2_PLACEMENT_3D('NONE', #1006, #1005, #1004); +#1008 = CIRCLE('NONE', #1007, 0.007620000000000047); +#1009 = DIRECTION('NONE', (0.1736481776669297, 0, 0.9848077530122082)); +#1010 = VECTOR('NONE', #1009, 1); +#1011 = CARTESIAN_POINT('NONE', (-0.21401293821972667, 0.9431139696068247, 0.03728838469783215)); +#1012 = LINE('NONE', #1011, #1010); +#1013 = DIRECTION('NONE', (0.9848077530122075, 0, -0.17364817766693377)); +#1014 = DIRECTION('NONE', (0.17364817766693377, -0.0000000000000005965610316873137, 0.9848077530122075)); +#1015 = CARTESIAN_POINT('NONE', (-0.21710650958493954, 0.9431139696068247, 0.06362570073816426)); +#1016 = AXIS2_PLACEMENT_3D('NONE', #1015, #1014, #1013); +#1017 = CIRCLE('NONE', #1016, 0.007619999999999876); +#1018 = DIRECTION('NONE', (0.9848077530122081, -0.00000000000000372988312734961, -0.17364817766693016)); +#1019 = DIRECTION('NONE', (0.17364817766693016, 0.000000000000000305928734198623, 0.9848077530122081)); +#1020 = CARTESIAN_POINT('NONE', (0.039364040908652614, 0.20320000000000008, -0.03273277842380514)); +#1021 = AXIS2_PLACEMENT_3D('NONE', #1020, #1019, #1018); +#1022 = CIRCLE('NONE', #1021, 0.007619999999999994); +#1023 = DIRECTION('NONE', (0.17364817766693025, 0, 0.9848077530122081)); +#1024 = VECTOR('NONE', #1023, 1); +#1025 = CARTESIAN_POINT('NONE', (0.04686827598660563, 0.20320000000000005, -0.03405597753762715)); +#1026 = LINE('NONE', #1025, #1024); +#1027 = DIRECTION('NONE', (0.9848077530122081, 0, -0.1736481776669303)); +#1028 = DIRECTION('NONE', (0.1736481776669303, 0.00000000000000013766793038938017, 0.9848077530122081)); +#1029 = CARTESIAN_POINT('NONE', (0.04377470462139263, 0.20320000000000005, -0.007718661497295052)); +#1030 = AXIS2_PLACEMENT_3D('NONE', #1029, #1028, #1027); +#1031 = CIRCLE('NONE', #1030, 0.007620000000000008); +#1032 = DIRECTION('NONE', (0.49240387650610445, 0.8660254037844384, -0.08682408883346525)); +#1033 = VECTOR('NONE', #1032, 1); +#1034 = CARTESIAN_POINT('NONE', (0.08754940924278527, 0.12700000000000003, -0.015437322994590108)); +#1035 = LINE('NONE', #1034, #1033); +#1036 = DIRECTION('NONE', (0.17364817766693028, 0, 0.9848077530122081)); +#1037 = VECTOR('NONE', #1036, 1); +#1038 = CARTESIAN_POINT('NONE', (0.10943676155348162, 0.1654948291982183, -0.01929665374323764)); +#1039 = LINE('NONE', #1038, #1037); +#1040 = DIRECTION('NONE', (0.49240387650610445, 0.8660254037844384, -0.08682408883346525)); +#1041 = VECTOR('NONE', #1040, 1); +#1042 = CARTESIAN_POINT('NONE', (0.0919600729555253, 0.12700000000000003, 0.00957679393191998)); +#1043 = LINE('NONE', #1042, #1041); +#1044 = DIRECTION('NONE', (0.17364817766693028, 0, 0.9848077530122081)); +#1045 = VECTOR('NONE', #1044, 1); +#1046 = CARTESIAN_POINT('NONE', (0.08754940924278527, 0.12700000000000003, -0.015437322994590108)); +#1047 = LINE('NONE', #1046, #1045); +#1048 = DIRECTION('NONE', (0.8528685319524435, -0.49999999999999944, -0.15038373318043527)); +#1049 = DIRECTION('NONE', (0.1736481776669303, 0.00000000000000004163336342344337, 0.9848077530122081)); +#1050 = CARTESIAN_POINT('NONE', (0.04444817941870543, 0.20359482919821828, -0.007837413274888468)); +#1051 = AXIS2_PLACEMENT_3D('NONE', #1050, #1049, #1048); +#1052 = CIRCLE('NONE', #1051, 0.07620000000000002); +#1053 = DIRECTION('NONE', (0.17364817766693041, 0, 0.9848077530122081)); +#1054 = VECTOR('NONE', #1053, 1); +#1055 = CARTESIAN_POINT('NONE', (-0.020540402716070747, 0.2416948291982183, 0.0036218271934607086)); +#1056 = LINE('NONE', #1055, #1054); +#1057 = DIRECTION('NONE', (0.8528685319524434, -0.4999999999999996, -0.15038373318043535)); +#1058 = DIRECTION('NONE', (0.1736481776669304, -0.000000000000000013877787807814457, 0.9848077530122081)); +#1059 = CARTESIAN_POINT('NONE', (0.04885884313144548, 0.20359482919821828, 0.017176703651621623)); +#1060 = AXIS2_PLACEMENT_3D('NONE', #1059, #1058, #1057); +#1061 = CIRCLE('NONE', #1060, 0.07619999999999999); +#1062 = DIRECTION('NONE', (-0.4924038765061042, -0.8660254037844386, 0.08682408883346521)); +#1063 = VECTOR('NONE', #1062, 1); +#1064 = CARTESIAN_POINT('NONE', (-0.02054040271607074, 0.2416948291982183, 0.0036218271934607073)); +#1065 = LINE('NONE', #1064, #1063); +#1066 = DIRECTION('NONE', (0.17364817766693028, 0, 0.9848077530122081)); +#1067 = VECTOR('NONE', #1066, 1); +#1068 = CARTESIAN_POINT('NONE', (-0.0857534764499512, 0.12700000000000003, 0.01512065158767435)); +#1069 = LINE('NONE', #1068, #1067); +#1070 = DIRECTION('NONE', (-0.4924038765061043, -0.8660254037844386, 0.08682408883346522)); +#1071 = VECTOR('NONE', #1070, 1); +#1072 = CARTESIAN_POINT('NONE', (-0.016129739003330708, 0.2416948291982183, 0.028635944119970794)); +#1073 = LINE('NONE', #1072, #1071); +#1074 = DIRECTION('NONE', (0.9848077530122081, 0, -0.1736481776669304)); +#1075 = VECTOR('NONE', #1074, 1); +#1076 = CARTESIAN_POINT('NONE', (-0.0857534764499512, 0.12700000000000003, 0.01512065158767435)); +#1077 = LINE('NONE', #1076, #1075); +#1078 = DIRECTION('NONE', (0.9848077530122081, 0, -0.1736481776669304)); +#1079 = VECTOR('NONE', #1078, 1); +#1080 = CARTESIAN_POINT('NONE', (-0.08134281273721117, 0.12700000000000003, 0.04013476851418444)); +#1081 = LINE('NONE', #1080, #1079); +#1082 = DIRECTION('NONE', (0.984807753012208, 0.0000000000000008137926823308236, -0.1736481776669305)); +#1083 = DIRECTION('NONE', (0.1736481776669305, 0.00000000000000000000000000000007395570986446986, 0.984807753012208)); +#1084 = CARTESIAN_POINT('NONE', (0.04818536833413271, 0.2031999999999999, 0.017295455429215036)); +#1085 = AXIS2_PLACEMENT_3D('NONE', #1084, #1083, #1082); +#1086 = CIRCLE('NONE', #1085, 0.06984999999999998); +#1087 = DIRECTION('NONE', (0.9848077530122075, 0.0000000000000008137926823308233, -0.17364817766693397)); +#1088 = DIRECTION('NONE', (0.17364817766693397, -0.00000000000000002330115053202068, 0.9848077530122075)); +#1089 = CARTESIAN_POINT('NONE', (0.0543602975319688, 0.2031999999999999, 0.0523152191263294)); +#1090 = AXIS2_PLACEMENT_3D('NONE', #1089, #1088, #1087); +#1091 = CIRCLE('NONE', #1090, 0.06985000000000001); +#1092 = DIRECTION('NONE', (0.9848077530122099, 0, -0.17364817766692023)); +#1093 = DIRECTION('NONE', (0, -1.0000000000000002, 0)); +#1094 = CARTESIAN_POINT('NONE', (0.12064770738722044, 0.20319999999999996, 0.04062696028756805)); +#1095 = AXIS2_PLACEMENT_3D('NONE', #1094, #1093, #1092); +#1096 = CIRCLE('NONE', #1095, 0.0025400000000000344); +#1097 = DIRECTION('NONE', (0.9848077530122074, 0, -0.17364817766693397)); +#1098 = DIRECTION('NONE', (-0.17364817766693397, -0.00000000000000005018581727259703, -0.9848077530122074)); +#1099 = CARTESIAN_POINT('NONE', (0.05480136390324276, 0.20319999999999996, 0.05481663081898041)); +#1100 = AXIS2_PLACEMENT_3D('NONE', #1099, #1098, #1097); +#1101 = CIRCLE('NONE', #1100, 0.06731000000000006); +#1102 = DIRECTION('NONE', (0.17364817766693044, 0, 0.9848077530122081)); +#1103 = VECTOR('NONE', #1102, 1); +#1104 = CARTESIAN_POINT('NONE', (0.11697418988203542, 0.20319999999999996, 0.005166130219179945)); +#1105 = LINE('NONE', #1104, #1103); +#1106 = DIRECTION('NONE', (0.9848077530122085, 0.0000000000000055948246910243915, -0.17364817766692753)); +#1107 = DIRECTION('NONE', (0.17364817766692753, 0.00000000000000010325094779202366, 0.9848077530122085)); +#1108 = CARTESIAN_POINT('NONE', (0.0548013639032427, 0.17145, 0.054816630818980173)); +#1109 = AXIS2_PLACEMENT_3D('NONE', #1108, #1107, #1106); +#1110 = CIRCLE('NONE', #1109, 0.005080000000000018); +#1111 = DIRECTION('NONE', (0.17364817766693086, 0, 0.984807753012208)); +#1112 = VECTOR('NONE', #1111, 1); +#1113 = CARTESIAN_POINT('NONE', (0.05980418728854474, 0.17145000000000002, 0.05393449807643218)); +#1114 = LINE('NONE', #1113, #1112); +#1115 = DIRECTION('NONE', (0.9848077530122082, 0, -0.1736481776669294)); +#1116 = DIRECTION('NONE', (0.1736481776669294, 0, 0.9848077530122082)); +#1117 = CARTESIAN_POINT('NONE', (0.055683496645790725, 0.17145000000000002, 0.0598194542042822)); +#1118 = AXIS2_PLACEMENT_3D('NONE', #1117, #1116, #1115); +#1119 = CIRCLE('NONE', #1118, 0.005080000000000005); +#1120 = DIRECTION('NONE', (-0.0000000000000055948246910243655, 1, 0.0000000000000027974123455121827)); +#1121 = DIRECTION('NONE', (0.17364817766693028, -0.0000000000000017833822542701362, 0.9848077530122081)); +#1122 = CARTESIAN_POINT('NONE', (0.08606901006138033, 0.20320000000000002, 0.049303301178055134)); +#1123 = AXIS2_PLACEMENT_3D('NONE', #1122, #1121, #1120); +#1124 = CIRCLE('NONE', #1123, 0.005080000000000041); +#1125 = DIRECTION('NONE', (0.17364817766692955, 0, 0.9848077530122082)); +#1126 = VECTOR('NONE', #1125, 1); +#1127 = CARTESIAN_POINT('NONE', (0.0860690100613803, 0.20828000000000005, 0.04930330117805515)); +#1128 = LINE('NONE', #1127, #1126); +#1129 = DIRECTION('NONE', (-0.00000000000000839223703653655, 1, 0.0000000000000013987061727560914)); +#1130 = DIRECTION('NONE', (0.17364817766693072, 0.00000000000000007983998482726326, 0.984807753012208)); +#1131 = CARTESIAN_POINT('NONE', (0.08695114280392835, 0.20320000000000002, 0.054306124563357164)); +#1132 = AXIS2_PLACEMENT_3D('NONE', #1131, #1130, #1129); +#1133 = CIRCLE('NONE', #1132, 0.005080000000000041); +#1134 = DIRECTION('NONE', (-0.9848077530122086, 0.000000000000005594824691024408, 0.17364817766692806)); +#1135 = DIRECTION('NONE', (0.17364817766692806, -0.00000000000000010325094779202643, 0.9848077530122086)); +#1136 = CARTESIAN_POINT('NONE', (0.05480136390324273, 0.23495000000000002, 0.05481663081898019)); +#1137 = AXIS2_PLACEMENT_3D('NONE', #1136, #1135, #1134); +#1138 = CIRCLE('NONE', #1137, 0.005080000000000003); +#1139 = DIRECTION('NONE', (0.17364817766693086, 0, 0.984807753012208)); +#1140 = VECTOR('NONE', #1139, 1); +#1141 = CARTESIAN_POINT('NONE', (0.049798540517940706, 0.23495000000000005, 0.05569876356152818)); +#1142 = LINE('NONE', #1141, #1140); +#1143 = DIRECTION('NONE', (-0.9848077530122082, 0, 0.1736481776669294)); +#1144 = DIRECTION('NONE', (0.1736481776669294, -0.0000000000000002409188781814148, 0.9848077530122082)); +#1145 = CARTESIAN_POINT('NONE', (0.05568349664579074, 0.23495000000000005, 0.0598194542042822)); +#1146 = AXIS2_PLACEMENT_3D('NONE', #1145, #1144, #1143); +#1147 = CIRCLE('NONE', #1146, 0.005080000000000005); +#1148 = DIRECTION('NONE', (-0.0000000000000027974123455121985, -1, 0.0000000000000013987061727560993)); +#1149 = DIRECTION('NONE', (0.1736481776669295, 0.0000000000000008916911271350752, 0.9848077530122081)); +#1150 = CARTESIAN_POINT('NONE', (0.023533717745105123, 0.20320000000000008, 0.0603299604599052)); +#1151 = AXIS2_PLACEMENT_3D('NONE', #1150, #1149, #1148); +#1152 = CIRCLE('NONE', #1151, 0.0050800000000000125); +#1153 = DIRECTION('NONE', (0.17364817766692955, 0, 0.9848077530122082)); +#1154 = VECTOR('NONE', #1153, 1); +#1155 = CARTESIAN_POINT('NONE', (0.02353371774510511, 0.19812000000000007, 0.060329960459905206)); +#1156 = LINE('NONE', #1155, #1154); +#1157 = DIRECTION('NONE', (-0.000000000000003496765431890268, -1, -0)); +#1158 = DIRECTION('NONE', (0.17364817766693091, -0.0000000000000006072069449764637, 0.984807753012208)); +#1159 = CARTESIAN_POINT('NONE', (0.024415850487653133, 0.20320000000000005, 0.06533278384520723)); +#1160 = AXIS2_PLACEMENT_3D('NONE', #1159, #1158, #1157); +#1161 = CIRCLE('NONE', #1160, 0.005079999999999984); +#1162 = DIRECTION('NONE', (0.9848077530122079, 0, -0.17364817766693177)); +#1163 = DIRECTION('NONE', (0.17364817766693177, 0, 0.9848077530122079)); +#1164 = CARTESIAN_POINT('NONE', (0.05480136390324273, 0.20320000000000005, 0.05481663081898015)); +#1165 = AXIS2_PLACEMENT_3D('NONE', #1164, #1163, #1162); +#1166 = CIRCLE('NONE', #1165, 0.01269999999999998); +#1167 = DIRECTION('NONE', (0.984807753012207, -0.000000000000004475859752819517, -0.17364817766693552)); +#1168 = DIRECTION('NONE', (0.17364817766693552, 0.00000000000000011013434431149727, 0.984807753012207)); +#1169 = CARTESIAN_POINT('NONE', (0.05502189708887968, 0.2032000000000001, 0.056067336665305695)); +#1170 = AXIS2_PLACEMENT_3D('NONE', #1169, #1168, #1167); +#1171 = CIRCLE('NONE', #1170, 0.012700000000000034); +#1172 = DIRECTION('NONE', (0.9848077530122114, 0.000000000000022379298764096995, -0.17364817766691193)); +#1173 = DIRECTION('NONE', (0.000000000000026730274103392636, -1, 0.000000000000022717672399837052)); +#1174 = CARTESIAN_POINT('NONE', (0.06502754385948366, 0.2032, 0.05430307118020958)); +#1175 = AXIS2_PLACEMENT_3D('NONE', #1174, #1173, #1172); +#1176 = CIRCLE('NONE', #1175, 0.002540000000000074); +#1177 = DIRECTION('NONE', (0.9848077530122074, -0.0000000000000027974123455121883, -0.17364817766693547)); +#1178 = DIRECTION('NONE', (-0.17364817766693547, -0.00000000000000027533586077875383, -0.9848077530122074)); +#1179 = CARTESIAN_POINT('NONE', (0.055462963460153676, 0.20320000000000008, 0.05856874835795671)); +#1180 = AXIS2_PLACEMENT_3D('NONE', #1179, #1178, #1177); +#1181 = CIRCLE('NONE', #1180, 0.010160000000000063); +#1182 = DIRECTION('NONE', (0.17364817766693025, 0.000000000000043709567898628344, 0.9848077530122081)); +#1183 = VECTOR('NONE', #1182, 1); +#1184 = CARTESIAN_POINT('NONE', (0.06730842236649776, 0.20320000000000005, 0.052611298962610124)); +#1185 = LINE('NONE', #1184, #1183); +#1186 = DIRECTION('NONE', (1, 0, -0)); +#1187 = DIRECTION('NONE', (0, 1, 0)); +#1188 = CARTESIAN_POINT('NONE', (0, 0.09144, 0)); +#1189 = AXIS2_PLACEMENT_3D('NONE', #1188, #1187, #1186); +#1190 = CIRCLE('NONE', #1189, 0.09906000000000001); +#1191 = DIRECTION('NONE', (1, 0, 0.000000000000000002601011491501178)); +#1192 = DIRECTION('NONE', (-0, 1, 0)); +#1193 = CARTESIAN_POINT('NONE', (0, 0.12445999999999999, 0)); +#1194 = AXIS2_PLACEMENT_3D('NONE', #1193, #1192, #1191); +#1195 = CIRCLE('NONE', #1194, 0.09906000000000001); +#1196 = DIRECTION('NONE', (1, -0.000000000000039163772837172315, 0.000000000000000000000000000007201461511737355)); +#1197 = DIRECTION('NONE', (-0.00000000000000000000000000000322871000693641, 0.0000000000000001014394481685433, 1)); +#1198 = CARTESIAN_POINT('NONE', (0.09652000000000009, 0.1244600000000001, 0.00000000000000000025765619834808843)); +#1199 = AXIS2_PLACEMENT_3D('NONE', #1198, #1197, #1196); +#1200 = CIRCLE('NONE', #1199, 0.002539999999999907); +#1201 = DIRECTION('NONE', (1, 0, -0.00000000000000005205445366543805)); +#1202 = DIRECTION('NONE', (0, -1, 0)); +#1203 = CARTESIAN_POINT('NONE', (0.00000000000000000502429586778808, 0.12699999999999997, 0.000000000000000005024295867788081)); +#1204 = AXIS2_PLACEMENT_3D('NONE', #1203, #1202, #1201); +#1205 = CIRCLE('NONE', #1204, 0.09652); +#1206 = DIRECTION('NONE', (0.000000000000000840568613435157, 1, 0)); +#1207 = VECTOR('NONE', #1206, 1); +#1208 = CARTESIAN_POINT('NONE', (0.09906000000000001, 0.09144, -0)); +#1209 = LINE('NONE', #1208, #1207); +#1210 = DIRECTION('NONE', (0, 1, 0)); +#1211 = VECTOR('NONE', #1210, 1); +#1212 = CARTESIAN_POINT('NONE', (0.0762, 0, 0.127)); +#1213 = LINE('NONE', #1212, #1211); +#1214 = DIRECTION('NONE', (0.7071067811865476, 0, -0.7071067811865476)); +#1215 = VECTOR('NONE', #1214, 1); +#1216 = CARTESIAN_POINT('NONE', (0.0762, 0.0127, 0.127)); +#1217 = LINE('NONE', #1216, #1215); +#1218 = DIRECTION('NONE', (0, -1, 0)); +#1219 = VECTOR('NONE', #1218, 1); +#1220 = CARTESIAN_POINT('NONE', (0.127, 0.0127, 0.0762)); +#1221 = LINE('NONE', #1220, #1219); +#1222 = DIRECTION('NONE', (-0.7071067811865476, 0, 0.7071067811865476)); +#1223 = VECTOR('NONE', #1222, 1); +#1224 = CARTESIAN_POINT('NONE', (0.127, 0, 0.0762)); +#1225 = LINE('NONE', #1224, #1223); +#1226 = DIRECTION('NONE', (0, 1, 0)); +#1227 = VECTOR('NONE', #1226, 1); +#1228 = CARTESIAN_POINT('NONE', (0.127, 0, -0.0762)); +#1229 = LINE('NONE', #1228, #1227); +#1230 = DIRECTION('NONE', (-0.7071067811865475, 0, -0.7071067811865477)); +#1231 = VECTOR('NONE', #1230, 1); +#1232 = CARTESIAN_POINT('NONE', (0.127, 0.0127, -0.0762)); +#1233 = LINE('NONE', #1232, #1231); +#1234 = DIRECTION('NONE', (0, -1, 0)); +#1235 = VECTOR('NONE', #1234, 1); +#1236 = CARTESIAN_POINT('NONE', (0.07620000000000002, 0.0127, -0.127)); +#1237 = LINE('NONE', #1236, #1235); +#1238 = DIRECTION('NONE', (0.7071067811865475, 0, 0.7071067811865477)); +#1239 = VECTOR('NONE', #1238, 1); +#1240 = CARTESIAN_POINT('NONE', (0.07620000000000002, 0, -0.127)); +#1241 = LINE('NONE', #1240, #1239); +#1242 = DIRECTION('NONE', (0, 0, -1)); +#1243 = VECTOR('NONE', #1242, 1); +#1244 = CARTESIAN_POINT('NONE', (0.127, 0, 0.07619999999999999)); +#1245 = LINE('NONE', #1244, #1243); +#1246 = DIRECTION('NONE', (0, 0, 1)); +#1247 = VECTOR('NONE', #1246, 1); +#1248 = CARTESIAN_POINT('NONE', (0.127, 0.0127, -0.07619999999999999)); +#1249 = LINE('NONE', #1248, #1247); +#1250 = DIRECTION('NONE', (0, 1, 0)); +#1251 = VECTOR('NONE', #1250, 1); +#1252 = CARTESIAN_POINT('NONE', (-0.07619999999999999, 0, -0.127)); +#1253 = LINE('NONE', #1252, #1251); +#1254 = DIRECTION('NONE', (-0.7071067811865475, 0, 0.7071067811865477)); +#1255 = VECTOR('NONE', #1254, 1); +#1256 = CARTESIAN_POINT('NONE', (-0.07619999999999999, 0.0127, -0.127)); +#1257 = LINE('NONE', #1256, #1255); +#1258 = DIRECTION('NONE', (0, -1, 0)); +#1259 = VECTOR('NONE', #1258, 1); +#1260 = CARTESIAN_POINT('NONE', (-0.12699999999999997, 0.0127, -0.0762)); +#1261 = LINE('NONE', #1260, #1259); +#1262 = DIRECTION('NONE', (0.7071067811865475, 0, -0.7071067811865477)); +#1263 = VECTOR('NONE', #1262, 1); +#1264 = CARTESIAN_POINT('NONE', (-0.12699999999999997, 0, -0.0762)); +#1265 = LINE('NONE', #1264, #1263); +#1266 = DIRECTION('NONE', (-1, 0, 0)); +#1267 = VECTOR('NONE', #1266, 1); +#1268 = CARTESIAN_POINT('NONE', (0.07620000000000006, 0, -0.127)); +#1269 = LINE('NONE', #1268, #1267); +#1270 = DIRECTION('NONE', (1, 0, 0)); +#1271 = VECTOR('NONE', #1270, 1); +#1272 = CARTESIAN_POINT('NONE', (-0.07620000000000003, 0.0127, -0.127)); +#1273 = LINE('NONE', #1272, #1271); +#1274 = DIRECTION('NONE', (0, 1, 0)); +#1275 = VECTOR('NONE', #1274, 1); +#1276 = CARTESIAN_POINT('NONE', (-0.0762, 0, 0.127)); +#1277 = LINE('NONE', #1276, #1275); +#1278 = DIRECTION('NONE', (-0.7071067811865476, 0, -0.7071067811865476)); +#1279 = VECTOR('NONE', #1278, 1); +#1280 = CARTESIAN_POINT('NONE', (-0.0762, 0.0127, 0.127)); +#1281 = LINE('NONE', #1280, #1279); +#1282 = DIRECTION('NONE', (0, -1, 0)); +#1283 = VECTOR('NONE', #1282, 1); +#1284 = CARTESIAN_POINT('NONE', (-0.127, 0.0127, 0.0762)); +#1285 = LINE('NONE', #1284, #1283); +#1286 = DIRECTION('NONE', (0.7071067811865476, 0, 0.7071067811865476)); +#1287 = VECTOR('NONE', #1286, 1); +#1288 = CARTESIAN_POINT('NONE', (-0.127, 0, 0.0762)); +#1289 = LINE('NONE', #1288, #1287); +#1290 = DIRECTION('NONE', (1, 0, 0)); +#1291 = VECTOR('NONE', #1290, 1); +#1292 = CARTESIAN_POINT('NONE', (-0.07619999999999999, 0, 0.127)); +#1293 = LINE('NONE', #1292, #1291); +#1294 = DIRECTION('NONE', (-1, 0, 0)); +#1295 = VECTOR('NONE', #1294, 1); +#1296 = CARTESIAN_POINT('NONE', (0.07619999999999999, 0.0127, 0.127)); +#1297 = LINE('NONE', #1296, #1295); +#1298 = DIRECTION('NONE', (-0.00000000000000018212319957761742, 0, 1)); +#1299 = VECTOR('NONE', #1298, 1); +#1300 = CARTESIAN_POINT('NONE', (-0.12699999999999997, 0, -0.07620000000000005)); +#1301 = LINE('NONE', #1300, #1299); +#1302 = DIRECTION('NONE', (0.00000000000000018212319957761742, 0, -1)); +#1303 = VECTOR('NONE', #1302, 1); +#1304 = CARTESIAN_POINT('NONE', (-0.127, 0.0127, 0.07620000000000005)); +#1305 = LINE('NONE', #1304, #1303); +#1306 = DIRECTION('NONE', (1, 0, 0.00000000000000004945173098216614)); +#1307 = DIRECTION('NONE', (-0, 1, 0)); +#1308 = CARTESIAN_POINT('NONE', (0.00000000000000000502429586778808, 0.0127, -0.00000000000000000502429586778808)); +#1309 = AXIS2_PLACEMENT_3D('NONE', #1308, #1307, #1306); +#1310 = CIRCLE('NONE', #1309, 0.1016); +#1311 = DIRECTION('NONE', (1, 0, -0.000000000000000000000000000000010980490068794015)); +#1312 = DIRECTION('NONE', (0, 1, 0)); +#1313 = CARTESIAN_POINT('NONE', (0.00000000000000001004859173557616, 0.08636, 0.0000000000000000000000000000000011156177909894718)); +#1314 = AXIS2_PLACEMENT_3D('NONE', #1313, #1312, #1311); +#1315 = CIRCLE('NONE', #1314, 0.10159999999999998); +#1316 = DIRECTION('NONE', (1, 0.0000000000000055948246910243655, -0)); +#1317 = DIRECTION('NONE', (0, 0, 1)); +#1318 = CARTESIAN_POINT('NONE', (0.09905999999999997, 0.08635999999999998, 0)); +#1319 = AXIS2_PLACEMENT_3D('NONE', #1318, #1317, #1316); +#1320 = CIRCLE('NONE', #1319, 0.0025400000000000205); +#1321 = DIRECTION('NONE', (1, 0, -0)); +#1322 = DIRECTION('NONE', (0, -1, 0)); +#1323 = CARTESIAN_POINT('NONE', (0, 0.0889, -0)); +#1324 = AXIS2_PLACEMENT_3D('NONE', #1323, #1322, #1321); +#1325 = CIRCLE('NONE', #1324, 0.09905999999999998); +#1326 = DIRECTION('NONE', (0, 1, 0)); +#1327 = VECTOR('NONE', #1326, 1); +#1328 = CARTESIAN_POINT('NONE', (0.1016, 0.0127, -0)); +#1329 = LINE('NONE', #1328, #1327); +#1330 = DIRECTION('NONE', (1, 0, 0.00000000000000004945173098216614)); +#1331 = DIRECTION('NONE', (-0, 1, 0)); +#1332 = CARTESIAN_POINT('NONE', (0.00000000000000000062803698347351, 0.0889, -0.00000000000000000062803698347351)); +#1333 = AXIS2_PLACEMENT_3D('NONE', #1332, #1331, #1330); +#1334 = CIRCLE('NONE', #1333, 0.0127); +#1335 = DIRECTION('NONE', (0, 1, 0)); +#1336 = VECTOR('NONE', #1335, 1); +#1337 = CARTESIAN_POINT('NONE', (0.0127, 0.0889, -0)); +#1338 = LINE('NONE', #1337, #1336); +#1339 = DIRECTION('NONE', (1, 0, 0.00000000000000004945173098216614)); +#1340 = DIRECTION('NONE', (-0, 1, 0)); +#1341 = CARTESIAN_POINT('NONE', (0.00000000000000000062803698347351, 0.11430000000000001, -0.00000000000000000062803698347351)); +#1342 = AXIS2_PLACEMENT_3D('NONE', #1341, #1340, #1339); +#1343 = CIRCLE('NONE', #1342, 0.0127); +#1344 = CARTESIAN_POINT('NONE', (-0.09144, 0, 0.0635)); +#1345 = CARTESIAN_POINT('NONE', (-0.09145066411512032, -0.000000000000000000013877787807814457, 0.06303689579786446)); +#1346 = CARTESIAN_POINT('NONE', (-0.09145076925547771, 0, 0.06303232992992579)); +#1347 = CARTESIAN_POINT('NONE', (-0.09148351632977439, -0.000000000000000000013877787807814457, 0.06256182889657647)); +#1348 = CARTESIAN_POINT('NONE', (-0.09148383919192059, 0, 0.06255719010130452)); +#1349 = CARTESIAN_POINT('NONE', (-0.09153973472784684, -0.000000000000000000013877787807814457, 0.062080706711836846)); +#1350 = CARTESIAN_POINT('NONE', (-0.09154028581685493, 0, 0.062076008934919144)); +#1351 = CARTESIAN_POINT('NONE', (-0.09162028914777405, -0.000000000000000000013877787807814457, 0.06159510418791578)); +#1352 = CARTESIAN_POINT('NONE', (-0.09162107792196772, -0.0000000000000000000002168404344971009, 0.06159036281965401)); +#1353 = CARTESIAN_POINT('NONE', (-0.0917260203730255, 0.000000000000000000013877787807814457, 0.06110673617913803)); +#1354 = CARTESIAN_POINT('NONE', (-0.09172705502866128, 0, 0.0611019679750016)); +#1355 = CARTESIAN_POINT('NONE', (-0.09185761845630096, -0.000000000000000000013877787807814457, 0.06061744571456113)); +#1356 = CARTESIAN_POINT('NONE', (-0.0918589057159835, 0, 0.0606126686802688)); +#1357 = CARTESIAN_POINT('NONE', (-0.09201560208140458, -0.000000000000000000013877787807814457, 0.06012918855133152)); +#1358 = CARTESIAN_POINT('NONE', (-0.092017146992696, 0, 0.06012442179169185)); +#1359 = CARTESIAN_POINT('NONE', (-0.09220029966759132, -0.000000000000000000013877787807814457, 0.059644014069400064)); +#1360 = CARTESIAN_POINT('NONE', (-0.09220210541869944, 0, 0.059639277601437585)); +#1361 = CARTESIAN_POINT('NONE', (-0.09241183293568235, -0.000000000000000000013877787807814457, 0.05916404270842218)); +#1362 = CARTESIAN_POINT('NONE', (-0.09241390069525188, 0, 0.059159357240764245)); +#1363 = CARTESIAN_POINT('NONE', (-0.09265010363538512, -0.000000000000000000013877787807814457, 0.058691440304362574)); +#1364 = CARTESIAN_POINT('NONE', (-0.09265243242321819, 0, 0.05868682698639217)); +#1365 = CARTESIAN_POINT('NONE', (-0.09291478407567368, -0.000000000000000000013877787807814457, 0.05822838983978277)); +#1366 = CARTESIAN_POINT('NONE', (-0.09291737067064103, 0, 0.05822386998559023)); +#1367 = CARTESIAN_POINT('NONE', (-0.09320531200392261, -0.000000000000000000013877787807814457, 0.05777706126802108)); +#1368 = CARTESIAN_POINT('NONE', (-0.09320815089438352, 0, 0.05777265606161426)); +#1369 = CARTESIAN_POINT('NONE', (-0.09352089024676813, -0.000000000000000000013877787807814457, 0.05733958019702864)); +#1370 = CARTESIAN_POINT('NONE', (-0.09352397362751835, 0, 0.0573353103864849)); +#1371 = CARTESIAN_POINT('NONE', (-0.09386049136152139, -0.000000000000000000013877787807814457, 0.0569179963135286)); +#1372 = CARTESIAN_POINT('NONE', (-0.09386380917968282, 0, 0.056913881902695605)); +#1373 = CARTESIAN_POINT('NONE', (-0.09422286735945212, -0.000000000000000000013877787807814457, 0.056514252483909455)); +#1374 = CARTESIAN_POINT('NONE', (-0.09422640740988478, 0, 0.056510312430802234)); +#1375 = CARTESIAN_POINT('NONE', (-0.09460656436194198, -0.000000000000000000013877787807814457, 0.056130155478744996)); +#1376 = CARTESIAN_POINT('NONE', (-0.09461031243080222, 0, 0.05612640740988477)); +#1377 = CARTESIAN_POINT('NONE', (-0.0950099418495884, -0.000000000000000000013877787807814457, 0.05576734923011548)); +#1378 = CARTESIAN_POINT('NONE', (-0.09501388190269562, 0, 0.055763809179682836)); +#1379 = CARTESIAN_POINT('NONE', (-0.09543119597565188, -0.000000000000000000013877787807814457, 0.055427291445679795)); +#1380 = CARTESIAN_POINT('NONE', (-0.09543531038648487, 0, 0.05542397362751836)); +#1381 = CARTESIAN_POINT('NONE', (-0.09586838625107051, -0.000000000000000000013877787807814457, 0.05511123427513376)); +#1382 = CARTESIAN_POINT('NONE', (-0.09587265606161426, 0, 0.05510815089438353)); +#1383 = CARTESIAN_POINT('NONE', (-0.0963194647791834, -0.000000000000000000013877787807814457, 0.054820209561101965)); +#1384 = CARTESIAN_POINT('NONE', (-0.09632386998559023, 0, 0.054817370670641054)); +#1385 = CARTESIAN_POINT('NONE', (-0.09678230713219964, -0.000000000000000000013877787807814457, 0.054555019018185553)); +#1386 = CARTESIAN_POINT('NONE', (-0.09678682698639217, 0, 0.054552432423218195)); +#1387 = CARTESIAN_POINT('NONE', (-0.09725474392279385, -0.000000000000000000013877787807814457, 0.054316229483084955)); +#1388 = CARTESIAN_POINT('NONE', (-0.09725935724076426, 0, 0.05431390069525188)); +#1389 = CARTESIAN_POINT('NONE', (-0.09773459213377964, -0.000000000000000000013877787807814457, 0.05410417317826897)); +#1390 = CARTESIAN_POINT('NONE', (-0.09773927760143757, 0, 0.05410210541869945)); +#1391 = CARTESIAN_POINT('NONE', (-0.09821968532372935, -0.000000000000000000013877787807814457, 0.05391895274380414)); +#1392 = CARTESIAN_POINT('NONE', (-0.09822442179169184, 0, 0.053917146992696)); +#1393 = CARTESIAN_POINT('NONE', (-0.0987079019206291, -0.000000000000000000013877787807814457, 0.05376045062727491)); +#1394 = CARTESIAN_POINT('NONE', (-0.09871266868026878, -0.0000000000000000000002168404344971009, 0.05375890571598349)); +#1395 = CARTESIAN_POINT('NONE', (-0.09919719094070927, 0.000000000000000000013877787807814457, 0.05362834228834385)); +#1396 = CARTESIAN_POINT('NONE', (-0.0992019679750016, 0, 0.05362705502866131)); +#1397 = CARTESIAN_POINT('NONE', (-0.09968559461551754, -0.000000000000000000013877787807814457, 0.05352211257760349)); +#1398 = CARTESIAN_POINT('NONE', (-0.09969036281965399, 0.0000000000000000000002168404344971009, 0.05352107792196771)); +#1399 = CARTESIAN_POINT('NONE', (-0.10017126756665737, -0.000000000000000000013877787807814457, 0.05344107459104863)); +#1400 = CARTESIAN_POINT('NONE', (-0.10017600893491914, 0, 0.05344028581685495)); +#1401 = CARTESIAN_POINT('NONE', (-0.1006524923243868, -0.000000000000000000013877787807814457, 0.05338439028092869)); +#1402 = CARTESIAN_POINT('NONE', (-0.10065719010130451, 0, 0.053383839191920586)); +#1403 = CARTESIAN_POINT('NONE', (-0.10112769113465384, -0.000000000000000000013877787807814457, 0.053351092117623906)); +#1404 = CARTESIAN_POINT('NONE', (-0.10113232992992577, 0, 0.0533507692554777)); +#1405 = CARTESIAN_POINT('NONE', (-0.10159543413206132, -0.000000000000000000013877787807814457, 0.05334010514035739)); +#1406 = CARTESIAN_POINT('NONE', (-0.1016, 0, 0.053340000000000005)); +#1407 = CARTESIAN_POINT('NONE', (-0.10206310420213553, -0.000000000000000000013877787807814457, 0.05335066411512031)); +#1408 = CARTESIAN_POINT('NONE', (-0.10206767007007421, 0, 0.0533507692554777)); +#1409 = CARTESIAN_POINT('NONE', (-0.10253817110342352, -0.000000000000000000013877787807814457, 0.05338351632977438)); +#1410 = CARTESIAN_POINT('NONE', (-0.10254280989869546, 0, 0.053383839191920586)); +#1411 = CARTESIAN_POINT('NONE', (-0.10301929328816313, -0.000000000000000000013877787807814457, 0.05343973472784685)); +#1412 = CARTESIAN_POINT('NONE', (-0.10302399106508084, -0.0000000000000000000002168404344971009, 0.05344028581685495)); +#1413 = CARTESIAN_POINT('NONE', (-0.10350489581208423, 0.000000000000000000013877787807814457, 0.053520289147774035)); +#1414 = CARTESIAN_POINT('NONE', (-0.103509637180346, 0, 0.053521077921967725)); +#1415 = CARTESIAN_POINT('NONE', (-0.10399326382086194, -0.000000000000000000013877787807814457, 0.05362602037302553)); +#1416 = CARTESIAN_POINT('NONE', (-0.10399803202499838, 0, 0.05362705502866131)); +#1417 = CARTESIAN_POINT('NONE', (-0.1044825542854389, -0.000000000000000000013877787807814457, 0.053757618456300955)); +#1418 = CARTESIAN_POINT('NONE', (-0.10448733131973123, 0, 0.0537589057159835)); +#1419 = CARTESIAN_POINT('NONE', (-0.10497081144866847, -0.000000000000000000013877787807814457, 0.053915602081404584)); +#1420 = CARTESIAN_POINT('NONE', (-0.10497557820830815, 0, 0.053917146992696)); +#1421 = CARTESIAN_POINT('NONE', (-0.10545598593059992, -0.000000000000000000013877787807814457, 0.054100299667591306)); +#1422 = CARTESIAN_POINT('NONE', (-0.10546072239856241, 0, 0.05410210541869945)); +#1423 = CARTESIAN_POINT('NONE', (-0.10593595729157784, -0.000000000000000000013877787807814457, 0.05431183293568236)); +#1424 = CARTESIAN_POINT('NONE', (-0.10594064275923577, 0, 0.05431390069525188)); +#1425 = CARTESIAN_POINT('NONE', (-0.10640855969563741, -0.000000000000000000013877787807814457, 0.05455010363538512)); +#1426 = CARTESIAN_POINT('NONE', (-0.10641317301360782, 0, 0.054552432423218195)); +#1427 = CARTESIAN_POINT('NONE', (-0.10687161016021723, -0.000000000000000000013877787807814457, 0.054814784075673695)); +#1428 = CARTESIAN_POINT('NONE', (-0.10687613001440976, 0, 0.054817370670641054)); +#1429 = CARTESIAN_POINT('NONE', (-0.1073229387319789, -0.000000000000000000013877787807814457, 0.0551053120039226)); +#1430 = CARTESIAN_POINT('NONE', (-0.10732734393838571, 0, 0.05510815089438351)); +#1431 = CARTESIAN_POINT('NONE', (-0.10776041980297137, -0.000000000000000000013877787807814457, 0.05542089024676813)); +#1432 = CARTESIAN_POINT('NONE', (-0.1077646896135151, 0, 0.05542397362751836)); +#1433 = CARTESIAN_POINT('NONE', (-0.10818200368647138, -0.000000000000000000013877787807814457, 0.055760491361521405)); +#1434 = CARTESIAN_POINT('NONE', (-0.10818611809730437, 0, 0.055763809179682836)); +#1435 = CARTESIAN_POINT('NONE', (-0.10858574751609054, -0.000000000000000000013877787807814457, 0.056122867359452135)); +#1436 = CARTESIAN_POINT('NONE', (-0.10858968756919775, 0, 0.05612640740988478)); +#1437 = CARTESIAN_POINT('NONE', (-0.10896984452125497, -0.000000000000000000013877787807814457, 0.05650656436194201)); +#1438 = CARTESIAN_POINT('NONE', (-0.1089735925901152, 0, 0.056510312430802234)); +#1439 = CARTESIAN_POINT('NONE', (-0.1093326507698845, -0.000000000000000000013877787807814457, 0.0569099418495884)); +#1440 = CARTESIAN_POINT('NONE', (-0.10933619082031716, 0, 0.05691388190269561)); +#1441 = CARTESIAN_POINT('NONE', (-0.1096727085543202, -0.000000000000000000013877787807814457, 0.0573311959756519)); +#1442 = CARTESIAN_POINT('NONE', (-0.10967602637248162, 0, 0.05733531038648489)); +#1443 = CARTESIAN_POINT('NONE', (-0.10998876572486624, -0.000000000000000000013877787807814457, 0.057768386251070517)); +#1444 = CARTESIAN_POINT('NONE', (-0.10999184910561646, 0, 0.057772656061614254)); +#1445 = CARTESIAN_POINT('NONE', (-0.11027979043889803, -0.000000000000000000013877787807814457, 0.05821946477918341)); +#1446 = CARTESIAN_POINT('NONE', (-0.11028262932935894, 0, 0.058223869985590225)); +#1447 = CARTESIAN_POINT('NONE', (-0.11054498098181446, -0.000000000000000000013877787807814457, 0.05868230713219964)); +#1448 = CARTESIAN_POINT('NONE', (-0.11054756757678182, 0, 0.05868682698639218)); +#1449 = CARTESIAN_POINT('NONE', (-0.11058075742013605, 0, 0.05875257591319727)); +#1450 = CARTESIAN_POINT('NONE', (-0.11078377051691507, -0.000000000000000000013877787807814457, 0.05915474392279385)); +#1451 = CARTESIAN_POINT('NONE', (-0.11078609930474813, 0, 0.05915935724076425)); +#1452 = CARTESIAN_POINT('NONE', (-0.110995826821731, -0.000000000000000000013877787807814457, 0.05963459213377964)); +#1453 = CARTESIAN_POINT('NONE', (-0.11099789458130052, 0, 0.05963927760143758)); +#1454 = CARTESIAN_POINT('NONE', (-0.11118104725619582, -0.000000000000000000013877787807814457, 0.06011968532372937)); +#1455 = CARTESIAN_POINT('NONE', (-0.11118285300730396, 0, 0.06012442179169185)); +#1456 = CARTESIAN_POINT('NONE', (-0.11133954937272508, -0.000000000000000000013877787807814457, 0.06060790192062912)); +#1457 = CARTESIAN_POINT('NONE', (-0.1113410942840165, -0.0000000000000000000002168404344971009, 0.06061266868026879)); +#1458 = CARTESIAN_POINT('NONE', (-0.11147165771165617, 0.000000000000000000013877787807814457, 0.061097190940709284)); +#1459 = CARTESIAN_POINT('NONE', (-0.11147294497133871, 0, 0.06110196797500161)); +#1460 = CARTESIAN_POINT('NONE', (-0.11157788742239648, -0.000000000000000000013877787807814457, 0.06158559461551756)); +#1461 = CARTESIAN_POINT('NONE', (-0.11157892207803226, 0.0000000000000000000002168404344971009, 0.061590362819654)); +#1462 = CARTESIAN_POINT('NONE', (-0.11165892540895136, -0.000000000000000000013877787807814457, 0.062071267566657366)); +#1463 = CARTESIAN_POINT('NONE', (-0.11165971418314505, 0, 0.062076008934919144)); +#1464 = CARTESIAN_POINT('NONE', (-0.1117156097190713, -0.000000000000000000013877787807814457, 0.06255249232438681)); +#1465 = CARTESIAN_POINT('NONE', (-0.11171616080807939, 0, 0.06255719010130452)); +#1466 = CARTESIAN_POINT('NONE', (-0.11174890788237608, -0.000000000000000000013877787807814457, 0.06302769113465384)); +#1467 = CARTESIAN_POINT('NONE', (-0.1117492307445223, 0, 0.06303232992992577)); +#1468 = CARTESIAN_POINT('NONE', (-0.1117598948596426, -0.000000000000000000013877787807814457, 0.06349543413206132)); +#1469 = CARTESIAN_POINT('NONE', (-0.11175999999999998, 0, 0.0635)); +#1470 = CARTESIAN_POINT('NONE', (-0.11174933588487969, -0.000000000000000000013877787807814457, 0.06396310420213554)); +#1471 = CARTESIAN_POINT('NONE', (-0.1117492307445223, 0, 0.06396767007007421)); +#1472 = CARTESIAN_POINT('NONE', (-0.1117164836702256, -0.000000000000000000013877787807814457, 0.06443817110342352)); +#1473 = CARTESIAN_POINT('NONE', (-0.11171616080807939, 0, 0.06444280989869547)); +#1474 = CARTESIAN_POINT('NONE', (-0.11166026527215314, -0.000000000000000000013877787807814457, 0.06491929328816315)); +#1475 = CARTESIAN_POINT('NONE', (-0.11165971418314505, -0.0000000000000000000002168404344971009, 0.06492399106508086)); +#1476 = CARTESIAN_POINT('NONE', (-0.11157971085222596, 0.000000000000000000013877787807814457, 0.06540489581208424)); +#1477 = CARTESIAN_POINT('NONE', (-0.11157892207803227, 0, 0.06540963718034601)); +#1478 = CARTESIAN_POINT('NONE', (-0.11147397962697449, -0.000000000000000000013877787807814457, 0.06589326382086196)); +#1479 = CARTESIAN_POINT('NONE', (-0.11147294497133871, 0, 0.0658980320249984)); +#1480 = CARTESIAN_POINT('NONE', (-0.11134238154369903, -0.000000000000000000013877787807814457, 0.06638255428543888)); +#1481 = CARTESIAN_POINT('NONE', (-0.11134109428401649, 0, 0.06638733131973121)); +#1482 = CARTESIAN_POINT('NONE', (-0.1111843979185954, -0.000000000000000000013877787807814457, 0.06687081144866847)); +#1483 = CARTESIAN_POINT('NONE', (-0.11118285300730398, 0, 0.06687557820830814)); +#1484 = CARTESIAN_POINT('NONE', (-0.1109997003324087, -0.000000000000000000013877787807814457, 0.06735598593059994)); +#1485 = CARTESIAN_POINT('NONE', (-0.11099789458130058, 0, 0.06736072239856243)); +#1486 = CARTESIAN_POINT('NONE', (-0.11078816706431766, -0.000000000000000000013877787807814457, 0.06783595729157783)); +#1487 = CARTESIAN_POINT('NONE', (-0.11078609930474813, 0, 0.06784064275923576)); +#1488 = CARTESIAN_POINT('NONE', (-0.11054989636461489, -0.000000000000000000013877787807814457, 0.06830855969563743)); +#1489 = CARTESIAN_POINT('NONE', (-0.11054756757678183, 0, 0.06831317301360784)); +#1490 = CARTESIAN_POINT('NONE', (-0.1102852159243263, -0.000000000000000000013877787807814457, 0.06877161016021724)); +#1491 = CARTESIAN_POINT('NONE', (-0.11028262932935895, 0, 0.06877613001440977)); +#1492 = CARTESIAN_POINT('NONE', (-0.10999468799607735, -0.000000000000000000013877787807814457, 0.06922293873197893)); +#1493 = CARTESIAN_POINT('NONE', (-0.10999184910561645, 0, 0.06922734393838574)); +#1494 = CARTESIAN_POINT('NONE', (-0.10967910975323188, -0.000000000000000000013877787807814457, 0.06966041980297136)); +#1495 = CARTESIAN_POINT('NONE', (-0.10967602637248164, 0, 0.06966468961351509)); +#1496 = CARTESIAN_POINT('NONE', (-0.10933950863847859, -0.000000000000000000013877787807814457, 0.0700820036864714)); +#1497 = CARTESIAN_POINT('NONE', (-0.10933619082031716, 0, 0.07008611809730439)); +#1498 = CARTESIAN_POINT('NONE', (-0.10897713264054787, -0.000000000000000000013877787807814457, 0.07048574751609056)); +#1499 = CARTESIAN_POINT('NONE', (-0.10897359259011521, 0, 0.07048968756919777)); +#1500 = CARTESIAN_POINT('NONE', (-0.108593435638058, -0.000000000000000000013877787807814457, 0.07086984452125498)); +#1501 = CARTESIAN_POINT('NONE', (-0.10858968756919776, 0, 0.07087359259011522)); +#1502 = CARTESIAN_POINT('NONE', (-0.10819005815041159, -0.000000000000000000013877787807814457, 0.07123265076988451)); +#1503 = CARTESIAN_POINT('NONE', (-0.10818611809730437, 0, 0.07123619082031717)); +#1504 = CARTESIAN_POINT('NONE', (-0.10776880402434809, -0.000000000000000000013877787807814457, 0.0715727085543202)); +#1505 = CARTESIAN_POINT('NONE', (-0.10776468961351508, 0, 0.07157602637248163)); +#1506 = CARTESIAN_POINT('NONE', (-0.10733161374892948, -0.000000000000000000013877787807814457, 0.07188876572486624)); +#1507 = CARTESIAN_POINT('NONE', (-0.10732734393838575, 0, 0.07189184910561647)); +#1508 = CARTESIAN_POINT('NONE', (-0.10688053522081659, -0.000000000000000000013877787807814457, 0.07217979043889805)); +#1509 = CARTESIAN_POINT('NONE', (-0.10687613001440976, 0, 0.07218262932935895)); +#1510 = CARTESIAN_POINT('NONE', (-0.10641769286780038, -0.000000000000000000013877787807814457, 0.07244498098181447)); +#1511 = CARTESIAN_POINT('NONE', (-0.10641317301360785, 0, 0.07244756757678182)); +#1512 = CARTESIAN_POINT('NONE', (-0.10594525607720617, -0.000000000000000000013877787807814457, 0.07268377051691507)); +#1513 = CARTESIAN_POINT('NONE', (-0.10594064275923576, 0, 0.07268609930474813)); +#1514 = CARTESIAN_POINT('NONE', (-0.10546540786622034, -0.000000000000000000013877787807814457, 0.07289582682173104)); +#1515 = CARTESIAN_POINT('NONE', (-0.10546072239856241, 0, 0.07289789458130057)); +#1516 = CARTESIAN_POINT('NONE', (-0.10498031467627063, -0.000000000000000000013877787807814457, 0.07308104725619584)); +#1517 = CARTESIAN_POINT('NONE', (-0.10497557820830813, 0, 0.07308285300730398)); +#1518 = CARTESIAN_POINT('NONE', (-0.10449209807937086, -0.000000000000000000013877787807814457, 0.07323954937272509)); +#1519 = CARTESIAN_POINT('NONE', (-0.10448733131973119, -0.0000000000000000000002168404344971009, 0.07324109428401651)); +#1520 = CARTESIAN_POINT('NONE', (-0.10400280905929071, 0.000000000000000000013877787807814457, 0.07337165771165616)); +#1521 = CARTESIAN_POINT('NONE', (-0.10399803202499838, 0, 0.0733729449713387)); +#1522 = CARTESIAN_POINT('NONE', (-0.10351440538448242, -0.000000000000000000013877787807814457, 0.07347788742239651)); +#1523 = CARTESIAN_POINT('NONE', (-0.10350963718034598, 0.0000000000000000000002168404344971009, 0.07347892207803228)); +#1524 = CARTESIAN_POINT('NONE', (-0.10302873243334261, -0.000000000000000000013877787807814457, 0.07355892540895137)); +#1525 = CARTESIAN_POINT('NONE', (-0.10302399106508084, 0, 0.07355971418314505)); +#1526 = CARTESIAN_POINT('NONE', (-0.10254750767561317, -0.000000000000000000013877787807814457, 0.0736156097190713)); +#1527 = CARTESIAN_POINT('NONE', (-0.10254280989869546, 0, 0.0736161608080794)); +#1528 = CARTESIAN_POINT('NONE', (-0.10207230886534616, -0.000000000000000000013877787807814457, 0.0736489078823761)); +#1529 = CARTESIAN_POINT('NONE', (-0.10206767007007421, 0, 0.07364923074452231)); +#1530 = CARTESIAN_POINT('NONE', (-0.10160456586793867, -0.000000000000000000013877787807814457, 0.07365989485964261)); +#1531 = CARTESIAN_POINT('NONE', (-0.1016, 0, 0.07366)); +#1532 = CARTESIAN_POINT('NONE', (-0.10113689579786446, -0.000000000000000000013877787807814457, 0.07364933588487971)); +#1533 = CARTESIAN_POINT('NONE', (-0.10113232992992577, 0, 0.07364923074452231)); +#1534 = CARTESIAN_POINT('NONE', (-0.10066182889657645, -0.000000000000000000013877787807814457, 0.07361648367022561)); +#1535 = CARTESIAN_POINT('NONE', (-0.10065719010130451, 0, 0.0736161608080794)); +#1536 = CARTESIAN_POINT('NONE', (-0.10018070671183685, -0.000000000000000000013877787807814457, 0.07356026527215315)); +#1537 = CARTESIAN_POINT('NONE', (-0.10017600893491914, -0.0000000000000000000002168404344971009, 0.07355971418314505)); +#1538 = CARTESIAN_POINT('NONE', (-0.09969510418791577, 0.000000000000000000013877787807814457, 0.07347971085222597)); +#1539 = CARTESIAN_POINT('NONE', (-0.099690362819654, 0, 0.07347892207803229)); +#1540 = CARTESIAN_POINT('NONE', (-0.09920673617913804, -0.000000000000000000013877787807814457, 0.07337397962697448)); +#1541 = CARTESIAN_POINT('NONE', (-0.09920196797500161, 0, 0.0733729449713387)); +#1542 = CARTESIAN_POINT('NONE', (-0.09871744571456112, -0.000000000000000000013877787807814457, 0.07324238154369905)); +#1543 = CARTESIAN_POINT('NONE', (-0.09871266868026879, 0, 0.07324109428401651)); +#1544 = CARTESIAN_POINT('NONE', (-0.09822918855133153, -0.000000000000000000013877787807814457, 0.0730843979185954)); +#1545 = CARTESIAN_POINT('NONE', (-0.09822442179169186, 0, 0.07308285300730398)); +#1546 = CARTESIAN_POINT('NONE', (-0.09774401406940009, -0.000000000000000000013877787807814457, 0.0728997003324087)); +#1547 = CARTESIAN_POINT('NONE', (-0.0977392776014376, 0, 0.07289789458130057)); +#1548 = CARTESIAN_POINT('NONE', (-0.09726404270842219, -0.000000000000000000013877787807814457, 0.07268816706431767)); +#1549 = CARTESIAN_POINT('NONE', (-0.09725935724076426, 0, 0.07268609930474813)); +#1550 = CARTESIAN_POINT('NONE', (-0.09685257591319725, 0, 0.07248075742013607)); +#1551 = CARTESIAN_POINT('NONE', (-0.09679144030436257, -0.000000000000000000013877787807814457, 0.07244989636461488)); +#1552 = CARTESIAN_POINT('NONE', (-0.09678682698639215, 0, 0.07244756757678182)); +#1553 = CARTESIAN_POINT('NONE', (-0.09632838983978276, -0.000000000000000000013877787807814457, 0.07218521592432632)); +#1554 = CARTESIAN_POINT('NONE', (-0.09632386998559023, 0, 0.07218262932935895)); +#1555 = CARTESIAN_POINT('NONE', (-0.09587706126802105, -0.000000000000000000013877787807814457, 0.07189468799607737)); +#1556 = CARTESIAN_POINT('NONE', (-0.09587265606161424, 0, 0.07189184910561645)); +#1557 = CARTESIAN_POINT('NONE', (-0.0954395801970286, -0.000000000000000000013877787807814457, 0.07157910975323187)); +#1558 = CARTESIAN_POINT('NONE', (-0.09543531038648487, 0, 0.07157602637248163)); +#1559 = CARTESIAN_POINT('NONE', (-0.09501799631352859, -0.000000000000000000013877787807814457, 0.0712395086384786)); +#1560 = CARTESIAN_POINT('NONE', (-0.0950138819026956, 0, 0.07123619082031717)); +#1561 = CARTESIAN_POINT('NONE', (-0.09461425248390944, -0.000000000000000000013877787807814457, 0.07087713264054787)); +#1562 = CARTESIAN_POINT('NONE', (-0.09461031243080223, 0, 0.07087359259011522)); +#1563 = CARTESIAN_POINT('NONE', (-0.094230155478745, -0.000000000000000000013877787807814457, 0.070493435638058)); +#1564 = CARTESIAN_POINT('NONE', (-0.09422640740988478, 0, 0.07048968756919777)); +#1565 = CARTESIAN_POINT('NONE', (-0.09386734923011547, -0.000000000000000000013877787807814457, 0.07009005815041161)); +#1566 = CARTESIAN_POINT('NONE', (-0.09386380917968282, 0, 0.07008611809730439)); +#1567 = CARTESIAN_POINT('NONE', (-0.0935272914456798, -0.000000000000000000013877787807814457, 0.0696688040243481)); +#1568 = CARTESIAN_POINT('NONE', (-0.09352397362751835, 0, 0.06966468961351509)); +#1569 = CARTESIAN_POINT('NONE', (-0.09321123427513375, -0.000000000000000000013877787807814457, 0.06923161374892947)); +#1570 = CARTESIAN_POINT('NONE', (-0.09320815089438352, 0, 0.06922734393838574)); +#1571 = CARTESIAN_POINT('NONE', (-0.09292020956110196, -0.000000000000000000013877787807814457, 0.0687805352208166)); +#1572 = CARTESIAN_POINT('NONE', (-0.09291737067064104, 0, 0.06877613001440978)); +#1573 = CARTESIAN_POINT('NONE', (-0.09265501901818556, -0.000000000000000000013877787807814457, 0.06831769286780037)); +#1574 = CARTESIAN_POINT('NONE', (-0.0926524324232182, 0, 0.06831317301360784)); +#1575 = CARTESIAN_POINT('NONE', (-0.09241622948308492, -0.000000000000000000013877787807814457, 0.06784525607720618)); +#1576 = CARTESIAN_POINT('NONE', (-0.09241390069525185, 0, 0.06784064275923576)); +#1577 = CARTESIAN_POINT('NONE', (-0.09220417317826896, -0.000000000000000000013877787807814457, 0.06736540786622035)); +#1578 = CARTESIAN_POINT('NONE', (-0.09220210541869943, 0, 0.06736072239856242)); +#1579 = CARTESIAN_POINT('NONE', (-0.09201895274380414, -0.000000000000000000013877787807814457, 0.06688031467627063)); +#1580 = CARTESIAN_POINT('NONE', (-0.09201714699269602, 0, 0.06687557820830814)); +#1581 = CARTESIAN_POINT('NONE', (-0.09186045062727488, -0.000000000000000000013877787807814457, 0.06639209807937088)); +#1582 = CARTESIAN_POINT('NONE', (-0.09185890571598347, -0.0000000000000000000002168404344971009, 0.06638733131973121)); +#1583 = CARTESIAN_POINT('NONE', (-0.09172834228834385, 0.000000000000000000013877787807814457, 0.06590280905929073)); +#1584 = CARTESIAN_POINT('NONE', (-0.09172705502866131, 0, 0.0658980320249984)); +#1585 = CARTESIAN_POINT('NONE', (-0.09162211257760347, -0.000000000000000000013877787807814457, 0.06541440538448243)); +#1586 = CARTESIAN_POINT('NONE', (-0.09162107792196769, 0.0000000000000000000002168404344971009, 0.06540963718034598)); +#1587 = CARTESIAN_POINT('NONE', (-0.09154107459104861, -0.000000000000000000013877787807814457, 0.06492873243334263)); +#1588 = CARTESIAN_POINT('NONE', (-0.09154028581685493, 0, 0.06492399106508086)); +#1589 = CARTESIAN_POINT('NONE', (-0.09148439028092868, -0.000000000000000000013877787807814457, 0.06444750767561318)); +#1590 = CARTESIAN_POINT('NONE', (-0.09148383919192057, 0, 0.06444280989869547)); +#1591 = CARTESIAN_POINT('NONE', (-0.09145109211762391, -0.000000000000000000013877787807814457, 0.06397230886534616)); +#1592 = CARTESIAN_POINT('NONE', (-0.09145076925547771, 0, 0.06396767007007421)); +#1593 = CARTESIAN_POINT('NONE', (-0.09144010514035739, -0.000000000000000000013877787807814457, 0.06350456586793868)); +#1594 = CARTESIAN_POINT('NONE', (-0.09144, 0, 0.0635)); +#1595 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#1344, #1345, #1346, #1347, #1348, #1349, #1350, #1351, #1352, #1353, #1354, #1355, #1356, #1357, #1358, #1359, #1360, #1361, #1362, #1363, #1364, #1365, #1366, #1367, #1368, #1369, #1370, #1371, #1372, #1373, #1374, #1375, #1376, #1377, #1378, #1379, #1380, #1381, #1382, #1383, #1384, #1385, #1386, #1387, #1388, #1389, #1390, #1391, #1392, #1393, #1394, #1395, #1396, #1397, #1398, #1399, #1400, #1401, #1402, #1403, #1404, #1405, #1406, #1407, #1408, #1409, #1410, #1411, #1412, #1413, #1414, #1415, #1416, #1417, #1418, #1419, #1420, #1421, #1422, #1423, #1424, #1425, #1426, #1427, #1428, #1429, #1430, #1431, #1432, #1433, #1434, #1435, #1436, #1437, #1438, #1439, #1440, #1441, #1442, #1443, #1444, #1445, #1446, #1447, #1448, #1449, #1450, #1451, #1452, #1453, #1454, #1455, #1456, #1457, #1458, #1459, #1460, #1461, #1462, #1463, #1464, #1465, #1466, #1467, #1468, #1469, #1470, #1471, #1472, #1473, #1474, #1475, #1476, #1477, #1478, #1479, #1480, #1481, #1482, #1483, #1484, #1485, #1486, #1487, #1488, #1489, #1490, #1491, #1492, #1493, #1494, #1495, #1496, #1497, #1498, #1499, #1500, #1501, #1502, #1503, #1504, #1505, #1506, #1507, #1508, #1509, #1510, #1511, #1512, #1513, #1514, #1515, #1516, #1517, #1518, #1519, #1520, #1521, #1522, #1523, #1524, #1525, #1526, #1527, #1528, #1529, #1530, #1531, #1532, #1533, #1534, #1535, #1536, #1537, #1538, #1539, #1540, #1541, #1542, #1543, #1544, #1545, #1546, #1547, #1548, #1549, #1550, #1551, #1552, #1553, #1554, #1555, #1556, #1557, #1558, #1559, #1560, #1561, #1562, #1563, #1564, #1565, #1566, #1567, #1568, #1569, #1570, #1571, #1572, #1573, #1574, #1575, #1576, #1577, #1578, #1579, #1580, #1581, #1582, #1583, #1584, #1585, #1586, #1587, #1588, #1589, #1590, #1591, #1592, #1593, #1594), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (0, 0.004016064257028112, 0.008032128514056224, 0.012048192771084336, 0.01606425702811245, 0.020080321285140562, 0.024096385542168672, 0.028112449799196783, 0.0321285140562249, 0.03614457831325301, 0.040160642570281124, 0.04417670682730923, 0.048192771084337345, 0.05220883534136546, 0.056224899598393566, 0.06024096385542168, 0.0642570281124498, 0.0682730923694779, 0.07228915662650602, 0.07630522088353413, 0.08032128514056225, 0.08433734939759036, 0.08835341365461846, 0.09236947791164658, 0.09638554216867469, 0.1004016064257028, 0.10441767068273092, 0.10843373493975902, 0.11244979919678713, 0.11646586345381525, 0.12048192771084336, 0.12449799196787148, 0.1285140562248996, 0.1325301204819277, 0.1365461847389558, 0.14056224899598393, 0.14457831325301204, 0.14859437751004015, 0.15261044176706826, 0.15662650602409636, 0.1606425702811245, 0.1646586345381526, 0.1686746987951807, 0.17269076305220882, 0.17670682730923692, 0.18072289156626503, 0.18473895582329317, 0.18875502008032127, 0.19277108433734938, 0.1967871485943775, 0.2008032128514056, 0.20481927710843373, 0.20883534136546184, 0.21285140562248994, 0.21686746987951805, 0.22088353413654616, 0.22489959839357426, 0.2289156626506024, 0.2329317269076305, 0.2369477911646586, 0.24096385542168672, 0.24497991967871482, 0.24899598393574296, 0.25301204819277107, 0.2570281124497992, 0.2610441767068273, 0.2650602409638554, 0.2690763052208835, 0.2730923694779116, 0.2771084337349397, 0.28112449799196787, 0.285140562248996, 0.2891566265060241, 0.2931726907630522, 0.2971887550200803, 0.3012048192771084, 0.3052208835341365, 0.3092369477911646, 0.3132530120481927, 0.31726907630522083, 0.321285140562249, 0.3253012048192771, 0.3293172690763052, 0.3333333333333333, 0.3373493975903614, 0.34136546184738953, 0.34538152610441764, 0.34939759036144574, 0.35341365461847385, 0.35742971887550196, 0.36144578313253006, 0.3654618473895582, 0.36947791164658633, 0.37349397590361444, 0.37751004016064255, 0.38152610441767065, 0.38554216867469876, 0.38955823293172687, 0.393574297188755, 0.3975903614457831, 0.4016064257028112, 0.4056224899598393, 0.40963855421686746, 0.41365461847389556, 0.41767068273092367, 0.4216867469879518, 0.4257028112449799, 0.429718875502008, 0.4337349397590361, 0.4377510040160642, 0.4417670682730923, 0.4457831325301204, 0.4497991967871485, 0.4538152610441767, 0.4578313253012048, 0.4618473895582329, 0.465863453815261, 0.4698795180722891, 0.4738955823293172, 0.47791164658634533, 0.48192771084337344, 0.48594377510040154, 0.48995983935742965, 0.4939759036144578, 0.4979919678714859, 0.5020080321285141, 0.5060240963855422, 0.5100401606425704, 0.5140562248995985, 0.5180722891566265, 0.5220883534136547, 0.5261044176706828, 0.5301204819277109, 0.5341365461847389, 0.5381526104417671, 0.5421686746987953, 0.5461847389558233, 0.5502008032128515, 0.5542168674698795, 0.5582329317269077, 0.5622489959839359, 0.5662650602409639, 0.570281124497992, 0.5742971887550201, 0.5783132530120483, 0.5823293172690763, 0.5863453815261044, 0.5903614457831325, 0.5943775100401607, 0.5983935742971889, 0.6024096385542169, 0.606425702811245, 0.6104417670682731, 0.6144578313253013, 0.6184738955823293, 0.6224899598393574, 0.6265060240963856, 0.6305220883534137, 0.6345381526104418, 0.6385542168674699, 0.642570281124498, 0.6465863453815262, 0.6506024096385543, 0.6546184738955824, 0.6586345381526104, 0.6626506024096386, 0.6666666666666667, 0.6706827309236948, 0.6746987951807228, 0.678714859437751, 0.6827309236947792, 0.6867469879518073, 0.6907630522088354, 0.6947791164658634, 0.6987951807228916, 0.7028112449799198, 0.7068273092369478, 0.7108433734939759, 0.714859437751004, 0.7188755020080322, 0.7228915662650603, 0.7269076305220884, 0.7309236947791165, 0.7349397590361446, 0.7389558232931728, 0.7429718875502008, 0.7469879518072289, 0.751004016064257, 0.7550200803212852, 0.7590361445783133, 0.7630522088353414, 0.7670682730923695, 0.7710843373493976, 0.7751004016064258, 0.7791164658634538, 0.7831325301204819, 0.7871485943775101, 0.7911646586345382, 0.7951807228915663, 0.7991967871485944, 0.8032128514056225, 0.8072289156626506, 0.8112449799196787, 0.8152610441767069, 0.8192771084337349, 0.8232931726907631, 0.8273092369477912, 0.8313253012048193, 0.8353413654618473, 0.8393574297188755, 0.8433734939759037, 0.8473895582329317, 0.8514056224899599, 0.8554216867469879, 0.8594377510040161, 0.8634538152610443, 0.8674698795180723, 0.8714859437751004, 0.8755020080321285, 0.8795180722891567, 0.8835341365461847, 0.8875502008032129, 0.891566265060241, 0.8955823293172691, 0.8995983935742972, 0.9036144578313253, 0.9076305220883534, 0.9116465863453815, 0.9156626506024097, 0.9196787148594378, 0.9236947791164659, 0.927710843373494, 0.9317269076305221, 0.9357429718875502, 0.9397590361445783, 0.9437751004016064, 0.9477911646586346, 0.9518072289156626, 0.9558232931726908, 0.9598393574297188, 0.963855421686747, 0.9678714859437751, 0.9718875502008032, 0.9759036144578314, 0.9799196787148594, 0.9839357429718876, 0.9879518072289156, 0.9919678714859438, 0.9959839357429718, 1), .UNSPECIFIED.); +#1596 = DIRECTION('NONE', (0, 1, 0)); +#1597 = VECTOR('NONE', #1596, 1); +#1598 = CARTESIAN_POINT('NONE', (-0.09144, -0.0000009999999999994458, 0.0635)); +#1599 = LINE('NONE', #1598, #1597); +#1600 = DIRECTION('NONE', (1, 0, -0.0000000000000006993530863780506)); +#1601 = DIRECTION('NONE', (0, 1, 0)); +#1602 = CARTESIAN_POINT('NONE', (-0.10160000000000001, 0.0127, 0.0635)); +#1603 = AXIS2_PLACEMENT_3D('NONE', #1602, #1601, #1600); +#1604 = CIRCLE('NONE', #1603, 0.010160000000000011); +#1605 = CARTESIAN_POINT('NONE', (0.06349999999999999, 0, 0.09144)); +#1606 = CARTESIAN_POINT('NONE', (0.061595023771751516, 0, 0.09162063595554137)); +#1607 = CARTESIAN_POINT('NONE', (0.06159036281965399, 0, 0.09162107792196772)); +#1608 = CARTESIAN_POINT('NONE', (0.05964403971794529, 0, 0.09220068727426999)); +#1609 = CARTESIAN_POINT('NONE', (0.059639277601437564, 0, 0.09220210541869944)); +#1610 = CARTESIAN_POINT('NONE', (0.05777721202317117, 0, 0.0932056953861758)); +#1611 = CARTESIAN_POINT('NONE', (0.05777265606161424, 0, 0.09320815089438352)); +#1612 = CARTESIAN_POINT('NONE', (0.05613042549572081, 0, 0.09460689010125108)); +#1613 = CARTESIAN_POINT('NONE', (0.05612640740988476, 0, 0.09461031243080222)); +#1614 = CARTESIAN_POINT('NONE', (0.05482056570559234, 0, 0.09631968761536752)); +#1615 = CARTESIAN_POINT('NONE', (0.05481737067064104, 0, 0.09632386998559023)); +#1616 = CARTESIAN_POINT('NONE', (0.053919344216065514, 0, 0.098219783014746)); +#1617 = CARTESIAN_POINT('NONE', (0.05391714699269599, 0, 0.09822442179169184)); +#1618 = CARTESIAN_POINT('NONE', (0.05344144971705579, 0, 0.10017124559333658)); +#1619 = CARTESIAN_POINT('NONE', (0.053440285816854935, 0, 0.10017600893491914)); +#1620 = CARTESIAN_POINT('NONE', (0.05335098774326626, 0, 0.10206305299305747)); +#1621 = CARTESIAN_POINT('NONE', (0.05335076925547769, 0.0000000000000000000002168404344971009, 0.10206767007007421)); +#1622 = CARTESIAN_POINT('NONE', (0.05362638068341534, 0, 0.1039933204888514)); +#1623 = CARTESIAN_POINT('NONE', (0.05362705502866128, 0, 0.10399803202499838)); +#1624 = CARTESIAN_POINT('NONE', (0.054312224274838956, 0.00000000000000000005551115123125783, 0.10593590132684767)); +#1625 = CARTESIAN_POINT('NONE', (0.05431390069525186, 0, 0.10594064275923577)); +#1626 = CARTESIAN_POINT('NONE', (0.05542126421401545, 0, 0.10776023756623672)); +#1627 = CARTESIAN_POINT('NONE', (0.055423973627518344, 0, 0.1077646896135151)); +#1628 = CARTESIAN_POINT('NONE', (0.05691024540505522, 0, 0.10933235517450889)); +#1629 = CARTESIAN_POINT('NONE', (0.05691388190269559, 0, 0.10933619082031716)); +#1630 = CARTESIAN_POINT('NONE', (0.05868249966589814, 0, 0.11054461090569682)); +#1631 = CARTESIAN_POINT('NONE', (0.05868682698639216, 0, 0.11054756757678182)); +#1632 = CARTESIAN_POINT('NONE', (0.06060796817696116, 0, 0.11133915748156598)); +#1633 = CARTESIAN_POINT('NONE', (0.06061266868026878, 0, 0.1113410942840165)); +#1634 = CARTESIAN_POINT('NONE', (0.06255244400540244, 0.00000000000000000005551115123125783, 0.11171524536344937)); +#1635 = CARTESIAN_POINT('NONE', (0.0625571901013045, 0, 0.11171616080807939)); +#1636 = CARTESIAN_POINT('NONE', (0.06443820756709015, 0, 0.11171616080807939)); +#1637 = CARTESIAN_POINT('NONE', (0.06444280989869546, 0, 0.11171616080807939)); +#1638 = CARTESIAN_POINT('NONE', (0.06638258522382913, 0.00000000000000000005551115123125783, 0.11134200972864651)); +#1639 = CARTESIAN_POINT('NONE', (0.0663873313197312, 0, 0.11134109428401649)); +#1640 = CARTESIAN_POINT('NONE', (0.0683084725103002, 0, 0.11054950437923236)); +#1641 = CARTESIAN_POINT('NONE', (0.06831317301360784, 0, 0.11054756757678183)); +#1642 = CARTESIAN_POINT('NONE', (0.07008179077681037, 0, 0.10933914749140214)); +#1643 = CARTESIAN_POINT('NONE', (0.07008611809730439, 0, 0.10933619082031716)); +#1644 = CARTESIAN_POINT('NONE', (0.07157238987484126, 0.00000000000000000005551115123125783, 0.10776852525932336)); +#1645 = CARTESIAN_POINT('NONE', (0.07157602637248163, 0, 0.10776468961351508)); +#1646 = CARTESIAN_POINT('NONE', (0.07268338989124525, 0, 0.10594509480651414)); +#1647 = CARTESIAN_POINT('NONE', (0.07268609930474813, 0, 0.10594064275923576)); +#1648 = CARTESIAN_POINT('NONE', (0.0733712685509258, 0, 0.10400277345738648)); +#1649 = CARTESIAN_POINT('NONE', (0.0733729449713387, 0, 0.10399803202499838)); +#1650 = CARTESIAN_POINT('NONE', (0.07364855639927638, 0.00000000000000000005551115123125783, 0.10207238160622119)); +#1651 = CARTESIAN_POINT('NONE', (0.07364923074452231, 0, 0.10206767007007421)); +#1652 = CARTESIAN_POINT('NONE', (0.07355993267093362, 0, 0.10018062601193589)); +#1653 = CARTESIAN_POINT('NONE', (0.07355971418314505, 0, 0.10017600893491914)); +#1654 = CARTESIAN_POINT('NONE', (0.07308401690750484, 0, 0.09822918513327442)); +#1655 = CARTESIAN_POINT('NONE', (0.07308285300730398, 0, 0.09822442179169186)); +#1656 = CARTESIAN_POINT('NONE', (0.07218482655272848, 0.00000000000000000005551115123125783, 0.09632850876253606)); +#1657 = CARTESIAN_POINT('NONE', (0.07218262932935895, 0, 0.09632386998559023)); +#1658 = CARTESIAN_POINT('NONE', (0.07087678762506652, 0.00000000000000000005551115123125783, 0.09461449480102492)); +#1659 = CARTESIAN_POINT('NONE', (0.07087359259011522, 0, 0.09461031243080223)); +#1660 = CARTESIAN_POINT('NONE', (0.06923136202422178, 0.00000000000000000005551115123125783, 0.09321157322393465)); +#1661 = CARTESIAN_POINT('NONE', (0.06922734393838574, 0, 0.09320815089438352)); +#1662 = CARTESIAN_POINT('NONE', (0.06736527836011934, 0, 0.09220456092690715)); +#1663 = CARTESIAN_POINT('NONE', (0.06736072239856242, 0, 0.09220210541869943)); +#1664 = CARTESIAN_POINT('NONE', (0.06541439929685372, 0, 0.09162249606639716)); +#1665 = CARTESIAN_POINT('NONE', (0.06540963718034598, 0, 0.09162107792196769)); +#1666 = CARTESIAN_POINT('NONE', (0.06350466095209752, 0, 0.09144044196642635)); +#1667 = CARTESIAN_POINT('NONE', (0.06349999999999999, 0, 0.09144)); +#1668 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#1605, #1606, #1607, #1608, #1609, #1610, #1611, #1612, #1613, #1614, #1615, #1616, #1617, #1618, #1619, #1620, #1621, #1622, #1623, #1624, #1625, #1626, #1627, #1628, #1629, #1630, #1631, #1632, #1633, #1634, #1635, #1636, #1637, #1638, #1639, #1640, #1641, #1642, #1643, #1644, #1645, #1646, #1647, #1648, #1649, #1650, #1651, #1652, #1653, #1654, #1655, #1656, #1657, #1658, #1659, #1660, #1661, #1662, #1663, #1664, #1665, #1666, #1667), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (0, 0.01639344262295082, 0.03278688524590164, 0.04918032786885246, 0.06557377049180328, 0.0819672131147541, 0.09836065573770492, 0.11475409836065574, 0.13114754098360656, 0.14754098360655737, 0.1639344262295082, 0.18032786885245902, 0.19672131147540983, 0.21311475409836067, 0.22950819672131148, 0.24590163934426232, 0.26229508196721313, 0.27868852459016397, 0.29508196721311475, 0.3114754098360656, 0.3278688524590164, 0.3442622950819672, 0.36065573770491804, 0.3770491803278689, 0.39344262295081966, 0.4098360655737705, 0.42622950819672134, 0.4426229508196722, 0.45901639344262296, 0.4754098360655738, 0.49180327868852464, 0.5081967213114753, 0.5245901639344261, 0.540983606557377, 0.5573770491803278, 0.5737704918032787, 0.5901639344262295, 0.6065573770491803, 0.6229508196721312, 0.639344262295082, 0.6557377049180328, 0.6721311475409836, 0.6885245901639344, 0.7049180327868853, 0.721311475409836, 0.7377049180327868, 0.7540983606557377, 0.7704918032786885, 0.7868852459016393, 0.8032786885245902, 0.819672131147541, 0.8360655737704918, 0.8524590163934427, 0.8688524590163934, 0.8852459016393442, 0.9016393442622951, 0.9180327868852459, 0.9344262295081968, 0.9508196721311475, 0.9672131147540983, 0.9836065573770492, 1), .UNSPECIFIED.); +#1669 = DIRECTION('NONE', (0, 1, 0)); +#1670 = VECTOR('NONE', #1669, 1); +#1671 = CARTESIAN_POINT('NONE', (0.06349999999999999, -0.0000009999999999994458, 0.09144)); +#1672 = LINE('NONE', #1671, #1670); +#1673 = DIRECTION('NONE', (0, 0, -1)); +#1674 = DIRECTION('NONE', (0, 1, 0)); +#1675 = CARTESIAN_POINT('NONE', (0.06349999999999999, 0.0127, 0.10160000000000001)); +#1676 = AXIS2_PLACEMENT_3D('NONE', #1675, #1674, #1673); +#1677 = CIRCLE('NONE', #1676, 0.010160000000000011); +#1678 = CARTESIAN_POINT('NONE', (0.09144000000000001, 0, -0.06349999999999999)); +#1679 = CARTESIAN_POINT('NONE', (0.09145066411512032, 0.000000000000000000013877787807814457, -0.06303689579786445)); +#1680 = CARTESIAN_POINT('NONE', (0.09145076925547771, 0, -0.06303232992992577)); +#1681 = CARTESIAN_POINT('NONE', (0.0914835163297744, 0.000000000000000000013877787807814457, -0.06256182889657645)); +#1682 = CARTESIAN_POINT('NONE', (0.09148383919192062, 0, -0.0625571901013045)); +#1683 = CARTESIAN_POINT('NONE', (0.09153973472784685, 0.000000000000000000013877787807814457, -0.06208070671183683)); +#1684 = CARTESIAN_POINT('NONE', (0.09154028581685494, 0, -0.06207600893491913)); +#1685 = CARTESIAN_POINT('NONE', (0.09162028914777405, 0.000000000000000000013877787807814457, -0.061595104187915764)); +#1686 = CARTESIAN_POINT('NONE', (0.09162107792196772, 0, -0.06159036281965399)); +#1687 = CARTESIAN_POINT('NONE', (0.09172602037302552, -0.000000000000000000013877787807814457, -0.06110673617913802)); +#1688 = CARTESIAN_POINT('NONE', (0.0917270550286613, 0, -0.061101967975001586)); +#1689 = CARTESIAN_POINT('NONE', (0.09185761845630096, 0.000000000000000000013877787807814457, -0.060617445714561125)); +#1690 = CARTESIAN_POINT('NONE', (0.0918589057159835, 0, -0.060612668680268794)); +#1691 = CARTESIAN_POINT('NONE', (0.0920156020814046, 0.000000000000000000013877787807814457, -0.060129188551331494)); +#1692 = CARTESIAN_POINT('NONE', (0.09201714699269602, 0, -0.06012442179169182)); +#1693 = CARTESIAN_POINT('NONE', (0.09220029966759133, 0.000000000000000000013877787807814457, -0.05964401406940004)); +#1694 = CARTESIAN_POINT('NONE', (0.09220210541869946, 0, -0.059639277601437564)); +#1695 = CARTESIAN_POINT('NONE', (0.09241183293568236, 0.000000000000000000013877787807814457, -0.05916404270842217)); +#1696 = CARTESIAN_POINT('NONE', (0.09241390069525189, 0, -0.05915935724076423)); +#1697 = CARTESIAN_POINT('NONE', (0.09265010363538512, 0.000000000000000000013877787807814457, -0.05869144030436256)); +#1698 = CARTESIAN_POINT('NONE', (0.09265243242321819, -0.0000000000000000000002168404344971009, -0.05868682698639215)); +#1699 = CARTESIAN_POINT('NONE', (0.09291478407567369, 0.000000000000000000013877787807814457, -0.058228389839782756)); +#1700 = CARTESIAN_POINT('NONE', (0.09291737067064104, 0, -0.05822386998559022)); +#1701 = CARTESIAN_POINT('NONE', (0.09320531200392262, 0.000000000000000000013877787807814457, -0.057777061268021054)); +#1702 = CARTESIAN_POINT('NONE', (0.09320815089438353, 0, -0.05777265606161424)); +#1703 = CARTESIAN_POINT('NONE', (0.09352089024676814, 0.000000000000000000013877787807814457, -0.057339580197028624)); +#1704 = CARTESIAN_POINT('NONE', (0.09352397362751837, 0, -0.057335310386484886)); +#1705 = CARTESIAN_POINT('NONE', (0.0938604913615214, 0.000000000000000000013877787807814457, -0.05691799631352859)); +#1706 = CARTESIAN_POINT('NONE', (0.09386380917968283, -0.0000000000000000000002168404344971009, -0.0569138819026956)); +#1707 = CARTESIAN_POINT('NONE', (0.09422286735945212, 0.000000000000000000013877787807814457, -0.05651425248390943)); +#1708 = CARTESIAN_POINT('NONE', (0.09422640740988478, 0, -0.05651031243080221)); +#1709 = CARTESIAN_POINT('NONE', (0.09460656436194201, 0.000000000000000000013877787807814457, -0.05613015547874499)); +#1710 = CARTESIAN_POINT('NONE', (0.09461031243080224, 0, -0.05612640740988476)); +#1711 = CARTESIAN_POINT('NONE', (0.0950099418495884, 0.000000000000000000013877787807814457, -0.05576734923011547)); +#1712 = CARTESIAN_POINT('NONE', (0.09501388190269562, 0, -0.05576380917968282)); +#1713 = CARTESIAN_POINT('NONE', (0.09543119597565192, 0.000000000000000000013877787807814457, -0.055427291445679774)); +#1714 = CARTESIAN_POINT('NONE', (0.09543531038648491, 0, -0.055423973627518344)); +#1715 = CARTESIAN_POINT('NONE', (0.09586838625107051, 0.000000000000000000013877787807814457, -0.05511123427513375)); +#1716 = CARTESIAN_POINT('NONE', (0.09587265606161426, -0.0000000000000000000002168404344971009, -0.05510815089438352)); +#1717 = CARTESIAN_POINT('NONE', (0.09631946477918342, 0.000000000000000000013877787807814457, -0.05482020956110195)); +#1718 = CARTESIAN_POINT('NONE', (0.09632386998559024, 0, -0.05481737067064104)); +#1719 = CARTESIAN_POINT('NONE', (0.09678230713219967, 0.000000000000000000013877787807814457, -0.05455501901818553)); +#1720 = CARTESIAN_POINT('NONE', (0.0967868269863922, 0, -0.054552432423218174)); +#1721 = CARTESIAN_POINT('NONE', (0.09725474392279385, 0.000000000000000000013877787807814457, -0.054316229483084934)); +#1722 = CARTESIAN_POINT('NONE', (0.09725935724076426, 0, -0.05431390069525186)); +#1723 = CARTESIAN_POINT('NONE', (0.09773459213377964, 0.000000000000000000013877787807814457, -0.054104173178268954)); +#1724 = CARTESIAN_POINT('NONE', (0.09773927760143757, 0, -0.054102105418699434)); +#1725 = CARTESIAN_POINT('NONE', (0.09821968532372936, 0.000000000000000000013877787807814457, -0.05391895274380413)); +#1726 = CARTESIAN_POINT('NONE', (0.09822442179169186, -0.0000000000000000000002168404344971009, -0.05391714699269599)); +#1727 = CARTESIAN_POINT('NONE', (0.09870790192062913, 0.000000000000000000013877787807814457, -0.05376045062727488)); +#1728 = CARTESIAN_POINT('NONE', (0.0987126686802688, 0, -0.05375890571598346)); +#1729 = CARTESIAN_POINT('NONE', (0.09919719094070927, -0.000000000000000000013877787807814457, -0.05362834228834383)); +#1730 = CARTESIAN_POINT('NONE', (0.0992019679750016, 0, -0.05362705502866129)); +#1731 = CARTESIAN_POINT('NONE', (0.09968559461551756, 0.000000000000000000013877787807814457, -0.053522112577603476)); +#1732 = CARTESIAN_POINT('NONE', (0.099690362819654, 0, -0.0535210779219677)); +#1733 = CARTESIAN_POINT('NONE', (0.10017126756665738, 0.000000000000000000013877787807814457, -0.05344107459104862)); +#1734 = CARTESIAN_POINT('NONE', (0.10017600893491915, 0, -0.053440285816854935)); +#1735 = CARTESIAN_POINT('NONE', (0.10065249232438682, 0.000000000000000000013877787807814457, -0.05338439028092868)); +#1736 = CARTESIAN_POINT('NONE', (0.10065719010130453, 0, -0.05338383919192058)); +#1737 = CARTESIAN_POINT('NONE', (0.10112769113465385, 0.000000000000000000013877787807814457, -0.05335109211762389)); +#1738 = CARTESIAN_POINT('NONE', (0.10113232992992578, -0.0000000000000000000002168404344971009, -0.05335076925547769)); +#1739 = CARTESIAN_POINT('NONE', (0.10159543413206133, 0.000000000000000000013877787807814457, -0.05334010514035738)); +#1740 = CARTESIAN_POINT('NONE', (0.10160000000000001, 0, -0.05333999999999999)); +#1741 = CARTESIAN_POINT('NONE', (0.10206310420213555, 0.000000000000000000013877787807814457, -0.053350664115120294)); +#1742 = CARTESIAN_POINT('NONE', (0.10206767007007422, 0, -0.05335076925547769)); +#1743 = CARTESIAN_POINT('NONE', (0.10253817110342353, 0.000000000000000000013877787807814457, -0.05338351632977437)); +#1744 = CARTESIAN_POINT('NONE', (0.10254280989869548, 0, -0.05338383919192058)); +#1745 = CARTESIAN_POINT('NONE', (0.10301929328816314, 0.000000000000000000013877787807814457, -0.05343973472784682)); +#1746 = CARTESIAN_POINT('NONE', (0.10302399106508085, 0, -0.053440285816854914)); +#1747 = CARTESIAN_POINT('NONE', (0.10350489581208425, -0.000000000000000000013877787807814457, -0.053520289147774014)); +#1748 = CARTESIAN_POINT('NONE', (0.10350963718034602, 0, -0.053521077921967704)); +#1749 = CARTESIAN_POINT('NONE', (0.10399326382086194, 0.000000000000000000013877787807814457, -0.0536260203730255)); +#1750 = CARTESIAN_POINT('NONE', (0.10399803202499838, 0, -0.05362705502866128)); +#1751 = CARTESIAN_POINT('NONE', (0.10448255428543891, 0.000000000000000000013877787807814457, -0.05375761845630093)); +#1752 = CARTESIAN_POINT('NONE', (0.10448733131973124, 0, -0.05375890571598347)); +#1753 = CARTESIAN_POINT('NONE', (0.10497081144866847, 0.000000000000000000013877787807814457, -0.05391560208140457)); +#1754 = CARTESIAN_POINT('NONE', (0.10497557820830815, -0.0000000000000000000002168404344971009, -0.05391714699269599)); +#1755 = CARTESIAN_POINT('NONE', (0.10545598593059993, 0.000000000000000000013877787807814457, -0.05410029966759128)); +#1756 = CARTESIAN_POINT('NONE', (0.10546072239856243, 0, -0.05410210541869941)); +#1757 = CARTESIAN_POINT('NONE', (0.10593595729157786, 0.000000000000000000013877787807814457, -0.05431183293568234)); +#1758 = CARTESIAN_POINT('NONE', (0.10594064275923579, 0, -0.05431390069525186)); +#1759 = CARTESIAN_POINT('NONE', (0.10640855969563746, 0.000000000000000000013877787807814457, -0.0545501036353851)); +#1760 = CARTESIAN_POINT('NONE', (0.10641317301360788, -0.0000000000000000000002168404344971009, -0.054552432423218174)); +#1761 = CARTESIAN_POINT('NONE', (0.10687161016021723, 0.000000000000000000013877787807814457, -0.054814784075673674)); +#1762 = CARTESIAN_POINT('NONE', (0.10687613001440976, 0, -0.05481737067064103)); +#1763 = CARTESIAN_POINT('NONE', (0.10732293873197893, 0.000000000000000000013877787807814457, -0.05510531200392259)); +#1764 = CARTESIAN_POINT('NONE', (0.10732734393838574, 0, -0.0551081508943835)); +#1765 = CARTESIAN_POINT('NONE', (0.10776041980297137, 0.000000000000000000013877787807814457, -0.0554208902467681)); +#1766 = CARTESIAN_POINT('NONE', (0.1077646896135151, 0, -0.05542397362751834)); +#1767 = CARTESIAN_POINT('NONE', (0.1081820036864714, 0.000000000000000000013877787807814457, -0.05576049136152138)); +#1768 = CARTESIAN_POINT('NONE', (0.1081861180973044, -0.0000000000000000000002168404344971009, -0.05576380917968281)); +#1769 = CARTESIAN_POINT('NONE', (0.10858574751609056, 0.000000000000000000013877787807814457, -0.05612286735945211)); +#1770 = CARTESIAN_POINT('NONE', (0.10858968756919776, 0, -0.056126407409884754)); +#1771 = CARTESIAN_POINT('NONE', (0.108969844521255, 0.000000000000000000013877787807814457, -0.05650656436194199)); +#1772 = CARTESIAN_POINT('NONE', (0.10897359259011523, 0, -0.05651031243080221)); +#1773 = CARTESIAN_POINT('NONE', (0.1093326507698845, 0.000000000000000000013877787807814457, -0.05690994184958837)); +#1774 = CARTESIAN_POINT('NONE', (0.10933619082031716, 0, -0.056913881902695584)); +#1775 = CARTESIAN_POINT('NONE', (0.10967270855432021, 0.000000000000000000013877787807814457, -0.05733119597565189)); +#1776 = CARTESIAN_POINT('NONE', (0.10967602637248164, 0, -0.05733531038648488)); +#1777 = CARTESIAN_POINT('NONE', (0.10998876572486624, 0.000000000000000000013877787807814457, -0.0577683862510705)); +#1778 = CARTESIAN_POINT('NONE', (0.10999184910561646, -0.0000000000000000000002168404344971009, -0.05777265606161424)); +#1779 = CARTESIAN_POINT('NONE', (0.11027979043889806, 0.000000000000000000013877787807814457, -0.0582194647791834)); +#1780 = CARTESIAN_POINT('NONE', (0.11028262932935896, 0, -0.05822386998559021)); +#1781 = CARTESIAN_POINT('NONE', (0.11054498098181449, 0.000000000000000000013877787807814457, -0.05868230713219962)); +#1782 = CARTESIAN_POINT('NONE', (0.11054756757678184, 0, -0.05868682698639216)); +#1783 = CARTESIAN_POINT('NONE', (0.11058075742013608, 0, -0.058752575913197255)); +#1784 = CARTESIAN_POINT('NONE', (0.1107837705169151, 0.000000000000000000013877787807814457, -0.05915474392279383)); +#1785 = CARTESIAN_POINT('NONE', (0.11078609930474816, 0, -0.05915935724076423)); +#1786 = CARTESIAN_POINT('NONE', (0.11099582682173105, 0.000000000000000000013877787807814457, -0.05963459213377962)); +#1787 = CARTESIAN_POINT('NONE', (0.11099789458130058, 0, -0.05963927760143756)); +#1788 = CARTESIAN_POINT('NONE', (0.11118104725619586, 0.000000000000000000013877787807814457, -0.06011968532372935)); +#1789 = CARTESIAN_POINT('NONE', (0.111182853007304, -0.0000000000000000000002168404344971009, -0.06012442179169183)); +#1790 = CARTESIAN_POINT('NONE', (0.1113395493727251, 0.000000000000000000013877787807814457, -0.060607901920629106)); +#1791 = CARTESIAN_POINT('NONE', (0.11134109428401652, 0, -0.06061266868026877)); +#1792 = CARTESIAN_POINT('NONE', (0.11147165771165617, -0.000000000000000000013877787807814457, -0.06109719094070927)); +#1793 = CARTESIAN_POINT('NONE', (0.11147294497133871, 0, -0.06110196797500159)); +#1794 = CARTESIAN_POINT('NONE', (0.11157788742239651, 0.000000000000000000013877787807814457, -0.06158559461551755)); +#1795 = CARTESIAN_POINT('NONE', (0.11157892207803227, 0.0000000000000000000002168404344971009, -0.06159036281965398)); +#1796 = CARTESIAN_POINT('NONE', (0.11165892540895138, 0.000000000000000000013877787807814457, -0.06207126756665735)); +#1797 = CARTESIAN_POINT('NONE', (0.11165971418314506, 0, -0.06207600893491913)); +#1798 = CARTESIAN_POINT('NONE', (0.11171560971907131, 0.000000000000000000013877787807814457, -0.0625524923243868)); +#1799 = CARTESIAN_POINT('NONE', (0.1117161608080794, 0, -0.0625571901013045)); +#1800 = CARTESIAN_POINT('NONE', (0.1117489078823761, 0.000000000000000000013877787807814457, -0.06302769113465383)); +#1801 = CARTESIAN_POINT('NONE', (0.11174923074452231, -0.0000000000000000000002168404344971009, -0.06303232992992576)); +#1802 = CARTESIAN_POINT('NONE', (0.11175989485964262, 0.000000000000000000013877787807814457, -0.06349543413206131)); +#1803 = CARTESIAN_POINT('NONE', (0.11176, 0, -0.06349999999999999)); +#1804 = CARTESIAN_POINT('NONE', (0.1117493358848797, 0.000000000000000000013877787807814457, -0.06396310420213552)); +#1805 = CARTESIAN_POINT('NONE', (0.11174923074452231, 0, -0.0639676700700742)); +#1806 = CARTESIAN_POINT('NONE', (0.11171648367022562, 0.000000000000000000013877787807814457, -0.06443817110342351)); +#1807 = CARTESIAN_POINT('NONE', (0.1117161608080794, 0, -0.06444280989869546)); +#1808 = CARTESIAN_POINT('NONE', (0.11166026527215316, 0.000000000000000000013877787807814457, -0.06491929328816314)); +#1809 = CARTESIAN_POINT('NONE', (0.11165971418314506, 0, -0.06492399106508084)); +#1810 = CARTESIAN_POINT('NONE', (0.11157971085222597, -0.000000000000000000013877787807814457, -0.06540489581208422)); +#1811 = CARTESIAN_POINT('NONE', (0.11157892207803229, 0, -0.065409637180346)); +#1812 = CARTESIAN_POINT('NONE', (0.11147397962697449, 0.000000000000000000013877787807814457, -0.06589326382086194)); +#1813 = CARTESIAN_POINT('NONE', (0.11147294497133871, -0.0000000000000000000002168404344971009, -0.06589803202499839)); +#1814 = CARTESIAN_POINT('NONE', (0.11134238154369903, 0.000000000000000000013877787807814457, -0.06638255428543885)); +#1815 = CARTESIAN_POINT('NONE', (0.11134109428401649, 0, -0.06638733131973118)); +#1816 = CARTESIAN_POINT('NONE', (0.11118439791859544, 0.000000000000000000013877787807814457, -0.06687081144866845)); +#1817 = CARTESIAN_POINT('NONE', (0.11118285300730402, -0.0000000000000000000002168404344971009, -0.06687557820830813)); +#1818 = CARTESIAN_POINT('NONE', (0.1109997003324087, 0.000000000000000000013877787807814457, -0.06735598593059992)); +#1819 = CARTESIAN_POINT('NONE', (0.11099789458130058, 0, -0.06736072239856242)); +#1820 = CARTESIAN_POINT('NONE', (0.11078816706431768, 0.000000000000000000013877787807814457, -0.06783595729157782)); +#1821 = CARTESIAN_POINT('NONE', (0.11078609930474814, 0, -0.06784064275923575)); +#1822 = CARTESIAN_POINT('NONE', (0.11054989636461489, 0.000000000000000000013877787807814457, -0.06830855969563741)); +#1823 = CARTESIAN_POINT('NONE', (0.11054756757678183, -0.0000000000000000000002168404344971009, -0.06831317301360783)); +#1824 = CARTESIAN_POINT('NONE', (0.1102852159243263, 0.000000000000000000013877787807814457, -0.06877161016021723)); +#1825 = CARTESIAN_POINT('NONE', (0.11028262932935895, 0, -0.06877613001440976)); +#1826 = CARTESIAN_POINT('NONE', (0.10999468799607738, 0.000000000000000000013877787807814457, -0.06922293873197892)); +#1827 = CARTESIAN_POINT('NONE', (0.10999184910561646, 0, -0.06922734393838573)); +#1828 = CARTESIAN_POINT('NONE', (0.10967910975323188, 0.000000000000000000013877787807814457, -0.06966041980297134)); +#1829 = CARTESIAN_POINT('NONE', (0.10967602637248164, 0, -0.06966468961351507)); +#1830 = CARTESIAN_POINT('NONE', (0.1093395086384786, 0.000000000000000000013877787807814457, -0.07008200368647137)); +#1831 = CARTESIAN_POINT('NONE', (0.10933619082031718, -0.0000000000000000000002168404344971009, -0.07008611809730436)); +#1832 = CARTESIAN_POINT('NONE', (0.10897713264054788, 0.000000000000000000013877787807814457, -0.07048574751609055)); +#1833 = CARTESIAN_POINT('NONE', (0.10897359259011523, 0, -0.07048968756919775)); +#1834 = CARTESIAN_POINT('NONE', (0.10859343563805801, 0.000000000000000000013877787807814457, -0.07086984452125497)); +#1835 = CARTESIAN_POINT('NONE', (0.10858968756919778, 0, -0.0708735925901152)); +#1836 = CARTESIAN_POINT('NONE', (0.10819005815041162, 0.000000000000000000013877787807814457, -0.0712326507698845)); +#1837 = CARTESIAN_POINT('NONE', (0.1081861180973044, 0, -0.07123619082031715)); +#1838 = CARTESIAN_POINT('NONE', (0.10776880402434809, 0.000000000000000000013877787807814457, -0.07157270855432019)); +#1839 = CARTESIAN_POINT('NONE', (0.10776468961351508, 0, -0.07157602637248162)); +#1840 = CARTESIAN_POINT('NONE', (0.10733161374892948, 0.000000000000000000013877787807814457, -0.07188876572486623)); +#1841 = CARTESIAN_POINT('NONE', (0.10732734393838575, -0.0000000000000000000002168404344971009, -0.07189184910561645)); +#1842 = CARTESIAN_POINT('NONE', (0.1068805352208166, 0.000000000000000000013877787807814457, -0.07217979043889802)); +#1843 = CARTESIAN_POINT('NONE', (0.10687613001440978, 0, -0.07218262932935893)); +#1844 = CARTESIAN_POINT('NONE', (0.1064176928678004, 0.000000000000000000013877787807814457, -0.07244498098181446)); +#1845 = CARTESIAN_POINT('NONE', (0.10641317301360786, -0.0000000000000000000002168404344971009, -0.07244756757678181)); +#1846 = CARTESIAN_POINT('NONE', (0.10594525607720619, 0.000000000000000000013877787807814457, -0.07268377051691506)); +#1847 = CARTESIAN_POINT('NONE', (0.10594064275923577, 0, -0.07268609930474812)); +#1848 = CARTESIAN_POINT('NONE', (0.10546540786622037, 0.000000000000000000013877787807814457, -0.072895826821731)); +#1849 = CARTESIAN_POINT('NONE', (0.10546072239856244, 0, -0.07289789458130054)); +#1850 = CARTESIAN_POINT('NONE', (0.10498031467627066, 0.000000000000000000013877787807814457, -0.07308104725619582)); +#1851 = CARTESIAN_POINT('NONE', (0.10497557820830816, -0.0000000000000000000002168404344971009, -0.07308285300730397)); +#1852 = CARTESIAN_POINT('NONE', (0.10449209807937089, 0.000000000000000000013877787807814457, -0.07323954937272506)); +#1853 = CARTESIAN_POINT('NONE', (0.10448733131973122, 0, -0.07324109428401648)); +#1854 = CARTESIAN_POINT('NONE', (0.10400280905929074, -0.000000000000000000013877787807814457, -0.07337165771165616)); +#1855 = CARTESIAN_POINT('NONE', (0.10399803202499841, 0, -0.0733729449713387)); +#1856 = CARTESIAN_POINT('NONE', (0.10351440538448244, 0.000000000000000000013877787807814457, -0.0734778874223965)); +#1857 = CARTESIAN_POINT('NONE', (0.10350963718034599, 0.0000000000000000000002168404344971009, -0.07347892207803226)); +#1858 = CARTESIAN_POINT('NONE', (0.10302873243334262, 0.000000000000000000013877787807814457, -0.07355892540895136)); +#1859 = CARTESIAN_POINT('NONE', (0.10302399106508085, 0, -0.07355971418314504)); +#1860 = CARTESIAN_POINT('NONE', (0.10254750767561319, 0.000000000000000000013877787807814457, -0.07361560971907129)); +#1861 = CARTESIAN_POINT('NONE', (0.10254280989869548, 0, -0.07361616080807938)); +#1862 = CARTESIAN_POINT('NONE', (0.10207230886534617, 0.000000000000000000013877787807814457, -0.07364890788237607)); +#1863 = CARTESIAN_POINT('NONE', (0.10206767007007422, -0.0000000000000000000002168404344971009, -0.07364923074452229)); +#1864 = CARTESIAN_POINT('NONE', (0.10160456586793869, 0.000000000000000000013877787807814457, -0.0736598948596426)); +#1865 = CARTESIAN_POINT('NONE', (0.10160000000000001, 0, -0.07365999999999998)); +#1866 = CARTESIAN_POINT('NONE', (0.10113689579786447, 0.000000000000000000013877787807814457, -0.07364933588487968)); +#1867 = CARTESIAN_POINT('NONE', (0.10113232992992578, 0, -0.07364923074452229)); +#1868 = CARTESIAN_POINT('NONE', (0.10066182889657646, 0.000000000000000000013877787807814457, -0.0736164836702256)); +#1869 = CARTESIAN_POINT('NONE', (0.10065719010130453, 0, -0.07361616080807938)); +#1870 = CARTESIAN_POINT('NONE', (0.10018070671183686, 0.000000000000000000013877787807814457, -0.07356026527215313)); +#1871 = CARTESIAN_POINT('NONE', (0.10017600893491915, 0, -0.07355971418314504)); +#1872 = CARTESIAN_POINT('NONE', (0.0996951041879158, -0.000000000000000000013877787807814457, -0.07347971085222596)); +#1873 = CARTESIAN_POINT('NONE', (0.09969036281965403, 0, -0.07347892207803228)); +#1874 = CARTESIAN_POINT('NONE', (0.09920673617913808, 0.000000000000000000013877787807814457, -0.07337397962697448)); +#1875 = CARTESIAN_POINT('NONE', (0.09920196797500164, -0.0000000000000000000002168404344971009, -0.0733729449713387)); +#1876 = CARTESIAN_POINT('NONE', (0.09871744571456113, 0.000000000000000000013877787807814457, -0.07324238154369904)); +#1877 = CARTESIAN_POINT('NONE', (0.0987126686802688, 0, -0.0732410942840165)); +#1878 = CARTESIAN_POINT('NONE', (0.09822918855133154, 0.000000000000000000013877787807814457, -0.0730843979185954)); +#1879 = CARTESIAN_POINT('NONE', (0.09822442179169187, -0.0000000000000000000002168404344971009, -0.07308285300730398)); +#1880 = CARTESIAN_POINT('NONE', (0.0977440140694001, 0.000000000000000000013877787807814457, -0.07289970033240868)); +#1881 = CARTESIAN_POINT('NONE', (0.09773927760143761, 0, -0.07289789458130055)); +#1882 = CARTESIAN_POINT('NONE', (0.09726404270842219, 0.000000000000000000013877787807814457, -0.07268816706431767)); +#1883 = CARTESIAN_POINT('NONE', (0.09725935724076426, 0, -0.07268609930474813)); +#1884 = CARTESIAN_POINT('NONE', (0.09685257591319726, 0, -0.07248075742013607)); +#1885 = CARTESIAN_POINT('NONE', (0.09679144030436258, 0.000000000000000000013877787807814457, -0.07244989636461488)); +#1886 = CARTESIAN_POINT('NONE', (0.09678682698639217, 0, -0.07244756757678182)); +#1887 = CARTESIAN_POINT('NONE', (0.09632838983978277, 0.000000000000000000013877787807814457, -0.07218521592432631)); +#1888 = CARTESIAN_POINT('NONE', (0.09632386998559024, 0, -0.07218262932935894)); +#1889 = CARTESIAN_POINT('NONE', (0.09587706126802106, 0.000000000000000000013877787807814457, -0.07189468799607736)); +#1890 = CARTESIAN_POINT('NONE', (0.09587265606161426, 0, -0.07189184910561644)); +#1891 = CARTESIAN_POINT('NONE', (0.09543958019702865, 0.000000000000000000013877787807814457, -0.07157910975323187)); +#1892 = CARTESIAN_POINT('NONE', (0.09543531038648491, 0, -0.07157602637248163)); +#1893 = CARTESIAN_POINT('NONE', (0.09501799631352861, 0.000000000000000000013877787807814457, -0.07123950863847858)); +#1894 = CARTESIAN_POINT('NONE', (0.09501388190269562, -0.0000000000000000000002168404344971009, -0.07123619082031715)); +#1895 = CARTESIAN_POINT('NONE', (0.09461425248390944, 0.000000000000000000013877787807814457, -0.07087713264054787)); +#1896 = CARTESIAN_POINT('NONE', (0.09461031243080223, 0, -0.07087359259011522)); +#1897 = CARTESIAN_POINT('NONE', (0.09423015547874501, 0.000000000000000000013877787807814457, -0.070493435638058)); +#1898 = CARTESIAN_POINT('NONE', (0.09422640740988479, 0, -0.07048968756919777)); +#1899 = CARTESIAN_POINT('NONE', (0.0938673492301155, 0.000000000000000000013877787807814457, -0.0700900581504116)); +#1900 = CARTESIAN_POINT('NONE', (0.09386380917968284, 0, -0.07008611809730438)); +#1901 = CARTESIAN_POINT('NONE', (0.09352729144567981, 0.000000000000000000013877787807814457, -0.0696688040243481)); +#1902 = CARTESIAN_POINT('NONE', (0.09352397362751837, 0, -0.06966468961351509)); +#1903 = CARTESIAN_POINT('NONE', (0.09321123427513377, 0.000000000000000000013877787807814457, -0.06923161374892947)); +#1904 = CARTESIAN_POINT('NONE', (0.09320815089438353, -0.0000000000000000000002168404344971009, -0.06922734393838574)); +#1905 = CARTESIAN_POINT('NONE', (0.09292020956110196, 0.000000000000000000013877787807814457, -0.06878053522081658)); +#1906 = CARTESIAN_POINT('NONE', (0.09291737067064104, 0, -0.06877613001440976)); +#1907 = CARTESIAN_POINT('NONE', (0.09265501901818556, 0.000000000000000000013877787807814457, -0.06831769286780036)); +#1908 = CARTESIAN_POINT('NONE', (0.0926524324232182, -0.0000000000000000000002168404344971009, -0.06831317301360783)); +#1909 = CARTESIAN_POINT('NONE', (0.09241622948308495, 0.000000000000000000013877787807814457, -0.06784525607720618)); +#1910 = CARTESIAN_POINT('NONE', (0.09241390069525188, 0, -0.06784064275923576)); +#1911 = CARTESIAN_POINT('NONE', (0.09220417317826897, 0.000000000000000000013877787807814457, -0.06736540786622035)); +#1912 = CARTESIAN_POINT('NONE', (0.09220210541869944, 0, -0.06736072239856242)); +#1913 = CARTESIAN_POINT('NONE', (0.09201895274380414, 0.000000000000000000013877787807814457, -0.06688031467627063)); +#1914 = CARTESIAN_POINT('NONE', (0.09201714699269602, -0.0000000000000000000002168404344971009, -0.06687557820830814)); +#1915 = CARTESIAN_POINT('NONE', (0.0918604506272749, 0.000000000000000000013877787807814457, -0.06639209807937085)); +#1916 = CARTESIAN_POINT('NONE', (0.09185890571598349, 0, -0.06638733131973118)); +#1917 = CARTESIAN_POINT('NONE', (0.09172834228834387, -0.000000000000000000013877787807814457, -0.06590280905929072)); +#1918 = CARTESIAN_POINT('NONE', (0.09172705502866133, 0, -0.06589803202499839)); +#1919 = CARTESIAN_POINT('NONE', (0.09162211257760348, 0.000000000000000000013877787807814457, -0.06541440538448243)); +#1920 = CARTESIAN_POINT('NONE', (0.0916210779219677, 0.0000000000000000000002168404344971009, -0.06540963718034598)); +#1921 = CARTESIAN_POINT('NONE', (0.09154107459104863, 0.000000000000000000013877787807814457, -0.06492873243334261)); +#1922 = CARTESIAN_POINT('NONE', (0.09154028581685494, 0, -0.06492399106508084)); +#1923 = CARTESIAN_POINT('NONE', (0.09148439028092871, 0.000000000000000000013877787807814457, -0.06444750767561316)); +#1924 = CARTESIAN_POINT('NONE', (0.09148383919192062, 0, -0.06444280989869546)); +#1925 = CARTESIAN_POINT('NONE', (0.09145109211762391, 0.000000000000000000013877787807814457, -0.06397230886534615)); +#1926 = CARTESIAN_POINT('NONE', (0.09145076925547771, -0.0000000000000000000002168404344971009, -0.0639676700700742)); +#1927 = CARTESIAN_POINT('NONE', (0.0914401051403574, 0.000000000000000000013877787807814457, -0.06350456586793866)); +#1928 = CARTESIAN_POINT('NONE', (0.09144000000000001, 0, -0.06349999999999999)); +#1929 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#1678, #1679, #1680, #1681, #1682, #1683, #1684, #1685, #1686, #1687, #1688, #1689, #1690, #1691, #1692, #1693, #1694, #1695, #1696, #1697, #1698, #1699, #1700, #1701, #1702, #1703, #1704, #1705, #1706, #1707, #1708, #1709, #1710, #1711, #1712, #1713, #1714, #1715, #1716, #1717, #1718, #1719, #1720, #1721, #1722, #1723, #1724, #1725, #1726, #1727, #1728, #1729, #1730, #1731, #1732, #1733, #1734, #1735, #1736, #1737, #1738, #1739, #1740, #1741, #1742, #1743, #1744, #1745, #1746, #1747, #1748, #1749, #1750, #1751, #1752, #1753, #1754, #1755, #1756, #1757, #1758, #1759, #1760, #1761, #1762, #1763, #1764, #1765, #1766, #1767, #1768, #1769, #1770, #1771, #1772, #1773, #1774, #1775, #1776, #1777, #1778, #1779, #1780, #1781, #1782, #1783, #1784, #1785, #1786, #1787, #1788, #1789, #1790, #1791, #1792, #1793, #1794, #1795, #1796, #1797, #1798, #1799, #1800, #1801, #1802, #1803, #1804, #1805, #1806, #1807, #1808, #1809, #1810, #1811, #1812, #1813, #1814, #1815, #1816, #1817, #1818, #1819, #1820, #1821, #1822, #1823, #1824, #1825, #1826, #1827, #1828, #1829, #1830, #1831, #1832, #1833, #1834, #1835, #1836, #1837, #1838, #1839, #1840, #1841, #1842, #1843, #1844, #1845, #1846, #1847, #1848, #1849, #1850, #1851, #1852, #1853, #1854, #1855, #1856, #1857, #1858, #1859, #1860, #1861, #1862, #1863, #1864, #1865, #1866, #1867, #1868, #1869, #1870, #1871, #1872, #1873, #1874, #1875, #1876, #1877, #1878, #1879, #1880, #1881, #1882, #1883, #1884, #1885, #1886, #1887, #1888, #1889, #1890, #1891, #1892, #1893, #1894, #1895, #1896, #1897, #1898, #1899, #1900, #1901, #1902, #1903, #1904, #1905, #1906, #1907, #1908, #1909, #1910, #1911, #1912, #1913, #1914, #1915, #1916, #1917, #1918, #1919, #1920, #1921, #1922, #1923, #1924, #1925, #1926, #1927, #1928), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (0, 0.004016064257028112, 0.008032128514056224, 0.012048192771084336, 0.01606425702811245, 0.020080321285140562, 0.024096385542168672, 0.028112449799196783, 0.0321285140562249, 0.03614457831325301, 0.040160642570281124, 0.04417670682730923, 0.048192771084337345, 0.05220883534136546, 0.056224899598393566, 0.06024096385542168, 0.0642570281124498, 0.0682730923694779, 0.07228915662650602, 0.07630522088353413, 0.08032128514056225, 0.08433734939759036, 0.08835341365461846, 0.09236947791164658, 0.09638554216867469, 0.1004016064257028, 0.10441767068273092, 0.10843373493975902, 0.11244979919678713, 0.11646586345381525, 0.12048192771084336, 0.12449799196787148, 0.1285140562248996, 0.1325301204819277, 0.1365461847389558, 0.14056224899598393, 0.14457831325301204, 0.14859437751004015, 0.15261044176706826, 0.15662650602409636, 0.1606425702811245, 0.1646586345381526, 0.1686746987951807, 0.17269076305220882, 0.17670682730923692, 0.18072289156626503, 0.18473895582329317, 0.18875502008032127, 0.19277108433734938, 0.1967871485943775, 0.2008032128514056, 0.20481927710843373, 0.20883534136546184, 0.21285140562248994, 0.21686746987951805, 0.22088353413654616, 0.22489959839357426, 0.2289156626506024, 0.2329317269076305, 0.2369477911646586, 0.24096385542168672, 0.24497991967871482, 0.24899598393574296, 0.25301204819277107, 0.2570281124497992, 0.2610441767068273, 0.2650602409638554, 0.2690763052208835, 0.2730923694779116, 0.2771084337349397, 0.28112449799196787, 0.285140562248996, 0.2891566265060241, 0.2931726907630522, 0.2971887550200803, 0.3012048192771084, 0.3052208835341365, 0.3092369477911646, 0.3132530120481927, 0.31726907630522083, 0.321285140562249, 0.3253012048192771, 0.3293172690763052, 0.3333333333333333, 0.3373493975903614, 0.34136546184738953, 0.34538152610441764, 0.34939759036144574, 0.35341365461847385, 0.35742971887550196, 0.36144578313253006, 0.3654618473895582, 0.36947791164658633, 0.37349397590361444, 0.37751004016064255, 0.38152610441767065, 0.38554216867469876, 0.38955823293172687, 0.393574297188755, 0.3975903614457831, 0.4016064257028112, 0.4056224899598393, 0.40963855421686746, 0.41365461847389556, 0.41767068273092367, 0.4216867469879518, 0.4257028112449799, 0.429718875502008, 0.4337349397590361, 0.4377510040160642, 0.4417670682730923, 0.4457831325301204, 0.4497991967871485, 0.4538152610441767, 0.4578313253012048, 0.4618473895582329, 0.465863453815261, 0.4698795180722891, 0.4738955823293172, 0.47791164658634533, 0.48192771084337344, 0.48594377510040154, 0.48995983935742965, 0.4939759036144578, 0.4979919678714859, 0.5020080321285141, 0.5060240963855422, 0.5100401606425704, 0.5140562248995985, 0.5180722891566265, 0.5220883534136547, 0.5261044176706828, 0.5301204819277109, 0.5341365461847389, 0.5381526104417671, 0.5421686746987953, 0.5461847389558233, 0.5502008032128515, 0.5542168674698795, 0.5582329317269077, 0.5622489959839359, 0.5662650602409639, 0.570281124497992, 0.5742971887550201, 0.5783132530120483, 0.5823293172690763, 0.5863453815261044, 0.5903614457831325, 0.5943775100401607, 0.5983935742971889, 0.6024096385542169, 0.606425702811245, 0.6104417670682731, 0.6144578313253013, 0.6184738955823293, 0.6224899598393574, 0.6265060240963856, 0.6305220883534137, 0.6345381526104418, 0.6385542168674699, 0.642570281124498, 0.6465863453815262, 0.6506024096385543, 0.6546184738955824, 0.6586345381526104, 0.6626506024096386, 0.6666666666666667, 0.6706827309236948, 0.6746987951807228, 0.678714859437751, 0.6827309236947792, 0.6867469879518073, 0.6907630522088354, 0.6947791164658634, 0.6987951807228916, 0.7028112449799198, 0.7068273092369478, 0.7108433734939759, 0.714859437751004, 0.7188755020080322, 0.7228915662650603, 0.7269076305220884, 0.7309236947791165, 0.7349397590361446, 0.7389558232931728, 0.7429718875502008, 0.7469879518072289, 0.751004016064257, 0.7550200803212852, 0.7590361445783133, 0.7630522088353414, 0.7670682730923695, 0.7710843373493976, 0.7751004016064258, 0.7791164658634538, 0.7831325301204819, 0.7871485943775101, 0.7911646586345382, 0.7951807228915663, 0.7991967871485944, 0.8032128514056225, 0.8072289156626506, 0.8112449799196787, 0.8152610441767069, 0.8192771084337349, 0.8232931726907631, 0.8273092369477912, 0.8313253012048193, 0.8353413654618473, 0.8393574297188755, 0.8433734939759037, 0.8473895582329317, 0.8514056224899599, 0.8554216867469879, 0.8594377510040161, 0.8634538152610443, 0.8674698795180723, 0.8714859437751004, 0.8755020080321285, 0.8795180722891567, 0.8835341365461847, 0.8875502008032129, 0.891566265060241, 0.8955823293172691, 0.8995983935742972, 0.9036144578313253, 0.9076305220883534, 0.9116465863453815, 0.9156626506024097, 0.9196787148594378, 0.9236947791164659, 0.927710843373494, 0.9317269076305221, 0.9357429718875502, 0.9397590361445783, 0.9437751004016064, 0.9477911646586346, 0.9518072289156626, 0.9558232931726908, 0.9598393574297188, 0.963855421686747, 0.9678714859437751, 0.9718875502008032, 0.9759036144578314, 0.9799196787148594, 0.9839357429718876, 0.9879518072289156, 0.9919678714859438, 0.9959839357429718, 1), .UNSPECIFIED.); +#1930 = DIRECTION('NONE', (0, 1, 0)); +#1931 = VECTOR('NONE', #1930, 1); +#1932 = CARTESIAN_POINT('NONE', (0.09144000000000001, -0.0000009999999999994458, -0.06349999999999999)); +#1933 = LINE('NONE', #1932, #1931); +#1934 = DIRECTION('NONE', (-1, 0, 0.0000000000000006993530863780516)); +#1935 = DIRECTION('NONE', (0, 1, -0)); +#1936 = CARTESIAN_POINT('NONE', (0.10160000000000001, 0.0127, -0.06349999999999999)); +#1937 = AXIS2_PLACEMENT_3D('NONE', #1936, #1935, #1934); +#1938 = CIRCLE('NONE', #1937, 0.010159999999999997); +#1939 = CARTESIAN_POINT('NONE', (-0.06349999999999997, 0, -0.09144000000000001)); +#1940 = CARTESIAN_POINT('NONE', (-0.06159502377175151, 0, -0.09162063595554137)); +#1941 = CARTESIAN_POINT('NONE', (-0.06159036281965398, 0, -0.09162107792196772)); +#1942 = CARTESIAN_POINT('NONE', (-0.05964403971794528, 0, -0.09220068727427)); +#1943 = CARTESIAN_POINT('NONE', (-0.05963927760143756, 0, -0.09220210541869946)); +#1944 = CARTESIAN_POINT('NONE', (-0.05777721202317117, 0, -0.09320569538617582)); +#1945 = CARTESIAN_POINT('NONE', (-0.05777265606161424, 0, -0.09320815089438353)); +#1946 = CARTESIAN_POINT('NONE', (-0.056130425495720795, 0, -0.0946068901012511)); +#1947 = CARTESIAN_POINT('NONE', (-0.05612640740988475, 0, -0.09461031243080224)); +#1948 = CARTESIAN_POINT('NONE', (-0.05482056570559233, 0, -0.09631968761536754)); +#1949 = CARTESIAN_POINT('NONE', (-0.054817370670641026, 0, -0.09632386998559024)); +#1950 = CARTESIAN_POINT('NONE', (-0.053919344216065514, 0, -0.09821978301474601)); +#1951 = CARTESIAN_POINT('NONE', (-0.05391714699269599, 0, -0.09822442179169186)); +#1952 = CARTESIAN_POINT('NONE', (-0.053441449717055785, 0, -0.1001712455933366)); +#1953 = CARTESIAN_POINT('NONE', (-0.05344028581685492, 0, -0.10017600893491915)); +#1954 = CARTESIAN_POINT('NONE', (-0.05335098774326624, 0, -0.10206305299305748)); +#1955 = CARTESIAN_POINT('NONE', (-0.05335076925547767, 0.0000000000000000000002168404344971009, -0.10206767007007422)); +#1956 = CARTESIAN_POINT('NONE', (-0.05362638068341533, 0, -0.1039933204888514)); +#1957 = CARTESIAN_POINT('NONE', (-0.053627055028661275, 0, -0.10399803202499838)); +#1958 = CARTESIAN_POINT('NONE', (-0.05431222427483894, 0.00000000000000000005551115123125783, -0.10593590132684769)); +#1959 = CARTESIAN_POINT('NONE', (-0.05431390069525185, 0, -0.10594064275923579)); +#1960 = CARTESIAN_POINT('NONE', (-0.055421264214015435, 0, -0.10776023756623672)); +#1961 = CARTESIAN_POINT('NONE', (-0.05542397362751833, 0, -0.1077646896135151)); +#1962 = CARTESIAN_POINT('NONE', (-0.0569102454050552, 0, -0.10933235517450889)); +#1963 = CARTESIAN_POINT('NONE', (-0.05691388190269558, 0, -0.10933619082031716)); +#1964 = CARTESIAN_POINT('NONE', (-0.05868249966589813, 0, -0.11054461090569685)); +#1965 = CARTESIAN_POINT('NONE', (-0.058686826986392146, 0, -0.11054756757678184)); +#1966 = CARTESIAN_POINT('NONE', (-0.060607968176961145, 0, -0.11133915748156599)); +#1967 = CARTESIAN_POINT('NONE', (-0.060612668680268766, 0, -0.11134109428401652)); +#1968 = CARTESIAN_POINT('NONE', (-0.06255244400540243, 0.00000000000000000005551115123125783, -0.11171524536344939)); +#1969 = CARTESIAN_POINT('NONE', (-0.06255719010130449, 0, -0.1117161608080794)); +#1970 = CARTESIAN_POINT('NONE', (-0.06443820756709014, 0, -0.1117161608080794)); +#1971 = CARTESIAN_POINT('NONE', (-0.06444280989869544, 0, -0.1117161608080794)); +#1972 = CARTESIAN_POINT('NONE', (-0.06638258522382912, 0.00000000000000000005551115123125783, -0.11134200972864651)); +#1973 = CARTESIAN_POINT('NONE', (-0.06638733131973118, 0, -0.11134109428401649)); +#1974 = CARTESIAN_POINT('NONE', (-0.06830847251030019, 0, -0.11054950437923236)); +#1975 = CARTESIAN_POINT('NONE', (-0.06831317301360783, 0, -0.11054756757678183)); +#1976 = CARTESIAN_POINT('NONE', (-0.07008179077681034, 0, -0.10933914749140215)); +#1977 = CARTESIAN_POINT('NONE', (-0.07008611809730436, 0, -0.10933619082031718)); +#1978 = CARTESIAN_POINT('NONE', (-0.07157238987484124, 0.00000000000000000005551115123125783, -0.10776852525932336)); +#1979 = CARTESIAN_POINT('NONE', (-0.07157602637248162, 0, -0.10776468961351508)); +#1980 = CARTESIAN_POINT('NONE', (-0.07268338989124523, 0, -0.10594509480651415)); +#1981 = CARTESIAN_POINT('NONE', (-0.07268609930474812, 0, -0.10594064275923577)); +#1982 = CARTESIAN_POINT('NONE', (-0.0733712685509258, 0, -0.10400277345738651)); +#1983 = CARTESIAN_POINT('NONE', (-0.0733729449713387, 0, -0.10399803202499841)); +#1984 = CARTESIAN_POINT('NONE', (-0.07364855639927634, 0.00000000000000000005551115123125783, -0.1020723816062212)); +#1985 = CARTESIAN_POINT('NONE', (-0.07364923074452229, 0, -0.10206767007007422)); +#1986 = CARTESIAN_POINT('NONE', (-0.07355993267093361, 0, -0.1001806260119359)); +#1987 = CARTESIAN_POINT('NONE', (-0.07355971418314504, 0, -0.10017600893491915)); +#1988 = CARTESIAN_POINT('NONE', (-0.07308401690750482, 0, -0.09822918513327443)); +#1989 = CARTESIAN_POINT('NONE', (-0.07308285300730397, 0, -0.09822442179169187)); +#1990 = CARTESIAN_POINT('NONE', (-0.07218482655272845, 0.00000000000000000005551115123125783, -0.09632850876253607)); +#1991 = CARTESIAN_POINT('NONE', (-0.07218262932935893, 0, -0.09632386998559024)); +#1992 = CARTESIAN_POINT('NONE', (-0.07087678762506651, 0.00000000000000000005551115123125783, -0.09461449480102492)); +#1993 = CARTESIAN_POINT('NONE', (-0.0708735925901152, 0, -0.09461031243080223)); +#1994 = CARTESIAN_POINT('NONE', (-0.06923136202422177, 0.00000000000000000005551115123125783, -0.09321157322393467)); +#1995 = CARTESIAN_POINT('NONE', (-0.06922734393838573, 0, -0.09320815089438353)); +#1996 = CARTESIAN_POINT('NONE', (-0.06736527836011932, 0, -0.09220456092690717)); +#1997 = CARTESIAN_POINT('NONE', (-0.0673607223985624, 0, -0.09220210541869944)); +#1998 = CARTESIAN_POINT('NONE', (-0.0654143992968537, 0, -0.09162249606639718)); +#1999 = CARTESIAN_POINT('NONE', (-0.06540963718034597, 0, -0.0916210779219677)); +#2000 = CARTESIAN_POINT('NONE', (-0.0635046609520975, 0, -0.09144044196642637)); +#2001 = CARTESIAN_POINT('NONE', (-0.06349999999999997, 0, -0.09144000000000001)); +#2002 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#1939, #1940, #1941, #1942, #1943, #1944, #1945, #1946, #1947, #1948, #1949, #1950, #1951, #1952, #1953, #1954, #1955, #1956, #1957, #1958, #1959, #1960, #1961, #1962, #1963, #1964, #1965, #1966, #1967, #1968, #1969, #1970, #1971, #1972, #1973, #1974, #1975, #1976, #1977, #1978, #1979, #1980, #1981, #1982, #1983, #1984, #1985, #1986, #1987, #1988, #1989, #1990, #1991, #1992, #1993, #1994, #1995, #1996, #1997, #1998, #1999, #2000, #2001), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (0, 0.01639344262295082, 0.03278688524590164, 0.04918032786885246, 0.06557377049180328, 0.0819672131147541, 0.09836065573770492, 0.11475409836065574, 0.13114754098360656, 0.14754098360655737, 0.1639344262295082, 0.18032786885245902, 0.19672131147540983, 0.21311475409836067, 0.22950819672131148, 0.24590163934426232, 0.26229508196721313, 0.27868852459016397, 0.29508196721311475, 0.3114754098360656, 0.3278688524590164, 0.3442622950819672, 0.36065573770491804, 0.3770491803278689, 0.39344262295081966, 0.4098360655737705, 0.42622950819672134, 0.4426229508196722, 0.45901639344262296, 0.4754098360655738, 0.49180327868852464, 0.5081967213114753, 0.5245901639344261, 0.540983606557377, 0.5573770491803278, 0.5737704918032787, 0.5901639344262295, 0.6065573770491803, 0.6229508196721312, 0.639344262295082, 0.6557377049180328, 0.6721311475409836, 0.6885245901639344, 0.7049180327868853, 0.721311475409836, 0.7377049180327868, 0.7540983606557377, 0.7704918032786885, 0.7868852459016393, 0.8032786885245902, 0.819672131147541, 0.8360655737704918, 0.8524590163934427, 0.8688524590163934, 0.8852459016393442, 0.9016393442622951, 0.9180327868852459, 0.9344262295081968, 0.9508196721311475, 0.9672131147540983, 0.9836065573770492, 1), .UNSPECIFIED.); +#2003 = DIRECTION('NONE', (0, 1, 0)); +#2004 = VECTOR('NONE', #2003, 1); +#2005 = CARTESIAN_POINT('NONE', (-0.06349999999999997, -0.0000009999999999994458, -0.09144000000000001)); +#2006 = LINE('NONE', #2005, #2004); +#2007 = DIRECTION('NONE', (-0.0000000000000013987061727561012, 0, 1)); +#2008 = DIRECTION('NONE', (0, 1, -0)); +#2009 = CARTESIAN_POINT('NONE', (-0.06349999999999996, 0.0127, -0.10160000000000002)); +#2010 = AXIS2_PLACEMENT_3D('NONE', #2009, #2008, #2007); +#2011 = CIRCLE('NONE', #2010, 0.010160000000000011); +#2012 = CARTESIAN_POINT('NONE', (-0.053340000000000005, -0.000000000000000000013877787807814457, 0.1016)); +#2013 = CARTESIAN_POINT('NONE', (-0.05335066411512031, 0, 0.10113689579786446)); +#2014 = CARTESIAN_POINT('NONE', (-0.0533507692554777, -0.000000000000000000013877787807814457, 0.10113232992992577)); +#2015 = CARTESIAN_POINT('NONE', (-0.05338351632977439, 0, 0.10066182889657646)); +#2016 = CARTESIAN_POINT('NONE', (-0.05338383919192059, -0.000000000000000000013877787807814457, 0.10065719010130453)); +#2017 = CARTESIAN_POINT('NONE', (-0.05343973472784685, 0, 0.10018070671183685)); +#2018 = CARTESIAN_POINT('NONE', (-0.05344028581685495, -0.000000000000000000013877787807814457, 0.10017600893491914)); +#2019 = CARTESIAN_POINT('NONE', (-0.053520289147774035, 0, 0.09969510418791576)); +#2020 = CARTESIAN_POINT('NONE', (-0.053521077921967725, 0.000000000000000000013877787807814457, 0.09969036281965399)); +#2021 = CARTESIAN_POINT('NONE', (-0.05362602037302552, -0.0000000000000000000002168404344971009, 0.09920673617913801)); +#2022 = CARTESIAN_POINT('NONE', (-0.053627055028661295, -0.000000000000000000013877787807814457, 0.09920196797500158)); +#2023 = CARTESIAN_POINT('NONE', (-0.05375761845630095, 0, 0.09871744571456113)); +#2024 = CARTESIAN_POINT('NONE', (-0.05375890571598349, -0.000000000000000000013877787807814457, 0.0987126686802688)); +#2025 = CARTESIAN_POINT('NONE', (-0.053915602081404584, 0.0000000000000000000002168404344971009, 0.09822918855133152)); +#2026 = CARTESIAN_POINT('NONE', (-0.053917146992696, -0.000000000000000000013877787807814457, 0.09822442179169184)); +#2027 = CARTESIAN_POINT('NONE', (-0.054100299667591306, 0, 0.09774401406940003)); +#2028 = CARTESIAN_POINT('NONE', (-0.05410210541869945, -0.000000000000000000013877787807814457, 0.09773927760143755)); +#2029 = CARTESIAN_POINT('NONE', (-0.05431183293568236, 0, 0.09726404270842219)); +#2030 = CARTESIAN_POINT('NONE', (-0.05431390069525188, -0.000000000000000000013877787807814457, 0.09725935724076426)); +#2031 = CARTESIAN_POINT('NONE', (-0.054550103635385115, 0, 0.09679144030436257)); +#2032 = CARTESIAN_POINT('NONE', (-0.05455243242321819, -0.000000000000000000013877787807814457, 0.09678682698639215)); +#2033 = CARTESIAN_POINT('NONE', (-0.05481478407567369, 0, 0.09632838983978277)); +#2034 = CARTESIAN_POINT('NONE', (-0.05481737067064105, -0.000000000000000000013877787807814457, 0.09632386998559024)); +#2035 = CARTESIAN_POINT('NONE', (-0.05510531200392262, 0, 0.09587706126802106)); +#2036 = CARTESIAN_POINT('NONE', (-0.055108150894383534, -0.000000000000000000013877787807814457, 0.09587265606161426)); +#2037 = CARTESIAN_POINT('NONE', (-0.05542089024676814, 0, 0.09543958019702864)); +#2038 = CARTESIAN_POINT('NONE', (-0.05542397362751837, -0.000000000000000000013877787807814457, 0.0954353103864849)); +#2039 = CARTESIAN_POINT('NONE', (-0.055760491361521405, 0, 0.09501799631352859)); +#2040 = CARTESIAN_POINT('NONE', (-0.055763809179682836, -0.000000000000000000013877787807814457, 0.0950138819026956)); +#2041 = CARTESIAN_POINT('NONE', (-0.056122867359452135, 0, 0.09461425248390944)); +#2042 = CARTESIAN_POINT('NONE', (-0.05612640740988478, -0.000000000000000000013877787807814457, 0.09461031243080223)); +#2043 = CARTESIAN_POINT('NONE', (-0.05650656436194201, 0, 0.094230155478745)); +#2044 = CARTESIAN_POINT('NONE', (-0.056510312430802234, -0.000000000000000000013877787807814457, 0.09422640740988478)); +#2045 = CARTESIAN_POINT('NONE', (-0.0569099418495884, 0, 0.09386734923011547)); +#2046 = CARTESIAN_POINT('NONE', (-0.05691388190269561, -0.000000000000000000013877787807814457, 0.09386380917968282)); +#2047 = CARTESIAN_POINT('NONE', (-0.0573311959756519, 0, 0.0935272914456798)); +#2048 = CARTESIAN_POINT('NONE', (-0.05733531038648489, -0.000000000000000000013877787807814457, 0.09352397362751835)); +#2049 = CARTESIAN_POINT('NONE', (-0.057768386251070517, 0, 0.09321123427513375)); +#2050 = CARTESIAN_POINT('NONE', (-0.057772656061614254, -0.000000000000000000013877787807814457, 0.09320815089438352)); +#2051 = CARTESIAN_POINT('NONE', (-0.05821946477918342, 0, 0.09292020956110196)); +#2052 = CARTESIAN_POINT('NONE', (-0.05822386998559023, -0.000000000000000000013877787807814457, 0.09291737067064104)); +#2053 = CARTESIAN_POINT('NONE', (-0.05868230713219964, 0, 0.09265501901818556)); +#2054 = CARTESIAN_POINT('NONE', (-0.05868682698639218, -0.000000000000000000013877787807814457, 0.0926524324232182)); +#2055 = CARTESIAN_POINT('NONE', (-0.05915474392279385, 0, 0.09241622948308492)); +#2056 = CARTESIAN_POINT('NONE', (-0.05915935724076425, -0.000000000000000000013877787807814457, 0.09241390069525185)); +#2057 = CARTESIAN_POINT('NONE', (-0.05963459213377964, 0, 0.09220417317826897)); +#2058 = CARTESIAN_POINT('NONE', (-0.05963927760143758, -0.000000000000000000013877787807814457, 0.09220210541869944)); +#2059 = CARTESIAN_POINT('NONE', (-0.06011968532372937, 0, 0.09201895274380413)); +#2060 = CARTESIAN_POINT('NONE', (-0.06012442179169185, -0.000000000000000000013877787807814457, 0.092017146992696)); +#2061 = CARTESIAN_POINT('NONE', (-0.06060790192062912, 0, 0.0918604506272749)); +#2062 = CARTESIAN_POINT('NONE', (-0.06061266868026879, 0.000000000000000000013877787807814457, 0.09185890571598349)); +#2063 = CARTESIAN_POINT('NONE', (-0.06109719094070928, -0.0000000000000000000002168404344971009, 0.09172834228834385)); +#2064 = CARTESIAN_POINT('NONE', (-0.0611019679750016, -0.000000000000000000013877787807814457, 0.09172705502866131)); +#2065 = CARTESIAN_POINT('NONE', (-0.061585594615517554, 0.0000000000000000000002168404344971009, 0.09162211257760347)); +#2066 = CARTESIAN_POINT('NONE', (-0.06159036281965399, -0.000000000000000000013877787807814457, 0.09162107792196769)); +#2067 = CARTESIAN_POINT('NONE', (-0.06207126756665737, 0, 0.09154107459104863)); +#2068 = CARTESIAN_POINT('NONE', (-0.06207600893491915, -0.000000000000000000013877787807814457, 0.09154028581685494)); +#2069 = CARTESIAN_POINT('NONE', (-0.06255249232438681, 0, 0.09148439028092868)); +#2070 = CARTESIAN_POINT('NONE', (-0.06255719010130452, -0.000000000000000000013877787807814457, 0.09148383919192057)); +#2071 = CARTESIAN_POINT('NONE', (-0.06302769113465384, 0, 0.09145109211762391)); +#2072 = CARTESIAN_POINT('NONE', (-0.06303232992992577, -0.000000000000000000013877787807814457, 0.09145076925547771)); +#2073 = CARTESIAN_POINT('NONE', (-0.06349543413206132, 0, 0.09144010514035739)); +#2074 = CARTESIAN_POINT('NONE', (-0.0635, -0.000000000000000000013877787807814457, 0.09144)); +#2075 = CARTESIAN_POINT('NONE', (-0.06396310420213554, 0, 0.09145066411512032)); +#2076 = CARTESIAN_POINT('NONE', (-0.06396767007007421, -0.000000000000000000013877787807814457, 0.09145076925547771)); +#2077 = CARTESIAN_POINT('NONE', (-0.06443817110342352, 0, 0.09148351632977438)); +#2078 = CARTESIAN_POINT('NONE', (-0.06444280989869547, -0.000000000000000000013877787807814457, 0.09148383919192057)); +#2079 = CARTESIAN_POINT('NONE', (-0.06491929328816315, 0, 0.09153973472784684)); +#2080 = CARTESIAN_POINT('NONE', (-0.06492399106508086, 0.000000000000000000013877787807814457, 0.09154028581685493)); +#2081 = CARTESIAN_POINT('NONE', (-0.06540489581208424, -0.0000000000000000000002168404344971009, 0.09162028914777404)); +#2082 = CARTESIAN_POINT('NONE', (-0.06540963718034601, -0.000000000000000000013877787807814457, 0.0916210779219677)); +#2083 = CARTESIAN_POINT('NONE', (-0.06589326382086196, 0, 0.09172602037302553)); +#2084 = CARTESIAN_POINT('NONE', (-0.0658980320249984, -0.000000000000000000013877787807814457, 0.09172705502866131)); +#2085 = CARTESIAN_POINT('NONE', (-0.06638255428543889, 0, 0.09185761845630096)); +#2086 = CARTESIAN_POINT('NONE', (-0.06638733131973122, -0.000000000000000000013877787807814457, 0.0918589057159835)); +#2087 = CARTESIAN_POINT('NONE', (-0.06687081144866847, 0, 0.09201560208140458)); +#2088 = CARTESIAN_POINT('NONE', (-0.06687557820830814, -0.000000000000000000013877787807814457, 0.092017146992696)); +#2089 = CARTESIAN_POINT('NONE', (-0.06735598593059992, 0, 0.09220029966759132)); +#2090 = CARTESIAN_POINT('NONE', (-0.06736072239856242, -0.000000000000000000013877787807814457, 0.09220210541869944)); +#2091 = CARTESIAN_POINT('NONE', (-0.06783595729157785, 0, 0.09241183293568235)); +#2092 = CARTESIAN_POINT('NONE', (-0.06784064275923578, -0.000000000000000000013877787807814457, 0.09241390069525188)); +#2093 = CARTESIAN_POINT('NONE', (-0.06830855969563743, 0, 0.09265010363538512)); +#2094 = CARTESIAN_POINT('NONE', (-0.06831317301360784, -0.000000000000000000013877787807814457, 0.09265243242321819)); +#2095 = CARTESIAN_POINT('NONE', (-0.06877161016021724, 0, 0.09291478407567369)); +#2096 = CARTESIAN_POINT('NONE', (-0.06877613001440977, -0.000000000000000000013877787807814457, 0.09291737067064104)); +#2097 = CARTESIAN_POINT('NONE', (-0.06922293873197893, 0.0000000000000000000002168404344971009, 0.09320531200392261)); +#2098 = CARTESIAN_POINT('NONE', (-0.06922734393838574, -0.000000000000000000013877787807814457, 0.09320815089438352)); +#2099 = CARTESIAN_POINT('NONE', (-0.06966041980297136, 0, 0.09352089024676813)); +#2100 = CARTESIAN_POINT('NONE', (-0.06966468961351509, -0.000000000000000000013877787807814457, 0.09352397362751835)); +#2101 = CARTESIAN_POINT('NONE', (-0.0700820036864714, 0, 0.0938604913615214)); +#2102 = CARTESIAN_POINT('NONE', (-0.07008611809730439, -0.000000000000000000013877787807814457, 0.09386380917968283)); +#2103 = CARTESIAN_POINT('NONE', (-0.07048574751609056, 0, 0.09422286735945212)); +#2104 = CARTESIAN_POINT('NONE', (-0.07048968756919777, -0.000000000000000000013877787807814457, 0.09422640740988478)); +#2105 = CARTESIAN_POINT('NONE', (-0.07086984452125498, 0, 0.09460656436194198)); +#2106 = CARTESIAN_POINT('NONE', (-0.07087359259011522, -0.000000000000000000013877787807814457, 0.09461031243080222)); +#2107 = CARTESIAN_POINT('NONE', (-0.07123265076988451, 0, 0.0950099418495884)); +#2108 = CARTESIAN_POINT('NONE', (-0.07123619082031717, -0.000000000000000000013877787807814457, 0.09501388190269562)); +#2109 = CARTESIAN_POINT('NONE', (-0.0715727085543202, 0, 0.09543119597565188)); +#2110 = CARTESIAN_POINT('NONE', (-0.07157602637248163, -0.000000000000000000013877787807814457, 0.09543531038648487)); +#2111 = CARTESIAN_POINT('NONE', (-0.07188876572486624, 0, 0.09586838625107051)); +#2112 = CARTESIAN_POINT('NONE', (-0.07189184910561647, -0.000000000000000000013877787807814457, 0.09587265606161426)); +#2113 = CARTESIAN_POINT('NONE', (-0.07217979043889805, 0, 0.0963194647791834)); +#2114 = CARTESIAN_POINT('NONE', (-0.07218262932935895, -0.000000000000000000013877787807814457, 0.09632386998559023)); +#2115 = CARTESIAN_POINT('NONE', (-0.07244498098181448, 0, 0.09678230713219964)); +#2116 = CARTESIAN_POINT('NONE', (-0.07244756757678184, -0.000000000000000000013877787807814457, 0.09678682698639217)); +#2117 = CARTESIAN_POINT('NONE', (-0.07248075742013607, 0, 0.09685257591319725)); +#2118 = CARTESIAN_POINT('NONE', (-0.07268377051691507, 0, 0.09725474392279385)); +#2119 = CARTESIAN_POINT('NONE', (-0.07268609930474813, -0.000000000000000000013877787807814457, 0.09725935724076426)); +#2120 = CARTESIAN_POINT('NONE', (-0.07289582682173103, 0, 0.09773459213377964)); +#2121 = CARTESIAN_POINT('NONE', (-0.07289789458130055, -0.000000000000000000013877787807814457, 0.09773927760143757)); +#2122 = CARTESIAN_POINT('NONE', (-0.07308104725619584, 0, 0.09821968532372935)); +#2123 = CARTESIAN_POINT('NONE', (-0.07308285300730398, -0.000000000000000000013877787807814457, 0.09822442179169184)); +#2124 = CARTESIAN_POINT('NONE', (-0.07323954937272509, 0, 0.0987079019206291)); +#2125 = CARTESIAN_POINT('NONE', (-0.07324109428401651, 0.000000000000000000013877787807814457, 0.09871266868026878)); +#2126 = CARTESIAN_POINT('NONE', (-0.07337165771165616, -0.0000000000000000000002168404344971009, 0.09919719094070927)); +#2127 = CARTESIAN_POINT('NONE', (-0.0733729449713387, -0.000000000000000000013877787807814457, 0.0992019679750016)); +#2128 = CARTESIAN_POINT('NONE', (-0.07347788742239651, 0.0000000000000000000002168404344971009, 0.09968559461551754)); +#2129 = CARTESIAN_POINT('NONE', (-0.07347892207803228, -0.000000000000000000013877787807814457, 0.09969036281965399)); +#2130 = CARTESIAN_POINT('NONE', (-0.07355892540895137, 0, 0.10017126756665735)); +#2131 = CARTESIAN_POINT('NONE', (-0.07355971418314505, -0.000000000000000000013877787807814457, 0.10017600893491913)); +#2132 = CARTESIAN_POINT('NONE', (-0.0736156097190713, 0, 0.1006524923243868)); +#2133 = CARTESIAN_POINT('NONE', (-0.0736161608080794, -0.000000000000000000013877787807814457, 0.10065719010130451)); +#2134 = CARTESIAN_POINT('NONE', (-0.0736489078823761, 0, 0.10112769113465384)); +#2135 = CARTESIAN_POINT('NONE', (-0.07364923074452231, -0.000000000000000000013877787807814457, 0.10113232992992577)); +#2136 = CARTESIAN_POINT('NONE', (-0.07365989485964261, 0, 0.10159543413206132)); +#2137 = CARTESIAN_POINT('NONE', (-0.07366, -0.000000000000000000013877787807814457, 0.1016)); +#2138 = CARTESIAN_POINT('NONE', (-0.07364933588487971, 0, 0.10206310420213553)); +#2139 = CARTESIAN_POINT('NONE', (-0.07364923074452231, -0.000000000000000000013877787807814457, 0.10206767007007421)); +#2140 = CARTESIAN_POINT('NONE', (-0.07361648367022561, 0, 0.10253817110342352)); +#2141 = CARTESIAN_POINT('NONE', (-0.0736161608080794, -0.000000000000000000013877787807814457, 0.10254280989869546)); +#2142 = CARTESIAN_POINT('NONE', (-0.07356026527215315, 0, 0.10301929328816313)); +#2143 = CARTESIAN_POINT('NONE', (-0.07355971418314505, 0.000000000000000000013877787807814457, 0.10302399106508084)); +#2144 = CARTESIAN_POINT('NONE', (-0.07347971085222597, -0.0000000000000000000002168404344971009, 0.10350489581208423)); +#2145 = CARTESIAN_POINT('NONE', (-0.07347892207803229, -0.000000000000000000013877787807814457, 0.103509637180346)); +#2146 = CARTESIAN_POINT('NONE', (-0.07337397962697448, 0, 0.10399326382086195)); +#2147 = CARTESIAN_POINT('NONE', (-0.0733729449713387, -0.000000000000000000013877787807814457, 0.1039980320249984)); +#2148 = CARTESIAN_POINT('NONE', (-0.07324238154369905, 0, 0.10448255428543886)); +#2149 = CARTESIAN_POINT('NONE', (-0.07324109428401651, -0.000000000000000000013877787807814457, 0.10448733131973119)); +#2150 = CARTESIAN_POINT('NONE', (-0.0730843979185954, 0, 0.10497081144866847)); +#2151 = CARTESIAN_POINT('NONE', (-0.07308285300730398, -0.000000000000000000013877787807814457, 0.10497557820830815)); +#2152 = CARTESIAN_POINT('NONE', (-0.0728997003324087, 0, 0.10545598593059992)); +#2153 = CARTESIAN_POINT('NONE', (-0.07289789458130057, -0.000000000000000000013877787807814457, 0.10546072239856241)); +#2154 = CARTESIAN_POINT('NONE', (-0.07268816706431767, 0, 0.10593595729157784)); +#2155 = CARTESIAN_POINT('NONE', (-0.07268609930474813, -0.000000000000000000013877787807814457, 0.10594064275923577)); +#2156 = CARTESIAN_POINT('NONE', (-0.07244989636461491, 0, 0.10640855969563741)); +#2157 = CARTESIAN_POINT('NONE', (-0.07244756757678184, -0.000000000000000000013877787807814457, 0.10641317301360782)); +#2158 = CARTESIAN_POINT('NONE', (-0.07218521592432632, 0, 0.10687161016021723)); +#2159 = CARTESIAN_POINT('NONE', (-0.07218262932935895, -0.000000000000000000013877787807814457, 0.10687613001440976)); +#2160 = CARTESIAN_POINT('NONE', (-0.07189468799607737, 0.0000000000000000000002168404344971009, 0.1073229387319789)); +#2161 = CARTESIAN_POINT('NONE', (-0.07189184910561645, -0.000000000000000000013877787807814457, 0.10732734393838571)); +#2162 = CARTESIAN_POINT('NONE', (-0.07157910975323187, 0, 0.10776041980297137)); +#2163 = CARTESIAN_POINT('NONE', (-0.07157602637248163, -0.000000000000000000013877787807814457, 0.1077646896135151)); +#2164 = CARTESIAN_POINT('NONE', (-0.0712395086384786, 0, 0.10818200368647138)); +#2165 = CARTESIAN_POINT('NONE', (-0.07123619082031717, -0.000000000000000000013877787807814457, 0.10818611809730437)); +#2166 = CARTESIAN_POINT('NONE', (-0.07087713264054787, 0, 0.10858574751609054)); +#2167 = CARTESIAN_POINT('NONE', (-0.07087359259011522, -0.000000000000000000013877787807814457, 0.10858968756919775)); +#2168 = CARTESIAN_POINT('NONE', (-0.070493435638058, 0, 0.10896984452125497)); +#2169 = CARTESIAN_POINT('NONE', (-0.07048968756919777, -0.000000000000000000013877787807814457, 0.1089735925901152)); +#2170 = CARTESIAN_POINT('NONE', (-0.07009005815041161, 0, 0.1093326507698845)); +#2171 = CARTESIAN_POINT('NONE', (-0.07008611809730439, -0.000000000000000000013877787807814457, 0.10933619082031716)); +#2172 = CARTESIAN_POINT('NONE', (-0.0696688040243481, 0, 0.1096727085543202)); +#2173 = CARTESIAN_POINT('NONE', (-0.06966468961351509, -0.000000000000000000013877787807814457, 0.10967602637248162)); +#2174 = CARTESIAN_POINT('NONE', (-0.06923161374892947, 0, 0.10998876572486624)); +#2175 = CARTESIAN_POINT('NONE', (-0.06922734393838574, -0.000000000000000000013877787807814457, 0.10999184910561646)); +#2176 = CARTESIAN_POINT('NONE', (-0.0687805352208166, 0, 0.11027979043889803)); +#2177 = CARTESIAN_POINT('NONE', (-0.06877613001440978, -0.000000000000000000013877787807814457, 0.11028262932935894)); +#2178 = CARTESIAN_POINT('NONE', (-0.06831769286780037, 0, 0.11054498098181448)); +#2179 = CARTESIAN_POINT('NONE', (-0.06831317301360784, -0.000000000000000000013877787807814457, 0.11054756757678183)); +#2180 = CARTESIAN_POINT('NONE', (-0.06784525607720618, 0, 0.11078377051691507)); +#2181 = CARTESIAN_POINT('NONE', (-0.06784064275923576, -0.000000000000000000013877787807814457, 0.11078609930474813)); +#2182 = CARTESIAN_POINT('NONE', (-0.06736540786622036, 0, 0.11099582682173105)); +#2183 = CARTESIAN_POINT('NONE', (-0.06736072239856243, -0.000000000000000000013877787807814457, 0.11099789458130058)); +#2184 = CARTESIAN_POINT('NONE', (-0.06688031467627063, 0, 0.11118104725619583)); +#2185 = CARTESIAN_POINT('NONE', (-0.06687557820830814, -0.000000000000000000013877787807814457, 0.11118285300730398)); +#2186 = CARTESIAN_POINT('NONE', (-0.06639209807937088, 0, 0.1113395493727251)); +#2187 = CARTESIAN_POINT('NONE', (-0.06638733131973121, 0.000000000000000000013877787807814457, 0.11134109428401652)); +#2188 = CARTESIAN_POINT('NONE', (-0.06590280905929073, -0.0000000000000000000002168404344971009, 0.11147165771165617)); +#2189 = CARTESIAN_POINT('NONE', (-0.0658980320249984, -0.000000000000000000013877787807814457, 0.11147294497133871)); +#2190 = CARTESIAN_POINT('NONE', (-0.06541440538448243, 0.0000000000000000000002168404344971009, 0.11157788742239648)); +#2191 = CARTESIAN_POINT('NONE', (-0.06540963718034598, -0.000000000000000000013877787807814457, 0.11157892207803226)); +#2192 = CARTESIAN_POINT('NONE', (-0.06492873243334263, 0, 0.11165892540895136)); +#2193 = CARTESIAN_POINT('NONE', (-0.06492399106508086, -0.000000000000000000013877787807814457, 0.11165971418314505)); +#2194 = CARTESIAN_POINT('NONE', (-0.06444750767561318, 0, 0.1117156097190713)); +#2195 = CARTESIAN_POINT('NONE', (-0.06444280989869547, -0.000000000000000000013877787807814457, 0.11171616080807939)); +#2196 = CARTESIAN_POINT('NONE', (-0.06397230886534616, 0, 0.11174890788237608)); +#2197 = CARTESIAN_POINT('NONE', (-0.06396767007007421, -0.000000000000000000013877787807814457, 0.1117492307445223)); +#2198 = CARTESIAN_POINT('NONE', (-0.06350456586793868, 0, 0.1117598948596426)); +#2199 = CARTESIAN_POINT('NONE', (-0.0635, -0.000000000000000000013877787807814457, 0.11175999999999998)); +#2200 = CARTESIAN_POINT('NONE', (-0.06303689579786446, 0, 0.11174933588487969)); +#2201 = CARTESIAN_POINT('NONE', (-0.06303232992992579, -0.000000000000000000013877787807814457, 0.1117492307445223)); +#2202 = CARTESIAN_POINT('NONE', (-0.06256182889657645, 0, 0.1117164836702256)); +#2203 = CARTESIAN_POINT('NONE', (-0.06255719010130452, -0.000000000000000000013877787807814457, 0.11171616080807939)); +#2204 = CARTESIAN_POINT('NONE', (-0.062080706711836846, 0, 0.11166026527215314)); +#2205 = CARTESIAN_POINT('NONE', (-0.062076008934919144, 0.000000000000000000013877787807814457, 0.11165971418314505)); +#2206 = CARTESIAN_POINT('NONE', (-0.061595104187915785, -0.0000000000000000000002168404344971009, 0.11157971085222596)); +#2207 = CARTESIAN_POINT('NONE', (-0.061590362819654014, -0.000000000000000000013877787807814457, 0.11157892207803227)); +#2208 = CARTESIAN_POINT('NONE', (-0.06110673617913804, 0, 0.11147397962697449)); +#2209 = CARTESIAN_POINT('NONE', (-0.06110196797500161, -0.000000000000000000013877787807814457, 0.11147294497133871)); +#2210 = CARTESIAN_POINT('NONE', (-0.060617445714561125, 0, 0.11134238154369903)); +#2211 = CARTESIAN_POINT('NONE', (-0.060612668680268794, -0.000000000000000000013877787807814457, 0.11134109428401649)); +#2212 = CARTESIAN_POINT('NONE', (-0.06012918855133153, 0, 0.1111843979185954)); +#2213 = CARTESIAN_POINT('NONE', (-0.060124421791691855, -0.000000000000000000013877787807814457, 0.11118285300730398)); +#2214 = CARTESIAN_POINT('NONE', (-0.059644014069400064, 0, 0.1109997003324087)); +#2215 = CARTESIAN_POINT('NONE', (-0.059639277601437585, -0.000000000000000000013877787807814457, 0.11099789458130058)); +#2216 = CARTESIAN_POINT('NONE', (-0.05916404270842218, 0, 0.11078816706431766)); +#2217 = CARTESIAN_POINT('NONE', (-0.059159357240764245, -0.000000000000000000013877787807814457, 0.11078609930474813)); +#2218 = CARTESIAN_POINT('NONE', (-0.05875257591319727, 0, 0.11058075742013605)); +#2219 = CARTESIAN_POINT('NONE', (-0.05869144030436258, 0, 0.11054989636461487)); +#2220 = CARTESIAN_POINT('NONE', (-0.058686826986392174, -0.000000000000000000013877787807814457, 0.11054756757678182)); +#2221 = CARTESIAN_POINT('NONE', (-0.05822838983978277, 0, 0.1102852159243263)); +#2222 = CARTESIAN_POINT('NONE', (-0.05822386998559023, -0.000000000000000000013877787807814457, 0.11028262932935895)); +#2223 = CARTESIAN_POINT('NONE', (-0.05777706126802105, 0.0000000000000000000002168404344971009, 0.10999468799607735)); +#2224 = CARTESIAN_POINT('NONE', (-0.05777265606161423, -0.000000000000000000013877787807814457, 0.10999184910561645)); +#2225 = CARTESIAN_POINT('NONE', (-0.05733958019702863, 0, 0.10967910975323188)); +#2226 = CARTESIAN_POINT('NONE', (-0.05733531038648489, -0.000000000000000000013877787807814457, 0.10967602637248164)); +#2227 = CARTESIAN_POINT('NONE', (-0.056917996313528604, 0, 0.10933950863847859)); +#2228 = CARTESIAN_POINT('NONE', (-0.05691388190269561, -0.000000000000000000013877787807814457, 0.10933619082031716)); +#2229 = CARTESIAN_POINT('NONE', (-0.056514252483909455, 0, 0.10897713264054787)); +#2230 = CARTESIAN_POINT('NONE', (-0.056510312430802234, -0.000000000000000000013877787807814457, 0.10897359259011521)); +#2231 = CARTESIAN_POINT('NONE', (-0.056130155478744996, 0, 0.108593435638058)); +#2232 = CARTESIAN_POINT('NONE', (-0.05612640740988477, -0.000000000000000000013877787807814457, 0.10858968756919776)); +#2233 = CARTESIAN_POINT('NONE', (-0.05576734923011548, 0, 0.10819005815041159)); +#2234 = CARTESIAN_POINT('NONE', (-0.055763809179682836, -0.000000000000000000013877787807814457, 0.10818611809730437)); +#2235 = CARTESIAN_POINT('NONE', (-0.055427291445679795, 0, 0.10776880402434809)); +#2236 = CARTESIAN_POINT('NONE', (-0.05542397362751836, -0.000000000000000000013877787807814457, 0.10776468961351508)); +#2237 = CARTESIAN_POINT('NONE', (-0.05511123427513376, 0, 0.10733161374892948)); +#2238 = CARTESIAN_POINT('NONE', (-0.05510815089438353, -0.000000000000000000013877787807814457, 0.10732734393838575)); +#2239 = CARTESIAN_POINT('NONE', (-0.054820209561101965, 0, 0.10688053522081659)); +#2240 = CARTESIAN_POINT('NONE', (-0.054817370670641054, -0.000000000000000000013877787807814457, 0.10687613001440976)); +#2241 = CARTESIAN_POINT('NONE', (-0.05455501901818555, 0, 0.10641769286780038)); +#2242 = CARTESIAN_POINT('NONE', (-0.05455243242321819, -0.000000000000000000013877787807814457, 0.10641317301360785)); +#2243 = CARTESIAN_POINT('NONE', (-0.054316229483084955, 0, 0.10594525607720617)); +#2244 = CARTESIAN_POINT('NONE', (-0.05431390069525188, -0.000000000000000000013877787807814457, 0.10594064275923576)); +#2245 = CARTESIAN_POINT('NONE', (-0.05410417317826897, 0.0000000000000000000002168404344971009, 0.10546540786622034)); +#2246 = CARTESIAN_POINT('NONE', (-0.05410210541869945, -0.000000000000000000013877787807814457, 0.10546072239856241)); +#2247 = CARTESIAN_POINT('NONE', (-0.05391895274380415, 0, 0.10498031467627063)); +#2248 = CARTESIAN_POINT('NONE', (-0.053917146992696015, -0.000000000000000000013877787807814457, 0.10497557820830813)); +#2249 = CARTESIAN_POINT('NONE', (-0.0537604506272749, 0, 0.10449209807937086)); +#2250 = CARTESIAN_POINT('NONE', (-0.053758905715983483, 0.000000000000000000013877787807814457, 0.10448733131973119)); +#2251 = CARTESIAN_POINT('NONE', (-0.05362834228834385, -0.0000000000000000000002168404344971009, 0.10400280905929071)); +#2252 = CARTESIAN_POINT('NONE', (-0.05362705502866131, -0.000000000000000000013877787807814457, 0.10399803202499838)); +#2253 = CARTESIAN_POINT('NONE', (-0.05352211257760349, 0.0000000000000000000002168404344971009, 0.10351440538448242)); +#2254 = CARTESIAN_POINT('NONE', (-0.05352107792196771, -0.000000000000000000013877787807814457, 0.10350963718034598)); +#2255 = CARTESIAN_POINT('NONE', (-0.05344107459104863, 0, 0.10302873243334261)); +#2256 = CARTESIAN_POINT('NONE', (-0.05344028581685495, -0.000000000000000000013877787807814457, 0.10302399106508084)); +#2257 = CARTESIAN_POINT('NONE', (-0.05338439028092869, 0, 0.10254750767561317)); +#2258 = CARTESIAN_POINT('NONE', (-0.053383839191920586, -0.000000000000000000013877787807814457, 0.10254280989869546)); +#2259 = CARTESIAN_POINT('NONE', (-0.053351092117623906, 0, 0.10207230886534616)); +#2260 = CARTESIAN_POINT('NONE', (-0.0533507692554777, -0.000000000000000000013877787807814457, 0.10206767007007421)); +#2261 = CARTESIAN_POINT('NONE', (-0.05334010514035739, 0, 0.10160456586793867)); +#2262 = CARTESIAN_POINT('NONE', (-0.053340000000000005, -0.000000000000000000013877787807814457, 0.1016)); +#2263 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#2012, #2013, #2014, #2015, #2016, #2017, #2018, #2019, #2020, #2021, #2022, #2023, #2024, #2025, #2026, #2027, #2028, #2029, #2030, #2031, #2032, #2033, #2034, #2035, #2036, #2037, #2038, #2039, #2040, #2041, #2042, #2043, #2044, #2045, #2046, #2047, #2048, #2049, #2050, #2051, #2052, #2053, #2054, #2055, #2056, #2057, #2058, #2059, #2060, #2061, #2062, #2063, #2064, #2065, #2066, #2067, #2068, #2069, #2070, #2071, #2072, #2073, #2074, #2075, #2076, #2077, #2078, #2079, #2080, #2081, #2082, #2083, #2084, #2085, #2086, #2087, #2088, #2089, #2090, #2091, #2092, #2093, #2094, #2095, #2096, #2097, #2098, #2099, #2100, #2101, #2102, #2103, #2104, #2105, #2106, #2107, #2108, #2109, #2110, #2111, #2112, #2113, #2114, #2115, #2116, #2117, #2118, #2119, #2120, #2121, #2122, #2123, #2124, #2125, #2126, #2127, #2128, #2129, #2130, #2131, #2132, #2133, #2134, #2135, #2136, #2137, #2138, #2139, #2140, #2141, #2142, #2143, #2144, #2145, #2146, #2147, #2148, #2149, #2150, #2151, #2152, #2153, #2154, #2155, #2156, #2157, #2158, #2159, #2160, #2161, #2162, #2163, #2164, #2165, #2166, #2167, #2168, #2169, #2170, #2171, #2172, #2173, #2174, #2175, #2176, #2177, #2178, #2179, #2180, #2181, #2182, #2183, #2184, #2185, #2186, #2187, #2188, #2189, #2190, #2191, #2192, #2193, #2194, #2195, #2196, #2197, #2198, #2199, #2200, #2201, #2202, #2203, #2204, #2205, #2206, #2207, #2208, #2209, #2210, #2211, #2212, #2213, #2214, #2215, #2216, #2217, #2218, #2219, #2220, #2221, #2222, #2223, #2224, #2225, #2226, #2227, #2228, #2229, #2230, #2231, #2232, #2233, #2234, #2235, #2236, #2237, #2238, #2239, #2240, #2241, #2242, #2243, #2244, #2245, #2246, #2247, #2248, #2249, #2250, #2251, #2252, #2253, #2254, #2255, #2256, #2257, #2258, #2259, #2260, #2261, #2262), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (-1, -0.9959839357429718, -0.9919678714859438, -0.9879518072289156, -0.9839357429718876, -0.9799196787148594, -0.9759036144578314, -0.9718875502008032, -0.9678714859437751, -0.963855421686747, -0.9598393574297188, -0.9558232931726908, -0.9518072289156626, -0.9477911646586346, -0.9437751004016064, -0.9397590361445783, -0.9357429718875502, -0.9317269076305221, -0.927710843373494, -0.9236947791164659, -0.9196787148594378, -0.9156626506024097, -0.9116465863453815, -0.9076305220883534, -0.9036144578313253, -0.8995983935742972, -0.8955823293172691, -0.891566265060241, -0.8875502008032129, -0.8835341365461847, -0.8795180722891567, -0.8755020080321285, -0.8714859437751004, -0.8674698795180723, -0.8634538152610443, -0.8594377510040161, -0.8554216867469879, -0.8514056224899599, -0.8473895582329317, -0.8433734939759037, -0.8393574297188755, -0.8353413654618473, -0.8313253012048193, -0.8273092369477912, -0.8232931726907631, -0.8192771084337349, -0.8152610441767069, -0.8112449799196787, -0.8072289156626506, -0.8032128514056225, -0.7991967871485944, -0.7951807228915663, -0.7911646586345382, -0.7871485943775101, -0.7831325301204819, -0.7791164658634538, -0.7751004016064258, -0.7710843373493976, -0.7670682730923695, -0.7630522088353414, -0.7590361445783133, -0.7550200803212852, -0.751004016064257, -0.7469879518072289, -0.7429718875502008, -0.7389558232931728, -0.7349397590361446, -0.7309236947791165, -0.7269076305220884, -0.7228915662650603, -0.7188755020080322, -0.714859437751004, -0.7108433734939759, -0.7068273092369478, -0.7028112449799198, -0.6987951807228916, -0.6947791164658634, -0.6907630522088354, -0.6867469879518073, -0.6827309236947792, -0.678714859437751, -0.6746987951807228, -0.6706827309236948, -0.6666666666666667, -0.6626506024096386, -0.6586345381526104, -0.6546184738955824, -0.6506024096385543, -0.6465863453815262, -0.642570281124498, -0.6385542168674699, -0.6345381526104418, -0.6305220883534137, -0.6265060240963856, -0.6224899598393574, -0.6184738955823293, -0.6144578313253013, -0.6104417670682731, -0.606425702811245, -0.6024096385542169, -0.5983935742971889, -0.5943775100401607, -0.5903614457831325, -0.5863453815261044, -0.5823293172690763, -0.5783132530120483, -0.5742971887550201, -0.570281124497992, -0.5662650602409639, -0.5622489959839359, -0.5582329317269077, -0.5542168674698795, -0.5502008032128515, -0.5461847389558233, -0.5421686746987953, -0.5381526104417671, -0.5341365461847389, -0.5301204819277109, -0.5261044176706828, -0.5220883534136547, -0.5180722891566265, -0.5140562248995985, -0.5100401606425704, -0.5060240963855422, -0.5020080321285141, -0.4979919678714859, -0.4939759036144578, -0.48995983935742965, -0.48594377510040154, -0.48192771084337344, -0.47791164658634533, -0.4738955823293172, -0.4698795180722891, -0.465863453815261, -0.4618473895582329, -0.4578313253012048, -0.4538152610441767, -0.4497991967871485, -0.4457831325301204, -0.4417670682730923, -0.4377510040160642, -0.4337349397590361, -0.429718875502008, -0.4257028112449799, -0.4216867469879518, -0.41767068273092367, -0.41365461847389556, -0.40963855421686746, -0.4056224899598393, -0.4016064257028112, -0.3975903614457831, -0.393574297188755, -0.38955823293172687, -0.38554216867469876, -0.38152610441767065, -0.37751004016064255, -0.37349397590361444, -0.36947791164658633, -0.3654618473895582, -0.36144578313253006, -0.35742971887550196, -0.35341365461847385, -0.34939759036144574, -0.34538152610441764, -0.34136546184738953, -0.3373493975903614, -0.3333333333333333, -0.3293172690763052, -0.3253012048192771, -0.321285140562249, -0.31726907630522083, -0.3132530120481927, -0.3092369477911646, -0.3052208835341365, -0.3012048192771084, -0.2971887550200803, -0.2931726907630522, -0.2891566265060241, -0.285140562248996, -0.28112449799196787, -0.2771084337349397, -0.2730923694779116, -0.2690763052208835, -0.2650602409638554, -0.2610441767068273, -0.2570281124497992, -0.25301204819277107, -0.24899598393574296, -0.24497991967871482, -0.24096385542168672, -0.2369477911646586, -0.2329317269076305, -0.2289156626506024, -0.22489959839357426, -0.22088353413654616, -0.21686746987951805, -0.21285140562248994, -0.20883534136546184, -0.20481927710843373, -0.2008032128514056, -0.1967871485943775, -0.19277108433734938, -0.18875502008032127, -0.18473895582329317, -0.18072289156626503, -0.17670682730923692, -0.17269076305220882, -0.1686746987951807, -0.1646586345381526, -0.1606425702811245, -0.15662650602409636, -0.15261044176706826, -0.14859437751004015, -0.14457831325301204, -0.14056224899598393, -0.1365461847389558, -0.1325301204819277, -0.1285140562248996, -0.12449799196787148, -0.12048192771084336, -0.11646586345381525, -0.11244979919678713, -0.10843373493975902, -0.10441767068273092, -0.1004016064257028, -0.09638554216867469, -0.09236947791164658, -0.08835341365461846, -0.08433734939759036, -0.08032128514056225, -0.07630522088353413, -0.07228915662650602, -0.0682730923694779, -0.0642570281124498, -0.06024096385542168, -0.056224899598393566, -0.05220883534136546, -0.048192771084337345, -0.04417670682730923, -0.040160642570281124, -0.03614457831325301, -0.0321285140562249, -0.028112449799196783, -0.024096385542168672, -0.020080321285140562, -0.01606425702811245, -0.012048192771084336, -0.008032128514056224, -0.004016064257028112, -0), .UNSPECIFIED.); +#2264 = DIRECTION('NONE', (0, 1, 0)); +#2265 = VECTOR('NONE', #2264, 1); +#2266 = CARTESIAN_POINT('NONE', (-0.053340000000000005, -0.0000009999999999994458, 0.1016)); +#2267 = LINE('NONE', #2266, #2265); +#2268 = DIRECTION('NONE', (1, 0, -0)); +#2269 = DIRECTION('NONE', (0, 1, 0)); +#2270 = CARTESIAN_POINT('NONE', (-0.06349999999999999, 0.0127, 0.1016)); +#2271 = AXIS2_PLACEMENT_3D('NONE', #2270, #2269, #2268); +#2272 = CIRCLE('NONE', #2271, 0.01015999999999999); +#2273 = CARTESIAN_POINT('NONE', (0.1016, 0, 0.053340000000000005)); +#2274 = CARTESIAN_POINT('NONE', (0.0996950237717515, 0, 0.05352063595554138)); +#2275 = CARTESIAN_POINT('NONE', (0.09969036281965399, 0, 0.053521077921967725)); +#2276 = CARTESIAN_POINT('NONE', (0.09774403971794529, 0, 0.05410068727426997)); +#2277 = CARTESIAN_POINT('NONE', (0.09773927760143755, 0, 0.05410210541869944)); +#2278 = CARTESIAN_POINT('NONE', (0.09587721202317116, 0, 0.05510569538617582)); +#2279 = CARTESIAN_POINT('NONE', (0.09587265606161426, 0, 0.055108150894383534)); +#2280 = CARTESIAN_POINT('NONE', (0.0942304254957208, 0, 0.056506890101251095)); +#2281 = CARTESIAN_POINT('NONE', (0.09422640740988478, 0, 0.05651031243080223)); +#2282 = CARTESIAN_POINT('NONE', (0.09292056570559236, 0, 0.05821968761536754)); +#2283 = CARTESIAN_POINT('NONE', (0.09291737067064104, 0, 0.05822386998559023)); +#2284 = CARTESIAN_POINT('NONE', (0.09201934421606552, 0, 0.06011978301474602)); +#2285 = CARTESIAN_POINT('NONE', (0.092017146992696, 0, 0.060124421791691855)); +#2286 = CARTESIAN_POINT('NONE', (0.0915414497170558, 0, 0.062071245593336606)); +#2287 = CARTESIAN_POINT('NONE', (0.09154028581685494, 0, 0.06207600893491916)); +#2288 = CARTESIAN_POINT('NONE', (0.09145098774326628, 0.0000000000000000000002168404344971009, 0.06396305299305746)); +#2289 = CARTESIAN_POINT('NONE', (0.09145076925547771, 0, 0.06396767007007421)); +#2290 = CARTESIAN_POINT('NONE', (0.09172638068341538, 0, 0.06589332048885142)); +#2291 = CARTESIAN_POINT('NONE', (0.09172705502866131, 0.00000000000000000005551115123125783, 0.0658980320249984)); +#2292 = CARTESIAN_POINT('NONE', (0.09241222427483897, 0, 0.06783590132684768)); +#2293 = CARTESIAN_POINT('NONE', (0.09241390069525188, 0, 0.06784064275923578)); +#2294 = CARTESIAN_POINT('NONE', (0.09352126421401546, 0, 0.06966023756623675)); +#2295 = CARTESIAN_POINT('NONE', (0.09352397362751835, 0, 0.06966468961351512)); +#2296 = CARTESIAN_POINT('NONE', (0.09501024540505523, 0, 0.0712323551745089)); +#2297 = CARTESIAN_POINT('NONE', (0.09501388190269562, 0, 0.07123619082031718)); +#2298 = CARTESIAN_POINT('NONE', (0.09678249966589815, 0, 0.07244461090569686)); +#2299 = CARTESIAN_POINT('NONE', (0.09678682698639217, 0, 0.07244756757678185)); +#2300 = CARTESIAN_POINT('NONE', (0.09870796817696115, 0, 0.07323915748156598)); +#2301 = CARTESIAN_POINT('NONE', (0.09871266868026878, 0.00000000000000000005551115123125783, 0.07324109428401651)); +#2302 = CARTESIAN_POINT('NONE', (0.10065244400540245, 0, 0.0736152453634494)); +#2303 = CARTESIAN_POINT('NONE', (0.10065719010130451, 0, 0.07361616080807942)); +#2304 = CARTESIAN_POINT('NONE', (0.10253820756709016, 0, 0.07361616080807942)); +#2305 = CARTESIAN_POINT('NONE', (0.10254280989869546, 0.00000000000000000005551115123125783, 0.07361616080807942)); +#2306 = CARTESIAN_POINT('NONE', (0.10448258522382912, 0, 0.07324200972864656)); +#2307 = CARTESIAN_POINT('NONE', (0.10448733131973119, 0, 0.07324109428401653)); +#2308 = CARTESIAN_POINT('NONE', (0.10640847251030018, 0, 0.07244950437923237)); +#2309 = CARTESIAN_POINT('NONE', (0.10641317301360782, 0, 0.07244756757678184)); +#2310 = CARTESIAN_POINT('NONE', (0.10818179077681035, 0, 0.07123914749140216)); +#2311 = CARTESIAN_POINT('NONE', (0.10818611809730437, 0.00000000000000000005551115123125783, 0.07123619082031718)); +#2312 = CARTESIAN_POINT('NONE', (0.10967238987484125, 0, 0.06966852525932339)); +#2313 = CARTESIAN_POINT('NONE', (0.10967602637248162, 0, 0.06966468961351512)); +#2314 = CARTESIAN_POINT('NONE', (0.11078338989124524, 0, 0.06784509480651416)); +#2315 = CARTESIAN_POINT('NONE', (0.11078609930474813, 0, 0.06784064275923578)); +#2316 = CARTESIAN_POINT('NONE', (0.1114712685509258, 0, 0.06590277345738652)); +#2317 = CARTESIAN_POINT('NONE', (0.11147294497133871, 0.00000000000000000005551115123125783, 0.06589803202499842)); +#2318 = CARTESIAN_POINT('NONE', (0.11174855639927635, 0, 0.06397238160622118)); +#2319 = CARTESIAN_POINT('NONE', (0.1117492307445223, 0, 0.06396767007007421)); +#2320 = CARTESIAN_POINT('NONE', (0.11165993267093362, 0, 0.062080626011935904)); +#2321 = CARTESIAN_POINT('NONE', (0.11165971418314505, 0, 0.06207600893491915)); +#2322 = CARTESIAN_POINT('NONE', (0.11118401690750483, 0, 0.06012918513327442)); +#2323 = CARTESIAN_POINT('NONE', (0.11118285300730398, 0.00000000000000000005551115123125783, 0.06012442179169187)); +#2324 = CARTESIAN_POINT('NONE', (0.11028482655272848, 0, 0.058228508762536074)); +#2325 = CARTESIAN_POINT('NONE', (0.11028262932935895, 0.00000000000000000005551115123125783, 0.05822386998559023)); +#2326 = CARTESIAN_POINT('NONE', (0.10897678762506652, 0, 0.05651449480102493)); +#2327 = CARTESIAN_POINT('NONE', (0.10897359259011521, 0.00000000000000000005551115123125783, 0.056510312430802234)); +#2328 = CARTESIAN_POINT('NONE', (0.10733136202422179, 0, 0.05511157322393466)); +#2329 = CARTESIAN_POINT('NONE', (0.10732734393838575, 0, 0.05510815089438353)); +#2330 = CARTESIAN_POINT('NONE', (0.10546527836011933, 0, 0.054104560926907165)); +#2331 = CARTESIAN_POINT('NONE', (0.10546072239856241, 0, 0.05410210541869945)); +#2332 = CARTESIAN_POINT('NONE', (0.10351439929685372, 0, 0.053522496066397175)); +#2333 = CARTESIAN_POINT('NONE', (0.10350963718034598, 0, 0.05352107792196771)); +#2334 = CARTESIAN_POINT('NONE', (0.10160466095209751, 0, 0.053340441966426344)); +#2335 = CARTESIAN_POINT('NONE', (0.1016, 0, 0.053340000000000005)); +#2336 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#2273, #2274, #2275, #2276, #2277, #2278, #2279, #2280, #2281, #2282, #2283, #2284, #2285, #2286, #2287, #2288, #2289, #2290, #2291, #2292, #2293, #2294, #2295, #2296, #2297, #2298, #2299, #2300, #2301, #2302, #2303, #2304, #2305, #2306, #2307, #2308, #2309, #2310, #2311, #2312, #2313, #2314, #2315, #2316, #2317, #2318, #2319, #2320, #2321, #2322, #2323, #2324, #2325, #2326, #2327, #2328, #2329, #2330, #2331, #2332, #2333, #2334, #2335), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (-1, -0.9836065573770492, -0.9672131147540983, -0.9508196721311475, -0.9344262295081968, -0.9180327868852459, -0.9016393442622951, -0.8852459016393442, -0.8688524590163934, -0.8524590163934427, -0.8360655737704918, -0.819672131147541, -0.8032786885245902, -0.7868852459016393, -0.7704918032786885, -0.7540983606557377, -0.7377049180327868, -0.721311475409836, -0.7049180327868853, -0.6885245901639344, -0.6721311475409836, -0.6557377049180328, -0.639344262295082, -0.6229508196721312, -0.6065573770491803, -0.5901639344262295, -0.5737704918032787, -0.5573770491803278, -0.540983606557377, -0.5245901639344261, -0.5081967213114753, -0.49180327868852464, -0.4754098360655738, -0.45901639344262296, -0.4426229508196722, -0.42622950819672134, -0.4098360655737705, -0.39344262295081966, -0.3770491803278689, -0.36065573770491804, -0.3442622950819672, -0.3278688524590164, -0.3114754098360656, -0.29508196721311475, -0.27868852459016397, -0.26229508196721313, -0.24590163934426232, -0.22950819672131148, -0.21311475409836067, -0.19672131147540983, -0.18032786885245902, -0.1639344262295082, -0.14754098360655737, -0.13114754098360656, -0.11475409836065574, -0.09836065573770492, -0.0819672131147541, -0.06557377049180328, -0.04918032786885246, -0.03278688524590164, -0.01639344262295082, -0), .UNSPECIFIED.); +#2337 = DIRECTION('NONE', (0, 1, 0)); +#2338 = VECTOR('NONE', #2337, 1); +#2339 = CARTESIAN_POINT('NONE', (0.1016, -0.0000009999999999994458, 0.053340000000000005)); +#2340 = LINE('NONE', #2339, #2338); +#2341 = DIRECTION('NONE', (-0.0000000000000013987061727561032, 0, -1)); +#2342 = DIRECTION('NONE', (0, 1, 0)); +#2343 = CARTESIAN_POINT('NONE', (0.10160000000000001, 0.0127, 0.0635)); +#2344 = AXIS2_PLACEMENT_3D('NONE', #2343, #2342, #2341); +#2345 = CIRCLE('NONE', #2344, 0.010159999999999997); +#2346 = CARTESIAN_POINT('NONE', (0.05334000000000002, 0, -0.10159999999999998)); +#2347 = CARTESIAN_POINT('NONE', (0.05335066411512032, 0.000000000000000000013877787807814457, -0.10113689579786445)); +#2348 = CARTESIAN_POINT('NONE', (0.053350769255477715, 0, -0.10113232992992575)); +#2349 = CARTESIAN_POINT('NONE', (0.0533835163297744, 0.000000000000000000013877787807814457, -0.10066182889657643)); +#2350 = CARTESIAN_POINT('NONE', (0.05338383919192061, 0, -0.1006571901013045)); +#2351 = CARTESIAN_POINT('NONE', (0.05343973472784686, 0.000000000000000000013877787807814457, -0.10018070671183685)); +#2352 = CARTESIAN_POINT('NONE', (0.05344028581685496, 0, -0.10017600893491914)); +#2353 = CARTESIAN_POINT('NONE', (0.05352028914777404, 0.000000000000000000013877787807814457, -0.09969510418791576)); +#2354 = CARTESIAN_POINT('NONE', (0.05352107792196773, 0, -0.09969036281965399)); +#2355 = CARTESIAN_POINT('NONE', (0.05362602037302553, -0.000000000000000000013877787807814457, -0.09920673617913801)); +#2356 = CARTESIAN_POINT('NONE', (0.05362705502866131, 0, -0.09920196797500158)); +#2357 = CARTESIAN_POINT('NONE', (0.053757618456300955, 0.000000000000000000013877787807814457, -0.09871744571456109)); +#2358 = CARTESIAN_POINT('NONE', (0.0537589057159835, 0, -0.09871266868026876)); +#2359 = CARTESIAN_POINT('NONE', (0.05391560208140459, 0.000000000000000000013877787807814457, -0.0982291885513315)); +#2360 = CARTESIAN_POINT('NONE', (0.053917146992696015, 0, -0.09822442179169183)); +#2361 = CARTESIAN_POINT('NONE', (0.05410029966759131, 0.000000000000000000013877787807814457, -0.09774401406940002)); +#2362 = CARTESIAN_POINT('NONE', (0.054102105418699455, 0, -0.09773927760143754)); +#2363 = CARTESIAN_POINT('NONE', (0.054311832935682376, 0.000000000000000000013877787807814457, -0.09726404270842216)); +#2364 = CARTESIAN_POINT('NONE', (0.054313900695251896, 0, -0.09725935724076423)); +#2365 = CARTESIAN_POINT('NONE', (0.05455010363538513, 0.000000000000000000013877787807814457, -0.09679144030436257)); +#2366 = CARTESIAN_POINT('NONE', (0.0545524324232182, -0.0000000000000000000002168404344971009, -0.09678682698639215)); +#2367 = CARTESIAN_POINT('NONE', (0.0548147840756737, 0.000000000000000000013877787807814457, -0.09632838983978276)); +#2368 = CARTESIAN_POINT('NONE', (0.05481737067064106, 0, -0.09632386998559023)); +#2369 = CARTESIAN_POINT('NONE', (0.05510531200392262, 0.000000000000000000013877787807814457, -0.09587706126802105)); +#2370 = CARTESIAN_POINT('NONE', (0.055108150894383534, 0, -0.09587265606161424)); +#2371 = CARTESIAN_POINT('NONE', (0.05542089024676814, 0.000000000000000000013877787807814457, -0.0954395801970286)); +#2372 = CARTESIAN_POINT('NONE', (0.05542397362751837, 0, -0.09543531038648487)); +#2373 = CARTESIAN_POINT('NONE', (0.05576049136152141, 0.000000000000000000013877787807814457, -0.09501799631352859)); +#2374 = CARTESIAN_POINT('NONE', (0.05576380917968284, -0.0000000000000000000002168404344971009, -0.0950138819026956)); +#2375 = CARTESIAN_POINT('NONE', (0.056122867359452135, 0.000000000000000000013877787807814457, -0.09461425248390942)); +#2376 = CARTESIAN_POINT('NONE', (0.05612640740988478, 0, -0.09461031243080222)); +#2377 = CARTESIAN_POINT('NONE', (0.05650656436194201, 0.000000000000000000013877787807814457, -0.09423015547874498)); +#2378 = CARTESIAN_POINT('NONE', (0.056510312430802234, 0, -0.09422640740988476)); +#2379 = CARTESIAN_POINT('NONE', (0.0569099418495884, 0.000000000000000000013877787807814457, -0.09386734923011547)); +#2380 = CARTESIAN_POINT('NONE', (0.05691388190269561, 0, -0.09386380917968282)); +#2381 = CARTESIAN_POINT('NONE', (0.05733119597565192, 0.000000000000000000013877787807814457, -0.09352729144567977)); +#2382 = CARTESIAN_POINT('NONE', (0.057335310386484914, 0, -0.09352397362751833)); +#2383 = CARTESIAN_POINT('NONE', (0.05776838625107052, 0.000000000000000000013877787807814457, -0.09321123427513374)); +#2384 = CARTESIAN_POINT('NONE', (0.05777265606161426, -0.0000000000000000000002168404344971009, -0.0932081508943835)); +#2385 = CARTESIAN_POINT('NONE', (0.05821946477918343, 0.000000000000000000013877787807814457, -0.09292020956110195)); +#2386 = CARTESIAN_POINT('NONE', (0.058223869985590246, 0, -0.09291737067064103)); +#2387 = CARTESIAN_POINT('NONE', (0.058682307132199664, 0.000000000000000000013877787807814457, -0.09265501901818553)); +#2388 = CARTESIAN_POINT('NONE', (0.0586868269863922, 0, -0.09265243242321818)); +#2389 = CARTESIAN_POINT('NONE', (0.059154743922793865, 0.000000000000000000013877787807814457, -0.09241622948308492)); +#2390 = CARTESIAN_POINT('NONE', (0.059159357240764265, 0, -0.09241390069525185)); +#2391 = CARTESIAN_POINT('NONE', (0.059634592133779654, 0.000000000000000000013877787807814457, -0.09220417317826894)); +#2392 = CARTESIAN_POINT('NONE', (0.05963927760143759, 0, -0.09220210541869941)); +#2393 = CARTESIAN_POINT('NONE', (0.06011968532372938, 0.000000000000000000013877787807814457, -0.09201895274380412)); +#2394 = CARTESIAN_POINT('NONE', (0.06012442179169187, -0.0000000000000000000002168404344971009, -0.09201714699269599)); +#2395 = CARTESIAN_POINT('NONE', (0.060607901920629134, 0.000000000000000000013877787807814457, -0.09186045062727487)); +#2396 = CARTESIAN_POINT('NONE', (0.0606126686802688, 0, -0.09185890571598346)); +#2397 = CARTESIAN_POINT('NONE', (0.061097190940709284, -0.000000000000000000013877787807814457, -0.09172834228834383)); +#2398 = CARTESIAN_POINT('NONE', (0.06110196797500161, 0, -0.09172705502866128)); +#2399 = CARTESIAN_POINT('NONE', (0.061585594615517575, 0.000000000000000000013877787807814457, -0.09162211257760346)); +#2400 = CARTESIAN_POINT('NONE', (0.06159036281965401, 0, -0.09162107792196768)); +#2401 = CARTESIAN_POINT('NONE', (0.06207126756665739, 0.000000000000000000013877787807814457, -0.09154107459104861)); +#2402 = CARTESIAN_POINT('NONE', (0.062076008934919165, 0, -0.09154028581685493)); +#2403 = CARTESIAN_POINT('NONE', (0.06255249232438682, 0.000000000000000000013877787807814457, -0.09148439028092865)); +#2404 = CARTESIAN_POINT('NONE', (0.06255719010130453, 0, -0.09148383919192055)); +#2405 = CARTESIAN_POINT('NONE', (0.06302769113465385, 0.000000000000000000013877787807814457, -0.09145109211762388)); +#2406 = CARTESIAN_POINT('NONE', (0.06303232992992579, -0.0000000000000000000002168404344971009, -0.09145076925547768)); +#2407 = CARTESIAN_POINT('NONE', (0.06349543413206134, 0.000000000000000000013877787807814457, -0.09144010514035737)); +#2408 = CARTESIAN_POINT('NONE', (0.06350000000000001, 0, -0.09143999999999998)); +#2409 = CARTESIAN_POINT('NONE', (0.06396310420213555, 0.000000000000000000013877787807814457, -0.0914506641151203)); +#2410 = CARTESIAN_POINT('NONE', (0.06396767007007423, 0, -0.0914507692554777)); +#2411 = CARTESIAN_POINT('NONE', (0.06443817110342354, 0.000000000000000000013877787807814457, -0.09148351632977435)); +#2412 = CARTESIAN_POINT('NONE', (0.06444280989869548, 0, -0.09148383919192055)); +#2413 = CARTESIAN_POINT('NONE', (0.06491929328816316, 0.000000000000000000013877787807814457, -0.0915397347278468)); +#2414 = CARTESIAN_POINT('NONE', (0.06492399106508087, 0, -0.09154028581685489)); +#2415 = CARTESIAN_POINT('NONE', (0.06540489581208425, -0.000000000000000000013877787807814457, -0.09162028914777402)); +#2416 = CARTESIAN_POINT('NONE', (0.06540963718034602, 0, -0.09162107792196769)); +#2417 = CARTESIAN_POINT('NONE', (0.06589326382086196, 0.000000000000000000013877787807814457, -0.0917260203730255)); +#2418 = CARTESIAN_POINT('NONE', (0.0658980320249984, 0, -0.09172705502866128)); +#2419 = CARTESIAN_POINT('NONE', (0.06638255428543889, 0.000000000000000000013877787807814457, -0.09185761845630094)); +#2420 = CARTESIAN_POINT('NONE', (0.06638733131973122, 0, -0.09185890571598349)); +#2421 = CARTESIAN_POINT('NONE', (0.06687081144866848, 0.000000000000000000013877787807814457, -0.09201560208140457)); +#2422 = CARTESIAN_POINT('NONE', (0.06687557820830815, -0.0000000000000000000002168404344971009, -0.09201714699269599)); +#2423 = CARTESIAN_POINT('NONE', (0.06735598593059995, 0.000000000000000000013877787807814457, -0.0922002996675913)); +#2424 = CARTESIAN_POINT('NONE', (0.06736072239856244, 0, -0.09220210541869943)); +#2425 = CARTESIAN_POINT('NONE', (0.06783595729157785, 0.000000000000000000013877787807814457, -0.09241183293568232)); +#2426 = CARTESIAN_POINT('NONE', (0.06784064275923578, 0, -0.09241390069525185)); +#2427 = CARTESIAN_POINT('NONE', (0.06830855969563746, 0.000000000000000000013877787807814457, -0.09265010363538512)); +#2428 = CARTESIAN_POINT('NONE', (0.06831317301360787, -0.0000000000000000000002168404344971009, -0.09265243242321819)); +#2429 = CARTESIAN_POINT('NONE', (0.06877161016021727, 0.000000000000000000013877787807814457, -0.09291478407567368)); +#2430 = CARTESIAN_POINT('NONE', (0.0687761300144098, 0, -0.09291737067064103)); +#2431 = CARTESIAN_POINT('NONE', (0.06922293873197893, 0.000000000000000000013877787807814457, -0.09320531200392258)); +#2432 = CARTESIAN_POINT('NONE', (0.06922734393838574, 0, -0.09320815089438349)); +#2433 = CARTESIAN_POINT('NONE', (0.06966041980297139, 0.000000000000000000013877787807814457, -0.0935208902467681)); +#2434 = CARTESIAN_POINT('NONE', (0.06966468961351512, 0, -0.09352397362751833)); +#2435 = CARTESIAN_POINT('NONE', (0.0700820036864714, 0.000000000000000000013877787807814457, -0.09386049136152139)); +#2436 = CARTESIAN_POINT('NONE', (0.07008611809730439, -0.0000000000000000000002168404344971009, -0.09386380917968282)); +#2437 = CARTESIAN_POINT('NONE', (0.07048574751609057, 0.000000000000000000013877787807814457, -0.09422286735945211)); +#2438 = CARTESIAN_POINT('NONE', (0.07048968756919778, 0, -0.09422640740988476)); +#2439 = CARTESIAN_POINT('NONE', (0.070869844521255, 0.000000000000000000013877787807814457, -0.09460656436194198)); +#2440 = CARTESIAN_POINT('NONE', (0.07087359259011523, 0, -0.09461031243080222)); +#2441 = CARTESIAN_POINT('NONE', (0.07123265076988453, 0.000000000000000000013877787807814457, -0.09500994184958836)); +#2442 = CARTESIAN_POINT('NONE', (0.07123619082031718, 0, -0.09501388190269558)); +#2443 = CARTESIAN_POINT('NONE', (0.07157270855432023, 0.000000000000000000013877787807814457, -0.09543119597565188)); +#2444 = CARTESIAN_POINT('NONE', (0.07157602637248166, 0, -0.09543531038648487)); +#2445 = CARTESIAN_POINT('NONE', (0.07188876572486626, 0.000000000000000000013877787807814457, -0.0958683862510705)); +#2446 = CARTESIAN_POINT('NONE', (0.07189184910561648, -0.0000000000000000000002168404344971009, -0.09587265606161424)); +#2447 = CARTESIAN_POINT('NONE', (0.07217979043889805, 0.000000000000000000013877787807814457, -0.09631946477918339)); +#2448 = CARTESIAN_POINT('NONE', (0.07218262932935895, 0, -0.09632386998559021)); +#2449 = CARTESIAN_POINT('NONE', (0.0724449809818145, 0.000000000000000000013877787807814457, -0.09678230713219964)); +#2450 = CARTESIAN_POINT('NONE', (0.07244756757678185, 0, -0.09678682698639217)); +#2451 = CARTESIAN_POINT('NONE', (0.0724807574201361, 0, -0.09685257591319724)); +#2452 = CARTESIAN_POINT('NONE', (0.07268377051691509, 0.000000000000000000013877787807814457, -0.09725474392279382)); +#2453 = CARTESIAN_POINT('NONE', (0.07268609930474815, 0, -0.09725935724076423)); +#2454 = CARTESIAN_POINT('NONE', (0.07289582682173104, 0.000000000000000000013877787807814457, -0.0977345921337796)); +#2455 = CARTESIAN_POINT('NONE', (0.07289789458130057, 0, -0.09773927760143754)); +#2456 = CARTESIAN_POINT('NONE', (0.07308104725619585, 0.000000000000000000013877787807814457, -0.09821968532372934)); +#2457 = CARTESIAN_POINT('NONE', (0.073082853007304, -0.0000000000000000000002168404344971009, -0.09822442179169183)); +#2458 = CARTESIAN_POINT('NONE', (0.07323954937272509, 0.000000000000000000013877787807814457, -0.09870790192062907)); +#2459 = CARTESIAN_POINT('NONE', (0.07324109428401651, 0, -0.09871266868026875)); +#2460 = CARTESIAN_POINT('NONE', (0.07337165771165617, -0.000000000000000000013877787807814457, -0.09919719094070925)); +#2461 = CARTESIAN_POINT('NONE', (0.07337294497133871, 0, -0.09920196797500158)); +#2462 = CARTESIAN_POINT('NONE', (0.07347788742239653, 0.000000000000000000013877787807814457, -0.09968559461551753)); +#2463 = CARTESIAN_POINT('NONE', (0.07347892207803229, 0.0000000000000000000002168404344971009, -0.09969036281965397)); +#2464 = CARTESIAN_POINT('NONE', (0.07355892540895138, 0.000000000000000000013877787807814457, -0.10017126756665734)); +#2465 = CARTESIAN_POINT('NONE', (0.07355971418314507, 0, -0.10017600893491911)); +#2466 = CARTESIAN_POINT('NONE', (0.07361560971907133, 0.000000000000000000013877787807814457, -0.10065249232438679)); +#2467 = CARTESIAN_POINT('NONE', (0.07361616080807942, 0, -0.1006571901013045)); +#2468 = CARTESIAN_POINT('NONE', (0.07364890788237612, 0.000000000000000000013877787807814457, -0.10112769113465382)); +#2469 = CARTESIAN_POINT('NONE', (0.07364923074452233, -0.0000000000000000000002168404344971009, -0.10113232992992575)); +#2470 = CARTESIAN_POINT('NONE', (0.07365989485964262, 0.000000000000000000013877787807814457, -0.1015954341320613)); +#2471 = CARTESIAN_POINT('NONE', (0.07366000000000002, 0, -0.10159999999999998)); +#2472 = CARTESIAN_POINT('NONE', (0.07364933588487972, 0.000000000000000000013877787807814457, -0.10206310420213552)); +#2473 = CARTESIAN_POINT('NONE', (0.07364923074452233, 0, -0.1020676700700742)); +#2474 = CARTESIAN_POINT('NONE', (0.07361648367022564, 0.000000000000000000013877787807814457, -0.1025381711034235)); +#2475 = CARTESIAN_POINT('NONE', (0.07361616080807942, 0, -0.10254280989869545)); +#2476 = CARTESIAN_POINT('NONE', (0.07356026527215316, 0.000000000000000000013877787807814457, -0.10301929328816312)); +#2477 = CARTESIAN_POINT('NONE', (0.07355971418314507, 0, -0.10302399106508082)); +#2478 = CARTESIAN_POINT('NONE', (0.07347971085222599, -0.000000000000000000013877787807814457, -0.1035048958120842)); +#2479 = CARTESIAN_POINT('NONE', (0.07347892207803232, 0, -0.10350963718034598)); +#2480 = CARTESIAN_POINT('NONE', (0.07337397962697449, 0.000000000000000000013877787807814457, -0.10399326382086194)); +#2481 = CARTESIAN_POINT('NONE', (0.07337294497133871, -0.0000000000000000000002168404344971009, -0.10399803202499838)); +#2482 = CARTESIAN_POINT('NONE', (0.07324238154369907, 0.000000000000000000013877787807814457, -0.10448255428543886)); +#2483 = CARTESIAN_POINT('NONE', (0.07324109428401653, 0, -0.10448733131973119)); +#2484 = CARTESIAN_POINT('NONE', (0.07308439791859542, 0.000000000000000000013877787807814457, -0.10497081144866846)); +#2485 = CARTESIAN_POINT('NONE', (0.073082853007304, -0.0000000000000000000002168404344971009, -0.10497557820830813)); +#2486 = CARTESIAN_POINT('NONE', (0.0728997003324087, 0.000000000000000000013877787807814457, -0.10545598593059992)); +#2487 = CARTESIAN_POINT('NONE', (0.07289789458130057, 0, -0.10546072239856241)); +#2488 = CARTESIAN_POINT('NONE', (0.07268816706431769, 0.000000000000000000013877787807814457, -0.1059359572915778)); +#2489 = CARTESIAN_POINT('NONE', (0.07268609930474815, 0, -0.10594064275923575)); +#2490 = CARTESIAN_POINT('NONE', (0.07244989636461491, 0.000000000000000000013877787807814457, -0.10640855969563741)); +#2491 = CARTESIAN_POINT('NONE', (0.07244756757678184, -0.0000000000000000000002168404344971009, -0.10641317301360782)); +#2492 = CARTESIAN_POINT('NONE', (0.07218521592432633, 0.000000000000000000013877787807814457, -0.1068716101602172)); +#2493 = CARTESIAN_POINT('NONE', (0.07218262932935897, 0, -0.10687613001440974)); +#2494 = CARTESIAN_POINT('NONE', (0.07189468799607739, 0.000000000000000000013877787807814457, -0.10732293873197887)); +#2495 = CARTESIAN_POINT('NONE', (0.07189184910561647, 0, -0.1073273439383857)); +#2496 = CARTESIAN_POINT('NONE', (0.0715791097532319, 0.000000000000000000013877787807814457, -0.10776041980297135)); +#2497 = CARTESIAN_POINT('NONE', (0.07157602637248166, 0, -0.10776468961351508)); +#2498 = CARTESIAN_POINT('NONE', (0.07123950863847861, 0.000000000000000000013877787807814457, -0.10818200368647138)); +#2499 = CARTESIAN_POINT('NONE', (0.07123619082031718, -0.0000000000000000000002168404344971009, -0.10818611809730437)); +#2500 = CARTESIAN_POINT('NONE', (0.07087713264054789, 0.000000000000000000013877787807814457, -0.10858574751609054)); +#2501 = CARTESIAN_POINT('NONE', (0.07087359259011523, 0, -0.10858968756919775)); +#2502 = CARTESIAN_POINT('NONE', (0.07049343563805802, 0.000000000000000000013877787807814457, -0.10896984452125497)); +#2503 = CARTESIAN_POINT('NONE', (0.07048968756919778, 0, -0.1089735925901152)); +#2504 = CARTESIAN_POINT('NONE', (0.07009005815041161, 0.000000000000000000013877787807814457, -0.10933265076988448)); +#2505 = CARTESIAN_POINT('NONE', (0.07008611809730439, 0, -0.10933619082031713)); +#2506 = CARTESIAN_POINT('NONE', (0.06966880402434812, 0.000000000000000000013877787807814457, -0.10967270855432018)); +#2507 = CARTESIAN_POINT('NONE', (0.06966468961351512, 0, -0.10967602637248161)); +#2508 = CARTESIAN_POINT('NONE', (0.06923161374892949, 0.000000000000000000013877787807814457, -0.10998876572486624)); +#2509 = CARTESIAN_POINT('NONE', (0.06922734393838575, -0.0000000000000000000002168404344971009, -0.10999184910561646)); +#2510 = CARTESIAN_POINT('NONE', (0.0687805352208166, 0.000000000000000000013877787807814457, -0.11027979043889802)); +#2511 = CARTESIAN_POINT('NONE', (0.06877613001440978, 0, -0.11028262932935892)); +#2512 = CARTESIAN_POINT('NONE', (0.0683176928678004, 0.000000000000000000013877787807814457, -0.11054498098181446)); +#2513 = CARTESIAN_POINT('NONE', (0.06831317301360787, -0.0000000000000000000002168404344971009, -0.11054756757678182)); +#2514 = CARTESIAN_POINT('NONE', (0.06784525607720619, 0.000000000000000000013877787807814457, -0.11078377051691504)); +#2515 = CARTESIAN_POINT('NONE', (0.06784064275923578, 0, -0.1107860993047481)); +#2516 = CARTESIAN_POINT('NONE', (0.06736540786622038, 0.000000000000000000013877787807814457, -0.110995826821731)); +#2517 = CARTESIAN_POINT('NONE', (0.06736072239856244, 0, -0.11099789458130052)); +#2518 = CARTESIAN_POINT('NONE', (0.06688031467627065, 0.000000000000000000013877787807814457, -0.11118104725619582)); +#2519 = CARTESIAN_POINT('NONE', (0.06687557820830815, -0.0000000000000000000002168404344971009, -0.11118285300730396)); +#2520 = CARTESIAN_POINT('NONE', (0.0663920980793709, 0.000000000000000000013877787807814457, -0.11133954937272506)); +#2521 = CARTESIAN_POINT('NONE', (0.06638733131973122, 0, -0.11134109428401648)); +#2522 = CARTESIAN_POINT('NONE', (0.06590280905929075, -0.000000000000000000013877787807814457, -0.11147165771165614)); +#2523 = CARTESIAN_POINT('NONE', (0.06589803202499842, 0, -0.11147294497133868)); +#2524 = CARTESIAN_POINT('NONE', (0.06541440538448245, 0.000000000000000000013877787807814457, -0.11157788742239645)); +#2525 = CARTESIAN_POINT('NONE', (0.06540963718034601, 0.0000000000000000000002168404344971009, -0.11157892207803223)); +#2526 = CARTESIAN_POINT('NONE', (0.06492873243334264, 0.000000000000000000013877787807814457, -0.11165892540895135)); +#2527 = CARTESIAN_POINT('NONE', (0.06492399106508087, 0, -0.11165971418314503)); +#2528 = CARTESIAN_POINT('NONE', (0.06444750767561319, 0.000000000000000000013877787807814457, -0.11171560971907128)); +#2529 = CARTESIAN_POINT('NONE', (0.06444280989869548, 0, -0.11171616080807938)); +#2530 = CARTESIAN_POINT('NONE', (0.06397230886534618, 0.000000000000000000013877787807814457, -0.11174890788237607)); +#2531 = CARTESIAN_POINT('NONE', (0.06396767007007423, -0.0000000000000000000002168404344971009, -0.11174923074452228)); +#2532 = CARTESIAN_POINT('NONE', (0.06350456586793869, 0.000000000000000000013877787807814457, -0.11175989485964259)); +#2533 = CARTESIAN_POINT('NONE', (0.06350000000000001, 0, -0.11175999999999997)); +#2534 = CARTESIAN_POINT('NONE', (0.06303689579786448, 0.000000000000000000013877787807814457, -0.11174933588487967)); +#2535 = CARTESIAN_POINT('NONE', (0.06303232992992579, 0, -0.11174923074452228)); +#2536 = CARTESIAN_POINT('NONE', (0.06256182889657648, 0.000000000000000000013877787807814457, -0.11171648367022559)); +#2537 = CARTESIAN_POINT('NONE', (0.06255719010130453, 0, -0.11171616080807938)); +#2538 = CARTESIAN_POINT('NONE', (0.06208070671183686, 0.000000000000000000013877787807814457, -0.11166026527215313)); +#2539 = CARTESIAN_POINT('NONE', (0.06207600893491916, 0, -0.11165971418314503)); +#2540 = CARTESIAN_POINT('NONE', (0.061595104187915806, -0.000000000000000000013877787807814457, -0.11157971085222594)); +#2541 = CARTESIAN_POINT('NONE', (0.061590362819654035, 0, -0.11157892207803226)); +#2542 = CARTESIAN_POINT('NONE', (0.06110673617913805, 0.000000000000000000013877787807814457, -0.11147397962697447)); +#2543 = CARTESIAN_POINT('NONE', (0.06110196797500162, -0.0000000000000000000002168404344971009, -0.1114729449713387)); +#2544 = CARTESIAN_POINT('NONE', (0.06061744571456114, 0.000000000000000000013877787807814457, -0.11134238154369902)); +#2545 = CARTESIAN_POINT('NONE', (0.06061266868026881, 0, -0.11134109428401648)); +#2546 = CARTESIAN_POINT('NONE', (0.06012918855133155, 0.000000000000000000013877787807814457, -0.11118439791859538)); +#2547 = CARTESIAN_POINT('NONE', (0.06012442179169188, -0.0000000000000000000002168404344971009, -0.11118285300730396)); +#2548 = CARTESIAN_POINT('NONE', (0.05964401406940008, 0.000000000000000000013877787807814457, -0.11099970033240868)); +#2549 = CARTESIAN_POINT('NONE', (0.0596392776014376, 0, -0.11099789458130055)); +#2550 = CARTESIAN_POINT('NONE', (0.05916404270842221, 0.000000000000000000013877787807814457, -0.11078816706431764)); +#2551 = CARTESIAN_POINT('NONE', (0.05915935724076427, 0, -0.11078609930474811)); +#2552 = CARTESIAN_POINT('NONE', (0.05875257591319729, 0, -0.11058075742013605)); +#2553 = CARTESIAN_POINT('NONE', (0.0586914403043626, 0.000000000000000000013877787807814457, -0.11054989636461486)); +#2554 = CARTESIAN_POINT('NONE', (0.0586868269863922, 0, -0.1105475675767818)); +#2555 = CARTESIAN_POINT('NONE', (0.05822838983978279, 0.000000000000000000013877787807814457, -0.11028521592432629)); +#2556 = CARTESIAN_POINT('NONE', (0.05822386998559025, 0, -0.11028262932935894)); +#2557 = CARTESIAN_POINT('NONE', (0.05777706126802108, 0.000000000000000000013877787807814457, -0.10999468799607735)); +#2558 = CARTESIAN_POINT('NONE', (0.05777265606161426, 0, -0.10999184910561645)); +#2559 = CARTESIAN_POINT('NONE', (0.05733958019702866, 0.000000000000000000013877787807814457, -0.10967910975323183)); +#2560 = CARTESIAN_POINT('NONE', (0.05733531038648492, 0, -0.10967602637248161)); +#2561 = CARTESIAN_POINT('NONE', (0.05691799631352861, 0.000000000000000000013877787807814457, -0.10933950863847856)); +#2562 = CARTESIAN_POINT('NONE', (0.05691388190269562, -0.0000000000000000000002168404344971009, -0.10933619082031713)); +#2563 = CARTESIAN_POINT('NONE', (0.056514252483909476, 0.000000000000000000013877787807814457, -0.10897713264054786)); +#2564 = CARTESIAN_POINT('NONE', (0.05651031243080226, 0, -0.1089735925901152)); +#2565 = CARTESIAN_POINT('NONE', (0.056130155478745024, 0.000000000000000000013877787807814457, -0.10859343563805798)); +#2566 = CARTESIAN_POINT('NONE', (0.056126407409884796, 0, -0.10858968756919775)); +#2567 = CARTESIAN_POINT('NONE', (0.0557673492301155, 0.000000000000000000013877787807814457, -0.10819005815041159)); +#2568 = CARTESIAN_POINT('NONE', (0.05576380917968285, 0, -0.10818611809730437)); +#2569 = CARTESIAN_POINT('NONE', (0.055427291445679816, 0.000000000000000000013877787807814457, -0.10776880402434809)); +#2570 = CARTESIAN_POINT('NONE', (0.05542397362751838, 0, -0.10776468961351508)); +#2571 = CARTESIAN_POINT('NONE', (0.05511123427513378, 0.000000000000000000013877787807814457, -0.10733161374892945)); +#2572 = CARTESIAN_POINT('NONE', (0.05510815089438355, -0.0000000000000000000002168404344971009, -0.10732734393838572)); +#2573 = CARTESIAN_POINT('NONE', (0.05482020956110199, 0.000000000000000000013877787807814457, -0.10688053522081657)); +#2574 = CARTESIAN_POINT('NONE', (0.054817370670641075, 0, -0.10687613001440975)); +#2575 = CARTESIAN_POINT('NONE', (0.054555019018185574, 0.000000000000000000013877787807814457, -0.10641769286780038)); +#2576 = CARTESIAN_POINT('NONE', (0.054552432423218215, -0.0000000000000000000002168404344971009, -0.10641317301360785)); +#2577 = CARTESIAN_POINT('NONE', (0.05431622948308497, 0.000000000000000000013877787807814457, -0.10594525607720616)); +#2578 = CARTESIAN_POINT('NONE', (0.054313900695251896, 0, -0.10594064275923575)); +#2579 = CARTESIAN_POINT('NONE', (0.05410417317826898, 0.000000000000000000013877787807814457, -0.10546540786622033)); +#2580 = CARTESIAN_POINT('NONE', (0.05410210541869946, 0, -0.1054607223985624)); +#2581 = CARTESIAN_POINT('NONE', (0.05391895274380417, 0.000000000000000000013877787807814457, -0.10498031467627063)); +#2582 = CARTESIAN_POINT('NONE', (0.053917146992696036, -0.0000000000000000000002168404344971009, -0.10497557820830813)); +#2583 = CARTESIAN_POINT('NONE', (0.053760450627274914, 0.000000000000000000013877787807814457, -0.10449209807937086)); +#2584 = CARTESIAN_POINT('NONE', (0.0537589057159835, 0, -0.10448733131973119)); +#2585 = CARTESIAN_POINT('NONE', (0.05362834228834387, -0.000000000000000000013877787807814457, -0.10400280905929071)); +#2586 = CARTESIAN_POINT('NONE', (0.05362705502866133, 0, -0.10399803202499838)); +#2587 = CARTESIAN_POINT('NONE', (0.0535221125776035, 0.000000000000000000013877787807814457, -0.10351440538448241)); +#2588 = CARTESIAN_POINT('NONE', (0.053521077921967725, 0.0000000000000000000002168404344971009, -0.10350963718034596)); +#2589 = CARTESIAN_POINT('NONE', (0.05344107459104864, 0.000000000000000000013877787807814457, -0.1030287324333426)); +#2590 = CARTESIAN_POINT('NONE', (0.053440285816854956, 0, -0.10302399106508082)); +#2591 = CARTESIAN_POINT('NONE', (0.05338439028092871, 0.000000000000000000013877787807814457, -0.10254750767561316)); +#2592 = CARTESIAN_POINT('NONE', (0.05338383919192061, 0, -0.10254280989869545)); +#2593 = CARTESIAN_POINT('NONE', (0.05335109211762392, 0.000000000000000000013877787807814457, -0.10207230886534614)); +#2594 = CARTESIAN_POINT('NONE', (0.053350769255477715, -0.0000000000000000000002168404344971009, -0.1020676700700742)); +#2595 = CARTESIAN_POINT('NONE', (0.05334010514035741, 0.000000000000000000013877787807814457, -0.10160456586793866)); +#2596 = CARTESIAN_POINT('NONE', (0.05334000000000002, 0, -0.10159999999999998)); +#2597 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#2346, #2347, #2348, #2349, #2350, #2351, #2352, #2353, #2354, #2355, #2356, #2357, #2358, #2359, #2360, #2361, #2362, #2363, #2364, #2365, #2366, #2367, #2368, #2369, #2370, #2371, #2372, #2373, #2374, #2375, #2376, #2377, #2378, #2379, #2380, #2381, #2382, #2383, #2384, #2385, #2386, #2387, #2388, #2389, #2390, #2391, #2392, #2393, #2394, #2395, #2396, #2397, #2398, #2399, #2400, #2401, #2402, #2403, #2404, #2405, #2406, #2407, #2408, #2409, #2410, #2411, #2412, #2413, #2414, #2415, #2416, #2417, #2418, #2419, #2420, #2421, #2422, #2423, #2424, #2425, #2426, #2427, #2428, #2429, #2430, #2431, #2432, #2433, #2434, #2435, #2436, #2437, #2438, #2439, #2440, #2441, #2442, #2443, #2444, #2445, #2446, #2447, #2448, #2449, #2450, #2451, #2452, #2453, #2454, #2455, #2456, #2457, #2458, #2459, #2460, #2461, #2462, #2463, #2464, #2465, #2466, #2467, #2468, #2469, #2470, #2471, #2472, #2473, #2474, #2475, #2476, #2477, #2478, #2479, #2480, #2481, #2482, #2483, #2484, #2485, #2486, #2487, #2488, #2489, #2490, #2491, #2492, #2493, #2494, #2495, #2496, #2497, #2498, #2499, #2500, #2501, #2502, #2503, #2504, #2505, #2506, #2507, #2508, #2509, #2510, #2511, #2512, #2513, #2514, #2515, #2516, #2517, #2518, #2519, #2520, #2521, #2522, #2523, #2524, #2525, #2526, #2527, #2528, #2529, #2530, #2531, #2532, #2533, #2534, #2535, #2536, #2537, #2538, #2539, #2540, #2541, #2542, #2543, #2544, #2545, #2546, #2547, #2548, #2549, #2550, #2551, #2552, #2553, #2554, #2555, #2556, #2557, #2558, #2559, #2560, #2561, #2562, #2563, #2564, #2565, #2566, #2567, #2568, #2569, #2570, #2571, #2572, #2573, #2574, #2575, #2576, #2577, #2578, #2579, #2580, #2581, #2582, #2583, #2584, #2585, #2586, #2587, #2588, #2589, #2590, #2591, #2592, #2593, #2594, #2595, #2596), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (0, 0.004016064257028112, 0.008032128514056224, 0.012048192771084336, 0.01606425702811245, 0.020080321285140562, 0.024096385542168672, 0.028112449799196783, 0.0321285140562249, 0.03614457831325301, 0.040160642570281124, 0.04417670682730923, 0.048192771084337345, 0.05220883534136546, 0.056224899598393566, 0.06024096385542168, 0.0642570281124498, 0.0682730923694779, 0.07228915662650602, 0.07630522088353413, 0.08032128514056225, 0.08433734939759036, 0.08835341365461846, 0.09236947791164658, 0.09638554216867469, 0.1004016064257028, 0.10441767068273092, 0.10843373493975902, 0.11244979919678713, 0.11646586345381525, 0.12048192771084336, 0.12449799196787148, 0.1285140562248996, 0.1325301204819277, 0.1365461847389558, 0.14056224899598393, 0.14457831325301204, 0.14859437751004015, 0.15261044176706826, 0.15662650602409636, 0.1606425702811245, 0.1646586345381526, 0.1686746987951807, 0.17269076305220882, 0.17670682730923692, 0.18072289156626503, 0.18473895582329317, 0.18875502008032127, 0.19277108433734938, 0.1967871485943775, 0.2008032128514056, 0.20481927710843373, 0.20883534136546184, 0.21285140562248994, 0.21686746987951805, 0.22088353413654616, 0.22489959839357426, 0.2289156626506024, 0.2329317269076305, 0.2369477911646586, 0.24096385542168672, 0.24497991967871482, 0.24899598393574296, 0.25301204819277107, 0.2570281124497992, 0.2610441767068273, 0.2650602409638554, 0.2690763052208835, 0.2730923694779116, 0.2771084337349397, 0.28112449799196787, 0.285140562248996, 0.2891566265060241, 0.2931726907630522, 0.2971887550200803, 0.3012048192771084, 0.3052208835341365, 0.3092369477911646, 0.3132530120481927, 0.31726907630522083, 0.321285140562249, 0.3253012048192771, 0.3293172690763052, 0.3333333333333333, 0.3373493975903614, 0.34136546184738953, 0.34538152610441764, 0.34939759036144574, 0.35341365461847385, 0.35742971887550196, 0.36144578313253006, 0.3654618473895582, 0.36947791164658633, 0.37349397590361444, 0.37751004016064255, 0.38152610441767065, 0.38554216867469876, 0.38955823293172687, 0.393574297188755, 0.3975903614457831, 0.4016064257028112, 0.4056224899598393, 0.40963855421686746, 0.41365461847389556, 0.41767068273092367, 0.4216867469879518, 0.4257028112449799, 0.429718875502008, 0.4337349397590361, 0.4377510040160642, 0.4417670682730923, 0.4457831325301204, 0.4497991967871485, 0.4538152610441767, 0.4578313253012048, 0.4618473895582329, 0.465863453815261, 0.4698795180722891, 0.4738955823293172, 0.47791164658634533, 0.48192771084337344, 0.48594377510040154, 0.48995983935742965, 0.4939759036144578, 0.4979919678714859, 0.5020080321285141, 0.5060240963855422, 0.5100401606425704, 0.5140562248995985, 0.5180722891566265, 0.5220883534136547, 0.5261044176706828, 0.5301204819277109, 0.5341365461847389, 0.5381526104417671, 0.5421686746987953, 0.5461847389558233, 0.5502008032128515, 0.5542168674698795, 0.5582329317269077, 0.5622489959839359, 0.5662650602409639, 0.570281124497992, 0.5742971887550201, 0.5783132530120483, 0.5823293172690763, 0.5863453815261044, 0.5903614457831325, 0.5943775100401607, 0.5983935742971889, 0.6024096385542169, 0.606425702811245, 0.6104417670682731, 0.6144578313253013, 0.6184738955823293, 0.6224899598393574, 0.6265060240963856, 0.6305220883534137, 0.6345381526104418, 0.6385542168674699, 0.642570281124498, 0.6465863453815262, 0.6506024096385543, 0.6546184738955824, 0.6586345381526104, 0.6626506024096386, 0.6666666666666667, 0.6706827309236948, 0.6746987951807228, 0.678714859437751, 0.6827309236947792, 0.6867469879518073, 0.6907630522088354, 0.6947791164658634, 0.6987951807228916, 0.7028112449799198, 0.7068273092369478, 0.7108433734939759, 0.714859437751004, 0.7188755020080322, 0.7228915662650603, 0.7269076305220884, 0.7309236947791165, 0.7349397590361446, 0.7389558232931728, 0.7429718875502008, 0.7469879518072289, 0.751004016064257, 0.7550200803212852, 0.7590361445783133, 0.7630522088353414, 0.7670682730923695, 0.7710843373493976, 0.7751004016064258, 0.7791164658634538, 0.7831325301204819, 0.7871485943775101, 0.7911646586345382, 0.7951807228915663, 0.7991967871485944, 0.8032128514056225, 0.8072289156626506, 0.8112449799196787, 0.8152610441767069, 0.8192771084337349, 0.8232931726907631, 0.8273092369477912, 0.8313253012048193, 0.8353413654618473, 0.8393574297188755, 0.8433734939759037, 0.8473895582329317, 0.8514056224899599, 0.8554216867469879, 0.8594377510040161, 0.8634538152610443, 0.8674698795180723, 0.8714859437751004, 0.8755020080321285, 0.8795180722891567, 0.8835341365461847, 0.8875502008032129, 0.891566265060241, 0.8955823293172691, 0.8995983935742972, 0.9036144578313253, 0.9076305220883534, 0.9116465863453815, 0.9156626506024097, 0.9196787148594378, 0.9236947791164659, 0.927710843373494, 0.9317269076305221, 0.9357429718875502, 0.9397590361445783, 0.9437751004016064, 0.9477911646586346, 0.9518072289156626, 0.9558232931726908, 0.9598393574297188, 0.963855421686747, 0.9678714859437751, 0.9718875502008032, 0.9759036144578314, 0.9799196787148594, 0.9839357429718876, 0.9879518072289156, 0.9919678714859438, 0.9959839357429718, 1), .UNSPECIFIED.); +#2598 = DIRECTION('NONE', (0, 1, 0)); +#2599 = VECTOR('NONE', #2598, 1); +#2600 = CARTESIAN_POINT('NONE', (0.05334000000000002, -0.0000009999999999994458, -0.10159999999999998)); +#2601 = LINE('NONE', #2600, #2599); +#2602 = DIRECTION('NONE', (-1, 0, -0)); +#2603 = DIRECTION('NONE', (0, 1, -0)); +#2604 = CARTESIAN_POINT('NONE', (0.06350000000000001, 0.0127, -0.10159999999999998)); +#2605 = AXIS2_PLACEMENT_3D('NONE', #2604, #2603, #2602); +#2606 = CIRCLE('NONE', #2605, 0.010159999999999997); +#2607 = CARTESIAN_POINT('NONE', (-0.10159999999999998, 0, -0.05334000000000002)); +#2608 = CARTESIAN_POINT('NONE', (-0.0996950237717515, 0, -0.053520635955541386)); +#2609 = CARTESIAN_POINT('NONE', (-0.09969036281965399, 0, -0.05352107792196773)); +#2610 = CARTESIAN_POINT('NONE', (-0.09774403971794526, 0, -0.05410068727426999)); +#2611 = CARTESIAN_POINT('NONE', (-0.09773927760143754, 0, -0.054102105418699455)); +#2612 = CARTESIAN_POINT('NONE', (-0.09587721202317115, 0, -0.05510569538617582)); +#2613 = CARTESIAN_POINT('NONE', (-0.09587265606161424, 0, -0.055108150894383534)); +#2614 = CARTESIAN_POINT('NONE', (-0.09423042549572079, 0, -0.0565068901012511)); +#2615 = CARTESIAN_POINT('NONE', (-0.09422640740988476, 0, -0.056510312430802234)); +#2616 = CARTESIAN_POINT('NONE', (-0.09292056570559235, 0, -0.058219687615367555)); +#2617 = CARTESIAN_POINT('NONE', (-0.09291737067064103, 0, -0.058223869985590246)); +#2618 = CARTESIAN_POINT('NONE', (-0.0920193442160655, 0, -0.06011978301474603)); +#2619 = CARTESIAN_POINT('NONE', (-0.09201714699269599, 0, -0.06012442179169187)); +#2620 = CARTESIAN_POINT('NONE', (-0.09154144971705579, 0, -0.06207124559333662)); +#2621 = CARTESIAN_POINT('NONE', (-0.09154028581685493, 0, -0.06207600893491917)); +#2622 = CARTESIAN_POINT('NONE', (-0.09145098774326627, 0.0000000000000000000002168404344971009, -0.06396305299305748)); +#2623 = CARTESIAN_POINT('NONE', (-0.0914507692554777, 0, -0.06396767007007423)); +#2624 = CARTESIAN_POINT('NONE', (-0.09172638068341535, 0, -0.06589332048885146)); +#2625 = CARTESIAN_POINT('NONE', (-0.09172705502866128, 0.00000000000000000005551115123125783, -0.06589803202499843)); +#2626 = CARTESIAN_POINT('NONE', (-0.09241222427483894, 0, -0.0678359013268477)); +#2627 = CARTESIAN_POINT('NONE', (-0.09241390069525185, 0, -0.0678406427592358)); +#2628 = CARTESIAN_POINT('NONE', (-0.09352126421401544, 0, -0.06966023756623675)); +#2629 = CARTESIAN_POINT('NONE', (-0.09352397362751833, 0, -0.06966468961351512)); +#2630 = CARTESIAN_POINT('NONE', (-0.09501024540505519, 0, -0.0712323551745089)); +#2631 = CARTESIAN_POINT('NONE', (-0.09501388190269558, 0, -0.07123619082031718)); +#2632 = CARTESIAN_POINT('NONE', (-0.09678249966589815, 0, -0.07244461090569686)); +#2633 = CARTESIAN_POINT('NONE', (-0.09678682698639217, 0, -0.07244756757678185)); +#2634 = CARTESIAN_POINT('NONE', (-0.09870796817696112, 0, -0.073239157481566)); +#2635 = CARTESIAN_POINT('NONE', (-0.09871266868026875, 0.00000000000000000005551115123125783, -0.07324109428401653)); +#2636 = CARTESIAN_POINT('NONE', (-0.10065244400540244, 0, -0.07361524536344942)); +#2637 = CARTESIAN_POINT('NONE', (-0.1006571901013045, 0, -0.07361616080807944)); +#2638 = CARTESIAN_POINT('NONE', (-0.10253820756709014, 0, -0.07361616080807944)); +#2639 = CARTESIAN_POINT('NONE', (-0.10254280989869545, 0.00000000000000000005551115123125783, -0.07361616080807944)); +#2640 = CARTESIAN_POINT('NONE', (-0.10448258522382912, 0, -0.07324200972864657)); +#2641 = CARTESIAN_POINT('NONE', (-0.10448733131973119, 0, -0.07324109428401654)); +#2642 = CARTESIAN_POINT('NONE', (-0.10640847251030018, 0, -0.07244950437923238)); +#2643 = CARTESIAN_POINT('NONE', (-0.10641317301360782, 0, -0.07244756757678185)); +#2644 = CARTESIAN_POINT('NONE', (-0.10818179077681035, 0, -0.07123914749140216)); +#2645 = CARTESIAN_POINT('NONE', (-0.10818611809730437, 0.00000000000000000005551115123125783, -0.07123619082031718)); +#2646 = CARTESIAN_POINT('NONE', (-0.10967238987484124, 0, -0.06966852525932339)); +#2647 = CARTESIAN_POINT('NONE', (-0.10967602637248161, 0, -0.06966468961351512)); +#2648 = CARTESIAN_POINT('NONE', (-0.11078338989124521, 0, -0.06784509480651417)); +#2649 = CARTESIAN_POINT('NONE', (-0.1107860993047481, 0, -0.06784064275923579)); +#2650 = CARTESIAN_POINT('NONE', (-0.11147126855092578, 0, -0.06590277345738652)); +#2651 = CARTESIAN_POINT('NONE', (-0.11147294497133868, 0.00000000000000000005551115123125783, -0.06589803202499842)); +#2652 = CARTESIAN_POINT('NONE', (-0.11174855639927633, 0, -0.0639723816062212)); +#2653 = CARTESIAN_POINT('NONE', (-0.11174923074452228, 0, -0.06396767007007423)); +#2654 = CARTESIAN_POINT('NONE', (-0.1116599326709336, 0, -0.06208062601193592)); +#2655 = CARTESIAN_POINT('NONE', (-0.11165971418314503, 0, -0.062076008934919165)); +#2656 = CARTESIAN_POINT('NONE', (-0.11118401690750482, 0, -0.060129185133274435)); +#2657 = CARTESIAN_POINT('NONE', (-0.11118285300730396, 0.00000000000000000005551115123125783, -0.06012442179169188)); +#2658 = CARTESIAN_POINT('NONE', (-0.11028482655272845, 0, -0.058228508762536095)); +#2659 = CARTESIAN_POINT('NONE', (-0.11028262932935892, 0.00000000000000000005551115123125783, -0.05822386998559025)); +#2660 = CARTESIAN_POINT('NONE', (-0.1089767876250665, 0, -0.05651449480102495)); +#2661 = CARTESIAN_POINT('NONE', (-0.1089735925901152, 0.00000000000000000005551115123125783, -0.05651031243080226)); +#2662 = CARTESIAN_POINT('NONE', (-0.10733136202422176, 0, -0.05511157322393469)); +#2663 = CARTESIAN_POINT('NONE', (-0.10732734393838572, 0, -0.05510815089438355)); +#2664 = CARTESIAN_POINT('NONE', (-0.10546527836011932, 0, -0.05410456092690718)); +#2665 = CARTESIAN_POINT('NONE', (-0.1054607223985624, 0, -0.05410210541869946)); +#2666 = CARTESIAN_POINT('NONE', (-0.1035143992968537, 0, -0.05352249606639719)); +#2667 = CARTESIAN_POINT('NONE', (-0.10350963718034596, 0, -0.053521077921967725)); +#2668 = CARTESIAN_POINT('NONE', (-0.1016046609520975, 0, -0.05334044196642636)); +#2669 = CARTESIAN_POINT('NONE', (-0.10159999999999998, 0, -0.05334000000000002)); +#2670 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#2607, #2608, #2609, #2610, #2611, #2612, #2613, #2614, #2615, #2616, #2617, #2618, #2619, #2620, #2621, #2622, #2623, #2624, #2625, #2626, #2627, #2628, #2629, #2630, #2631, #2632, #2633, #2634, #2635, #2636, #2637, #2638, #2639, #2640, #2641, #2642, #2643, #2644, #2645, #2646, #2647, #2648, #2649, #2650, #2651, #2652, #2653, #2654, #2655, #2656, #2657, #2658, #2659, #2660, #2661, #2662, #2663, #2664, #2665, #2666, #2667, #2668, #2669), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (-1, -0.9836065573770492, -0.9672131147540983, -0.9508196721311475, -0.9344262295081968, -0.9180327868852459, -0.9016393442622951, -0.8852459016393442, -0.8688524590163934, -0.8524590163934427, -0.8360655737704918, -0.819672131147541, -0.8032786885245902, -0.7868852459016393, -0.7704918032786885, -0.7540983606557377, -0.7377049180327868, -0.721311475409836, -0.7049180327868853, -0.6885245901639344, -0.6721311475409836, -0.6557377049180328, -0.639344262295082, -0.6229508196721312, -0.6065573770491803, -0.5901639344262295, -0.5737704918032787, -0.5573770491803278, -0.540983606557377, -0.5245901639344261, -0.5081967213114753, -0.49180327868852464, -0.4754098360655738, -0.45901639344262296, -0.4426229508196722, -0.42622950819672134, -0.4098360655737705, -0.39344262295081966, -0.3770491803278689, -0.36065573770491804, -0.3442622950819672, -0.3278688524590164, -0.3114754098360656, -0.29508196721311475, -0.27868852459016397, -0.26229508196721313, -0.24590163934426232, -0.22950819672131148, -0.21311475409836067, -0.19672131147540983, -0.18032786885245902, -0.1639344262295082, -0.14754098360655737, -0.13114754098360656, -0.11475409836065574, -0.09836065573770492, -0.0819672131147541, -0.06557377049180328, -0.04918032786885246, -0.03278688524590164, -0.01639344262295082, -0), .UNSPECIFIED.); +#2671 = DIRECTION('NONE', (0, 1, 0)); +#2672 = VECTOR('NONE', #2671, 1); +#2673 = CARTESIAN_POINT('NONE', (-0.10159999999999998, -0.0000009999999999994458, -0.05334000000000002)); +#2674 = LINE('NONE', #2673, #2672); +#2675 = DIRECTION('NONE', (0, 0, 1)); +#2676 = DIRECTION('NONE', (-0, 1, 0)); +#2677 = CARTESIAN_POINT('NONE', (-0.10159999999999998, 0.0127, -0.06350000000000001)); +#2678 = AXIS2_PLACEMENT_3D('NONE', #2677, #2676, #2675); +#2679 = CIRCLE('NONE', #2678, 0.010159999999999997); +#2680 = EDGE_CURVE('NONE', #5, #7, #338, .T.); +#2681 = EDGE_CURVE('NONE', #7, #9, #342, .T.); +#2682 = EDGE_CURVE('NONE', #11, #9, #347, .T.); +#2683 = EDGE_CURVE('NONE', #5, #11, #351, .T.); +#2684 = EDGE_CURVE('NONE', #7, #13, #355, .T.); +#2685 = EDGE_CURVE('NONE', #13, #15, #359, .T.); +#2686 = EDGE_CURVE('NONE', #9, #15, #363, .T.); +#2687 = EDGE_CURVE('NONE', #13, #17, #368, .T.); +#2688 = EDGE_CURVE('NONE', #17, #19, #372, .T.); +#2689 = EDGE_CURVE('NONE', #15, #19, #377, .T.); +#2690 = EDGE_CURVE('NONE', #17, #5, #381, .T.); +#2691 = EDGE_CURVE('NONE', #19, #11, #385, .T.); +#2692 = EDGE_CURVE('NONE', #21, #21, #390, .T.); +#2693 = EDGE_CURVE('NONE', #23, #23, #395, .T.); +#2694 = EDGE_CURVE('NONE', #23, #25, #400, .T.); +#2695 = EDGE_CURVE('NONE', #25, #25, #405, .T.); +#2696 = EDGE_CURVE('NONE', #21, #23, #409, .T.); +#2697 = EDGE_CURVE('NONE', #27, #27, #414, .T.); +#2698 = EDGE_CURVE('NONE', #27, #29, #418, .T.); +#2699 = EDGE_CURVE('NONE', #29, #29, #423, .T.); +#2700 = EDGE_CURVE('NONE', #31, #31, #428, .T.); +#2701 = EDGE_CURVE('NONE', #31, #33, #432, .T.); +#2702 = EDGE_CURVE('NONE', #33, #33, #437, .T.); +#2703 = EDGE_CURVE('NONE', #35, #35, #442, .T.); +#2704 = EDGE_CURVE('NONE', #35, #37, #446, .T.); +#2705 = EDGE_CURVE('NONE', #37, #37, #451, .T.); +#2706 = EDGE_CURVE('NONE', #39, #39, #456, .T.); +#2707 = EDGE_CURVE('NONE', #39, #41, #460, .T.); +#2708 = EDGE_CURVE('NONE', #41, #41, #465, .T.); +#2709 = EDGE_CURVE('NONE', #43, #43, #470, .T.); +#2710 = EDGE_CURVE('NONE', #43, #45, #474, .T.); +#2711 = EDGE_CURVE('NONE', #45, #45, #479, .T.); +#2712 = EDGE_CURVE('NONE', #47, #47, #484, .T.); +#2713 = EDGE_CURVE('NONE', #47, #49, #488, .T.); +#2714 = EDGE_CURVE('NONE', #49, #49, #493, .T.); +#2715 = EDGE_CURVE('NONE', #51, #51, #498, .T.); +#2716 = EDGE_CURVE('NONE', #51, #53, #502, .T.); +#2717 = EDGE_CURVE('NONE', #53, #53, #507, .T.); +#2718 = EDGE_CURVE('NONE', #55, #55, #512, .T.); +#2719 = EDGE_CURVE('NONE', #55, #57, #516, .T.); +#2720 = EDGE_CURVE('NONE', #57, #57, #521, .T.); +#2721 = EDGE_CURVE('NONE', #59, #59, #526, .T.); +#2722 = EDGE_CURVE('NONE', #59, #61, #530, .T.); +#2723 = EDGE_CURVE('NONE', #61, #61, #535, .T.); +#2724 = EDGE_CURVE('NONE', #63, #63, #540, .T.); +#2725 = EDGE_CURVE('NONE', #63, #65, #544, .T.); +#2726 = EDGE_CURVE('NONE', #65, #65, #549, .T.); +#2727 = EDGE_CURVE('NONE', #67, #67, #554, .T.); +#2728 = EDGE_CURVE('NONE', #67, #69, #558, .T.); +#2729 = EDGE_CURVE('NONE', #69, #69, #563, .T.); +#2730 = EDGE_CURVE('NONE', #71, #73, #567, .T.); +#2731 = EDGE_CURVE('NONE', #73, #75, #571, .T.); +#2732 = EDGE_CURVE('NONE', #77, #75, #575, .T.); +#2733 = EDGE_CURVE('NONE', #71, #77, #579, .T.); +#2734 = EDGE_CURVE('NONE', #73, #79, #584, .T.); +#2735 = EDGE_CURVE('NONE', #79, #81, #588, .T.); +#2736 = EDGE_CURVE('NONE', #75, #81, #593, .T.); +#2737 = EDGE_CURVE('NONE', #79, #83, #597, .T.); +#2738 = EDGE_CURVE('NONE', #83, #85, #601, .T.); +#2739 = EDGE_CURVE('NONE', #81, #85, #605, .T.); +#2740 = EDGE_CURVE('NONE', #83, #87, #609, .T.); +#2741 = EDGE_CURVE('NONE', #87, #89, #613, .T.); +#2742 = EDGE_CURVE('NONE', #85, #89, #617, .T.); +#2743 = EDGE_CURVE('NONE', #87, #91, #621, .T.); +#2744 = EDGE_CURVE('NONE', #91, #93, #625, .T.); +#2745 = EDGE_CURVE('NONE', #89, #93, #629, .T.); +#2746 = EDGE_CURVE('NONE', #91, #95, #633, .T.); +#2747 = EDGE_CURVE('NONE', #95, #97, #637, .T.); +#2748 = EDGE_CURVE('NONE', #93, #97, #641, .T.); +#2749 = EDGE_CURVE('NONE', #95, #71, #645, .T.); +#2750 = EDGE_CURVE('NONE', #97, #77, #649, .T.); +#2751 = EDGE_CURVE('NONE', #99, #101, #653, .T.); +#2752 = EDGE_CURVE('NONE', #101, #103, #657, .T.); +#2753 = EDGE_CURVE('NONE', #105, #103, #661, .T.); +#2754 = EDGE_CURVE('NONE', #99, #105, #665, .T.); +#2755 = EDGE_CURVE('NONE', #101, #107, #669, .T.); +#2756 = EDGE_CURVE('NONE', #107, #109, #673, .T.); +#2757 = EDGE_CURVE('NONE', #103, #109, #677, .T.); +#2758 = EDGE_CURVE('NONE', #107, #111, #681, .T.); +#2759 = EDGE_CURVE('NONE', #111, #113, #685, .T.); +#2760 = EDGE_CURVE('NONE', #109, #113, #689, .T.); +#2761 = EDGE_CURVE('NONE', #111, #115, #693, .T.); +#2762 = EDGE_CURVE('NONE', #115, #117, #697, .T.); +#2763 = EDGE_CURVE('NONE', #113, #117, #701, .T.); +#2764 = EDGE_CURVE('NONE', #115, #119, #705, .T.); +#2765 = EDGE_CURVE('NONE', #119, #121, #709, .T.); +#2766 = EDGE_CURVE('NONE', #117, #121, #713, .T.); +#2767 = EDGE_CURVE('NONE', #119, #123, #718, .T.); +#2768 = EDGE_CURVE('NONE', #123, #125, #722, .T.); +#2769 = EDGE_CURVE('NONE', #121, #125, #727, .T.); +#2770 = EDGE_CURVE('NONE', #123, #99, #731, .T.); +#2771 = EDGE_CURVE('NONE', #125, #105, #735, .T.); +#2772 = EDGE_CURVE('NONE', #127, #129, #740, .T.); +#2773 = EDGE_CURVE('NONE', #129, #131, #744, .T.); +#2774 = EDGE_CURVE('NONE', #133, #131, #749, .T.); +#2775 = EDGE_CURVE('NONE', #127, #133, #753, .T.); +#2776 = EDGE_CURVE('NONE', #129, #135, #757, .T.); +#2777 = EDGE_CURVE('NONE', #135, #137, #761, .T.); +#2778 = EDGE_CURVE('NONE', #131, #137, #765, .T.); +#2779 = EDGE_CURVE('NONE', #135, #139, #770, .T.); +#2780 = EDGE_CURVE('NONE', #139, #141, #774, .T.); +#2781 = EDGE_CURVE('NONE', #137, #141, #779, .T.); +#2782 = EDGE_CURVE('NONE', #139, #127, #783, .T.); +#2783 = EDGE_CURVE('NONE', #141, #133, #787, .T.); +#2784 = EDGE_CURVE('NONE', #143, #143, #792, .T.); +#2785 = EDGE_CURVE('NONE', #145, #145, #797, .T.); +#2786 = EDGE_CURVE('NONE', #145, #147, #802, .T.); +#2787 = EDGE_CURVE('NONE', #147, #147, #807, .T.); +#2788 = EDGE_CURVE('NONE', #143, #145, #811, .T.); +#2789 = EDGE_CURVE('NONE', #149, #149, #816, .T.); +#2790 = EDGE_CURVE('NONE', #151, #151, #821, .T.); +#2791 = EDGE_CURVE('NONE', #151, #153, #826, .T.); +#2792 = EDGE_CURVE('NONE', #153, #153, #831, .T.); +#2793 = EDGE_CURVE('NONE', #149, #151, #835, .T.); +#2794 = EDGE_CURVE('NONE', #155, #155, #840, .T.); +#2795 = EDGE_CURVE('NONE', #155, #157, #844, .T.); +#2796 = EDGE_CURVE('NONE', #157, #157, #849, .T.); +#2797 = EDGE_CURVE('NONE', #159, #159, #854, .T.); +#2798 = EDGE_CURVE('NONE', #159, #161, #858, .T.); +#2799 = EDGE_CURVE('NONE', #161, #161, #863, .T.); +#2800 = EDGE_CURVE('NONE', #163, #163, #868, .T.); +#2801 = EDGE_CURVE('NONE', #163, #165, #872, .T.); +#2802 = EDGE_CURVE('NONE', #165, #165, #877, .T.); +#2803 = EDGE_CURVE('NONE', #167, #167, #882, .T.); +#2804 = EDGE_CURVE('NONE', #167, #169, #886, .T.); +#2805 = EDGE_CURVE('NONE', #169, #169, #891, .T.); +#2806 = EDGE_CURVE('NONE', #171, #171, #896, .T.); +#2807 = EDGE_CURVE('NONE', #171, #173, #900, .T.); +#2808 = EDGE_CURVE('NONE', #173, #173, #905, .T.); +#2809 = EDGE_CURVE('NONE', #175, #175, #910, .T.); +#2810 = EDGE_CURVE('NONE', #175, #177, #914, .T.); +#2811 = EDGE_CURVE('NONE', #177, #177, #919, .T.); +#2812 = EDGE_CURVE('NONE', #179, #179, #924, .T.); +#2813 = EDGE_CURVE('NONE', #179, #181, #928, .T.); +#2814 = EDGE_CURVE('NONE', #181, #181, #933, .T.); +#2815 = EDGE_CURVE('NONE', #183, #183, #938, .T.); +#2816 = EDGE_CURVE('NONE', #183, #185, #942, .T.); +#2817 = EDGE_CURVE('NONE', #185, #185, #947, .T.); +#2818 = EDGE_CURVE('NONE', #187, #187, #952, .T.); +#2819 = EDGE_CURVE('NONE', #187, #189, #956, .T.); +#2820 = EDGE_CURVE('NONE', #189, #189, #961, .T.); +#2821 = EDGE_CURVE('NONE', #191, #191, #966, .T.); +#2822 = EDGE_CURVE('NONE', #191, #193, #970, .T.); +#2823 = EDGE_CURVE('NONE', #193, #193, #975, .T.); +#2824 = EDGE_CURVE('NONE', #195, #195, #980, .T.); +#2825 = EDGE_CURVE('NONE', #195, #197, #984, .T.); +#2826 = EDGE_CURVE('NONE', #197, #197, #989, .T.); +#2827 = EDGE_CURVE('NONE', #199, #199, #994, .T.); +#2828 = EDGE_CURVE('NONE', #199, #201, #998, .T.); +#2829 = EDGE_CURVE('NONE', #201, #201, #1003, .T.); +#2830 = EDGE_CURVE('NONE', #203, #203, #1008, .T.); +#2831 = EDGE_CURVE('NONE', #203, #205, #1012, .T.); +#2832 = EDGE_CURVE('NONE', #205, #205, #1017, .T.); +#2833 = EDGE_CURVE('NONE', #207, #207, #1022, .T.); +#2834 = EDGE_CURVE('NONE', #207, #209, #1026, .T.); +#2835 = EDGE_CURVE('NONE', #209, #209, #1031, .T.); +#2836 = EDGE_CURVE('NONE', #211, #213, #1035, .T.); +#2837 = EDGE_CURVE('NONE', #213, #215, #1039, .T.); +#2838 = EDGE_CURVE('NONE', #217, #215, #1043, .T.); +#2839 = EDGE_CURVE('NONE', #211, #217, #1047, .T.); +#2840 = EDGE_CURVE('NONE', #213, #219, #1052, .T.); +#2841 = EDGE_CURVE('NONE', #219, #221, #1056, .T.); +#2842 = EDGE_CURVE('NONE', #215, #221, #1061, .T.); +#2843 = EDGE_CURVE('NONE', #219, #223, #1065, .T.); +#2844 = EDGE_CURVE('NONE', #223, #225, #1069, .T.); +#2845 = EDGE_CURVE('NONE', #221, #225, #1073, .T.); +#2846 = EDGE_CURVE('NONE', #223, #211, #1077, .T.); +#2847 = EDGE_CURVE('NONE', #225, #217, #1081, .T.); +#2848 = EDGE_CURVE('NONE', #227, #227, #1086, .T.); +#2849 = EDGE_CURVE('NONE', #229, #229, #1091, .T.); +#2850 = EDGE_CURVE('NONE', #229, #231, #1096, .T.); +#2851 = EDGE_CURVE('NONE', #231, #231, #1101, .T.); +#2852 = EDGE_CURVE('NONE', #227, #229, #1105, .T.); +#2853 = EDGE_CURVE('NONE', #233, #233, #1110, .T.); +#2854 = EDGE_CURVE('NONE', #233, #235, #1114, .T.); +#2855 = EDGE_CURVE('NONE', #235, #235, #1119, .T.); +#2856 = EDGE_CURVE('NONE', #237, #237, #1124, .T.); +#2857 = EDGE_CURVE('NONE', #237, #239, #1128, .T.); +#2858 = EDGE_CURVE('NONE', #239, #239, #1133, .T.); +#2859 = EDGE_CURVE('NONE', #241, #241, #1138, .T.); +#2860 = EDGE_CURVE('NONE', #241, #243, #1142, .T.); +#2861 = EDGE_CURVE('NONE', #243, #243, #1147, .T.); +#2862 = EDGE_CURVE('NONE', #245, #245, #1152, .T.); +#2863 = EDGE_CURVE('NONE', #245, #247, #1156, .T.); +#2864 = EDGE_CURVE('NONE', #247, #247, #1161, .T.); +#2865 = EDGE_CURVE('NONE', #249, #249, #1166, .T.); +#2866 = EDGE_CURVE('NONE', #251, #251, #1171, .T.); +#2867 = EDGE_CURVE('NONE', #251, #253, #1176, .T.); +#2868 = EDGE_CURVE('NONE', #253, #253, #1181, .T.); +#2869 = EDGE_CURVE('NONE', #249, #251, #1185, .T.); +#2870 = EDGE_CURVE('NONE', #255, #255, #1190, .T.); +#2871 = EDGE_CURVE('NONE', #257, #257, #1195, .T.); +#2872 = EDGE_CURVE('NONE', #257, #259, #1200, .T.); +#2873 = EDGE_CURVE('NONE', #259, #259, #1205, .T.); +#2874 = EDGE_CURVE('NONE', #255, #257, #1209, .T.); +#2875 = EDGE_CURVE('NONE', #261, #263, #1213, .T.); +#2876 = EDGE_CURVE('NONE', #263, #265, #1217, .T.); +#2877 = EDGE_CURVE('NONE', #265, #267, #1221, .T.); +#2878 = EDGE_CURVE('NONE', #267, #261, #1225, .T.); +#2879 = EDGE_CURVE('NONE', #269, #271, #1229, .T.); +#2880 = EDGE_CURVE('NONE', #271, #273, #1233, .T.); +#2881 = EDGE_CURVE('NONE', #273, #275, #1237, .T.); +#2882 = EDGE_CURVE('NONE', #275, #269, #1241, .T.); +#2883 = EDGE_CURVE('NONE', #267, #269, #1245, .T.); +#2884 = EDGE_CURVE('NONE', #271, #265, #1249, .T.); +#2885 = EDGE_CURVE('NONE', #277, #279, #1253, .T.); +#2886 = EDGE_CURVE('NONE', #279, #281, #1257, .T.); +#2887 = EDGE_CURVE('NONE', #281, #283, #1261, .T.); +#2888 = EDGE_CURVE('NONE', #283, #277, #1265, .T.); +#2889 = EDGE_CURVE('NONE', #275, #277, #1269, .T.); +#2890 = EDGE_CURVE('NONE', #279, #273, #1273, .T.); +#2891 = EDGE_CURVE('NONE', #285, #287, #1277, .T.); +#2892 = EDGE_CURVE('NONE', #287, #289, #1281, .T.); +#2893 = EDGE_CURVE('NONE', #289, #291, #1285, .T.); +#2894 = EDGE_CURVE('NONE', #291, #285, #1289, .T.); +#2895 = EDGE_CURVE('NONE', #285, #261, #1293, .T.); +#2896 = EDGE_CURVE('NONE', #263, #287, #1297, .T.); +#2897 = EDGE_CURVE('NONE', #283, #291, #1301, .T.); +#2898 = EDGE_CURVE('NONE', #289, #281, #1305, .T.); +#2899 = EDGE_CURVE('NONE', #293, #293, #1310, .T.); +#2900 = EDGE_CURVE('NONE', #295, #295, #1315, .T.); +#2901 = EDGE_CURVE('NONE', #295, #297, #1320, .T.); +#2902 = EDGE_CURVE('NONE', #297, #297, #1325, .T.); +#2903 = EDGE_CURVE('NONE', #293, #295, #1329, .T.); +#2904 = EDGE_CURVE('NONE', #299, #299, #1334, .T.); +#2905 = EDGE_CURVE('NONE', #299, #301, #1338, .T.); +#2906 = EDGE_CURVE('NONE', #301, #301, #1343, .T.); +#2907 = EDGE_CURVE('NONE', #303, #303, #1595, .T.); +#2908 = EDGE_CURVE('NONE', #303, #305, #1599, .T.); +#2909 = EDGE_CURVE('NONE', #305, #305, #1604, .T.); +#2910 = EDGE_CURVE('NONE', #307, #307, #1668, .T.); +#2911 = EDGE_CURVE('NONE', #307, #309, #1672, .T.); +#2912 = EDGE_CURVE('NONE', #309, #309, #1677, .T.); +#2913 = EDGE_CURVE('NONE', #311, #311, #1929, .T.); +#2914 = EDGE_CURVE('NONE', #311, #313, #1933, .T.); +#2915 = EDGE_CURVE('NONE', #313, #313, #1938, .T.); +#2916 = EDGE_CURVE('NONE', #315, #315, #2002, .T.); +#2917 = EDGE_CURVE('NONE', #315, #317, #2006, .T.); +#2918 = EDGE_CURVE('NONE', #317, #317, #2011, .T.); +#2919 = EDGE_CURVE('NONE', #319, #319, #2263, .T.); +#2920 = EDGE_CURVE('NONE', #319, #321, #2267, .T.); +#2921 = EDGE_CURVE('NONE', #321, #321, #2272, .T.); +#2922 = EDGE_CURVE('NONE', #323, #323, #2336, .T.); +#2923 = EDGE_CURVE('NONE', #323, #325, #2340, .T.); +#2924 = EDGE_CURVE('NONE', #325, #325, #2345, .T.); +#2925 = EDGE_CURVE('NONE', #327, #327, #2597, .T.); +#2926 = EDGE_CURVE('NONE', #327, #329, #2601, .T.); +#2927 = EDGE_CURVE('NONE', #329, #329, #2606, .T.); +#2928 = EDGE_CURVE('NONE', #331, #331, #2670, .T.); +#2929 = EDGE_CURVE('NONE', #331, #333, #2674, .T.); +#2930 = EDGE_CURVE('NONE', #333, #333, #2679, .T.); +#2931 = CARTESIAN_POINT('NONE', (-0.2159272532851528, 0.9431139696068246, 0.07031359555181538)); +#2932 = DIRECTION('NONE', (0.17364817766693055, -0.00000000000000013530843112619095, 0.9848077530122078)); +#2933 = DIRECTION('NONE', (0.17101007166283508, 0.9848077530122079, -0.03015368960704584)); +#2934 = AXIS2_PLACEMENT_3D('NONE', #2931, #2932, #2933); +#2935 = CYLINDRICAL_SURFACE('NONE', #2934, 0.04762500000000007); +#2936 = CARTESIAN_POINT('NONE', (0.02226935489171511, 0.8521058632422182, 0.02831310681699101)); +#2937 = DIRECTION('NONE', (-0.17101007166283433, -0.9848077530122081, 0.030153689607045783)); +#2938 = AXIS2_PLACEMENT_3D('NONE', #2936, #2937, $); +#2939 = PLANE('NONE', #2938); +#2940 = CARTESIAN_POINT('NONE', (0.27675467239446777, 0.854900695352024, -0.016559520852904457)); +#2941 = DIRECTION('NONE', (-0.1736481776669303, 0.000000000000000027755575615628914, -0.9848077530122084)); +#2942 = DIRECTION('NONE', (-0.1710100716628332, -0.9848077530122085, 0.030153689607045557)); +#2943 = AXIS2_PLACEMENT_3D('NONE', #2940, #2941, #2942); +#2944 = CYLINDRICAL_SURFACE('NONE', #2943, 0.04762499999999993); +#2945 = CARTESIAN_POINT('NONE', (0.0385580642176001, 0.9459088017166307, 0.025440967881919886)); +#2946 = DIRECTION('NONE', (0.1710100716628346, 0.9848077530122082, -0.03015368960704591)); +#2947 = AXIS2_PLACEMENT_3D('NONE', #2945, #2946, $); +#2948 = PLANE('NONE', #2947); +#2949 = CARTESIAN_POINT('NONE', (0, 0, -0)); +#2950 = DIRECTION('NONE', (0.1736481776669304, 0, 0.9848077530122081)); +#2951 = AXIS2_PLACEMENT_3D('NONE', #2949, #2950, $); +#2952 = PLANE('NONE', #2951); +#2953 = CARTESIAN_POINT('NONE', (0.011026659281850081, 0, 0.06253529231627522)); +#2954 = DIRECTION('NONE', (0.1736481776669304, 0, 0.9848077530122081)); +#2955 = AXIS2_PLACEMENT_3D('NONE', #2953, #2954, $); +#2956 = PLANE('NONE', #2955); +#2957 = CARTESIAN_POINT('NONE', (-0.210083123865772, 0.9431139696068246, 0.10345730047944124)); +#2958 = DIRECTION('NONE', (0.173648177666931, 0.00000000000000020594881039988872, 0.9848077530122079)); +#2959 = DIRECTION('NONE', (0.9848077530122079, -0.00000000000000483876730034545, -0.173648177666931)); +#2960 = AXIS2_PLACEMENT_3D('NONE', #2957, #2958, #2959); +#2961 = CYLINDRICAL_SURFACE('NONE', #2960, 0.046989999999999865); +#2962 = CARTESIAN_POINT('NONE', (0.011688258838761087, 0, 0.06628740985525174)); +#2963 = DIRECTION('NONE', (0.17364817766693047, 0, 0.9848077530122081)); +#2964 = AXIS2_PLACEMENT_3D('NONE', #2962, #2963, $); +#2965 = PLANE('NONE', #2964); +#2966 = CARTESIAN_POINT('NONE', (-0.21019339045859073, 0.9431139696068244, 0.10283194755627863)); +#2967 = DIRECTION('NONE', (0.1736481776669332, -0.00000000000000011960336340977703, 0.9848077530122076)); +#2968 = DIRECTION('NONE', (0.9848077530122076, 0, -0.1736481776669332)); +#2969 = AXIS2_PLACEMENT_3D('NONE', #2966, #2967, #2968); +#2970 = TOROIDAL_SURFACE('NONE', #2969, 0.04445000000000032, 0.0025400000000000366); +#2971 = CARTESIAN_POINT('NONE', (-0.20086619245249107, 0.9073116807548817, 0.1057008821832252)); +#2972 = DIRECTION('NONE', (0.17364817766693857, 0.00000000000000041300379116782053, 0.9848077530122067)); +#2973 = DIRECTION('NONE', (0.9848077530122067, -0.000000000000044758597528195814, -0.17364817766693857)); +#2974 = AXIS2_PLACEMENT_3D('NONE', #2971, #2972, #2973); +#2975 = CYLINDRICAL_SURFACE('NONE', #2974, 0.0050799999999999405); +#2976 = CARTESIAN_POINT('NONE', (0.012349858395672098, 0, 0.07003952739422824)); +#2977 = DIRECTION('NONE', (0.17364817766693078, 0, 0.9848077530122079)); +#2978 = AXIS2_PLACEMENT_3D('NONE', #2976, #2977, $); +#2979 = PLANE('NONE', #2978); +#2980 = CARTESIAN_POINT('NONE', (-0.17844055745981927, 0.9239407853488747, 0.10174663767449724)); +#2981 = DIRECTION('NONE', (0.17364817766693158, 0.0000000000000009575673587391975, 0.9848077530122078)); +#2982 = DIRECTION('NONE', (0.6963642403200169, 0.7071067811865492, -0.12278780396897408)); +#2983 = AXIS2_PLACEMENT_3D('NONE', #2980, #2981, #2982); +#2984 = CYLINDRICAL_SURFACE('NONE', #2983, 0.005080000000000016); +#2985 = CARTESIAN_POINT('NONE', (0.012349858395672098, 0, 0.07003952739422824)); +#2986 = DIRECTION('NONE', (0.17364817766693078, 0, 0.9848077530122079)); +#2987 = AXIS2_PLACEMENT_3D('NONE', #2985, #2986, $); +#2988 = PLANE('NONE', #2987); +#2989 = CARTESIAN_POINT('NONE', (-0.17416315267188462, 0.9518012812472968, 0.10099241580297279)); +#2990 = DIRECTION('NONE', (0.1736481776669293, 0.00000000000000031935993930900413, 0.9848077530122084)); +#2991 = DIRECTION('NONE', (-0.0000000000000335689481461462, 1, 0.0000000000000055948246910243655)); +#2992 = AXIS2_PLACEMENT_3D('NONE', #2989, #2990, #2991); +#2993 = CYLINDRICAL_SURFACE('NONE', #2992, 0.005080000000000041); +#2994 = CARTESIAN_POINT('NONE', (0.012349858395672098, 0, 0.07003952739422824)); +#2995 = DIRECTION('NONE', (0.17364817766693078, 0, 0.9848077530122079)); +#2996 = AXIS2_PLACEMENT_3D('NONE', #2994, #2995, $); +#2997 = PLANE('NONE', #2996); +#2998 = CARTESIAN_POINT('NONE', (-0.1905396238017002, 0.9745728678072919, 0.10388002951195252)); +#2999 = DIRECTION('NONE', (0.17364817766693305, 0.0000000000000032751579226442118, 0.9848077530122075)); +#3000 = DIRECTION('NONE', (-0.6963642403200225, 0.7071067811865437, 0.12278780396897312)); +#3001 = AXIS2_PLACEMENT_3D('NONE', #2998, #2999, #3000); +#3002 = CYLINDRICAL_SURFACE('NONE', #3001, 0.005080000000000056); +#3003 = CARTESIAN_POINT('NONE', (0.012349858395672098, 0, 0.07003952739422824)); +#3004 = DIRECTION('NONE', (0.17364817766693078, 0, 0.9848077530122079)); +#3005 = AXIS2_PLACEMENT_3D('NONE', #3003, #3004, $); +#3006 = PLANE('NONE', #3005); +#3007 = CARTESIAN_POINT('NONE', (-0.21797685616523108, 0.978916258458768, 0.10871795385361048)); +#3008 = DIRECTION('NONE', (0.17364817766693472, 0.0000000000000009636755127255475, 0.9848077530122072)); +#3009 = DIRECTION('NONE', (-0.9848077530122072, 0.000000000000022379298764097408, 0.17364817766693472)); +#3010 = AXIS2_PLACEMENT_3D('NONE', #3007, #3008, #3009); +#3011 = CYLINDRICAL_SURFACE('NONE', #3010, 0.005080000000000053); +#3012 = CARTESIAN_POINT('NONE', (0.012349858395672098, 0, 0.07003952739422824)); +#3013 = DIRECTION('NONE', (0.17364817766693078, 0, 0.9848077530122079)); +#3014 = AXIS2_PLACEMENT_3D('NONE', #3012, #3013, $); +#3015 = PLANE('NONE', #3014); +#3016 = CARTESIAN_POINT('NONE', (-0.24040249115790316, 0.9622871538647751, 0.11267219836233848)); +#3017 = DIRECTION('NONE', (0.1736481776669293, 0.000000000000003747002708109903, 0.9848077530122081)); +#3018 = DIRECTION('NONE', (-0.696364240319978, -0.7071067811865887, 0.12278780396896757)); +#3019 = AXIS2_PLACEMENT_3D('NONE', #3016, #3017, #3018); +#3020 = CYLINDRICAL_SURFACE('NONE', #3019, 0.005080000000000054); +#3021 = CARTESIAN_POINT('NONE', (0.012349858395672098, 0, 0.07003952739422824)); +#3022 = DIRECTION('NONE', (0.17364817766693078, 0, 0.9848077530122079)); +#3023 = AXIS2_PLACEMENT_3D('NONE', #3021, #3022, $); +#3024 = PLANE('NONE', #3023); +#3025 = CARTESIAN_POINT('NONE', (-0.24467989594583742, 0.9344266579663529, 0.11342642023386286)); +#3026 = DIRECTION('NONE', (0.17364817766693122, 0.0000000000000008118511423077796, 0.9848077530122079)); +#3027 = DIRECTION('NONE', (-0.000000000000011189649382048482, -1, 0.0000000000000027974123455121204)); +#3028 = AXIS2_PLACEMENT_3D('NONE', #3025, #3026, #3027); +#3029 = CYLINDRICAL_SURFACE('NONE', #3028, 0.005080000000000155); +#3030 = CARTESIAN_POINT('NONE', (0.012349858395672098, 0, 0.07003952739422824)); +#3031 = DIRECTION('NONE', (0.17364817766693078, 0, 0.9848077530122079)); +#3032 = AXIS2_PLACEMENT_3D('NONE', #3030, #3031, $); +#3033 = PLANE('NONE', #3032); +#3034 = CARTESIAN_POINT('NONE', (-0.22830342481602203, 0.9116550714063576, 0.11053880652488317)); +#3035 = DIRECTION('NONE', (0.17364817766693294, -0.0000000000000009575673587391975, 0.9848077530122075)); +#3036 = DIRECTION('NONE', (0.6963642403200141, -0.707106781186552, -0.12278780396897458)); +#3037 = AXIS2_PLACEMENT_3D('NONE', #3034, #3035, #3036); +#3038 = CYLINDRICAL_SURFACE('NONE', #3037, 0.005079999999999996); +#3039 = CARTESIAN_POINT('NONE', (0.012349858395672098, 0, 0.07003952739422824)); +#3040 = DIRECTION('NONE', (0.17364817766693078, 0, 0.9848077530122079)); +#3041 = AXIS2_PLACEMENT_3D('NONE', #3039, #3040, $); +#3042 = PLANE('NONE', #3041); +#3043 = CARTESIAN_POINT('NONE', (0.2723440955058167, 0.8549006953520241, -0.041573145375538065)); +#3044 = DIRECTION('NONE', (-0.17364817766693058, 0.000000000000000050123363811102404, -0.9848077530122081)); +#3045 = DIRECTION('NONE', (-0.9848077530122081, -0.0000000000000023871252015037486, 0.17364817766693058)); +#3046 = AXIS2_PLACEMENT_3D('NONE', #3043, #3044, #3045); +#3047 = CYLINDRICAL_SURFACE('NONE', #3046, 0.047625); +#3048 = CARTESIAN_POINT('NONE', (0.0022055055045476827, 0, 0.012508043271008054)); +#3049 = DIRECTION('NONE', (-0.1736481776669304, 0, -0.9848077530122081)); +#3050 = AXIS2_PLACEMENT_3D('NONE', #3048, #3049, $); +#3051 = PLANE('NONE', #3050); +#3052 = CARTESIAN_POINT('NONE', (0, 0, -0)); +#3053 = DIRECTION('NONE', (-0.1736481776669304, 0, -0.9848077530122081)); +#3054 = AXIS2_PLACEMENT_3D('NONE', #3052, #3053, $); +#3055 = PLANE('NONE', #3054); +#3056 = CARTESIAN_POINT('NONE', (0.2811652492831189, 0.8549006953520237, 0.008454103669729108)); +#3057 = DIRECTION('NONE', (0.17364817766692947, 0.00000000000000010125170106661904, 0.9848077530122081)); +#3058 = DIRECTION('NONE', (0.9848077530122081, -0.0000000000000023990608275112628, -0.17364817766692947)); +#3059 = AXIS2_PLACEMENT_3D('NONE', #3056, #3057, #3058); +#3060 = CYLINDRICAL_SURFACE('NONE', #3059, 0.04738805970149263); +#3061 = CARTESIAN_POINT('NONE', (0.0088211537773024, 0, 0.05002724904526717)); +#3062 = DIRECTION('NONE', (0.17364817766693033, 0, 0.9848077530122081)); +#3063 = AXIS2_PLACEMENT_3D('NONE', #3061, #3062, $); +#3064 = PLANE('NONE', #3063); +#3065 = CARTESIAN_POINT('NONE', (0.011026659281850081, 0, 0.06253529231627522)); +#3066 = DIRECTION('NONE', (0.17364817766693033, 0, 0.9848077530122081)); +#3067 = AXIS2_PLACEMENT_3D('NONE', #3065, #3066, $); +#3068 = PLANE('NONE', #3067); +#3069 = CARTESIAN_POINT('NONE', (0.008843293919954929, -0.0000000000000000018841109504205307, 0.05015281203377623)); +#3070 = DIRECTION('NONE', (-0.1736481776669308, -0.000000000000000034416982597345116, -0.9848077530122079)); +#3071 = DIRECTION('NONE', (-0.9848077530122079, 0.0000000000000007417759647324918, 0.1736481776669308)); +#3072 = AXIS2_PLACEMENT_3D('NONE', #3069, #3070, #3071); +#3073 = CYLINDRICAL_SURFACE('NONE', #3072, 0.0025400000000000023); +#3074 = CARTESIAN_POINT('NONE', (0.008865434062607461, 0, 0.050278375022285285)); +#3075 = DIRECTION('NONE', (-0.17364817766693058, 0, -0.9848077530122081)); +#3076 = AXIS2_PLACEMENT_3D('NONE', #3074, #3075, $); +#3077 = PLANE('NONE', #3076); +#3078 = CARTESIAN_POINT('NONE', (0.008821153777302394, 0, 0.05002724904526717)); +#3079 = DIRECTION('NONE', (-0.17364817766693058, 0, -0.9848077530122081)); +#3080 = AXIS2_PLACEMENT_3D('NONE', #3078, #3079, $); +#3081 = PLANE('NONE', #3080); +#3082 = CARTESIAN_POINT('NONE', (0.29866521260864315, 0.8558701362362185, -0.02016552960844843)); +#3083 = DIRECTION('NONE', (0.042956710859022015, -0.999048221581858, -0.00757442712693783)); +#3084 = AXIS2_PLACEMENT_3D('NONE', #3082, #3083, $); +#3085 = PLANE('NONE', #3084); +#3086 = CARTESIAN_POINT('NONE', (0.372303249300916, 0.8294732759760167, -0.03314990228369609)); +#3087 = DIRECTION('NONE', (-0.17364817766693058, 0.000000000000000027755575615628914, -0.9848077530122079)); +#3088 = DIRECTION('NONE', (-0.8735351455197315, 0.46174861323503297, 0.1540278147522241)); +#3089 = AXIS2_PLACEMENT_3D('NONE', #3086, #3087, #3088); +#3090 = CYLINDRICAL_SURFACE('NONE', #3089, 0.059266666666666676); +#3091 = CARTESIAN_POINT('NONE', (0.43610654479589817, 0.8619635266868347, -0.044400144737576315)); +#3092 = DIRECTION('NONE', (0.04295671085902554, -0.9990482215818577, -0.007574427126938454)); +#3093 = AXIS2_PLACEMENT_3D('NONE', #3091, #3092, $); +#3094 = PLANE('NONE', #3093); +#3095 = CARTESIAN_POINT('NONE', (0.43315159877125214, 0.8807263820181475, -0.043879108026893994)); +#3096 = DIRECTION('NONE', (0.7024145721664808, 0.7009092642998481, -0.12385464071574288)); +#3097 = AXIS2_PLACEMENT_3D('NONE', #3095, #3096, $); +#3098 = PLANE('NONE', #3097); +#3099 = CARTESIAN_POINT('NONE', (0.39176258515837076, 0.9064808707340721, -0.03658110822203304)); +#3100 = DIRECTION('NONE', (0.2961374027275444, 0.9537169507482264, -0.052217014097794306)); +#3101 = AXIS2_PLACEMENT_3D('NONE', #3099, #3100, $); +#3102 = PLANE('NONE', #3101); +#3103 = CARTESIAN_POINT('NONE', (0.34094449540993865, 0.9027786123290619, -0.027620507891320204)); +#3104 = DIRECTION('NONE', (-0.3768696111424634, 0.9238795325112868, 0.06645228065352306)); +#3105 = AXIS2_PLACEMENT_3D('NONE', #3103, #3104, $); +#3106 = PLANE('NONE', #3105); +#3107 = CARTESIAN_POINT('NONE', (0.2953907425949119, 0.8731695609843334, -0.01958815219750679)); +#3108 = DIRECTION('NONE', (-0.684837025930983, 0.718621192774441, 0.12075524505977445)); +#3109 = AXIS2_PLACEMENT_3D('NONE', #3107, #3108, $); +#3110 = PLANE('NONE', #3109); +#3111 = CARTESIAN_POINT('NONE', (0.002249264845319753, 0, 0.012756214824767142)); +#3112 = DIRECTION('NONE', (0.17364817766693058, 0, 0.9848077530122081)); +#3113 = AXIS2_PLACEMENT_3D('NONE', #3111, #3112, $); +#3114 = PLANE('NONE', #3113); +#3115 = CARTESIAN_POINT('NONE', (0.008865434062607475, 0, 0.050278375022285285)); +#3116 = DIRECTION('NONE', (0.17364817766693058, 0, 0.9848077530122081)); +#3117 = AXIS2_PLACEMENT_3D('NONE', #3115, #3116, $); +#3118 = PLANE('NONE', #3117); +#3119 = CARTESIAN_POINT('NONE', (0.2881161107412074, 0.8312766257894839, -0.018305438326977452)); +#3120 = DIRECTION('NONE', (-0.8855852281809826, -0.4374416288869969, 0.15615256944516862)); +#3121 = AXIS2_PLACEMENT_3D('NONE', #3119, #3120, $); +#3122 = PLANE('NONE', #3121); +#3123 = CARTESIAN_POINT('NONE', (0.3209495943701819, 0.787632566407933, -0.024094867361415348)); +#3124 = DIRECTION('NONE', (-0.665326474319031, -0.7372773368101225, 0.11731500840208142)); +#3125 = AXIS2_PLACEMENT_3D('NONE', #3123, #3124, $); +#3126 = PLANE('NONE', #3125); +#3127 = CARTESIAN_POINT('NONE', (0.36745596849532586, 0.7665046441498428, -0.03229519589460028)); +#3128 = DIRECTION('NONE', (-0.04295671085902555, -0.9990482215818578, 0.007574427126938415)); +#3129 = AXIS2_PLACEMENT_3D('NONE', #3127, #3128, $); +#3130 = PLANE('NONE', #3129); +#3131 = CARTESIAN_POINT('NONE', (0.41502365136407127, 0.7763316935696939, -0.040682661794143926)); +#3132 = DIRECTION('NONE', (0.42397066589460114, -0.9025852843498594, -0.07475746742615187)); +#3133 = AXIS2_PLACEMENT_3D('NONE', #3131, #3132, $); +#3134 = PLANE('NONE', #3133); +#3135 = CARTESIAN_POINT('NONE', (0.42412017398913543, 0.7929367682848341, -0.04228662416356773)); +#3136 = DIRECTION('NONE', (0.37686961114246165, 0.9238795325112876, -0.0664522806535231)); +#3137 = AXIS2_PLACEMENT_3D('NONE', #3135, #3136, $); +#3138 = PLANE('NONE', #3137); +#3139 = CARTESIAN_POINT('NONE', (0.37510818712232, 0.8456262691089709, -0.033644488500819233)); +#3140 = DIRECTION('NONE', (-0.17364817766693086, -0.0000000000000003608224830031759, -0.984807753012208)); +#3141 = DIRECTION('NONE', (0.5995129750225769, -0.7933533402912369, -0.1057103127812804)); +#3142 = AXIS2_PLACEMENT_3D('NONE', #3139, #3140, #3141); +#3143 = CYLINDRICAL_SURFACE('NONE', #3142, 0.05926666666666672); +#3144 = CARTESIAN_POINT('NONE', (0.29701996902822236, 0.8463955560677098, -0.01987542877538285)); +#3145 = DIRECTION('NONE', (0.37686961114246464, 0.9238795325112864, -0.06645228065352342)); +#3146 = AXIS2_PLACEMENT_3D('NONE', #3144, #3145, $); +#3147 = PLANE('NONE', #3146); +#3148 = CARTESIAN_POINT('NONE', (0.002249264845319753, 0, 0.012756214824767142)); +#3149 = DIRECTION('NONE', (0.17364817766693058, 0, 0.9848077530122081)); +#3150 = AXIS2_PLACEMENT_3D('NONE', #3148, #3149, $); +#3151 = PLANE('NONE', #3150); +#3152 = CARTESIAN_POINT('NONE', (0.008865434062607475, 0, 0.050278375022285285)); +#3153 = DIRECTION('NONE', (0.17364817766693058, 0, 0.9848077530122081)); +#3154 = AXIS2_PLACEMENT_3D('NONE', #3152, #3153, $); +#3155 = PLANE('NONE', #3154); +#3156 = CARTESIAN_POINT('NONE', (0.0357213749804676, 0.2032000000000001, -0.03898630765543267)); +#3157 = DIRECTION('NONE', (0.17364817766693053, -0.00000000000000025673907444456745, 0.984807753012208)); +#3158 = DIRECTION('NONE', (-0.925416578398323, -0.3420201433256698, 0.16317591116653485)); +#3159 = AXIS2_PLACEMENT_3D('NONE', #3156, #3157, #3158); +#3160 = CYLINDRICAL_SURFACE('NONE', #3159, 0.050800000000000026); +#3161 = CARTESIAN_POINT('NONE', (-0.0498751066106328, 0.5905316080843563, -0.02389333849720623)); +#3162 = DIRECTION('NONE', (0.9254165783983236, 0.34202014332566855, -0.16317591116653496)); +#3163 = AXIS2_PLACEMENT_3D('NONE', #3161, #3162, $); +#3164 = PLANE('NONE', #3163); +#3165 = CARTESIAN_POINT('NONE', (-0.22949391256700283, 0.9431139696068247, 0.00777830323554015)); +#3166 = DIRECTION('NONE', (0.17364817766693033, 0.00000000000000009020562075079397, 0.984807753012208)); +#3167 = DIRECTION('NONE', (0.9254165783983233, 0.3420201433256691, -0.16317591116653482)); +#3168 = AXIS2_PLACEMENT_3D('NONE', #3165, #3166, #3167); +#3169 = CYLINDRICAL_SURFACE('NONE', #3168, 0.05079999999999997); +#3170 = CARTESIAN_POINT('NONE', (-0.14389743097590244, 0.5557823615224683, -0.007314665922686284)); +#3171 = DIRECTION('NONE', (-0.9254165783983235, -0.34202014332566855, 0.16317591116653515)); +#3172 = AXIS2_PLACEMENT_3D('NONE', #3170, #3171, $); +#3173 = PLANE('NONE', #3172); +#3174 = CARTESIAN_POINT('NONE', (-0.013566659281850083, 0, -0.06253529231627522)); +#3175 = DIRECTION('NONE', (0.17364817766693041, 0, 0.9848077530122081)); +#3176 = AXIS2_PLACEMENT_3D('NONE', #3174, #3175, $); +#3177 = PLANE('NONE', #3176); +#3178 = CARTESIAN_POINT('NONE', (-0.00254, 0, -0)); +#3179 = DIRECTION('NONE', (0.17364817766693041, 0, 0.9848077530122081)); +#3180 = AXIS2_PLACEMENT_3D('NONE', #3178, #3179, $); +#3181 = PLANE('NONE', #3180); +#3182 = CARTESIAN_POINT('NONE', (0.032340655189485173, 0.20320000000000002, -0.07256437816508213)); +#3183 = DIRECTION('NONE', (-0.1736481776669303, -0.00000000000000000000000000000006162975822039155, -0.9848077530122081)); +#3184 = DIRECTION('NONE', (-0.9848077530122081, 0.0000000000000005889289148446747, 0.1736481776669303)); +#3185 = AXIS2_PLACEMENT_3D('NONE', #3182, #3183, #3184); +#3186 = CYLINDRICAL_SURFACE('NONE', #3185, 0.04826000000000001); +#3187 = CARTESIAN_POINT('NONE', (-0.011764849210362985, 0, -0.06672177543727534)); +#3188 = DIRECTION('NONE', (-0.17364817766693047, 0, -0.9848077530122081)); +#3189 = AXIS2_PLACEMENT_3D('NONE', #3187, #3188, $); +#3190 = PLANE('NONE', #3189); +#3191 = CARTESIAN_POINT('NONE', (0.032450921782303715, 0.2032, -0.07193902524191936)); +#3192 = DIRECTION('NONE', (-0.17364817766693078, 0.00000000000000015106044421702706, -0.9848077530122079)); +#3193 = DIRECTION('NONE', (-0.9848077530122079, 0.0000000000000011962993008947878, 0.17364817766693078)); +#3194 = AXIS2_PLACEMENT_3D('NONE', #3191, #3192, #3193); +#3195 = TOROIDAL_SURFACE('NONE', #3194, 0.04571999999999991, 0.002540000000000015); +#3196 = CARTESIAN_POINT('NONE', (-0.23474916443589972, 0.9431139696068249, -0.03643076696787614)); +#3197 = DIRECTION('NONE', (-0.17364817766693133, -0.0000000000000001098292630253246, -0.9848077530122079)); +#3198 = DIRECTION('NONE', (-0.9848077530122079, -0.0000000000000023557156593786974, 0.17364817766693133)); +#3199 = AXIS2_PLACEMENT_3D('NONE', #3196, #3197, #3198); +#3200 = CYLINDRICAL_SURFACE('NONE', #3199, 0.04826000000000004); +#3201 = CARTESIAN_POINT('NONE', (-0.015513913366192013, 0, -0.0879837748248089)); +#3202 = DIRECTION('NONE', (-0.17364817766693044, 0, -0.9848077530122081)); +#3203 = AXIS2_PLACEMENT_3D('NONE', #3201, #3202, $); +#3204 = PLANE('NONE', #3203); +#3205 = CARTESIAN_POINT('NONE', (-0.23651342992099575, 0.9431139696068247, -0.04643641373848022)); +#3206 = DIRECTION('NONE', (-0.17364817766693383, -0.000000000000000025176740702837702, -0.9848077530122075)); +#3207 = DIRECTION('NONE', (-0.9848077530122075, 0, 0.17364817766693383)); +#3208 = AXIS2_PLACEMENT_3D('NONE', #3205, #3206, #3207); +#3209 = TOROIDAL_SURFACE('NONE', #3208, 0.04572000000000003, 0.0025400000000000947); +#3210 = CARTESIAN_POINT('NONE', (0.03167905563257412, 0.17145000000000002, -0.07631649570405867)); +#3211 = DIRECTION('NONE', (-0.17364817766693158, -0.00000000000000006883396519468992, -0.9848077530122079)); +#3212 = DIRECTION('NONE', (-0.9848077530122079, 0, 0.17364817766693158)); +#3213 = AXIS2_PLACEMENT_3D('NONE', #3210, #3211, #3212); +#3214 = CYLINDRICAL_SURFACE('NONE', #3213, 0.005079999999999981); +#3215 = CARTESIAN_POINT('NONE', (-0.012426448767273994, 0, -0.07047389297625185)); +#3216 = DIRECTION('NONE', (-0.17364817766693078, 0, -0.9848077530122079)); +#3217 = AXIS2_PLACEMENT_3D('NONE', #3215, #3216, $); +#3218 = PLANE('NONE', #3217); +#3219 = CARTESIAN_POINT('NONE', (0.009569491002413529, 0.18074935969732714, -0.07241798292804377)); +#3220 = DIRECTION('NONE', (-0.1736481776669318, 0.0000000000000009853229343548264, -0.9848077530122078)); +#3221 = DIRECTION('NONE', (-0.6963642403200193, 0.7071067811865469, 0.12278780396897467)); +#3222 = AXIS2_PLACEMENT_3D('NONE', #3219, #3220, #3221); +#3223 = CYLINDRICAL_SURFACE('NONE', #3222, 0.0050799999999999925); +#3224 = CARTESIAN_POINT('NONE', (-0.012426448767273994, 0, -0.07047389297625185)); +#3225 = DIRECTION('NONE', (-0.17364817766693078, 0, -0.9848077530122079)); +#3226 = AXIS2_PLACEMENT_3D('NONE', #3224, #3225, $); +#3227 = PLANE('NONE', #3226); +#3228 = CARTESIAN_POINT('NONE', (0.00041140947443651043, 0.20320000000000005, -0.07080316606313362)); +#3229 = DIRECTION('NONE', (-0.17364817766693103, 0.0000000000000036353634364483464, -0.9848077530122079)); +#3230 = DIRECTION('NONE', (0.00000000000000507030987624086, 1, 0.0000000000000027974123455121985)); +#3231 = AXIS2_PLACEMENT_3D('NONE', #3228, #3229, #3230); +#3232 = CYLINDRICAL_SURFACE('NONE', #3231, 0.0050800000000000125); +#3233 = CARTESIAN_POINT('NONE', (-0.012426448767273994, 0, -0.07047389297625185)); +#3234 = DIRECTION('NONE', (-0.17364817766693078, 0, -0.9848077530122079)); +#3235 = AXIS2_PLACEMENT_3D('NONE', #3233, #3234, $); +#3236 = PLANE('NONE', #3235); +#3237 = CARTESIAN_POINT('NONE', (0.009569491002413536, 0.22565064030267296, -0.07241798292804376)); +#3238 = DIRECTION('NONE', (-0.1736481776669321, 0.0000000000000003885780586188048, -0.9848077530122079)); +#3239 = DIRECTION('NONE', (0.6963642403200243, 0.707106781186542, -0.12278780396897478)); +#3240 = AXIS2_PLACEMENT_3D('NONE', #3237, #3238, #3239); +#3241 = CYLINDRICAL_SURFACE('NONE', #3240, 0.005079999999999987); +#3242 = CARTESIAN_POINT('NONE', (-0.012426448767273994, 0, -0.07047389297625185)); +#3243 = DIRECTION('NONE', (-0.17364817766693078, 0, -0.9848077530122079)); +#3244 = AXIS2_PLACEMENT_3D('NONE', #3242, #3243, $); +#3245 = PLANE('NONE', #3244); +#3246 = CARTESIAN_POINT('NONE', (0.03167905563257409, 0.23495000000000002, -0.07631649570405868)); +#3247 = DIRECTION('NONE', (-0.17364817766692706, -0.00000000000000006883396519466745, -0.9848077530122086)); +#3248 = DIRECTION('NONE', (0.9848077530122086, 0.000000000000005594824691024376, -0.17364817766692706)); +#3249 = AXIS2_PLACEMENT_3D('NONE', #3246, #3247, #3248); +#3250 = CYLINDRICAL_SURFACE('NONE', #3249, 0.005080000000000032); +#3251 = CARTESIAN_POINT('NONE', (-0.012426448767273994, 0, -0.07047389297625185)); +#3252 = DIRECTION('NONE', (-0.17364817766693078, 0, -0.9848077530122079)); +#3253 = AXIS2_PLACEMENT_3D('NONE', #3251, #3252, $); +#3254 = PLANE('NONE', #3253); +#3255 = CARTESIAN_POINT('NONE', (0.053788620262734746, 0.22565064030267293, -0.08021500848007357)); +#3256 = DIRECTION('NONE', (-0.1736481776669318, -0.000000000000001457167719820518, -0.9848077530122077)); +#3257 = DIRECTION('NONE', (0.6963642403200135, -0.7071067811865529, -0.12278780396897193)); +#3258 = AXIS2_PLACEMENT_3D('NONE', #3255, #3256, #3257); +#3259 = CYLINDRICAL_SURFACE('NONE', #3258, 0.005079999999999989); +#3260 = CARTESIAN_POINT('NONE', (-0.012426448767273994, 0, -0.07047389297625185)); +#3261 = DIRECTION('NONE', (-0.17364817766693078, 0, -0.9848077530122079)); +#3262 = AXIS2_PLACEMENT_3D('NONE', #3260, #3261, $); +#3263 = PLANE('NONE', #3262); +#3264 = CARTESIAN_POINT('NONE', (0.06294670179071173, 0.20320000000000002, -0.0818298253449837)); +#3265 = DIRECTION('NONE', (-0.17364817766693072, 0.0000000000000022691478102513238, -0.984807753012208)); +#3266 = DIRECTION('NONE', (0.0000000000000027974123455122143, -1, -0.0000000000000027974123455122143)); +#3267 = AXIS2_PLACEMENT_3D('NONE', #3264, #3265, #3266); +#3268 = CYLINDRICAL_SURFACE('NONE', #3267, 0.005079999999999984); +#3269 = CARTESIAN_POINT('NONE', (-0.012426448767273994, 0, -0.07047389297625185)); +#3270 = DIRECTION('NONE', (-0.17364817766693078, 0, -0.9848077530122079)); +#3271 = AXIS2_PLACEMENT_3D('NONE', #3269, #3270, $); +#3272 = PLANE('NONE', #3271); +#3273 = CARTESIAN_POINT('NONE', (0.05378862026273474, 0.18074935969732714, -0.08021500848007358)); +#3274 = DIRECTION('NONE', (-0.17364817766693275, -0.0000000000000005412337245047638, -0.9848077530122078)); +#3275 = DIRECTION('NONE', (-0.6963642403200183, -0.7071067811865479, 0.12278780396897485)); +#3276 = AXIS2_PLACEMENT_3D('NONE', #3273, #3274, #3275); +#3277 = CYLINDRICAL_SURFACE('NONE', #3276, 0.005079999999999985); +#3278 = CARTESIAN_POINT('NONE', (-0.012426448767273994, 0, -0.07047389297625185)); +#3279 = DIRECTION('NONE', (-0.17364817766693078, 0, -0.9848077530122079)); +#3280 = AXIS2_PLACEMENT_3D('NONE', #3278, #3279, $); +#3281 = PLANE('NONE', #3280); +#3282 = CARTESIAN_POINT('NONE', (-0.2287299642143554, 0.9073116807548816, -0.052322420035812056)); +#3283 = DIRECTION('NONE', (-0.17364817766692908, 0.0000000000000009636755127256777, -0.9848077530122085)); +#3284 = DIRECTION('NONE', (-0.9848077530122085, -0.000000000000022379298764097945, 0.17364817766692908)); +#3285 = AXIS2_PLACEMENT_3D('NONE', #3282, #3283, #3284); +#3286 = CYLINDRICAL_SURFACE('NONE', #3285, 0.005079999999999932); +#3287 = CARTESIAN_POINT('NONE', (-0.016175512923103017, 0, -0.0917358923637854)); +#3288 = DIRECTION('NONE', (-0.17364817766693033, 0, -0.9848077530122081)); +#3289 = AXIS2_PLACEMENT_3D('NONE', #3287, #3288, $); +#3290 = PLANE('NONE', #3289); +#3291 = CARTESIAN_POINT('NONE', (-0.2725436677077015, 0.9344266579663528, -0.044596881985174405)); +#3292 = DIRECTION('NONE', (-0.1736481776669293, -0.000000000000003074273305541468, -0.9848077530122084)); +#3293 = DIRECTION('NONE', (-0.0000000000000335689481461462, 1, 0.0000000000000027974123455121827)); +#3294 = AXIS2_PLACEMENT_3D('NONE', #3291, #3292, #3293); +#3295 = CYLINDRICAL_SURFACE('NONE', #3294, 0.005080000000000041); +#3296 = CARTESIAN_POINT('NONE', (-0.016175512923103017, 0, -0.0917358923637854)); +#3297 = DIRECTION('NONE', (-0.17364817766693033, 0, -0.9848077530122081)); +#3298 = AXIS2_PLACEMENT_3D('NONE', #3296, #3297, $); +#3299 = PLANE('NONE', #3298); +#3300 = CARTESIAN_POINT('NONE', (-0.24584062792709552, 0.9789162584587682, -0.04930534836542671)); +#3301 = DIRECTION('NONE', (-0.17364817766693036, -0.000000000000000000000000000018932661725304283, -0.984807753012208)); +#3302 = DIRECTION('NONE', (0.984807753012208, -0.000000000000022379298764096664, -0.17364817766693036)); +#3303 = AXIS2_PLACEMENT_3D('NONE', #3300, #3301, #3302); +#3304 = CYLINDRICAL_SURFACE('NONE', #3303, 0.005080000000000222); +#3305 = CARTESIAN_POINT('NONE', (-0.016175512923103017, 0, -0.0917358923637854)); +#3306 = DIRECTION('NONE', (-0.17364817766693033, 0, -0.9848077530122081)); +#3307 = AXIS2_PLACEMENT_3D('NONE', #3305, #3306, $); +#3308 = PLANE('NONE', #3307); +#3309 = CARTESIAN_POINT('NONE', (-0.20202692443374873, 0.9518012812472969, -0.057030886416064464)); +#3310 = DIRECTION('NONE', (-0.17364817766693122, 0.0000000000000014505710209259042, -0.9848077530122079)); +#3311 = DIRECTION('NONE', (-0.000000000000055948246910242407, -1, 0.000000000000008392237036536362)); +#3312 = AXIS2_PLACEMENT_3D('NONE', #3309, #3310, #3311); +#3313 = CYLINDRICAL_SURFACE('NONE', #3312, 0.005080000000000155); +#3314 = CARTESIAN_POINT('NONE', (-0.016175512923103017, 0, -0.0917358923637854)); +#3315 = DIRECTION('NONE', (-0.17364817766693033, 0, -0.9848077530122081)); +#3316 = AXIS2_PLACEMENT_3D('NONE', #3314, #3315, $); +#3317 = PLANE('NONE', #3316); +#3318 = CARTESIAN_POINT('NONE', (-0.21931184144130964, 0.9431139696068247, 0.051118642274909205)); +#3319 = DIRECTION('NONE', (0.17364817766693122, -0.0000000000000005965610316873137, 0.9848077530122079)); +#3320 = DIRECTION('NONE', (0.9848077530122079, 0, -0.17364817766693122)); +#3321 = AXIS2_PLACEMENT_3D('NONE', #3318, #3319, #3320); +#3322 = CYLINDRICAL_SURFACE('NONE', #3321, 0.007619999999999988); +#3323 = CARTESIAN_POINT('NONE', (0.004334073341138135, 0, 0.024579751344486485)); +#3324 = DIRECTION('NONE', (0.1736481776669304, 0, 0.9848077530122081)); +#3325 = AXIS2_PLACEMENT_3D('NONE', #3323, #3324, $); +#3326 = PLANE('NONE', #3325); +#3327 = CARTESIAN_POINT('NONE', (0.04156937276502262, 0.20320000000000005, -0.020225719960550097)); +#3328 = DIRECTION('NONE', (0.17364817766693047, 0.00000000000000009177862025958676, 0.9848077530122081)); +#3329 = DIRECTION('NONE', (0.9848077530122081, 0, -0.17364817766693047)); +#3330 = AXIS2_PLACEMENT_3D('NONE', #3327, #3328, #3329); +#3331 = CYLINDRICAL_SURFACE('NONE', #3330, 0.007620000000000001); +#3332 = CARTESIAN_POINT('NONE', (-0.0044106637127400315, 0, -0.025014116926510087)); +#3333 = DIRECTION('NONE', (0.1736481776669304, 0, 0.9848077530122081)); +#3334 = AXIS2_PLACEMENT_3D('NONE', #3332, #3333, $); +#3335 = PLANE('NONE', #3334); +#3336 = CARTESIAN_POINT('NONE', (0, 0, -0)); +#3337 = DIRECTION('NONE', (0.1736481776669304, 0, 0.9848077530122081)); +#3338 = AXIS2_PLACEMENT_3D('NONE', #3336, #3337, $); +#3339 = PLANE('NONE', #3338); +#3340 = CARTESIAN_POINT('NONE', (0.10069841725450347, 0.14624741459910917, -0.004859929905658829)); +#3341 = DIRECTION('NONE', (0.8528685319524433, -0.5000000000000007, -0.1503837331804354)); +#3342 = AXIS2_PLACEMENT_3D('NONE', #3340, #3341, $); +#3343 = PLANE('NONE', #3342); +#3344 = CARTESIAN_POINT('NONE', (0.04665351127507544, 0.20359482919821825, 0.00466964518836658)); +#3345 = DIRECTION('NONE', (0.17364817766693033, 0.000000000000000013877787807814457, 0.9848077530122079)); +#3346 = DIRECTION('NONE', (0.8528685319524436, -0.4999999999999993, -0.15038373318043538)); +#3347 = AXIS2_PLACEMENT_3D('NONE', #3344, #3345, #3346); +#3348 = CYLINDRICAL_SURFACE('NONE', #3347, 0.07619999999999999); +#3349 = CARTESIAN_POINT('NONE', (-0.05094160772664095, 0.18434741459910917, 0.02187829785382257)); +#3350 = DIRECTION('NONE', (-0.8528685319524433, 0.5000000000000003, 0.15038373318043544)); +#3351 = AXIS2_PLACEMENT_3D('NONE', #3349, #3350, $); +#3352 = PLANE('NONE', #3351); +#3353 = CARTESIAN_POINT('NONE', (0.003103298252787031, 0.12700000000000003, 0.012348722759797173)); +#3354 = DIRECTION('NONE', (0, -1.0000000000000002, 0)); +#3355 = AXIS2_PLACEMENT_3D('NONE', #3353, #3354, $); +#3356 = PLANE('NONE', #3355); +#3357 = CARTESIAN_POINT('NONE', (0, 0, -0)); +#3358 = DIRECTION('NONE', (0.1736481776669304, 0, 0.9848077530122081)); +#3359 = AXIS2_PLACEMENT_3D('NONE', #3357, #3358, $); +#3360 = PLANE('NONE', #3359); +#3361 = CARTESIAN_POINT('NONE', (0.0044106637127400315, 0, 0.025014116926510087)); +#3362 = DIRECTION('NONE', (0.1736481776669304, 0, 0.9848077530122081)); +#3363 = AXIS2_PLACEMENT_3D('NONE', #3361, #3362, $); +#3364 = PLANE('NONE', #3363); +#3365 = CARTESIAN_POINT('NONE', (0.051493366118687704, 0.20319999999999994, 0.036056043124097596)); +#3366 = DIRECTION('NONE', (0.17364817766693041, -0.00000000000000000000000000000001232595164407831, 0.984807753012208)); +#3367 = DIRECTION('NONE', (0.984807753012208, 0.00000000000000040689634116541166, -0.17364817766693041)); +#3368 = AXIS2_PLACEMENT_3D('NONE', #3365, #3366, #3367); +#3369 = CYLINDRICAL_SURFACE('NONE', #3368, 0.06985000000000001); +#3370 = CARTESIAN_POINT('NONE', (0.011026659281850081, 0, 0.06253529231627522)); +#3371 = DIRECTION('NONE', (0.17364817766693041, 0, 0.9848077530122082)); +#3372 = AXIS2_PLACEMENT_3D('NONE', #3370, #3371, $); +#3373 = PLANE('NONE', #3372); +#3374 = CARTESIAN_POINT('NONE', (0.05436029753196871, 0.20319999999999996, 0.052315219126329394)); +#3375 = DIRECTION('NONE', (0.1736481776669342, -0.00000000000000008331938877234348, 0.9848077530122075)); +#3376 = DIRECTION('NONE', (0.9848077530122075, 0, -0.1736481776669342)); +#3377 = AXIS2_PLACEMENT_3D('NONE', #3374, #3375, #3376); +#3378 = TOROIDAL_SURFACE('NONE', #3377, 0.06731000000000002, 0.0025400000000000127); +#3379 = CARTESIAN_POINT('NONE', (0.05524243027451671, 0.17145, 0.0573180425116312)); +#3380 = DIRECTION('NONE', (0.17364817766693164, 0.000000000000000000000000000012818989709841442, 0.984807753012208)); +#3381 = DIRECTION('NONE', (0.984807753012208, 0.000000000000005594824691024388, -0.17364817766693164)); +#3382 = AXIS2_PLACEMENT_3D('NONE', #3379, #3380, #3381); +#3383 = CYLINDRICAL_SURFACE('NONE', #3382, 0.00508000000000002); +#3384 = CARTESIAN_POINT('NONE', (0.011908792024398086, 0, 0.06753811570157724)); +#3385 = DIRECTION('NONE', (0.17364817766693005, 0, 0.9848077530122081)); +#3386 = AXIS2_PLACEMENT_3D('NONE', #3384, #3385, $); +#3387 = PLANE('NONE', #3386); +#3388 = CARTESIAN_POINT('NONE', (0.08651007643265433, 0.20320000000000002, 0.05180471287070617)); +#3389 = DIRECTION('NONE', (0.17364817766693072, 0.0000000000000023489877950785614, 0.984807753012208)); +#3390 = DIRECTION('NONE', (-0.0000000000000055948246910243655, 1, -0.0000000000000013987061727560914)); +#3391 = AXIS2_PLACEMENT_3D('NONE', #3388, #3389, #3390); +#3392 = CYLINDRICAL_SURFACE('NONE', #3391, 0.005080000000000041); +#3393 = CARTESIAN_POINT('NONE', (0.011908792024398086, 0, 0.06753811570157724)); +#3394 = DIRECTION('NONE', (0.17364817766693005, 0, 0.9848077530122081)); +#3395 = AXIS2_PLACEMENT_3D('NONE', #3393, #3394, $); +#3396 = PLANE('NONE', #3395); +#3397 = CARTESIAN_POINT('NONE', (0.05524243027451675, 0.23495000000000002, 0.057318042511631195)); +#3398 = DIRECTION('NONE', (0.17364817766692753, -0.00000000000000024091887818140324, 0.9848077530122085)); +#3399 = DIRECTION('NONE', (-0.9848077530122085, 0.0000000000000055948246910243915, 0.17364817766692753)); +#3400 = AXIS2_PLACEMENT_3D('NONE', #3397, #3398, #3399); +#3401 = CYLINDRICAL_SURFACE('NONE', #3400, 0.005080000000000018); +#3402 = CARTESIAN_POINT('NONE', (0.011908792024398086, 0, 0.06753811570157724)); +#3403 = DIRECTION('NONE', (0.17364817766693005, 0, 0.9848077530122081)); +#3404 = AXIS2_PLACEMENT_3D('NONE', #3402, #3403, $); +#3405 = PLANE('NONE', #3404); +#3406 = CARTESIAN_POINT('NONE', (0.023974784116379082, 0.2032000000000001, 0.06283137215255623)); +#3407 = DIRECTION('NONE', (0.1736481776669296, -0.00000000000000040592557115390834, 0.9848077530122081)); +#3408 = DIRECTION('NONE', (0.0000000000000055948246910243655, -1, -0.0000000000000013987061727560914)); +#3409 = AXIS2_PLACEMENT_3D('NONE', #3406, #3407, #3408); +#3410 = CYLINDRICAL_SURFACE('NONE', #3409, 0.005080000000000041); +#3411 = CARTESIAN_POINT('NONE', (0.011908792024398086, 0, 0.06753811570157724)); +#3412 = DIRECTION('NONE', (0.17364817766693005, 0, 0.9848077530122081)); +#3413 = AXIS2_PLACEMENT_3D('NONE', #3411, #3412, $); +#3414 = PLANE('NONE', #3413); +#3415 = CARTESIAN_POINT('NONE', (0.055132163681698244, 0.20320000000000002, 0.0566926895884684)); +#3416 = DIRECTION('NONE', (0.17364817766693197, -0.0000000000000000991209098803516, 0.9848077530122078)); +#3417 = DIRECTION('NONE', (0.9848077530122078, 0.0000000000000022379298764097703, -0.17364817766693197)); +#3418 = AXIS2_PLACEMENT_3D('NONE', #3415, #3416, #3417); +#3419 = CYLINDRICAL_SURFACE('NONE', #3418, 0.012699999999999967); +#3420 = CARTESIAN_POINT('NONE', (0.011688258838761085, 0, 0.06628740985525172)); +#3421 = DIRECTION('NONE', (0.17364817766693078, 0, 0.9848077530122079)); +#3422 = AXIS2_PLACEMENT_3D('NONE', #3420, #3421, $); +#3423 = PLANE('NONE', #3422); +#3424 = CARTESIAN_POINT('NONE', (0.05502189708887967, 0.20320000000000005, 0.0560673366653056)); +#3425 = DIRECTION('NONE', (0.1736481776669356, -0.000000000000000024853335015735054, 0.984807753012207)); +#3426 = DIRECTION('NONE', (0.984807753012207, 0.000000000000002377181972325718, -0.1736481776669356)); +#3427 = AXIS2_PLACEMENT_3D('NONE', #3424, #3425, #3426); +#3428 = TOROIDAL_SURFACE('NONE', #3427, 0.01015999999999998, 0.0025400000000000843); +#3429 = CARTESIAN_POINT('NONE', (0, 0.10921999999999998, 0)); +#3430 = DIRECTION('NONE', (0, 1, 0)); +#3431 = DIRECTION('NONE', (1, 0, -0)); +#3432 = AXIS2_PLACEMENT_3D('NONE', #3429, #3430, #3431); +#3433 = CYLINDRICAL_SURFACE('NONE', #3432, 0.09906000000000001); +#3434 = CARTESIAN_POINT('NONE', (0, 0.09144, -0)); +#3435 = DIRECTION('NONE', (0, 1, 0)); +#3436 = AXIS2_PLACEMENT_3D('NONE', #3434, #3435, $); +#3437 = PLANE('NONE', #3436); +#3438 = CARTESIAN_POINT('NONE', (0, 0.127, -0)); +#3439 = DIRECTION('NONE', (0, 1, 0)); +#3440 = AXIS2_PLACEMENT_3D('NONE', #3438, #3439, $); +#3441 = PLANE('NONE', #3440); +#3442 = CARTESIAN_POINT('NONE', (0.00000000000000000502429586778808, 0.1244600000000001, -0.00000000000000000502429586778808)); +#3443 = DIRECTION('NONE', (-0, 1, 0)); +#3444 = DIRECTION('NONE', (1, 0, 0.000000000000000051871098946389485)); +#3445 = AXIS2_PLACEMENT_3D('NONE', #3442, #3443, #3444); +#3446 = TOROIDAL_SURFACE('NONE', #3445, 0.09652000000000009, 0.002539999999999907); +#3447 = CARTESIAN_POINT('NONE', (0, 0.006349999999999999, 0.12699999999999997)); +#3448 = DIRECTION('NONE', (0, 0, 1)); +#3449 = AXIS2_PLACEMENT_3D('NONE', #3447, #3448, $); +#3450 = PLANE('NONE', #3449); +#3451 = CARTESIAN_POINT('NONE', (0.127, 0.006349999999999999, -0)); +#3452 = DIRECTION('NONE', (1, 0, 0)); +#3453 = AXIS2_PLACEMENT_3D('NONE', #3451, #3452, $); +#3454 = PLANE('NONE', #3453); +#3455 = CARTESIAN_POINT('NONE', (0.000000000000000014210854715202004, 0.006349999999999999, -0.12699999999999997)); +#3456 = DIRECTION('NONE', (0, -0, -1)); +#3457 = AXIS2_PLACEMENT_3D('NONE', #3455, #3456, $); +#3458 = PLANE('NONE', #3457); +#3459 = CARTESIAN_POINT('NONE', (-0.12699999999999997, 0.006349999999999999, -0)); +#3460 = DIRECTION('NONE', (-1, 0, 0)); +#3461 = AXIS2_PLACEMENT_3D('NONE', #3459, #3460, $); +#3462 = PLANE('NONE', #3461); +#3463 = CARTESIAN_POINT('NONE', (0, 0, -0)); +#3464 = DIRECTION('NONE', (0, 1, 0)); +#3465 = AXIS2_PLACEMENT_3D('NONE', #3463, #3464, $); +#3466 = PLANE('NONE', #3465); +#3467 = CARTESIAN_POINT('NONE', (0, 0.0127, -0)); +#3468 = DIRECTION('NONE', (0, 1, 0)); +#3469 = AXIS2_PLACEMENT_3D('NONE', #3467, #3468, $); +#3470 = PLANE('NONE', #3469); +#3471 = CARTESIAN_POINT('NONE', (0.1016, 0.00635, 0.1016)); +#3472 = DIRECTION('NONE', (-0.7071067811865475, 0.0000000000000015824553914293165, -0.7071067811865475)); +#3473 = AXIS2_PLACEMENT_3D('NONE', #3471, #3472, $); +#3474 = PLANE('NONE', #3473); +#3475 = CARTESIAN_POINT('NONE', (0.10160000000000002, 0.00635, -0.1016)); +#3476 = DIRECTION('NONE', (-0.7071067811865475, 0, 0.7071067811865475)); +#3477 = AXIS2_PLACEMENT_3D('NONE', #3475, #3476, $); +#3478 = PLANE('NONE', #3477); +#3479 = CARTESIAN_POINT('NONE', (-0.1016, 0.00635, -0.1016)); +#3480 = DIRECTION('NONE', (0.7071067811865475, 0, 0.7071067811865475)); +#3481 = AXIS2_PLACEMENT_3D('NONE', #3479, #3480, $); +#3482 = PLANE('NONE', #3481); +#3483 = CARTESIAN_POINT('NONE', (-0.1016, 0.00635, 0.1016)); +#3484 = DIRECTION('NONE', (-0.7071067811865475, -0.0000000000000015824553914293165, 0.7071067811865475)); +#3485 = AXIS2_PLACEMENT_3D('NONE', #3483, #3484, $); +#3486 = PLANE('NONE', #3485); +#3487 = CARTESIAN_POINT('NONE', (0.00000000000000000502429586778808, 0.050800000000000005, -0.00000000000000000502429586778808)); +#3488 = DIRECTION('NONE', (-0, 1, 0)); +#3489 = DIRECTION('NONE', (1, 0, 0.00000000000000004945173098216614)); +#3490 = AXIS2_PLACEMENT_3D('NONE', #3487, #3488, #3489); +#3491 = CYLINDRICAL_SURFACE('NONE', #3490, 0.1016); +#3492 = CARTESIAN_POINT('NONE', (0, 0.0889, -0)); +#3493 = DIRECTION('NONE', (0, 1, 0)); +#3494 = AXIS2_PLACEMENT_3D('NONE', #3492, #3493, $); +#3495 = PLANE('NONE', #3494); +#3496 = CARTESIAN_POINT('NONE', (-0.000000000000000005024295867788081, 0.08635999999999998, 0.00000000000000000502429586778808)); +#3497 = DIRECTION('NONE', (0, 1, 0)); +#3498 = DIRECTION('NONE', (1, 0, -0.00000000000000004981650388649989)); +#3499 = AXIS2_PLACEMENT_3D('NONE', #3496, #3497, #3498); +#3500 = TOROIDAL_SURFACE('NONE', #3499, 0.09905999999999997, 0.0025400000000000205); +#3501 = CARTESIAN_POINT('NONE', (0.00000000000000000062803698347351, 0.10160000000000001, -0.00000000000000000062803698347351)); +#3502 = DIRECTION('NONE', (-0, 1, 0)); +#3503 = DIRECTION('NONE', (1, 0, 0.00000000000000004945173098216614)); +#3504 = AXIS2_PLACEMENT_3D('NONE', #3501, #3502, #3503); +#3505 = CYLINDRICAL_SURFACE('NONE', #3504, 0.0127); +#3506 = CARTESIAN_POINT('NONE', (0, 0.11430000000000001, -0)); +#3507 = DIRECTION('NONE', (0, 1, 0)); +#3508 = AXIS2_PLACEMENT_3D('NONE', #3506, #3507, $); +#3509 = PLANE('NONE', #3508); +#3510 = CARTESIAN_POINT('NONE', (-0.10160000000000001, 0.006349499999999999, 0.0635)); +#3511 = DIRECTION('NONE', (0, 1, 0)); +#3512 = DIRECTION('NONE', (1, 0, -0.0000000000000006993530863780506)); +#3513 = AXIS2_PLACEMENT_3D('NONE', #3510, #3511, #3512); +#3514 = CYLINDRICAL_SURFACE('NONE', #3513, 0.010160000000000011); +#3515 = CARTESIAN_POINT('NONE', (0.06349999999999999, 0.006349499999999999, 0.10160000000000001)); +#3516 = DIRECTION('NONE', (0, 1, 0)); +#3517 = DIRECTION('NONE', (0, 0, -1)); +#3518 = AXIS2_PLACEMENT_3D('NONE', #3515, #3516, #3517); +#3519 = CYLINDRICAL_SURFACE('NONE', #3518, 0.010160000000000011); +#3520 = CARTESIAN_POINT('NONE', (0.10160000000000001, 0.006349499999999999, -0.06349999999999999)); +#3521 = DIRECTION('NONE', (0, 1, -0)); +#3522 = DIRECTION('NONE', (-1, 0, 0.0000000000000006993530863780516)); +#3523 = AXIS2_PLACEMENT_3D('NONE', #3520, #3521, #3522); +#3524 = CYLINDRICAL_SURFACE('NONE', #3523, 0.010159999999999997); +#3525 = CARTESIAN_POINT('NONE', (-0.06349999999999996, 0.006349499999999999, -0.10160000000000002)); +#3526 = DIRECTION('NONE', (0, 1, -0)); +#3527 = DIRECTION('NONE', (-0.0000000000000013987061727561012, 0, 1)); +#3528 = AXIS2_PLACEMENT_3D('NONE', #3525, #3526, #3527); +#3529 = CYLINDRICAL_SURFACE('NONE', #3528, 0.010160000000000011); +#3530 = CARTESIAN_POINT('NONE', (-0.06349999999999999, 0.006349499999999999, 0.1016)); +#3531 = DIRECTION('NONE', (0, 1, 0)); +#3532 = DIRECTION('NONE', (1, 0, -0)); +#3533 = AXIS2_PLACEMENT_3D('NONE', #3530, #3531, #3532); +#3534 = CYLINDRICAL_SURFACE('NONE', #3533, 0.01015999999999999); +#3535 = CARTESIAN_POINT('NONE', (0.10160000000000001, 0.006349499999999999, 0.0635)); +#3536 = DIRECTION('NONE', (0, 1, 0)); +#3537 = DIRECTION('NONE', (-0.0000000000000013987061727561032, 0, -1)); +#3538 = AXIS2_PLACEMENT_3D('NONE', #3535, #3536, #3537); +#3539 = CYLINDRICAL_SURFACE('NONE', #3538, 0.010159999999999997); +#3540 = CARTESIAN_POINT('NONE', (0.06350000000000001, 0.006349499999999999, -0.10159999999999998)); +#3541 = DIRECTION('NONE', (0, 1, -0)); +#3542 = DIRECTION('NONE', (-1, 0, -0)); +#3543 = AXIS2_PLACEMENT_3D('NONE', #3540, #3541, #3542); +#3544 = CYLINDRICAL_SURFACE('NONE', #3543, 0.010159999999999997); +#3545 = CARTESIAN_POINT('NONE', (-0.10159999999999998, 0.006349499999999999, -0.06350000000000001)); +#3546 = DIRECTION('NONE', (-0, 1, 0)); +#3547 = DIRECTION('NONE', (0, 0, 1)); +#3548 = AXIS2_PLACEMENT_3D('NONE', #3545, #3546, #3547); +#3549 = CYLINDRICAL_SURFACE('NONE', #3548, 0.010159999999999997); +#3550 = ORIENTED_EDGE('NONE', *, *, #2680, .T.); +#3551 = ORIENTED_EDGE('NONE', *, *, #2681, .T.); +#3552 = ORIENTED_EDGE('NONE', *, *, #2682, .F.); +#3553 = ORIENTED_EDGE('NONE', *, *, #2683, .F.); +#3554 = EDGE_LOOP('NONE', (#3550, #3551, #3552, #3553)); +#3555 = FACE_BOUND('NONE', #3554, .T.); +#3556 = ADVANCED_FACE('NONE', (#3555), #2935, .T.); +#3557 = ORIENTED_EDGE('NONE', *, *, #2684, .T.); +#3558 = ORIENTED_EDGE('NONE', *, *, #2685, .T.); +#3559 = ORIENTED_EDGE('NONE', *, *, #2686, .F.); +#3560 = ORIENTED_EDGE('NONE', *, *, #2681, .F.); +#3561 = EDGE_LOOP('NONE', (#3557, #3558, #3559, #3560)); +#3562 = FACE_BOUND('NONE', #3561, .T.); +#3563 = ADVANCED_FACE('NONE', (#3562), #2939, .T.); +#3564 = ORIENTED_EDGE('NONE', *, *, #2687, .T.); +#3565 = ORIENTED_EDGE('NONE', *, *, #2688, .T.); +#3566 = ORIENTED_EDGE('NONE', *, *, #2689, .F.); +#3567 = ORIENTED_EDGE('NONE', *, *, #2685, .F.); +#3568 = EDGE_LOOP('NONE', (#3564, #3565, #3566, #3567)); +#3569 = FACE_BOUND('NONE', #3568, .T.); +#3570 = ADVANCED_FACE('NONE', (#3569), #2944, .F.); +#3571 = ORIENTED_EDGE('NONE', *, *, #2690, .T.); +#3572 = ORIENTED_EDGE('NONE', *, *, #2683, .T.); +#3573 = ORIENTED_EDGE('NONE', *, *, #2691, .F.); +#3574 = ORIENTED_EDGE('NONE', *, *, #2688, .F.); +#3575 = EDGE_LOOP('NONE', (#3571, #3572, #3573, #3574)); +#3576 = FACE_BOUND('NONE', #3575, .T.); +#3577 = ADVANCED_FACE('NONE', (#3576), #2948, .T.); +#3578 = ORIENTED_EDGE('NONE', *, *, #2690, .F.); +#3579 = ORIENTED_EDGE('NONE', *, *, #2687, .F.); +#3580 = ORIENTED_EDGE('NONE', *, *, #2684, .F.); +#3581 = ORIENTED_EDGE('NONE', *, *, #2680, .F.); +#3582 = EDGE_LOOP('NONE', (#3578, #3579, #3580, #3581)); +#3583 = FACE_BOUND('NONE', #3582, .T.); +#3584 = ADVANCED_FACE('NONE', (#3583), #2952, .F.); +#3585 = ORIENTED_EDGE('NONE', *, *, #2682, .T.); +#3586 = ORIENTED_EDGE('NONE', *, *, #2686, .T.); +#3587 = ORIENTED_EDGE('NONE', *, *, #2689, .T.); +#3588 = ORIENTED_EDGE('NONE', *, *, #2691, .T.); +#3589 = ORIENTED_EDGE('NONE', *, *, #2692, .F.); +#3590 = EDGE_LOOP('NONE', (#3585, #3586, #3587, #3588)); +#3591 = FACE_BOUND('NONE', #3590, .T.); +#3592 = EDGE_LOOP('NONE', (#3589)); +#3593 = FACE_BOUND('NONE', #3592, .T.); +#3594 = ADVANCED_FACE('NONE', (#3591, #3593), #2956, .T.); +#3595 = ORIENTED_EDGE('NONE', *, *, #2692, .T.); +#3596 = ORIENTED_EDGE('NONE', *, *, #2693, .F.); +#3597 = EDGE_LOOP('NONE', (#3595)); +#3598 = FACE_BOUND('NONE', #3597, .T.); +#3599 = EDGE_LOOP('NONE', (#3596)); +#3600 = FACE_BOUND('NONE', #3599, .T.); +#3601 = ADVANCED_FACE('NONE', (#3598, #3600), #2961, .T.); +#3602 = ORIENTED_EDGE('NONE', *, *, #2695, .F.); +#3603 = ORIENTED_EDGE('NONE', *, *, #2697, .F.); +#3604 = ORIENTED_EDGE('NONE', *, *, #2700, .F.); +#3605 = ORIENTED_EDGE('NONE', *, *, #2703, .F.); +#3606 = ORIENTED_EDGE('NONE', *, *, #2706, .F.); +#3607 = ORIENTED_EDGE('NONE', *, *, #2709, .F.); +#3608 = ORIENTED_EDGE('NONE', *, *, #2712, .F.); +#3609 = ORIENTED_EDGE('NONE', *, *, #2715, .F.); +#3610 = ORIENTED_EDGE('NONE', *, *, #2718, .F.); +#3611 = EDGE_LOOP('NONE', (#3602)); +#3612 = FACE_BOUND('NONE', #3611, .T.); +#3613 = EDGE_LOOP('NONE', (#3603)); +#3614 = FACE_BOUND('NONE', #3613, .T.); +#3615 = EDGE_LOOP('NONE', (#3604)); +#3616 = FACE_BOUND('NONE', #3615, .T.); +#3617 = EDGE_LOOP('NONE', (#3605)); +#3618 = FACE_BOUND('NONE', #3617, .T.); +#3619 = EDGE_LOOP('NONE', (#3606)); +#3620 = FACE_BOUND('NONE', #3619, .T.); +#3621 = EDGE_LOOP('NONE', (#3607)); +#3622 = FACE_BOUND('NONE', #3621, .T.); +#3623 = EDGE_LOOP('NONE', (#3608)); +#3624 = FACE_BOUND('NONE', #3623, .T.); +#3625 = EDGE_LOOP('NONE', (#3609)); +#3626 = FACE_BOUND('NONE', #3625, .T.); +#3627 = EDGE_LOOP('NONE', (#3610)); +#3628 = FACE_BOUND('NONE', #3627, .T.); +#3629 = ADVANCED_FACE('NONE', (#3612, #3614, #3616, #3618, #3620, #3622, #3624, #3626, #3628), #2965, .T.); +#3630 = ORIENTED_EDGE('NONE', *, *, #2693, .T.); +#3631 = ORIENTED_EDGE('NONE', *, *, #2695, .T.); +#3632 = EDGE_LOOP('NONE', (#3630)); +#3633 = FACE_BOUND('NONE', #3632, .T.); +#3634 = EDGE_LOOP('NONE', (#3631)); +#3635 = FACE_BOUND('NONE', #3634, .T.); +#3636 = ADVANCED_FACE('NONE', (#3633, #3635), #2970, .T.); +#3637 = ORIENTED_EDGE('NONE', *, *, #2697, .T.); +#3638 = ORIENTED_EDGE('NONE', *, *, #2699, .F.); +#3639 = EDGE_LOOP('NONE', (#3637)); +#3640 = FACE_BOUND('NONE', #3639, .T.); +#3641 = EDGE_LOOP('NONE', (#3638)); +#3642 = FACE_BOUND('NONE', #3641, .T.); +#3643 = ADVANCED_FACE('NONE', (#3640, #3642), #2975, .T.); +#3644 = ORIENTED_EDGE('NONE', *, *, #2699, .T.); +#3645 = EDGE_LOOP('NONE', (#3644)); +#3646 = FACE_BOUND('NONE', #3645, .T.); +#3647 = ADVANCED_FACE('NONE', (#3646), #2979, .T.); +#3648 = ORIENTED_EDGE('NONE', *, *, #2700, .T.); +#3649 = ORIENTED_EDGE('NONE', *, *, #2702, .F.); +#3650 = EDGE_LOOP('NONE', (#3648)); +#3651 = FACE_BOUND('NONE', #3650, .T.); +#3652 = EDGE_LOOP('NONE', (#3649)); +#3653 = FACE_BOUND('NONE', #3652, .T.); +#3654 = ADVANCED_FACE('NONE', (#3651, #3653), #2984, .T.); +#3655 = ORIENTED_EDGE('NONE', *, *, #2702, .T.); +#3656 = EDGE_LOOP('NONE', (#3655)); +#3657 = FACE_BOUND('NONE', #3656, .T.); +#3658 = ADVANCED_FACE('NONE', (#3657), #2988, .T.); +#3659 = ORIENTED_EDGE('NONE', *, *, #2703, .T.); +#3660 = ORIENTED_EDGE('NONE', *, *, #2705, .F.); +#3661 = EDGE_LOOP('NONE', (#3659)); +#3662 = FACE_BOUND('NONE', #3661, .T.); +#3663 = EDGE_LOOP('NONE', (#3660)); +#3664 = FACE_BOUND('NONE', #3663, .T.); +#3665 = ADVANCED_FACE('NONE', (#3662, #3664), #2993, .T.); +#3666 = ORIENTED_EDGE('NONE', *, *, #2705, .T.); +#3667 = EDGE_LOOP('NONE', (#3666)); +#3668 = FACE_BOUND('NONE', #3667, .T.); +#3669 = ADVANCED_FACE('NONE', (#3668), #2997, .T.); +#3670 = ORIENTED_EDGE('NONE', *, *, #2706, .T.); +#3671 = ORIENTED_EDGE('NONE', *, *, #2708, .F.); +#3672 = EDGE_LOOP('NONE', (#3670)); +#3673 = FACE_BOUND('NONE', #3672, .T.); +#3674 = EDGE_LOOP('NONE', (#3671)); +#3675 = FACE_BOUND('NONE', #3674, .T.); +#3676 = ADVANCED_FACE('NONE', (#3673, #3675), #3002, .T.); +#3677 = ORIENTED_EDGE('NONE', *, *, #2708, .T.); +#3678 = EDGE_LOOP('NONE', (#3677)); +#3679 = FACE_BOUND('NONE', #3678, .T.); +#3680 = ADVANCED_FACE('NONE', (#3679), #3006, .T.); +#3681 = ORIENTED_EDGE('NONE', *, *, #2709, .T.); +#3682 = ORIENTED_EDGE('NONE', *, *, #2711, .F.); +#3683 = EDGE_LOOP('NONE', (#3681)); +#3684 = FACE_BOUND('NONE', #3683, .T.); +#3685 = EDGE_LOOP('NONE', (#3682)); +#3686 = FACE_BOUND('NONE', #3685, .T.); +#3687 = ADVANCED_FACE('NONE', (#3684, #3686), #3011, .T.); +#3688 = ORIENTED_EDGE('NONE', *, *, #2711, .T.); +#3689 = EDGE_LOOP('NONE', (#3688)); +#3690 = FACE_BOUND('NONE', #3689, .T.); +#3691 = ADVANCED_FACE('NONE', (#3690), #3015, .T.); +#3692 = ORIENTED_EDGE('NONE', *, *, #2712, .T.); +#3693 = ORIENTED_EDGE('NONE', *, *, #2714, .F.); +#3694 = EDGE_LOOP('NONE', (#3692)); +#3695 = FACE_BOUND('NONE', #3694, .T.); +#3696 = EDGE_LOOP('NONE', (#3693)); +#3697 = FACE_BOUND('NONE', #3696, .T.); +#3698 = ADVANCED_FACE('NONE', (#3695, #3697), #3020, .T.); +#3699 = ORIENTED_EDGE('NONE', *, *, #2714, .T.); +#3700 = EDGE_LOOP('NONE', (#3699)); +#3701 = FACE_BOUND('NONE', #3700, .T.); +#3702 = ADVANCED_FACE('NONE', (#3701), #3024, .T.); +#3703 = ORIENTED_EDGE('NONE', *, *, #2715, .T.); +#3704 = ORIENTED_EDGE('NONE', *, *, #2717, .F.); +#3705 = EDGE_LOOP('NONE', (#3703)); +#3706 = FACE_BOUND('NONE', #3705, .T.); +#3707 = EDGE_LOOP('NONE', (#3704)); +#3708 = FACE_BOUND('NONE', #3707, .T.); +#3709 = ADVANCED_FACE('NONE', (#3706, #3708), #3029, .T.); +#3710 = ORIENTED_EDGE('NONE', *, *, #2717, .T.); +#3711 = EDGE_LOOP('NONE', (#3710)); +#3712 = FACE_BOUND('NONE', #3711, .T.); +#3713 = ADVANCED_FACE('NONE', (#3712), #3033, .T.); +#3714 = ORIENTED_EDGE('NONE', *, *, #2718, .T.); +#3715 = ORIENTED_EDGE('NONE', *, *, #2720, .F.); +#3716 = EDGE_LOOP('NONE', (#3714)); +#3717 = FACE_BOUND('NONE', #3716, .T.); +#3718 = EDGE_LOOP('NONE', (#3715)); +#3719 = FACE_BOUND('NONE', #3718, .T.); +#3720 = ADVANCED_FACE('NONE', (#3717, #3719), #3038, .T.); +#3721 = ORIENTED_EDGE('NONE', *, *, #2720, .T.); +#3722 = EDGE_LOOP('NONE', (#3721)); +#3723 = FACE_BOUND('NONE', #3722, .T.); +#3724 = ADVANCED_FACE('NONE', (#3723), #3042, .T.); +#3725 = ORIENTED_EDGE('NONE', *, *, #2721, .T.); +#3726 = ORIENTED_EDGE('NONE', *, *, #2723, .F.); +#3727 = EDGE_LOOP('NONE', (#3725)); +#3728 = FACE_BOUND('NONE', #3727, .T.); +#3729 = EDGE_LOOP('NONE', (#3726)); +#3730 = FACE_BOUND('NONE', #3729, .T.); +#3731 = ADVANCED_FACE('NONE', (#3728, #3730), #3047, .T.); +#3732 = ORIENTED_EDGE('NONE', *, *, #2721, .F.); +#3733 = EDGE_LOOP('NONE', (#3732)); +#3734 = FACE_BOUND('NONE', #3733, .T.); +#3735 = ADVANCED_FACE('NONE', (#3734), #3051, .F.); +#3736 = ORIENTED_EDGE('NONE', *, *, #2723, .T.); +#3737 = EDGE_LOOP('NONE', (#3736)); +#3738 = FACE_BOUND('NONE', #3737, .T.); +#3739 = ADVANCED_FACE('NONE', (#3738), #3055, .T.); +#3740 = ORIENTED_EDGE('NONE', *, *, #2724, .T.); +#3741 = ORIENTED_EDGE('NONE', *, *, #2726, .F.); +#3742 = EDGE_LOOP('NONE', (#3740)); +#3743 = FACE_BOUND('NONE', #3742, .T.); +#3744 = EDGE_LOOP('NONE', (#3741)); +#3745 = FACE_BOUND('NONE', #3744, .T.); +#3746 = ADVANCED_FACE('NONE', (#3743, #3745), #3060, .T.); +#3747 = ORIENTED_EDGE('NONE', *, *, #2724, .F.); +#3748 = EDGE_LOOP('NONE', (#3747)); +#3749 = FACE_BOUND('NONE', #3748, .T.); +#3750 = ADVANCED_FACE('NONE', (#3749), #3064, .F.); +#3751 = ORIENTED_EDGE('NONE', *, *, #2726, .T.); +#3752 = EDGE_LOOP('NONE', (#3751)); +#3753 = FACE_BOUND('NONE', #3752, .T.); +#3754 = ADVANCED_FACE('NONE', (#3753), #3068, .T.); +#3755 = ORIENTED_EDGE('NONE', *, *, #2727, .T.); +#3756 = ORIENTED_EDGE('NONE', *, *, #2729, .F.); +#3757 = EDGE_LOOP('NONE', (#3755)); +#3758 = FACE_BOUND('NONE', #3757, .T.); +#3759 = EDGE_LOOP('NONE', (#3756)); +#3760 = FACE_BOUND('NONE', #3759, .T.); +#3761 = ADVANCED_FACE('NONE', (#3758, #3760), #3073, .T.); +#3762 = ORIENTED_EDGE('NONE', *, *, #2727, .F.); +#3763 = EDGE_LOOP('NONE', (#3762)); +#3764 = FACE_BOUND('NONE', #3763, .T.); +#3765 = ADVANCED_FACE('NONE', (#3764), #3077, .F.); +#3766 = ORIENTED_EDGE('NONE', *, *, #2729, .T.); +#3767 = EDGE_LOOP('NONE', (#3766)); +#3768 = FACE_BOUND('NONE', #3767, .T.); +#3769 = ADVANCED_FACE('NONE', (#3768), #3081, .T.); +#3770 = ORIENTED_EDGE('NONE', *, *, #2730, .T.); +#3771 = ORIENTED_EDGE('NONE', *, *, #2731, .T.); +#3772 = ORIENTED_EDGE('NONE', *, *, #2732, .F.); +#3773 = ORIENTED_EDGE('NONE', *, *, #2733, .F.); +#3774 = EDGE_LOOP('NONE', (#3770, #3771, #3772, #3773)); +#3775 = FACE_BOUND('NONE', #3774, .T.); +#3776 = ADVANCED_FACE('NONE', (#3775), #3085, .T.); +#3777 = ORIENTED_EDGE('NONE', *, *, #2734, .T.); +#3778 = ORIENTED_EDGE('NONE', *, *, #2735, .T.); +#3779 = ORIENTED_EDGE('NONE', *, *, #2736, .F.); +#3780 = ORIENTED_EDGE('NONE', *, *, #2731, .F.); +#3781 = EDGE_LOOP('NONE', (#3777, #3778, #3779, #3780)); +#3782 = FACE_BOUND('NONE', #3781, .T.); +#3783 = ADVANCED_FACE('NONE', (#3782), #3090, .F.); +#3784 = ORIENTED_EDGE('NONE', *, *, #2737, .T.); +#3785 = ORIENTED_EDGE('NONE', *, *, #2738, .T.); +#3786 = ORIENTED_EDGE('NONE', *, *, #2739, .F.); +#3787 = ORIENTED_EDGE('NONE', *, *, #2735, .F.); +#3788 = EDGE_LOOP('NONE', (#3784, #3785, #3786, #3787)); +#3789 = FACE_BOUND('NONE', #3788, .T.); +#3790 = ADVANCED_FACE('NONE', (#3789), #3094, .T.); +#3791 = ORIENTED_EDGE('NONE', *, *, #2740, .T.); +#3792 = ORIENTED_EDGE('NONE', *, *, #2741, .T.); +#3793 = ORIENTED_EDGE('NONE', *, *, #2742, .F.); +#3794 = ORIENTED_EDGE('NONE', *, *, #2738, .F.); +#3795 = EDGE_LOOP('NONE', (#3791, #3792, #3793, #3794)); +#3796 = FACE_BOUND('NONE', #3795, .T.); +#3797 = ADVANCED_FACE('NONE', (#3796), #3098, .T.); +#3798 = ORIENTED_EDGE('NONE', *, *, #2743, .T.); +#3799 = ORIENTED_EDGE('NONE', *, *, #2744, .T.); +#3800 = ORIENTED_EDGE('NONE', *, *, #2745, .F.); +#3801 = ORIENTED_EDGE('NONE', *, *, #2741, .F.); +#3802 = EDGE_LOOP('NONE', (#3798, #3799, #3800, #3801)); +#3803 = FACE_BOUND('NONE', #3802, .T.); +#3804 = ADVANCED_FACE('NONE', (#3803), #3102, .T.); +#3805 = ORIENTED_EDGE('NONE', *, *, #2746, .T.); +#3806 = ORIENTED_EDGE('NONE', *, *, #2747, .T.); +#3807 = ORIENTED_EDGE('NONE', *, *, #2748, .F.); +#3808 = ORIENTED_EDGE('NONE', *, *, #2744, .F.); +#3809 = EDGE_LOOP('NONE', (#3805, #3806, #3807, #3808)); +#3810 = FACE_BOUND('NONE', #3809, .T.); +#3811 = ADVANCED_FACE('NONE', (#3810), #3106, .T.); +#3812 = ORIENTED_EDGE('NONE', *, *, #2749, .T.); +#3813 = ORIENTED_EDGE('NONE', *, *, #2733, .T.); +#3814 = ORIENTED_EDGE('NONE', *, *, #2750, .F.); +#3815 = ORIENTED_EDGE('NONE', *, *, #2747, .F.); +#3816 = EDGE_LOOP('NONE', (#3812, #3813, #3814, #3815)); +#3817 = FACE_BOUND('NONE', #3816, .T.); +#3818 = ADVANCED_FACE('NONE', (#3817), #3110, .T.); +#3819 = ORIENTED_EDGE('NONE', *, *, #2749, .F.); +#3820 = ORIENTED_EDGE('NONE', *, *, #2746, .F.); +#3821 = ORIENTED_EDGE('NONE', *, *, #2743, .F.); +#3822 = ORIENTED_EDGE('NONE', *, *, #2740, .F.); +#3823 = ORIENTED_EDGE('NONE', *, *, #2737, .F.); +#3824 = ORIENTED_EDGE('NONE', *, *, #2734, .F.); +#3825 = ORIENTED_EDGE('NONE', *, *, #2730, .F.); +#3826 = EDGE_LOOP('NONE', (#3819, #3820, #3821, #3822, #3823, #3824, #3825)); +#3827 = FACE_BOUND('NONE', #3826, .T.); +#3828 = ADVANCED_FACE('NONE', (#3827), #3114, .F.); +#3829 = ORIENTED_EDGE('NONE', *, *, #2732, .T.); +#3830 = ORIENTED_EDGE('NONE', *, *, #2736, .T.); +#3831 = ORIENTED_EDGE('NONE', *, *, #2739, .T.); +#3832 = ORIENTED_EDGE('NONE', *, *, #2742, .T.); +#3833 = ORIENTED_EDGE('NONE', *, *, #2745, .T.); +#3834 = ORIENTED_EDGE('NONE', *, *, #2748, .T.); +#3835 = ORIENTED_EDGE('NONE', *, *, #2750, .T.); +#3836 = EDGE_LOOP('NONE', (#3829, #3830, #3831, #3832, #3833, #3834, #3835)); +#3837 = FACE_BOUND('NONE', #3836, .T.); +#3838 = ADVANCED_FACE('NONE', (#3837), #3118, .T.); +#3839 = ORIENTED_EDGE('NONE', *, *, #2751, .T.); +#3840 = ORIENTED_EDGE('NONE', *, *, #2752, .T.); +#3841 = ORIENTED_EDGE('NONE', *, *, #2753, .F.); +#3842 = ORIENTED_EDGE('NONE', *, *, #2754, .F.); +#3843 = EDGE_LOOP('NONE', (#3839, #3840, #3841, #3842)); +#3844 = FACE_BOUND('NONE', #3843, .T.); +#3845 = ADVANCED_FACE('NONE', (#3844), #3122, .T.); +#3846 = ORIENTED_EDGE('NONE', *, *, #2755, .T.); +#3847 = ORIENTED_EDGE('NONE', *, *, #2756, .T.); +#3848 = ORIENTED_EDGE('NONE', *, *, #2757, .F.); +#3849 = ORIENTED_EDGE('NONE', *, *, #2752, .F.); +#3850 = EDGE_LOOP('NONE', (#3846, #3847, #3848, #3849)); +#3851 = FACE_BOUND('NONE', #3850, .T.); +#3852 = ADVANCED_FACE('NONE', (#3851), #3126, .T.); +#3853 = ORIENTED_EDGE('NONE', *, *, #2758, .T.); +#3854 = ORIENTED_EDGE('NONE', *, *, #2759, .T.); +#3855 = ORIENTED_EDGE('NONE', *, *, #2760, .F.); +#3856 = ORIENTED_EDGE('NONE', *, *, #2756, .F.); +#3857 = EDGE_LOOP('NONE', (#3853, #3854, #3855, #3856)); +#3858 = FACE_BOUND('NONE', #3857, .T.); +#3859 = ADVANCED_FACE('NONE', (#3858), #3130, .T.); +#3860 = ORIENTED_EDGE('NONE', *, *, #2761, .T.); +#3861 = ORIENTED_EDGE('NONE', *, *, #2762, .T.); +#3862 = ORIENTED_EDGE('NONE', *, *, #2763, .F.); +#3863 = ORIENTED_EDGE('NONE', *, *, #2759, .F.); +#3864 = EDGE_LOOP('NONE', (#3860, #3861, #3862, #3863)); +#3865 = FACE_BOUND('NONE', #3864, .T.); +#3866 = ADVANCED_FACE('NONE', (#3865), #3134, .T.); +#3867 = ORIENTED_EDGE('NONE', *, *, #2764, .T.); +#3868 = ORIENTED_EDGE('NONE', *, *, #2765, .T.); +#3869 = ORIENTED_EDGE('NONE', *, *, #2766, .F.); +#3870 = ORIENTED_EDGE('NONE', *, *, #2762, .F.); +#3871 = EDGE_LOOP('NONE', (#3867, #3868, #3869, #3870)); +#3872 = FACE_BOUND('NONE', #3871, .T.); +#3873 = ADVANCED_FACE('NONE', (#3872), #3138, .T.); +#3874 = ORIENTED_EDGE('NONE', *, *, #2767, .T.); +#3875 = ORIENTED_EDGE('NONE', *, *, #2768, .T.); +#3876 = ORIENTED_EDGE('NONE', *, *, #2769, .F.); +#3877 = ORIENTED_EDGE('NONE', *, *, #2765, .F.); +#3878 = EDGE_LOOP('NONE', (#3874, #3875, #3876, #3877)); +#3879 = FACE_BOUND('NONE', #3878, .T.); +#3880 = ADVANCED_FACE('NONE', (#3879), #3143, .F.); +#3881 = ORIENTED_EDGE('NONE', *, *, #2770, .T.); +#3882 = ORIENTED_EDGE('NONE', *, *, #2754, .T.); +#3883 = ORIENTED_EDGE('NONE', *, *, #2771, .F.); +#3884 = ORIENTED_EDGE('NONE', *, *, #2768, .F.); +#3885 = EDGE_LOOP('NONE', (#3881, #3882, #3883, #3884)); +#3886 = FACE_BOUND('NONE', #3885, .T.); +#3887 = ADVANCED_FACE('NONE', (#3886), #3147, .T.); +#3888 = ORIENTED_EDGE('NONE', *, *, #2770, .F.); +#3889 = ORIENTED_EDGE('NONE', *, *, #2767, .F.); +#3890 = ORIENTED_EDGE('NONE', *, *, #2764, .F.); +#3891 = ORIENTED_EDGE('NONE', *, *, #2761, .F.); +#3892 = ORIENTED_EDGE('NONE', *, *, #2758, .F.); +#3893 = ORIENTED_EDGE('NONE', *, *, #2755, .F.); +#3894 = ORIENTED_EDGE('NONE', *, *, #2751, .F.); +#3895 = EDGE_LOOP('NONE', (#3888, #3889, #3890, #3891, #3892, #3893, #3894)); +#3896 = FACE_BOUND('NONE', #3895, .T.); +#3897 = ADVANCED_FACE('NONE', (#3896), #3151, .F.); +#3898 = ORIENTED_EDGE('NONE', *, *, #2753, .T.); +#3899 = ORIENTED_EDGE('NONE', *, *, #2757, .T.); +#3900 = ORIENTED_EDGE('NONE', *, *, #2760, .T.); +#3901 = ORIENTED_EDGE('NONE', *, *, #2763, .T.); +#3902 = ORIENTED_EDGE('NONE', *, *, #2766, .T.); +#3903 = ORIENTED_EDGE('NONE', *, *, #2769, .T.); +#3904 = ORIENTED_EDGE('NONE', *, *, #2771, .T.); +#3905 = EDGE_LOOP('NONE', (#3898, #3899, #3900, #3901, #3902, #3903, #3904)); +#3906 = FACE_BOUND('NONE', #3905, .T.); +#3907 = ADVANCED_FACE('NONE', (#3906), #3155, .T.); +#3908 = ORIENTED_EDGE('NONE', *, *, #2772, .T.); +#3909 = ORIENTED_EDGE('NONE', *, *, #2773, .T.); +#3910 = ORIENTED_EDGE('NONE', *, *, #2774, .F.); +#3911 = ORIENTED_EDGE('NONE', *, *, #2775, .F.); +#3912 = EDGE_LOOP('NONE', (#3908, #3909, #3910, #3911)); +#3913 = FACE_BOUND('NONE', #3912, .T.); +#3914 = ADVANCED_FACE('NONE', (#3913), #3160, .T.); +#3915 = ORIENTED_EDGE('NONE', *, *, #2776, .T.); +#3916 = ORIENTED_EDGE('NONE', *, *, #2777, .T.); +#3917 = ORIENTED_EDGE('NONE', *, *, #2778, .F.); +#3918 = ORIENTED_EDGE('NONE', *, *, #2773, .F.); +#3919 = EDGE_LOOP('NONE', (#3915, #3916, #3917, #3918)); +#3920 = FACE_BOUND('NONE', #3919, .T.); +#3921 = ADVANCED_FACE('NONE', (#3920), #3164, .T.); +#3922 = ORIENTED_EDGE('NONE', *, *, #2779, .T.); +#3923 = ORIENTED_EDGE('NONE', *, *, #2780, .T.); +#3924 = ORIENTED_EDGE('NONE', *, *, #2781, .F.); +#3925 = ORIENTED_EDGE('NONE', *, *, #2777, .F.); +#3926 = EDGE_LOOP('NONE', (#3922, #3923, #3924, #3925)); +#3927 = FACE_BOUND('NONE', #3926, .T.); +#3928 = ADVANCED_FACE('NONE', (#3927), #3169, .T.); +#3929 = ORIENTED_EDGE('NONE', *, *, #2782, .T.); +#3930 = ORIENTED_EDGE('NONE', *, *, #2775, .T.); +#3931 = ORIENTED_EDGE('NONE', *, *, #2783, .F.); +#3932 = ORIENTED_EDGE('NONE', *, *, #2780, .F.); +#3933 = EDGE_LOOP('NONE', (#3929, #3930, #3931, #3932)); +#3934 = FACE_BOUND('NONE', #3933, .T.); +#3935 = ADVANCED_FACE('NONE', (#3934), #3173, .T.); +#3936 = ORIENTED_EDGE('NONE', *, *, #2782, .F.); +#3937 = ORIENTED_EDGE('NONE', *, *, #2779, .F.); +#3938 = ORIENTED_EDGE('NONE', *, *, #2776, .F.); +#3939 = ORIENTED_EDGE('NONE', *, *, #2772, .F.); +#3940 = ORIENTED_EDGE('NONE', *, *, #2784, .F.); +#3941 = ORIENTED_EDGE('NONE', *, *, #2789, .F.); +#3942 = EDGE_LOOP('NONE', (#3936, #3937, #3938, #3939)); +#3943 = FACE_BOUND('NONE', #3942, .T.); +#3944 = EDGE_LOOP('NONE', (#3940)); +#3945 = FACE_BOUND('NONE', #3944, .T.); +#3946 = EDGE_LOOP('NONE', (#3941)); +#3947 = FACE_BOUND('NONE', #3946, .T.); +#3948 = ADVANCED_FACE('NONE', (#3943, #3945, #3947), #3177, .F.); +#3949 = ORIENTED_EDGE('NONE', *, *, #2774, .T.); +#3950 = ORIENTED_EDGE('NONE', *, *, #2778, .T.); +#3951 = ORIENTED_EDGE('NONE', *, *, #2781, .T.); +#3952 = ORIENTED_EDGE('NONE', *, *, #2783, .T.); +#3953 = ORIENTED_EDGE('NONE', *, *, #2830, .F.); +#3954 = EDGE_LOOP('NONE', (#3949, #3950, #3951, #3952)); +#3955 = FACE_BOUND('NONE', #3954, .T.); +#3956 = EDGE_LOOP('NONE', (#3953)); +#3957 = FACE_BOUND('NONE', #3956, .T.); +#3958 = ADVANCED_FACE('NONE', (#3955, #3957), #3181, .T.); +#3959 = ORIENTED_EDGE('NONE', *, *, #2784, .T.); +#3960 = ORIENTED_EDGE('NONE', *, *, #2785, .F.); +#3961 = EDGE_LOOP('NONE', (#3959)); +#3962 = FACE_BOUND('NONE', #3961, .T.); +#3963 = EDGE_LOOP('NONE', (#3960)); +#3964 = FACE_BOUND('NONE', #3963, .T.); +#3965 = ADVANCED_FACE('NONE', (#3962, #3964), #3186, .T.); +#3966 = ORIENTED_EDGE('NONE', *, *, #2787, .F.); +#3967 = ORIENTED_EDGE('NONE', *, *, #2794, .F.); +#3968 = ORIENTED_EDGE('NONE', *, *, #2797, .F.); +#3969 = ORIENTED_EDGE('NONE', *, *, #2800, .F.); +#3970 = ORIENTED_EDGE('NONE', *, *, #2803, .F.); +#3971 = ORIENTED_EDGE('NONE', *, *, #2806, .F.); +#3972 = ORIENTED_EDGE('NONE', *, *, #2809, .F.); +#3973 = ORIENTED_EDGE('NONE', *, *, #2812, .F.); +#3974 = ORIENTED_EDGE('NONE', *, *, #2815, .F.); +#3975 = EDGE_LOOP('NONE', (#3966)); +#3976 = FACE_BOUND('NONE', #3975, .T.); +#3977 = EDGE_LOOP('NONE', (#3967)); +#3978 = FACE_BOUND('NONE', #3977, .T.); +#3979 = EDGE_LOOP('NONE', (#3968)); +#3980 = FACE_BOUND('NONE', #3979, .T.); +#3981 = EDGE_LOOP('NONE', (#3969)); +#3982 = FACE_BOUND('NONE', #3981, .T.); +#3983 = EDGE_LOOP('NONE', (#3970)); +#3984 = FACE_BOUND('NONE', #3983, .T.); +#3985 = EDGE_LOOP('NONE', (#3971)); +#3986 = FACE_BOUND('NONE', #3985, .T.); +#3987 = EDGE_LOOP('NONE', (#3972)); +#3988 = FACE_BOUND('NONE', #3987, .T.); +#3989 = EDGE_LOOP('NONE', (#3973)); +#3990 = FACE_BOUND('NONE', #3989, .T.); +#3991 = EDGE_LOOP('NONE', (#3974)); +#3992 = FACE_BOUND('NONE', #3991, .T.); +#3993 = ADVANCED_FACE('NONE', (#3976, #3978, #3980, #3982, #3984, #3986, #3988, #3990, #3992), #3190, .T.); +#3994 = ORIENTED_EDGE('NONE', *, *, #2785, .T.); +#3995 = ORIENTED_EDGE('NONE', *, *, #2787, .T.); +#3996 = EDGE_LOOP('NONE', (#3994)); +#3997 = FACE_BOUND('NONE', #3996, .T.); +#3998 = EDGE_LOOP('NONE', (#3995)); +#3999 = FACE_BOUND('NONE', #3998, .T.); +#4000 = ADVANCED_FACE('NONE', (#3997, #3999), #3195, .T.); +#4001 = ORIENTED_EDGE('NONE', *, *, #2789, .T.); +#4002 = ORIENTED_EDGE('NONE', *, *, #2790, .F.); +#4003 = EDGE_LOOP('NONE', (#4001)); +#4004 = FACE_BOUND('NONE', #4003, .T.); +#4005 = EDGE_LOOP('NONE', (#4002)); +#4006 = FACE_BOUND('NONE', #4005, .T.); +#4007 = ADVANCED_FACE('NONE', (#4004, #4006), #3200, .T.); +#4008 = ORIENTED_EDGE('NONE', *, *, #2792, .F.); +#4009 = ORIENTED_EDGE('NONE', *, *, #2818, .F.); +#4010 = ORIENTED_EDGE('NONE', *, *, #2821, .F.); +#4011 = ORIENTED_EDGE('NONE', *, *, #2824, .F.); +#4012 = ORIENTED_EDGE('NONE', *, *, #2827, .F.); +#4013 = EDGE_LOOP('NONE', (#4008)); +#4014 = FACE_BOUND('NONE', #4013, .T.); +#4015 = EDGE_LOOP('NONE', (#4009)); +#4016 = FACE_BOUND('NONE', #4015, .T.); +#4017 = EDGE_LOOP('NONE', (#4010)); +#4018 = FACE_BOUND('NONE', #4017, .T.); +#4019 = EDGE_LOOP('NONE', (#4011)); +#4020 = FACE_BOUND('NONE', #4019, .T.); +#4021 = EDGE_LOOP('NONE', (#4012)); +#4022 = FACE_BOUND('NONE', #4021, .T.); +#4023 = ADVANCED_FACE('NONE', (#4014, #4016, #4018, #4020, #4022), #3204, .T.); +#4024 = ORIENTED_EDGE('NONE', *, *, #2790, .T.); +#4025 = ORIENTED_EDGE('NONE', *, *, #2792, .T.); +#4026 = EDGE_LOOP('NONE', (#4024)); +#4027 = FACE_BOUND('NONE', #4026, .T.); +#4028 = EDGE_LOOP('NONE', (#4025)); +#4029 = FACE_BOUND('NONE', #4028, .T.); +#4030 = ADVANCED_FACE('NONE', (#4027, #4029), #3209, .T.); +#4031 = ORIENTED_EDGE('NONE', *, *, #2794, .T.); +#4032 = ORIENTED_EDGE('NONE', *, *, #2796, .F.); +#4033 = EDGE_LOOP('NONE', (#4031)); +#4034 = FACE_BOUND('NONE', #4033, .T.); +#4035 = EDGE_LOOP('NONE', (#4032)); +#4036 = FACE_BOUND('NONE', #4035, .T.); +#4037 = ADVANCED_FACE('NONE', (#4034, #4036), #3214, .T.); +#4038 = ORIENTED_EDGE('NONE', *, *, #2796, .T.); +#4039 = EDGE_LOOP('NONE', (#4038)); +#4040 = FACE_BOUND('NONE', #4039, .T.); +#4041 = ADVANCED_FACE('NONE', (#4040), #3218, .T.); +#4042 = ORIENTED_EDGE('NONE', *, *, #2797, .T.); +#4043 = ORIENTED_EDGE('NONE', *, *, #2799, .F.); +#4044 = EDGE_LOOP('NONE', (#4042)); +#4045 = FACE_BOUND('NONE', #4044, .T.); +#4046 = EDGE_LOOP('NONE', (#4043)); +#4047 = FACE_BOUND('NONE', #4046, .T.); +#4048 = ADVANCED_FACE('NONE', (#4045, #4047), #3223, .T.); +#4049 = ORIENTED_EDGE('NONE', *, *, #2799, .T.); +#4050 = EDGE_LOOP('NONE', (#4049)); +#4051 = FACE_BOUND('NONE', #4050, .T.); +#4052 = ADVANCED_FACE('NONE', (#4051), #3227, .T.); +#4053 = ORIENTED_EDGE('NONE', *, *, #2800, .T.); +#4054 = ORIENTED_EDGE('NONE', *, *, #2802, .F.); +#4055 = EDGE_LOOP('NONE', (#4053)); +#4056 = FACE_BOUND('NONE', #4055, .T.); +#4057 = EDGE_LOOP('NONE', (#4054)); +#4058 = FACE_BOUND('NONE', #4057, .T.); +#4059 = ADVANCED_FACE('NONE', (#4056, #4058), #3232, .T.); +#4060 = ORIENTED_EDGE('NONE', *, *, #2802, .T.); +#4061 = EDGE_LOOP('NONE', (#4060)); +#4062 = FACE_BOUND('NONE', #4061, .T.); +#4063 = ADVANCED_FACE('NONE', (#4062), #3236, .T.); +#4064 = ORIENTED_EDGE('NONE', *, *, #2803, .T.); +#4065 = ORIENTED_EDGE('NONE', *, *, #2805, .F.); +#4066 = EDGE_LOOP('NONE', (#4064)); +#4067 = FACE_BOUND('NONE', #4066, .T.); +#4068 = EDGE_LOOP('NONE', (#4065)); +#4069 = FACE_BOUND('NONE', #4068, .T.); +#4070 = ADVANCED_FACE('NONE', (#4067, #4069), #3241, .T.); +#4071 = ORIENTED_EDGE('NONE', *, *, #2805, .T.); +#4072 = EDGE_LOOP('NONE', (#4071)); +#4073 = FACE_BOUND('NONE', #4072, .T.); +#4074 = ADVANCED_FACE('NONE', (#4073), #3245, .T.); +#4075 = ORIENTED_EDGE('NONE', *, *, #2806, .T.); +#4076 = ORIENTED_EDGE('NONE', *, *, #2808, .F.); +#4077 = EDGE_LOOP('NONE', (#4075)); +#4078 = FACE_BOUND('NONE', #4077, .T.); +#4079 = EDGE_LOOP('NONE', (#4076)); +#4080 = FACE_BOUND('NONE', #4079, .T.); +#4081 = ADVANCED_FACE('NONE', (#4078, #4080), #3250, .T.); +#4082 = ORIENTED_EDGE('NONE', *, *, #2808, .T.); +#4083 = EDGE_LOOP('NONE', (#4082)); +#4084 = FACE_BOUND('NONE', #4083, .T.); +#4085 = ADVANCED_FACE('NONE', (#4084), #3254, .T.); +#4086 = ORIENTED_EDGE('NONE', *, *, #2809, .T.); +#4087 = ORIENTED_EDGE('NONE', *, *, #2811, .F.); +#4088 = EDGE_LOOP('NONE', (#4086)); +#4089 = FACE_BOUND('NONE', #4088, .T.); +#4090 = EDGE_LOOP('NONE', (#4087)); +#4091 = FACE_BOUND('NONE', #4090, .T.); +#4092 = ADVANCED_FACE('NONE', (#4089, #4091), #3259, .T.); +#4093 = ORIENTED_EDGE('NONE', *, *, #2811, .T.); +#4094 = EDGE_LOOP('NONE', (#4093)); +#4095 = FACE_BOUND('NONE', #4094, .T.); +#4096 = ADVANCED_FACE('NONE', (#4095), #3263, .T.); +#4097 = ORIENTED_EDGE('NONE', *, *, #2812, .T.); +#4098 = ORIENTED_EDGE('NONE', *, *, #2814, .F.); +#4099 = EDGE_LOOP('NONE', (#4097)); +#4100 = FACE_BOUND('NONE', #4099, .T.); +#4101 = EDGE_LOOP('NONE', (#4098)); +#4102 = FACE_BOUND('NONE', #4101, .T.); +#4103 = ADVANCED_FACE('NONE', (#4100, #4102), #3268, .T.); +#4104 = ORIENTED_EDGE('NONE', *, *, #2814, .T.); +#4105 = EDGE_LOOP('NONE', (#4104)); +#4106 = FACE_BOUND('NONE', #4105, .T.); +#4107 = ADVANCED_FACE('NONE', (#4106), #3272, .T.); +#4108 = ORIENTED_EDGE('NONE', *, *, #2815, .T.); +#4109 = ORIENTED_EDGE('NONE', *, *, #2817, .F.); +#4110 = EDGE_LOOP('NONE', (#4108)); +#4111 = FACE_BOUND('NONE', #4110, .T.); +#4112 = EDGE_LOOP('NONE', (#4109)); +#4113 = FACE_BOUND('NONE', #4112, .T.); +#4114 = ADVANCED_FACE('NONE', (#4111, #4113), #3277, .T.); +#4115 = ORIENTED_EDGE('NONE', *, *, #2817, .T.); +#4116 = EDGE_LOOP('NONE', (#4115)); +#4117 = FACE_BOUND('NONE', #4116, .T.); +#4118 = ADVANCED_FACE('NONE', (#4117), #3281, .T.); +#4119 = ORIENTED_EDGE('NONE', *, *, #2818, .T.); +#4120 = ORIENTED_EDGE('NONE', *, *, #2820, .F.); +#4121 = EDGE_LOOP('NONE', (#4119)); +#4122 = FACE_BOUND('NONE', #4121, .T.); +#4123 = EDGE_LOOP('NONE', (#4120)); +#4124 = FACE_BOUND('NONE', #4123, .T.); +#4125 = ADVANCED_FACE('NONE', (#4122, #4124), #3286, .T.); +#4126 = ORIENTED_EDGE('NONE', *, *, #2820, .T.); +#4127 = EDGE_LOOP('NONE', (#4126)); +#4128 = FACE_BOUND('NONE', #4127, .T.); +#4129 = ADVANCED_FACE('NONE', (#4128), #3290, .T.); +#4130 = ORIENTED_EDGE('NONE', *, *, #2821, .T.); +#4131 = ORIENTED_EDGE('NONE', *, *, #2823, .F.); +#4132 = EDGE_LOOP('NONE', (#4130)); +#4133 = FACE_BOUND('NONE', #4132, .T.); +#4134 = EDGE_LOOP('NONE', (#4131)); +#4135 = FACE_BOUND('NONE', #4134, .T.); +#4136 = ADVANCED_FACE('NONE', (#4133, #4135), #3295, .T.); +#4137 = ORIENTED_EDGE('NONE', *, *, #2823, .T.); +#4138 = EDGE_LOOP('NONE', (#4137)); +#4139 = FACE_BOUND('NONE', #4138, .T.); +#4140 = ADVANCED_FACE('NONE', (#4139), #3299, .T.); +#4141 = ORIENTED_EDGE('NONE', *, *, #2824, .T.); +#4142 = ORIENTED_EDGE('NONE', *, *, #2826, .F.); +#4143 = EDGE_LOOP('NONE', (#4141)); +#4144 = FACE_BOUND('NONE', #4143, .T.); +#4145 = EDGE_LOOP('NONE', (#4142)); +#4146 = FACE_BOUND('NONE', #4145, .T.); +#4147 = ADVANCED_FACE('NONE', (#4144, #4146), #3304, .T.); +#4148 = ORIENTED_EDGE('NONE', *, *, #2826, .T.); +#4149 = EDGE_LOOP('NONE', (#4148)); +#4150 = FACE_BOUND('NONE', #4149, .T.); +#4151 = ADVANCED_FACE('NONE', (#4150), #3308, .T.); +#4152 = ORIENTED_EDGE('NONE', *, *, #2827, .T.); +#4153 = ORIENTED_EDGE('NONE', *, *, #2829, .F.); +#4154 = EDGE_LOOP('NONE', (#4152)); +#4155 = FACE_BOUND('NONE', #4154, .T.); +#4156 = EDGE_LOOP('NONE', (#4153)); +#4157 = FACE_BOUND('NONE', #4156, .T.); +#4158 = ADVANCED_FACE('NONE', (#4155, #4157), #3313, .T.); +#4159 = ORIENTED_EDGE('NONE', *, *, #2829, .T.); +#4160 = EDGE_LOOP('NONE', (#4159)); +#4161 = FACE_BOUND('NONE', #4160, .T.); +#4162 = ADVANCED_FACE('NONE', (#4161), #3317, .T.); +#4163 = ORIENTED_EDGE('NONE', *, *, #2830, .T.); +#4164 = ORIENTED_EDGE('NONE', *, *, #2832, .F.); +#4165 = EDGE_LOOP('NONE', (#4163)); +#4166 = FACE_BOUND('NONE', #4165, .T.); +#4167 = EDGE_LOOP('NONE', (#4164)); +#4168 = FACE_BOUND('NONE', #4167, .T.); +#4169 = ADVANCED_FACE('NONE', (#4166, #4168), #3322, .T.); +#4170 = ORIENTED_EDGE('NONE', *, *, #2832, .T.); +#4171 = EDGE_LOOP('NONE', (#4170)); +#4172 = FACE_BOUND('NONE', #4171, .T.); +#4173 = ADVANCED_FACE('NONE', (#4172), #3326, .T.); +#4174 = ORIENTED_EDGE('NONE', *, *, #2833, .T.); +#4175 = ORIENTED_EDGE('NONE', *, *, #2835, .F.); +#4176 = EDGE_LOOP('NONE', (#4174)); +#4177 = FACE_BOUND('NONE', #4176, .T.); +#4178 = EDGE_LOOP('NONE', (#4175)); +#4179 = FACE_BOUND('NONE', #4178, .T.); +#4180 = ADVANCED_FACE('NONE', (#4177, #4179), #3331, .T.); +#4181 = ORIENTED_EDGE('NONE', *, *, #2833, .F.); +#4182 = EDGE_LOOP('NONE', (#4181)); +#4183 = FACE_BOUND('NONE', #4182, .T.); +#4184 = ADVANCED_FACE('NONE', (#4183), #3335, .F.); +#4185 = ORIENTED_EDGE('NONE', *, *, #2835, .T.); +#4186 = EDGE_LOOP('NONE', (#4185)); +#4187 = FACE_BOUND('NONE', #4186, .T.); +#4188 = ADVANCED_FACE('NONE', (#4187), #3339, .T.); +#4189 = ORIENTED_EDGE('NONE', *, *, #2836, .T.); +#4190 = ORIENTED_EDGE('NONE', *, *, #2837, .T.); +#4191 = ORIENTED_EDGE('NONE', *, *, #2838, .F.); +#4192 = ORIENTED_EDGE('NONE', *, *, #2839, .F.); +#4193 = EDGE_LOOP('NONE', (#4189, #4190, #4191, #4192)); +#4194 = FACE_BOUND('NONE', #4193, .T.); +#4195 = ADVANCED_FACE('NONE', (#4194), #3343, .T.); +#4196 = ORIENTED_EDGE('NONE', *, *, #2840, .T.); +#4197 = ORIENTED_EDGE('NONE', *, *, #2841, .T.); +#4198 = ORIENTED_EDGE('NONE', *, *, #2842, .F.); +#4199 = ORIENTED_EDGE('NONE', *, *, #2837, .F.); +#4200 = EDGE_LOOP('NONE', (#4196, #4197, #4198, #4199)); +#4201 = FACE_BOUND('NONE', #4200, .T.); +#4202 = ADVANCED_FACE('NONE', (#4201), #3348, .T.); +#4203 = ORIENTED_EDGE('NONE', *, *, #2843, .T.); +#4204 = ORIENTED_EDGE('NONE', *, *, #2844, .T.); +#4205 = ORIENTED_EDGE('NONE', *, *, #2845, .F.); +#4206 = ORIENTED_EDGE('NONE', *, *, #2841, .F.); +#4207 = EDGE_LOOP('NONE', (#4203, #4204, #4205, #4206)); +#4208 = FACE_BOUND('NONE', #4207, .T.); +#4209 = ADVANCED_FACE('NONE', (#4208), #3352, .T.); +#4210 = ORIENTED_EDGE('NONE', *, *, #2846, .T.); +#4211 = ORIENTED_EDGE('NONE', *, *, #2839, .T.); +#4212 = ORIENTED_EDGE('NONE', *, *, #2847, .F.); +#4213 = ORIENTED_EDGE('NONE', *, *, #2844, .F.); +#4214 = EDGE_LOOP('NONE', (#4210, #4211, #4212, #4213)); +#4215 = FACE_BOUND('NONE', #4214, .T.); +#4216 = ADVANCED_FACE('NONE', (#4215), #3356, .T.); +#4217 = ORIENTED_EDGE('NONE', *, *, #2846, .F.); +#4218 = ORIENTED_EDGE('NONE', *, *, #2843, .F.); +#4219 = ORIENTED_EDGE('NONE', *, *, #2840, .F.); +#4220 = ORIENTED_EDGE('NONE', *, *, #2836, .F.); +#4221 = EDGE_LOOP('NONE', (#4217, #4218, #4219, #4220)); +#4222 = FACE_BOUND('NONE', #4221, .T.); +#4223 = ADVANCED_FACE('NONE', (#4222), #3360, .F.); +#4224 = ORIENTED_EDGE('NONE', *, *, #2838, .T.); +#4225 = ORIENTED_EDGE('NONE', *, *, #2842, .T.); +#4226 = ORIENTED_EDGE('NONE', *, *, #2845, .T.); +#4227 = ORIENTED_EDGE('NONE', *, *, #2847, .T.); +#4228 = ORIENTED_EDGE('NONE', *, *, #2848, .F.); +#4229 = EDGE_LOOP('NONE', (#4224, #4225, #4226, #4227)); +#4230 = FACE_BOUND('NONE', #4229, .T.); +#4231 = EDGE_LOOP('NONE', (#4228)); +#4232 = FACE_BOUND('NONE', #4231, .T.); +#4233 = ADVANCED_FACE('NONE', (#4230, #4232), #3364, .T.); +#4234 = ORIENTED_EDGE('NONE', *, *, #2848, .T.); +#4235 = ORIENTED_EDGE('NONE', *, *, #2849, .F.); +#4236 = EDGE_LOOP('NONE', (#4234)); +#4237 = FACE_BOUND('NONE', #4236, .T.); +#4238 = EDGE_LOOP('NONE', (#4235)); +#4239 = FACE_BOUND('NONE', #4238, .T.); +#4240 = ADVANCED_FACE('NONE', (#4237, #4239), #3369, .T.); +#4241 = ORIENTED_EDGE('NONE', *, *, #2851, .F.); +#4242 = ORIENTED_EDGE('NONE', *, *, #2853, .F.); +#4243 = ORIENTED_EDGE('NONE', *, *, #2856, .F.); +#4244 = ORIENTED_EDGE('NONE', *, *, #2859, .F.); +#4245 = ORIENTED_EDGE('NONE', *, *, #2862, .F.); +#4246 = ORIENTED_EDGE('NONE', *, *, #2865, .F.); +#4247 = EDGE_LOOP('NONE', (#4241)); +#4248 = FACE_BOUND('NONE', #4247, .T.); +#4249 = EDGE_LOOP('NONE', (#4242)); +#4250 = FACE_BOUND('NONE', #4249, .T.); +#4251 = EDGE_LOOP('NONE', (#4243)); +#4252 = FACE_BOUND('NONE', #4251, .T.); +#4253 = EDGE_LOOP('NONE', (#4244)); +#4254 = FACE_BOUND('NONE', #4253, .T.); +#4255 = EDGE_LOOP('NONE', (#4245)); +#4256 = FACE_BOUND('NONE', #4255, .T.); +#4257 = EDGE_LOOP('NONE', (#4246)); +#4258 = FACE_BOUND('NONE', #4257, .T.); +#4259 = ADVANCED_FACE('NONE', (#4248, #4250, #4252, #4254, #4256, #4258), #3373, .T.); +#4260 = ORIENTED_EDGE('NONE', *, *, #2849, .T.); +#4261 = ORIENTED_EDGE('NONE', *, *, #2851, .T.); +#4262 = EDGE_LOOP('NONE', (#4260)); +#4263 = FACE_BOUND('NONE', #4262, .T.); +#4264 = EDGE_LOOP('NONE', (#4261)); +#4265 = FACE_BOUND('NONE', #4264, .T.); +#4266 = ADVANCED_FACE('NONE', (#4263, #4265), #3378, .T.); +#4267 = ORIENTED_EDGE('NONE', *, *, #2853, .T.); +#4268 = ORIENTED_EDGE('NONE', *, *, #2855, .F.); +#4269 = EDGE_LOOP('NONE', (#4267)); +#4270 = FACE_BOUND('NONE', #4269, .T.); +#4271 = EDGE_LOOP('NONE', (#4268)); +#4272 = FACE_BOUND('NONE', #4271, .T.); +#4273 = ADVANCED_FACE('NONE', (#4270, #4272), #3383, .T.); +#4274 = ORIENTED_EDGE('NONE', *, *, #2855, .T.); +#4275 = EDGE_LOOP('NONE', (#4274)); +#4276 = FACE_BOUND('NONE', #4275, .T.); +#4277 = ADVANCED_FACE('NONE', (#4276), #3387, .T.); +#4278 = ORIENTED_EDGE('NONE', *, *, #2856, .T.); +#4279 = ORIENTED_EDGE('NONE', *, *, #2858, .F.); +#4280 = EDGE_LOOP('NONE', (#4278)); +#4281 = FACE_BOUND('NONE', #4280, .T.); +#4282 = EDGE_LOOP('NONE', (#4279)); +#4283 = FACE_BOUND('NONE', #4282, .T.); +#4284 = ADVANCED_FACE('NONE', (#4281, #4283), #3392, .T.); +#4285 = ORIENTED_EDGE('NONE', *, *, #2858, .T.); +#4286 = EDGE_LOOP('NONE', (#4285)); +#4287 = FACE_BOUND('NONE', #4286, .T.); +#4288 = ADVANCED_FACE('NONE', (#4287), #3396, .T.); +#4289 = ORIENTED_EDGE('NONE', *, *, #2859, .T.); +#4290 = ORIENTED_EDGE('NONE', *, *, #2861, .F.); +#4291 = EDGE_LOOP('NONE', (#4289)); +#4292 = FACE_BOUND('NONE', #4291, .T.); +#4293 = EDGE_LOOP('NONE', (#4290)); +#4294 = FACE_BOUND('NONE', #4293, .T.); +#4295 = ADVANCED_FACE('NONE', (#4292, #4294), #3401, .T.); +#4296 = ORIENTED_EDGE('NONE', *, *, #2861, .T.); +#4297 = EDGE_LOOP('NONE', (#4296)); +#4298 = FACE_BOUND('NONE', #4297, .T.); +#4299 = ADVANCED_FACE('NONE', (#4298), #3405, .T.); +#4300 = ORIENTED_EDGE('NONE', *, *, #2862, .T.); +#4301 = ORIENTED_EDGE('NONE', *, *, #2864, .F.); +#4302 = EDGE_LOOP('NONE', (#4300)); +#4303 = FACE_BOUND('NONE', #4302, .T.); +#4304 = EDGE_LOOP('NONE', (#4301)); +#4305 = FACE_BOUND('NONE', #4304, .T.); +#4306 = ADVANCED_FACE('NONE', (#4303, #4305), #3410, .T.); +#4307 = ORIENTED_EDGE('NONE', *, *, #2864, .T.); +#4308 = EDGE_LOOP('NONE', (#4307)); +#4309 = FACE_BOUND('NONE', #4308, .T.); +#4310 = ADVANCED_FACE('NONE', (#4309), #3414, .T.); +#4311 = ORIENTED_EDGE('NONE', *, *, #2865, .T.); +#4312 = ORIENTED_EDGE('NONE', *, *, #2866, .F.); +#4313 = EDGE_LOOP('NONE', (#4311)); +#4314 = FACE_BOUND('NONE', #4313, .T.); +#4315 = EDGE_LOOP('NONE', (#4312)); +#4316 = FACE_BOUND('NONE', #4315, .T.); +#4317 = ADVANCED_FACE('NONE', (#4314, #4316), #3419, .T.); +#4318 = ORIENTED_EDGE('NONE', *, *, #2868, .F.); +#4319 = EDGE_LOOP('NONE', (#4318)); +#4320 = FACE_BOUND('NONE', #4319, .T.); +#4321 = ADVANCED_FACE('NONE', (#4320), #3423, .T.); +#4322 = ORIENTED_EDGE('NONE', *, *, #2866, .T.); +#4323 = ORIENTED_EDGE('NONE', *, *, #2868, .T.); +#4324 = EDGE_LOOP('NONE', (#4322)); +#4325 = FACE_BOUND('NONE', #4324, .T.); +#4326 = EDGE_LOOP('NONE', (#4323)); +#4327 = FACE_BOUND('NONE', #4326, .T.); +#4328 = ADVANCED_FACE('NONE', (#4325, #4327), #3428, .T.); +#4329 = ORIENTED_EDGE('NONE', *, *, #2870, .T.); +#4330 = ORIENTED_EDGE('NONE', *, *, #2871, .F.); +#4331 = EDGE_LOOP('NONE', (#4329)); +#4332 = FACE_BOUND('NONE', #4331, .T.); +#4333 = EDGE_LOOP('NONE', (#4330)); +#4334 = FACE_BOUND('NONE', #4333, .T.); +#4335 = ADVANCED_FACE('NONE', (#4332, #4334), #3433, .T.); +#4336 = ORIENTED_EDGE('NONE', *, *, #2870, .F.); +#4337 = EDGE_LOOP('NONE', (#4336)); +#4338 = FACE_BOUND('NONE', #4337, .T.); +#4339 = ADVANCED_FACE('NONE', (#4338), #3437, .F.); +#4340 = ORIENTED_EDGE('NONE', *, *, #2873, .F.); +#4341 = EDGE_LOOP('NONE', (#4340)); +#4342 = FACE_BOUND('NONE', #4341, .T.); +#4343 = ADVANCED_FACE('NONE', (#4342), #3441, .T.); +#4344 = ORIENTED_EDGE('NONE', *, *, #2871, .T.); +#4345 = ORIENTED_EDGE('NONE', *, *, #2873, .T.); +#4346 = EDGE_LOOP('NONE', (#4344)); +#4347 = FACE_BOUND('NONE', #4346, .T.); +#4348 = EDGE_LOOP('NONE', (#4345)); +#4349 = FACE_BOUND('NONE', #4348, .T.); +#4350 = ADVANCED_FACE('NONE', (#4347, #4349), #3446, .T.); +#4351 = ORIENTED_EDGE('NONE', *, *, #2895, .T.); +#4352 = ORIENTED_EDGE('NONE', *, *, #2875, .T.); +#4353 = ORIENTED_EDGE('NONE', *, *, #2896, .T.); +#4354 = ORIENTED_EDGE('NONE', *, *, #2891, .F.); +#4355 = EDGE_LOOP('NONE', (#4351, #4352, #4353, #4354)); +#4356 = FACE_BOUND('NONE', #4355, .T.); +#4357 = ADVANCED_FACE('NONE', (#4356), #3450, .T.); +#4358 = ORIENTED_EDGE('NONE', *, *, #2883, .T.); +#4359 = ORIENTED_EDGE('NONE', *, *, #2879, .T.); +#4360 = ORIENTED_EDGE('NONE', *, *, #2884, .T.); +#4361 = ORIENTED_EDGE('NONE', *, *, #2877, .T.); +#4362 = EDGE_LOOP('NONE', (#4358, #4359, #4360, #4361)); +#4363 = FACE_BOUND('NONE', #4362, .T.); +#4364 = ADVANCED_FACE('NONE', (#4363), #3454, .T.); +#4365 = ORIENTED_EDGE('NONE', *, *, #2889, .T.); +#4366 = ORIENTED_EDGE('NONE', *, *, #2885, .T.); +#4367 = ORIENTED_EDGE('NONE', *, *, #2890, .T.); +#4368 = ORIENTED_EDGE('NONE', *, *, #2881, .T.); +#4369 = EDGE_LOOP('NONE', (#4365, #4366, #4367, #4368)); +#4370 = FACE_BOUND('NONE', #4369, .T.); +#4371 = ADVANCED_FACE('NONE', (#4370), #3458, .T.); +#4372 = ORIENTED_EDGE('NONE', *, *, #2897, .T.); +#4373 = ORIENTED_EDGE('NONE', *, *, #2893, .F.); +#4374 = ORIENTED_EDGE('NONE', *, *, #2898, .T.); +#4375 = ORIENTED_EDGE('NONE', *, *, #2887, .T.); +#4376 = EDGE_LOOP('NONE', (#4372, #4373, #4374, #4375)); +#4377 = FACE_BOUND('NONE', #4376, .T.); +#4378 = ADVANCED_FACE('NONE', (#4377), #3462, .T.); +#4379 = ORIENTED_EDGE('NONE', *, *, #2897, .F.); +#4380 = ORIENTED_EDGE('NONE', *, *, #2888, .T.); +#4381 = ORIENTED_EDGE('NONE', *, *, #2889, .F.); +#4382 = ORIENTED_EDGE('NONE', *, *, #2882, .T.); +#4383 = ORIENTED_EDGE('NONE', *, *, #2883, .F.); +#4384 = ORIENTED_EDGE('NONE', *, *, #2878, .T.); +#4385 = ORIENTED_EDGE('NONE', *, *, #2895, .F.); +#4386 = ORIENTED_EDGE('NONE', *, *, #2894, .F.); +#4387 = ORIENTED_EDGE('NONE', *, *, #2907, .T.); +#4388 = ORIENTED_EDGE('NONE', *, *, #2910, .T.); +#4389 = ORIENTED_EDGE('NONE', *, *, #2913, .T.); +#4390 = ORIENTED_EDGE('NONE', *, *, #2916, .T.); +#4391 = ORIENTED_EDGE('NONE', *, *, #2919, .T.); +#4392 = ORIENTED_EDGE('NONE', *, *, #2922, .T.); +#4393 = ORIENTED_EDGE('NONE', *, *, #2925, .T.); +#4394 = ORIENTED_EDGE('NONE', *, *, #2928, .T.); +#4395 = EDGE_LOOP('NONE', (#4379, #4380, #4381, #4382, #4383, #4384, #4385, #4386)); +#4396 = FACE_BOUND('NONE', #4395, .T.); +#4397 = EDGE_LOOP('NONE', (#4387)); +#4398 = FACE_BOUND('NONE', #4397, .T.); +#4399 = EDGE_LOOP('NONE', (#4388)); +#4400 = FACE_BOUND('NONE', #4399, .T.); +#4401 = EDGE_LOOP('NONE', (#4389)); +#4402 = FACE_BOUND('NONE', #4401, .T.); +#4403 = EDGE_LOOP('NONE', (#4390)); +#4404 = FACE_BOUND('NONE', #4403, .T.); +#4405 = EDGE_LOOP('NONE', (#4391)); +#4406 = FACE_BOUND('NONE', #4405, .T.); +#4407 = EDGE_LOOP('NONE', (#4392)); +#4408 = FACE_BOUND('NONE', #4407, .T.); +#4409 = EDGE_LOOP('NONE', (#4393)); +#4410 = FACE_BOUND('NONE', #4409, .T.); +#4411 = EDGE_LOOP('NONE', (#4394)); +#4412 = FACE_BOUND('NONE', #4411, .T.); +#4413 = ADVANCED_FACE('NONE', (#4396, #4398, #4400, #4402, #4404, #4406, #4408, #4410, #4412), #3466, .F.); +#4414 = ORIENTED_EDGE('NONE', *, *, #2892, .F.); +#4415 = ORIENTED_EDGE('NONE', *, *, #2896, .F.); +#4416 = ORIENTED_EDGE('NONE', *, *, #2876, .T.); +#4417 = ORIENTED_EDGE('NONE', *, *, #2884, .F.); +#4418 = ORIENTED_EDGE('NONE', *, *, #2880, .T.); +#4419 = ORIENTED_EDGE('NONE', *, *, #2890, .F.); +#4420 = ORIENTED_EDGE('NONE', *, *, #2886, .T.); +#4421 = ORIENTED_EDGE('NONE', *, *, #2898, .F.); +#4422 = ORIENTED_EDGE('NONE', *, *, #2899, .F.); +#4423 = ORIENTED_EDGE('NONE', *, *, #2909, .F.); +#4424 = ORIENTED_EDGE('NONE', *, *, #2912, .F.); +#4425 = ORIENTED_EDGE('NONE', *, *, #2915, .F.); +#4426 = ORIENTED_EDGE('NONE', *, *, #2918, .F.); +#4427 = ORIENTED_EDGE('NONE', *, *, #2921, .F.); +#4428 = ORIENTED_EDGE('NONE', *, *, #2924, .F.); +#4429 = ORIENTED_EDGE('NONE', *, *, #2927, .F.); +#4430 = ORIENTED_EDGE('NONE', *, *, #2930, .F.); +#4431 = EDGE_LOOP('NONE', (#4414, #4415, #4416, #4417, #4418, #4419, #4420, #4421)); +#4432 = FACE_BOUND('NONE', #4431, .T.); +#4433 = EDGE_LOOP('NONE', (#4422)); +#4434 = FACE_BOUND('NONE', #4433, .T.); +#4435 = EDGE_LOOP('NONE', (#4423)); +#4436 = FACE_BOUND('NONE', #4435, .T.); +#4437 = EDGE_LOOP('NONE', (#4424)); +#4438 = FACE_BOUND('NONE', #4437, .T.); +#4439 = EDGE_LOOP('NONE', (#4425)); +#4440 = FACE_BOUND('NONE', #4439, .T.); +#4441 = EDGE_LOOP('NONE', (#4426)); +#4442 = FACE_BOUND('NONE', #4441, .T.); +#4443 = EDGE_LOOP('NONE', (#4427)); +#4444 = FACE_BOUND('NONE', #4443, .T.); +#4445 = EDGE_LOOP('NONE', (#4428)); +#4446 = FACE_BOUND('NONE', #4445, .T.); +#4447 = EDGE_LOOP('NONE', (#4429)); +#4448 = FACE_BOUND('NONE', #4447, .T.); +#4449 = EDGE_LOOP('NONE', (#4430)); +#4450 = FACE_BOUND('NONE', #4449, .T.); +#4451 = ADVANCED_FACE('NONE', (#4432, #4434, #4436, #4438, #4440, #4442, #4444, #4446, #4448, #4450), #3470, .T.); +#4452 = ORIENTED_EDGE('NONE', *, *, #2878, .F.); +#4453 = ORIENTED_EDGE('NONE', *, *, #2877, .F.); +#4454 = ORIENTED_EDGE('NONE', *, *, #2876, .F.); +#4455 = ORIENTED_EDGE('NONE', *, *, #2875, .F.); +#4456 = EDGE_LOOP('NONE', (#4452, #4453, #4454, #4455)); +#4457 = FACE_BOUND('NONE', #4456, .T.); +#4458 = ADVANCED_FACE('NONE', (#4457), #3474, .F.); +#4459 = ORIENTED_EDGE('NONE', *, *, #2882, .F.); +#4460 = ORIENTED_EDGE('NONE', *, *, #2881, .F.); +#4461 = ORIENTED_EDGE('NONE', *, *, #2880, .F.); +#4462 = ORIENTED_EDGE('NONE', *, *, #2879, .F.); +#4463 = EDGE_LOOP('NONE', (#4459, #4460, #4461, #4462)); +#4464 = FACE_BOUND('NONE', #4463, .T.); +#4465 = ADVANCED_FACE('NONE', (#4464), #3478, .F.); +#4466 = ORIENTED_EDGE('NONE', *, *, #2888, .F.); +#4467 = ORIENTED_EDGE('NONE', *, *, #2887, .F.); +#4468 = ORIENTED_EDGE('NONE', *, *, #2886, .F.); +#4469 = ORIENTED_EDGE('NONE', *, *, #2885, .F.); +#4470 = EDGE_LOOP('NONE', (#4466, #4467, #4468, #4469)); +#4471 = FACE_BOUND('NONE', #4470, .T.); +#4472 = ADVANCED_FACE('NONE', (#4471), #3482, .F.); +#4473 = ORIENTED_EDGE('NONE', *, *, #2891, .T.); +#4474 = ORIENTED_EDGE('NONE', *, *, #2892, .T.); +#4475 = ORIENTED_EDGE('NONE', *, *, #2893, .T.); +#4476 = ORIENTED_EDGE('NONE', *, *, #2894, .T.); +#4477 = EDGE_LOOP('NONE', (#4473, #4474, #4475, #4476)); +#4478 = FACE_BOUND('NONE', #4477, .T.); +#4479 = ADVANCED_FACE('NONE', (#4478), #3486, .T.); +#4480 = ORIENTED_EDGE('NONE', *, *, #2899, .T.); +#4481 = ORIENTED_EDGE('NONE', *, *, #2900, .F.); +#4482 = EDGE_LOOP('NONE', (#4480)); +#4483 = FACE_BOUND('NONE', #4482, .T.); +#4484 = EDGE_LOOP('NONE', (#4481)); +#4485 = FACE_BOUND('NONE', #4484, .T.); +#4486 = ADVANCED_FACE('NONE', (#4483, #4485), #3491, .T.); +#4487 = ORIENTED_EDGE('NONE', *, *, #2902, .F.); +#4488 = ORIENTED_EDGE('NONE', *, *, #2904, .F.); +#4489 = EDGE_LOOP('NONE', (#4487)); +#4490 = FACE_BOUND('NONE', #4489, .T.); +#4491 = EDGE_LOOP('NONE', (#4488)); +#4492 = FACE_BOUND('NONE', #4491, .T.); +#4493 = ADVANCED_FACE('NONE', (#4490, #4492), #3495, .T.); +#4494 = ORIENTED_EDGE('NONE', *, *, #2900, .T.); +#4495 = ORIENTED_EDGE('NONE', *, *, #2902, .T.); +#4496 = EDGE_LOOP('NONE', (#4494)); +#4497 = FACE_BOUND('NONE', #4496, .T.); +#4498 = EDGE_LOOP('NONE', (#4495)); +#4499 = FACE_BOUND('NONE', #4498, .T.); +#4500 = ADVANCED_FACE('NONE', (#4497, #4499), #3500, .T.); +#4501 = ORIENTED_EDGE('NONE', *, *, #2904, .T.); +#4502 = ORIENTED_EDGE('NONE', *, *, #2906, .F.); +#4503 = EDGE_LOOP('NONE', (#4501)); +#4504 = FACE_BOUND('NONE', #4503, .T.); +#4505 = EDGE_LOOP('NONE', (#4502)); +#4506 = FACE_BOUND('NONE', #4505, .T.); +#4507 = ADVANCED_FACE('NONE', (#4504, #4506), #3505, .T.); +#4508 = ORIENTED_EDGE('NONE', *, *, #2906, .T.); +#4509 = EDGE_LOOP('NONE', (#4508)); +#4510 = FACE_BOUND('NONE', #4509, .T.); +#4511 = ADVANCED_FACE('NONE', (#4510), #3509, .T.); +#4512 = ORIENTED_EDGE('NONE', *, *, #2907, .F.); +#4513 = ORIENTED_EDGE('NONE', *, *, #2909, .T.); +#4514 = EDGE_LOOP('NONE', (#4512)); +#4515 = FACE_BOUND('NONE', #4514, .T.); +#4516 = EDGE_LOOP('NONE', (#4513)); +#4517 = FACE_BOUND('NONE', #4516, .T.); +#4518 = ADVANCED_FACE('NONE', (#4515, #4517), #3514, .F.); +#4519 = ORIENTED_EDGE('NONE', *, *, #2910, .F.); +#4520 = ORIENTED_EDGE('NONE', *, *, #2912, .T.); +#4521 = EDGE_LOOP('NONE', (#4519)); +#4522 = FACE_BOUND('NONE', #4521, .T.); +#4523 = EDGE_LOOP('NONE', (#4520)); +#4524 = FACE_BOUND('NONE', #4523, .T.); +#4525 = ADVANCED_FACE('NONE', (#4522, #4524), #3519, .F.); +#4526 = ORIENTED_EDGE('NONE', *, *, #2913, .F.); +#4527 = ORIENTED_EDGE('NONE', *, *, #2915, .T.); +#4528 = EDGE_LOOP('NONE', (#4526)); +#4529 = FACE_BOUND('NONE', #4528, .T.); +#4530 = EDGE_LOOP('NONE', (#4527)); +#4531 = FACE_BOUND('NONE', #4530, .T.); +#4532 = ADVANCED_FACE('NONE', (#4529, #4531), #3524, .F.); +#4533 = ORIENTED_EDGE('NONE', *, *, #2916, .F.); +#4534 = ORIENTED_EDGE('NONE', *, *, #2918, .T.); +#4535 = EDGE_LOOP('NONE', (#4533)); +#4536 = FACE_BOUND('NONE', #4535, .T.); +#4537 = EDGE_LOOP('NONE', (#4534)); +#4538 = FACE_BOUND('NONE', #4537, .T.); +#4539 = ADVANCED_FACE('NONE', (#4536, #4538), #3529, .F.); +#4540 = ORIENTED_EDGE('NONE', *, *, #2919, .F.); +#4541 = ORIENTED_EDGE('NONE', *, *, #2921, .T.); +#4542 = EDGE_LOOP('NONE', (#4540)); +#4543 = FACE_BOUND('NONE', #4542, .T.); +#4544 = EDGE_LOOP('NONE', (#4541)); +#4545 = FACE_BOUND('NONE', #4544, .T.); +#4546 = ADVANCED_FACE('NONE', (#4543, #4545), #3534, .F.); +#4547 = ORIENTED_EDGE('NONE', *, *, #2922, .F.); +#4548 = ORIENTED_EDGE('NONE', *, *, #2924, .T.); +#4549 = EDGE_LOOP('NONE', (#4547)); +#4550 = FACE_BOUND('NONE', #4549, .T.); +#4551 = EDGE_LOOP('NONE', (#4548)); +#4552 = FACE_BOUND('NONE', #4551, .T.); +#4553 = ADVANCED_FACE('NONE', (#4550, #4552), #3539, .F.); +#4554 = ORIENTED_EDGE('NONE', *, *, #2925, .F.); +#4555 = ORIENTED_EDGE('NONE', *, *, #2927, .T.); +#4556 = EDGE_LOOP('NONE', (#4554)); +#4557 = FACE_BOUND('NONE', #4556, .T.); +#4558 = EDGE_LOOP('NONE', (#4555)); +#4559 = FACE_BOUND('NONE', #4558, .T.); +#4560 = ADVANCED_FACE('NONE', (#4557, #4559), #3544, .F.); +#4561 = ORIENTED_EDGE('NONE', *, *, #2928, .F.); +#4562 = ORIENTED_EDGE('NONE', *, *, #2930, .T.); +#4563 = EDGE_LOOP('NONE', (#4561)); +#4564 = FACE_BOUND('NONE', #4563, .T.); +#4565 = EDGE_LOOP('NONE', (#4562)); +#4566 = FACE_BOUND('NONE', #4565, .T.); +#4567 = ADVANCED_FACE('NONE', (#4564, #4566), #3549, .F.); +#4568 = CLOSED_SHELL('NONE', (#3556, #3563, #3570, #3577, #3584, #3594, #3601, #3629, #3636, #3643, #3647, #3654, #3658, #3665, #3669, #3676, #3680, #3687, #3691, #3698, #3702, #3709, #3713, #3720, #3724, #3731, #3735, #3739, #3746, #3750, #3754, #3761, #3765, #3769, #3776, #3783, #3790, #3797, #3804, #3811, #3818, #3828, #3838, #3845, #3852, #3859, #3866, #3873, #3880, #3887, #3897, #3907)); +#4569 = CLOSED_SHELL('NONE', (#3914, #3921, #3928, #3935, #3948, #3958, #3965, #3993, #4000, #4007, #4023, #4030, #4037, #4041, #4048, #4052, #4059, #4063, #4070, #4074, #4081, #4085, #4092, #4096, #4103, #4107, #4114, #4118, #4125, #4129, #4136, #4140, #4147, #4151, #4158, #4162, #4169, #4173)); +#4570 = CLOSED_SHELL('NONE', (#4180, #4184, #4188)); +#4571 = CLOSED_SHELL('NONE', (#4195, #4202, #4209, #4216, #4223, #4233, #4240, #4259, #4266, #4273, #4277, #4284, #4288, #4295, #4299, #4306, #4310, #4317, #4321, #4328)); +#4572 = CLOSED_SHELL('NONE', (#4335, #4339, #4343, #4350)); +#4573 = CLOSED_SHELL('NONE', (#4357, #4364, #4371, #4378, #4413, #4451, #4458, #4465, #4472, #4479, #4486, #4493, #4500, #4507, #4511, #4518, #4525, #4532, #4539, #4546, #4553, #4560, #4567)); +#4574 = MANIFOLD_SOLID_BREP('NONE', #4568); +#4575 = MANIFOLD_SOLID_BREP('NONE', #4569); +#4576 = MANIFOLD_SOLID_BREP('NONE', #4570); +#4577 = MANIFOLD_SOLID_BREP('NONE', #4571); +#4578 = MANIFOLD_SOLID_BREP('NONE', #4572); +#4579 = MANIFOLD_SOLID_BREP('NONE', #4573); +#4580 = APPLICATION_CONTEXT('configuration controlled 3D design of mechanical parts and assemblies'); +#4581 = PRODUCT_DEFINITION_CONTEXT('part definition', #4580, 'design'); +#4582 = PRODUCT('UNIDENTIFIED_PRODUCT', 'NONE', $, ()); +#4583 = PRODUCT_DEFINITION_FORMATION('', $, #4582); +#4584 = PRODUCT_DEFINITION('design', $, #4583, #4581); +#4585 = PRODUCT_DEFINITION_SHAPE('NONE', $, #4584); +#4586 = ADVANCED_BREP_SHAPE_REPRESENTATION('NONE', (#4579), #3); +#4587 = SHAPE_DEFINITION_REPRESENTATION(#4585, #4586); +#4588 = PRODUCT('UNIDENTIFIED_PRODUCT', 'NONE', $, ()); +#4589 = PRODUCT_DEFINITION_FORMATION('', $, #4588); +#4590 = PRODUCT_DEFINITION('design', $, #4589, #4581); +#4591 = PRODUCT_DEFINITION_SHAPE('NONE', $, #4590); +#4592 = ADVANCED_BREP_SHAPE_REPRESENTATION('NONE', (#4578), #3); +#4593 = SHAPE_DEFINITION_REPRESENTATION(#4591, #4592); +#4594 = PRODUCT('UNIDENTIFIED_PRODUCT', 'NONE', $, ()); +#4595 = PRODUCT_DEFINITION_FORMATION('', $, #4594); +#4596 = PRODUCT_DEFINITION('design', $, #4595, #4581); +#4597 = PRODUCT_DEFINITION_SHAPE('NONE', $, #4596); +#4598 = ADVANCED_BREP_SHAPE_REPRESENTATION('NONE', (#4577), #3); +#4599 = SHAPE_DEFINITION_REPRESENTATION(#4597, #4598); +#4600 = PRODUCT('UNIDENTIFIED_PRODUCT', 'NONE', $, ()); +#4601 = PRODUCT_DEFINITION_FORMATION('', $, #4600); +#4602 = PRODUCT_DEFINITION('design', $, #4601, #4581); +#4603 = PRODUCT_DEFINITION_SHAPE('NONE', $, #4602); +#4604 = ADVANCED_BREP_SHAPE_REPRESENTATION('NONE', (#4576), #3); +#4605 = SHAPE_DEFINITION_REPRESENTATION(#4603, #4604); +#4606 = PRODUCT('UNIDENTIFIED_PRODUCT', 'NONE', $, ()); +#4607 = PRODUCT_DEFINITION_FORMATION('', $, #4606); +#4608 = PRODUCT_DEFINITION('design', $, #4607, #4581); +#4609 = PRODUCT_DEFINITION_SHAPE('NONE', $, #4608); +#4610 = ADVANCED_BREP_SHAPE_REPRESENTATION('NONE', (#4575), #3); +#4611 = SHAPE_DEFINITION_REPRESENTATION(#4609, #4610); +#4612 = PRODUCT('UNIDENTIFIED_PRODUCT', 'NONE', $, ()); +#4613 = PRODUCT_DEFINITION_FORMATION('', $, #4612); +#4614 = PRODUCT_DEFINITION('design', $, #4613, #4581); +#4615 = PRODUCT_DEFINITION_SHAPE('NONE', $, #4614); +#4616 = ADVANCED_BREP_SHAPE_REPRESENTATION('NONE', (#4574), #3); +#4617 = SHAPE_DEFINITION_REPRESENTATION(#4615, #4616); +ENDSEC; +END-ISO-10303-21; diff --git a/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/ops.snap b/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/ops.snap index 86df7dd0f..6d1922c35 100644 --- a/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/multi-axis-robot/ops.snap @@ -14,7 +14,7 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -117,19 +117,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -137,7 +128,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -217,19 +216,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -237,7 +227,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -273,19 +271,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -293,7 +282,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -352,19 +349,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -372,7 +360,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -443,190 +439,185 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 3.6, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 3.6, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -716,180 +707,175 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.984807753012208, - "ty": { - "type": "Known", - "type": "Count" - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.17364817766693041, - "ty": { - "type": "Known", - "type": "Count" - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.984807753012208, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.17364817766693041, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -935,19 +921,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -955,7 +932,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupBegin", @@ -1071,19 +1056,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -1091,7 +1067,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupBegin", @@ -1222,19 +1206,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -1242,7 +1217,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupBegin", @@ -1358,180 +1341,175 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.984807753012208, - "ty": { - "type": "Known", - "type": "Count" - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.17364817766693041, - "ty": { - "type": "Known", - "type": "Count" - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.984807753012208, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.17364817766693041, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -1589,180 +1567,175 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": -0.1, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": -0.1, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.984807753012208, - "ty": { - "type": "Known", - "type": "Count" - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.17364817766693041, - "ty": { - "type": "Known", - "type": "Count" - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.984807753012208, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.17364817766693041, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -1844,19 +1817,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -1864,7 +1828,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1944,19 +1916,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -1964,7 +1927,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupBegin", @@ -2080,19 +2051,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -2100,7 +2062,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -2183,19 +2153,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -2203,7 +2164,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupBegin", @@ -2334,19 +2303,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -2354,7 +2314,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupBegin", @@ -2438,180 +2406,175 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { - "type": "Object", - "value": { - "origin": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "origin": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "xAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.984807753012208, - "ty": { - "type": "Known", - "type": "Count" - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.17364817766693041, - "ty": { - "type": "Known", - "type": "Count" - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] + } }, - "yAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } - ] - }, - "zAxis": { - "type": "Array", - "value": [ - { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - } - ] + } } - } + ] + }, + "xAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.984807753012208, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.17364817766693041, + "ty": { + "type": "Known", + "type": "Count" + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "yAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "zAxis": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + ] } } }, @@ -2729,19 +2692,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -2749,7 +2703,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupBegin", @@ -2865,19 +2827,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -2885,7 +2838,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupBegin", @@ -3040,19 +3001,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -3060,7 +3012,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupBegin", @@ -3168,19 +3128,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -3188,7 +3139,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupBegin", @@ -3296,19 +3255,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -3316,7 +3266,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -3352,19 +3310,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -3372,7 +3321,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupBegin", @@ -3480,19 +3437,10 @@ description: Operations executed multi-axis-robot.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -3500,7 +3448,15 @@ description: Operations executed multi-axis-robot.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupBegin", diff --git a/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/artifact_commands.snap index 75a4044dd..f7a048bbc 100644 --- a/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/artifact_commands.snap @@ -187,7 +187,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -505,7 +506,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl "type": "extrude", "target": "[uuid]", "distance": -0.25, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -571,7 +573,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl "type": "extrude", "target": "[uuid]", "distance": -0.25, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -637,7 +640,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl "type": "extrude", "target": "[uuid]", "distance": -0.25, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -703,7 +707,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl "type": "extrude", "target": "[uuid]", "distance": -0.25, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -961,7 +966,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl "type": "extrude", "target": "[uuid]", "distance": -0.75, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1027,7 +1033,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl "type": "extrude", "target": "[uuid]", "distance": -0.75, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1093,7 +1100,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl "type": "extrude", "target": "[uuid]", "distance": -0.75, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1159,7 +1167,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl "type": "extrude", "target": "[uuid]", "distance": -0.75, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1297,7 +1306,8 @@ description: Artifact commands parametric-bearing-pillow-block.kcl "type": "extrude", "target": "[uuid]", "distance": -1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/artifact_graph_flowchart.snap.md index f5466cdcb..dbba7c720 100644 --- a/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/artifact_graph_flowchart.snap.md @@ -9,18 +9,18 @@ flowchart LR 7[Solid2d] end subgraph path23 [Path] - 23["Path
[1061, 1208, 0]"] - 24["Segment
[1061, 1208, 0]"] + 23["Path
[1066, 1213, 0]"] + 24["Segment
[1066, 1213, 0]"] 25[Solid2d] end subgraph path34 [Path] - 34["Path
[1450, 1599, 0]"] - 35["Segment
[1450, 1599, 0]"] + 34["Path
[1460, 1609, 0]"] + 35["Segment
[1460, 1609, 0]"] 36[Solid2d] end subgraph path44 [Path] - 44["Path
[1846, 1894, 0]"] - 45["Segment
[1846, 1894, 0]"] + 44["Path
[1861, 1909, 0]"] + 45["Segment
[1861, 1909, 0]"] 46[Solid2d] end 1["Plane
[750, 767, 0]"] @@ -39,28 +39,28 @@ flowchart LR 20["SweepEdge Adjacent"] 21["SweepEdge Opposite"] 22["SweepEdge Adjacent"] - 26["Sweep Extrusion
[1373, 1402, 0]"] + 26["Sweep Extrusion
[1378, 1407, 0]"] 27[Wall] 28["Cap Start"] 29["SweepEdge Opposite"] 30["SweepEdge Adjacent"] - 31["Sweep Extrusion
[1373, 1402, 0]"] - 32["Sweep Extrusion
[1373, 1402, 0]"] - 33["Sweep Extrusion
[1373, 1402, 0]"] - 37["Sweep Extrusion
[1764, 1799, 0]"] + 31["Sweep Extrusion
[1378, 1407, 0]"] + 32["Sweep Extrusion
[1378, 1407, 0]"] + 33["Sweep Extrusion
[1378, 1407, 0]"] + 37["Sweep Extrusion
[1774, 1809, 0]"] 38[Wall] 39["SweepEdge Opposite"] 40["SweepEdge Adjacent"] - 41["Sweep Extrusion
[1764, 1799, 0]"] - 42["Sweep Extrusion
[1764, 1799, 0]"] - 43["Sweep Extrusion
[1764, 1799, 0]"] - 47["Sweep Extrusion
[1900, 1925, 0]"] + 41["Sweep Extrusion
[1774, 1809, 0]"] + 42["Sweep Extrusion
[1774, 1809, 0]"] + 43["Sweep Extrusion
[1774, 1809, 0]"] + 47["Sweep Extrusion
[1915, 1940, 0]"] 48[Wall] 49["SweepEdge Opposite"] 50["SweepEdge Adjacent"] - 51["StartSketchOnFace
[1029, 1055, 0]"] - 52["StartSketchOnFace
[1416, 1444, 0]"] - 53["StartSketchOnFace
[1814, 1840, 0]"] + 51["StartSketchOnFace
[1029, 1060, 0]"] + 52["StartSketchOnFace
[1421, 1454, 0]"] + 53["StartSketchOnFace
[1824, 1855, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/ast.snap b/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/ast.snap index 3e15e7d74..cd454c063 100644 --- a/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "Ok": { "body": [ { - "commentStart": 593, + "commentStart": 0, "declaration": { - "commentStart": 616, + "commentStart": 0, "end": 0, "id": { - "commentStart": 616, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 625, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "VariableDeclaration" }, { - "commentStart": 627, + "commentStart": 0, "declaration": { - "commentStart": 627, + "commentStart": 0, "end": 0, "id": { - "commentStart": 627, + "commentStart": 0, "end": 0, "name": "width", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 635, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "VariableDeclaration" }, { - "commentStart": 637, + "commentStart": 0, "declaration": { - "commentStart": 637, + "commentStart": 0, "end": 0, "id": { - "commentStart": 637, + "commentStart": 0, "end": 0, "name": "height", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 646, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "VariableDeclaration" }, { - "commentStart": 648, + "commentStart": 0, "declaration": { - "commentStart": 648, + "commentStart": 0, "end": 0, "id": { - "commentStart": 648, + "commentStart": 0, "end": 0, "name": "cbDepth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 658, + "commentStart": 0, "end": 0, "raw": ".25", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "VariableDeclaration" }, { - "commentStart": 662, + "commentStart": 0, "declaration": { - "commentStart": 662, + "commentStart": 0, "end": 0, "id": { - "commentStart": 662, + "commentStart": 0, "end": 0, "name": "cbDia", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 670, + "commentStart": 0, "end": 0, "raw": ".7", "start": 0, @@ -174,19 +174,19 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "VariableDeclaration" }, { - "commentStart": 673, + "commentStart": 0, "declaration": { - "commentStart": 673, + "commentStart": 0, "end": 0, "id": { - "commentStart": 673, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 683, + "commentStart": 0, "end": 0, "raw": ".375", "start": 0, @@ -207,19 +207,19 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "VariableDeclaration" }, { - "commentStart": 688, + "commentStart": 0, "declaration": { - "commentStart": 688, + "commentStart": 0, "end": 0, "id": { - "commentStart": 688, + "commentStart": 0, "end": 0, "name": "padding", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 698, + "commentStart": 0, "end": 0, "raw": "1.5", "start": 0, @@ -240,19 +240,19 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "VariableDeclaration" }, { - "commentStart": 702, + "commentStart": 0, "declaration": { - "commentStart": 702, + "commentStart": 0, "end": 0, "id": { - "commentStart": 702, + "commentStart": 0, "end": 0, "name": "bearingDia", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 715, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -273,12 +273,12 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "VariableDeclaration" }, { - "commentStart": 716, + "commentStart": 0, "declaration": { - "commentStart": 743, + "commentStart": 0, "end": 0, "id": { - "commentStart": 743, + "commentStart": 0, "end": 0, "name": "body", "start": 0, @@ -290,10 +290,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "arguments": [ { "abs_path": false, - "commentStart": 764, + "commentStart": 0, "end": 0, "name": { - "commentStart": 764, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -307,10 +307,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 750, + "commentStart": 0, "end": 0, "name": { - "commentStart": 750, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -320,7 +320,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 750, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -329,18 +329,18 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "arguments": [ { - "commentStart": 788, + "commentStart": 0, "elements": [ { - "commentStart": 789, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 790, + "commentStart": 0, "end": 0, "name": { - "commentStart": 790, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -351,7 +351,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "Name", "type": "Name" }, - "commentStart": 789, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -360,7 +360,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 798, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -376,15 +376,15 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "BinaryExpression" }, { - "commentStart": 801, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 802, + "commentStart": 0, "end": 0, "name": { - "commentStart": 802, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -395,7 +395,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "Name", "type": "Name" }, - "commentStart": 801, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -404,7 +404,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 811, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -426,7 +426,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "ArrayExpression" }, { - "commentStart": 815, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -435,10 +435,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 773, + "commentStart": 0, "end": 0, "name": { - "commentStart": 773, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -448,7 +448,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 773, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -459,24 +459,24 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 828, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 842, + "commentStart": 0, "elements": [ { - "commentStart": 843, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 843, + "commentStart": 0, "end": 0, "name": { - "commentStart": 843, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -489,7 +489,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 851, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -505,15 +505,15 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "BinaryExpression" }, { - "commentStart": 854, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 855, + "commentStart": 0, "end": 0, "name": { - "commentStart": 855, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -524,7 +524,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "Name", "type": "Name" }, - "commentStart": 854, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -533,7 +533,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 864, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -558,10 +558,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 823, + "commentStart": 0, "end": 0, "name": { - "commentStart": 823, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -571,7 +571,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 823, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -583,24 +583,24 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 878, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 892, + "commentStart": 0, "elements": [ { - "commentStart": 893, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 893, + "commentStart": 0, "end": 0, "name": { - "commentStart": 893, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -613,7 +613,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 901, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -629,14 +629,14 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "BinaryExpression" }, { - "commentStart": 904, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 904, + "commentStart": 0, "end": 0, "name": { - "commentStart": 904, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -649,7 +649,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 913, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -674,10 +674,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 873, + "commentStart": 0, "end": 0, "name": { - "commentStart": 873, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -687,7 +687,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 873, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -699,25 +699,25 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 927, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 941, + "commentStart": 0, "elements": [ { - "commentStart": 942, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 943, + "commentStart": 0, "end": 0, "name": { - "commentStart": 943, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -728,7 +728,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "Name", "type": "Name" }, - "commentStart": 942, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -737,7 +737,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 951, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -753,14 +753,14 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "BinaryExpression" }, { - "commentStart": 954, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 954, + "commentStart": 0, "end": 0, "name": { - "commentStart": 954, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -773,7 +773,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 963, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -798,10 +798,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 922, + "commentStart": 0, "end": 0, "name": { - "commentStart": 922, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -811,7 +811,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 922, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -822,10 +822,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 972, + "commentStart": 0, "end": 0, "name": { - "commentStart": 972, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -835,7 +835,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 972, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -846,7 +846,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 993, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -854,10 +854,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "arg": { "abs_path": false, - "commentStart": 1002, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1002, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -872,10 +872,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 985, + "commentStart": 0, "end": 0, "name": { - "commentStart": 985, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -885,7 +885,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 985, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -893,7 +893,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "unlabeled": null } ], - "commentStart": 750, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -914,12 +914,12 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "VariableDeclaration" }, { - "commentStart": 1010, + "commentStart": 0, "declaration": { - "commentStart": 1010, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1010, + "commentStart": 0, "end": 0, "name": "counterBoreHoles", "start": 0, @@ -930,37 +930,38 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1043, - "end": 0, - "name": { - "commentStart": 1043, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "body", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 1049, - "end": 0, - "raw": "'end'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "end" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1029, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1029, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -970,39 +971,55 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 1029, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "body", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1076, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1085, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1098, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1098, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1098, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1098, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -1015,7 +1032,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 1106, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1032,14 +1049,14 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "-", "right": { - "commentStart": 1111, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1111, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1111, + "commentStart": 0, "end": 0, "name": "padding", "start": 0, @@ -1052,7 +1069,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 1121, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1071,7 +1088,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1096, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1080,17 +1097,17 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, { "argument": { - "commentStart": 1137, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1137, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1137, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1137, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1103,7 +1120,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 1146, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1120,14 +1137,14 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "-", "right": { - "commentStart": 1151, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1151, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1151, + "commentStart": 0, "end": 0, "name": "padding", "start": 0, @@ -1140,7 +1157,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 1161, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1159,7 +1176,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1135, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1176,21 +1193,21 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1182, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1191, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1191, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1191, + "commentStart": 0, "end": 0, "name": "cbDia", "start": 0, @@ -1203,7 +1220,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 1199, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1222,10 +1239,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 1061, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1061, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1235,7 +1252,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 1061, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1247,14 +1264,14 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1230, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1242, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1269,21 +1286,21 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1245, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1256, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1256, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1256, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1297,10 +1314,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1265, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1265, + "commentStart": 0, "end": 0, "name": "padding", "start": 0, @@ -1319,17 +1336,17 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1274, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1281, + "commentStart": 0, "elements": [ { - "commentStart": 1282, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1341,7 +1358,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl } }, { - "commentStart": 1285, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1362,10 +1379,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 1214, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1214, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -1375,7 +1392,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 1214, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1387,14 +1404,14 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1310, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1322, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1409,21 +1426,21 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1325, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1336, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1336, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1336, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -1437,10 +1454,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1344, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1344, + "commentStart": 0, "end": 0, "name": "padding", "start": 0, @@ -1459,17 +1476,17 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1353, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1360, + "commentStart": 0, "elements": [ { - "commentStart": 1361, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1481,7 +1498,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl } }, { - "commentStart": 1364, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1502,10 +1519,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 1294, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1294, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -1515,7 +1532,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 1294, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1527,7 +1544,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1384, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1536,10 +1553,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 1394, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1394, + "commentStart": 0, "end": 0, "name": "cbDepth", "start": 0, @@ -1550,7 +1567,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "Name", "type": "Name" }, - "commentStart": 1393, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1561,10 +1578,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 1373, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1373, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1574,13 +1591,13 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 1373, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 1381, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1588,7 +1605,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl } } ], - "commentStart": 1029, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1604,12 +1621,12 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "VariableDeclaration" }, { - "commentStart": 1402, + "commentStart": 0, "declaration": { - "commentStart": 1404, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1404, + "commentStart": 0, "end": 0, "name": "boltHoles", "start": 0, @@ -1620,37 +1637,38 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1430, - "end": 0, - "name": { - "commentStart": 1430, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "body", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 1436, - "end": 0, - "raw": "'start'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "start" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1416, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1416, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1660,39 +1678,55 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 1416, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "body", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1465, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1474, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1487, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1487, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1487, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1487, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -1705,7 +1739,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 1495, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1722,14 +1756,14 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "-", "right": { - "commentStart": 1500, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1500, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1500, + "commentStart": 0, "end": 0, "name": "padding", "start": 0, @@ -1742,7 +1776,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 1510, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1761,7 +1795,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1485, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1770,17 +1804,17 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, { "argument": { - "commentStart": 1526, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1526, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1526, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1526, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1793,7 +1827,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 1535, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1810,14 +1844,14 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "-", "right": { - "commentStart": 1540, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1540, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1540, + "commentStart": 0, "end": 0, "name": "padding", "start": 0, @@ -1830,7 +1864,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 1550, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1849,7 +1883,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1524, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1866,21 +1900,21 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1571, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1580, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1580, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1580, + "commentStart": 0, "end": 0, "name": "holeDia", "start": 0, @@ -1893,7 +1927,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 1590, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1912,10 +1946,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 1450, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1450, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1925,7 +1959,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 1450, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1937,14 +1971,14 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1621, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1633, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1959,21 +1993,21 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1636, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1647, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1647, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1647, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1987,10 +2021,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1656, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1656, + "commentStart": 0, "end": 0, "name": "padding", "start": 0, @@ -2009,17 +2043,17 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1665, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1672, + "commentStart": 0, "elements": [ { - "commentStart": 1673, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2031,7 +2065,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl } }, { - "commentStart": 1676, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2052,10 +2086,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 1605, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1605, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -2065,7 +2099,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 1605, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2077,14 +2111,14 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1701, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1713, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2099,21 +2133,21 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1716, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1727, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1727, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1727, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -2127,10 +2161,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1735, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1735, + "commentStart": 0, "end": 0, "name": "padding", "start": 0, @@ -2149,17 +2183,17 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1744, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1751, + "commentStart": 0, "elements": [ { - "commentStart": 1752, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2171,7 +2205,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl } }, { - "commentStart": 1755, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2192,10 +2226,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 1685, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1685, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -2205,7 +2239,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 1685, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2217,22 +2251,22 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1772, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1781, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1782, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1782, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -2243,7 +2277,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "Name", "type": "Name" }, - "commentStart": 1781, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2253,10 +2287,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1791, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1791, + "commentStart": 0, "end": 0, "name": "cbDepth", "start": 0, @@ -2275,10 +2309,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 1764, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1764, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2288,7 +2322,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 1764, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2296,7 +2330,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "unlabeled": null } ], - "commentStart": 1416, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2312,12 +2346,12 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "VariableDeclaration" }, { - "commentStart": 1799, + "commentStart": 0, "declaration": { - "commentStart": 1801, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1801, + "commentStart": 0, "end": 0, "name": "centerHole", "start": 0, @@ -2328,37 +2362,38 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1828, - "end": 0, - "name": { - "commentStart": 1828, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "body", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 1834, - "end": 0, - "raw": "'end'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "end" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1814, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1814, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2368,28 +2403,44 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 1814, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "body", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1853, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1862, + "commentStart": 0, "elements": [ { - "commentStart": 1863, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2401,7 +2452,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl } }, { - "commentStart": 1866, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2422,21 +2473,21 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1870, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1879, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1879, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1879, + "commentStart": 0, "end": 0, "name": "bearingDia", "start": 0, @@ -2449,7 +2500,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "operator": "/", "right": { - "commentStart": 1892, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2468,10 +2519,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 1846, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1846, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -2481,7 +2532,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 1846, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2493,7 +2544,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl { "type": "LabeledArg", "label": { - "commentStart": 1908, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2502,10 +2553,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 1918, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1918, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -2516,7 +2567,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "Name", "type": "Name" }, - "commentStart": 1917, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2527,10 +2578,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "callee": { "abs_path": false, - "commentStart": 1900, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1900, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2540,7 +2591,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "start": 0, "type": "Name" }, - "commentStart": 1900, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2548,7 +2599,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "unlabeled": null } ], - "commentStart": 1814, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2571,7 +2622,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 561, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -2586,10 +2637,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "properties": [ { - "commentStart": 570, + "commentStart": 0, "end": 0, "key": { - "commentStart": 570, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -2599,10 +2650,10 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 590, + "commentStart": 0, "end": 0, "name": { - "commentStart": 590, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -2623,7 +2674,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl "nonCodeNodes": { "9": [ { - "commentStart": 1402, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2634,7 +2685,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl ], "10": [ { - "commentStart": 1799, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2646,7 +2697,7 @@ description: Result of parsing parametric-bearing-pillow-block.kcl }, "startNodes": [ { - "commentStart": 593, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/exported_step.step b/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/exported_step.step new file mode 100644 index 000000000..2433f47fc --- /dev/null +++ b/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/exported_step.step @@ -0,0 +1,1564 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION((('zoo.dev export')), '2;1'); +FILE_NAME('dump.step', '2021-01-01T00:00:00+00:00', ('Author unknown'), ('Organization unknown'), 'zoo.dev beta', 'zoo.dev', 'Authorization unknown'); +FILE_SCHEMA(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF')); +ENDSEC; +DATA; +#1 = ( + LENGTH_UNIT() + NAMED_UNIT(*) + SI_UNIT($, .METRE.) +); +#2 = UNCERTAINTY_MEASURE_WITH_UNIT(0.00001, #1, 'DISTANCE_ACCURACY_VALUE', $); +#3 = ( + GEOMETRIC_REPRESENTATION_CONTEXT(3) + GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#2)) + GLOBAL_UNIT_ASSIGNED_CONTEXT((#1)) + REPRESENTATION_CONTEXT('', '3D') +); +#4 = CARTESIAN_POINT('NONE', (-0.0508, 0, 0.0762)); +#5 = VERTEX_POINT('NONE', #4); +#6 = CARTESIAN_POINT('NONE', (0.0508, 0, 0.0762)); +#7 = VERTEX_POINT('NONE', #6); +#8 = CARTESIAN_POINT('NONE', (0.0508, 0.0254, 0.0762)); +#9 = VERTEX_POINT('NONE', #8); +#10 = CARTESIAN_POINT('NONE', (-0.0508, 0.0254, 0.0762)); +#11 = VERTEX_POINT('NONE', #10); +#12 = CARTESIAN_POINT('NONE', (0.0508, 0, -0.0762)); +#13 = VERTEX_POINT('NONE', #12); +#14 = CARTESIAN_POINT('NONE', (0.0508, 0.0254, -0.0762)); +#15 = VERTEX_POINT('NONE', #14); +#16 = CARTESIAN_POINT('NONE', (-0.0508, 0, -0.0762)); +#17 = VERTEX_POINT('NONE', #16); +#18 = CARTESIAN_POINT('NONE', (-0.0508, 0.0254, -0.0762)); +#19 = VERTEX_POINT('NONE', #18); +#20 = CARTESIAN_POINT('NONE', (-0.02286, 0.019049, 0.05715)); +#21 = VERTEX_POINT('NONE', #20); +#22 = CARTESIAN_POINT('NONE', (-0.02286, 0.0254, 0.05715)); +#23 = VERTEX_POINT('NONE', #22); +#24 = CARTESIAN_POINT('NONE', (0.04064, 0.019049, 0.05715)); +#25 = VERTEX_POINT('NONE', #24); +#26 = CARTESIAN_POINT('NONE', (0.04064, 0.0254, 0.05715)); +#27 = VERTEX_POINT('NONE', #26); +#28 = CARTESIAN_POINT('NONE', (-0.02286, 0.019049, -0.05715)); +#29 = VERTEX_POINT('NONE', #28); +#30 = CARTESIAN_POINT('NONE', (-0.02286, 0.0254, -0.05715)); +#31 = VERTEX_POINT('NONE', #30); +#32 = CARTESIAN_POINT('NONE', (0.04064, 0.019049, -0.05715)); +#33 = VERTEX_POINT('NONE', #32); +#34 = CARTESIAN_POINT('NONE', (0.04064, 0.0254, -0.05715)); +#35 = VERTEX_POINT('NONE', #34); +#36 = CARTESIAN_POINT('NONE', (0.0269875, 0.019051000000000002, 0.05715)); +#37 = VERTEX_POINT('NONE', #36); +#38 = CARTESIAN_POINT('NONE', (0.0269875, 0, 0.05715)); +#39 = VERTEX_POINT('NONE', #38); +#40 = CARTESIAN_POINT('NONE', (-0.0365125, 0.019051000000000002, 0.05715)); +#41 = VERTEX_POINT('NONE', #40); +#42 = CARTESIAN_POINT('NONE', (-0.0365125, 0, 0.05715)); +#43 = VERTEX_POINT('NONE', #42); +#44 = CARTESIAN_POINT('NONE', (0.0269875, 0.019051000000000002, -0.05715)); +#45 = VERTEX_POINT('NONE', #44); +#46 = CARTESIAN_POINT('NONE', (0.0269875, 0, -0.05715)); +#47 = VERTEX_POINT('NONE', #46); +#48 = CARTESIAN_POINT('NONE', (-0.0365125, 0.019051000000000002, -0.05715)); +#49 = VERTEX_POINT('NONE', #48); +#50 = CARTESIAN_POINT('NONE', (-0.0365125, 0, -0.05715)); +#51 = VERTEX_POINT('NONE', #50); +#52 = CARTESIAN_POINT('NONE', (0.0381, -0.0000010000000000012222, -0)); +#53 = VERTEX_POINT('NONE', #52); +#54 = CARTESIAN_POINT('NONE', (0.0381, 0.0254, -0)); +#55 = VERTEX_POINT('NONE', #54); +#56 = DIRECTION('NONE', (1, 0, 0)); +#57 = VECTOR('NONE', #56, 1); +#58 = CARTESIAN_POINT('NONE', (-0.0508, 0, 0.0762)); +#59 = LINE('NONE', #58, #57); +#60 = DIRECTION('NONE', (0, 1, 0)); +#61 = VECTOR('NONE', #60, 1); +#62 = CARTESIAN_POINT('NONE', (0.0508, 0, 0.0762)); +#63 = LINE('NONE', #62, #61); +#64 = DIRECTION('NONE', (1, 0, 0)); +#65 = VECTOR('NONE', #64, 1); +#66 = CARTESIAN_POINT('NONE', (-0.0508, 0.0254, 0.0762)); +#67 = LINE('NONE', #66, #65); +#68 = DIRECTION('NONE', (0, 1, 0)); +#69 = VECTOR('NONE', #68, 1); +#70 = CARTESIAN_POINT('NONE', (-0.0508, 0, 0.0762)); +#71 = LINE('NONE', #70, #69); +#72 = DIRECTION('NONE', (0, 0, -1)); +#73 = VECTOR('NONE', #72, 1); +#74 = CARTESIAN_POINT('NONE', (0.0508, 0, 0.0762)); +#75 = LINE('NONE', #74, #73); +#76 = DIRECTION('NONE', (0, 1, 0)); +#77 = VECTOR('NONE', #76, 1); +#78 = CARTESIAN_POINT('NONE', (0.0508, 0, -0.0762)); +#79 = LINE('NONE', #78, #77); +#80 = DIRECTION('NONE', (0, 0, -1)); +#81 = VECTOR('NONE', #80, 1); +#82 = CARTESIAN_POINT('NONE', (0.0508, 0.0254, 0.0762)); +#83 = LINE('NONE', #82, #81); +#84 = DIRECTION('NONE', (-1, 0, 0)); +#85 = VECTOR('NONE', #84, 1); +#86 = CARTESIAN_POINT('NONE', (0.0508, 0, -0.0762)); +#87 = LINE('NONE', #86, #85); +#88 = DIRECTION('NONE', (0, 1, 0)); +#89 = VECTOR('NONE', #88, 1); +#90 = CARTESIAN_POINT('NONE', (-0.0508, 0, -0.0762)); +#91 = LINE('NONE', #90, #89); +#92 = DIRECTION('NONE', (-1, 0, 0)); +#93 = VECTOR('NONE', #92, 1); +#94 = CARTESIAN_POINT('NONE', (0.0508, 0.0254, -0.0762)); +#95 = LINE('NONE', #94, #93); +#96 = DIRECTION('NONE', (0, 0, 1)); +#97 = VECTOR('NONE', #96, 1); +#98 = CARTESIAN_POINT('NONE', (-0.0508, 0, -0.0762)); +#99 = LINE('NONE', #98, #97); +#100 = DIRECTION('NONE', (0, 0, 1)); +#101 = VECTOR('NONE', #100, 1); +#102 = CARTESIAN_POINT('NONE', (-0.0508, 0.0254, -0.0762)); +#103 = LINE('NONE', #102, #101); +#104 = DIRECTION('NONE', (1, 0, 0.0000000000000007992606701463447)); +#105 = DIRECTION('NONE', (-0, 1, 0)); +#106 = CARTESIAN_POINT('NONE', (-0.031749999999999994, 0.019049, 0.05714999999999999)); +#107 = AXIS2_PLACEMENT_3D('NONE', #106, #105, #104); +#108 = CIRCLE('NONE', #107, 0.008889999999999997); +#109 = DIRECTION('NONE', (0, 1, 0)); +#110 = VECTOR('NONE', #109, 1); +#111 = CARTESIAN_POINT('NONE', (-0.02286, 0.019049, 0.05715)); +#112 = LINE('NONE', #111, #110); +#113 = DIRECTION('NONE', (1, 0, 0.0000000000000007992606701463447)); +#114 = DIRECTION('NONE', (-0, 1, 0)); +#115 = CARTESIAN_POINT('NONE', (-0.031749999999999994, 0.0254, 0.05714999999999999)); +#116 = AXIS2_PLACEMENT_3D('NONE', #115, #114, #113); +#117 = CIRCLE('NONE', #116, 0.008889999999999997); +#118 = DIRECTION('NONE', (1, 0, 0.000000000000000799260670146344)); +#119 = DIRECTION('NONE', (-0, 1, 0)); +#120 = CARTESIAN_POINT('NONE', (0.031749999999999994, 0.019049, 0.05714999999999999)); +#121 = AXIS2_PLACEMENT_3D('NONE', #120, #119, #118); +#122 = CIRCLE('NONE', #121, 0.008890000000000004); +#123 = DIRECTION('NONE', (0, 1, 0)); +#124 = VECTOR('NONE', #123, 1); +#125 = CARTESIAN_POINT('NONE', (0.04064, 0.019049, 0.05715)); +#126 = LINE('NONE', #125, #124); +#127 = DIRECTION('NONE', (1, 0, 0.000000000000000799260670146344)); +#128 = DIRECTION('NONE', (-0, 1, 0)); +#129 = CARTESIAN_POINT('NONE', (0.031749999999999994, 0.0254, 0.05714999999999999)); +#130 = AXIS2_PLACEMENT_3D('NONE', #129, #128, #127); +#131 = CIRCLE('NONE', #130, 0.008890000000000004); +#132 = DIRECTION('NONE', (1, 0, -0.0000000000000007992606701463443)); +#133 = DIRECTION('NONE', (0, 1, 0)); +#134 = CARTESIAN_POINT('NONE', (-0.03175, 0.019049, -0.05714999999999999)); +#135 = AXIS2_PLACEMENT_3D('NONE', #134, #133, #132); +#136 = CIRCLE('NONE', #135, 0.00889); +#137 = DIRECTION('NONE', (0, 1, 0)); +#138 = VECTOR('NONE', #137, 1); +#139 = CARTESIAN_POINT('NONE', (-0.02286, 0.019049, -0.05715)); +#140 = LINE('NONE', #139, #138); +#141 = DIRECTION('NONE', (1, 0, -0.0000000000000007992606701463443)); +#142 = DIRECTION('NONE', (0, 1, 0)); +#143 = CARTESIAN_POINT('NONE', (-0.03175, 0.0254, -0.05714999999999999)); +#144 = AXIS2_PLACEMENT_3D('NONE', #143, #142, #141); +#145 = CIRCLE('NONE', #144, 0.00889); +#146 = DIRECTION('NONE', (1, 0, -0.0000000000000007992606701463447)); +#147 = DIRECTION('NONE', (0, 1, 0)); +#148 = CARTESIAN_POINT('NONE', (0.03175, 0.019049, -0.05714999999999999)); +#149 = AXIS2_PLACEMENT_3D('NONE', #148, #147, #146); +#150 = CIRCLE('NONE', #149, 0.008889999999999997); +#151 = DIRECTION('NONE', (0, 1, 0)); +#152 = VECTOR('NONE', #151, 1); +#153 = CARTESIAN_POINT('NONE', (0.04064, 0.019049, -0.05715)); +#154 = LINE('NONE', #153, #152); +#155 = DIRECTION('NONE', (1, 0, -0.0000000000000007992606701463447)); +#156 = DIRECTION('NONE', (0, 1, 0)); +#157 = CARTESIAN_POINT('NONE', (0.03175, 0.0254, -0.05714999999999999)); +#158 = AXIS2_PLACEMENT_3D('NONE', #157, #156, #155); +#159 = CIRCLE('NONE', #158, 0.008889999999999997); +#160 = CARTESIAN_POINT('NONE', (0.0269875, 0.019049, 0.05715)); +#161 = CARTESIAN_POINT('NONE', (0.026992482374057148, 0.019049, 0.05693363339700987)); +#162 = CARTESIAN_POINT('NONE', (0.02699254808850517, 0.019049, 0.05693077965465271)); +#163 = CARTESIAN_POINT('NONE', (0.02700784782707539, 0.019049, 0.056710957183123197)); +#164 = CARTESIAN_POINT('NONE', (0.027008049621212782, 0.019049, 0.0567080578599865)); +#165 = CARTESIAN_POINT('NONE', (0.02703416453698099, 0.019049, 0.05648544037587615)); +#166 = CARTESIAN_POINT('NONE', (0.027034508976650752, 0.019049, 0.056482504188243354)); +#167 = CARTESIAN_POINT('NONE', (0.027071887279112784, 0.019049, 0.056257821004650696)); +#168 = CARTESIAN_POINT('NONE', (0.02707238027592237, 0.019049, 0.056254857571712814)); +#169 = CARTESIAN_POINT('NONE', (0.027121410367940815, 0.019049, 0.05602890269408173)); +#170 = CARTESIAN_POINT('NONE', (0.027122057044684983, 0.019049, 0.05602592248828199)); +#171 = CARTESIAN_POINT('NONE', (0.027183057495950316, 0.019049, 0.05579954916866802)); +#172 = CARTESIAN_POINT('NONE', (0.02718386205436726, 0.019049, 0.055796563443876006)); +#173 = CARTESIAN_POINT('NONE', (0.02725707205792741, 0.019049, 0.05557067701782111)); +#174 = CARTESIAN_POINT('NONE', (0.02725803765282625, 0.019049, 0.05556769771485555)); +#175 = CARTESIAN_POINT('NONE', (0.02734360829095243, 0.019049, 0.055343246745844295)); +#176 = CARTESIAN_POINT('NONE', (0.02734473691501536, 0.019049, 0.055340286375673856)); +#177 = CARTESIAN_POINT('NONE', (0.0274427235672502, 0.019049, 0.05511825220075177)); +#178 = CARTESIAN_POINT('NONE', (0.027444015950899316, 0.019049, 0.05511532370660824)); +#179 = CARTESIAN_POINT('NONE', (0.02755437216778796, 0.019049, 0.054896708549276654)); +#180 = CARTESIAN_POINT('NONE', (0.027555827698383523, 0.019049, 0.054893825149871324)); +#181 = CARTESIAN_POINT('NONE', (0.027678400837579598, 0.019049, 0.05467963903875645)); +#182 = CARTESIAN_POINT('NONE', (0.02768001750186299, 0.019049, 0.05467681405574542)); +#183 = CARTESIAN_POINT('NONE', (0.027814546378636923, 0.019049, 0.054468060855146036)); +#184 = CARTESIAN_POINT('NONE', (0.027816320731742276, 0.019049, 0.05446530752888168)); +#185 = CARTESIAN_POINT('NONE', (0.027962435474352593, 0.019049, 0.05426297044529378)); +#186 = CARTESIAN_POINT('NONE', (0.02796436263789923, 0.019049, 0.05426030174366479)); +#187 = CARTESIAN_POINT('NONE', (0.028045833333333332, 0.019049, 0.05415927031410608)); +#188 = CARTESIAN_POINT('NONE', (0.028121586862202137, 0.019049, 0.05406532871614926)); +#189 = CARTESIAN_POINT('NONE', (0.02812366055297633, 0.019049, 0.05406275714188856)); +#190 = CARTESIAN_POINT('NONE', (0.028291415883794434, 0.019049, 0.053876046549760574)); +#191 = CARTESIAN_POINT('NONE', (0.028293628473383486, 0.019049, 0.05387358395193854)); +#192 = CARTESIAN_POINT('NONE', (0.028383606212661013, 0.019049, 0.05378360621266101)); +#193 = CARTESIAN_POINT('NONE', (0.02847124134742006, 0.019049, 0.05369597107790197)); +#194 = CARTESIAN_POINT('NONE', (0.028473583951938546, 0.019049, 0.053693628473383485)); +#195 = CARTESIAN_POINT('NONE', (0.028660294544066527, 0.019049, 0.05352587314256537)); +#196 = CARTESIAN_POINT('NONE', (0.028662757141888564, 0.019049, 0.053523660552976325)); +#197 = CARTESIAN_POINT('NONE', (0.02875927031410607, 0.019049, 0.05344583333333333)); +#198 = CARTESIAN_POINT('NONE', (0.028857730169404093, 0.019049, 0.053366436328673425)); +#199 = CARTESIAN_POINT('NONE', (0.02886030174366479, 0.019049, 0.053364362637899225)); +#200 = CARTESIAN_POINT('NONE', (0.02906263882725269, 0.019049, 0.05321824789528891)); +#201 = CARTESIAN_POINT('NONE', (0.02906530752888168, 0.019049, 0.05321632073174227)); +#202 = CARTESIAN_POINT('NONE', (0.029274060729481063, 0.019049, 0.05308179185496834)); +#203 = CARTESIAN_POINT('NONE', (0.029276814055745424, 0.019049, 0.05308001750186299)); +#204 = CARTESIAN_POINT('NONE', (0.029491000166860293, 0.019049, 0.05295744436266692)); +#205 = CARTESIAN_POINT('NONE', (0.029493825149871335, 0.019049, 0.05295582769838352)); +#206 = CARTESIAN_POINT('NONE', (0.029712440307202912, 0.019049, 0.05284547148149489)); +#207 = CARTESIAN_POINT('NONE', (0.02971532370660824, 0.019049, 0.05284401595089932)); +#208 = CARTESIAN_POINT('NONE', (0.02993735788153034, 0.019049, 0.05274602929866447)); +#209 = CARTESIAN_POINT('NONE', (0.02994028637567386, 0.019049, 0.05274473691501536)); +#210 = CARTESIAN_POINT('NONE', (0.03016473734468511, 0.019049, 0.05265916627688918)); +#211 = CARTESIAN_POINT('NONE', (0.03016769771485555, 0.019049, 0.05265803765282625)); +#212 = CARTESIAN_POINT('NONE', (0.03039358414091043, 0.019049, 0.052584827649266086)); +#213 = CARTESIAN_POINT('NONE', (0.030396563443875996, 0.019049, 0.05258386205436724)); +#214 = CARTESIAN_POINT('NONE', (0.030622936763489983, 0.019049, 0.05252286160310193)); +#215 = CARTESIAN_POINT('NONE', (0.030625922488281998, 0.019049, 0.05252205704468498)); +#216 = CARTESIAN_POINT('NONE', (0.03085187736591307, 0.019049, 0.05247302695266652)); +#217 = CARTESIAN_POINT('NONE', (0.030854857571712805, 0.019049, 0.05247238027592235)); +#218 = CARTESIAN_POINT('NONE', (0.031079540755305467, 0.019049, 0.05243500197346033)); +#219 = CARTESIAN_POINT('NONE', (0.031082504188243352, 0.019049, 0.052434508976650744)); +#220 = CARTESIAN_POINT('NONE', (0.0313051216723537, 0.019049, 0.05240839406088253)); +#221 = CARTESIAN_POINT('NONE', (0.03130805785998649, 0.019049, 0.05240804962121277)); +#222 = CARTESIAN_POINT('NONE', (0.03152788033151601, 0.019049, 0.05239274988264256)); +#223 = CARTESIAN_POINT('NONE', (0.03153077965465271, 0.019049, 0.052392548088505166)); +#224 = CARTESIAN_POINT('NONE', (0.03174714625764284, 0.019049, 0.05238756571444802)); +#225 = CARTESIAN_POINT('NONE', (0.03175, 0.019049, 0.0523875)); +#226 = CARTESIAN_POINT('NONE', (0.03196636660299013, 0.019049, 0.052392482374057144)); +#227 = CARTESIAN_POINT('NONE', (0.031969220345347285, 0.019049, 0.052392548088505166)); +#228 = CARTESIAN_POINT('NONE', (0.0321890428168768, 0.019049, 0.05240784782707537)); +#229 = CARTESIAN_POINT('NONE', (0.0321919421400135, 0.019049, 0.05240804962121276)); +#230 = CARTESIAN_POINT('NONE', (0.03241455962412385, 0.019049, 0.05243416453698098)); +#231 = CARTESIAN_POINT('NONE', (0.032417495811756646, 0.019049, 0.05243450897665074)); +#232 = CARTESIAN_POINT('NONE', (0.032642178995349304, 0.019049, 0.05247188727911278)); +#233 = CARTESIAN_POINT('NONE', (0.03264514242828719, 0.019049, 0.05247238027592237)); +#234 = CARTESIAN_POINT('NONE', (0.03287109730591826, 0.019049, 0.052521410367940814)); +#235 = CARTESIAN_POINT('NONE', (0.032874077511717996, 0.019049, 0.05252205704468498)); +#236 = CARTESIAN_POINT('NONE', (0.033100450831331986, 0.019049, 0.05258305749595031)); +#237 = CARTESIAN_POINT('NONE', (0.033103436556124, 0.019049, 0.052583862054367256)); +#238 = CARTESIAN_POINT('NONE', (0.033329322982178874, 0.019049, 0.05265707205792741)); +#239 = CARTESIAN_POINT('NONE', (0.03333230228514444, 0.019049, 0.05265803765282625)); +#240 = CARTESIAN_POINT('NONE', (0.03355675325415569, 0.019049, 0.05274360829095244)); +#241 = CARTESIAN_POINT('NONE', (0.03355971362432614, 0.019049, 0.05274473691501537)); +#242 = CARTESIAN_POINT('NONE', (0.03378174779924824, 0.019049, 0.052842723567250206)); +#243 = CARTESIAN_POINT('NONE', (0.03378467629339177, 0.019049, 0.05284401595089932)); +#244 = CARTESIAN_POINT('NONE', (0.03400329145072335, 0.019049, 0.05295437216778794)); +#245 = CARTESIAN_POINT('NONE', (0.03400617485012868, 0.019049, 0.052955827698383515)); +#246 = CARTESIAN_POINT('NONE', (0.03422036096124354, 0.019049, 0.05307840083757959)); +#247 = CARTESIAN_POINT('NONE', (0.03422318594425458, 0.019049, 0.05308001750186298)); +#248 = CARTESIAN_POINT('NONE', (0.03443193914485396, 0.019049, 0.05321454637863691)); +#249 = CARTESIAN_POINT('NONE', (0.034434692471118314, 0.019049, 0.05321632073174226)); +#250 = CARTESIAN_POINT('NONE', (0.03463702955470621, 0.019049, 0.053362435474352585)); +#251 = CARTESIAN_POINT('NONE', (0.0346396982563352, 0.019049, 0.053364362637899225)); +#252 = CARTESIAN_POINT('NONE', (0.03474072968589392, 0.019049, 0.05344583333333333)); +#253 = CARTESIAN_POINT('NONE', (0.03483467128385074, 0.019049, 0.05352158686220213)); +#254 = CARTESIAN_POINT('NONE', (0.034837242858111434, 0.019049, 0.053523660552976325)); +#255 = CARTESIAN_POINT('NONE', (0.03502395345023941, 0.019049, 0.053691415883794426)); +#256 = CARTESIAN_POINT('NONE', (0.03502641604806145, 0.019049, 0.05369362847338348)); +#257 = CARTESIAN_POINT('NONE', (0.03520402892209803, 0.019049, 0.053871241347420044)); +#258 = CARTESIAN_POINT('NONE', (0.035206371526616514, 0.019049, 0.05387358395193854)); +#259 = CARTESIAN_POINT('NONE', (0.035374126857434615, 0.019049, 0.05406029454406653)); +#260 = CARTESIAN_POINT('NONE', (0.03537633944702367, 0.019049, 0.05406275714188856)); +#261 = CARTESIAN_POINT('NONE', (0.03545416666666667, 0.019049, 0.05415927031410608)); +#262 = CARTESIAN_POINT('NONE', (0.035533563671326575, 0.019049, 0.05425773016940409)); +#263 = CARTESIAN_POINT('NONE', (0.035535637362100775, 0.019049, 0.05426030174366479)); +#264 = CARTESIAN_POINT('NONE', (0.035681752104711084, 0.019049, 0.05446263882725269)); +#265 = CARTESIAN_POINT('NONE', (0.035683679268257724, 0.019049, 0.05446530752888168)); +#266 = CARTESIAN_POINT('NONE', (0.035818208145031664, 0.019049, 0.054674060729481055)); +#267 = CARTESIAN_POINT('NONE', (0.03581998249813702, 0.019049, 0.05467681405574541)); +#268 = CARTESIAN_POINT('NONE', (0.03594255563733309, 0.019049, 0.054891000166860285)); +#269 = CARTESIAN_POINT('NONE', (0.03594417230161649, 0.019049, 0.05489382514987133)); +#270 = CARTESIAN_POINT('NONE', (0.03605452851850512, 0.019049, 0.055112440307202915)); +#271 = CARTESIAN_POINT('NONE', (0.036055984049100695, 0.019049, 0.055115323706608245)); +#272 = CARTESIAN_POINT('NONE', (0.036153970701335525, 0.019049, 0.05533735788153033)); +#273 = CARTESIAN_POINT('NONE', (0.03615526308498463, 0.019049, 0.055340286375673856)); +#274 = CARTESIAN_POINT('NONE', (0.036240833723110814, 0.019049, 0.0555647373446851)); +#275 = CARTESIAN_POINT('NONE', (0.036241962347173744, 0.019049, 0.05556769771485555)); +#276 = CARTESIAN_POINT('NONE', (0.03631517235073389, 0.019049, 0.055793584140910416)); +#277 = CARTESIAN_POINT('NONE', (0.03631613794563274, 0.019049, 0.05579656344387599)); +#278 = CARTESIAN_POINT('NONE', (0.03637713839689807, 0.019049, 0.05602293676348998)); +#279 = CARTESIAN_POINT('NONE', (0.03637794295531502, 0.019049, 0.056025922488282)); +#280 = CARTESIAN_POINT('NONE', (0.036426973047333465, 0.019049, 0.05625187736591306)); +#281 = CARTESIAN_POINT('NONE', (0.03642761972407763, 0.019049, 0.05625485757171281)); +#282 = CARTESIAN_POINT('NONE', (0.03646499802653966, 0.019049, 0.056479540755305466)); +#283 = CARTESIAN_POINT('NONE', (0.03646549102334924, 0.019049, 0.05648250418824335)); +#284 = CARTESIAN_POINT('NONE', (0.03649160593911746, 0.019049, 0.0567051216723537)); +#285 = CARTESIAN_POINT('NONE', (0.036491950378787226, 0.019049, 0.05670805785998649)); +#286 = CARTESIAN_POINT('NONE', (0.036507250117357434, 0.019049, 0.056927880331516)); +#287 = CARTESIAN_POINT('NONE', (0.036507451911494834, 0.019049, 0.0569307796546527)); +#288 = CARTESIAN_POINT('NONE', (0.03651243428555198, 0.019049, 0.05714714625764285)); +#289 = CARTESIAN_POINT('NONE', (0.0365125, 0.019049, 0.05715)); +#290 = CARTESIAN_POINT('NONE', (0.036507517625942856, 0.019049, 0.05736636660299013)); +#291 = CARTESIAN_POINT('NONE', (0.036507451911494834, 0.019049, 0.057369220345347284)); +#292 = CARTESIAN_POINT('NONE', (0.03649215217292462, 0.019049, 0.0575890428168768)); +#293 = CARTESIAN_POINT('NONE', (0.036491950378787226, 0.019049, 0.0575919421400135)); +#294 = CARTESIAN_POINT('NONE', (0.03646583546301901, 0.019049, 0.05781455962412385)); +#295 = CARTESIAN_POINT('NONE', (0.03646549102334924, 0.019049, 0.057817495811756645)); +#296 = CARTESIAN_POINT('NONE', (0.036428112720887224, 0.019049, 0.058042178995349296)); +#297 = CARTESIAN_POINT('NONE', (0.03642761972407764, 0.019049, 0.058045142428287184)); +#298 = CARTESIAN_POINT('NONE', (0.036378589632059186, 0.019049, 0.05827109730591824)); +#299 = CARTESIAN_POINT('NONE', (0.03637794295531502, 0.019049, 0.05827407751171799)); +#300 = CARTESIAN_POINT('NONE', (0.03631694250404968, 0.019049, 0.05850045083133198)); +#301 = CARTESIAN_POINT('NONE', (0.03631613794563274, 0.019049, 0.05850343655612399)); +#302 = CARTESIAN_POINT('NONE', (0.036242927942072595, 0.019049, 0.05872932298217886)); +#303 = CARTESIAN_POINT('NONE', (0.03624196234717375, 0.019049, 0.058732302285144436)); +#304 = CARTESIAN_POINT('NONE', (0.03615639170904757, 0.019049, 0.05895675325415569)); +#305 = CARTESIAN_POINT('NONE', (0.03615526308498464, 0.019049, 0.058959713624326136)); +#306 = CARTESIAN_POINT('NONE', (0.03605727643274981, 0.019049, 0.05918174779924824)); +#307 = CARTESIAN_POINT('NONE', (0.036055984049100695, 0.019049, 0.05918467629339177)); +#308 = CARTESIAN_POINT('NONE', (0.035945627832212064, 0.019049, 0.05940329145072335)); +#309 = CARTESIAN_POINT('NONE', (0.03594417230161649, 0.019049, 0.05940617485012868)); +#310 = CARTESIAN_POINT('NONE', (0.03582159916242041, 0.019049, 0.05962036096124353)); +#311 = CARTESIAN_POINT('NONE', (0.03581998249813702, 0.019049, 0.05962318594425457)); +#312 = CARTESIAN_POINT('NONE', (0.03568545362136307, 0.019049, 0.05983193914485395)); +#313 = CARTESIAN_POINT('NONE', (0.03568367926825772, 0.019049, 0.0598346924711183)); +#314 = CARTESIAN_POINT('NONE', (0.03553756452564741, 0.019049, 0.06003702955470621)); +#315 = CARTESIAN_POINT('NONE', (0.035535637362100775, 0.019049, 0.0600396982563352)); +#316 = CARTESIAN_POINT('NONE', (0.03545416666666667, 0.019049, 0.060140729685893915)); +#317 = CARTESIAN_POINT('NONE', (0.035378413137797854, 0.019049, 0.06023467128385074)); +#318 = CARTESIAN_POINT('NONE', (0.03537633944702367, 0.019049, 0.06023724285811143)); +#319 = CARTESIAN_POINT('NONE', (0.03520858411620557, 0.019049, 0.060423953450239404)); +#320 = CARTESIAN_POINT('NONE', (0.035206371526616514, 0.019049, 0.06042641604806144)); +#321 = CARTESIAN_POINT('NONE', (0.03511639378733898, 0.019049, 0.06051639378733898)); +#322 = CARTESIAN_POINT('NONE', (0.03502875865257994, 0.019049, 0.06060402892209802)); +#323 = CARTESIAN_POINT('NONE', (0.03502641604806145, 0.019049, 0.060606371526616507)); +#324 = CARTESIAN_POINT('NONE', (0.03483970545593346, 0.019049, 0.060774126857434614)); +#325 = CARTESIAN_POINT('NONE', (0.034837242858111434, 0.019049, 0.06077633944702367)); +#326 = CARTESIAN_POINT('NONE', (0.03474072968589392, 0.019049, 0.06085416666666666)); +#327 = CARTESIAN_POINT('NONE', (0.03464226983059591, 0.019049, 0.06093356367132657)); +#328 = CARTESIAN_POINT('NONE', (0.03463969825633521, 0.019049, 0.06093563736210077)); +#329 = CARTESIAN_POINT('NONE', (0.03443736117274731, 0.019049, 0.061081752104711076)); +#330 = CARTESIAN_POINT('NONE', (0.03443469247111832, 0.019049, 0.061083679268257716)); +#331 = CARTESIAN_POINT('NONE', (0.03422593927051894, 0.019049, 0.06121820814503164)); +#332 = CARTESIAN_POINT('NONE', (0.03422318594425458, 0.019049, 0.061219982498137)); +#333 = CARTESIAN_POINT('NONE', (0.03400899983313972, 0.019049, 0.06134255563733308)); +#334 = CARTESIAN_POINT('NONE', (0.03400617485012868, 0.019049, 0.061344172301616484)); +#335 = CARTESIAN_POINT('NONE', (0.0337875596927971, 0.019049, 0.061454528518505115)); +#336 = CARTESIAN_POINT('NONE', (0.03378467629339177, 0.019049, 0.06145598404910069)); +#337 = CARTESIAN_POINT('NONE', (0.03356264211846966, 0.019049, 0.061553970701335524)); +#338 = CARTESIAN_POINT('NONE', (0.03355971362432614, 0.019049, 0.061555263084984636)); +#339 = CARTESIAN_POINT('NONE', (0.033335262655314876, 0.019049, 0.061640833723110806)); +#340 = CARTESIAN_POINT('NONE', (0.03333230228514444, 0.019049, 0.061641962347173736)); +#341 = CARTESIAN_POINT('NONE', (0.033106415859089564, 0.019049, 0.061715172350733885)); +#342 = CARTESIAN_POINT('NONE', (0.033103436556123994, 0.019049, 0.06171613794563273)); +#343 = CARTESIAN_POINT('NONE', (0.03287706323651002, 0.019049, 0.06177713839689807)); +#344 = CARTESIAN_POINT('NONE', (0.032874077511717996, 0.019049, 0.06177794295531502)); +#345 = CARTESIAN_POINT('NONE', (0.032648122634086923, 0.019049, 0.061826973047333464)); +#346 = CARTESIAN_POINT('NONE', (0.03264514242828718, 0.019049, 0.06182761972407763)); +#347 = CARTESIAN_POINT('NONE', (0.03242045924469453, 0.019049, 0.06186499802653966)); +#348 = CARTESIAN_POINT('NONE', (0.032417495811756646, 0.019049, 0.06186549102334924)); +#349 = CARTESIAN_POINT('NONE', (0.032194878327646295, 0.019049, 0.06189160593911745)); +#350 = CARTESIAN_POINT('NONE', (0.0321919421400135, 0.019049, 0.06189195037878721)); +#351 = CARTESIAN_POINT('NONE', (0.031972119668484, 0.019049, 0.06190725011735743)); +#352 = CARTESIAN_POINT('NONE', (0.03196922034534729, 0.019049, 0.06190745191149483)); +#353 = CARTESIAN_POINT('NONE', (0.03175285374235716, 0.019049, 0.06191243428555198)); +#354 = CARTESIAN_POINT('NONE', (0.03175, 0.019049, 0.0619125)); +#355 = CARTESIAN_POINT('NONE', (0.03153363339700987, 0.019049, 0.06190751762594285)); +#356 = CARTESIAN_POINT('NONE', (0.03153077965465271, 0.019049, 0.06190745191149483)); +#357 = CARTESIAN_POINT('NONE', (0.03131095718312319, 0.019049, 0.06189215217292461)); +#358 = CARTESIAN_POINT('NONE', (0.03130805785998649, 0.019049, 0.06189195037878721)); +#359 = CARTESIAN_POINT('NONE', (0.031085440375876138, 0.019049, 0.061865835463019006)); +#360 = CARTESIAN_POINT('NONE', (0.03108250418824335, 0.019049, 0.06186549102334924)); +#361 = CARTESIAN_POINT('NONE', (0.030857821004650707, 0.019049, 0.061828112720887236)); +#362 = CARTESIAN_POINT('NONE', (0.030854857571712815, 0.019049, 0.06182761972407765)); +#363 = CARTESIAN_POINT('NONE', (0.03062890269408175, 0.019049, 0.06177858963205919)); +#364 = CARTESIAN_POINT('NONE', (0.030625922488282005, 0.019049, 0.061777942955315024)); +#365 = CARTESIAN_POINT('NONE', (0.03039954916866802, 0.019049, 0.06171694250404969)); +#366 = CARTESIAN_POINT('NONE', (0.030396563443875996, 0.019049, 0.06171613794563274)); +#367 = CARTESIAN_POINT('NONE', (0.030170677017821137, 0.019049, 0.06164292794207259)); +#368 = CARTESIAN_POINT('NONE', (0.03016769771485556, 0.019049, 0.06164196234717374)); +#369 = CARTESIAN_POINT('NONE', (0.029943246745844313, 0.019049, 0.06155639170904758)); +#370 = CARTESIAN_POINT('NONE', (0.029940286375673867, 0.019049, 0.06155526308498464)); +#371 = CARTESIAN_POINT('NONE', (0.029718252200751773, 0.019049, 0.06145727643274981)); +#372 = CARTESIAN_POINT('NONE', (0.029715323706608242, 0.019049, 0.0614559840491007)); +#373 = CARTESIAN_POINT('NONE', (0.02949670854927666, 0.019049, 0.06134562783221204)); +#374 = CARTESIAN_POINT('NONE', (0.029493825149871335, 0.019049, 0.061344172301616484)); +#375 = CARTESIAN_POINT('NONE', (0.02927963903875646, 0.019049, 0.061221599162420405)); +#376 = CARTESIAN_POINT('NONE', (0.029276814055745424, 0.019049, 0.06121998249813701)); +#377 = CARTESIAN_POINT('NONE', (0.029068060855146027, 0.019049, 0.06108545362136306)); +#378 = CARTESIAN_POINT('NONE', (0.029065307528881677, 0.019049, 0.06108367926825771)); +#379 = CARTESIAN_POINT('NONE', (0.028862970445293786, 0.019049, 0.06093756452564742)); +#380 = CARTESIAN_POINT('NONE', (0.028860301743664798, 0.019049, 0.06093563736210079)); +#381 = CARTESIAN_POINT('NONE', (0.028759270314106057, 0.019049, 0.06085416666666666)); +#382 = CARTESIAN_POINT('NONE', (0.028665328716149262, 0.019049, 0.06077841313779786)); +#383 = CARTESIAN_POINT('NONE', (0.028662757141888567, 0.019049, 0.060776339447023674)); +#384 = CARTESIAN_POINT('NONE', (0.028476046549760586, 0.019049, 0.06060858411620556)); +#385 = CARTESIAN_POINT('NONE', (0.028473583951938546, 0.019049, 0.060606371526616507)); +#386 = CARTESIAN_POINT('NONE', (0.028295971077901983, 0.019049, 0.060428758652579954)); +#387 = CARTESIAN_POINT('NONE', (0.028293628473383493, 0.019049, 0.06042641604806146)); +#388 = CARTESIAN_POINT('NONE', (0.02812587314256538, 0.019049, 0.06023970545593346)); +#389 = CARTESIAN_POINT('NONE', (0.02812366055297633, 0.019049, 0.06023724285811143)); +#390 = CARTESIAN_POINT('NONE', (0.028045833333333332, 0.019049, 0.06014072968589391)); +#391 = CARTESIAN_POINT('NONE', (0.02796643632867343, 0.019049, 0.0600422698305959)); +#392 = CARTESIAN_POINT('NONE', (0.027964362637899236, 0.019049, 0.0600396982563352)); +#393 = CARTESIAN_POINT('NONE', (0.027818247895288917, 0.019049, 0.059837361172747315)); +#394 = CARTESIAN_POINT('NONE', (0.02781632073174228, 0.019049, 0.05983469247111833)); +#395 = CARTESIAN_POINT('NONE', (0.027681791854968347, 0.019049, 0.059625939270518936)); +#396 = CARTESIAN_POINT('NONE', (0.027680017501862993, 0.019049, 0.05962318594425458)); +#397 = CARTESIAN_POINT('NONE', (0.027557444362666928, 0.019049, 0.05940899983313972)); +#398 = CARTESIAN_POINT('NONE', (0.02755582769838353, 0.019049, 0.05940617485012868)); +#399 = CARTESIAN_POINT('NONE', (0.027445471481494885, 0.019049, 0.05918755969279709)); +#400 = CARTESIAN_POINT('NONE', (0.027444015950899316, 0.019049, 0.05918467629339177)); +#401 = CARTESIAN_POINT('NONE', (0.027346029298664476, 0.019049, 0.05896264211846967)); +#402 = CARTESIAN_POINT('NONE', (0.027344736915015364, 0.019049, 0.05895971362432614)); +#403 = CARTESIAN_POINT('NONE', (0.027259166276889187, 0.019049, 0.05873526265531488)); +#404 = CARTESIAN_POINT('NONE', (0.027258037652826257, 0.019049, 0.05873230228514444)); +#405 = CARTESIAN_POINT('NONE', (0.0271848276492661, 0.019049, 0.05850641585908957)); +#406 = CARTESIAN_POINT('NONE', (0.027183862054367257, 0.019049, 0.058503436556124)); +#407 = CARTESIAN_POINT('NONE', (0.02712286160310193, 0.019049, 0.05827706323651002)); +#408 = CARTESIAN_POINT('NONE', (0.027122057044684986, 0.019049, 0.058274077511717995)); +#409 = CARTESIAN_POINT('NONE', (0.027073026952666533, 0.019049, 0.05804812263408693)); +#410 = CARTESIAN_POINT('NONE', (0.02707238027592236, 0.019049, 0.058045142428287184)); +#411 = CARTESIAN_POINT('NONE', (0.027035001973460333, 0.019049, 0.05782045924469453)); +#412 = CARTESIAN_POINT('NONE', (0.02703450897665075, 0.019049, 0.05781749581175665)); +#413 = CARTESIAN_POINT('NONE', (0.027008394060882537, 0.019049, 0.057594878327646294)); +#414 = CARTESIAN_POINT('NONE', (0.02700804962121278, 0.019049, 0.0575919421400135)); +#415 = CARTESIAN_POINT('NONE', (0.026992749882642563, 0.019049, 0.05737211966848399)); +#416 = CARTESIAN_POINT('NONE', (0.02699254808850517, 0.019049, 0.057369220345347284)); +#417 = CARTESIAN_POINT('NONE', (0.026987565714448023, 0.019049, 0.05715285374235715)); +#418 = CARTESIAN_POINT('NONE', (0.0269875, 0.019049, 0.05715)); +#419 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#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), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (0, 0.0038910505836575876, 0.007782101167315175, 0.011673151750972763, 0.01556420233463035, 0.019455252918287938, 0.023346303501945526, 0.027237354085603113, 0.0311284046692607, 0.03501945525291829, 0.038910505836575876, 0.042801556420233464, 0.04669260700389105, 0.05058365758754864, 0.054474708171206226, 0.058365758754863814, 0.0622568093385214, 0.06614785992217899, 0.07003891050583658, 0.07392996108949416, 0.07782101167315175, 0.08171206225680934, 0.08560311284046693, 0.08949416342412451, 0.0933852140077821, 0.09727626459143969, 0.10116731517509728, 0.10505836575875487, 0.10894941634241245, 0.11284046692607004, 0.11673151750972763, 0.12062256809338522, 0.1245136186770428, 0.12840466926070038, 0.13229571984435798, 0.13618677042801558, 0.14007782101167315, 0.14396887159533073, 0.14785992217898833, 0.15175097276264593, 0.1556420233463035, 0.15953307392996108, 0.16342412451361868, 0.16731517509727628, 0.17120622568093385, 0.17509727626459143, 0.17898832684824903, 0.18287937743190663, 0.1867704280155642, 0.19066147859922178, 0.19455252918287938, 0.19844357976653698, 0.20233463035019456, 0.20622568093385213, 0.21011673151750973, 0.21400778210116733, 0.2178988326848249, 0.22178988326848248, 0.22568093385214008, 0.22957198443579768, 0.23346303501945526, 0.23735408560311283, 0.24124513618677043, 0.24513618677042803, 0.2490272373540856, 0.2529182879377432, 0.25680933852140075, 0.2607003891050584, 0.26459143968871596, 0.26848249027237353, 0.27237354085603116, 0.27626459143968873, 0.2801556420233463, 0.2840466926070039, 0.28793774319066145, 0.2918287937743191, 0.29571984435797666, 0.29961089494163423, 0.30350194552529186, 0.30739299610894943, 0.311284046692607, 0.3151750972762646, 0.31906614785992216, 0.3229571984435798, 0.32684824902723736, 0.33073929961089493, 0.33463035019455256, 0.33852140077821014, 0.3424124513618677, 0.3463035019455253, 0.35019455252918286, 0.3540856031128405, 0.35797665369649806, 0.36186770428015563, 0.36575875486381326, 0.36964980544747084, 0.3735408560311284, 0.377431906614786, 0.38132295719844356, 0.3852140077821012, 0.38910505836575876, 0.39299610894941633, 0.39688715953307396, 0.40077821011673154, 0.4046692607003891, 0.4085603112840467, 0.41245136186770426, 0.4163424124513619, 0.42023346303501946, 0.42412451361867703, 0.42801556420233466, 0.43190661478599224, 0.4357976653696498, 0.4396887159533074, 0.44357976653696496, 0.4474708171206226, 0.45136186770428016, 0.45525291828793774, 0.45914396887159536, 0.46303501945525294, 0.4669260700389105, 0.4708171206225681, 0.47470817120622566, 0.4785992217898833, 0.48249027237354086, 0.48638132295719844, 0.49027237354085607, 0.49416342412451364, 0.4980544747081712, 0.5019455252918288, 0.5058365758754864, 0.5097276264591439, 0.5136186770428015, 0.5175097276264591, 0.5214007782101167, 0.5252918287937743, 0.5291828793774319, 0.5330739299610895, 0.5369649805447471, 0.5408560311284046, 0.5447470817120623, 0.5486381322957199, 0.5525291828793775, 0.556420233463035, 0.5603112840466926, 0.5642023346303502, 0.5680933852140078, 0.5719844357976653, 0.5758754863813229, 0.5797665369649805, 0.5836575875486381, 0.5875486381322957, 0.5914396887159533, 0.5953307392996109, 0.5992217898832685, 0.603112840466926, 0.6070038910505837, 0.6108949416342413, 0.6147859922178989, 0.6186770428015564, 0.622568093385214, 0.6264591439688716, 0.6303501945525292, 0.6342412451361867, 0.6381322957198443, 0.6420233463035019, 0.6459143968871595, 0.6498054474708171, 0.6536964980544747, 0.6575875486381323, 0.6614785992217899, 0.6653696498054474, 0.6692607003891051, 0.6731517509727627, 0.6770428015564203, 0.6809338521400778, 0.6848249027237354, 0.688715953307393, 0.6926070038910506, 0.6964980544747081, 0.7003891050583657, 0.7042801556420233, 0.7081712062256809, 0.7120622568093385, 0.7159533073929961, 0.7198443579766537, 0.7237354085603113, 0.7276264591439688, 0.7315175097276265, 0.7354085603112841, 0.7392996108949417, 0.7431906614785992, 0.7470817120622568, 0.7509727626459144, 0.754863813229572, 0.7587548638132295, 0.7626459143968871, 0.7665369649805447, 0.7704280155642023, 0.77431906614786, 0.7782101167315175, 0.7821011673151751, 0.7859922178988327, 0.7898832684824902, 0.7937743190661479, 0.7976653696498055, 0.8015564202334631, 0.8054474708171206, 0.8093385214007782, 0.8132295719844358, 0.8171206225680934, 0.8210116731517509, 0.8249027237354085, 0.8287937743190661, 0.8326848249027237, 0.8365758754863813, 0.8404669260700389, 0.8443579766536965, 0.8482490272373541, 0.8521400778210116, 0.8560311284046693, 0.8599221789883269, 0.8638132295719845, 0.867704280155642, 0.8715953307392996, 0.8754863813229572, 0.8793774319066148, 0.8832684824902723, 0.8871595330739299, 0.8910505836575875, 0.8949416342412452, 0.8988326848249028, 0.9027237354085603, 0.9066147859922179, 0.9105058365758755, 0.914396887159533, 0.9182879377431906, 0.9221789883268483, 0.9260700389105059, 0.9299610894941635, 0.933852140077821, 0.9377431906614786, 0.9416342412451362, 0.9455252918287937, 0.9494163424124513, 0.9533073929961089, 0.9571984435797666, 0.9610894941634242, 0.9649805447470817, 0.9688715953307393, 0.9727626459143969, 0.9766536964980544, 0.980544747081712, 0.9844357976653697, 0.9883268482490273, 0.9922178988326849, 0.9961089494163424, 1), .UNSPECIFIED.); +#420 = DIRECTION('NONE', (0, -1, 0)); +#421 = VECTOR('NONE', #420, 1); +#422 = CARTESIAN_POINT('NONE', (0.0269875, 0.019051000000000002, 0.05715)); +#423 = LINE('NONE', #422, #421); +#424 = DIRECTION('NONE', (-1, 0, 0.0000000000000014919532509398443)); +#425 = DIRECTION('NONE', (-0, -1, 0)); +#426 = CARTESIAN_POINT('NONE', (0.031749999999999994, -0, 0.05714999999999999)); +#427 = AXIS2_PLACEMENT_3D('NONE', #426, #425, #424); +#428 = CIRCLE('NONE', #427, 0.004762499999999996); +#429 = CARTESIAN_POINT('NONE', (-0.0365125, 0.019049, 0.05715)); +#430 = CARTESIAN_POINT('NONE', (-0.036507517625942856, 0.019049, 0.05693363339700987)); +#431 = CARTESIAN_POINT('NONE', (-0.036507451911494834, 0.019049, 0.05693077965465271)); +#432 = CARTESIAN_POINT('NONE', (-0.036492152172924626, 0.019049, 0.056710957183123197)); +#433 = CARTESIAN_POINT('NONE', (-0.03649195037878723, 0.019049, 0.0567080578599865)); +#434 = CARTESIAN_POINT('NONE', (-0.03646583546301901, 0.019049, 0.05648544037587615)); +#435 = CARTESIAN_POINT('NONE', (-0.03646549102334924, 0.019049, 0.056482504188243354)); +#436 = CARTESIAN_POINT('NONE', (-0.03642811272088722, 0.019049, 0.056257821004650696)); +#437 = CARTESIAN_POINT('NONE', (-0.03642761972407763, 0.019049, 0.056254857571712814)); +#438 = CARTESIAN_POINT('NONE', (-0.03637858963205918, 0.019049, 0.05602890269408173)); +#439 = CARTESIAN_POINT('NONE', (-0.03637794295531501, 0.019049, 0.05602592248828199)); +#440 = CARTESIAN_POINT('NONE', (-0.03631694250404969, 0.019049, 0.05579954916866802)); +#441 = CARTESIAN_POINT('NONE', (-0.036316137945632744, 0.019049, 0.055796563443876006)); +#442 = CARTESIAN_POINT('NONE', (-0.036242927942072574, 0.019049, 0.05557067701782111)); +#443 = CARTESIAN_POINT('NONE', (-0.03624196234717374, 0.019049, 0.05556769771485555)); +#444 = CARTESIAN_POINT('NONE', (-0.03615639170904756, 0.019049, 0.055343246745844295)); +#445 = CARTESIAN_POINT('NONE', (-0.03615526308498463, 0.019049, 0.055340286375673856)); +#446 = CARTESIAN_POINT('NONE', (-0.03605727643274981, 0.019049, 0.05511825220075177)); +#447 = CARTESIAN_POINT('NONE', (-0.036055984049100695, 0.019049, 0.05511532370660824)); +#448 = CARTESIAN_POINT('NONE', (-0.03594562783221205, 0.019049, 0.054896708549276654)); +#449 = CARTESIAN_POINT('NONE', (-0.035944172301616485, 0.019049, 0.054893825149871324)); +#450 = CARTESIAN_POINT('NONE', (-0.035821599162420406, 0.019049, 0.05467963903875645)); +#451 = CARTESIAN_POINT('NONE', (-0.03581998249813702, 0.019049, 0.05467681405574542)); +#452 = CARTESIAN_POINT('NONE', (-0.03568545362136307, 0.019049, 0.054468060855146036)); +#453 = CARTESIAN_POINT('NONE', (-0.03568367926825772, 0.019049, 0.05446530752888168)); +#454 = CARTESIAN_POINT('NONE', (-0.03553756452564741, 0.019049, 0.05426297044529378)); +#455 = CARTESIAN_POINT('NONE', (-0.035535637362100775, 0.019049, 0.05426030174366479)); +#456 = CARTESIAN_POINT('NONE', (-0.03545416666666667, 0.019049, 0.05415927031410607)); +#457 = CARTESIAN_POINT('NONE', (-0.03537841313779787, 0.019049, 0.05406532871614926)); +#458 = CARTESIAN_POINT('NONE', (-0.035376339447023675, 0.019049, 0.05406275714188856)); +#459 = CARTESIAN_POINT('NONE', (-0.03520858411620557, 0.019049, 0.053876046549760574)); +#460 = CARTESIAN_POINT('NONE', (-0.035206371526616514, 0.019049, 0.05387358395193854)); +#461 = CARTESIAN_POINT('NONE', (-0.03511639378733899, 0.019049, 0.05378360621266101)); +#462 = CARTESIAN_POINT('NONE', (-0.03502875865257994, 0.019049, 0.05369597107790197)); +#463 = CARTESIAN_POINT('NONE', (-0.03502641604806145, 0.019049, 0.053693628473383485)); +#464 = CARTESIAN_POINT('NONE', (-0.03483970545593346, 0.019049, 0.05352587314256537)); +#465 = CARTESIAN_POINT('NONE', (-0.034837242858111434, 0.019049, 0.053523660552976325)); +#466 = CARTESIAN_POINT('NONE', (-0.03474072968589392, 0.019049, 0.05344583333333333)); +#467 = CARTESIAN_POINT('NONE', (-0.03464226983059591, 0.019049, 0.053366436328673425)); +#468 = CARTESIAN_POINT('NONE', (-0.03463969825633521, 0.019049, 0.053364362637899225)); +#469 = CARTESIAN_POINT('NONE', (-0.03443736117274731, 0.019049, 0.05321824789528891)); +#470 = CARTESIAN_POINT('NONE', (-0.03443469247111832, 0.019049, 0.05321632073174227)); +#471 = CARTESIAN_POINT('NONE', (-0.03422593927051894, 0.019049, 0.05308179185496834)); +#472 = CARTESIAN_POINT('NONE', (-0.03422318594425458, 0.019049, 0.05308001750186299)); +#473 = CARTESIAN_POINT('NONE', (-0.03400899983313972, 0.019049, 0.05295744436266692)); +#474 = CARTESIAN_POINT('NONE', (-0.03400617485012868, 0.019049, 0.05295582769838352)); +#475 = CARTESIAN_POINT('NONE', (-0.0337875596927971, 0.019049, 0.05284547148149489)); +#476 = CARTESIAN_POINT('NONE', (-0.03378467629339177, 0.019049, 0.05284401595089932)); +#477 = CARTESIAN_POINT('NONE', (-0.03356264211846966, 0.019049, 0.05274602929866447)); +#478 = CARTESIAN_POINT('NONE', (-0.03355971362432614, 0.019049, 0.05274473691501536)); +#479 = CARTESIAN_POINT('NONE', (-0.033335262655314876, 0.019049, 0.05265916627688918)); +#480 = CARTESIAN_POINT('NONE', (-0.03333230228514444, 0.019049, 0.05265803765282625)); +#481 = CARTESIAN_POINT('NONE', (-0.03310641585908957, 0.019049, 0.052584827649266086)); +#482 = CARTESIAN_POINT('NONE', (-0.033103436556124, 0.019049, 0.05258386205436724)); +#483 = CARTESIAN_POINT('NONE', (-0.03287706323651001, 0.019049, 0.05252286160310193)); +#484 = CARTESIAN_POINT('NONE', (-0.032874077511717996, 0.019049, 0.05252205704468498)); +#485 = CARTESIAN_POINT('NONE', (-0.03264812263408692, 0.019049, 0.05247302695266652)); +#486 = CARTESIAN_POINT('NONE', (-0.03264514242828718, 0.019049, 0.05247238027592235)); +#487 = CARTESIAN_POINT('NONE', (-0.032420459244694534, 0.019049, 0.05243500197346033)); +#488 = CARTESIAN_POINT('NONE', (-0.03241749581175665, 0.019049, 0.052434508976650744)); +#489 = CARTESIAN_POINT('NONE', (-0.032194878327646295, 0.019049, 0.05240839406088253)); +#490 = CARTESIAN_POINT('NONE', (-0.0321919421400135, 0.019049, 0.05240804962121277)); +#491 = CARTESIAN_POINT('NONE', (-0.031972119668484, 0.019049, 0.05239274988264256)); +#492 = CARTESIAN_POINT('NONE', (-0.03196922034534729, 0.019049, 0.052392548088505166)); +#493 = CARTESIAN_POINT('NONE', (-0.03175285374235716, 0.019049, 0.05238756571444802)); +#494 = CARTESIAN_POINT('NONE', (-0.03175, 0.019049, 0.0523875)); +#495 = CARTESIAN_POINT('NONE', (-0.03153363339700987, 0.019049, 0.052392482374057144)); +#496 = CARTESIAN_POINT('NONE', (-0.03153077965465271, 0.019049, 0.052392548088505166)); +#497 = CARTESIAN_POINT('NONE', (-0.031310957183123184, 0.019049, 0.05240784782707537)); +#498 = CARTESIAN_POINT('NONE', (-0.03130805785998649, 0.019049, 0.05240804962121276)); +#499 = CARTESIAN_POINT('NONE', (-0.031085440375876135, 0.019049, 0.05243416453698098)); +#500 = CARTESIAN_POINT('NONE', (-0.031082504188243345, 0.019049, 0.05243450897665074)); +#501 = CARTESIAN_POINT('NONE', (-0.030857821004650707, 0.019049, 0.05247188727911278)); +#502 = CARTESIAN_POINT('NONE', (-0.030854857571712815, 0.019049, 0.05247238027592237)); +#503 = CARTESIAN_POINT('NONE', (-0.030628902694081746, 0.019049, 0.052521410367940814)); +#504 = CARTESIAN_POINT('NONE', (-0.030625922488282, 0.019049, 0.05252205704468498)); +#505 = CARTESIAN_POINT('NONE', (-0.030399549168668025, 0.019049, 0.05258305749595031)); +#506 = CARTESIAN_POINT('NONE', (-0.030396563443876003, 0.019049, 0.052583862054367256)); +#507 = CARTESIAN_POINT('NONE', (-0.030170677017821116, 0.019049, 0.05265707205792741)); +#508 = CARTESIAN_POINT('NONE', (-0.030167697714855553, 0.019049, 0.05265803765282625)); +#509 = CARTESIAN_POINT('NONE', (-0.029943246745844303, 0.019049, 0.05274360829095244)); +#510 = CARTESIAN_POINT('NONE', (-0.029940286375673864, 0.019049, 0.05274473691501537)); +#511 = CARTESIAN_POINT('NONE', (-0.02971825220075177, 0.019049, 0.052842723567250206)); +#512 = CARTESIAN_POINT('NONE', (-0.02971532370660824, 0.019049, 0.05284401595089932)); +#513 = CARTESIAN_POINT('NONE', (-0.02949670854927666, 0.019049, 0.05295437216778794)); +#514 = CARTESIAN_POINT('NONE', (-0.029493825149871332, 0.019049, 0.052955827698383515)); +#515 = CARTESIAN_POINT('NONE', (-0.02927963903875646, 0.019049, 0.05307840083757959)); +#516 = CARTESIAN_POINT('NONE', (-0.029276814055745424, 0.019049, 0.05308001750186298)); +#517 = CARTESIAN_POINT('NONE', (-0.029068060855146023, 0.019049, 0.05321454637863691)); +#518 = CARTESIAN_POINT('NONE', (-0.029065307528881673, 0.019049, 0.05321632073174226)); +#519 = CARTESIAN_POINT('NONE', (-0.02886297044529378, 0.019049, 0.053362435474352585)); +#520 = CARTESIAN_POINT('NONE', (-0.02886030174366479, 0.019049, 0.053364362637899225)); +#521 = CARTESIAN_POINT('NONE', (-0.028759270314106068, 0.019049, 0.05344583333333333)); +#522 = CARTESIAN_POINT('NONE', (-0.028665328716149255, 0.019049, 0.05352158686220213)); +#523 = CARTESIAN_POINT('NONE', (-0.02866275714188856, 0.019049, 0.053523660552976325)); +#524 = CARTESIAN_POINT('NONE', (-0.028476046549760586, 0.019049, 0.053691415883794426)); +#525 = CARTESIAN_POINT('NONE', (-0.028473583951938546, 0.019049, 0.05369362847338348)); +#526 = CARTESIAN_POINT('NONE', (-0.028295971077901973, 0.019049, 0.053871241347420044)); +#527 = CARTESIAN_POINT('NONE', (-0.028293628473383486, 0.019049, 0.05387358395193854)); +#528 = CARTESIAN_POINT('NONE', (-0.028125873142565375, 0.019049, 0.05406029454406653)); +#529 = CARTESIAN_POINT('NONE', (-0.028123660552976326, 0.019049, 0.05406275714188856)); +#530 = CARTESIAN_POINT('NONE', (-0.028045833333333336, 0.019049, 0.05415927031410607)); +#531 = CARTESIAN_POINT('NONE', (-0.02796643632867342, 0.019049, 0.05425773016940409)); +#532 = CARTESIAN_POINT('NONE', (-0.02796436263789923, 0.019049, 0.05426030174366479)); +#533 = CARTESIAN_POINT('NONE', (-0.027818247895288913, 0.019049, 0.05446263882725269)); +#534 = CARTESIAN_POINT('NONE', (-0.027816320731742276, 0.019049, 0.05446530752888168)); +#535 = CARTESIAN_POINT('NONE', (-0.027681791854968343, 0.019049, 0.054674060729481055)); +#536 = CARTESIAN_POINT('NONE', (-0.02768001750186299, 0.019049, 0.05467681405574541)); +#537 = CARTESIAN_POINT('NONE', (-0.027557444362666925, 0.019049, 0.054891000166860285)); +#538 = CARTESIAN_POINT('NONE', (-0.027555827698383526, 0.019049, 0.05489382514987133)); +#539 = CARTESIAN_POINT('NONE', (-0.027445471481494885, 0.019049, 0.055112440307202915)); +#540 = CARTESIAN_POINT('NONE', (-0.027444015950899316, 0.019049, 0.055115323706608245)); +#541 = CARTESIAN_POINT('NONE', (-0.027346029298664472, 0.019049, 0.05533735788153033)); +#542 = CARTESIAN_POINT('NONE', (-0.02734473691501536, 0.019049, 0.055340286375673856)); +#543 = CARTESIAN_POINT('NONE', (-0.02725916627688918, 0.019049, 0.0555647373446851)); +#544 = CARTESIAN_POINT('NONE', (-0.02725803765282625, 0.019049, 0.05556769771485555)); +#545 = CARTESIAN_POINT('NONE', (-0.027184827649266094, 0.019049, 0.055793584140910416)); +#546 = CARTESIAN_POINT('NONE', (-0.027183862054367253, 0.019049, 0.05579656344387599)); +#547 = CARTESIAN_POINT('NONE', (-0.027122861603101928, 0.019049, 0.05602293676348998)); +#548 = CARTESIAN_POINT('NONE', (-0.027122057044684983, 0.019049, 0.056025922488282)); +#549 = CARTESIAN_POINT('NONE', (-0.027073026952666533, 0.019049, 0.05625187736591306)); +#550 = CARTESIAN_POINT('NONE', (-0.02707238027592236, 0.019049, 0.05625485757171281)); +#551 = CARTESIAN_POINT('NONE', (-0.027035001973460333, 0.019049, 0.056479540755305466)); +#552 = CARTESIAN_POINT('NONE', (-0.02703450897665075, 0.019049, 0.05648250418824335)); +#553 = CARTESIAN_POINT('NONE', (-0.027008394060882537, 0.019049, 0.0567051216723537)); +#554 = CARTESIAN_POINT('NONE', (-0.02700804962121278, 0.019049, 0.05670805785998649)); +#555 = CARTESIAN_POINT('NONE', (-0.026992749882642563, 0.019049, 0.056927880331516)); +#556 = CARTESIAN_POINT('NONE', (-0.02699254808850517, 0.019049, 0.0569307796546527)); +#557 = CARTESIAN_POINT('NONE', (-0.026987565714448023, 0.019049, 0.05714714625764285)); +#558 = CARTESIAN_POINT('NONE', (-0.0269875, 0.019049, 0.05715)); +#559 = CARTESIAN_POINT('NONE', (-0.026992482374057148, 0.019049, 0.05736636660299013)); +#560 = CARTESIAN_POINT('NONE', (-0.02699254808850517, 0.019049, 0.057369220345347284)); +#561 = CARTESIAN_POINT('NONE', (-0.027007847827075385, 0.019049, 0.0575890428168768)); +#562 = CARTESIAN_POINT('NONE', (-0.02700804962121278, 0.019049, 0.0575919421400135)); +#563 = CARTESIAN_POINT('NONE', (-0.027034164536980987, 0.019049, 0.05781455962412385)); +#564 = CARTESIAN_POINT('NONE', (-0.02703450897665075, 0.019049, 0.057817495811756645)); +#565 = CARTESIAN_POINT('NONE', (-0.027071887279112788, 0.019049, 0.058042178995349296)); +#566 = CARTESIAN_POINT('NONE', (-0.027072380275922372, 0.019049, 0.058045142428287184)); +#567 = CARTESIAN_POINT('NONE', (-0.02712141036794082, 0.019049, 0.05827109730591824)); +#568 = CARTESIAN_POINT('NONE', (-0.027122057044684986, 0.019049, 0.05827407751171799)); +#569 = CARTESIAN_POINT('NONE', (-0.027183057495950312, 0.019049, 0.05850045083133198)); +#570 = CARTESIAN_POINT('NONE', (-0.027183862054367257, 0.019049, 0.05850343655612399)); +#571 = CARTESIAN_POINT('NONE', (-0.027257072057927413, 0.019049, 0.05872932298217886)); +#572 = CARTESIAN_POINT('NONE', (-0.027258037652826257, 0.019049, 0.058732302285144436)); +#573 = CARTESIAN_POINT('NONE', (-0.02734360829095243, 0.019049, 0.05895675325415569)); +#574 = CARTESIAN_POINT('NONE', (-0.027344736915015364, 0.019049, 0.058959713624326136)); +#575 = CARTESIAN_POINT('NONE', (-0.027442723567250197, 0.019049, 0.05918174779924824)); +#576 = CARTESIAN_POINT('NONE', (-0.027444015950899313, 0.019049, 0.05918467629339177)); +#577 = CARTESIAN_POINT('NONE', (-0.02755437216778796, 0.019049, 0.05940329145072335)); +#578 = CARTESIAN_POINT('NONE', (-0.027555827698383526, 0.019049, 0.05940617485012868)); +#579 = CARTESIAN_POINT('NONE', (-0.0276784008375796, 0.019049, 0.05962036096124353)); +#580 = CARTESIAN_POINT('NONE', (-0.027680017501862993, 0.019049, 0.05962318594425457)); +#581 = CARTESIAN_POINT('NONE', (-0.027814546378636923, 0.019049, 0.05983193914485395)); +#582 = CARTESIAN_POINT('NONE', (-0.027816320731742273, 0.019049, 0.0598346924711183)); +#583 = CARTESIAN_POINT('NONE', (-0.027962435474352593, 0.019049, 0.06003702955470621)); +#584 = CARTESIAN_POINT('NONE', (-0.02796436263789923, 0.019049, 0.0600396982563352)); +#585 = CARTESIAN_POINT('NONE', (-0.028045833333333336, 0.019049, 0.060140729685893915)); +#586 = CARTESIAN_POINT('NONE', (-0.02812158686220214, 0.019049, 0.06023467128385074)); +#587 = CARTESIAN_POINT('NONE', (-0.02812366055297633, 0.019049, 0.06023724285811143)); +#588 = CARTESIAN_POINT('NONE', (-0.028291415883794434, 0.019049, 0.060423953450239404)); +#589 = CARTESIAN_POINT('NONE', (-0.028293628473383486, 0.019049, 0.06042641604806144)); +#590 = CARTESIAN_POINT('NONE', (-0.02838360621266102, 0.019049, 0.06051639378733898)); +#591 = CARTESIAN_POINT('NONE', (-0.02847124134742006, 0.019049, 0.06060402892209802)); +#592 = CARTESIAN_POINT('NONE', (-0.028473583951938546, 0.019049, 0.060606371526616507)); +#593 = CARTESIAN_POINT('NONE', (-0.028660294544066527, 0.019049, 0.060774126857434614)); +#594 = CARTESIAN_POINT('NONE', (-0.028662757141888564, 0.019049, 0.06077633944702367)); +#595 = CARTESIAN_POINT('NONE', (-0.02875927031410607, 0.019049, 0.06085416666666666)); +#596 = CARTESIAN_POINT('NONE', (-0.028857730169404093, 0.019049, 0.06093356367132657)); +#597 = CARTESIAN_POINT('NONE', (-0.02886030174366479, 0.019049, 0.06093563736210077)); +#598 = CARTESIAN_POINT('NONE', (-0.02906263882725269, 0.019049, 0.061081752104711076)); +#599 = CARTESIAN_POINT('NONE', (-0.02906530752888168, 0.019049, 0.061083679268257716)); +#600 = CARTESIAN_POINT('NONE', (-0.029274060729481067, 0.019049, 0.06121820814503164)); +#601 = CARTESIAN_POINT('NONE', (-0.02927681405574542, 0.019049, 0.061219982498137)); +#602 = CARTESIAN_POINT('NONE', (-0.02949100016686029, 0.019049, 0.06134255563733308)); +#603 = CARTESIAN_POINT('NONE', (-0.029493825149871332, 0.019049, 0.061344172301616484)); +#604 = CARTESIAN_POINT('NONE', (-0.02971244030720291, 0.019049, 0.061454528518505115)); +#605 = CARTESIAN_POINT('NONE', (-0.029715323706608236, 0.019049, 0.06145598404910069)); +#606 = CARTESIAN_POINT('NONE', (-0.02993735788153034, 0.019049, 0.061553970701335524)); +#607 = CARTESIAN_POINT('NONE', (-0.029940286375673867, 0.019049, 0.061555263084984636)); +#608 = CARTESIAN_POINT('NONE', (-0.030164737344685118, 0.019049, 0.061640833723110806)); +#609 = CARTESIAN_POINT('NONE', (-0.030167697714855557, 0.019049, 0.061641962347173736)); +#610 = CARTESIAN_POINT('NONE', (-0.030393584140910423, 0.019049, 0.061715172350733885)); +#611 = CARTESIAN_POINT('NONE', (-0.030396563443875996, 0.019049, 0.06171613794563273)); +#612 = CARTESIAN_POINT('NONE', (-0.030622936763489986, 0.019049, 0.06177713839689807)); +#613 = CARTESIAN_POINT('NONE', (-0.030625922488282005, 0.019049, 0.06177794295531502)); +#614 = CARTESIAN_POINT('NONE', (-0.030851877365913064, 0.019049, 0.061826973047333464)); +#615 = CARTESIAN_POINT('NONE', (-0.03085485757171281, 0.019049, 0.06182761972407763)); +#616 = CARTESIAN_POINT('NONE', (-0.031079540755305467, 0.019049, 0.06186499802653966)); +#617 = CARTESIAN_POINT('NONE', (-0.031082504188243345, 0.019049, 0.06186549102334924)); +#618 = CARTESIAN_POINT('NONE', (-0.0313051216723537, 0.019049, 0.06189160593911745)); +#619 = CARTESIAN_POINT('NONE', (-0.03130805785998649, 0.019049, 0.06189195037878721)); +#620 = CARTESIAN_POINT('NONE', (-0.03152788033151601, 0.019049, 0.06190725011735743)); +#621 = CARTESIAN_POINT('NONE', (-0.03153077965465271, 0.019049, 0.06190745191149483)); +#622 = CARTESIAN_POINT('NONE', (-0.03174714625764284, 0.019049, 0.06191243428555198)); +#623 = CARTESIAN_POINT('NONE', (-0.03175, 0.019049, 0.0619125)); +#624 = CARTESIAN_POINT('NONE', (-0.03196636660299013, 0.019049, 0.06190751762594285)); +#625 = CARTESIAN_POINT('NONE', (-0.031969220345347285, 0.019049, 0.06190745191149483)); +#626 = CARTESIAN_POINT('NONE', (-0.0321890428168768, 0.019049, 0.06189215217292461)); +#627 = CARTESIAN_POINT('NONE', (-0.0321919421400135, 0.019049, 0.06189195037878721)); +#628 = CARTESIAN_POINT('NONE', (-0.03241455962412385, 0.019049, 0.061865835463019006)); +#629 = CARTESIAN_POINT('NONE', (-0.032417495811756646, 0.019049, 0.06186549102334924)); +#630 = CARTESIAN_POINT('NONE', (-0.032642178995349304, 0.019049, 0.061828112720887236)); +#631 = CARTESIAN_POINT('NONE', (-0.03264514242828719, 0.019049, 0.06182761972407765)); +#632 = CARTESIAN_POINT('NONE', (-0.03287109730591826, 0.019049, 0.06177858963205919)); +#633 = CARTESIAN_POINT('NONE', (-0.032874077511717996, 0.019049, 0.061777942955315024)); +#634 = CARTESIAN_POINT('NONE', (-0.03310045083133198, 0.019049, 0.06171694250404969)); +#635 = CARTESIAN_POINT('NONE', (-0.033103436556123994, 0.019049, 0.06171613794563274)); +#636 = CARTESIAN_POINT('NONE', (-0.03332932298217886, 0.019049, 0.06164292794207259)); +#637 = CARTESIAN_POINT('NONE', (-0.03333230228514444, 0.019049, 0.06164196234717374)); +#638 = CARTESIAN_POINT('NONE', (-0.03355675325415569, 0.019049, 0.06155639170904758)); +#639 = CARTESIAN_POINT('NONE', (-0.03355971362432614, 0.019049, 0.06155526308498464)); +#640 = CARTESIAN_POINT('NONE', (-0.03378174779924823, 0.019049, 0.06145727643274981)); +#641 = CARTESIAN_POINT('NONE', (-0.03378467629339176, 0.019049, 0.0614559840491007)); +#642 = CARTESIAN_POINT('NONE', (-0.034003291450723346, 0.019049, 0.06134562783221204)); +#643 = CARTESIAN_POINT('NONE', (-0.03400617485012867, 0.019049, 0.061344172301616484)); +#644 = CARTESIAN_POINT('NONE', (-0.03422036096124354, 0.019049, 0.061221599162420405)); +#645 = CARTESIAN_POINT('NONE', (-0.03422318594425458, 0.019049, 0.06121998249813701)); +#646 = CARTESIAN_POINT('NONE', (-0.03443193914485396, 0.019049, 0.06108545362136306)); +#647 = CARTESIAN_POINT('NONE', (-0.034434692471118314, 0.019049, 0.06108367926825771)); +#648 = CARTESIAN_POINT('NONE', (-0.03463702955470621, 0.019049, 0.06093756452564742)); +#649 = CARTESIAN_POINT('NONE', (-0.0346396982563352, 0.019049, 0.06093563736210079)); +#650 = CARTESIAN_POINT('NONE', (-0.03474072968589394, 0.019049, 0.06085416666666666)); +#651 = CARTESIAN_POINT('NONE', (-0.03483467128385074, 0.019049, 0.06077841313779786)); +#652 = CARTESIAN_POINT('NONE', (-0.034837242858111434, 0.019049, 0.060776339447023674)); +#653 = CARTESIAN_POINT('NONE', (-0.03502395345023941, 0.019049, 0.06060858411620556)); +#654 = CARTESIAN_POINT('NONE', (-0.03502641604806145, 0.019049, 0.060606371526616507)); +#655 = CARTESIAN_POINT('NONE', (-0.03520402892209803, 0.019049, 0.060428758652579954)); +#656 = CARTESIAN_POINT('NONE', (-0.035206371526616514, 0.019049, 0.06042641604806146)); +#657 = CARTESIAN_POINT('NONE', (-0.035374126857434615, 0.019049, 0.06023970545593346)); +#658 = CARTESIAN_POINT('NONE', (-0.03537633944702367, 0.019049, 0.06023724285811143)); +#659 = CARTESIAN_POINT('NONE', (-0.03545416666666667, 0.019049, 0.060140729685893915)); +#660 = CARTESIAN_POINT('NONE', (-0.035533563671326575, 0.019049, 0.0600422698305959)); +#661 = CARTESIAN_POINT('NONE', (-0.035535637362100775, 0.019049, 0.0600396982563352)); +#662 = CARTESIAN_POINT('NONE', (-0.035681752104711084, 0.019049, 0.059837361172747315)); +#663 = CARTESIAN_POINT('NONE', (-0.035683679268257724, 0.019049, 0.05983469247111833)); +#664 = CARTESIAN_POINT('NONE', (-0.035818208145031664, 0.019049, 0.059625939270518936)); +#665 = CARTESIAN_POINT('NONE', (-0.03581998249813702, 0.019049, 0.05962318594425458)); +#666 = CARTESIAN_POINT('NONE', (-0.03594255563733308, 0.019049, 0.05940899983313972)); +#667 = CARTESIAN_POINT('NONE', (-0.035944172301616485, 0.019049, 0.05940617485012868)); +#668 = CARTESIAN_POINT('NONE', (-0.03605452851850512, 0.019049, 0.05918755969279709)); +#669 = CARTESIAN_POINT('NONE', (-0.036055984049100695, 0.019049, 0.05918467629339177)); +#670 = CARTESIAN_POINT('NONE', (-0.036153970701335525, 0.019049, 0.05896264211846967)); +#671 = CARTESIAN_POINT('NONE', (-0.03615526308498463, 0.019049, 0.05895971362432614)); +#672 = CARTESIAN_POINT('NONE', (-0.036240833723110814, 0.019049, 0.05873526265531488)); +#673 = CARTESIAN_POINT('NONE', (-0.036241962347173744, 0.019049, 0.05873230228514444)); +#674 = CARTESIAN_POINT('NONE', (-0.03631517235073389, 0.019049, 0.05850641585908957)); +#675 = CARTESIAN_POINT('NONE', (-0.03631613794563274, 0.019049, 0.058503436556124)); +#676 = CARTESIAN_POINT('NONE', (-0.03637713839689807, 0.019049, 0.05827706323651002)); +#677 = CARTESIAN_POINT('NONE', (-0.03637794295531502, 0.019049, 0.058274077511717995)); +#678 = CARTESIAN_POINT('NONE', (-0.036426973047333465, 0.019049, 0.05804812263408693)); +#679 = CARTESIAN_POINT('NONE', (-0.03642761972407763, 0.019049, 0.058045142428287184)); +#680 = CARTESIAN_POINT('NONE', (-0.03646499802653966, 0.019049, 0.05782045924469453)); +#681 = CARTESIAN_POINT('NONE', (-0.03646549102334924, 0.019049, 0.05781749581175665)); +#682 = CARTESIAN_POINT('NONE', (-0.03649160593911746, 0.019049, 0.057594878327646294)); +#683 = CARTESIAN_POINT('NONE', (-0.036491950378787226, 0.019049, 0.0575919421400135)); +#684 = CARTESIAN_POINT('NONE', (-0.036507250117357434, 0.019049, 0.05737211966848399)); +#685 = CARTESIAN_POINT('NONE', (-0.036507451911494834, 0.019049, 0.057369220345347284)); +#686 = CARTESIAN_POINT('NONE', (-0.03651243428555198, 0.019049, 0.05715285374235715)); +#687 = CARTESIAN_POINT('NONE', (-0.0365125, 0.019049, 0.05715)); +#688 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#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), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (0, 0.0038910505836575876, 0.007782101167315175, 0.011673151750972763, 0.01556420233463035, 0.019455252918287938, 0.023346303501945526, 0.027237354085603113, 0.0311284046692607, 0.03501945525291829, 0.038910505836575876, 0.042801556420233464, 0.04669260700389105, 0.05058365758754864, 0.054474708171206226, 0.058365758754863814, 0.0622568093385214, 0.06614785992217899, 0.07003891050583658, 0.07392996108949416, 0.07782101167315175, 0.08171206225680934, 0.08560311284046693, 0.08949416342412451, 0.0933852140077821, 0.09727626459143969, 0.10116731517509728, 0.10505836575875487, 0.10894941634241245, 0.11284046692607004, 0.11673151750972763, 0.12062256809338522, 0.1245136186770428, 0.12840466926070038, 0.13229571984435798, 0.13618677042801558, 0.14007782101167315, 0.14396887159533073, 0.14785992217898833, 0.15175097276264593, 0.1556420233463035, 0.15953307392996108, 0.16342412451361868, 0.16731517509727628, 0.17120622568093385, 0.17509727626459143, 0.17898832684824903, 0.18287937743190663, 0.1867704280155642, 0.19066147859922178, 0.19455252918287938, 0.19844357976653698, 0.20233463035019456, 0.20622568093385213, 0.21011673151750973, 0.21400778210116733, 0.2178988326848249, 0.22178988326848248, 0.22568093385214008, 0.22957198443579768, 0.23346303501945526, 0.23735408560311283, 0.24124513618677043, 0.24513618677042803, 0.2490272373540856, 0.2529182879377432, 0.25680933852140075, 0.2607003891050584, 0.26459143968871596, 0.26848249027237353, 0.27237354085603116, 0.27626459143968873, 0.2801556420233463, 0.2840466926070039, 0.28793774319066145, 0.2918287937743191, 0.29571984435797666, 0.29961089494163423, 0.30350194552529186, 0.30739299610894943, 0.311284046692607, 0.3151750972762646, 0.31906614785992216, 0.3229571984435798, 0.32684824902723736, 0.33073929961089493, 0.33463035019455256, 0.33852140077821014, 0.3424124513618677, 0.3463035019455253, 0.35019455252918286, 0.3540856031128405, 0.35797665369649806, 0.36186770428015563, 0.36575875486381326, 0.36964980544747084, 0.3735408560311284, 0.377431906614786, 0.38132295719844356, 0.3852140077821012, 0.38910505836575876, 0.39299610894941633, 0.39688715953307396, 0.40077821011673154, 0.4046692607003891, 0.4085603112840467, 0.41245136186770426, 0.4163424124513619, 0.42023346303501946, 0.42412451361867703, 0.42801556420233466, 0.43190661478599224, 0.4357976653696498, 0.4396887159533074, 0.44357976653696496, 0.4474708171206226, 0.45136186770428016, 0.45525291828793774, 0.45914396887159536, 0.46303501945525294, 0.4669260700389105, 0.4708171206225681, 0.47470817120622566, 0.4785992217898833, 0.48249027237354086, 0.48638132295719844, 0.49027237354085607, 0.49416342412451364, 0.4980544747081712, 0.5019455252918288, 0.5058365758754864, 0.5097276264591439, 0.5136186770428015, 0.5175097276264591, 0.5214007782101167, 0.5252918287937743, 0.5291828793774319, 0.5330739299610895, 0.5369649805447471, 0.5408560311284046, 0.5447470817120623, 0.5486381322957199, 0.5525291828793775, 0.556420233463035, 0.5603112840466926, 0.5642023346303502, 0.5680933852140078, 0.5719844357976653, 0.5758754863813229, 0.5797665369649805, 0.5836575875486381, 0.5875486381322957, 0.5914396887159533, 0.5953307392996109, 0.5992217898832685, 0.603112840466926, 0.6070038910505837, 0.6108949416342413, 0.6147859922178989, 0.6186770428015564, 0.622568093385214, 0.6264591439688716, 0.6303501945525292, 0.6342412451361867, 0.6381322957198443, 0.6420233463035019, 0.6459143968871595, 0.6498054474708171, 0.6536964980544747, 0.6575875486381323, 0.6614785992217899, 0.6653696498054474, 0.6692607003891051, 0.6731517509727627, 0.6770428015564203, 0.6809338521400778, 0.6848249027237354, 0.688715953307393, 0.6926070038910506, 0.6964980544747081, 0.7003891050583657, 0.7042801556420233, 0.7081712062256809, 0.7120622568093385, 0.7159533073929961, 0.7198443579766537, 0.7237354085603113, 0.7276264591439688, 0.7315175097276265, 0.7354085603112841, 0.7392996108949417, 0.7431906614785992, 0.7470817120622568, 0.7509727626459144, 0.754863813229572, 0.7587548638132295, 0.7626459143968871, 0.7665369649805447, 0.7704280155642023, 0.77431906614786, 0.7782101167315175, 0.7821011673151751, 0.7859922178988327, 0.7898832684824902, 0.7937743190661479, 0.7976653696498055, 0.8015564202334631, 0.8054474708171206, 0.8093385214007782, 0.8132295719844358, 0.8171206225680934, 0.8210116731517509, 0.8249027237354085, 0.8287937743190661, 0.8326848249027237, 0.8365758754863813, 0.8404669260700389, 0.8443579766536965, 0.8482490272373541, 0.8521400778210116, 0.8560311284046693, 0.8599221789883269, 0.8638132295719845, 0.867704280155642, 0.8715953307392996, 0.8754863813229572, 0.8793774319066148, 0.8832684824902723, 0.8871595330739299, 0.8910505836575875, 0.8949416342412452, 0.8988326848249028, 0.9027237354085603, 0.9066147859922179, 0.9105058365758755, 0.914396887159533, 0.9182879377431906, 0.9221789883268483, 0.9260700389105059, 0.9299610894941635, 0.933852140077821, 0.9377431906614786, 0.9416342412451362, 0.9455252918287937, 0.9494163424124513, 0.9533073929961089, 0.9571984435797666, 0.9610894941634242, 0.9649805447470817, 0.9688715953307393, 0.9727626459143969, 0.9766536964980544, 0.980544747081712, 0.9844357976653697, 0.9883268482490273, 0.9922178988326849, 0.9961089494163424, 1), .UNSPECIFIED.); +#689 = DIRECTION('NONE', (0, -1, 0)); +#690 = VECTOR('NONE', #689, 1); +#691 = CARTESIAN_POINT('NONE', (-0.0365125, 0.019051000000000002, 0.05715)); +#692 = LINE('NONE', #691, #690); +#693 = DIRECTION('NONE', (-1, 0, 0.000000000000001491953250939841)); +#694 = DIRECTION('NONE', (-0, -1, 0)); +#695 = CARTESIAN_POINT('NONE', (-0.031749999999999994, 0, 0.05714999999999999)); +#696 = AXIS2_PLACEMENT_3D('NONE', #695, #694, #693); +#697 = CIRCLE('NONE', #696, 0.004762500000000006); +#698 = CARTESIAN_POINT('NONE', (0.0269875, 0.019049, -0.05715)); +#699 = CARTESIAN_POINT('NONE', (0.026992482374057148, 0.019049, -0.05736636660299014)); +#700 = CARTESIAN_POINT('NONE', (0.02699254808850517, 0.019049, -0.05736922034534729)); +#701 = CARTESIAN_POINT('NONE', (0.02700784782707539, 0.019049, -0.0575890428168768)); +#702 = CARTESIAN_POINT('NONE', (0.027008049621212782, 0.019049, -0.05759194214001351)); +#703 = CARTESIAN_POINT('NONE', (0.02703416453698099, 0.019049, -0.05781455962412386)); +#704 = CARTESIAN_POINT('NONE', (0.027034508976650752, 0.019049, -0.05781749581175665)); +#705 = CARTESIAN_POINT('NONE', (0.027071887279112784, 0.019049, -0.058042178995349296)); +#706 = CARTESIAN_POINT('NONE', (0.02707238027592237, 0.019049, -0.05804514242828718)); +#707 = CARTESIAN_POINT('NONE', (0.027121410367940815, 0.019049, -0.05827109730591826)); +#708 = CARTESIAN_POINT('NONE', (0.027122057044684983, 0.019049, -0.05827407751171799)); +#709 = CARTESIAN_POINT('NONE', (0.027183057495950316, 0.019049, -0.05850045083133198)); +#710 = CARTESIAN_POINT('NONE', (0.02718386205436726, 0.019049, -0.05850343655612399)); +#711 = CARTESIAN_POINT('NONE', (0.02725707205792741, 0.019049, -0.05872932298217887)); +#712 = CARTESIAN_POINT('NONE', (0.02725803765282625, 0.019049, -0.058732302285144436)); +#713 = CARTESIAN_POINT('NONE', (0.02734360829095243, 0.019049, -0.058956753254155676)); +#714 = CARTESIAN_POINT('NONE', (0.02734473691501536, 0.019049, -0.05895971362432612)); +#715 = CARTESIAN_POINT('NONE', (0.0274427235672502, 0.019049, -0.05918174779924823)); +#716 = CARTESIAN_POINT('NONE', (0.027444015950899316, 0.019049, -0.05918467629339176)); +#717 = CARTESIAN_POINT('NONE', (0.02755437216778796, 0.019049, -0.05940329145072335)); +#718 = CARTESIAN_POINT('NONE', (0.027555827698383523, 0.019049, -0.05940617485012868)); +#719 = CARTESIAN_POINT('NONE', (0.027678400837579598, 0.019049, -0.05962036096124355)); +#720 = CARTESIAN_POINT('NONE', (0.02768001750186299, 0.019049, -0.05962318594425458)); +#721 = CARTESIAN_POINT('NONE', (0.027814546378636923, 0.019049, -0.05983193914485396)); +#722 = CARTESIAN_POINT('NONE', (0.027816320731742276, 0.019049, -0.05983469247111832)); +#723 = CARTESIAN_POINT('NONE', (0.027962435474352593, 0.019049, -0.0600370295547062)); +#724 = CARTESIAN_POINT('NONE', (0.02796436263789923, 0.019049, -0.06003969825633519)); +#725 = CARTESIAN_POINT('NONE', (0.028045833333333332, 0.019049, -0.06014072968589391)); +#726 = CARTESIAN_POINT('NONE', (0.028121586862202137, 0.019049, -0.06023467128385073)); +#727 = CARTESIAN_POINT('NONE', (0.02812366055297633, 0.019049, -0.06023724285811143)); +#728 = CARTESIAN_POINT('NONE', (0.028291415883794434, 0.019049, -0.060423953450239404)); +#729 = CARTESIAN_POINT('NONE', (0.028293628473383486, 0.019049, -0.06042641604806144)); +#730 = CARTESIAN_POINT('NONE', (0.028383606212661016, 0.019049, -0.060516393787338967)); +#731 = CARTESIAN_POINT('NONE', (0.02847124134742006, 0.019049, -0.06060402892209802)); +#732 = CARTESIAN_POINT('NONE', (0.028473583951938546, 0.019049, -0.060606371526616507)); +#733 = CARTESIAN_POINT('NONE', (0.028660294544066527, 0.019049, -0.060774126857434614)); +#734 = CARTESIAN_POINT('NONE', (0.028662757141888564, 0.019049, -0.06077633944702367)); +#735 = CARTESIAN_POINT('NONE', (0.02875927031410607, 0.019049, -0.06085416666666666)); +#736 = CARTESIAN_POINT('NONE', (0.028857730169404093, 0.019049, -0.06093356367132657)); +#737 = CARTESIAN_POINT('NONE', (0.02886030174366479, 0.019049, -0.06093563736210077)); +#738 = CARTESIAN_POINT('NONE', (0.02906263882725269, 0.019049, -0.061081752104711076)); +#739 = CARTESIAN_POINT('NONE', (0.02906530752888168, 0.019049, -0.061083679268257716)); +#740 = CARTESIAN_POINT('NONE', (0.029274060729481063, 0.019049, -0.061218208145031656)); +#741 = CARTESIAN_POINT('NONE', (0.029276814055745424, 0.019049, -0.06121998249813701)); +#742 = CARTESIAN_POINT('NONE', (0.029491000166860293, 0.019049, -0.06134255563733308)); +#743 = CARTESIAN_POINT('NONE', (0.029493825149871335, 0.019049, -0.061344172301616484)); +#744 = CARTESIAN_POINT('NONE', (0.029712440307202912, 0.019049, -0.06145452851850512)); +#745 = CARTESIAN_POINT('NONE', (0.02971532370660824, 0.019049, -0.061455984049100694)); +#746 = CARTESIAN_POINT('NONE', (0.02993735788153034, 0.019049, -0.06155397070133552)); +#747 = CARTESIAN_POINT('NONE', (0.02994028637567386, 0.019049, -0.06155526308498462)); +#748 = CARTESIAN_POINT('NONE', (0.03016473734468511, 0.019049, -0.06164083372311081)); +#749 = CARTESIAN_POINT('NONE', (0.03016769771485555, 0.019049, -0.06164196234717374)); +#750 = CARTESIAN_POINT('NONE', (0.03039358414091043, 0.019049, -0.06171517235073389)); +#751 = CARTESIAN_POINT('NONE', (0.030396563443875996, 0.019049, -0.061716137945632736)); +#752 = CARTESIAN_POINT('NONE', (0.030622936763489983, 0.019049, -0.061777138396898065)); +#753 = CARTESIAN_POINT('NONE', (0.030625922488281998, 0.019049, -0.06177794295531501)); +#754 = CARTESIAN_POINT('NONE', (0.03085187736591307, 0.019049, -0.06182697304733345)); +#755 = CARTESIAN_POINT('NONE', (0.030854857571712805, 0.019049, -0.061827619724077625)); +#756 = CARTESIAN_POINT('NONE', (0.031079540755305467, 0.019049, -0.06186499802653966)); +#757 = CARTESIAN_POINT('NONE', (0.031082504188243352, 0.019049, -0.06186549102334924)); +#758 = CARTESIAN_POINT('NONE', (0.0313051216723537, 0.019049, -0.06189160593911745)); +#759 = CARTESIAN_POINT('NONE', (0.03130805785998649, 0.019049, -0.06189195037878721)); +#760 = CARTESIAN_POINT('NONE', (0.03152788033151601, 0.019049, -0.06190725011735743)); +#761 = CARTESIAN_POINT('NONE', (0.03153077965465271, 0.019049, -0.06190745191149483)); +#762 = CARTESIAN_POINT('NONE', (0.03174714625764284, 0.019049, -0.06191243428555198)); +#763 = CARTESIAN_POINT('NONE', (0.03175, 0.019049, -0.0619125)); +#764 = CARTESIAN_POINT('NONE', (0.03196636660299013, 0.019049, -0.06190751762594285)); +#765 = CARTESIAN_POINT('NONE', (0.031969220345347285, 0.019049, -0.06190745191149483)); +#766 = CARTESIAN_POINT('NONE', (0.0321890428168768, 0.019049, -0.06189215217292461)); +#767 = CARTESIAN_POINT('NONE', (0.0321919421400135, 0.019049, -0.06189195037878721)); +#768 = CARTESIAN_POINT('NONE', (0.03241455962412385, 0.019049, -0.061865835463019006)); +#769 = CARTESIAN_POINT('NONE', (0.032417495811756646, 0.019049, -0.06186549102334924)); +#770 = CARTESIAN_POINT('NONE', (0.032642178995349304, 0.019049, -0.06182811272088723)); +#771 = CARTESIAN_POINT('NONE', (0.03264514242828719, 0.019049, -0.061827619724077645)); +#772 = CARTESIAN_POINT('NONE', (0.03287109730591826, 0.019049, -0.06177858963205918)); +#773 = CARTESIAN_POINT('NONE', (0.032874077511717996, 0.019049, -0.06177794295531501)); +#774 = CARTESIAN_POINT('NONE', (0.033100450831331986, 0.019049, -0.06171694250404969)); +#775 = CARTESIAN_POINT('NONE', (0.033103436556124, 0.019049, -0.06171613794563274)); +#776 = CARTESIAN_POINT('NONE', (0.033329322982178874, 0.019049, -0.06164292794207258)); +#777 = CARTESIAN_POINT('NONE', (0.03333230228514444, 0.019049, -0.06164196234717374)); +#778 = CARTESIAN_POINT('NONE', (0.03355675325415569, 0.019049, -0.06155639170904755)); +#779 = CARTESIAN_POINT('NONE', (0.03355971362432614, 0.019049, -0.06155526308498462)); +#780 = CARTESIAN_POINT('NONE', (0.03378174779924824, 0.019049, -0.061457276432749806)); +#781 = CARTESIAN_POINT('NONE', (0.03378467629339177, 0.019049, -0.061455984049100694)); +#782 = CARTESIAN_POINT('NONE', (0.03400329145072335, 0.019049, -0.06134562783221205)); +#783 = CARTESIAN_POINT('NONE', (0.03400617485012868, 0.019049, -0.061344172301616484)); +#784 = CARTESIAN_POINT('NONE', (0.03422036096124354, 0.019049, -0.061221599162420405)); +#785 = CARTESIAN_POINT('NONE', (0.03422318594425458, 0.019049, -0.06121998249813701)); +#786 = CARTESIAN_POINT('NONE', (0.03443193914485396, 0.019049, -0.06108545362136306)); +#787 = CARTESIAN_POINT('NONE', (0.034434692471118314, 0.019049, -0.06108367926825771)); +#788 = CARTESIAN_POINT('NONE', (0.03463702955470621, 0.019049, -0.0609375645256474)); +#789 = CARTESIAN_POINT('NONE', (0.0346396982563352, 0.019049, -0.06093563736210077)); +#790 = CARTESIAN_POINT('NONE', (0.03474072968589391, 0.019049, -0.06085416666666666)); +#791 = CARTESIAN_POINT('NONE', (0.03483467128385074, 0.019049, -0.06077841313779784)); +#792 = CARTESIAN_POINT('NONE', (0.034837242858111434, 0.019049, -0.06077633944702365)); +#793 = CARTESIAN_POINT('NONE', (0.03502395345023941, 0.019049, -0.06060858411620556)); +#794 = CARTESIAN_POINT('NONE', (0.03502641604806145, 0.019049, -0.060606371526616507)); +#795 = CARTESIAN_POINT('NONE', (0.03520402892209803, 0.019049, -0.06042875865257993)); +#796 = CARTESIAN_POINT('NONE', (0.035206371526616514, 0.019049, -0.06042641604806144)); +#797 = CARTESIAN_POINT('NONE', (0.035374126857434615, 0.019049, -0.06023970545593346)); +#798 = CARTESIAN_POINT('NONE', (0.03537633944702367, 0.019049, -0.06023724285811143)); +#799 = CARTESIAN_POINT('NONE', (0.03545416666666667, 0.019049, -0.060140729685893915)); +#800 = CARTESIAN_POINT('NONE', (0.035533563671326575, 0.019049, -0.0600422698305959)); +#801 = CARTESIAN_POINT('NONE', (0.035535637362100775, 0.019049, -0.0600396982563352)); +#802 = CARTESIAN_POINT('NONE', (0.035681752104711084, 0.019049, -0.05983736117274731)); +#803 = CARTESIAN_POINT('NONE', (0.035683679268257724, 0.019049, -0.05983469247111832)); +#804 = CARTESIAN_POINT('NONE', (0.035818208145031664, 0.019049, -0.059625939270518936)); +#805 = CARTESIAN_POINT('NONE', (0.03581998249813702, 0.019049, -0.05962318594425458)); +#806 = CARTESIAN_POINT('NONE', (0.03594255563733309, 0.019049, -0.05940899983313972)); +#807 = CARTESIAN_POINT('NONE', (0.03594417230161649, 0.019049, -0.05940617485012868)); +#808 = CARTESIAN_POINT('NONE', (0.03605452851850512, 0.019049, -0.05918755969279709)); +#809 = CARTESIAN_POINT('NONE', (0.036055984049100695, 0.019049, -0.05918467629339177)); +#810 = CARTESIAN_POINT('NONE', (0.036153970701335525, 0.019049, -0.05896264211846966)); +#811 = CARTESIAN_POINT('NONE', (0.03615526308498463, 0.019049, -0.058959713624326136)); +#812 = CARTESIAN_POINT('NONE', (0.036240833723110814, 0.019049, -0.058735262655314875)); +#813 = CARTESIAN_POINT('NONE', (0.036241962347173744, 0.019049, -0.058732302285144436)); +#814 = CARTESIAN_POINT('NONE', (0.03631517235073389, 0.019049, -0.058506415859089556)); +#815 = CARTESIAN_POINT('NONE', (0.03631613794563274, 0.019049, -0.058503436556123986)); +#816 = CARTESIAN_POINT('NONE', (0.03637713839689807, 0.019049, -0.05827706323651001)); +#817 = CARTESIAN_POINT('NONE', (0.03637794295531502, 0.019049, -0.05827407751171799)); +#818 = CARTESIAN_POINT('NONE', (0.036426973047333465, 0.019049, -0.05804812263408692)); +#819 = CARTESIAN_POINT('NONE', (0.03642761972407763, 0.019049, -0.05804514242828718)); +#820 = CARTESIAN_POINT('NONE', (0.03646499802653966, 0.019049, -0.057820459244694526)); +#821 = CARTESIAN_POINT('NONE', (0.03646549102334924, 0.019049, -0.057817495811756645)); +#822 = CARTESIAN_POINT('NONE', (0.03649160593911746, 0.019049, -0.057594878327646294)); +#823 = CARTESIAN_POINT('NONE', (0.036491950378787226, 0.019049, -0.0575919421400135)); +#824 = CARTESIAN_POINT('NONE', (0.036507250117357434, 0.019049, -0.05737211966848399)); +#825 = CARTESIAN_POINT('NONE', (0.036507451911494834, 0.019049, -0.057369220345347284)); +#826 = CARTESIAN_POINT('NONE', (0.03651243428555198, 0.019049, -0.05715285374235715)); +#827 = CARTESIAN_POINT('NONE', (0.0365125, 0.019049, -0.05715)); +#828 = CARTESIAN_POINT('NONE', (0.036507517625942856, 0.019049, -0.05693363339700987)); +#829 = CARTESIAN_POINT('NONE', (0.036507451911494834, 0.019049, -0.05693077965465271)); +#830 = CARTESIAN_POINT('NONE', (0.03649215217292462, 0.019049, -0.05671095718312318)); +#831 = CARTESIAN_POINT('NONE', (0.036491950378787226, 0.019049, -0.05670805785998649)); +#832 = CARTESIAN_POINT('NONE', (0.03646583546301901, 0.019049, -0.05648544037587614)); +#833 = CARTESIAN_POINT('NONE', (0.03646549102334924, 0.019049, -0.05648250418824335)); +#834 = CARTESIAN_POINT('NONE', (0.036428112720887224, 0.019049, -0.05625782100465071)); +#835 = CARTESIAN_POINT('NONE', (0.03642761972407764, 0.019049, -0.05625485757171282)); +#836 = CARTESIAN_POINT('NONE', (0.036378589632059186, 0.019049, -0.05602890269408174)); +#837 = CARTESIAN_POINT('NONE', (0.03637794295531502, 0.019049, -0.056025922488282)); +#838 = CARTESIAN_POINT('NONE', (0.03631694250404968, 0.019049, -0.055799549168668014)); +#839 = CARTESIAN_POINT('NONE', (0.03631613794563274, 0.019049, -0.055796563443876)); +#840 = CARTESIAN_POINT('NONE', (0.036242927942072595, 0.019049, -0.055570677017821125)); +#841 = CARTESIAN_POINT('NONE', (0.03624196234717375, 0.019049, -0.05556769771485555)); +#842 = CARTESIAN_POINT('NONE', (0.03615639170904757, 0.019049, -0.0553432467458443)); +#843 = CARTESIAN_POINT('NONE', (0.03615526308498464, 0.019049, -0.05534028637567386)); +#844 = CARTESIAN_POINT('NONE', (0.03605727643274981, 0.019049, -0.055118252200751776)); +#845 = CARTESIAN_POINT('NONE', (0.036055984049100695, 0.019049, -0.055115323706608245)); +#846 = CARTESIAN_POINT('NONE', (0.035945627832212064, 0.019049, -0.05489670854927666)); +#847 = CARTESIAN_POINT('NONE', (0.03594417230161649, 0.019049, -0.05489382514987133)); +#848 = CARTESIAN_POINT('NONE', (0.03582159916242041, 0.019049, -0.05467963903875645)); +#849 = CARTESIAN_POINT('NONE', (0.03581998249813702, 0.019049, -0.05467681405574541)); +#850 = CARTESIAN_POINT('NONE', (0.03568545362136307, 0.019049, -0.05446806085514603)); +#851 = CARTESIAN_POINT('NONE', (0.03568367926825772, 0.019049, -0.05446530752888167)); +#852 = CARTESIAN_POINT('NONE', (0.03553756452564741, 0.019049, -0.05426297044529378)); +#853 = CARTESIAN_POINT('NONE', (0.035535637362100775, 0.019049, -0.05426030174366479)); +#854 = CARTESIAN_POINT('NONE', (0.03545416666666667, 0.019049, -0.05415927031410607)); +#855 = CARTESIAN_POINT('NONE', (0.035378413137797854, 0.019049, -0.05406532871614925)); +#856 = CARTESIAN_POINT('NONE', (0.03537633944702367, 0.019049, -0.05406275714188855)); +#857 = CARTESIAN_POINT('NONE', (0.03520858411620557, 0.019049, -0.053876046549760574)); +#858 = CARTESIAN_POINT('NONE', (0.035206371526616514, 0.019049, -0.05387358395193854)); +#859 = CARTESIAN_POINT('NONE', (0.03511639378733899, 0.019049, -0.05378360621266101)); +#860 = CARTESIAN_POINT('NONE', (0.03502875865257994, 0.019049, -0.05369597107790197)); +#861 = CARTESIAN_POINT('NONE', (0.03502641604806145, 0.019049, -0.053693628473383485)); +#862 = CARTESIAN_POINT('NONE', (0.03483970545593346, 0.019049, -0.05352587314256537)); +#863 = CARTESIAN_POINT('NONE', (0.034837242858111434, 0.019049, -0.053523660552976325)); +#864 = CARTESIAN_POINT('NONE', (0.03474072968589392, 0.019049, -0.05344583333333333)); +#865 = CARTESIAN_POINT('NONE', (0.03464226983059591, 0.019049, -0.053366436328673425)); +#866 = CARTESIAN_POINT('NONE', (0.03463969825633521, 0.019049, -0.053364362637899225)); +#867 = CARTESIAN_POINT('NONE', (0.03443736117274731, 0.019049, -0.05321824789528891)); +#868 = CARTESIAN_POINT('NONE', (0.03443469247111832, 0.019049, -0.05321632073174227)); +#869 = CARTESIAN_POINT('NONE', (0.03422593927051894, 0.019049, -0.05308179185496834)); +#870 = CARTESIAN_POINT('NONE', (0.03422318594425458, 0.019049, -0.05308001750186299)); +#871 = CARTESIAN_POINT('NONE', (0.03400899983313972, 0.019049, -0.05295744436266692)); +#872 = CARTESIAN_POINT('NONE', (0.03400617485012868, 0.019049, -0.05295582769838352)); +#873 = CARTESIAN_POINT('NONE', (0.0337875596927971, 0.019049, -0.052845471481494884)); +#874 = CARTESIAN_POINT('NONE', (0.03378467629339177, 0.019049, -0.05284401595089931)); +#875 = CARTESIAN_POINT('NONE', (0.03356264211846966, 0.019049, -0.05274602929866448)); +#876 = CARTESIAN_POINT('NONE', (0.03355971362432614, 0.019049, -0.05274473691501537)); +#877 = CARTESIAN_POINT('NONE', (0.033335262655314876, 0.019049, -0.05265916627688918)); +#878 = CARTESIAN_POINT('NONE', (0.03333230228514444, 0.019049, -0.05265803765282625)); +#879 = CARTESIAN_POINT('NONE', (0.033106415859089564, 0.019049, -0.052584827649266086)); +#880 = CARTESIAN_POINT('NONE', (0.033103436556123994, 0.019049, -0.05258386205436724)); +#881 = CARTESIAN_POINT('NONE', (0.03287706323651002, 0.019049, -0.05252286160310193)); +#882 = CARTESIAN_POINT('NONE', (0.032874077511717996, 0.019049, -0.05252205704468498)); +#883 = CARTESIAN_POINT('NONE', (0.032648122634086923, 0.019049, -0.05247302695266652)); +#884 = CARTESIAN_POINT('NONE', (0.03264514242828718, 0.019049, -0.05247238027592235)); +#885 = CARTESIAN_POINT('NONE', (0.03242045924469453, 0.019049, -0.05243500197346032)); +#886 = CARTESIAN_POINT('NONE', (0.032417495811756646, 0.019049, -0.05243450897665074)); +#887 = CARTESIAN_POINT('NONE', (0.032194878327646295, 0.019049, -0.05240839406088253)); +#888 = CARTESIAN_POINT('NONE', (0.0321919421400135, 0.019049, -0.05240804962121277)); +#889 = CARTESIAN_POINT('NONE', (0.031972119668484, 0.019049, -0.05239274988264256)); +#890 = CARTESIAN_POINT('NONE', (0.03196922034534729, 0.019049, -0.052392548088505166)); +#891 = CARTESIAN_POINT('NONE', (0.03175285374235716, 0.019049, -0.05238756571444802)); +#892 = CARTESIAN_POINT('NONE', (0.03175, 0.019049, -0.0523875)); +#893 = CARTESIAN_POINT('NONE', (0.03153363339700987, 0.019049, -0.052392482374057144)); +#894 = CARTESIAN_POINT('NONE', (0.03153077965465271, 0.019049, -0.052392548088505166)); +#895 = CARTESIAN_POINT('NONE', (0.03131095718312319, 0.019049, -0.05240784782707537)); +#896 = CARTESIAN_POINT('NONE', (0.03130805785998649, 0.019049, -0.05240804962121276)); +#897 = CARTESIAN_POINT('NONE', (0.031085440375876135, 0.019049, -0.05243416453698098)); +#898 = CARTESIAN_POINT('NONE', (0.03108250418824335, 0.019049, -0.05243450897665074)); +#899 = CARTESIAN_POINT('NONE', (0.030857821004650707, 0.019049, -0.05247188727911278)); +#900 = CARTESIAN_POINT('NONE', (0.030854857571712815, 0.019049, -0.05247238027592237)); +#901 = CARTESIAN_POINT('NONE', (0.03062890269408175, 0.019049, -0.052521410367940814)); +#902 = CARTESIAN_POINT('NONE', (0.030625922488282005, 0.019049, -0.05252205704468498)); +#903 = CARTESIAN_POINT('NONE', (0.03039954916866802, 0.019049, -0.052583057495950304)); +#904 = CARTESIAN_POINT('NONE', (0.030396563443875996, 0.019049, -0.05258386205436725)); +#905 = CARTESIAN_POINT('NONE', (0.030170677017821137, 0.019049, -0.052657072057927405)); +#906 = CARTESIAN_POINT('NONE', (0.03016769771485556, 0.019049, -0.05265803765282625)); +#907 = CARTESIAN_POINT('NONE', (0.029943246745844313, 0.019049, -0.05274360829095243)); +#908 = CARTESIAN_POINT('NONE', (0.029940286375673867, 0.019049, -0.05274473691501537)); +#909 = CARTESIAN_POINT('NONE', (0.029718252200751773, 0.019049, -0.0528427235672502)); +#910 = CARTESIAN_POINT('NONE', (0.029715323706608242, 0.019049, -0.05284401595089931)); +#911 = CARTESIAN_POINT('NONE', (0.02949670854927666, 0.019049, -0.05295437216778796)); +#912 = CARTESIAN_POINT('NONE', (0.029493825149871335, 0.019049, -0.05295582769838352)); +#913 = CARTESIAN_POINT('NONE', (0.02927963903875646, 0.019049, -0.05307840083757959)); +#914 = CARTESIAN_POINT('NONE', (0.029276814055745424, 0.019049, -0.05308001750186298)); +#915 = CARTESIAN_POINT('NONE', (0.029068060855146027, 0.019049, -0.05321454637863691)); +#916 = CARTESIAN_POINT('NONE', (0.029065307528881677, 0.019049, -0.05321632073174226)); +#917 = CARTESIAN_POINT('NONE', (0.028862970445293786, 0.019049, -0.053362435474352585)); +#918 = CARTESIAN_POINT('NONE', (0.028860301743664798, 0.019049, -0.053364362637899225)); +#919 = CARTESIAN_POINT('NONE', (0.028759270314106074, 0.019049, -0.05344583333333333)); +#920 = CARTESIAN_POINT('NONE', (0.028665328716149262, 0.019049, -0.05352158686220213)); +#921 = CARTESIAN_POINT('NONE', (0.028662757141888567, 0.019049, -0.053523660552976325)); +#922 = CARTESIAN_POINT('NONE', (0.028476046549760586, 0.019049, -0.053691415883794426)); +#923 = CARTESIAN_POINT('NONE', (0.028473583951938546, 0.019049, -0.05369362847338348)); +#924 = CARTESIAN_POINT('NONE', (0.028295971077901983, 0.019049, -0.053871241347420044)); +#925 = CARTESIAN_POINT('NONE', (0.028293628473383493, 0.019049, -0.05387358395193854)); +#926 = CARTESIAN_POINT('NONE', (0.02812587314256538, 0.019049, -0.05406029454406653)); +#927 = CARTESIAN_POINT('NONE', (0.02812366055297633, 0.019049, -0.05406275714188856)); +#928 = CARTESIAN_POINT('NONE', (0.028045833333333332, 0.019049, -0.054159270314106084)); +#929 = CARTESIAN_POINT('NONE', (0.02796643632867343, 0.019049, -0.05425773016940409)); +#930 = CARTESIAN_POINT('NONE', (0.027964362637899236, 0.019049, -0.05426030174366479)); +#931 = CARTESIAN_POINT('NONE', (0.027818247895288917, 0.019049, -0.05446263882725269)); +#932 = CARTESIAN_POINT('NONE', (0.02781632073174228, 0.019049, -0.05446530752888168)); +#933 = CARTESIAN_POINT('NONE', (0.027681791854968347, 0.019049, -0.054674060729481055)); +#934 = CARTESIAN_POINT('NONE', (0.027680017501862993, 0.019049, -0.05467681405574541)); +#935 = CARTESIAN_POINT('NONE', (0.027557444362666928, 0.019049, -0.054891000166860285)); +#936 = CARTESIAN_POINT('NONE', (0.02755582769838353, 0.019049, -0.05489382514987133)); +#937 = CARTESIAN_POINT('NONE', (0.027445471481494885, 0.019049, -0.0551124403072029)); +#938 = CARTESIAN_POINT('NONE', (0.027444015950899316, 0.019049, -0.05511532370660823)); +#939 = CARTESIAN_POINT('NONE', (0.027346029298664476, 0.019049, -0.05533735788153033)); +#940 = CARTESIAN_POINT('NONE', (0.027344736915015364, 0.019049, -0.055340286375673856)); +#941 = CARTESIAN_POINT('NONE', (0.027259166276889187, 0.019049, -0.0555647373446851)); +#942 = CARTESIAN_POINT('NONE', (0.027258037652826257, 0.019049, -0.05556769771485555)); +#943 = CARTESIAN_POINT('NONE', (0.0271848276492661, 0.019049, -0.05579358414091042)); +#944 = CARTESIAN_POINT('NONE', (0.027183862054367257, 0.019049, -0.055796563443876)); +#945 = CARTESIAN_POINT('NONE', (0.02712286160310193, 0.019049, -0.05602293676348998)); +#946 = CARTESIAN_POINT('NONE', (0.027122057044684986, 0.019049, -0.056025922488282)); +#947 = CARTESIAN_POINT('NONE', (0.027073026952666533, 0.019049, -0.05625187736591306)); +#948 = CARTESIAN_POINT('NONE', (0.02707238027592236, 0.019049, -0.05625485757171281)); +#949 = CARTESIAN_POINT('NONE', (0.027035001973460333, 0.019049, -0.056479540755305466)); +#950 = CARTESIAN_POINT('NONE', (0.02703450897665075, 0.019049, -0.05648250418824335)); +#951 = CARTESIAN_POINT('NONE', (0.027008394060882537, 0.019049, -0.0567051216723537)); +#952 = CARTESIAN_POINT('NONE', (0.02700804962121278, 0.019049, -0.05670805785998649)); +#953 = CARTESIAN_POINT('NONE', (0.026992749882642563, 0.019049, -0.056927880331516)); +#954 = CARTESIAN_POINT('NONE', (0.02699254808850517, 0.019049, -0.0569307796546527)); +#955 = CARTESIAN_POINT('NONE', (0.026987565714448023, 0.019049, -0.05714714625764285)); +#956 = CARTESIAN_POINT('NONE', (0.0269875, 0.019049, -0.05715)); +#957 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#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), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (-1, -0.9961089494163424, -0.9922178988326849, -0.9883268482490273, -0.9844357976653697, -0.980544747081712, -0.9766536964980544, -0.9727626459143969, -0.9688715953307393, -0.9649805447470817, -0.9610894941634242, -0.9571984435797666, -0.9533073929961089, -0.9494163424124513, -0.9455252918287937, -0.9416342412451362, -0.9377431906614786, -0.933852140077821, -0.9299610894941635, -0.9260700389105059, -0.9221789883268483, -0.9182879377431906, -0.914396887159533, -0.9105058365758755, -0.9066147859922179, -0.9027237354085603, -0.8988326848249028, -0.8949416342412452, -0.8910505836575875, -0.8871595330739299, -0.8832684824902723, -0.8793774319066148, -0.8754863813229572, -0.8715953307392996, -0.867704280155642, -0.8638132295719845, -0.8599221789883269, -0.8560311284046693, -0.8521400778210116, -0.8482490272373541, -0.8443579766536965, -0.8404669260700389, -0.8365758754863813, -0.8326848249027237, -0.8287937743190661, -0.8249027237354085, -0.8210116731517509, -0.8171206225680934, -0.8132295719844358, -0.8093385214007782, -0.8054474708171206, -0.8015564202334631, -0.7976653696498055, -0.7937743190661479, -0.7898832684824902, -0.7859922178988327, -0.7821011673151751, -0.7782101167315175, -0.77431906614786, -0.7704280155642023, -0.7665369649805447, -0.7626459143968871, -0.7587548638132295, -0.754863813229572, -0.7509727626459144, -0.7470817120622568, -0.7431906614785992, -0.7392996108949417, -0.7354085603112841, -0.7315175097276265, -0.7276264591439688, -0.7237354085603113, -0.7198443579766537, -0.7159533073929961, -0.7120622568093385, -0.7081712062256809, -0.7042801556420233, -0.7003891050583657, -0.6964980544747081, -0.6926070038910506, -0.688715953307393, -0.6848249027237354, -0.6809338521400778, -0.6770428015564203, -0.6731517509727627, -0.6692607003891051, -0.6653696498054474, -0.6614785992217899, -0.6575875486381323, -0.6536964980544747, -0.6498054474708171, -0.6459143968871595, -0.6420233463035019, -0.6381322957198443, -0.6342412451361867, -0.6303501945525292, -0.6264591439688716, -0.622568093385214, -0.6186770428015564, -0.6147859922178989, -0.6108949416342413, -0.6070038910505837, -0.603112840466926, -0.5992217898832685, -0.5953307392996109, -0.5914396887159533, -0.5875486381322957, -0.5836575875486381, -0.5797665369649805, -0.5758754863813229, -0.5719844357976653, -0.5680933852140078, -0.5642023346303502, -0.5603112840466926, -0.556420233463035, -0.5525291828793775, -0.5486381322957199, -0.5447470817120623, -0.5408560311284046, -0.5369649805447471, -0.5330739299610895, -0.5291828793774319, -0.5252918287937743, -0.5214007782101167, -0.5175097276264591, -0.5136186770428015, -0.5097276264591439, -0.5058365758754864, -0.5019455252918288, -0.4980544747081712, -0.49416342412451364, -0.49027237354085607, -0.48638132295719844, -0.48249027237354086, -0.4785992217898833, -0.47470817120622566, -0.4708171206225681, -0.4669260700389105, -0.46303501945525294, -0.45914396887159536, -0.45525291828793774, -0.45136186770428016, -0.4474708171206226, -0.44357976653696496, -0.4396887159533074, -0.4357976653696498, -0.43190661478599224, -0.42801556420233466, -0.42412451361867703, -0.42023346303501946, -0.4163424124513619, -0.41245136186770426, -0.4085603112840467, -0.4046692607003891, -0.40077821011673154, -0.39688715953307396, -0.39299610894941633, -0.38910505836575876, -0.3852140077821012, -0.38132295719844356, -0.377431906614786, -0.3735408560311284, -0.36964980544747084, -0.36575875486381326, -0.36186770428015563, -0.35797665369649806, -0.3540856031128405, -0.35019455252918286, -0.3463035019455253, -0.3424124513618677, -0.33852140077821014, -0.33463035019455256, -0.33073929961089493, -0.32684824902723736, -0.3229571984435798, -0.31906614785992216, -0.3151750972762646, -0.311284046692607, -0.30739299610894943, -0.30350194552529186, -0.29961089494163423, -0.29571984435797666, -0.2918287937743191, -0.28793774319066145, -0.2840466926070039, -0.2801556420233463, -0.27626459143968873, -0.27237354085603116, -0.26848249027237353, -0.26459143968871596, -0.2607003891050584, -0.25680933852140075, -0.2529182879377432, -0.2490272373540856, -0.24513618677042803, -0.24124513618677043, -0.23735408560311283, -0.23346303501945526, -0.22957198443579768, -0.22568093385214008, -0.22178988326848248, -0.2178988326848249, -0.21400778210116733, -0.21011673151750973, -0.20622568093385213, -0.20233463035019456, -0.19844357976653698, -0.19455252918287938, -0.19066147859922178, -0.1867704280155642, -0.18287937743190663, -0.17898832684824903, -0.17509727626459143, -0.17120622568093385, -0.16731517509727628, -0.16342412451361868, -0.15953307392996108, -0.1556420233463035, -0.15175097276264593, -0.14785992217898833, -0.14396887159533073, -0.14007782101167315, -0.13618677042801558, -0.13229571984435798, -0.12840466926070038, -0.1245136186770428, -0.12062256809338522, -0.11673151750972763, -0.11284046692607004, -0.10894941634241245, -0.10505836575875487, -0.10116731517509728, -0.09727626459143969, -0.0933852140077821, -0.08949416342412451, -0.08560311284046693, -0.08171206225680934, -0.07782101167315175, -0.07392996108949416, -0.07003891050583658, -0.06614785992217899, -0.0622568093385214, -0.058365758754863814, -0.054474708171206226, -0.05058365758754864, -0.04669260700389105, -0.042801556420233464, -0.038910505836575876, -0.03501945525291829, -0.0311284046692607, -0.027237354085603113, -0.023346303501945526, -0.019455252918287938, -0.01556420233463035, -0.011673151750972763, -0.007782101167315175, -0.0038910505836575876, -0), .UNSPECIFIED.); +#958 = DIRECTION('NONE', (0, -1, 0)); +#959 = VECTOR('NONE', #958, 1); +#960 = CARTESIAN_POINT('NONE', (0.0269875, 0.019051000000000002, -0.05715)); +#961 = LINE('NONE', #960, #959); +#962 = DIRECTION('NONE', (-1, 0, 0.0000000000000014919532509398443)); +#963 = DIRECTION('NONE', (-0, -1, 0)); +#964 = CARTESIAN_POINT('NONE', (0.031749999999999994, -0, -0.057150000000000006)); +#965 = AXIS2_PLACEMENT_3D('NONE', #964, #963, #962); +#966 = CIRCLE('NONE', #965, 0.004762499999999996); +#967 = CARTESIAN_POINT('NONE', (-0.0365125, 0.019049, -0.05715)); +#968 = CARTESIAN_POINT('NONE', (-0.036507517625942856, 0.019049, -0.05736636660299014)); +#969 = CARTESIAN_POINT('NONE', (-0.036507451911494834, 0.019049, -0.05736922034534729)); +#970 = CARTESIAN_POINT('NONE', (-0.036492152172924626, 0.019049, -0.0575890428168768)); +#971 = CARTESIAN_POINT('NONE', (-0.03649195037878723, 0.019049, -0.05759194214001351)); +#972 = CARTESIAN_POINT('NONE', (-0.03646583546301901, 0.019049, -0.05781455962412386)); +#973 = CARTESIAN_POINT('NONE', (-0.03646549102334924, 0.019049, -0.05781749581175665)); +#974 = CARTESIAN_POINT('NONE', (-0.03642811272088722, 0.019049, -0.058042178995349296)); +#975 = CARTESIAN_POINT('NONE', (-0.03642761972407763, 0.019049, -0.05804514242828718)); +#976 = CARTESIAN_POINT('NONE', (-0.03637858963205918, 0.019049, -0.05827109730591826)); +#977 = CARTESIAN_POINT('NONE', (-0.03637794295531501, 0.019049, -0.05827407751171799)); +#978 = CARTESIAN_POINT('NONE', (-0.03631694250404969, 0.019049, -0.05850045083133198)); +#979 = CARTESIAN_POINT('NONE', (-0.036316137945632744, 0.019049, -0.05850343655612399)); +#980 = CARTESIAN_POINT('NONE', (-0.036242927942072574, 0.019049, -0.05872932298217887)); +#981 = CARTESIAN_POINT('NONE', (-0.03624196234717374, 0.019049, -0.058732302285144436)); +#982 = CARTESIAN_POINT('NONE', (-0.03615639170904756, 0.019049, -0.058956753254155676)); +#983 = CARTESIAN_POINT('NONE', (-0.03615526308498463, 0.019049, -0.05895971362432612)); +#984 = CARTESIAN_POINT('NONE', (-0.03605727643274981, 0.019049, -0.05918174779924823)); +#985 = CARTESIAN_POINT('NONE', (-0.036055984049100695, 0.019049, -0.05918467629339176)); +#986 = CARTESIAN_POINT('NONE', (-0.03594562783221205, 0.019049, -0.05940329145072335)); +#987 = CARTESIAN_POINT('NONE', (-0.035944172301616485, 0.019049, -0.05940617485012868)); +#988 = CARTESIAN_POINT('NONE', (-0.035821599162420406, 0.019049, -0.05962036096124355)); +#989 = CARTESIAN_POINT('NONE', (-0.03581998249813702, 0.019049, -0.05962318594425458)); +#990 = CARTESIAN_POINT('NONE', (-0.03568545362136307, 0.019049, -0.05983193914485396)); +#991 = CARTESIAN_POINT('NONE', (-0.03568367926825772, 0.019049, -0.05983469247111832)); +#992 = CARTESIAN_POINT('NONE', (-0.03553756452564741, 0.019049, -0.0600370295547062)); +#993 = CARTESIAN_POINT('NONE', (-0.035535637362100775, 0.019049, -0.06003969825633519)); +#994 = CARTESIAN_POINT('NONE', (-0.03545416666666667, 0.019049, -0.060140729685893915)); +#995 = CARTESIAN_POINT('NONE', (-0.03537841313779787, 0.019049, -0.06023467128385073)); +#996 = CARTESIAN_POINT('NONE', (-0.035376339447023675, 0.019049, -0.06023724285811143)); +#997 = CARTESIAN_POINT('NONE', (-0.03520858411620557, 0.019049, -0.060423953450239404)); +#998 = CARTESIAN_POINT('NONE', (-0.035206371526616514, 0.019049, -0.06042641604806144)); +#999 = CARTESIAN_POINT('NONE', (-0.03511639378733898, 0.019049, -0.06051639378733898)); +#1000 = CARTESIAN_POINT('NONE', (-0.03502875865257994, 0.019049, -0.06060402892209802)); +#1001 = CARTESIAN_POINT('NONE', (-0.03502641604806145, 0.019049, -0.060606371526616507)); +#1002 = CARTESIAN_POINT('NONE', (-0.03483970545593346, 0.019049, -0.060774126857434614)); +#1003 = CARTESIAN_POINT('NONE', (-0.034837242858111434, 0.019049, -0.06077633944702367)); +#1004 = CARTESIAN_POINT('NONE', (-0.03474072968589392, 0.019049, -0.06085416666666666)); +#1005 = CARTESIAN_POINT('NONE', (-0.03464226983059591, 0.019049, -0.06093356367132657)); +#1006 = CARTESIAN_POINT('NONE', (-0.03463969825633521, 0.019049, -0.06093563736210077)); +#1007 = CARTESIAN_POINT('NONE', (-0.03443736117274731, 0.019049, -0.061081752104711076)); +#1008 = CARTESIAN_POINT('NONE', (-0.03443469247111832, 0.019049, -0.061083679268257716)); +#1009 = CARTESIAN_POINT('NONE', (-0.03422593927051894, 0.019049, -0.061218208145031656)); +#1010 = CARTESIAN_POINT('NONE', (-0.03422318594425458, 0.019049, -0.06121998249813701)); +#1011 = CARTESIAN_POINT('NONE', (-0.03400899983313972, 0.019049, -0.06134255563733308)); +#1012 = CARTESIAN_POINT('NONE', (-0.03400617485012868, 0.019049, -0.061344172301616484)); +#1013 = CARTESIAN_POINT('NONE', (-0.0337875596927971, 0.019049, -0.06145452851850512)); +#1014 = CARTESIAN_POINT('NONE', (-0.03378467629339177, 0.019049, -0.061455984049100694)); +#1015 = CARTESIAN_POINT('NONE', (-0.03356264211846966, 0.019049, -0.06155397070133552)); +#1016 = CARTESIAN_POINT('NONE', (-0.03355971362432614, 0.019049, -0.06155526308498462)); +#1017 = CARTESIAN_POINT('NONE', (-0.033335262655314876, 0.019049, -0.06164083372311081)); +#1018 = CARTESIAN_POINT('NONE', (-0.03333230228514444, 0.019049, -0.06164196234717374)); +#1019 = CARTESIAN_POINT('NONE', (-0.03310641585908957, 0.019049, -0.06171517235073389)); +#1020 = CARTESIAN_POINT('NONE', (-0.033103436556124, 0.019049, -0.061716137945632736)); +#1021 = CARTESIAN_POINT('NONE', (-0.03287706323651001, 0.019049, -0.061777138396898065)); +#1022 = CARTESIAN_POINT('NONE', (-0.032874077511717996, 0.019049, -0.06177794295531501)); +#1023 = CARTESIAN_POINT('NONE', (-0.03264812263408692, 0.019049, -0.06182697304733345)); +#1024 = CARTESIAN_POINT('NONE', (-0.03264514242828718, 0.019049, -0.061827619724077625)); +#1025 = CARTESIAN_POINT('NONE', (-0.032420459244694534, 0.019049, -0.06186499802653966)); +#1026 = CARTESIAN_POINT('NONE', (-0.03241749581175665, 0.019049, -0.06186549102334924)); +#1027 = CARTESIAN_POINT('NONE', (-0.032194878327646295, 0.019049, -0.06189160593911745)); +#1028 = CARTESIAN_POINT('NONE', (-0.0321919421400135, 0.019049, -0.06189195037878721)); +#1029 = CARTESIAN_POINT('NONE', (-0.031972119668484, 0.019049, -0.06190725011735743)); +#1030 = CARTESIAN_POINT('NONE', (-0.03196922034534729, 0.019049, -0.06190745191149483)); +#1031 = CARTESIAN_POINT('NONE', (-0.03175285374235716, 0.019049, -0.06191243428555198)); +#1032 = CARTESIAN_POINT('NONE', (-0.03175, 0.019049, -0.0619125)); +#1033 = CARTESIAN_POINT('NONE', (-0.03153363339700987, 0.019049, -0.06190751762594285)); +#1034 = CARTESIAN_POINT('NONE', (-0.03153077965465271, 0.019049, -0.06190745191149483)); +#1035 = CARTESIAN_POINT('NONE', (-0.031310957183123184, 0.019049, -0.06189215217292461)); +#1036 = CARTESIAN_POINT('NONE', (-0.03130805785998649, 0.019049, -0.06189195037878721)); +#1037 = CARTESIAN_POINT('NONE', (-0.031085440375876135, 0.019049, -0.061865835463019006)); +#1038 = CARTESIAN_POINT('NONE', (-0.031082504188243345, 0.019049, -0.06186549102334924)); +#1039 = CARTESIAN_POINT('NONE', (-0.030857821004650707, 0.019049, -0.06182811272088723)); +#1040 = CARTESIAN_POINT('NONE', (-0.030854857571712815, 0.019049, -0.061827619724077645)); +#1041 = CARTESIAN_POINT('NONE', (-0.030628902694081746, 0.019049, -0.06177858963205918)); +#1042 = CARTESIAN_POINT('NONE', (-0.030625922488282, 0.019049, -0.06177794295531501)); +#1043 = CARTESIAN_POINT('NONE', (-0.030399549168668025, 0.019049, -0.06171694250404969)); +#1044 = CARTESIAN_POINT('NONE', (-0.030396563443876003, 0.019049, -0.06171613794563274)); +#1045 = CARTESIAN_POINT('NONE', (-0.030170677017821116, 0.019049, -0.06164292794207258)); +#1046 = CARTESIAN_POINT('NONE', (-0.030167697714855553, 0.019049, -0.06164196234717374)); +#1047 = CARTESIAN_POINT('NONE', (-0.029943246745844303, 0.019049, -0.06155639170904755)); +#1048 = CARTESIAN_POINT('NONE', (-0.029940286375673864, 0.019049, -0.06155526308498462)); +#1049 = CARTESIAN_POINT('NONE', (-0.02971825220075177, 0.019049, -0.061457276432749806)); +#1050 = CARTESIAN_POINT('NONE', (-0.02971532370660824, 0.019049, -0.061455984049100694)); +#1051 = CARTESIAN_POINT('NONE', (-0.02949670854927666, 0.019049, -0.06134562783221205)); +#1052 = CARTESIAN_POINT('NONE', (-0.029493825149871332, 0.019049, -0.061344172301616484)); +#1053 = CARTESIAN_POINT('NONE', (-0.02927963903875646, 0.019049, -0.061221599162420405)); +#1054 = CARTESIAN_POINT('NONE', (-0.029276814055745424, 0.019049, -0.06121998249813701)); +#1055 = CARTESIAN_POINT('NONE', (-0.029068060855146023, 0.019049, -0.06108545362136306)); +#1056 = CARTESIAN_POINT('NONE', (-0.029065307528881673, 0.019049, -0.06108367926825771)); +#1057 = CARTESIAN_POINT('NONE', (-0.02886297044529378, 0.019049, -0.0609375645256474)); +#1058 = CARTESIAN_POINT('NONE', (-0.02886030174366479, 0.019049, -0.06093563736210077)); +#1059 = CARTESIAN_POINT('NONE', (-0.028759270314106074, 0.019049, -0.06085416666666666)); +#1060 = CARTESIAN_POINT('NONE', (-0.028665328716149255, 0.019049, -0.06077841313779784)); +#1061 = CARTESIAN_POINT('NONE', (-0.02866275714188856, 0.019049, -0.06077633944702365)); +#1062 = CARTESIAN_POINT('NONE', (-0.028476046549760586, 0.019049, -0.06060858411620556)); +#1063 = CARTESIAN_POINT('NONE', (-0.028473583951938546, 0.019049, -0.060606371526616507)); +#1064 = CARTESIAN_POINT('NONE', (-0.028295971077901973, 0.019049, -0.06042875865257993)); +#1065 = CARTESIAN_POINT('NONE', (-0.028293628473383486, 0.019049, -0.06042641604806144)); +#1066 = CARTESIAN_POINT('NONE', (-0.028125873142565375, 0.019049, -0.06023970545593346)); +#1067 = CARTESIAN_POINT('NONE', (-0.028123660552976326, 0.019049, -0.06023724285811143)); +#1068 = CARTESIAN_POINT('NONE', (-0.028045833333333336, 0.019049, -0.06014072968589392)); +#1069 = CARTESIAN_POINT('NONE', (-0.02796643632867342, 0.019049, -0.0600422698305959)); +#1070 = CARTESIAN_POINT('NONE', (-0.02796436263789923, 0.019049, -0.0600396982563352)); +#1071 = CARTESIAN_POINT('NONE', (-0.027818247895288913, 0.019049, -0.05983736117274731)); +#1072 = CARTESIAN_POINT('NONE', (-0.027816320731742276, 0.019049, -0.05983469247111832)); +#1073 = CARTESIAN_POINT('NONE', (-0.027681791854968343, 0.019049, -0.059625939270518936)); +#1074 = CARTESIAN_POINT('NONE', (-0.02768001750186299, 0.019049, -0.05962318594425458)); +#1075 = CARTESIAN_POINT('NONE', (-0.027557444362666925, 0.019049, -0.05940899983313972)); +#1076 = CARTESIAN_POINT('NONE', (-0.027555827698383526, 0.019049, -0.05940617485012868)); +#1077 = CARTESIAN_POINT('NONE', (-0.027445471481494885, 0.019049, -0.05918755969279709)); +#1078 = CARTESIAN_POINT('NONE', (-0.027444015950899316, 0.019049, -0.05918467629339177)); +#1079 = CARTESIAN_POINT('NONE', (-0.027346029298664472, 0.019049, -0.05896264211846966)); +#1080 = CARTESIAN_POINT('NONE', (-0.02734473691501536, 0.019049, -0.058959713624326136)); +#1081 = CARTESIAN_POINT('NONE', (-0.02725916627688918, 0.019049, -0.058735262655314875)); +#1082 = CARTESIAN_POINT('NONE', (-0.02725803765282625, 0.019049, -0.058732302285144436)); +#1083 = CARTESIAN_POINT('NONE', (-0.027184827649266094, 0.019049, -0.058506415859089556)); +#1084 = CARTESIAN_POINT('NONE', (-0.027183862054367253, 0.019049, -0.058503436556123986)); +#1085 = CARTESIAN_POINT('NONE', (-0.027122861603101928, 0.019049, -0.05827706323651001)); +#1086 = CARTESIAN_POINT('NONE', (-0.027122057044684983, 0.019049, -0.05827407751171799)); +#1087 = CARTESIAN_POINT('NONE', (-0.027073026952666533, 0.019049, -0.05804812263408692)); +#1088 = CARTESIAN_POINT('NONE', (-0.02707238027592236, 0.019049, -0.05804514242828718)); +#1089 = CARTESIAN_POINT('NONE', (-0.027035001973460333, 0.019049, -0.057820459244694526)); +#1090 = CARTESIAN_POINT('NONE', (-0.02703450897665075, 0.019049, -0.057817495811756645)); +#1091 = CARTESIAN_POINT('NONE', (-0.027008394060882537, 0.019049, -0.057594878327646294)); +#1092 = CARTESIAN_POINT('NONE', (-0.02700804962121278, 0.019049, -0.0575919421400135)); +#1093 = CARTESIAN_POINT('NONE', (-0.026992749882642563, 0.019049, -0.05737211966848399)); +#1094 = CARTESIAN_POINT('NONE', (-0.02699254808850517, 0.019049, -0.057369220345347284)); +#1095 = CARTESIAN_POINT('NONE', (-0.026987565714448023, 0.019049, -0.05715285374235715)); +#1096 = CARTESIAN_POINT('NONE', (-0.0269875, 0.019049, -0.05715)); +#1097 = CARTESIAN_POINT('NONE', (-0.026992482374057148, 0.019049, -0.05693363339700987)); +#1098 = CARTESIAN_POINT('NONE', (-0.02699254808850517, 0.019049, -0.05693077965465271)); +#1099 = CARTESIAN_POINT('NONE', (-0.027007847827075385, 0.019049, -0.05671095718312318)); +#1100 = CARTESIAN_POINT('NONE', (-0.02700804962121278, 0.019049, -0.05670805785998649)); +#1101 = CARTESIAN_POINT('NONE', (-0.027034164536980987, 0.019049, -0.05648544037587614)); +#1102 = CARTESIAN_POINT('NONE', (-0.02703450897665075, 0.019049, -0.05648250418824335)); +#1103 = CARTESIAN_POINT('NONE', (-0.027071887279112788, 0.019049, -0.05625782100465071)); +#1104 = CARTESIAN_POINT('NONE', (-0.027072380275922372, 0.019049, -0.05625485757171282)); +#1105 = CARTESIAN_POINT('NONE', (-0.02712141036794082, 0.019049, -0.05602890269408174)); +#1106 = CARTESIAN_POINT('NONE', (-0.027122057044684986, 0.019049, -0.056025922488282)); +#1107 = CARTESIAN_POINT('NONE', (-0.027183057495950312, 0.019049, -0.055799549168668014)); +#1108 = CARTESIAN_POINT('NONE', (-0.027183862054367257, 0.019049, -0.055796563443876)); +#1109 = CARTESIAN_POINT('NONE', (-0.027257072057927413, 0.019049, -0.055570677017821125)); +#1110 = CARTESIAN_POINT('NONE', (-0.027258037652826257, 0.019049, -0.05556769771485555)); +#1111 = CARTESIAN_POINT('NONE', (-0.02734360829095243, 0.019049, -0.0553432467458443)); +#1112 = CARTESIAN_POINT('NONE', (-0.027344736915015364, 0.019049, -0.05534028637567386)); +#1113 = CARTESIAN_POINT('NONE', (-0.027442723567250197, 0.019049, -0.055118252200751776)); +#1114 = CARTESIAN_POINT('NONE', (-0.027444015950899313, 0.019049, -0.055115323706608245)); +#1115 = CARTESIAN_POINT('NONE', (-0.02755437216778796, 0.019049, -0.05489670854927666)); +#1116 = CARTESIAN_POINT('NONE', (-0.027555827698383526, 0.019049, -0.05489382514987133)); +#1117 = CARTESIAN_POINT('NONE', (-0.0276784008375796, 0.019049, -0.05467963903875645)); +#1118 = CARTESIAN_POINT('NONE', (-0.027680017501862993, 0.019049, -0.05467681405574541)); +#1119 = CARTESIAN_POINT('NONE', (-0.027814546378636923, 0.019049, -0.05446806085514603)); +#1120 = CARTESIAN_POINT('NONE', (-0.027816320731742273, 0.019049, -0.05446530752888167)); +#1121 = CARTESIAN_POINT('NONE', (-0.027962435474352593, 0.019049, -0.05426297044529378)); +#1122 = CARTESIAN_POINT('NONE', (-0.02796436263789923, 0.019049, -0.05426030174366479)); +#1123 = CARTESIAN_POINT('NONE', (-0.028045833333333336, 0.019049, -0.05415927031410607)); +#1124 = CARTESIAN_POINT('NONE', (-0.02812158686220214, 0.019049, -0.05406532871614925)); +#1125 = CARTESIAN_POINT('NONE', (-0.02812366055297633, 0.019049, -0.05406275714188855)); +#1126 = CARTESIAN_POINT('NONE', (-0.028291415883794434, 0.019049, -0.053876046549760574)); +#1127 = CARTESIAN_POINT('NONE', (-0.028293628473383486, 0.019049, -0.05387358395193854)); +#1128 = CARTESIAN_POINT('NONE', (-0.028383606212661016, 0.019049, -0.05378360621266101)); +#1129 = CARTESIAN_POINT('NONE', (-0.02847124134742006, 0.019049, -0.05369597107790197)); +#1130 = CARTESIAN_POINT('NONE', (-0.028473583951938546, 0.019049, -0.053693628473383485)); +#1131 = CARTESIAN_POINT('NONE', (-0.028660294544066527, 0.019049, -0.05352587314256537)); +#1132 = CARTESIAN_POINT('NONE', (-0.028662757141888564, 0.019049, -0.053523660552976325)); +#1133 = CARTESIAN_POINT('NONE', (-0.02875927031410607, 0.019049, -0.05344583333333333)); +#1134 = CARTESIAN_POINT('NONE', (-0.028857730169404093, 0.019049, -0.053366436328673425)); +#1135 = CARTESIAN_POINT('NONE', (-0.02886030174366479, 0.019049, -0.053364362637899225)); +#1136 = CARTESIAN_POINT('NONE', (-0.02906263882725269, 0.019049, -0.05321824789528891)); +#1137 = CARTESIAN_POINT('NONE', (-0.02906530752888168, 0.019049, -0.05321632073174227)); +#1138 = CARTESIAN_POINT('NONE', (-0.029274060729481067, 0.019049, -0.05308179185496834)); +#1139 = CARTESIAN_POINT('NONE', (-0.02927681405574542, 0.019049, -0.05308001750186299)); +#1140 = CARTESIAN_POINT('NONE', (-0.02949100016686029, 0.019049, -0.05295744436266692)); +#1141 = CARTESIAN_POINT('NONE', (-0.029493825149871332, 0.019049, -0.05295582769838352)); +#1142 = CARTESIAN_POINT('NONE', (-0.02971244030720291, 0.019049, -0.052845471481494884)); +#1143 = CARTESIAN_POINT('NONE', (-0.029715323706608236, 0.019049, -0.05284401595089931)); +#1144 = CARTESIAN_POINT('NONE', (-0.02993735788153034, 0.019049, -0.05274602929866448)); +#1145 = CARTESIAN_POINT('NONE', (-0.029940286375673867, 0.019049, -0.05274473691501537)); +#1146 = CARTESIAN_POINT('NONE', (-0.030164737344685118, 0.019049, -0.05265916627688918)); +#1147 = CARTESIAN_POINT('NONE', (-0.030167697714855557, 0.019049, -0.05265803765282625)); +#1148 = CARTESIAN_POINT('NONE', (-0.030393584140910423, 0.019049, -0.052584827649266086)); +#1149 = CARTESIAN_POINT('NONE', (-0.030396563443875996, 0.019049, -0.05258386205436724)); +#1150 = CARTESIAN_POINT('NONE', (-0.030622936763489986, 0.019049, -0.05252286160310193)); +#1151 = CARTESIAN_POINT('NONE', (-0.030625922488282005, 0.019049, -0.05252205704468498)); +#1152 = CARTESIAN_POINT('NONE', (-0.030851877365913064, 0.019049, -0.05247302695266652)); +#1153 = CARTESIAN_POINT('NONE', (-0.03085485757171281, 0.019049, -0.05247238027592235)); +#1154 = CARTESIAN_POINT('NONE', (-0.031079540755305467, 0.019049, -0.05243500197346032)); +#1155 = CARTESIAN_POINT('NONE', (-0.031082504188243345, 0.019049, -0.05243450897665074)); +#1156 = CARTESIAN_POINT('NONE', (-0.0313051216723537, 0.019049, -0.05240839406088253)); +#1157 = CARTESIAN_POINT('NONE', (-0.03130805785998649, 0.019049, -0.05240804962121277)); +#1158 = CARTESIAN_POINT('NONE', (-0.03152788033151601, 0.019049, -0.05239274988264256)); +#1159 = CARTESIAN_POINT('NONE', (-0.03153077965465271, 0.019049, -0.052392548088505166)); +#1160 = CARTESIAN_POINT('NONE', (-0.03174714625764284, 0.019049, -0.05238756571444802)); +#1161 = CARTESIAN_POINT('NONE', (-0.03175, 0.019049, -0.0523875)); +#1162 = CARTESIAN_POINT('NONE', (-0.03196636660299013, 0.019049, -0.052392482374057144)); +#1163 = CARTESIAN_POINT('NONE', (-0.031969220345347285, 0.019049, -0.052392548088505166)); +#1164 = CARTESIAN_POINT('NONE', (-0.0321890428168768, 0.019049, -0.05240784782707537)); +#1165 = CARTESIAN_POINT('NONE', (-0.0321919421400135, 0.019049, -0.05240804962121276)); +#1166 = CARTESIAN_POINT('NONE', (-0.03241455962412385, 0.019049, -0.05243416453698098)); +#1167 = CARTESIAN_POINT('NONE', (-0.032417495811756646, 0.019049, -0.05243450897665074)); +#1168 = CARTESIAN_POINT('NONE', (-0.032642178995349304, 0.019049, -0.05247188727911278)); +#1169 = CARTESIAN_POINT('NONE', (-0.03264514242828719, 0.019049, -0.05247238027592237)); +#1170 = CARTESIAN_POINT('NONE', (-0.03287109730591826, 0.019049, -0.052521410367940814)); +#1171 = CARTESIAN_POINT('NONE', (-0.032874077511717996, 0.019049, -0.05252205704468498)); +#1172 = CARTESIAN_POINT('NONE', (-0.03310045083133198, 0.019049, -0.052583057495950304)); +#1173 = CARTESIAN_POINT('NONE', (-0.033103436556123994, 0.019049, -0.05258386205436725)); +#1174 = CARTESIAN_POINT('NONE', (-0.03332932298217886, 0.019049, -0.052657072057927405)); +#1175 = CARTESIAN_POINT('NONE', (-0.03333230228514444, 0.019049, -0.05265803765282625)); +#1176 = CARTESIAN_POINT('NONE', (-0.03355675325415569, 0.019049, -0.05274360829095243)); +#1177 = CARTESIAN_POINT('NONE', (-0.03355971362432614, 0.019049, -0.05274473691501537)); +#1178 = CARTESIAN_POINT('NONE', (-0.03378174779924823, 0.019049, -0.0528427235672502)); +#1179 = CARTESIAN_POINT('NONE', (-0.03378467629339176, 0.019049, -0.05284401595089931)); +#1180 = CARTESIAN_POINT('NONE', (-0.034003291450723346, 0.019049, -0.05295437216778796)); +#1181 = CARTESIAN_POINT('NONE', (-0.03400617485012867, 0.019049, -0.05295582769838352)); +#1182 = CARTESIAN_POINT('NONE', (-0.03422036096124354, 0.019049, -0.05307840083757959)); +#1183 = CARTESIAN_POINT('NONE', (-0.03422318594425458, 0.019049, -0.05308001750186298)); +#1184 = CARTESIAN_POINT('NONE', (-0.03443193914485396, 0.019049, -0.05321454637863691)); +#1185 = CARTESIAN_POINT('NONE', (-0.034434692471118314, 0.019049, -0.05321632073174226)); +#1186 = CARTESIAN_POINT('NONE', (-0.03463702955470621, 0.019049, -0.053362435474352585)); +#1187 = CARTESIAN_POINT('NONE', (-0.0346396982563352, 0.019049, -0.053364362637899225)); +#1188 = CARTESIAN_POINT('NONE', (-0.03474072968589392, 0.019049, -0.05344583333333333)); +#1189 = CARTESIAN_POINT('NONE', (-0.03483467128385074, 0.019049, -0.05352158686220213)); +#1190 = CARTESIAN_POINT('NONE', (-0.034837242858111434, 0.019049, -0.053523660552976325)); +#1191 = CARTESIAN_POINT('NONE', (-0.03502395345023941, 0.019049, -0.053691415883794426)); +#1192 = CARTESIAN_POINT('NONE', (-0.03502641604806145, 0.019049, -0.05369362847338348)); +#1193 = CARTESIAN_POINT('NONE', (-0.03520402892209803, 0.019049, -0.053871241347420044)); +#1194 = CARTESIAN_POINT('NONE', (-0.035206371526616514, 0.019049, -0.05387358395193854)); +#1195 = CARTESIAN_POINT('NONE', (-0.035374126857434615, 0.019049, -0.05406029454406653)); +#1196 = CARTESIAN_POINT('NONE', (-0.03537633944702367, 0.019049, -0.05406275714188856)); +#1197 = CARTESIAN_POINT('NONE', (-0.03545416666666667, 0.019049, -0.05415927031410608)); +#1198 = CARTESIAN_POINT('NONE', (-0.035533563671326575, 0.019049, -0.05425773016940409)); +#1199 = CARTESIAN_POINT('NONE', (-0.035535637362100775, 0.019049, -0.05426030174366479)); +#1200 = CARTESIAN_POINT('NONE', (-0.035681752104711084, 0.019049, -0.05446263882725269)); +#1201 = CARTESIAN_POINT('NONE', (-0.035683679268257724, 0.019049, -0.05446530752888168)); +#1202 = CARTESIAN_POINT('NONE', (-0.035818208145031664, 0.019049, -0.054674060729481055)); +#1203 = CARTESIAN_POINT('NONE', (-0.03581998249813702, 0.019049, -0.05467681405574541)); +#1204 = CARTESIAN_POINT('NONE', (-0.03594255563733308, 0.019049, -0.054891000166860285)); +#1205 = CARTESIAN_POINT('NONE', (-0.035944172301616485, 0.019049, -0.05489382514987133)); +#1206 = CARTESIAN_POINT('NONE', (-0.03605452851850512, 0.019049, -0.0551124403072029)); +#1207 = CARTESIAN_POINT('NONE', (-0.036055984049100695, 0.019049, -0.05511532370660823)); +#1208 = CARTESIAN_POINT('NONE', (-0.036153970701335525, 0.019049, -0.05533735788153033)); +#1209 = CARTESIAN_POINT('NONE', (-0.03615526308498463, 0.019049, -0.055340286375673856)); +#1210 = CARTESIAN_POINT('NONE', (-0.036240833723110814, 0.019049, -0.0555647373446851)); +#1211 = CARTESIAN_POINT('NONE', (-0.036241962347173744, 0.019049, -0.05556769771485555)); +#1212 = CARTESIAN_POINT('NONE', (-0.03631517235073389, 0.019049, -0.05579358414091042)); +#1213 = CARTESIAN_POINT('NONE', (-0.03631613794563274, 0.019049, -0.055796563443876)); +#1214 = CARTESIAN_POINT('NONE', (-0.03637713839689807, 0.019049, -0.05602293676348998)); +#1215 = CARTESIAN_POINT('NONE', (-0.03637794295531502, 0.019049, -0.056025922488282)); +#1216 = CARTESIAN_POINT('NONE', (-0.036426973047333465, 0.019049, -0.05625187736591306)); +#1217 = CARTESIAN_POINT('NONE', (-0.03642761972407763, 0.019049, -0.05625485757171281)); +#1218 = CARTESIAN_POINT('NONE', (-0.03646499802653966, 0.019049, -0.056479540755305466)); +#1219 = CARTESIAN_POINT('NONE', (-0.03646549102334924, 0.019049, -0.05648250418824335)); +#1220 = CARTESIAN_POINT('NONE', (-0.03649160593911746, 0.019049, -0.0567051216723537)); +#1221 = CARTESIAN_POINT('NONE', (-0.036491950378787226, 0.019049, -0.05670805785998649)); +#1222 = CARTESIAN_POINT('NONE', (-0.036507250117357434, 0.019049, -0.056927880331516)); +#1223 = CARTESIAN_POINT('NONE', (-0.036507451911494834, 0.019049, -0.0569307796546527)); +#1224 = CARTESIAN_POINT('NONE', (-0.03651243428555198, 0.019049, -0.05714714625764285)); +#1225 = CARTESIAN_POINT('NONE', (-0.0365125, 0.019049, -0.05715)); +#1226 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#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), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (0, 0.0038910505836575876, 0.007782101167315175, 0.011673151750972763, 0.01556420233463035, 0.019455252918287938, 0.023346303501945526, 0.027237354085603113, 0.0311284046692607, 0.03501945525291829, 0.038910505836575876, 0.042801556420233464, 0.04669260700389105, 0.05058365758754864, 0.054474708171206226, 0.058365758754863814, 0.0622568093385214, 0.06614785992217899, 0.07003891050583658, 0.07392996108949416, 0.07782101167315175, 0.08171206225680934, 0.08560311284046693, 0.08949416342412451, 0.0933852140077821, 0.09727626459143969, 0.10116731517509728, 0.10505836575875487, 0.10894941634241245, 0.11284046692607004, 0.11673151750972763, 0.12062256809338522, 0.1245136186770428, 0.12840466926070038, 0.13229571984435798, 0.13618677042801558, 0.14007782101167315, 0.14396887159533073, 0.14785992217898833, 0.15175097276264593, 0.1556420233463035, 0.15953307392996108, 0.16342412451361868, 0.16731517509727628, 0.17120622568093385, 0.17509727626459143, 0.17898832684824903, 0.18287937743190663, 0.1867704280155642, 0.19066147859922178, 0.19455252918287938, 0.19844357976653698, 0.20233463035019456, 0.20622568093385213, 0.21011673151750973, 0.21400778210116733, 0.2178988326848249, 0.22178988326848248, 0.22568093385214008, 0.22957198443579768, 0.23346303501945526, 0.23735408560311283, 0.24124513618677043, 0.24513618677042803, 0.2490272373540856, 0.2529182879377432, 0.25680933852140075, 0.2607003891050584, 0.26459143968871596, 0.26848249027237353, 0.27237354085603116, 0.27626459143968873, 0.2801556420233463, 0.2840466926070039, 0.28793774319066145, 0.2918287937743191, 0.29571984435797666, 0.29961089494163423, 0.30350194552529186, 0.30739299610894943, 0.311284046692607, 0.3151750972762646, 0.31906614785992216, 0.3229571984435798, 0.32684824902723736, 0.33073929961089493, 0.33463035019455256, 0.33852140077821014, 0.3424124513618677, 0.3463035019455253, 0.35019455252918286, 0.3540856031128405, 0.35797665369649806, 0.36186770428015563, 0.36575875486381326, 0.36964980544747084, 0.3735408560311284, 0.377431906614786, 0.38132295719844356, 0.3852140077821012, 0.38910505836575876, 0.39299610894941633, 0.39688715953307396, 0.40077821011673154, 0.4046692607003891, 0.4085603112840467, 0.41245136186770426, 0.4163424124513619, 0.42023346303501946, 0.42412451361867703, 0.42801556420233466, 0.43190661478599224, 0.4357976653696498, 0.4396887159533074, 0.44357976653696496, 0.4474708171206226, 0.45136186770428016, 0.45525291828793774, 0.45914396887159536, 0.46303501945525294, 0.4669260700389105, 0.4708171206225681, 0.47470817120622566, 0.4785992217898833, 0.48249027237354086, 0.48638132295719844, 0.49027237354085607, 0.49416342412451364, 0.4980544747081712, 0.5019455252918288, 0.5058365758754864, 0.5097276264591439, 0.5136186770428015, 0.5175097276264591, 0.5214007782101167, 0.5252918287937743, 0.5291828793774319, 0.5330739299610895, 0.5369649805447471, 0.5408560311284046, 0.5447470817120623, 0.5486381322957199, 0.5525291828793775, 0.556420233463035, 0.5603112840466926, 0.5642023346303502, 0.5680933852140078, 0.5719844357976653, 0.5758754863813229, 0.5797665369649805, 0.5836575875486381, 0.5875486381322957, 0.5914396887159533, 0.5953307392996109, 0.5992217898832685, 0.603112840466926, 0.6070038910505837, 0.6108949416342413, 0.6147859922178989, 0.6186770428015564, 0.622568093385214, 0.6264591439688716, 0.6303501945525292, 0.6342412451361867, 0.6381322957198443, 0.6420233463035019, 0.6459143968871595, 0.6498054474708171, 0.6536964980544747, 0.6575875486381323, 0.6614785992217899, 0.6653696498054474, 0.6692607003891051, 0.6731517509727627, 0.6770428015564203, 0.6809338521400778, 0.6848249027237354, 0.688715953307393, 0.6926070038910506, 0.6964980544747081, 0.7003891050583657, 0.7042801556420233, 0.7081712062256809, 0.7120622568093385, 0.7159533073929961, 0.7198443579766537, 0.7237354085603113, 0.7276264591439688, 0.7315175097276265, 0.7354085603112841, 0.7392996108949417, 0.7431906614785992, 0.7470817120622568, 0.7509727626459144, 0.754863813229572, 0.7587548638132295, 0.7626459143968871, 0.7665369649805447, 0.7704280155642023, 0.77431906614786, 0.7782101167315175, 0.7821011673151751, 0.7859922178988327, 0.7898832684824902, 0.7937743190661479, 0.7976653696498055, 0.8015564202334631, 0.8054474708171206, 0.8093385214007782, 0.8132295719844358, 0.8171206225680934, 0.8210116731517509, 0.8249027237354085, 0.8287937743190661, 0.8326848249027237, 0.8365758754863813, 0.8404669260700389, 0.8443579766536965, 0.8482490272373541, 0.8521400778210116, 0.8560311284046693, 0.8599221789883269, 0.8638132295719845, 0.867704280155642, 0.8715953307392996, 0.8754863813229572, 0.8793774319066148, 0.8832684824902723, 0.8871595330739299, 0.8910505836575875, 0.8949416342412452, 0.8988326848249028, 0.9027237354085603, 0.9066147859922179, 0.9105058365758755, 0.914396887159533, 0.9182879377431906, 0.9221789883268483, 0.9260700389105059, 0.9299610894941635, 0.933852140077821, 0.9377431906614786, 0.9416342412451362, 0.9455252918287937, 0.9494163424124513, 0.9533073929961089, 0.9571984435797666, 0.9610894941634242, 0.9649805447470817, 0.9688715953307393, 0.9727626459143969, 0.9766536964980544, 0.980544747081712, 0.9844357976653697, 0.9883268482490273, 0.9922178988326849, 0.9961089494163424, 1), .UNSPECIFIED.); +#1227 = DIRECTION('NONE', (0, -1, 0)); +#1228 = VECTOR('NONE', #1227, 1); +#1229 = CARTESIAN_POINT('NONE', (-0.0365125, 0.019051000000000002, -0.05715)); +#1230 = LINE('NONE', #1229, #1228); +#1231 = DIRECTION('NONE', (-1, 0, 0.000000000000001491953250939841)); +#1232 = DIRECTION('NONE', (-0, -1, 0)); +#1233 = CARTESIAN_POINT('NONE', (-0.031749999999999994, -0, -0.057150000000000006)); +#1234 = AXIS2_PLACEMENT_3D('NONE', #1233, #1232, #1231); +#1235 = CIRCLE('NONE', #1234, 0.004762500000000006); +#1236 = DIRECTION('NONE', (1, 0, -0)); +#1237 = DIRECTION('NONE', (0, 1, 0)); +#1238 = CARTESIAN_POINT('NONE', (0, -0.0000010000000000012222, 0)); +#1239 = AXIS2_PLACEMENT_3D('NONE', #1238, #1237, #1236); +#1240 = CIRCLE('NONE', #1239, 0.0381); +#1241 = DIRECTION('NONE', (0, 1, 0)); +#1242 = VECTOR('NONE', #1241, 1); +#1243 = CARTESIAN_POINT('NONE', (0.0381, -0.0000010000000000012222, -0)); +#1244 = LINE('NONE', #1243, #1242); +#1245 = DIRECTION('NONE', (1, 0, -0)); +#1246 = DIRECTION('NONE', (0, 1, 0)); +#1247 = CARTESIAN_POINT('NONE', (0, 0.0254, 0)); +#1248 = AXIS2_PLACEMENT_3D('NONE', #1247, #1246, #1245); +#1249 = CIRCLE('NONE', #1248, 0.0381); +#1250 = EDGE_CURVE('NONE', #5, #7, #59, .T.); +#1251 = EDGE_CURVE('NONE', #7, #9, #63, .T.); +#1252 = EDGE_CURVE('NONE', #11, #9, #67, .T.); +#1253 = EDGE_CURVE('NONE', #5, #11, #71, .T.); +#1254 = EDGE_CURVE('NONE', #7, #13, #75, .T.); +#1255 = EDGE_CURVE('NONE', #13, #15, #79, .T.); +#1256 = EDGE_CURVE('NONE', #9, #15, #83, .T.); +#1257 = EDGE_CURVE('NONE', #13, #17, #87, .T.); +#1258 = EDGE_CURVE('NONE', #17, #19, #91, .T.); +#1259 = EDGE_CURVE('NONE', #15, #19, #95, .T.); +#1260 = EDGE_CURVE('NONE', #17, #5, #99, .T.); +#1261 = EDGE_CURVE('NONE', #19, #11, #103, .T.); +#1262 = EDGE_CURVE('NONE', #21, #21, #108, .T.); +#1263 = EDGE_CURVE('NONE', #21, #23, #112, .T.); +#1264 = EDGE_CURVE('NONE', #23, #23, #117, .T.); +#1265 = EDGE_CURVE('NONE', #25, #25, #122, .T.); +#1266 = EDGE_CURVE('NONE', #25, #27, #126, .T.); +#1267 = EDGE_CURVE('NONE', #27, #27, #131, .T.); +#1268 = EDGE_CURVE('NONE', #29, #29, #136, .T.); +#1269 = EDGE_CURVE('NONE', #29, #31, #140, .T.); +#1270 = EDGE_CURVE('NONE', #31, #31, #145, .T.); +#1271 = EDGE_CURVE('NONE', #33, #33, #150, .T.); +#1272 = EDGE_CURVE('NONE', #33, #35, #154, .T.); +#1273 = EDGE_CURVE('NONE', #35, #35, #159, .T.); +#1274 = EDGE_CURVE('NONE', #37, #37, #419, .T.); +#1275 = EDGE_CURVE('NONE', #37, #39, #423, .T.); +#1276 = EDGE_CURVE('NONE', #39, #39, #428, .T.); +#1277 = EDGE_CURVE('NONE', #41, #41, #688, .T.); +#1278 = EDGE_CURVE('NONE', #41, #43, #692, .T.); +#1279 = EDGE_CURVE('NONE', #43, #43, #697, .T.); +#1280 = EDGE_CURVE('NONE', #45, #45, #957, .T.); +#1281 = EDGE_CURVE('NONE', #45, #47, #961, .T.); +#1282 = EDGE_CURVE('NONE', #47, #47, #966, .T.); +#1283 = EDGE_CURVE('NONE', #49, #49, #1226, .T.); +#1284 = EDGE_CURVE('NONE', #49, #51, #1230, .T.); +#1285 = EDGE_CURVE('NONE', #51, #51, #1235, .T.); +#1286 = EDGE_CURVE('NONE', #53, #53, #1240, .T.); +#1287 = EDGE_CURVE('NONE', #53, #55, #1244, .T.); +#1288 = EDGE_CURVE('NONE', #55, #55, #1249, .T.); +#1289 = CARTESIAN_POINT('NONE', (0, 0.012699999999999996, 0.07619999999999999)); +#1290 = DIRECTION('NONE', (0, 0, 1)); +#1291 = AXIS2_PLACEMENT_3D('NONE', #1289, #1290, $); +#1292 = PLANE('NONE', #1291); +#1293 = CARTESIAN_POINT('NONE', (0.0508, 0.012699999999999998, -0.000000000000000007105427357601002)); +#1294 = DIRECTION('NONE', (1, 0, 0)); +#1295 = AXIS2_PLACEMENT_3D('NONE', #1293, #1294, $); +#1296 = PLANE('NONE', #1295); +#1297 = CARTESIAN_POINT('NONE', (0, 0.012699999999999998, -0.07619999999999999)); +#1298 = DIRECTION('NONE', (0, -0, -1)); +#1299 = AXIS2_PLACEMENT_3D('NONE', #1297, #1298, $); +#1300 = PLANE('NONE', #1299); +#1301 = CARTESIAN_POINT('NONE', (-0.05079999999999999, 0.012699999999999998, -0)); +#1302 = DIRECTION('NONE', (-1, 0, 0)); +#1303 = AXIS2_PLACEMENT_3D('NONE', #1301, #1302, $); +#1304 = PLANE('NONE', #1303); +#1305 = CARTESIAN_POINT('NONE', (0, 0, -0)); +#1306 = DIRECTION('NONE', (0, 1, 0)); +#1307 = AXIS2_PLACEMENT_3D('NONE', #1305, #1306, $); +#1308 = PLANE('NONE', #1307); +#1309 = CARTESIAN_POINT('NONE', (0, 0.0254, -0)); +#1310 = DIRECTION('NONE', (0, 1, 0)); +#1311 = AXIS2_PLACEMENT_3D('NONE', #1309, #1310, $); +#1312 = PLANE('NONE', #1311); +#1313 = CARTESIAN_POINT('NONE', (-0.031749999999999994, 0.022224499999999998, 0.05714999999999999)); +#1314 = DIRECTION('NONE', (-0, 1, 0)); +#1315 = DIRECTION('NONE', (1, 0, 0.0000000000000007992606701463447)); +#1316 = AXIS2_PLACEMENT_3D('NONE', #1313, #1314, #1315); +#1317 = CYLINDRICAL_SURFACE('NONE', #1316, 0.008889999999999997); +#1318 = CARTESIAN_POINT('NONE', (0, 0.019049, -0)); +#1319 = DIRECTION('NONE', (0, 1, 0)); +#1320 = AXIS2_PLACEMENT_3D('NONE', #1318, #1319, $); +#1321 = PLANE('NONE', #1320); +#1322 = CARTESIAN_POINT('NONE', (0.031749999999999994, 0.022224499999999998, 0.05714999999999999)); +#1323 = DIRECTION('NONE', (-0, 1, 0)); +#1324 = DIRECTION('NONE', (1, 0, 0.000000000000000799260670146344)); +#1325 = AXIS2_PLACEMENT_3D('NONE', #1322, #1323, #1324); +#1326 = CYLINDRICAL_SURFACE('NONE', #1325, 0.008890000000000004); +#1327 = CARTESIAN_POINT('NONE', (0, 0.019049, -0)); +#1328 = DIRECTION('NONE', (0, 1, 0)); +#1329 = AXIS2_PLACEMENT_3D('NONE', #1327, #1328, $); +#1330 = PLANE('NONE', #1329); +#1331 = CARTESIAN_POINT('NONE', (-0.03175, 0.022224499999999998, -0.05714999999999999)); +#1332 = DIRECTION('NONE', (0, 1, 0)); +#1333 = DIRECTION('NONE', (1, 0, -0.0000000000000007992606701463443)); +#1334 = AXIS2_PLACEMENT_3D('NONE', #1331, #1332, #1333); +#1335 = CYLINDRICAL_SURFACE('NONE', #1334, 0.00889); +#1336 = CARTESIAN_POINT('NONE', (0, 0.019049, -0)); +#1337 = DIRECTION('NONE', (0, 1, 0)); +#1338 = AXIS2_PLACEMENT_3D('NONE', #1336, #1337, $); +#1339 = PLANE('NONE', #1338); +#1340 = CARTESIAN_POINT('NONE', (0.03175, 0.022224499999999998, -0.05714999999999999)); +#1341 = DIRECTION('NONE', (0, 1, 0)); +#1342 = DIRECTION('NONE', (1, 0, -0.0000000000000007992606701463447)); +#1343 = AXIS2_PLACEMENT_3D('NONE', #1340, #1341, #1342); +#1344 = CYLINDRICAL_SURFACE('NONE', #1343, 0.008889999999999997); +#1345 = CARTESIAN_POINT('NONE', (0, 0.019049, -0)); +#1346 = DIRECTION('NONE', (0, 1, 0)); +#1347 = AXIS2_PLACEMENT_3D('NONE', #1345, #1346, $); +#1348 = PLANE('NONE', #1347); +#1349 = CARTESIAN_POINT('NONE', (0.031749999999999994, 0.009525500000000001, 0.05714999999999999)); +#1350 = DIRECTION('NONE', (-0, -1, 0)); +#1351 = DIRECTION('NONE', (-1, 0, 0.0000000000000014919532509398443)); +#1352 = AXIS2_PLACEMENT_3D('NONE', #1349, #1350, #1351); +#1353 = CYLINDRICAL_SURFACE('NONE', #1352, 0.004762499999999996); +#1354 = CARTESIAN_POINT('NONE', (-0.031749999999999994, 0.009525500000000001, 0.05714999999999999)); +#1355 = DIRECTION('NONE', (-0, -1, 0)); +#1356 = DIRECTION('NONE', (-1, 0, 0.000000000000001491953250939841)); +#1357 = AXIS2_PLACEMENT_3D('NONE', #1354, #1355, #1356); +#1358 = CYLINDRICAL_SURFACE('NONE', #1357, 0.004762500000000006); +#1359 = CARTESIAN_POINT('NONE', (0.031749999999999994, 0.009525500000000001, -0.057150000000000006)); +#1360 = DIRECTION('NONE', (-0, -1, 0)); +#1361 = DIRECTION('NONE', (-1, 0, 0.0000000000000014919532509398443)); +#1362 = AXIS2_PLACEMENT_3D('NONE', #1359, #1360, #1361); +#1363 = CYLINDRICAL_SURFACE('NONE', #1362, 0.004762499999999996); +#1364 = CARTESIAN_POINT('NONE', (-0.031749999999999994, 0.009525500000000001, -0.057150000000000006)); +#1365 = DIRECTION('NONE', (-0, -1, 0)); +#1366 = DIRECTION('NONE', (-1, 0, 0.000000000000001491953250939841)); +#1367 = AXIS2_PLACEMENT_3D('NONE', #1364, #1365, #1366); +#1368 = CYLINDRICAL_SURFACE('NONE', #1367, 0.004762500000000006); +#1369 = CARTESIAN_POINT('NONE', (0, 0.012699499999999999, 0)); +#1370 = DIRECTION('NONE', (0, 1, 0)); +#1371 = DIRECTION('NONE', (1, 0, -0)); +#1372 = AXIS2_PLACEMENT_3D('NONE', #1369, #1370, #1371); +#1373 = CYLINDRICAL_SURFACE('NONE', #1372, 0.0381); +#1374 = ORIENTED_EDGE('NONE', *, *, #1250, .T.); +#1375 = ORIENTED_EDGE('NONE', *, *, #1251, .T.); +#1376 = ORIENTED_EDGE('NONE', *, *, #1252, .F.); +#1377 = ORIENTED_EDGE('NONE', *, *, #1253, .F.); +#1378 = EDGE_LOOP('NONE', (#1374, #1375, #1376, #1377)); +#1379 = FACE_BOUND('NONE', #1378, .T.); +#1380 = ADVANCED_FACE('NONE', (#1379), #1292, .T.); +#1381 = ORIENTED_EDGE('NONE', *, *, #1254, .T.); +#1382 = ORIENTED_EDGE('NONE', *, *, #1255, .T.); +#1383 = ORIENTED_EDGE('NONE', *, *, #1256, .F.); +#1384 = ORIENTED_EDGE('NONE', *, *, #1251, .F.); +#1385 = EDGE_LOOP('NONE', (#1381, #1382, #1383, #1384)); +#1386 = FACE_BOUND('NONE', #1385, .T.); +#1387 = ADVANCED_FACE('NONE', (#1386), #1296, .T.); +#1388 = ORIENTED_EDGE('NONE', *, *, #1257, .T.); +#1389 = ORIENTED_EDGE('NONE', *, *, #1258, .T.); +#1390 = ORIENTED_EDGE('NONE', *, *, #1259, .F.); +#1391 = ORIENTED_EDGE('NONE', *, *, #1255, .F.); +#1392 = EDGE_LOOP('NONE', (#1388, #1389, #1390, #1391)); +#1393 = FACE_BOUND('NONE', #1392, .T.); +#1394 = ADVANCED_FACE('NONE', (#1393), #1300, .T.); +#1395 = ORIENTED_EDGE('NONE', *, *, #1260, .T.); +#1396 = ORIENTED_EDGE('NONE', *, *, #1253, .T.); +#1397 = ORIENTED_EDGE('NONE', *, *, #1261, .F.); +#1398 = ORIENTED_EDGE('NONE', *, *, #1258, .F.); +#1399 = EDGE_LOOP('NONE', (#1395, #1396, #1397, #1398)); +#1400 = FACE_BOUND('NONE', #1399, .T.); +#1401 = ADVANCED_FACE('NONE', (#1400), #1304, .T.); +#1402 = ORIENTED_EDGE('NONE', *, *, #1260, .F.); +#1403 = ORIENTED_EDGE('NONE', *, *, #1257, .F.); +#1404 = ORIENTED_EDGE('NONE', *, *, #1254, .F.); +#1405 = ORIENTED_EDGE('NONE', *, *, #1250, .F.); +#1406 = ORIENTED_EDGE('NONE', *, *, #1276, .F.); +#1407 = ORIENTED_EDGE('NONE', *, *, #1279, .F.); +#1408 = ORIENTED_EDGE('NONE', *, *, #1282, .F.); +#1409 = ORIENTED_EDGE('NONE', *, *, #1285, .F.); +#1410 = ORIENTED_EDGE('NONE', *, *, #1286, .T.); +#1411 = EDGE_LOOP('NONE', (#1402, #1403, #1404, #1405)); +#1412 = FACE_BOUND('NONE', #1411, .T.); +#1413 = EDGE_LOOP('NONE', (#1406)); +#1414 = FACE_BOUND('NONE', #1413, .T.); +#1415 = EDGE_LOOP('NONE', (#1407)); +#1416 = FACE_BOUND('NONE', #1415, .T.); +#1417 = EDGE_LOOP('NONE', (#1408)); +#1418 = FACE_BOUND('NONE', #1417, .T.); +#1419 = EDGE_LOOP('NONE', (#1409)); +#1420 = FACE_BOUND('NONE', #1419, .T.); +#1421 = EDGE_LOOP('NONE', (#1410)); +#1422 = FACE_BOUND('NONE', #1421, .T.); +#1423 = ADVANCED_FACE('NONE', (#1412, #1414, #1416, #1418, #1420, #1422), #1308, .F.); +#1424 = ORIENTED_EDGE('NONE', *, *, #1252, .T.); +#1425 = ORIENTED_EDGE('NONE', *, *, #1256, .T.); +#1426 = ORIENTED_EDGE('NONE', *, *, #1259, .T.); +#1427 = ORIENTED_EDGE('NONE', *, *, #1261, .T.); +#1428 = ORIENTED_EDGE('NONE', *, *, #1264, .F.); +#1429 = ORIENTED_EDGE('NONE', *, *, #1267, .F.); +#1430 = ORIENTED_EDGE('NONE', *, *, #1270, .F.); +#1431 = ORIENTED_EDGE('NONE', *, *, #1273, .F.); +#1432 = ORIENTED_EDGE('NONE', *, *, #1288, .F.); +#1433 = EDGE_LOOP('NONE', (#1424, #1425, #1426, #1427)); +#1434 = FACE_BOUND('NONE', #1433, .T.); +#1435 = EDGE_LOOP('NONE', (#1428)); +#1436 = FACE_BOUND('NONE', #1435, .T.); +#1437 = EDGE_LOOP('NONE', (#1429)); +#1438 = FACE_BOUND('NONE', #1437, .T.); +#1439 = EDGE_LOOP('NONE', (#1430)); +#1440 = FACE_BOUND('NONE', #1439, .T.); +#1441 = EDGE_LOOP('NONE', (#1431)); +#1442 = FACE_BOUND('NONE', #1441, .T.); +#1443 = EDGE_LOOP('NONE', (#1432)); +#1444 = FACE_BOUND('NONE', #1443, .T.); +#1445 = ADVANCED_FACE('NONE', (#1434, #1436, #1438, #1440, #1442, #1444), #1312, .T.); +#1446 = ORIENTED_EDGE('NONE', *, *, #1262, .F.); +#1447 = ORIENTED_EDGE('NONE', *, *, #1264, .T.); +#1448 = EDGE_LOOP('NONE', (#1446)); +#1449 = FACE_BOUND('NONE', #1448, .T.); +#1450 = EDGE_LOOP('NONE', (#1447)); +#1451 = FACE_BOUND('NONE', #1450, .T.); +#1452 = ADVANCED_FACE('NONE', (#1449, #1451), #1317, .F.); +#1453 = ORIENTED_EDGE('NONE', *, *, #1262, .T.); +#1454 = ORIENTED_EDGE('NONE', *, *, #1277, .T.); +#1455 = EDGE_LOOP('NONE', (#1453)); +#1456 = FACE_BOUND('NONE', #1455, .T.); +#1457 = EDGE_LOOP('NONE', (#1454)); +#1458 = FACE_BOUND('NONE', #1457, .T.); +#1459 = ADVANCED_FACE('NONE', (#1456, #1458), #1321, .T.); +#1460 = ORIENTED_EDGE('NONE', *, *, #1265, .F.); +#1461 = ORIENTED_EDGE('NONE', *, *, #1267, .T.); +#1462 = EDGE_LOOP('NONE', (#1460)); +#1463 = FACE_BOUND('NONE', #1462, .T.); +#1464 = EDGE_LOOP('NONE', (#1461)); +#1465 = FACE_BOUND('NONE', #1464, .T.); +#1466 = ADVANCED_FACE('NONE', (#1463, #1465), #1326, .F.); +#1467 = ORIENTED_EDGE('NONE', *, *, #1265, .T.); +#1468 = ORIENTED_EDGE('NONE', *, *, #1274, .T.); +#1469 = EDGE_LOOP('NONE', (#1467)); +#1470 = FACE_BOUND('NONE', #1469, .T.); +#1471 = EDGE_LOOP('NONE', (#1468)); +#1472 = FACE_BOUND('NONE', #1471, .T.); +#1473 = ADVANCED_FACE('NONE', (#1470, #1472), #1330, .T.); +#1474 = ORIENTED_EDGE('NONE', *, *, #1268, .F.); +#1475 = ORIENTED_EDGE('NONE', *, *, #1270, .T.); +#1476 = EDGE_LOOP('NONE', (#1474)); +#1477 = FACE_BOUND('NONE', #1476, .T.); +#1478 = EDGE_LOOP('NONE', (#1475)); +#1479 = FACE_BOUND('NONE', #1478, .T.); +#1480 = ADVANCED_FACE('NONE', (#1477, #1479), #1335, .F.); +#1481 = ORIENTED_EDGE('NONE', *, *, #1268, .T.); +#1482 = ORIENTED_EDGE('NONE', *, *, #1283, .T.); +#1483 = EDGE_LOOP('NONE', (#1481)); +#1484 = FACE_BOUND('NONE', #1483, .T.); +#1485 = EDGE_LOOP('NONE', (#1482)); +#1486 = FACE_BOUND('NONE', #1485, .T.); +#1487 = ADVANCED_FACE('NONE', (#1484, #1486), #1339, .T.); +#1488 = ORIENTED_EDGE('NONE', *, *, #1271, .F.); +#1489 = ORIENTED_EDGE('NONE', *, *, #1273, .T.); +#1490 = EDGE_LOOP('NONE', (#1488)); +#1491 = FACE_BOUND('NONE', #1490, .T.); +#1492 = EDGE_LOOP('NONE', (#1489)); +#1493 = FACE_BOUND('NONE', #1492, .T.); +#1494 = ADVANCED_FACE('NONE', (#1491, #1493), #1344, .F.); +#1495 = ORIENTED_EDGE('NONE', *, *, #1271, .T.); +#1496 = ORIENTED_EDGE('NONE', *, *, #1280, .T.); +#1497 = EDGE_LOOP('NONE', (#1495)); +#1498 = FACE_BOUND('NONE', #1497, .T.); +#1499 = EDGE_LOOP('NONE', (#1496)); +#1500 = FACE_BOUND('NONE', #1499, .T.); +#1501 = ADVANCED_FACE('NONE', (#1498, #1500), #1348, .T.); +#1502 = ORIENTED_EDGE('NONE', *, *, #1274, .F.); +#1503 = ORIENTED_EDGE('NONE', *, *, #1276, .T.); +#1504 = EDGE_LOOP('NONE', (#1502)); +#1505 = FACE_BOUND('NONE', #1504, .T.); +#1506 = EDGE_LOOP('NONE', (#1503)); +#1507 = FACE_BOUND('NONE', #1506, .T.); +#1508 = ADVANCED_FACE('NONE', (#1505, #1507), #1353, .F.); +#1509 = ORIENTED_EDGE('NONE', *, *, #1277, .F.); +#1510 = ORIENTED_EDGE('NONE', *, *, #1279, .T.); +#1511 = EDGE_LOOP('NONE', (#1509)); +#1512 = FACE_BOUND('NONE', #1511, .T.); +#1513 = EDGE_LOOP('NONE', (#1510)); +#1514 = FACE_BOUND('NONE', #1513, .T.); +#1515 = ADVANCED_FACE('NONE', (#1512, #1514), #1358, .F.); +#1516 = ORIENTED_EDGE('NONE', *, *, #1280, .F.); +#1517 = ORIENTED_EDGE('NONE', *, *, #1282, .T.); +#1518 = EDGE_LOOP('NONE', (#1516)); +#1519 = FACE_BOUND('NONE', #1518, .T.); +#1520 = EDGE_LOOP('NONE', (#1517)); +#1521 = FACE_BOUND('NONE', #1520, .T.); +#1522 = ADVANCED_FACE('NONE', (#1519, #1521), #1363, .F.); +#1523 = ORIENTED_EDGE('NONE', *, *, #1283, .F.); +#1524 = ORIENTED_EDGE('NONE', *, *, #1285, .T.); +#1525 = EDGE_LOOP('NONE', (#1523)); +#1526 = FACE_BOUND('NONE', #1525, .T.); +#1527 = EDGE_LOOP('NONE', (#1524)); +#1528 = FACE_BOUND('NONE', #1527, .T.); +#1529 = ADVANCED_FACE('NONE', (#1526, #1528), #1368, .F.); +#1530 = ORIENTED_EDGE('NONE', *, *, #1286, .F.); +#1531 = ORIENTED_EDGE('NONE', *, *, #1288, .T.); +#1532 = EDGE_LOOP('NONE', (#1530)); +#1533 = FACE_BOUND('NONE', #1532, .T.); +#1534 = EDGE_LOOP('NONE', (#1531)); +#1535 = FACE_BOUND('NONE', #1534, .T.); +#1536 = ADVANCED_FACE('NONE', (#1533, #1535), #1373, .F.); +#1537 = CLOSED_SHELL('NONE', (#1380, #1387, #1394, #1401, #1423, #1445, #1452, #1459, #1466, #1473, #1480, #1487, #1494, #1501, #1508, #1515, #1522, #1529, #1536)); +#1538 = MANIFOLD_SOLID_BREP('NONE', #1537); +#1539 = APPLICATION_CONTEXT('configuration controlled 3D design of mechanical parts and assemblies'); +#1540 = PRODUCT_DEFINITION_CONTEXT('part definition', #1539, 'design'); +#1541 = PRODUCT('UNIDENTIFIED_PRODUCT', 'NONE', $, ()); +#1542 = PRODUCT_DEFINITION_FORMATION('', $, #1541); +#1543 = PRODUCT_DEFINITION('design', $, #1542, #1540); +#1544 = PRODUCT_DEFINITION_SHAPE('NONE', $, #1543); +#1545 = ADVANCED_BREP_SHAPE_REPRESENTATION('NONE', (#1538), #3); +#1546 = SHAPE_DEFINITION_REPRESENTATION(#1544, #1545); +ENDSEC; +END-ISO-10303-21; diff --git a/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/ops.snap b/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/ops.snap index 4de9b201a..c583809a7 100644 --- a/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/ops.snap @@ -5,7 +5,7 @@ description: Operations executed parametric-bearing-pillow-block.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -52,16 +52,7 @@ description: Operations executed parametric-bearing-pillow-block.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -72,7 +63,15 @@ description: Operations executed parametric-bearing-pillow-block.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -131,16 +130,7 @@ description: Operations executed parametric-bearing-pillow-block.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -151,7 +141,15 @@ description: Operations executed parametric-bearing-pillow-block.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -210,16 +208,7 @@ description: Operations executed parametric-bearing-pillow-block.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -230,7 +219,15 @@ description: Operations executed parametric-bearing-pillow-block.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/program_memory.snap index 4cce54d01..0ea6008da 100644 --- a/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/parametric-bearing-pillow-block/program_memory.snap @@ -141,22 +141,34 @@ description: Variables in memory after executing parametric-bearing-pillow-block "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -250,17 +262,26 @@ description: Variables in memory after executing parametric-bearing-pillow-block "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -385,22 +406,34 @@ description: Variables in memory after executing parametric-bearing-pillow-block "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -526,17 +559,26 @@ description: Variables in memory after executing parametric-bearing-pillow-block "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -661,22 +703,34 @@ description: Variables in memory after executing parametric-bearing-pillow-block "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -802,17 +856,26 @@ description: Variables in memory after executing parametric-bearing-pillow-block "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -937,22 +1000,34 @@ description: Variables in memory after executing parametric-bearing-pillow-block "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1078,17 +1153,26 @@ description: Variables in memory after executing parametric-bearing-pillow-block "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1213,22 +1297,34 @@ description: Variables in memory after executing parametric-bearing-pillow-block "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1382,17 +1478,26 @@ description: Variables in memory after executing parametric-bearing-pillow-block "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1517,22 +1622,34 @@ description: Variables in memory after executing parametric-bearing-pillow-block "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1661,17 +1778,26 @@ description: Variables in memory after executing parametric-bearing-pillow-block "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1796,22 +1922,34 @@ description: Variables in memory after executing parametric-bearing-pillow-block "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1937,17 +2075,26 @@ description: Variables in memory after executing parametric-bearing-pillow-block "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2072,22 +2219,34 @@ description: Variables in memory after executing parametric-bearing-pillow-block "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2213,17 +2372,26 @@ description: Variables in memory after executing parametric-bearing-pillow-block "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2348,22 +2516,34 @@ description: Variables in memory after executing parametric-bearing-pillow-block "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2489,17 +2669,26 @@ description: Variables in memory after executing parametric-bearing-pillow-block "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2624,22 +2813,34 @@ description: Variables in memory after executing parametric-bearing-pillow-block "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" diff --git a/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/artifact_commands.snap index 5480adb96..2b3166c6d 100644 --- a/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/artifact_commands.snap @@ -355,7 +355,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.69, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -573,7 +574,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.06, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -711,7 +713,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.25, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -849,7 +852,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1231,7 +1235,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.69, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1449,7 +1454,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.06, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1587,7 +1593,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.25, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1725,7 +1732,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1970,7 +1978,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.031, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2108,7 +2117,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.031, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2320,7 +2330,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.032, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2458,7 +2469,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.032, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2851,7 +2863,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.625, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3083,7 +3096,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.46875, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3321,7 +3335,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 2.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3638,7 +3653,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 0.546875, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3876,7 +3892,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -0.546875, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4109,7 +4126,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 6.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4247,7 +4265,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -6.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4483,7 +4502,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": 6.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -4621,7 +4641,8 @@ description: Artifact commands pipe-flange-assembly.kcl "type": "extrude", "target": "[uuid]", "distance": -6.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/artifact_graph_flowchart.snap.md index 3b5d4d44e..3d32fa99f 100644 --- a/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/artifact_graph_flowchart.snap.md @@ -11,18 +11,18 @@ flowchart LR 8[Solid2d] end subgraph path15 [Path] - 15["Path
[1187, 1246, 7]"] - 16["Segment
[1187, 1246, 7]"] + 15["Path
[1192, 1251, 7]"] + 16["Segment
[1192, 1251, 7]"] 17[Solid2d] end subgraph path23 [Path] - 23["Path
[1348, 1408, 7]"] - 24["Segment
[1348, 1408, 7]"] + 23["Path
[1358, 1418, 7]"] + 24["Segment
[1358, 1418, 7]"] 25[Solid2d] end subgraph path31 [Path] - 31["Path
[1565, 1618, 7]"] - 32["Segment
[1565, 1618, 7]"] + 31["Path
[1580, 1633, 7]"] + 32["Segment
[1580, 1633, 7]"] 33[Solid2d] end subgraph path39 [Path] @@ -36,18 +36,18 @@ flowchart LR 45[Solid2d] end subgraph path52 [Path] - 52["Path
[1187, 1246, 7]"] - 53["Segment
[1187, 1246, 7]"] + 52["Path
[1192, 1251, 7]"] + 53["Segment
[1192, 1251, 7]"] 54[Solid2d] end subgraph path60 [Path] - 60["Path
[1348, 1408, 7]"] - 61["Segment
[1348, 1408, 7]"] + 60["Path
[1358, 1418, 7]"] + 61["Segment
[1358, 1418, 7]"] 62[Solid2d] end subgraph path68 [Path] - 68["Path
[1565, 1618, 7]"] - 69["Segment
[1565, 1618, 7]"] + 68["Path
[1580, 1633, 7]"] + 69["Segment
[1580, 1633, 7]"] 70[Solid2d] end subgraph path76 [Path] @@ -56,8 +56,8 @@ flowchart LR 78[Solid2d] end subgraph path85 [Path] - 85["Path
[617, 677, 6]"] - 86["Segment
[617, 677, 6]"] + 85["Path
[622, 682, 6]"] + 86["Segment
[622, 682, 6]"] 87[Solid2d] end subgraph path93 [Path] @@ -66,8 +66,8 @@ flowchart LR 95[Solid2d] end subgraph path102 [Path] - 102["Path
[596, 648, 8]"] - 103["Segment
[596, 648, 8]"] + 102["Path
[601, 653, 8]"] + 103["Segment
[601, 653, 8]"] 104[Solid2d] end subgraph path110 [Path] @@ -76,33 +76,33 @@ flowchart LR 112[Solid2d] end subgraph path121 [Path] - 121["Path
[773, 860, 9]"] - 122["Segment
[868, 951, 9]"] - 123["Segment
[959, 1042, 9]"] - 124["Segment
[1050, 1133, 9]"] - 125["Segment
[1141, 1223, 9]"] - 126["Segment
[1231, 1313, 9]"] - 127["Segment
[1321, 1328, 9]"] + 121["Path
[778, 865, 9]"] + 122["Segment
[873, 924, 9]"] + 123["Segment
[932, 983, 9]"] + 124["Segment
[991, 1042, 9]"] + 125["Segment
[1050, 1100, 9]"] + 126["Segment
[1108, 1158, 9]"] + 127["Segment
[1166, 1173, 9]"] 128[Solid2d] end subgraph path149 [Path] - 149["Path
[1462, 1531, 9]"] - 150["Segment
[1462, 1531, 9]"] + 149["Path
[1312, 1381, 9]"] + 150["Segment
[1312, 1381, 9]"] 151[Solid2d] end subgraph path158 [Path] 158["Path
[425, 515, 10]"] - 159["Segment
[523, 605, 10]"] - 160["Segment
[613, 695, 10]"] - 161["Segment
[703, 785, 10]"] - 162["Segment
[793, 874, 10]"] - 163["Segment
[882, 963, 10]"] - 164["Segment
[971, 978, 10]"] + 159["Segment
[523, 573, 10]"] + 160["Segment
[581, 631, 10]"] + 161["Segment
[639, 689, 10]"] + 162["Segment
[697, 746, 10]"] + 163["Segment
[754, 803, 10]"] + 164["Segment
[811, 818, 10]"] 165[Solid2d] end subgraph path187 [Path] - 187["Path
[1122, 1174, 10]"] - 188["Segment
[1122, 1174, 10]"] + 187["Path
[967, 1019, 10]"] + 188["Segment
[967, 1019, 10]"] 189[Solid2d] end subgraph path195 [Path] @@ -111,8 +111,8 @@ flowchart LR 197[Solid2d] end subgraph path204 [Path] - 204["Path
[522, 577, 11]"] - 205["Segment
[522, 577, 11]"] + 204["Path
[527, 582, 11]"] + 205["Segment
[527, 582, 11]"] 206[Solid2d] end subgraph path212 [Path] @@ -121,8 +121,8 @@ flowchart LR 214[Solid2d] end subgraph path221 [Path] - 221["Path
[522, 577, 11]"] - 222["Segment
[522, 577, 11]"] + 221["Path
[527, 582, 11]"] + 222["Segment
[527, 582, 11]"] 223[Solid2d] end 1["Plane
[570, 587, 7]"] @@ -133,17 +133,17 @@ flowchart LR 12["Cap End"] 13["SweepEdge Opposite"] 14["SweepEdge Adjacent"] - 18["Sweep Extrusion
[1254, 1291, 7]"] + 18["Sweep Extrusion
[1259, 1296, 7]"] 19[Wall] 20["Cap End"] 21["SweepEdge Opposite"] 22["SweepEdge Adjacent"] - 26["Sweep Extrusion
[1416, 1454, 7]"] + 26["Sweep Extrusion
[1426, 1464, 7]"] 27[Wall] 28["Cap End"] 29["SweepEdge Opposite"] 30["SweepEdge Adjacent"] - 34["Sweep Extrusion
[1626, 1668, 7]"] + 34["Sweep Extrusion
[1641, 1683, 7]"] 35[Wall] 36["SweepEdge Opposite"] 37["SweepEdge Adjacent"] @@ -155,17 +155,17 @@ flowchart LR 49["Cap End"] 50["SweepEdge Opposite"] 51["SweepEdge Adjacent"] - 55["Sweep Extrusion
[1254, 1291, 7]"] + 55["Sweep Extrusion
[1259, 1296, 7]"] 56[Wall] 57["Cap End"] 58["SweepEdge Opposite"] 59["SweepEdge Adjacent"] - 63["Sweep Extrusion
[1416, 1454, 7]"] + 63["Sweep Extrusion
[1426, 1464, 7]"] 64[Wall] 65["Cap End"] 66["SweepEdge Opposite"] 67["SweepEdge Adjacent"] - 71["Sweep Extrusion
[1626, 1668, 7]"] + 71["Sweep Extrusion
[1641, 1683, 7]"] 72[Wall] 73["SweepEdge Opposite"] 74["SweepEdge Adjacent"] @@ -176,7 +176,7 @@ flowchart LR 82["Cap End"] 83["SweepEdge Opposite"] 84["SweepEdge Adjacent"] - 88["Sweep Extrusion
[683, 720, 6]"] + 88["Sweep Extrusion
[688, 725, 6]"] 89[Wall] 90["SweepEdge Opposite"] 91["SweepEdge Adjacent"] @@ -187,7 +187,7 @@ flowchart LR 99["Cap End"] 100["SweepEdge Opposite"] 101["SweepEdge Adjacent"] - 105["Sweep Extrusion
[656, 693, 8]"] + 105["Sweep Extrusion
[661, 698, 8]"] 106[Wall] 107["SweepEdge Opposite"] 108["SweepEdge Adjacent"] @@ -200,7 +200,7 @@ flowchart LR 118["SweepEdge Adjacent"] 119["EdgeCut Fillet
[558, 624, 9]"] 120["EdgeCut Fillet
[558, 624, 9]"] - 129["Sweep Extrusion
[1336, 1376, 9]"] + 129["Sweep Extrusion
[1181, 1221, 9]"] 130[Wall] 131[Wall] 132[Wall] @@ -220,13 +220,13 @@ flowchart LR 146["SweepEdge Adjacent"] 147["SweepEdge Opposite"] 148["SweepEdge Adjacent"] - 152["Sweep Extrusion
[1539, 1567, 9]"] + 152["Sweep Extrusion
[1389, 1417, 9]"] 153[Wall] 154["Cap End"] 155["SweepEdge Opposite"] 156["SweepEdge Adjacent"] 157["Plane
[400, 417, 10]"] - 166["Sweep Extrusion
[986, 1019, 10]"] + 166["Sweep Extrusion
[826, 859, 10]"] 167[Wall] 168[Wall] 169[Wall] @@ -247,7 +247,7 @@ flowchart LR 184["SweepEdge Adjacent"] 185["SweepEdge Opposite"] 186["SweepEdge Adjacent"] - 190["Sweep Extrusion
[1182, 1219, 10]"] + 190["Sweep Extrusion
[1027, 1064, 10]"] 191[Wall] 192["SweepEdge Opposite"] 193["SweepEdge Adjacent"] @@ -258,7 +258,7 @@ flowchart LR 201["Cap End"] 202["SweepEdge Opposite"] 203["SweepEdge Adjacent"] - 207["Sweep Extrusion
[585, 617, 11]"] + 207["Sweep Extrusion
[590, 622, 11]"] 208[Wall] 209["SweepEdge Opposite"] 210["SweepEdge Adjacent"] @@ -269,23 +269,23 @@ flowchart LR 218["Cap End"] 219["SweepEdge Opposite"] 220["SweepEdge Adjacent"] - 224["Sweep Extrusion
[585, 617, 11]"] + 224["Sweep Extrusion
[590, 622, 11]"] 225[Wall] 226["SweepEdge Opposite"] 227["SweepEdge Adjacent"] - 228["StartSketchOnFace
[1145, 1179, 7]"] - 229["StartSketchOnFace
[1308, 1340, 7]"] - 230["StartSketchOnFace
[1524, 1557, 7]"] - 231["StartSketchOnFace
[1145, 1179, 7]"] - 232["StartSketchOnFace
[1308, 1340, 7]"] - 233["StartSketchOnFace
[1524, 1557, 7]"] - 234["StartSketchOnFace
[579, 611, 6]"] - 235["StartSketchOnFace
[556, 588, 8]"] - 236["StartSketchOnFace
[733, 765, 9]"] - 237["StartSketchOnFace
[1424, 1454, 9]"] - 238["StartSketchOnFace
[1082, 1114, 10]"] - 239["StartSketchOnFace
[484, 514, 11]"] - 240["StartSketchOnFace
[484, 514, 11]"] + 228["StartSketchOnFace
[1145, 1184, 7]"] + 229["StartSketchOnFace
[1313, 1350, 7]"] + 230["StartSketchOnFace
[1534, 1572, 7]"] + 231["StartSketchOnFace
[1145, 1184, 7]"] + 232["StartSketchOnFace
[1313, 1350, 7]"] + 233["StartSketchOnFace
[1534, 1572, 7]"] + 234["StartSketchOnFace
[579, 616, 6]"] + 235["StartSketchOnFace
[556, 593, 8]"] + 236["StartSketchOnFace
[733, 770, 9]"] + 237["StartSketchOnFace
[1269, 1304, 9]"] + 238["StartSketchOnFace
[922, 959, 10]"] + 239["StartSketchOnFace
[484, 519, 11]"] + 240["StartSketchOnFace
[484, 519, 11]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/ast.snap b/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/ast.snap index c87639b56..a7d61f1e9 100644 --- a/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/ast.snap @@ -6,7 +6,7 @@ description: Result of parsing pipe-flange-assembly.kcl "Ok": { "body": [ { - "commentStart": 378, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -16,7 +16,7 @@ description: Result of parsing pipe-flange-assembly.kcl "// Import parameters" ], "selector": { - "commentStart": 408, + "commentStart": 0, "end": 0, "start": 0, "type": "Glob" @@ -26,7 +26,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "ImportStatement" }, { - "commentStart": 431, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -40,7 +40,7 @@ description: Result of parsing pipe-flange-assembly.kcl "selector": { "type": "None", "alias": { - "commentStart": 481, + "commentStart": 0, "end": 0, "name": "gasket", "start": 0, @@ -52,7 +52,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "ImportStatement" }, { - "commentStart": 488, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -63,10 +63,10 @@ description: Result of parsing pipe-flange-assembly.kcl "items": [ { "alias": null, - "commentStart": 495, + "commentStart": 0, "end": 0, "name": { - "commentStart": 495, + "commentStart": 0, "end": 0, "name": "flange", "start": 0, @@ -82,7 +82,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "ImportStatement" }, { - "commentStart": 530, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -93,10 +93,10 @@ description: Result of parsing pipe-flange-assembly.kcl "items": [ { "alias": null, - "commentStart": 537, + "commentStart": 0, "end": 0, "name": { - "commentStart": 537, + "commentStart": 0, "end": 0, "name": "washer", "start": 0, @@ -112,7 +112,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "ImportStatement" }, { - "commentStart": 572, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -123,10 +123,10 @@ description: Result of parsing pipe-flange-assembly.kcl "items": [ { "alias": null, - "commentStart": 579, + "commentStart": 0, "end": 0, "name": { - "commentStart": 579, + "commentStart": 0, "end": 0, "name": "bolt", "start": 0, @@ -142,7 +142,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "ImportStatement" }, { - "commentStart": 610, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -153,10 +153,10 @@ description: Result of parsing pipe-flange-assembly.kcl "items": [ { "alias": null, - "commentStart": 617, + "commentStart": 0, "end": 0, "name": { - "commentStart": 617, + "commentStart": 0, "end": 0, "name": "hexNut", "start": 0, @@ -172,7 +172,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "ImportStatement" }, { - "commentStart": 653, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -183,10 +183,10 @@ description: Result of parsing pipe-flange-assembly.kcl "items": [ { "alias": null, - "commentStart": 660, + "commentStart": 0, "end": 0, "name": { - "commentStart": 660, + "commentStart": 0, "end": 0, "name": "pipe", "start": 0, @@ -202,16 +202,16 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "ImportStatement" }, { - "commentStart": 688, + "commentStart": 0, "end": 0, "expression": { "arguments": [], "callee": { "abs_path": false, - "commentStart": 707, + "commentStart": 0, "end": 0, "name": { - "commentStart": 707, + "commentStart": 0, "end": 0, "name": "flange", "start": 0, @@ -221,7 +221,7 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 707, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -237,7 +237,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "ExpressionStatement" }, { - "commentStart": 716, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -245,10 +245,10 @@ description: Result of parsing pipe-flange-assembly.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 716, + "commentStart": 0, "end": 0, "name": { - "commentStart": 716, + "commentStart": 0, "end": 0, "name": "flange", "start": 0, @@ -258,7 +258,7 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 716, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -269,17 +269,17 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 737, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 744, + "commentStart": 0, "elements": [ { - "commentStart": 745, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -291,7 +291,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 748, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -303,7 +303,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 751, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -324,14 +324,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 755, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 763, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -346,10 +346,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 730, + "commentStart": 0, "end": 0, "name": { - "commentStart": 730, + "commentStart": 0, "end": 0, "name": "rotate", "start": 0, @@ -359,7 +359,7 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 730, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -371,14 +371,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 783, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 787, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -393,14 +393,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 790, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 794, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -415,24 +415,24 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 797, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 801, + "commentStart": 0, "end": 0, "left": { - "commentStart": 801, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 801, + "commentStart": 0, "end": 0, "name": { - "commentStart": 801, + "commentStart": 0, "end": 0, "name": "flangeBackHeight", "start": 0, @@ -445,7 +445,7 @@ description: Result of parsing pipe-flange-assembly.kcl }, "operator": "*", "right": { - "commentStart": 820, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -463,10 +463,10 @@ description: Result of parsing pipe-flange-assembly.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 824, + "commentStart": 0, "end": 0, "name": { - "commentStart": 824, + "commentStart": 0, "end": 0, "name": "gasketThickness", "start": 0, @@ -485,10 +485,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 773, + "commentStart": 0, "end": 0, "name": { - "commentStart": 773, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -498,7 +498,7 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 773, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -506,13 +506,13 @@ description: Result of parsing pipe-flange-assembly.kcl "unlabeled": null } ], - "commentStart": 716, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "commentStart": 840, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -535,16 +535,16 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "ExpressionStatement" }, { - "commentStart": 878, + "commentStart": 0, "end": 0, "expression": { "body": [ { "abs_path": false, - "commentStart": 878, + "commentStart": 0, "end": 0, "name": { - "commentStart": 878, + "commentStart": 0, "end": 0, "name": "gasket", "start": 0, @@ -560,14 +560,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 900, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 904, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -582,14 +582,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 907, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 911, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -604,22 +604,22 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 914, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 918, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 919, + "commentStart": 0, "end": 0, "name": { - "commentStart": 919, + "commentStart": 0, "end": 0, "name": "flangeBackHeight", "start": 0, @@ -630,7 +630,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "Name", "type": "Name" }, - "commentStart": 918, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -640,10 +640,10 @@ description: Result of parsing pipe-flange-assembly.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 938, + "commentStart": 0, "end": 0, "name": { - "commentStart": 938, + "commentStart": 0, "end": 0, "name": "gasketThickness", "start": 0, @@ -662,10 +662,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 890, + "commentStart": 0, "end": 0, "name": { - "commentStart": 890, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -675,7 +675,7 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 890, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -683,13 +683,13 @@ description: Result of parsing pipe-flange-assembly.kcl "unlabeled": null } ], - "commentStart": 878, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 954, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -712,7 +712,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "ExpressionStatement" }, { - "commentStart": 1003, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -720,10 +720,10 @@ description: Result of parsing pipe-flange-assembly.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1003, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1003, + "commentStart": 0, "end": 0, "name": "washer", "start": 0, @@ -733,7 +733,7 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 1003, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -744,21 +744,21 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1027, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1031, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1031, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1031, + "commentStart": 0, "end": 0, "name": "mountingHolePlacementDiameter", "start": 0, @@ -771,7 +771,7 @@ description: Result of parsing pipe-flange-assembly.kcl }, "operator": "/", "right": { - "commentStart": 1063, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -790,14 +790,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1066, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1070, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -812,7 +812,7 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1073, + "commentStart": 0, "end": 0, "name": "z", "start": 0, @@ -820,10 +820,10 @@ description: Result of parsing pipe-flange-assembly.kcl }, "arg": { "abs_path": false, - "commentStart": 1077, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1077, + "commentStart": 0, "end": 0, "name": "flangeBaseThickness", "start": 0, @@ -838,10 +838,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 1017, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1017, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -851,7 +851,7 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 1017, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -863,14 +863,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1139, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1151, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -885,17 +885,17 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1161, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1168, + "commentStart": 0, "elements": [ { - "commentStart": 1169, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -907,7 +907,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 1172, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -919,7 +919,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 1175, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -940,17 +940,17 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1186, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1195, + "commentStart": 0, "elements": [ { - "commentStart": 1196, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -962,7 +962,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 1199, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -974,7 +974,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 1202, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -995,14 +995,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1213, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1226, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -1017,14 +1017,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1238, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1257, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -1036,10 +1036,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 1103, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1103, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -1049,13 +1049,13 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 1103, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 1129, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1067,14 +1067,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1310, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1322, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1089,7 +1089,7 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1332, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -1097,23 +1097,23 @@ description: Result of parsing pipe-flange-assembly.kcl }, "arg": { "argument": { - "commentStart": 1345, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1345, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1345, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1345, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1345, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1345, + "commentStart": 0, "end": 0, "name": "flangeBaseThickness", "start": 0, @@ -1126,7 +1126,7 @@ description: Result of parsing pipe-flange-assembly.kcl }, "operator": "*", "right": { - "commentStart": 1367, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1143,14 +1143,14 @@ description: Result of parsing pipe-flange-assembly.kcl }, "operator": "+", "right": { - "commentStart": 1371, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1371, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1371, + "commentStart": 0, "end": 0, "name": "flangeBackHeight", "start": 0, @@ -1163,7 +1163,7 @@ description: Result of parsing pipe-flange-assembly.kcl }, "operator": "*", "right": { - "commentStart": 1390, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1185,10 +1185,10 @@ description: Result of parsing pipe-flange-assembly.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1394, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1394, + "commentStart": 0, "end": 0, "name": "gasketThickness", "start": 0, @@ -1206,10 +1206,10 @@ description: Result of parsing pipe-flange-assembly.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1412, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1412, + "commentStart": 0, "end": 0, "name": "washerThickness", "start": 0, @@ -1224,7 +1224,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1343, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1235,17 +1235,17 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1437, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1444, + "commentStart": 0, "elements": [ { - "commentStart": 1445, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1257,7 +1257,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 1448, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1269,7 +1269,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 1451, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1290,10 +1290,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 1276, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1276, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -1303,13 +1303,13 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 1276, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 1300, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1317,13 +1317,13 @@ description: Result of parsing pipe-flange-assembly.kcl } } ], - "commentStart": 1003, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "3": [ { - "commentStart": 1461, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1346,7 +1346,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "ExpressionStatement" }, { - "commentStart": 1483, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -1354,10 +1354,10 @@ description: Result of parsing pipe-flange-assembly.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1483, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1483, + "commentStart": 0, "end": 0, "name": "bolt", "start": 0, @@ -1367,7 +1367,7 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 1483, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1378,21 +1378,21 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1505, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1509, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1509, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1509, + "commentStart": 0, "end": 0, "name": "mountingHolePlacementDiameter", "start": 0, @@ -1405,7 +1405,7 @@ description: Result of parsing pipe-flange-assembly.kcl }, "operator": "/", "right": { - "commentStart": 1541, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1424,14 +1424,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1544, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1548, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1446,21 +1446,21 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1551, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1555, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1555, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1555, + "commentStart": 0, "end": 0, "name": "flangeBaseThickness", "start": 0, @@ -1474,10 +1474,10 @@ description: Result of parsing pipe-flange-assembly.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1577, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1577, + "commentStart": 0, "end": 0, "name": "washerThickness", "start": 0, @@ -1496,10 +1496,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 1495, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1495, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -1509,7 +1509,7 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 1495, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1521,14 +1521,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1606, + "commentStart": 0, "end": 0, "name": "roll", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1613, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1543,14 +1543,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1617, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1625, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1565,14 +1565,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1628, + "commentStart": 0, "end": 0, "name": "yaw", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1634, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1587,10 +1587,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 1599, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1599, + "commentStart": 0, "end": 0, "name": "rotate", "start": 0, @@ -1600,7 +1600,7 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 1599, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1612,14 +1612,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1678, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1690, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -1634,17 +1634,17 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1700, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1707, + "commentStart": 0, "elements": [ { - "commentStart": 1708, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1656,7 +1656,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 1711, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1668,7 +1668,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 1714, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1689,17 +1689,17 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1725, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1734, + "commentStart": 0, "elements": [ { - "commentStart": 1735, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1711,7 +1711,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 1738, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1723,7 +1723,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 1741, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1744,14 +1744,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1752, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1765, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -1766,14 +1766,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1777, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1796, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -1785,10 +1785,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 1642, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1642, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -1798,13 +1798,13 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 1642, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 1668, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1812,13 +1812,13 @@ description: Result of parsing pipe-flange-assembly.kcl } } ], - "commentStart": 1483, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "3": [ { - "commentStart": 1809, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1841,7 +1841,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "ExpressionStatement" }, { - "commentStart": 1834, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -1849,10 +1849,10 @@ description: Result of parsing pipe-flange-assembly.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1834, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1834, + "commentStart": 0, "end": 0, "name": "hexNut", "start": 0, @@ -1862,7 +1862,7 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 1834, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1873,21 +1873,21 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1858, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1862, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1862, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1862, + "commentStart": 0, "end": 0, "name": "mountingHolePlacementDiameter", "start": 0, @@ -1900,7 +1900,7 @@ description: Result of parsing pipe-flange-assembly.kcl }, "operator": "/", "right": { - "commentStart": 1894, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1919,14 +1919,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1897, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1901, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1941,7 +1941,7 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 1904, + "commentStart": 0, "end": 0, "name": "z", "start": 0, @@ -1949,26 +1949,26 @@ description: Result of parsing pipe-flange-assembly.kcl }, "arg": { "argument": { - "commentStart": 1910, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1910, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1910, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1910, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1910, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1910, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1910, + "commentStart": 0, "end": 0, "name": "flangeBackHeight", "start": 0, @@ -1981,7 +1981,7 @@ description: Result of parsing pipe-flange-assembly.kcl }, "operator": "*", "right": { - "commentStart": 1929, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1999,10 +1999,10 @@ description: Result of parsing pipe-flange-assembly.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1933, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1933, + "commentStart": 0, "end": 0, "name": "gasketThickness", "start": 0, @@ -2020,10 +2020,10 @@ description: Result of parsing pipe-flange-assembly.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1951, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1951, + "commentStart": 0, "end": 0, "name": "flangeBaseThickness", "start": 0, @@ -2041,10 +2041,10 @@ description: Result of parsing pipe-flange-assembly.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1973, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1973, + "commentStart": 0, "end": 0, "name": "washerThickness", "start": 0, @@ -2062,10 +2062,10 @@ description: Result of parsing pipe-flange-assembly.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1991, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1991, + "commentStart": 0, "end": 0, "name": "hexNutThickness", "start": 0, @@ -2080,7 +2080,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1908, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2091,10 +2091,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 1848, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1848, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -2104,7 +2104,7 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 1848, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2116,14 +2116,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2050, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2062, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -2138,17 +2138,17 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2072, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2079, + "commentStart": 0, "elements": [ { - "commentStart": 2080, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2160,7 +2160,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 2083, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2172,7 +2172,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 2086, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2193,17 +2193,17 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2097, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2106, + "commentStart": 0, "elements": [ { - "commentStart": 2107, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2215,7 +2215,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 2110, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2227,7 +2227,7 @@ description: Result of parsing pipe-flange-assembly.kcl } }, { - "commentStart": 2113, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2248,14 +2248,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2124, + "commentStart": 0, "end": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2137, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -2270,14 +2270,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2149, + "commentStart": 0, "end": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2168, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -2289,10 +2289,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 2014, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2014, + "commentStart": 0, "end": 0, "name": "patternCircular3d", "start": 0, @@ -2302,13 +2302,13 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 2014, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 2040, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2316,13 +2316,13 @@ description: Result of parsing pipe-flange-assembly.kcl } } ], - "commentStart": 1834, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "commentStart": 2181, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2345,7 +2345,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "ExpressionStatement" }, { - "commentStart": 2212, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -2353,10 +2353,10 @@ description: Result of parsing pipe-flange-assembly.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2212, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2212, + "commentStart": 0, "end": 0, "name": "pipe", "start": 0, @@ -2366,7 +2366,7 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 2212, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2377,7 +2377,7 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2249, + "commentStart": 0, "end": 0, "name": "roll", "start": 0, @@ -2385,7 +2385,7 @@ description: Result of parsing pipe-flange-assembly.kcl }, "arg": { "argument": { - "commentStart": 2257, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -2396,7 +2396,7 @@ description: Result of parsing pipe-flange-assembly.kcl "suffix": "None" } }, - "commentStart": 2256, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2407,14 +2407,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2268, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2276, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2429,14 +2429,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2286, + "commentStart": 0, "end": 0, "name": "yaw", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2292, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2451,10 +2451,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 2224, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2224, + "commentStart": 0, "end": 0, "name": "rotate", "start": 0, @@ -2464,13 +2464,13 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 2224, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 2239, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2482,14 +2482,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2335, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2339, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2504,14 +2504,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2349, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2353, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2526,24 +2526,24 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2363, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2367, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2367, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2367, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2367, + "commentStart": 0, "end": 0, "name": "flangeBaseThickness", "start": 0, @@ -2557,10 +2557,10 @@ description: Result of parsing pipe-flange-assembly.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2389, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2389, + "commentStart": 0, "end": 0, "name": "flangeFrontHeight", "start": 0, @@ -2577,7 +2577,7 @@ description: Result of parsing pipe-flange-assembly.kcl }, "operator": "-", "right": { - "commentStart": 2409, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -2596,14 +2596,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2421, + "commentStart": 0, "end": 0, "name": "global", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2430, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -2615,10 +2615,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 2307, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2307, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -2628,13 +2628,13 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 2307, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 2325, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2642,7 +2642,7 @@ description: Result of parsing pipe-flange-assembly.kcl } } ], - "commentStart": 2212, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2653,7 +2653,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "ExpressionStatement" }, { - "commentStart": 2442, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -2661,10 +2661,10 @@ description: Result of parsing pipe-flange-assembly.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2444, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2444, + "commentStart": 0, "end": 0, "name": "pipe", "start": 0, @@ -2674,7 +2674,7 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 2444, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2685,14 +2685,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2481, + "commentStart": 0, "end": 0, "name": "roll", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2488, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -2707,14 +2707,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2499, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2507, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2729,14 +2729,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2517, + "commentStart": 0, "end": 0, "name": "yaw", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2523, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2751,10 +2751,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 2456, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2456, + "commentStart": 0, "end": 0, "name": "rotate", "start": 0, @@ -2764,13 +2764,13 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 2456, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 2471, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2782,14 +2782,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2566, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2570, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2804,14 +2804,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2580, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2584, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2826,7 +2826,7 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2594, + "commentStart": 0, "end": 0, "name": "z", "start": 0, @@ -2834,26 +2834,26 @@ description: Result of parsing pipe-flange-assembly.kcl }, "arg": { "argument": { - "commentStart": 2600, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2600, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2600, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2600, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2600, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2600, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2600, + "commentStart": 0, "end": 0, "name": "flangeBackHeight", "start": 0, @@ -2866,7 +2866,7 @@ description: Result of parsing pipe-flange-assembly.kcl }, "operator": "*", "right": { - "commentStart": 2619, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2884,10 +2884,10 @@ description: Result of parsing pipe-flange-assembly.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2623, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2623, + "commentStart": 0, "end": 0, "name": "gasketThickness", "start": 0, @@ -2905,10 +2905,10 @@ description: Result of parsing pipe-flange-assembly.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2641, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2641, + "commentStart": 0, "end": 0, "name": "flangeBaseThickness", "start": 0, @@ -2926,10 +2926,10 @@ description: Result of parsing pipe-flange-assembly.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 2663, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2663, + "commentStart": 0, "end": 0, "name": "flangeFrontHeight", "start": 0, @@ -2946,7 +2946,7 @@ description: Result of parsing pipe-flange-assembly.kcl }, "operator": "-", "right": { - "commentStart": 2683, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -2961,7 +2961,7 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 2598, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2972,14 +2972,14 @@ description: Result of parsing pipe-flange-assembly.kcl { "type": "LabeledArg", "label": { - "commentStart": 2696, + "commentStart": 0, "end": 0, "name": "global", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2705, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -2991,10 +2991,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "callee": { "abs_path": false, - "commentStart": 2538, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2538, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -3004,13 +3004,13 @@ description: Result of parsing pipe-flange-assembly.kcl "start": 0, "type": "Name" }, - "commentStart": 2538, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 2556, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3018,7 +3018,7 @@ description: Result of parsing pipe-flange-assembly.kcl } } ], - "commentStart": 2444, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -3036,7 +3036,7 @@ description: Result of parsing pipe-flange-assembly.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 346, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -3051,10 +3051,10 @@ description: Result of parsing pipe-flange-assembly.kcl ], "properties": [ { - "commentStart": 355, + "commentStart": 0, "end": 0, "key": { - "commentStart": 355, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -3064,10 +3064,10 @@ description: Result of parsing pipe-flange-assembly.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 375, + "commentStart": 0, "end": 0, "name": { - "commentStart": 375, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -3088,7 +3088,7 @@ description: Result of parsing pipe-flange-assembly.kcl "nonCodeNodes": { "13": [ { - "commentStart": 2442, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3100,7 +3100,7 @@ description: Result of parsing pipe-flange-assembly.kcl }, "startNodes": [ { - "commentStart": 378, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/ops.snap b/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/ops.snap index e74ed7d3f..bad12d86c 100644 --- a/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/ops.snap @@ -10,7 +10,7 @@ description: Operations executed pipe-flange-assembly.kcl "name": "flange", "functionSourceRange": [ 509, - 1728, + 1743, 7 ], "unlabeledArg": null, @@ -20,7 +20,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -35,7 +35,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -131,16 +131,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -151,7 +142,15 @@ description: Operations executed pipe-flange-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -187,16 +186,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -207,7 +197,15 @@ description: Operations executed pipe-flange-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -243,16 +241,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -263,7 +252,15 @@ description: Operations executed pipe-flange-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -307,7 +304,7 @@ description: Operations executed pipe-flange-assembly.kcl "name": "flange", "functionSourceRange": [ 509, - 1728, + 1743, 7 ], "unlabeledArg": null, @@ -317,7 +314,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -332,7 +329,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -428,16 +425,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -448,7 +436,15 @@ description: Operations executed pipe-flange-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -484,16 +480,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -504,7 +491,15 @@ description: Operations executed pipe-flange-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -540,16 +535,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -560,7 +546,15 @@ description: Operations executed pipe-flange-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -608,7 +602,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -655,16 +649,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -675,7 +660,15 @@ description: Operations executed pipe-flange-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -719,7 +712,7 @@ description: Operations executed pipe-flange-assembly.kcl "name": "washer", "functionSourceRange": [ 331, - 752, + 757, 8 ], "unlabeledArg": null, @@ -729,7 +722,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -776,16 +769,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -796,7 +780,15 @@ description: Operations executed pipe-flange-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1036,7 +1028,13 @@ description: Operations executed pipe-flange-assembly.kcl "type": "Number", "value": -1.563, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1101,7 +1099,7 @@ description: Operations executed pipe-flange-assembly.kcl "name": "bolt", "functionSourceRange": [ 358, - 1657, + 1507, 9 ], "unlabeledArg": null, @@ -1111,7 +1109,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1207,16 +1205,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -1227,7 +1216,15 @@ description: Operations executed pipe-flange-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1236,7 +1233,13 @@ description: Operations executed pipe-flange-assembly.kcl "type": "Number", "value": -0.46875, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1257,16 +1260,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -1277,7 +1271,15 @@ description: Operations executed pipe-flange-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1470,7 +1472,7 @@ description: Operations executed pipe-flange-assembly.kcl "name": "hexNut", "functionSourceRange": [ 344, - 1278, + 1123, 10 ], "unlabeledArg": null, @@ -1480,7 +1482,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1500,7 +1502,13 @@ description: Operations executed pipe-flange-assembly.kcl "type": "Number", "value": 0.546875, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1521,16 +1529,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -1541,7 +1540,15 @@ description: Operations executed pipe-flange-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1550,7 +1557,13 @@ description: Operations executed pipe-flange-assembly.kcl "type": "Number", "value": -0.546875, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -1728,7 +1741,7 @@ description: Operations executed pipe-flange-assembly.kcl "name": "pipe", "functionSourceRange": [ 256, - 670, + 675, 11 ], "unlabeledArg": null, @@ -1738,7 +1751,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1785,16 +1798,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -1805,7 +1809,15 @@ description: Operations executed pipe-flange-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -1849,7 +1861,7 @@ description: Operations executed pipe-flange-assembly.kcl "name": "pipe", "functionSourceRange": [ 256, - 670, + 675, 11 ], "unlabeledArg": null, @@ -1859,7 +1871,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1906,16 +1918,7 @@ description: Operations executed pipe-flange-assembly.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -1926,7 +1929,15 @@ description: Operations executed pipe-flange-assembly.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/program_memory.snap index c53db621a..17a71f1af 100644 --- a/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/pipe-flange-assembly/program_memory.snap @@ -49,14 +49,26 @@ description: Variables in memory after executing pipe-flange-assembly.kcl "type": "Number", "value": 0.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "boltHexFlatLength": { "type": "Number", "value": 0.2887, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "boltLength": { @@ -234,28 +246,52 @@ description: Variables in memory after executing pipe-flange-assembly.kcl "type": "Number", "value": 0.625, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "hexNutFlatLength": { "type": "Number", "value": 0.5413, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "hexNutFlatToFlat": { "type": "Number", "value": 0.9375, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "hexNutThickness": { "type": "Number", "value": 0.5469, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "mountingHoleDiameter": { diff --git a/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/artifact_commands.snap index adfbcf459..30526fdbf 100644 --- a/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/artifact_commands.snap @@ -253,7 +253,8 @@ description: Artifact commands pipe-with-bend.kcl "unit": "degrees", "value": 90.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/ast.snap b/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/ast.snap index d142cc040..9ff3c70d3 100644 --- a/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing pipe-with-bend.kcl "Ok": { "body": [ { - "commentStart": 209, + "commentStart": 0, "declaration": { - "commentStart": 232, + "commentStart": 0, "end": 0, "id": { - "commentStart": 232, + "commentStart": 0, "end": 0, "name": "innerDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 248, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing pipe-with-bend.kcl "type": "VariableDeclaration" }, { - "commentStart": 251, + "commentStart": 0, "declaration": { - "commentStart": 251, + "commentStart": 0, "end": 0, "id": { - "commentStart": 251, + "commentStart": 0, "end": 0, "name": "outerDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 267, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing pipe-with-bend.kcl "type": "VariableDeclaration" }, { - "commentStart": 270, + "commentStart": 0, "declaration": { - "commentStart": 270, + "commentStart": 0, "end": 0, "id": { - "commentStart": 270, + "commentStart": 0, "end": 0, "name": "bendRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 283, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing pipe-with-bend.kcl "type": "VariableDeclaration" }, { - "commentStart": 286, + "commentStart": 0, "declaration": { - "commentStart": 286, + "commentStart": 0, "end": 0, "id": { - "commentStart": 286, + "commentStart": 0, "end": 0, "name": "bendAngle", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 298, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -141,12 +141,12 @@ description: Result of parsing pipe-with-bend.kcl "type": "VariableDeclaration" }, { - "commentStart": 300, + "commentStart": 0, "declaration": { - "commentStart": 339, + "commentStart": 0, "end": 0, "id": { - "commentStart": 339, + "commentStart": 0, "end": 0, "name": "sketch000", "start": 0, @@ -156,10 +156,10 @@ description: Result of parsing pipe-with-bend.kcl "arguments": [ { "abs_path": false, - "commentStart": 365, + "commentStart": 0, "end": 0, "name": { - "commentStart": 365, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -173,10 +173,10 @@ description: Result of parsing pipe-with-bend.kcl ], "callee": { "abs_path": false, - "commentStart": 351, + "commentStart": 0, "end": 0, "name": { - "commentStart": 351, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -186,7 +186,7 @@ description: Result of parsing pipe-with-bend.kcl "start": 0, "type": "Name" }, - "commentStart": 351, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -207,12 +207,12 @@ description: Result of parsing pipe-with-bend.kcl "type": "VariableDeclaration" }, { - "commentStart": 368, + "commentStart": 0, "declaration": { - "commentStart": 413, + "commentStart": 0, "end": 0, "id": { - "commentStart": 413, + "commentStart": 0, "end": 0, "name": "outerProfile", "start": 0, @@ -223,21 +223,21 @@ description: Result of parsing pipe-with-bend.kcl { "type": "LabeledArg", "label": { - "commentStart": 446, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 455, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 456, + "commentStart": 0, "end": 0, "name": { - "commentStart": 456, + "commentStart": 0, "end": 0, "name": "bendRadius", "start": 0, @@ -249,7 +249,7 @@ description: Result of parsing pipe-with-bend.kcl "type": "Name" }, { - "commentStart": 468, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -270,21 +270,21 @@ description: Result of parsing pipe-with-bend.kcl { "type": "LabeledArg", "label": { - "commentStart": 472, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 481, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 481, + "commentStart": 0, "end": 0, "name": { - "commentStart": 481, + "commentStart": 0, "end": 0, "name": "outerDiameter", "start": 0, @@ -297,7 +297,7 @@ description: Result of parsing pipe-with-bend.kcl }, "operator": "/", "right": { - "commentStart": 497, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -316,10 +316,10 @@ description: Result of parsing pipe-with-bend.kcl ], "callee": { "abs_path": false, - "commentStart": 428, + "commentStart": 0, "end": 0, "name": { - "commentStart": 428, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -329,17 +329,17 @@ description: Result of parsing pipe-with-bend.kcl "start": 0, "type": "Name" }, - "commentStart": 428, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 435, + "commentStart": 0, "end": 0, "name": { - "commentStart": 435, + "commentStart": 0, "end": 0, "name": "sketch000", "start": 0, @@ -366,12 +366,12 @@ description: Result of parsing pipe-with-bend.kcl "type": "VariableDeclaration" }, { - "commentStart": 499, + "commentStart": 0, "declaration": { - "commentStart": 544, + "commentStart": 0, "end": 0, "id": { - "commentStart": 544, + "commentStart": 0, "end": 0, "name": "innerProfile", "start": 0, @@ -382,21 +382,21 @@ description: Result of parsing pipe-with-bend.kcl { "type": "LabeledArg", "label": { - "commentStart": 577, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 586, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 587, + "commentStart": 0, "end": 0, "name": { - "commentStart": 587, + "commentStart": 0, "end": 0, "name": "bendRadius", "start": 0, @@ -408,7 +408,7 @@ description: Result of parsing pipe-with-bend.kcl "type": "Name" }, { - "commentStart": 599, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -429,21 +429,21 @@ description: Result of parsing pipe-with-bend.kcl { "type": "LabeledArg", "label": { - "commentStart": 603, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 612, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 612, + "commentStart": 0, "end": 0, "name": { - "commentStart": 612, + "commentStart": 0, "end": 0, "name": "innerDiameter", "start": 0, @@ -456,7 +456,7 @@ description: Result of parsing pipe-with-bend.kcl }, "operator": "/", "right": { - "commentStart": 628, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -475,10 +475,10 @@ description: Result of parsing pipe-with-bend.kcl ], "callee": { "abs_path": false, - "commentStart": 559, + "commentStart": 0, "end": 0, "name": { - "commentStart": 559, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -488,17 +488,17 @@ description: Result of parsing pipe-with-bend.kcl "start": 0, "type": "Name" }, - "commentStart": 559, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 566, + "commentStart": 0, "end": 0, "name": { - "commentStart": 566, + "commentStart": 0, "end": 0, "name": "sketch000", "start": 0, @@ -525,12 +525,12 @@ description: Result of parsing pipe-with-bend.kcl "type": "VariableDeclaration" }, { - "commentStart": 630, + "commentStart": 0, "declaration": { - "commentStart": 666, + "commentStart": 0, "end": 0, "id": { - "commentStart": 666, + "commentStart": 0, "end": 0, "name": "pipeProfile", "start": 0, @@ -540,10 +540,10 @@ description: Result of parsing pipe-with-bend.kcl "body": [ { "abs_path": false, - "commentStart": 680, + "commentStart": 0, "end": 0, "name": { - "commentStart": 680, + "commentStart": 0, "end": 0, "name": "outerProfile", "start": 0, @@ -558,10 +558,10 @@ description: Result of parsing pipe-with-bend.kcl "arguments": [ { "abs_path": false, - "commentStart": 703, + "commentStart": 0, "end": 0, "name": { - "commentStart": 703, + "commentStart": 0, "end": 0, "name": "innerProfile", "start": 0, @@ -573,7 +573,7 @@ description: Result of parsing pipe-with-bend.kcl "type": "Name" }, { - "commentStart": 717, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -582,10 +582,10 @@ description: Result of parsing pipe-with-bend.kcl ], "callee": { "abs_path": false, - "commentStart": 698, + "commentStart": 0, "end": 0, "name": { - "commentStart": 698, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -595,20 +595,20 @@ description: Result of parsing pipe-with-bend.kcl "start": 0, "type": "Name" }, - "commentStart": 698, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 680, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 719, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -641,12 +641,12 @@ description: Result of parsing pipe-with-bend.kcl "type": "VariableDeclaration" }, { - "commentStart": 770, + "commentStart": 0, "declaration": { - "commentStart": 770, + "commentStart": 0, "end": 0, "id": { - "commentStart": 770, + "commentStart": 0, "end": 0, "name": "pipe", "start": 0, @@ -657,7 +657,7 @@ description: Result of parsing pipe-with-bend.kcl { "type": "LabeledArg", "label": { - "commentStart": 798, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -665,10 +665,10 @@ description: Result of parsing pipe-with-bend.kcl }, "arg": { "abs_path": false, - "commentStart": 805, + "commentStart": 0, "end": 0, "name": { - "commentStart": 805, + "commentStart": 0, "end": 0, "name": "Y", "start": 0, @@ -683,7 +683,7 @@ description: Result of parsing pipe-with-bend.kcl { "type": "LabeledArg", "label": { - "commentStart": 808, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, @@ -691,10 +691,10 @@ description: Result of parsing pipe-with-bend.kcl }, "arg": { "abs_path": false, - "commentStart": 816, + "commentStart": 0, "end": 0, "name": { - "commentStart": 816, + "commentStart": 0, "end": 0, "name": "bendAngle", "start": 0, @@ -709,10 +709,10 @@ description: Result of parsing pipe-with-bend.kcl ], "callee": { "abs_path": false, - "commentStart": 777, + "commentStart": 0, "end": 0, "name": { - "commentStart": 777, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -722,17 +722,17 @@ description: Result of parsing pipe-with-bend.kcl "start": 0, "type": "Name" }, - "commentStart": 777, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 785, + "commentStart": 0, "end": 0, "name": { - "commentStart": 785, + "commentStart": 0, "end": 0, "name": "pipeProfile", "start": 0, @@ -761,7 +761,7 @@ description: Result of parsing pipe-with-bend.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 177, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -776,10 +776,10 @@ description: Result of parsing pipe-with-bend.kcl ], "properties": [ { - "commentStart": 186, + "commentStart": 0, "end": 0, "key": { - "commentStart": 186, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -789,10 +789,10 @@ description: Result of parsing pipe-with-bend.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 206, + "commentStart": 0, "end": 0, "name": { - "commentStart": 206, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -813,7 +813,7 @@ description: Result of parsing pipe-with-bend.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 209, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/ops.snap b/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/ops.snap index e25e6a259..e61671785 100644 --- a/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/ops.snap @@ -5,7 +5,7 @@ description: Operations executed pipe-with-bend.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/program_memory.snap index 36546d52f..3add7b9e9 100644 --- a/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/pipe-with-bend/program_memory.snap @@ -82,22 +82,34 @@ description: Variables in memory after executing pipe-with-bend.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -181,22 +193,34 @@ description: Variables in memory after executing pipe-with-bend.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -280,22 +304,34 @@ description: Variables in memory after executing pipe-with-bend.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -373,22 +409,34 @@ description: Variables in memory after executing pipe-with-bend.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -428,22 +476,34 @@ description: Variables in memory after executing pipe-with-bend.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" diff --git a/rust/kcl-lib/tests/kcl_samples/pipe/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/pipe/artifact_commands.snap index 428e781f9..779b0447f 100644 --- a/rust/kcl-lib/tests/kcl_samples/pipe/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/pipe/artifact_commands.snap @@ -161,7 +161,8 @@ description: Artifact commands pipe.kcl "type": "extrude", "target": "[uuid]", "distance": 6.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -299,7 +300,8 @@ description: Artifact commands pipe.kcl "type": "extrude", "target": "[uuid]", "distance": -6.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/pipe/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/pipe/artifact_graph_flowchart.snap.md index bc694e6fa..6a3460025 100644 --- a/rust/kcl-lib/tests/kcl_samples/pipe/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/pipe/artifact_graph_flowchart.snap.md @@ -6,8 +6,8 @@ flowchart LR 4[Solid2d] end subgraph path11 [Path] - 11["Path
[430, 485, 0]"] - 12["Segment
[430, 485, 0]"] + 11["Path
[435, 490, 0]"] + 12["Segment
[435, 490, 0]"] 13[Solid2d] end 1["Plane
[218, 235, 0]"] @@ -17,11 +17,11 @@ flowchart LR 8["Cap End"] 9["SweepEdge Opposite"] 10["SweepEdge Adjacent"] - 14["Sweep Extrusion
[491, 523, 0]"] + 14["Sweep Extrusion
[496, 528, 0]"] 15[Wall] 16["SweepEdge Opposite"] 17["SweepEdge Adjacent"] - 18["StartSketchOnFace
[394, 424, 0]"] + 18["StartSketchOnFace
[394, 429, 0]"] 1 --- 2 2 --- 3 2 ---- 5 diff --git a/rust/kcl-lib/tests/kcl_samples/pipe/ast.snap b/rust/kcl-lib/tests/kcl_samples/pipe/ast.snap index d3da540dd..78e0de2b9 100644 --- a/rust/kcl-lib/tests/kcl_samples/pipe/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/pipe/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing pipe.kcl "Ok": { "body": [ { - "commentStart": 94, + "commentStart": 0, "declaration": { - "commentStart": 117, + "commentStart": 0, "end": 0, "id": { - "commentStart": 117, + "commentStart": 0, "end": 0, "name": "pipeInnerDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 137, + "commentStart": 0, "end": 0, "raw": "2.0", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing pipe.kcl "type": "VariableDeclaration" }, { - "commentStart": 141, + "commentStart": 0, "declaration": { - "commentStart": 141, + "commentStart": 0, "end": 0, "id": { - "commentStart": 141, + "commentStart": 0, "end": 0, "name": "pipeOuterDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 161, + "commentStart": 0, "end": 0, "raw": "2.375", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing pipe.kcl "type": "VariableDeclaration" }, { - "commentStart": 167, + "commentStart": 0, "declaration": { - "commentStart": 167, + "commentStart": 0, "end": 0, "id": { - "commentStart": 167, + "commentStart": 0, "end": 0, "name": "pipeLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 180, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -108,12 +108,12 @@ description: Result of parsing pipe.kcl "type": "VariableDeclaration" }, { - "commentStart": 181, + "commentStart": 0, "declaration": { - "commentStart": 207, + "commentStart": 0, "end": 0, "id": { - "commentStart": 207, + "commentStart": 0, "end": 0, "name": "pipeBase", "start": 0, @@ -125,10 +125,10 @@ description: Result of parsing pipe.kcl "arguments": [ { "abs_path": false, - "commentStart": 232, + "commentStart": 0, "end": 0, "name": { - "commentStart": 232, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -142,10 +142,10 @@ description: Result of parsing pipe.kcl ], "callee": { "abs_path": false, - "commentStart": 218, + "commentStart": 0, "end": 0, "name": { - "commentStart": 218, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -155,7 +155,7 @@ description: Result of parsing pipe.kcl "start": 0, "type": "Name" }, - "commentStart": 218, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -166,17 +166,17 @@ description: Result of parsing pipe.kcl { "type": "LabeledArg", "label": { - "commentStart": 251, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 260, + "commentStart": 0, "elements": [ { - "commentStart": 261, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -188,7 +188,7 @@ description: Result of parsing pipe.kcl } }, { - "commentStart": 264, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -209,21 +209,21 @@ description: Result of parsing pipe.kcl { "type": "LabeledArg", "label": { - "commentStart": 268, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 277, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 277, + "commentStart": 0, "end": 0, "name": { - "commentStart": 277, + "commentStart": 0, "end": 0, "name": "pipeOuterDiameter", "start": 0, @@ -236,7 +236,7 @@ description: Result of parsing pipe.kcl }, "operator": "/", "right": { - "commentStart": 297, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -255,10 +255,10 @@ description: Result of parsing pipe.kcl ], "callee": { "abs_path": false, - "commentStart": 241, + "commentStart": 0, "end": 0, "name": { - "commentStart": 241, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -268,13 +268,13 @@ description: Result of parsing pipe.kcl "start": 0, "type": "Name" }, - "commentStart": 241, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 248, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -286,7 +286,7 @@ description: Result of parsing pipe.kcl { "type": "LabeledArg", "label": { - "commentStart": 316, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -294,10 +294,10 @@ description: Result of parsing pipe.kcl }, "arg": { "abs_path": false, - "commentStart": 325, + "commentStart": 0, "end": 0, "name": { - "commentStart": 325, + "commentStart": 0, "end": 0, "name": "pipeLength", "start": 0, @@ -312,10 +312,10 @@ description: Result of parsing pipe.kcl ], "callee": { "abs_path": false, - "commentStart": 305, + "commentStart": 0, "end": 0, "name": { - "commentStart": 305, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -325,13 +325,13 @@ description: Result of parsing pipe.kcl "start": 0, "type": "Name" }, - "commentStart": 305, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 313, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -339,13 +339,13 @@ description: Result of parsing pipe.kcl } } ], - "commentStart": 218, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "commentStart": 336, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -378,12 +378,12 @@ description: Result of parsing pipe.kcl "type": "VariableDeclaration" }, { - "commentStart": 387, + "commentStart": 0, "declaration": { - "commentStart": 387, + "commentStart": 0, "end": 0, "id": { - "commentStart": 387, + "commentStart": 0, "end": 0, "name": "pipe", "start": 0, @@ -394,37 +394,38 @@ description: Result of parsing pipe.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 408, - "end": 0, - "name": { - "commentStart": 408, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "pipeBase", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 418, - "end": 0, - "raw": "'end'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "end" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 394, + "commentStart": 0, "end": 0, "name": { - "commentStart": 394, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -434,28 +435,44 @@ description: Result of parsing pipe.kcl "start": 0, "type": "Name" }, - "commentStart": 394, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "pipeBase", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 437, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 446, + "commentStart": 0, "elements": [ { - "commentStart": 447, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -467,7 +484,7 @@ description: Result of parsing pipe.kcl } }, { - "commentStart": 450, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -488,21 +505,21 @@ description: Result of parsing pipe.kcl { "type": "LabeledArg", "label": { - "commentStart": 454, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 463, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 463, + "commentStart": 0, "end": 0, "name": { - "commentStart": 463, + "commentStart": 0, "end": 0, "name": "pipeInnerDiameter", "start": 0, @@ -515,7 +532,7 @@ description: Result of parsing pipe.kcl }, "operator": "/", "right": { - "commentStart": 483, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -534,10 +551,10 @@ description: Result of parsing pipe.kcl ], "callee": { "abs_path": false, - "commentStart": 430, + "commentStart": 0, "end": 0, "name": { - "commentStart": 430, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -547,7 +564,7 @@ description: Result of parsing pipe.kcl "start": 0, "type": "Name" }, - "commentStart": 430, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -559,7 +576,7 @@ description: Result of parsing pipe.kcl { "type": "LabeledArg", "label": { - "commentStart": 502, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -568,10 +585,10 @@ description: Result of parsing pipe.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 512, + "commentStart": 0, "end": 0, "name": { - "commentStart": 512, + "commentStart": 0, "end": 0, "name": "pipeLength", "start": 0, @@ -582,7 +599,7 @@ description: Result of parsing pipe.kcl "type": "Name", "type": "Name" }, - "commentStart": 511, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -593,10 +610,10 @@ description: Result of parsing pipe.kcl ], "callee": { "abs_path": false, - "commentStart": 491, + "commentStart": 0, "end": 0, "name": { - "commentStart": 491, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -606,13 +623,13 @@ description: Result of parsing pipe.kcl "start": 0, "type": "Name" }, - "commentStart": 491, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 499, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -624,14 +641,14 @@ description: Result of parsing pipe.kcl { "type": "LabeledArg", "label": { - "commentStart": 540, + "commentStart": 0, "end": 0, "name": "color", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 548, + "commentStart": 0, "end": 0, "raw": "\"#a24ed0\"", "start": 0, @@ -643,10 +660,10 @@ description: Result of parsing pipe.kcl ], "callee": { "abs_path": false, - "commentStart": 529, + "commentStart": 0, "end": 0, "name": { - "commentStart": 529, + "commentStart": 0, "end": 0, "name": "appearance", "start": 0, @@ -656,7 +673,7 @@ description: Result of parsing pipe.kcl "start": 0, "type": "Name" }, - "commentStart": 529, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -664,7 +681,7 @@ description: Result of parsing pipe.kcl "unlabeled": null } ], - "commentStart": 394, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -687,7 +704,7 @@ description: Result of parsing pipe.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 62, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -702,10 +719,10 @@ description: Result of parsing pipe.kcl ], "properties": [ { - "commentStart": 71, + "commentStart": 0, "end": 0, "key": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -715,10 +732,10 @@ description: Result of parsing pipe.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 91, + "commentStart": 0, "end": 0, "name": { - "commentStart": 91, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -739,7 +756,7 @@ description: Result of parsing pipe.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 94, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/pipe/ops.snap b/rust/kcl-lib/tests/kcl_samples/pipe/ops.snap index 94da20cdf..5a3304cb7 100644 --- a/rust/kcl-lib/tests/kcl_samples/pipe/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/pipe/ops.snap @@ -5,7 +5,7 @@ description: Operations executed pipe.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -52,16 +52,7 @@ description: Operations executed pipe.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -72,7 +63,15 @@ description: Operations executed pipe.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/kcl_samples/pipe/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/pipe/program_memory.snap index 7741aa6ac..b4b76b0e8 100644 --- a/rust/kcl-lib/tests/kcl_samples/pipe/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/pipe/program_memory.snap @@ -56,17 +56,26 @@ description: Variables in memory after executing pipe.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -119,22 +128,34 @@ description: Variables in memory after executing pipe.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -260,22 +281,34 @@ description: Variables in memory after executing pipe.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" diff --git a/rust/kcl-lib/tests/kcl_samples/poopy-shoe/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/poopy-shoe/artifact_commands.snap index a6175f25c..9c3d803eb 100644 --- a/rust/kcl-lib/tests/kcl_samples/poopy-shoe/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/poopy-shoe/artifact_commands.snap @@ -338,7 +338,8 @@ description: Artifact commands poopy-shoe.kcl "unit": "degrees", "value": 90.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -921,7 +922,8 @@ description: Artifact commands poopy-shoe.kcl "type": "extrude", "target": "[uuid]", "distance": 0.875, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1340,7 +1342,8 @@ description: Artifact commands poopy-shoe.kcl "type": "extrude", "target": "[uuid]", "distance": 0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1680,7 +1683,8 @@ description: Artifact commands poopy-shoe.kcl "type": "extrude", "target": "[uuid]", "distance": 0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2131,7 +2135,8 @@ description: Artifact commands poopy-shoe.kcl "type": "extrude", "target": "[uuid]", "distance": 0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2395,7 +2400,8 @@ description: Artifact commands poopy-shoe.kcl "type": "extrude", "target": "[uuid]", "distance": 0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2619,7 +2625,8 @@ description: Artifact commands poopy-shoe.kcl "type": "extrude", "target": "[uuid]", "distance": 2.75, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2876,7 +2883,8 @@ description: Artifact commands poopy-shoe.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/poopy-shoe/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/poopy-shoe/artifact_graph_flowchart.snap.md index ce0303e99..1a4650f22 100644 --- a/rust/kcl-lib/tests/kcl_samples/poopy-shoe/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/poopy-shoe/artifact_graph_flowchart.snap.md @@ -3,96 +3,96 @@ flowchart LR subgraph path2 [Path] 2["Path
[362, 400, 0]"] 3["Segment
[406, 439, 0]"] - 4["Segment
[445, 502, 0]"] - 5["Segment
[508, 535, 0]"] - 6["Segment
[541, 571, 0]"] - 7["Segment
[577, 612, 0]"] - 8["Segment
[618, 710, 0]"] - 9["Segment
[716, 746, 0]"] - 10["Segment
[752, 810, 0]"] - 11["Segment
[816, 843, 0]"] - 12["Segment
[849, 871, 0]"] - 13["Segment
[877, 912, 0]"] - 14["Segment
[918, 964, 0]"] - 15["Segment
[970, 977, 0]"] + 4["Segment
[445, 508, 0]"] + 5["Segment
[514, 541, 0]"] + 6["Segment
[547, 577, 0]"] + 7["Segment
[583, 618, 0]"] + 8["Segment
[624, 697, 0]"] + 9["Segment
[703, 733, 0]"] + 10["Segment
[739, 797, 0]"] + 11["Segment
[803, 830, 0]"] + 12["Segment
[836, 858, 0]"] + 13["Segment
[864, 899, 0]"] + 14["Segment
[905, 951, 0]"] + 15["Segment
[957, 964, 0]"] 16[Solid2d] end subgraph path60 [Path] - 60["Path
[1142, 1180, 0]"] - 61["Segment
[1186, 1219, 0]"] - 62["Segment
[1225, 1282, 0]"] - 63["Segment
[1288, 1315, 0]"] - 64["Segment
[1321, 1351, 0]"] - 65["Segment
[1357, 1392, 0]"] - 66["Segment
[1398, 1490, 0]"] - 67["Segment
[1496, 1526, 0]"] - 68["Segment
[1532, 1590, 0]"] - 69["Segment
[1596, 1623, 0]"] - 70["Segment
[1629, 1651, 0]"] - 71["Segment
[1657, 1692, 0]"] - 72["Segment
[1698, 1744, 0]"] - 73["Segment
[1750, 1757, 0]"] + 60["Path
[1129, 1167, 0]"] + 61["Segment
[1173, 1206, 0]"] + 62["Segment
[1212, 1275, 0]"] + 63["Segment
[1281, 1308, 0]"] + 64["Segment
[1314, 1344, 0]"] + 65["Segment
[1350, 1385, 0]"] + 66["Segment
[1391, 1464, 0]"] + 67["Segment
[1470, 1500, 0]"] + 68["Segment
[1506, 1564, 0]"] + 69["Segment
[1570, 1597, 0]"] + 70["Segment
[1603, 1625, 0]"] + 71["Segment
[1631, 1666, 0]"] + 72["Segment
[1672, 1718, 0]"] + 73["Segment
[1724, 1731, 0]"] 74[Solid2d] end subgraph path118 [Path] - 118["Path
[2089, 2114, 0]"] - 119["Segment
[2120, 2170, 0]"] - 120["Segment
[2176, 2216, 0]"] - 121["Segment
[2222, 2229, 0]"] + 118["Path
[2031, 2056, 0]"] + 119["Segment
[2062, 2104, 0]"] + 120["Segment
[2110, 2150, 0]"] + 121["Segment
[2156, 2163, 0]"] 122[Solid2d] end subgraph path135 [Path] - 135["Path
[2358, 2383, 0]"] - 136["Segment
[2389, 2416, 0]"] - 137["Segment
[2422, 2456, 0]"] - 138["Segment
[2462, 2497, 0]"] - 139["Segment
[2503, 2603, 0]"] - 140["Segment
[2609, 2638, 0]"] - 141["Segment
[2644, 2697, 0]"] - 142["Segment
[2703, 2730, 0]"] - 143["Segment
[2736, 2765, 0]"] - 144["Segment
[2771, 2895, 0]"] - 145["Segment
[2901, 2946, 0]"] - 146["Segment
[2952, 2974, 0]"] - 147["Segment
[2980, 2999, 0]"] + 135["Path
[2297, 2322, 0]"] + 136["Segment
[2328, 2355, 0]"] + 137["Segment
[2361, 2395, 0]"] + 138["Segment
[2401, 2436, 0]"] + 139["Segment
[2442, 2523, 0]"] + 140["Segment
[2529, 2558, 0]"] + 141["Segment
[2564, 2617, 0]"] + 142["Segment
[2623, 2650, 0]"] + 143["Segment
[2656, 2685, 0]"] + 144["Segment
[2691, 2824, 0]"] + 145["Segment
[2830, 2884, 0]"] + 146["Segment
[2890, 2912, 0]"] + 147["Segment
[2918, 2937, 0]"] 148[Solid2d] end subgraph path189 [Path] - 189["Path
[3327, 3352, 0]"] - 190["Segment
[3358, 3385, 0]"] - 191["Segment
[3391, 3422, 0]"] - 192["Segment
[3428, 3552, 0]"] - 193["Segment
[3558, 3603, 0]"] - 194["Segment
[3609, 3645, 0]"] - 195["Segment
[3651, 3658, 0]"] + 189["Path
[3233, 3258, 0]"] + 190["Segment
[3264, 3291, 0]"] + 191["Segment
[3297, 3328, 0]"] + 192["Segment
[3334, 3467, 0]"] + 193["Segment
[3473, 3527, 0]"] + 194["Segment
[3533, 3569, 0]"] + 195["Segment
[3575, 3582, 0]"] 196[Solid2d] end subgraph path218 [Path] - 218["Path
[3746, 3796, 0]"] - 219["Segment
[3802, 3834, 0]"] - 220["Segment
[3840, 3867, 0]"] - 221["Segment
[3873, 3895, 0]"] - 222["Segment
[3901, 3908, 0]"] + 218["Path
[3677, 3727, 0]"] + 219["Segment
[3733, 3765, 0]"] + 220["Segment
[3771, 3798, 0]"] + 221["Segment
[3804, 3826, 0]"] + 222["Segment
[3832, 3839, 0]"] 223[Solid2d] end subgraph path239 [Path] - 239["Path
[3996, 4021, 0]"] - 240["Segment
[4027, 4061, 0]"] - 241["Segment
[4067, 4094, 0]"] - 242["Segment
[4100, 4122, 0]"] - 243["Segment
[4128, 4135, 0]"] + 239["Path
[3932, 3957, 0]"] + 240["Segment
[3963, 3997, 0]"] + 241["Segment
[4003, 4030, 0]"] + 242["Segment
[4036, 4058, 0]"] + 243["Segment
[4064, 4071, 0]"] 244[Solid2d] end subgraph path261 [Path] - 261["Path
[4495, 4544, 0]"] - 262["Segment
[4550, 4582, 0]"] - 263["Segment
[4588, 4636, 0]"] - 264["Segment
[4642, 4676, 0]"] - 265["Segment
[4682, 4689, 0]"] + 261["Path
[4399, 4448, 0]"] + 262["Segment
[4454, 4486, 0]"] + 263["Segment
[4492, 4540, 0]"] + 264["Segment
[4546, 4580, 0]"] + 265["Segment
[4586, 4593, 0]"] 266[Solid2d] end 1["Plane
[338, 356, 0]"] - 17["Sweep Revolve
[988, 1104, 0]"] + 17["Sweep Revolve
[975, 1091, 0]"] 18[Wall] 19[Wall] 20[Wall] @@ -134,8 +134,8 @@ flowchart LR 56["SweepEdge Adjacent"] 57["SweepEdge Opposite"] 58["SweepEdge Adjacent"] - 59["Plane
[1118, 1136, 0]"] - 75["Sweep Extrusion
[1763, 1800, 0]"] + 59["Plane
[1105, 1123, 0]"] + 75["Sweep Extrusion
[1737, 1774, 0]"] 76[Wall] 77[Wall] 78[Wall] @@ -177,8 +177,8 @@ flowchart LR 114["SweepEdge Adjacent"] 115["SweepEdge Opposite"] 116["SweepEdge Adjacent"] - 117["Plane
[2057, 2083, 0]"] - 123["Sweep Extrusion
[2235, 2266, 0]"] + 117["Plane
[1999, 2025, 0]"] + 123["Sweep Extrusion
[2169, 2200, 0]"] 124[Wall] 125[Wall] 126[Wall] @@ -190,7 +190,7 @@ flowchart LR 132["SweepEdge Adjacent"] 133["SweepEdge Opposite"] 134["SweepEdge Adjacent"] - 149["Sweep Extrusion
[3005, 3036, 0]"] + 149["Sweep Extrusion
[2943, 2974, 0]"] 150[Wall] 151[Wall] 152[Wall] @@ -229,8 +229,8 @@ flowchart LR 185["SweepEdge Adjacent"] 186["SweepEdge Opposite"] 187["SweepEdge Adjacent"] - 188["Plane
[3294, 3321, 0]"] - 197["Sweep Extrusion
[3664, 3695, 0]"] + 188["Plane
[3200, 3227, 0]"] + 197["Sweep Extrusion
[3588, 3619, 0]"] 198[Wall] 199[Wall] 200[Wall] @@ -251,7 +251,7 @@ flowchart LR 215["SweepEdge Adjacent"] 216["SweepEdge Opposite"] 217["SweepEdge Adjacent"] - 224["Sweep Extrusion
[3914, 3945, 0]"] + 224["Sweep Extrusion
[3845, 3876, 0]"] 225[Wall] 226[Wall] 227[Wall] @@ -266,7 +266,7 @@ flowchart LR 236["SweepEdge Adjacent"] 237["SweepEdge Opposite"] 238["SweepEdge Adjacent"] - 245["Sweep Extrusion
[4141, 4191, 0]"] + 245["Sweep Extrusion
[4077, 4127, 0]"] 246[Wall] 247[Wall] 248[Wall] @@ -281,8 +281,8 @@ flowchart LR 257["SweepEdge Adjacent"] 258["SweepEdge Opposite"] 259["SweepEdge Adjacent"] - 260["Plane
[4462, 4489, 0]"] - 267["Sweep Extrusion
[4695, 4727, 0]"] + 260["Plane
[4366, 4393, 0]"] + 267["Sweep Extrusion
[4599, 4631, 0]"] 268[Wall] 269[Wall] 270[Wall] @@ -297,9 +297,9 @@ flowchart LR 279["SweepEdge Adjacent"] 280["SweepEdge Opposite"] 281["SweepEdge Adjacent"] - 282["StartSketchOnFace
[2321, 2352, 0]"] - 283["StartSketchOnFace
[3709, 3740, 0]"] - 284["StartSketchOnFace
[3959, 3990, 0]"] + 282["StartSketchOnFace
[2255, 2291, 0]"] + 283["StartSketchOnFace
[3633, 3671, 0]"] + 284["StartSketchOnFace
[3890, 3926, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/poopy-shoe/ast.snap b/rust/kcl-lib/tests/kcl_samples/poopy-shoe/ast.snap index 7f5df3964..601d2911e 100644 --- a/rust/kcl-lib/tests/kcl_samples/poopy-shoe/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/poopy-shoe/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing poopy-shoe.kcl "Ok": { "body": [ { - "commentStart": 124, + "commentStart": 0, "declaration": { - "commentStart": 147, + "commentStart": 0, "end": 0, "id": { - "commentStart": 147, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 163, + "commentStart": 0, "end": 0, "raw": "0.125", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 169, + "commentStart": 0, "declaration": { - "commentStart": 169, + "commentStart": 0, "end": 0, "id": { - "commentStart": 169, + "commentStart": 0, "end": 0, "name": "wallsWidth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 182, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 184, + "commentStart": 0, "declaration": { - "commentStart": 184, + "commentStart": 0, "end": 0, "id": { - "commentStart": 184, + "commentStart": 0, "end": 0, "name": "height", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 193, + "commentStart": 0, "end": 0, "raw": "5.125", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 199, + "commentStart": 0, "declaration": { - "commentStart": 199, + "commentStart": 0, "end": 0, "id": { - "commentStart": 199, + "commentStart": 0, "end": 0, "name": "filletRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 214, + "commentStart": 0, "end": 0, "raw": "0.050", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 220, + "commentStart": 0, "declaration": { - "commentStart": 220, + "commentStart": 0, "end": 0, "id": { - "commentStart": 220, + "commentStart": 0, "end": 0, "name": "backLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 233, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -174,19 +174,19 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 235, + "commentStart": 0, "declaration": { - "commentStart": 235, + "commentStart": 0, "end": 0, "id": { - "commentStart": 235, + "commentStart": 0, "end": 0, "name": "exitHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 248, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -207,19 +207,19 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 250, + "commentStart": 0, "declaration": { - "commentStart": 250, + "commentStart": 0, "end": 0, "id": { - "commentStart": 250, + "commentStart": 0, "end": 0, "name": "frontLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 264, + "commentStart": 0, "end": 0, "raw": "7", "start": 0, @@ -240,12 +240,12 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 265, + "commentStart": 0, "declaration": { - "commentStart": 326, + "commentStart": 0, "end": 0, "id": { - "commentStart": 326, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -258,10 +258,10 @@ description: Result of parsing poopy-shoe.kcl { "argument": { "abs_path": false, - "commentStart": 353, + "commentStart": 0, "end": 0, "name": { - "commentStart": 353, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -272,7 +272,7 @@ description: Result of parsing poopy-shoe.kcl "type": "Name", "type": "Name" }, - "commentStart": 352, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -282,10 +282,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 338, + "commentStart": 0, "end": 0, "name": { - "commentStart": 338, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -295,7 +295,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 338, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -304,17 +304,17 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "commentStart": 377, + "commentStart": 0, "elements": [ { - "commentStart": 378, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 378, + "commentStart": 0, "end": 0, "name": { - "commentStart": 378, + "commentStart": 0, "end": 0, "name": "wallsWidth", "start": 0, @@ -327,7 +327,7 @@ description: Result of parsing poopy-shoe.kcl }, "operator": "/", "right": { - "commentStart": 391, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -343,7 +343,7 @@ description: Result of parsing poopy-shoe.kcl "type": "BinaryExpression" }, { - "commentStart": 394, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -361,7 +361,7 @@ description: Result of parsing poopy-shoe.kcl "type": "ArrayExpression" }, { - "commentStart": 398, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -370,10 +370,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 362, + "commentStart": 0, "end": 0, "name": { - "commentStart": 362, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -383,7 +383,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 362, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -394,21 +394,21 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 412, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 421, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 421, + "commentStart": 0, "end": 0, "name": { - "commentStart": 421, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -421,7 +421,7 @@ description: Result of parsing poopy-shoe.kcl }, "operator": "/", "right": { - "commentStart": 437, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -440,10 +440,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 406, + "commentStart": 0, "end": 0, "name": { - "commentStart": 406, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -453,7 +453,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 406, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -463,92 +463,80 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "commentStart": 459, - "end": 0, - "properties": [ - { - "commentStart": 461, - "end": 0, - "key": { - "commentStart": 461, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 469, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - } - }, - { - "commentStart": 473, - "end": 0, - "key": { - "commentStart": 473, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 478, - "end": 0, - "name": { - "commentStart": 478, - "end": 0, - "name": "wallsWidth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "60", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 60.0, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 492, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallsWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 495, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "seg01" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "seg01" + } } ], "callee": { "abs_path": false, - "commentStart": 445, + "commentStart": 0, "end": 0, "name": { - "commentStart": 445, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -556,18 +544,19 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 445, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 514, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -575,10 +564,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 528, + "commentStart": 0, "end": 0, "name": { - "commentStart": 528, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -593,10 +582,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 508, + "commentStart": 0, "end": 0, "name": { - "commentStart": 508, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -606,7 +595,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 508, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -618,7 +607,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 547, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -627,10 +616,10 @@ description: Result of parsing poopy-shoe.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 557, + "commentStart": 0, "end": 0, "name": { - "commentStart": 557, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -641,7 +630,7 @@ description: Result of parsing poopy-shoe.kcl "type": "Name", "type": "Name" }, - "commentStart": 556, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -652,10 +641,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 541, + "commentStart": 0, "end": 0, "name": { - "commentStart": 541, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -665,7 +654,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 541, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -677,7 +666,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 583, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -687,10 +676,10 @@ description: Result of parsing poopy-shoe.kcl "arguments": [ { "abs_path": false, - "commentStart": 605, + "commentStart": 0, "end": 0, "name": { - "commentStart": 605, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -704,10 +693,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 597, + "commentStart": 0, "end": 0, "name": { - "commentStart": 597, + "commentStart": 0, "end": 0, "name": "segEndY", "start": 0, @@ -717,7 +706,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 597, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -727,10 +716,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 577, + "commentStart": 0, "end": 0, "name": { - "commentStart": 577, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -740,7 +729,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 577, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -750,148 +739,126 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "commentStart": 632, - "end": 0, - "properties": [ - { - "commentStart": 641, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "60", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 60.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 641, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "angle", + "name": { + "commentStart": 0, + "end": 0, + "name": "wallsWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 649, + "operator": "/", + "right": { + "commentStart": 0, "end": 0, - "raw": "60", + "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 60.0, + "value": 2.0, "suffix": "None" } - } - }, - { - "commentStart": 660, - "end": 0, - "key": { - "commentStart": 660, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" }, "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 665, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "left": { - "commentStart": 665, + "name": { + "commentStart": 0, "end": 0, - "left": { - "abs_path": false, - "commentStart": 665, - "end": 0, - "name": { - "commentStart": 665, - "end": 0, - "name": "wallsWidth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "/", - "right": { - "commentStart": 678, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, + "name": "wallThickness", "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "commentStart": 682, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 682, - "end": 0, - "name": { - "commentStart": 682, - "end": 0, - "name": "wallThickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "/", - "right": { - "commentStart": 698, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "Identifier" }, + "path": [], "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 708, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "Name", + "type": "Name" + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 618, + "commentStart": 0, "end": 0, "name": { - "commentStart": 618, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -899,18 +866,19 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 618, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 722, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -919,10 +887,10 @@ description: Result of parsing poopy-shoe.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 732, + "commentStart": 0, "end": 0, "name": { - "commentStart": 732, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -933,7 +901,7 @@ description: Result of parsing poopy-shoe.kcl "type": "Name", "type": "Name" }, - "commentStart": 731, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -944,10 +912,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 716, + "commentStart": 0, "end": 0, "name": { - "commentStart": 716, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -957,7 +925,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 716, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -967,104 +935,82 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "commentStart": 766, - "end": 0, - "properties": [ - { - "commentStart": 768, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 768, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "180", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 776, - "end": 0, - "left": { - "commentStart": 776, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, - "operator": "-", - "right": { - "commentStart": 782, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "value": 180.0, + "suffix": "None" } }, - { - "commentStart": 786, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 786, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, + "raw": "60", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "abs_path": false, - "commentStart": 791, - "end": 0, - "name": { - "commentStart": 791, - "end": 0, - "name": "wallThickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "value": 60.0, + "suffix": "None" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 808, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 752, + "commentStart": 0, "end": 0, "name": { - "commentStart": 752, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -1072,18 +1018,19 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 752, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 822, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -1091,10 +1038,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 836, + "commentStart": 0, "end": 0, "name": { - "commentStart": 836, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -1109,10 +1056,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 816, + "commentStart": 0, "end": 0, "name": { - "commentStart": 816, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1122,7 +1069,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 816, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1134,14 +1081,14 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 855, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 869, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1156,10 +1103,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 849, + "commentStart": 0, "end": 0, "name": { - "commentStart": 849, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1169,7 +1116,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 849, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1181,7 +1128,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 883, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -1191,10 +1138,10 @@ description: Result of parsing poopy-shoe.kcl "arguments": [ { "abs_path": false, - "commentStart": 905, + "commentStart": 0, "end": 0, "name": { - "commentStart": 905, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -1208,10 +1155,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 897, + "commentStart": 0, "end": 0, "name": { - "commentStart": 897, + "commentStart": 0, "end": 0, "name": "segEndY", "start": 0, @@ -1221,7 +1168,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 897, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1231,10 +1178,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 877, + "commentStart": 0, "end": 0, "name": { - "commentStart": 877, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1244,7 +1191,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 877, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1254,100 +1201,78 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "commentStart": 932, - "end": 0, - "properties": [ - { - "commentStart": 934, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 934, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "180", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 942, - "end": 0, - "left": { - "commentStart": 942, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, - "operator": "-", - "right": { - "commentStart": 948, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "value": 180.0, + "suffix": "None" } }, - { - "commentStart": 952, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 952, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, + "raw": "60", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 957, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } + "value": 60.0, + "suffix": "None" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 962, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } } ], "callee": { "abs_path": false, - "commentStart": 918, + "commentStart": 0, "end": 0, "name": { - "commentStart": 918, + "commentStart": 0, "end": 0, - "name": "angledLineToY", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -1355,20 +1280,21 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 918, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [], "callee": { "abs_path": false, - "commentStart": 970, + "commentStart": 0, "end": 0, "name": { - "commentStart": 970, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1378,14 +1304,14 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 970, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 338, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1406,12 +1332,12 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 978, + "commentStart": 0, "declaration": { - "commentStart": 978, + "commentStart": 0, "end": 0, "id": { - "commentStart": 978, + "commentStart": 0, "end": 0, "name": "part001", "start": 0, @@ -1422,14 +1348,14 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 1012, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1020, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1444,21 +1370,21 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 1026, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1033, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1039, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1039, + "commentStart": 0, "end": 0, "name": "direction", "start": 0, @@ -1467,10 +1393,10 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1051, + "commentStart": 0, "elements": [ { - "commentStart": 1052, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -1482,7 +1408,7 @@ description: Result of parsing poopy-shoe.kcl } }, { - "commentStart": 1057, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -1501,10 +1427,10 @@ description: Result of parsing poopy-shoe.kcl } }, { - "commentStart": 1067, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1067, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -1513,10 +1439,10 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1076, + "commentStart": 0, "elements": [ { - "commentStart": 1077, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -1528,14 +1454,14 @@ description: Result of parsing poopy-shoe.kcl } }, { - "commentStart": 1082, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1082, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1082, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -1548,7 +1474,7 @@ description: Result of parsing poopy-shoe.kcl }, "operator": "+", "right": { - "commentStart": 1091, + "commentStart": 0, "end": 0, "raw": ".0001", "start": 0, @@ -1579,10 +1505,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 988, + "commentStart": 0, "end": 0, "name": { - "commentStart": 988, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -1592,17 +1518,17 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 988, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 999, + "commentStart": 0, "end": 0, "name": { - "commentStart": 999, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -1624,12 +1550,12 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 1104, + "commentStart": 0, "declaration": { - "commentStart": 1106, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1106, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -1642,10 +1568,10 @@ description: Result of parsing poopy-shoe.kcl { "argument": { "abs_path": false, - "commentStart": 1133, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1133, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -1656,7 +1582,7 @@ description: Result of parsing poopy-shoe.kcl "type": "Name", "type": "Name" }, - "commentStart": 1132, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1666,10 +1592,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 1118, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1118, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1679,7 +1605,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1118, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1688,17 +1614,17 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "commentStart": 1157, + "commentStart": 0, "elements": [ { - "commentStart": 1158, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1158, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1158, + "commentStart": 0, "end": 0, "name": "wallsWidth", "start": 0, @@ -1711,7 +1637,7 @@ description: Result of parsing poopy-shoe.kcl }, "operator": "/", "right": { - "commentStart": 1171, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1727,7 +1653,7 @@ description: Result of parsing poopy-shoe.kcl "type": "BinaryExpression" }, { - "commentStart": 1174, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1745,7 +1671,7 @@ description: Result of parsing poopy-shoe.kcl "type": "ArrayExpression" }, { - "commentStart": 1178, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1754,10 +1680,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 1142, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1142, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1767,7 +1693,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1142, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1778,21 +1704,21 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 1192, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1201, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1201, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1201, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -1805,7 +1731,7 @@ description: Result of parsing poopy-shoe.kcl }, "operator": "/", "right": { - "commentStart": 1217, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1824,10 +1750,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 1186, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1186, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1837,7 +1763,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1186, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1847,92 +1773,80 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "commentStart": 1239, - "end": 0, - "properties": [ - { - "commentStart": 1241, - "end": 0, - "key": { - "commentStart": 1241, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1249, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1253, - "end": 0, - "key": { - "commentStart": 1253, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1258, - "end": 0, - "name": { - "commentStart": 1258, - "end": 0, - "name": "wallsWidth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "60", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 60.0, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 1272, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallsWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 1275, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "seg02" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "seg02" + } } ], "callee": { "abs_path": false, - "commentStart": 1225, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1225, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -1940,18 +1854,19 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1225, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1294, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -1959,10 +1874,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 1308, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1308, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -1977,10 +1892,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 1288, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1288, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1990,7 +1905,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1288, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2002,7 +1917,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 1327, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2011,10 +1926,10 @@ description: Result of parsing poopy-shoe.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 1337, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1337, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -2025,7 +1940,7 @@ description: Result of parsing poopy-shoe.kcl "type": "Name", "type": "Name" }, - "commentStart": 1336, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2036,10 +1951,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 1321, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1321, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2049,7 +1964,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1321, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2061,7 +1976,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 1363, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -2071,10 +1986,10 @@ description: Result of parsing poopy-shoe.kcl "arguments": [ { "abs_path": false, - "commentStart": 1385, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1385, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -2088,10 +2003,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 1377, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1377, + "commentStart": 0, "end": 0, "name": "segEndY", "start": 0, @@ -2101,7 +2016,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1377, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2111,10 +2026,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 1357, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1357, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2124,7 +2039,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1357, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2134,148 +2049,126 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "commentStart": 1412, - "end": 0, - "properties": [ - { - "commentStart": 1421, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "60", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 60.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1421, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "angle", + "name": { + "commentStart": 0, + "end": 0, + "name": "wallsWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1429, + "operator": "/", + "right": { + "commentStart": 0, "end": 0, - "raw": "60", + "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 60.0, + "value": 2.0, "suffix": "None" } - } - }, - { - "commentStart": 1440, - "end": 0, - "key": { - "commentStart": 1440, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" }, "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1445, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "left": { - "commentStart": 1445, + "name": { + "commentStart": 0, "end": 0, - "left": { - "abs_path": false, - "commentStart": 1445, - "end": 0, - "name": { - "commentStart": 1445, - "end": 0, - "name": "wallsWidth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "/", - "right": { - "commentStart": 1458, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, + "name": "wallThickness", "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "commentStart": 1462, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 1462, - "end": 0, - "name": { - "commentStart": 1462, - "end": 0, - "name": "wallThickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "/", - "right": { - "commentStart": 1478, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "Identifier" }, + "path": [], "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1488, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "Name", + "type": "Name" + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1398, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1398, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -2283,18 +2176,19 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1398, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1502, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2303,10 +2197,10 @@ description: Result of parsing poopy-shoe.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 1512, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1512, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -2317,7 +2211,7 @@ description: Result of parsing poopy-shoe.kcl "type": "Name", "type": "Name" }, - "commentStart": 1511, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2328,10 +2222,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 1496, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1496, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2341,7 +2235,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1496, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2351,104 +2245,82 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "commentStart": 1546, - "end": 0, - "properties": [ - { - "commentStart": 1548, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1548, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "180", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1556, - "end": 0, - "left": { - "commentStart": 1556, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, - "operator": "-", - "right": { - "commentStart": 1562, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "value": 180.0, + "suffix": "None" } }, - { - "commentStart": 1566, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1566, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, + "raw": "60", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "abs_path": false, - "commentStart": 1571, - "end": 0, - "name": { - "commentStart": 1571, - "end": 0, - "name": "wallThickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "value": 60.0, + "suffix": "None" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 1588, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1532, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1532, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -2456,18 +2328,19 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1532, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1602, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -2475,10 +2348,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 1616, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1616, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -2493,10 +2366,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 1596, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1596, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2506,7 +2379,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1596, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2518,14 +2391,14 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 1635, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1649, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2540,10 +2413,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 1629, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1629, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2553,7 +2426,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1629, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2565,7 +2438,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 1663, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -2575,10 +2448,10 @@ description: Result of parsing poopy-shoe.kcl "arguments": [ { "abs_path": false, - "commentStart": 1685, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1685, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -2592,10 +2465,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 1677, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1677, + "commentStart": 0, "end": 0, "name": "segEndY", "start": 0, @@ -2605,7 +2478,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1677, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2615,10 +2488,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 1657, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1657, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2628,7 +2501,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1657, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2638,100 +2511,78 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "commentStart": 1712, - "end": 0, - "properties": [ - { - "commentStart": 1714, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1714, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "180", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1722, - "end": 0, - "left": { - "commentStart": 1722, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, - "operator": "-", - "right": { - "commentStart": 1728, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "value": 180.0, + "suffix": "None" } }, - { - "commentStart": 1732, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1732, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, + "raw": "60", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1737, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } + "value": 60.0, + "suffix": "None" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 1742, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } } ], "callee": { "abs_path": false, - "commentStart": 1698, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1698, + "commentStart": 0, "end": 0, - "name": "angledLineToY", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -2739,20 +2590,21 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1698, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [], "callee": { "abs_path": false, - "commentStart": 1750, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1750, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2762,7 +2614,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1750, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2773,21 +2625,21 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 1771, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1780, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1780, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1780, + "commentStart": 0, "end": 0, "name": "backLength", "start": 0, @@ -2801,10 +2653,10 @@ description: Result of parsing poopy-shoe.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1793, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1793, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -2823,10 +2675,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 1763, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1763, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2836,7 +2688,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 1763, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2844,7 +2696,7 @@ description: Result of parsing poopy-shoe.kcl "unlabeled": null } ], - "commentStart": 1118, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2860,507 +2712,485 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 1800, + "commentStart": 0, "declaration": { - "commentStart": 1802, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1802, + "commentStart": 0, "end": 0, "name": "customPlane", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 1816, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1820, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1820, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1828, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1834, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1834, + "commentStart": 0, "end": 0, - "name": "origin", + "name": "x", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1843, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 1851, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "argument": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1851, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1855, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1864, - "end": 0, - "key": { - "commentStart": 1864, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 1870, + "name": { + "commentStart": 0, "end": 0, - "left": { - "commentStart": 1870, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 1870, - "end": 0, - "name": { - "commentStart": 1870, - "end": 0, - "name": "wallsWidth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "/", - "right": { - "commentStart": 1883, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "-", - "right": { - "commentStart": 1888, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 1888, - "end": 0, - "name": { - "commentStart": 1888, - "end": 0, - "name": "wallThickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "/", - "right": { - "commentStart": 1904, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, + "name": "wallsWidth", "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "Identifier" }, - "commentStart": 1868, - "end": 0, - "operator": "-", + "path": [], "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } + "type": "Name", + "type": "Name" + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" }, - { - "commentStart": 1915, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1915, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1919, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - } - }, - { - "commentStart": 1932, - "end": 0, - "key": { - "commentStart": 1932, - "end": 0, - "name": "xAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1940, - "end": 0, - "properties": [ - { - "commentStart": 1942, - "end": 0, - "key": { - "commentStart": 1942, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1946, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1949, - "end": 0, - "key": { - "commentStart": 1949, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1953, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1956, - "end": 0, - "key": { - "commentStart": 1956, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1960, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - } - }, - { - "commentStart": 1969, - "end": 0, - "key": { - "commentStart": 1969, - "end": 0, - "name": "yAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1977, - "end": 0, - "properties": [ - { - "commentStart": 1979, - "end": 0, - "key": { - "commentStart": 1979, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1983, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1986, - "end": 0, - "key": { - "commentStart": 1986, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1990, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1993, - "end": 0, - "key": { - "commentStart": 1993, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1997, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - } - }, - { - "commentStart": 2006, - "end": 0, - "key": { - "commentStart": 2006, - "end": 0, - "name": "zAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2014, - "end": 0, - "properties": [ - { - "commentStart": 2016, - "end": 0, - "key": { - "commentStart": 2016, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2020, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 2023, - "end": 0, - "key": { - "commentStart": 2023, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 2028, + "name": { + "commentStart": 0, "end": 0, - "raw": "1", + "name": "wallThickness", "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } + "type": "Identifier" }, - "commentStart": 2027, - "end": 0, - "operator": "-", + "path": [], "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - }, - { - "commentStart": 2031, - "end": 0, - "key": { - "commentStart": 2031, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2035, + "operator": "/", + "right": { + "commentStart": 0, "end": 0, - "raw": "0", + "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 0.0, + "value": 2.0, "suffix": "None" } - } - } - ], + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "xAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } } } ], @@ -3384,12 +3214,12 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 2045, + "commentStart": 0, "declaration": { - "commentStart": 2045, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2045, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -3401,10 +3231,10 @@ description: Result of parsing poopy-shoe.kcl "arguments": [ { "abs_path": false, - "commentStart": 2071, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2071, + "commentStart": 0, "end": 0, "name": "customPlane", "start": 0, @@ -3418,10 +3248,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 2057, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2057, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -3431,7 +3261,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2057, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3440,10 +3270,10 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "commentStart": 2104, + "commentStart": 0, "elements": [ { - "commentStart": 2105, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3455,7 +3285,7 @@ description: Result of parsing poopy-shoe.kcl } }, { - "commentStart": 2108, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3473,7 +3303,7 @@ description: Result of parsing poopy-shoe.kcl "type": "ArrayExpression" }, { - "commentStart": 2112, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3482,10 +3312,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 2089, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2089, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -3495,214 +3325,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2089, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2134, - "end": 0, - "properties": [ - { - "commentStart": 2136, - "end": 0, - "key": { - "commentStart": 2136, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2145, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - } - }, - { - "commentStart": 2149, - "end": 0, - "key": { - "commentStart": 2149, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 2158, - "end": 0, - "name": { - "commentStart": 2158, - "end": 0, - "name": "height", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 2168, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2120, - "end": 0, - "name": { - "commentStart": 2120, - "end": 0, - "name": "tangentialArc", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2120, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2190, - "end": 0, - "properties": [ - { - "commentStart": 2192, - "end": 0, - "key": { - "commentStart": 2192, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2200, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - } - }, - { - "commentStart": 2204, - "end": 0, - "key": { - "commentStart": 2204, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2209, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 2214, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2176, - "end": 0, - "name": { - "commentStart": 2176, - "end": 0, - "name": "angledLineToY", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2176, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [], - "callee": { - "abs_path": false, - "commentStart": 2222, - "end": 0, - "name": { - "commentStart": 2222, - "end": 0, - "name": "close", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2222, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3713,7 +3336,172 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 2243, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "60", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 60.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "height", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "60", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 60.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "close", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3721,10 +3509,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 2252, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2252, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -3739,10 +3527,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 2235, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2235, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3752,7 +3540,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2235, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3760,13 +3548,13 @@ description: Result of parsing poopy-shoe.kcl "unlabeled": null } ], - "commentStart": 2057, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "5": [ { - "commentStart": 2266, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3794,12 +3582,12 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 2309, + "commentStart": 0, "declaration": { - "commentStart": 2309, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2309, + "commentStart": 0, "end": 0, "name": "sketch004", "start": 0, @@ -3810,37 +3598,38 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 2335, - "end": 0, - "name": { - "commentStart": 2335, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "sketch002", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 2346, - "end": 0, - "raw": "'END'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 2321, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2321, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -3850,19 +3639,35 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2321, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "sketch002", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 2373, + "commentStart": 0, "elements": [ { - "commentStart": 2374, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3874,7 +3679,7 @@ description: Result of parsing poopy-shoe.kcl } }, { - "commentStart": 2377, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3892,7 +3697,7 @@ description: Result of parsing poopy-shoe.kcl "type": "ArrayExpression" }, { - "commentStart": 2381, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3901,10 +3706,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 2358, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2358, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -3914,7 +3719,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2358, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3925,7 +3730,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 2395, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -3933,10 +3738,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 2409, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2409, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -3951,10 +3756,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 2389, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2389, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -3964,7 +3769,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2389, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3976,7 +3781,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 2428, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -3984,10 +3789,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 2442, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2442, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -4002,10 +3807,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 2422, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2422, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -4015,7 +3820,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2422, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4027,7 +3832,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 2468, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -4037,10 +3842,10 @@ description: Result of parsing poopy-shoe.kcl "arguments": [ { "abs_path": false, - "commentStart": 2490, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2490, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -4054,10 +3859,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 2482, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2482, + "commentStart": 0, "end": 0, "name": "segEndY", "start": 0, @@ -4067,7 +3872,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2482, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4077,10 +3882,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 2462, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2462, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -4090,7 +3895,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2462, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4100,168 +3905,146 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "commentStart": 2517, - "end": 0, - "properties": [ - { - "commentStart": 2526, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 2526, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "180", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 2534, - "end": 0, - "left": { - "commentStart": 2534, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, - "operator": "-", - "right": { - "commentStart": 2540, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "value": 180.0, + "suffix": "None" } }, - { - "commentStart": 2551, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 2551, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, + "raw": "60", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 2556, - "end": 0, - "left": { - "commentStart": 2556, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 2556, - "end": 0, - "name": { - "commentStart": 2556, - "end": 0, - "name": "wallsWidth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "/", - "right": { - "commentStart": 2569, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "-", - "right": { - "commentStart": 2574, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 2574, - "end": 0, - "name": { - "commentStart": 2574, - "end": 0, - "name": "wallThickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "/", - "right": { - "commentStart": 2590, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "value": 60.0, + "suffix": "None" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 2601, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallsWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "-", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 2503, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2503, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -4269,18 +4052,19 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2503, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2615, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4288,10 +4072,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 2624, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2624, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -4306,10 +4090,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 2609, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2609, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -4319,7 +4103,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2609, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4329,108 +4113,86 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "commentStart": 2658, - "end": 0, - "properties": [ - { - "commentStart": 2660, - "end": 0, - "key": { - "commentStart": 2660, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 2668, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - } - }, - { - "commentStart": 2672, - "end": 0, - "key": { - "commentStart": 2672, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "arguments": [ - { - "abs_path": false, - "commentStart": 2685, - "end": 0, - "name": { - "commentStart": 2685, - "end": 0, - "name": "seg01", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2677, - "end": 0, - "name": { - "commentStart": 2677, - "end": 0, - "name": "segEndY", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2677, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "60", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 60.0, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 2695, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "seg01", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segEndY", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 2644, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2644, + "commentStart": 0, "end": 0, - "name": "angledLineToY", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -4438,18 +4200,19 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2644, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2709, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -4457,10 +4220,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 2723, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2723, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -4475,10 +4238,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 2703, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2703, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -4488,7 +4251,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2703, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4500,7 +4263,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 2742, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4508,10 +4271,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 2751, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2751, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -4526,10 +4289,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 2736, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2736, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -4539,306 +4302,314 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2736, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, - { - "arguments": [ - { - "commentStart": 2787, - "elements": [ - { - "commentStart": 2797, - "end": 0, - "left": { - "commentStart": 2797, - "end": 0, - "left": { - "commentStart": 2797, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 2797, - "end": 0, - "name": { - "commentStart": 2797, - "end": 0, - "name": "frontLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "-", - "right": { - "abs_path": false, - "commentStart": 2811, - "end": 0, - "name": { - "commentStart": 2811, - "end": 0, - "name": "wallsWidth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "/", - "right": { - "commentStart": 2825, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "abs_path": false, - "commentStart": 2829, - "end": 0, - "name": { - "commentStart": 2829, - "end": 0, - "name": "wallsWidth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "commentStart": 2848, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 2848, - "end": 0, - "name": { - "commentStart": 2848, - "end": 0, - "name": "height", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "-", - "right": { - "commentStart": 2859, - "end": 0, - "left": { - "commentStart": 2859, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 2859, - "end": 0, - "name": { - "commentStart": 2859, - "end": 0, - "name": "height", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "-", - "right": { - "abs_path": false, - "commentStart": 2868, - "end": 0, - "name": { - "commentStart": 2868, - "end": 0, - "name": "exitHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "/", - "right": { - "commentStart": 2882, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2893, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2771, - "end": 0, - "name": { - "commentStart": 2771, - "end": 0, - "name": "tangentialArcTo", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2771, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2917, - "elements": [ - { - "abs_path": false, - "commentStart": 2918, - "end": 0, - "name": { - "commentStart": 2918, - "end": 0, - "name": "frontLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 2931, - "end": 0, - "name": { - "commentStart": 2931, - "end": 0, - "name": "exitHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2944, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2901, - "end": 0, - "name": { - "commentStart": 2901, - "end": 0, - "name": "tangentialArcTo", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2901, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2958, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2972, + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "frontLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallsWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallsWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "height", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "height", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "exitHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "frontLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "exitHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4853,10 +4624,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 2952, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2952, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -4866,7 +4637,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2952, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4878,14 +4649,14 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 2986, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2992, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -4896,10 +4667,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 2980, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2980, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -4909,7 +4680,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 2980, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4921,7 +4692,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 3013, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4929,10 +4700,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 3022, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3022, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -4947,10 +4718,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 3005, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3005, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -4960,7 +4731,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3005, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4968,7 +4739,7 @@ description: Result of parsing poopy-shoe.kcl "unlabeled": null } ], - "commentStart": 2321, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -4984,511 +4755,489 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 3036, + "commentStart": 0, "declaration": { - "commentStart": 3038, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3038, + "commentStart": 0, "end": 0, "name": "customPlane2", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 3053, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 3057, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3057, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3065, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 3071, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3071, + "commentStart": 0, "end": 0, - "name": "origin", + "name": "x", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3080, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 3088, + "left": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 3088, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, + "raw": "1", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 3092, - "end": 0, - "left": { - "argument": { - "commentStart": 3093, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - "commentStart": 3092, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - "operator": "*", - "right": { - "commentStart": 3098, - "end": 0, - "left": { - "commentStart": 3098, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 3098, - "end": 0, - "name": { - "commentStart": 3098, - "end": 0, - "name": "backLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "-", - "right": { - "abs_path": false, - "commentStart": 3111, - "end": 0, - "name": { - "commentStart": 3111, - "end": 0, - "name": "height", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "abs_path": false, - "commentStart": 3120, - "end": 0, - "name": { - "commentStart": 3120, - "end": 0, - "name": "wallsWidth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "value": 1.0, + "suffix": "None" } }, - { - "commentStart": 3139, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 3139, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "y", + "name": { + "commentStart": 0, + "end": 0, + "name": "backLength", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "height", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" }, "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3143, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } + "type": "BinaryExpression", + "type": "BinaryExpression" }, - { - "commentStart": 3152, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 3152, + "name": { + "commentStart": 0, "end": 0, - "name": "z", + "name": "wallsWidth", "start": 0, "type": "Identifier" }, + "path": [], "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3156, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - } - ], + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "BinaryExpression", + "type": "BinaryExpression" } }, { - "commentStart": 3169, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3169, + "commentStart": 0, "end": 0, - "name": "xAxis", + "name": "y", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3177, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 3179, - "end": 0, - "key": { - "commentStart": 3179, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3183, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 3186, - "end": 0, - "key": { - "commentStart": 3186, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 3191, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - "commentStart": 3190, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - }, - { - "commentStart": 3194, - "end": 0, - "key": { - "commentStart": 3194, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3198, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - } - ], + "raw": "0", "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } } }, { - "commentStart": 3207, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3207, + "commentStart": 0, "end": 0, - "name": "yAxis", + "name": "z", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3215, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 3217, - "end": 0, - "key": { - "commentStart": 3217, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3221, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 3224, - "end": 0, - "key": { - "commentStart": 3224, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3228, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 3231, - "end": 0, - "key": { - "commentStart": 3231, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3235, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - } - ], + "raw": "0", "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "xAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } } }, { - "commentStart": 3244, + "commentStart": 0, "end": 0, "key": { - "commentStart": 3244, + "commentStart": 0, "end": 0, - "name": "zAxis", + "name": "y", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 3252, - "end": 0, - "properties": [ - { - "commentStart": 3254, - "end": 0, - "key": { - "commentStart": 3254, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3258, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - }, - { - "commentStart": 3261, - "end": 0, - "key": { - "commentStart": 3261, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3265, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 3268, - "end": 0, - "key": { - "commentStart": 3268, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 3272, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } + "argument": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" } - ], + }, + "commentStart": 0, + "end": 0, + "operator": "-", "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } } } ], @@ -5512,12 +5261,12 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 3282, + "commentStart": 0, "declaration": { - "commentStart": 3282, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3282, + "commentStart": 0, "end": 0, "name": "sketch005", "start": 0, @@ -5529,10 +5278,10 @@ description: Result of parsing poopy-shoe.kcl "arguments": [ { "abs_path": false, - "commentStart": 3308, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3308, + "commentStart": 0, "end": 0, "name": "customPlane2", "start": 0, @@ -5546,10 +5295,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 3294, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3294, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -5559,7 +5308,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3294, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5568,10 +5317,10 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "commentStart": 3342, + "commentStart": 0, "elements": [ { - "commentStart": 3343, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5583,7 +5332,7 @@ description: Result of parsing poopy-shoe.kcl } }, { - "commentStart": 3346, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -5601,7 +5350,7 @@ description: Result of parsing poopy-shoe.kcl "type": "ArrayExpression" }, { - "commentStart": 3350, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -5610,10 +5359,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 3327, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3327, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -5623,7 +5372,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3327, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -5634,7 +5383,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 3364, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -5642,10 +5391,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 3378, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3378, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -5660,10 +5409,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 3358, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3358, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -5673,7 +5422,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3358, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5685,7 +5434,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 3397, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -5693,10 +5442,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 3411, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3411, + "commentStart": 0, "end": 0, "name": "wallsWidth", "start": 0, @@ -5711,10 +5460,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 3391, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3391, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -5724,306 +5473,314 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3391, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, - { - "arguments": [ - { - "commentStart": 3444, - "elements": [ - { - "commentStart": 3454, - "end": 0, - "left": { - "commentStart": 3454, - "end": 0, - "left": { - "commentStart": 3454, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 3454, - "end": 0, - "name": { - "commentStart": 3454, - "end": 0, - "name": "frontLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "-", - "right": { - "abs_path": false, - "commentStart": 3468, - "end": 0, - "name": { - "commentStart": 3468, - "end": 0, - "name": "wallsWidth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "/", - "right": { - "commentStart": 3482, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "abs_path": false, - "commentStart": 3486, - "end": 0, - "name": { - "commentStart": 3486, - "end": 0, - "name": "wallsWidth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "commentStart": 3505, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 3505, - "end": 0, - "name": { - "commentStart": 3505, - "end": 0, - "name": "height", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "-", - "right": { - "commentStart": 3516, - "end": 0, - "left": { - "commentStart": 3516, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 3516, - "end": 0, - "name": { - "commentStart": 3516, - "end": 0, - "name": "height", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "-", - "right": { - "abs_path": false, - "commentStart": 3525, - "end": 0, - "name": { - "commentStart": 3525, - "end": 0, - "name": "exitHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "/", - "right": { - "commentStart": 3539, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 3550, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 3428, - "end": 0, - "name": { - "commentStart": 3428, - "end": 0, - "name": "tangentialArcTo", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 3428, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 3574, - "elements": [ - { - "abs_path": false, - "commentStart": 3575, - "end": 0, - "name": { - "commentStart": 3575, - "end": 0, - "name": "frontLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 3588, - "end": 0, - "name": { - "commentStart": 3588, - "end": 0, - "name": "exitHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 3601, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 3558, - "end": 0, - "name": { - "commentStart": 3558, - "end": 0, - "name": "tangentialArcTo", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 3558, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 3615, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3629, + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "frontLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallsWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wallsWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "height", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "height", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "exitHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "frontLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "exitHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6038,14 +5795,14 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 3632, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3638, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -6056,10 +5813,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 3609, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3609, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -6069,7 +5826,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3609, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6080,10 +5837,10 @@ description: Result of parsing poopy-shoe.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 3651, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3651, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -6093,7 +5850,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3651, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6104,7 +5861,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 3672, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6112,10 +5869,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 3681, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3681, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -6130,10 +5887,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 3664, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3664, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -6143,7 +5900,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3664, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6151,7 +5908,7 @@ description: Result of parsing poopy-shoe.kcl "unlabeled": null } ], - "commentStart": 3294, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -6167,12 +5924,12 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 3695, + "commentStart": 0, "declaration": { - "commentStart": 3697, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3697, + "commentStart": 0, "end": 0, "name": "sketch006", "start": 0, @@ -6183,44 +5940,38 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 3723, - "end": 0, - "name": { - "commentStart": 3723, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "sketch005", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 3734, - "end": 0, - "name": { - "commentStart": 3734, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg03", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg03", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 3709, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3709, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -6230,19 +5981,35 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3709, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "sketch005", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 3761, + "commentStart": 0, "elements": [ { - "commentStart": 3762, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6254,11 +6021,11 @@ description: Result of parsing poopy-shoe.kcl } }, { - "commentStart": 3765, + "commentStart": 0, "end": 0, "left": { "argument": { - "commentStart": 3766, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -6269,7 +6036,7 @@ description: Result of parsing poopy-shoe.kcl "suffix": "None" } }, - "commentStart": 3765, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6278,14 +6045,14 @@ description: Result of parsing poopy-shoe.kcl }, "operator": "*", "right": { - "commentStart": 3771, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3771, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3771, + "commentStart": 0, "end": 0, "name": "backLength", "start": 0, @@ -6299,10 +6066,10 @@ description: Result of parsing poopy-shoe.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 3784, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3784, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -6328,7 +6095,7 @@ description: Result of parsing poopy-shoe.kcl "type": "ArrayExpression" }, { - "commentStart": 3794, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6337,10 +6104,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 3746, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3746, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -6350,7 +6117,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3746, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6361,7 +6128,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 3808, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -6370,10 +6137,10 @@ description: Result of parsing poopy-shoe.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 3823, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3823, + "commentStart": 0, "end": 0, "name": "exitHeight", "start": 0, @@ -6384,7 +6151,7 @@ description: Result of parsing poopy-shoe.kcl "type": "Name", "type": "Name" }, - "commentStart": 3822, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6395,10 +6162,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 3802, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3802, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -6408,7 +6175,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3802, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6420,7 +6187,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 3846, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6429,10 +6196,10 @@ description: Result of parsing poopy-shoe.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 3856, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3856, + "commentStart": 0, "end": 0, "name": "wallsWidth", "start": 0, @@ -6443,7 +6210,7 @@ description: Result of parsing poopy-shoe.kcl "type": "Name", "type": "Name" }, - "commentStart": 3855, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6454,10 +6221,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 3840, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3840, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -6467,7 +6234,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3840, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6479,14 +6246,14 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 3879, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3893, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6501,10 +6268,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 3873, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3873, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -6514,7 +6281,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3873, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6525,10 +6292,10 @@ description: Result of parsing poopy-shoe.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 3901, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3901, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -6538,7 +6305,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3901, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6549,7 +6316,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 3922, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -6557,10 +6324,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 3931, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3931, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -6575,10 +6342,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 3914, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3914, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -6588,7 +6355,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3914, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6596,7 +6363,7 @@ description: Result of parsing poopy-shoe.kcl "unlabeled": null } ], - "commentStart": 3709, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -6612,12 +6379,12 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 3945, + "commentStart": 0, "declaration": { - "commentStart": 3947, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3947, + "commentStart": 0, "end": 0, "name": "sketch007", "start": 0, @@ -6628,37 +6395,38 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 3973, - "end": 0, - "name": { - "commentStart": 3973, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "sketch004", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 3984, - "end": 0, - "raw": "'END'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 3959, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3959, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -6668,19 +6436,35 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3959, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "sketch004", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 4011, + "commentStart": 0, "elements": [ { - "commentStart": 4012, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6692,7 +6476,7 @@ description: Result of parsing poopy-shoe.kcl } }, { - "commentStart": 4015, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6710,7 +6494,7 @@ description: Result of parsing poopy-shoe.kcl "type": "ArrayExpression" }, { - "commentStart": 4019, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -6719,10 +6503,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 3996, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3996, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -6732,7 +6516,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 3996, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6743,7 +6527,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 4033, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -6751,10 +6535,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 4047, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4047, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -6769,10 +6553,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 4027, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4027, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -6782,7 +6566,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 4027, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6794,7 +6578,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 4073, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -6802,10 +6586,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 4087, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4087, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -6820,10 +6604,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 4067, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4067, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -6833,7 +6617,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 4067, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6845,14 +6629,14 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 4106, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4120, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -6867,10 +6651,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 4100, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4100, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -6880,7 +6664,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 4100, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6891,10 +6675,10 @@ description: Result of parsing poopy-shoe.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 4128, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4128, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -6904,7 +6688,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 4128, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -6915,21 +6699,21 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 4149, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4158, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4158, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4158, + "commentStart": 0, "end": 0, "name": "wallsWidth", "start": 0, @@ -6942,10 +6726,10 @@ description: Result of parsing poopy-shoe.kcl }, "operator": "-", "right": { - "commentStart": 4172, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4172, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -6959,10 +6743,10 @@ description: Result of parsing poopy-shoe.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4176, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4176, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -6985,10 +6769,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 4141, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4141, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -6998,7 +6782,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 4141, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7006,7 +6790,7 @@ description: Result of parsing poopy-shoe.kcl "unlabeled": null } ], - "commentStart": 3959, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -7022,203 +6806,87 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 4191, + "commentStart": 0, "declaration": { - "commentStart": 4193, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4193, + "commentStart": 0, "end": 0, "name": "customPlane3", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 4208, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 4212, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4212, + "commentStart": 0, "end": 0, - "name": "plane", + "name": "origin", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4220, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 4226, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4226, + "commentStart": 0, "end": 0, - "name": "origin", + "name": "x", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4235, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 4243, + "left": { + "argument": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 4243, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, + "raw": "1", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 4247, - "end": 0, - "left": { - "argument": { - "commentStart": 4248, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - }, - "commentStart": 4247, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - "operator": "*", - "right": { - "commentStart": 4253, - "end": 0, - "left": { - "commentStart": 4253, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 4253, - "end": 0, - "name": { - "commentStart": 4253, - "end": 0, - "name": "backLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "-", - "right": { - "abs_path": false, - "commentStart": 4266, - "end": 0, - "name": { - "commentStart": 4266, - "end": 0, - "name": "height", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "abs_path": false, - "commentStart": 4275, - "end": 0, - "name": { - "commentStart": 4275, - "end": 0, - "name": "wallsWidth", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "value": 1.0, + "suffix": "None" } }, - { - "commentStart": 4294, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 4294, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4298, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 4307, - "end": 0, - "key": { - "commentStart": 4307, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { + "left": { "abs_path": false, - "commentStart": 4311, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4311, + "commentStart": 0, "end": 0, - "name": "wallThickness", + "name": "backLength", "start": 0, "type": "Identifier" }, @@ -7226,311 +6894,405 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name", "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - } - }, - { - "commentStart": 4336, - "end": 0, - "key": { - "commentStart": 4336, - "end": 0, - "name": "xAxis", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4344, - "end": 0, - "properties": [ - { - "commentStart": 4346, - "end": 0, - "key": { - "commentStart": 4346, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4350, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 4353, - "end": 0, - "key": { - "commentStart": 4353, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 4358, + "name": { + "commentStart": 0, "end": 0, - "raw": "1", + "name": "height", "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } + "type": "Identifier" }, - "commentStart": 4357, - "end": 0, - "operator": "-", + "path": [], "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" }, - { - "commentStart": 4361, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 4361, + "name": { + "commentStart": 0, "end": 0, - "name": "z", + "name": "wallsWidth", "start": 0, "type": "Identifier" }, + "path": [], "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4365, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - } - ], + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "BinaryExpression", + "type": "BinaryExpression" } }, { - "commentStart": 4374, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4374, + "commentStart": 0, "end": 0, - "name": "yAxis", + "name": "y", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4382, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 4384, - "end": 0, - "key": { - "commentStart": 4384, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4388, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - }, - { - "commentStart": 4391, - "end": 0, - "key": { - "commentStart": 4391, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4395, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 4398, - "end": 0, - "key": { - "commentStart": 4398, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4402, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - } - ], + "raw": "0", "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } } }, { - "commentStart": 4411, + "commentStart": 0, "end": 0, "key": { - "commentStart": 4411, + "commentStart": 0, "end": 0, - "name": "zAxis", + "name": "z", "start": 0, "type": "Identifier" }, "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 4419, + "abs_path": false, + "commentStart": 0, "end": 0, - "properties": [ - { - "commentStart": 4421, - "end": 0, - "key": { - "commentStart": 4421, - "end": 0, - "name": "x", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4425, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 4428, - "end": 0, - "key": { - "commentStart": 4428, - "end": 0, - "name": "y", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4432, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - } - }, - { - "commentStart": 4435, - "end": 0, - "key": { - "commentStart": 4435, - "end": 0, - "name": "z", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 4439, - "end": 0, - "raw": "1", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 1.0, - "suffix": "None" - } - } - } - ], + "name": { + "commentStart": 0, + "end": 0, + "name": "wallThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Name", + "type": "Name" + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "xAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "yAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + } + ], + "start": 0, + "type": "ObjectExpression", + "type": "ObjectExpression" + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "zAxis", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "properties": [ + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "x", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "y", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "commentStart": 0, + "end": 0, + "key": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "start": 0, + "type": "ObjectProperty", + "value": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } } } ], @@ -7554,12 +7316,12 @@ description: Result of parsing poopy-shoe.kcl "type": "VariableDeclaration" }, { - "commentStart": 4448, + "commentStart": 0, "declaration": { - "commentStart": 4450, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4450, + "commentStart": 0, "end": 0, "name": "sketch008", "start": 0, @@ -7571,10 +7333,10 @@ description: Result of parsing poopy-shoe.kcl "arguments": [ { "abs_path": false, - "commentStart": 4476, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4476, + "commentStart": 0, "end": 0, "name": "customPlane3", "start": 0, @@ -7588,10 +7350,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 4462, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4462, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -7601,7 +7363,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 4462, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7610,14 +7372,14 @@ description: Result of parsing poopy-shoe.kcl { "arguments": [ { - "commentStart": 4510, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 4511, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4511, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -7630,10 +7392,10 @@ description: Result of parsing poopy-shoe.kcl }, { "abs_path": false, - "commentStart": 4526, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4526, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -7651,7 +7413,7 @@ description: Result of parsing poopy-shoe.kcl "type": "ArrayExpression" }, { - "commentStart": 4542, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -7660,10 +7422,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 4495, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4495, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -7673,7 +7435,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 4495, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7684,7 +7446,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 4556, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -7692,10 +7454,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 4570, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4570, + "commentStart": 0, "end": 0, "name": "frontLength", "start": 0, @@ -7710,10 +7472,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 4550, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4550, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -7723,7 +7485,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 4550, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7735,21 +7497,21 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 4594, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4603, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4603, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4603, + "commentStart": 0, "end": 0, "name": "wallsWidth", "start": 0, @@ -7762,10 +7524,10 @@ description: Result of parsing poopy-shoe.kcl }, "operator": "-", "right": { - "commentStart": 4617, + "commentStart": 0, "end": 0, "left": { - "commentStart": 4617, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -7779,10 +7541,10 @@ description: Result of parsing poopy-shoe.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 4621, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4621, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -7805,10 +7567,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 4588, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4588, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -7818,7 +7580,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 4588, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7830,7 +7592,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 4648, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -7838,10 +7600,10 @@ description: Result of parsing poopy-shoe.kcl }, "arg": { "abs_path": false, - "commentStart": 4662, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4662, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -7856,10 +7618,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 4642, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4642, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -7869,7 +7631,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 4642, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7880,10 +7642,10 @@ description: Result of parsing poopy-shoe.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 4682, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4682, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -7893,7 +7655,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 4682, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -7904,7 +7666,7 @@ description: Result of parsing poopy-shoe.kcl { "type": "LabeledArg", "label": { - "commentStart": 4703, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -7913,10 +7675,10 @@ description: Result of parsing poopy-shoe.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 4713, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4713, + "commentStart": 0, "end": 0, "name": "wallThickness", "start": 0, @@ -7927,7 +7689,7 @@ description: Result of parsing poopy-shoe.kcl "type": "Name", "type": "Name" }, - "commentStart": 4712, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7938,10 +7700,10 @@ description: Result of parsing poopy-shoe.kcl ], "callee": { "abs_path": false, - "commentStart": 4695, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4695, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -7951,7 +7713,7 @@ description: Result of parsing poopy-shoe.kcl "start": 0, "type": "Name" }, - "commentStart": 4695, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7959,7 +7721,7 @@ description: Result of parsing poopy-shoe.kcl "unlabeled": null } ], - "commentStart": 4462, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -7982,7 +7744,7 @@ description: Result of parsing poopy-shoe.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 92, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -7997,10 +7759,10 @@ description: Result of parsing poopy-shoe.kcl ], "properties": [ { - "commentStart": 101, + "commentStart": 0, "end": 0, "key": { - "commentStart": 101, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -8010,10 +7772,10 @@ description: Result of parsing poopy-shoe.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 121, + "commentStart": 0, "end": 0, "name": { - "commentStart": 121, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -8034,7 +7796,7 @@ description: Result of parsing poopy-shoe.kcl "nonCodeNodes": { "8": [ { - "commentStart": 1104, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -8045,7 +7807,7 @@ description: Result of parsing poopy-shoe.kcl ], "9": [ { - "commentStart": 1800, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -8056,7 +7818,7 @@ description: Result of parsing poopy-shoe.kcl ], "12": [ { - "commentStart": 3036, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -8067,7 +7829,7 @@ description: Result of parsing poopy-shoe.kcl ], "14": [ { - "commentStart": 3695, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -8078,7 +7840,7 @@ description: Result of parsing poopy-shoe.kcl ], "15": [ { - "commentStart": 3945, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -8089,7 +7851,7 @@ description: Result of parsing poopy-shoe.kcl ], "16": [ { - "commentStart": 4191, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -8100,7 +7862,7 @@ description: Result of parsing poopy-shoe.kcl ], "17": [ { - "commentStart": 4448, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -8112,7 +7874,7 @@ description: Result of parsing poopy-shoe.kcl }, "startNodes": [ { - "commentStart": 124, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/poopy-shoe/ops.snap b/rust/kcl-lib/tests/kcl_samples/poopy-shoe/ops.snap index a1fc60ee6..6f22758bf 100644 --- a/rust/kcl-lib/tests/kcl_samples/poopy-shoe/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/poopy-shoe/ops.snap @@ -5,7 +5,7 @@ description: Operations executed poopy-shoe.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -127,7 +127,7 @@ description: Operations executed poopy-shoe.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -174,180 +174,181 @@ description: Operations executed poopy-shoe.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { + "origin": { "type": "Object", "value": { - "origin": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": -1.4375, - "ty": { - "type": "Unknown" - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "xAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": -1.4375, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "yAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "xAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "z": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "zAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": -1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "yAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + } + }, + "zAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": -1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" } } } @@ -397,19 +398,10 @@ description: Operations executed poopy-shoe.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -417,7 +409,15 @@ description: Operations executed poopy-shoe.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -453,180 +453,181 @@ description: Operations executed poopy-shoe.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { + "origin": { "type": "Object", "value": { - "origin": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": -3.875, - "ty": { - "type": "Unknown" - } + "x": { + "type": "Number", + "value": -3.875, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "xAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": -1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "yAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "xAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "z": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "zAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": -1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "yAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + } + }, + "zAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" } } } @@ -676,16 +677,7 @@ description: Operations executed poopy-shoe.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg03", @@ -697,7 +689,15 @@ description: Operations executed poopy-shoe.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -733,19 +733,10 @@ description: Operations executed poopy-shoe.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -753,7 +744,15 @@ description: Operations executed poopy-shoe.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -762,7 +761,13 @@ description: Operations executed poopy-shoe.kcl "type": "Number", "value": 2.75, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -783,180 +788,181 @@ description: Operations executed poopy-shoe.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Object", "value": { - "plane": { + "origin": { "type": "Object", "value": { - "origin": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": -3.875, - "ty": { - "type": "Unknown" - } + "x": { + "type": "Number", + "value": -3.875, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.125, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "xAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": -1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "yAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "z": { + "type": "Number", + "value": 0.125, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "xAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "zAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": -1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "z": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "yAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + } + }, + "zAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" } } } diff --git a/rust/kcl-lib/tests/kcl_samples/poopy-shoe/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/poopy-shoe/program_memory.snap index 41a0bbfc0..eb341088a 100644 --- a/rust/kcl-lib/tests/kcl_samples/poopy-shoe/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/poopy-shoe/program_memory.snap @@ -19,176 +19,177 @@ description: Variables in memory after executing poopy-shoe.kcl "customPlane": { "type": "Object", "value": { - "plane": { + "origin": { "type": "Object", "value": { - "origin": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": -1.4375, - "ty": { - "type": "Unknown" - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "xAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": -1.4375, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "yAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "xAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "z": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "zAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": -1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "yAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + } + }, + "zAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": -1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" } } } @@ -199,176 +200,177 @@ description: Variables in memory after executing poopy-shoe.kcl "customPlane2": { "type": "Object", "value": { - "plane": { + "origin": { "type": "Object", "value": { - "origin": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": -3.875, - "ty": { - "type": "Unknown" - } + "x": { + "type": "Number", + "value": -3.875, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "xAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": -1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "yAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "xAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "z": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "zAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": -1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "yAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + } + }, + "zAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" } } } @@ -379,176 +381,177 @@ description: Variables in memory after executing poopy-shoe.kcl "customPlane3": { "type": "Object", "value": { - "plane": { + "origin": { "type": "Object", "value": { - "origin": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": -3.875, - "ty": { - "type": "Unknown" - } + "x": { + "type": "Number", + "value": -3.875, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.125, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "xAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": -1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } - }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "yAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "z": { + "type": "Number", + "value": 0.125, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "xAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "z": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" } } }, - "zAxis": { - "type": "Object", - "value": { - "x": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "y": { + "type": "Number", + "value": -1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "y": { - "type": "Number", - "value": 0.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" }, - "z": { - "type": "Number", - "value": 1.0, - "ty": { - "type": "Default", - "len": { - "type": "Inches" - }, - "angle": { - "type": "Degrees" - } - } + "angle": { + "type": "Degrees" + } + } + } + } + }, + "yAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + } + } + }, + "zAxis": { + "type": "Object", + "value": { + "x": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "y": { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, + "z": { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" } } } @@ -627,9 +630,9 @@ description: Variables in memory after executing poopy-shoe.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 495, - "end": 501, - "start": 495, + "commentStart": 501, + "end": 507, + "start": 501, "type": "TagDeclarator", "value": "seg01" }, @@ -746,9 +749,9 @@ description: Variables in memory after executing poopy-shoe.kcl 0.0 ], "tag": { - "commentStart": 495, - "end": 501, - "start": 495, + "commentStart": 501, + "end": 507, + "start": 501, "type": "TagDeclarator", "value": "seg01" }, @@ -979,22 +982,34 @@ description: Variables in memory after executing poopy-shoe.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1093,9 +1108,9 @@ description: Variables in memory after executing poopy-shoe.kcl 0.0 ], "tag": { - "commentStart": 495, - "end": 501, - "start": 495, + "commentStart": 501, + "end": 507, + "start": 501, "type": "TagDeclarator", "value": "seg01" }, @@ -1326,22 +1341,34 @@ description: Variables in memory after executing poopy-shoe.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1397,9 +1424,9 @@ description: Variables in memory after executing poopy-shoe.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1275, - "end": 1281, - "start": 1275, + "commentStart": 1268, + "end": 1274, + "start": 1268, "type": "TagDeclarator", "value": "seg02" }, @@ -1516,9 +1543,9 @@ description: Variables in memory after executing poopy-shoe.kcl 0.0 ], "tag": { - "commentStart": 1275, - "end": 1281, - "start": 1275, + "commentStart": 1268, + "end": 1274, + "start": 1268, "type": "TagDeclarator", "value": "seg02" }, @@ -1749,22 +1776,34 @@ description: Variables in memory after executing poopy-shoe.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1912,22 +1951,34 @@ description: Variables in memory after executing poopy-shoe.kcl "origin": { "x": 0.0, "y": -1.4375, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "units": { "type": "Inches" @@ -2054,9 +2105,9 @@ description: Variables in memory after executing poopy-shoe.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2992, - "end": 2998, - "start": 2992, + "commentStart": 2930, + "end": 2936, + "start": 2930, "type": "TagDeclarator", "value": "seg04" }, @@ -2296,9 +2347,9 @@ description: Variables in memory after executing poopy-shoe.kcl 0.0 ], "tag": { - "commentStart": 2992, - "end": 2998, - "start": 2992, + "commentStart": 2930, + "end": 2936, + "start": 2930, "type": "TagDeclarator", "value": "seg04" }, @@ -2320,17 +2371,26 @@ description: Variables in memory after executing poopy-shoe.kcl "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2349,9 +2409,9 @@ description: Variables in memory after executing poopy-shoe.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1275, - "end": 1281, - "start": 1275, + "commentStart": 1268, + "end": 1274, + "start": 1268, "type": "TagDeclarator", "value": "seg02" }, @@ -2468,9 +2528,9 @@ description: Variables in memory after executing poopy-shoe.kcl 0.0 ], "tag": { - "commentStart": 1275, - "end": 1281, - "start": 1275, + "commentStart": 1268, + "end": 1274, + "start": 1268, "type": "TagDeclarator", "value": "seg02" }, @@ -2701,22 +2761,34 @@ description: Variables in memory after executing poopy-shoe.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2841,9 +2913,9 @@ description: Variables in memory after executing poopy-shoe.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 3638, - "end": 3644, - "start": 3638, + "commentStart": 3562, + "end": 3568, + "start": 3562, "type": "TagDeclarator", "value": "seg03" }, @@ -2957,9 +3029,9 @@ description: Variables in memory after executing poopy-shoe.kcl 1.0 ], "tag": { - "commentStart": 3638, - "end": 3644, - "start": 3638, + "commentStart": 3562, + "end": 3568, + "start": 3562, "type": "TagDeclarator", "value": "seg03" }, @@ -3000,22 +3072,34 @@ description: Variables in memory after executing poopy-shoe.kcl "origin": { "x": -3.875, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "xAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "units": { "type": "Inches" @@ -3184,17 +3268,26 @@ description: Variables in memory after executing poopy-shoe.kcl "xAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "solid": { "type": "Solid", @@ -3234,9 +3327,9 @@ description: Variables in memory after executing poopy-shoe.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 3638, - "end": 3644, - "start": 3638, + "commentStart": 3562, + "end": 3568, + "start": 3562, "type": "TagDeclarator", "value": "seg03" }, @@ -3350,9 +3443,9 @@ description: Variables in memory after executing poopy-shoe.kcl 1.0 ], "tag": { - "commentStart": 3638, - "end": 3644, - "start": 3638, + "commentStart": 3562, + "end": 3568, + "start": 3562, "type": "TagDeclarator", "value": "seg03" }, @@ -3393,22 +3486,34 @@ description: Variables in memory after executing poopy-shoe.kcl "origin": { "x": -3.875, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "xAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "units": { "type": "Inches" @@ -3612,17 +3717,26 @@ description: Variables in memory after executing poopy-shoe.kcl "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3711,9 +3825,9 @@ description: Variables in memory after executing poopy-shoe.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2992, - "end": 2998, - "start": 2992, + "commentStart": 2930, + "end": 2936, + "start": 2930, "type": "TagDeclarator", "value": "seg04" }, @@ -3953,9 +4067,9 @@ description: Variables in memory after executing poopy-shoe.kcl 0.0 ], "tag": { - "commentStart": 2992, - "end": 2998, - "start": 2992, + "commentStart": 2930, + "end": 2936, + "start": 2930, "type": "TagDeclarator", "value": "seg04" }, @@ -3977,17 +4091,26 @@ description: Variables in memory after executing poopy-shoe.kcl "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -4006,9 +4129,9 @@ description: Variables in memory after executing poopy-shoe.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1275, - "end": 1281, - "start": 1275, + "commentStart": 1268, + "end": 1274, + "start": 1268, "type": "TagDeclarator", "value": "seg02" }, @@ -4125,9 +4248,9 @@ description: Variables in memory after executing poopy-shoe.kcl 0.0 ], "tag": { - "commentStart": 1275, - "end": 1281, - "start": 1275, + "commentStart": 1268, + "end": 1274, + "start": 1268, "type": "TagDeclarator", "value": "seg02" }, @@ -4358,22 +4481,34 @@ description: Variables in memory after executing poopy-shoe.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -4618,22 +4753,34 @@ description: Variables in memory after executing poopy-shoe.kcl "origin": { "x": -3.875, "y": 0.0, - "z": 0.125 + "z": 0.125, + "units": { + "type": "Inches" + } }, "xAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "yAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Inches" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Inches" + } }, "units": { "type": "Inches" diff --git a/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/artifact_commands.snap index 480854b6f..4c7094af7 100644 --- a/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/artifact_commands.snap @@ -492,7 +492,8 @@ description: Artifact commands router-template-cross-bar.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1033,7 +1034,8 @@ description: Artifact commands router-template-cross-bar.kcl "type": "extrude", "target": "[uuid]", "distance": 13.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1274,7 +1276,8 @@ description: Artifact commands router-template-cross-bar.kcl "type": "extrude", "target": "[uuid]", "distance": 13.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1515,7 +1518,8 @@ description: Artifact commands router-template-cross-bar.kcl "type": "extrude", "target": "[uuid]", "distance": 4.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/artifact_graph_flowchart.snap.md index 134685677..7d58c416d 100644 --- a/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/artifact_graph_flowchart.snap.md @@ -1,59 +1,59 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[535, 578, 0]"] - 3["Segment
[584, 637, 0]"] - 4["Segment
[643, 745, 0]"] - 5["Segment
[751, 804, 0]"] - 6["Segment
[810, 857, 0]"] - 7["Segment
[863, 958, 0]"] - 8["Segment
[964, 1035, 0]"] - 9["Segment
[1041, 1092, 0]"] - 10["Segment
[1098, 1151, 0]"] - 11["Segment
[1157, 1226, 0]"] - 12["Segment
[1232, 1268, 0]"] - 13["Segment
[1274, 1304, 0]"] - 14["Segment
[1310, 1340, 0]"] - 15["Segment
[1346, 1376, 0]"] - 16["Segment
[1382, 1412, 0]"] - 17["Segment
[1418, 1447, 0]"] - 18["Segment
[1453, 1483, 0]"] - 19["Segment
[1489, 1518, 0]"] - 20["Segment
[1524, 1553, 0]"] - 21["Segment
[1559, 1655, 0]"] - 22["Segment
[1661, 1717, 0]"] - 23["Segment
[1723, 1730, 0]"] + 2["Path
[538, 581, 0]"] + 3["Segment
[587, 640, 0]"] + 4["Segment
[646, 748, 0]"] + 5["Segment
[754, 807, 0]"] + 6["Segment
[813, 860, 0]"] + 7["Segment
[866, 961, 0]"] + 8["Segment
[967, 1038, 0]"] + 9["Segment
[1044, 1095, 0]"] + 10["Segment
[1101, 1154, 0]"] + 11["Segment
[1160, 1229, 0]"] + 12["Segment
[1235, 1271, 0]"] + 13["Segment
[1277, 1307, 0]"] + 14["Segment
[1313, 1343, 0]"] + 15["Segment
[1349, 1379, 0]"] + 16["Segment
[1385, 1415, 0]"] + 17["Segment
[1421, 1450, 0]"] + 18["Segment
[1456, 1486, 0]"] + 19["Segment
[1492, 1521, 0]"] + 20["Segment
[1527, 1556, 0]"] + 21["Segment
[1562, 1658, 0]"] + 22["Segment
[1664, 1720, 0]"] + 23["Segment
[1726, 1733, 0]"] 24[Solid2d] end subgraph path85 [Path] - 85["Path
[1885, 1929, 0]"] - 86["Segment
[1935, 1997, 0]"] - 87["Segment
[2003, 2116, 0]"] - 88["Segment
[2122, 2242, 0]"] - 89["Segment
[2248, 2304, 0]"] - 90["Segment
[2310, 2317, 0]"] + 85["Path
[1893, 1937, 0]"] + 86["Segment
[1943, 2023, 0]"] + 87["Segment
[2029, 2139, 0]"] + 88["Segment
[2145, 2262, 0]"] + 89["Segment
[2268, 2324, 0]"] + 90["Segment
[2330, 2337, 0]"] 91[Solid2d] end subgraph path107 [Path] - 107["Path
[2473, 2518, 0]"] - 108["Segment
[2524, 2584, 0]"] - 109["Segment
[2590, 2703, 0]"] - 110["Segment
[2709, 2829, 0]"] - 111["Segment
[2835, 2891, 0]"] - 112["Segment
[2897, 2904, 0]"] + 107["Path
[2498, 2543, 0]"] + 108["Segment
[2549, 2627, 0]"] + 109["Segment
[2633, 2743, 0]"] + 110["Segment
[2749, 2866, 0]"] + 111["Segment
[2872, 2928, 0]"] + 112["Segment
[2934, 2941, 0]"] 113[Solid2d] end subgraph path129 [Path] - 129["Path
[3058, 3103, 0]"] - 130["Segment
[3109, 3176, 0]"] - 131["Segment
[3182, 3295, 0]"] - 132["Segment
[3301, 3421, 0]"] - 133["Segment
[3427, 3483, 0]"] - 134["Segment
[3489, 3496, 0]"] + 129["Path
[3100, 3145, 0]"] + 130["Segment
[3151, 3236, 0]"] + 131["Segment
[3242, 3352, 0]"] + 132["Segment
[3358, 3475, 0]"] + 133["Segment
[3481, 3537, 0]"] + 134["Segment
[3543, 3550, 0]"] 135[Solid2d] end - 1["Plane
[512, 529, 0]"] - 25["Sweep Extrusion
[1773, 1803, 0]"] + 1["Plane
[515, 532, 0]"] + 25["Sweep Extrusion
[1776, 1806, 0]"] 26[Wall] 27[Wall] 28[Wall] @@ -113,7 +113,7 @@ flowchart LR 82["SweepEdge Adjacent"] 83["SweepEdge Opposite"] 84["SweepEdge Adjacent"] - 92["Sweep Extrusion
[2361, 2392, 0]"] + 92["Sweep Extrusion
[2381, 2412, 0]"] 93[Wall] 94[Wall] 95[Wall] @@ -128,7 +128,7 @@ flowchart LR 104["SweepEdge Adjacent"] 105["SweepEdge Opposite"] 106["SweepEdge Adjacent"] - 114["Sweep Extrusion
[2947, 2978, 0]"] + 114["Sweep Extrusion
[2984, 3015, 0]"] 115[Wall] 116[Wall] 117[Wall] @@ -143,7 +143,7 @@ flowchart LR 126["SweepEdge Adjacent"] 127["SweepEdge Opposite"] 128["SweepEdge Adjacent"] - 136["Sweep Extrusion
[3540, 3570, 0]"] + 136["Sweep Extrusion
[3594, 3624, 0]"] 137[Wall] 138[Wall] 139[Wall] @@ -158,9 +158,9 @@ flowchart LR 148["SweepEdge Adjacent"] 149["SweepEdge Opposite"] 150["SweepEdge Adjacent"] - 151["StartSketchOnFace
[1845, 1879, 0]"] - 152["StartSketchOnFace
[2433, 2467, 0]"] - 153["StartSketchOnFace
[3020, 3052, 0]"] + 151["StartSketchOnFace
[1848, 1887, 0]"] + 152["StartSketchOnFace
[2453, 2492, 0]"] + 153["StartSketchOnFace
[3057, 3094, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/ast.snap b/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/ast.snap index 72c267be6..c66f80207 100644 --- a/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing router-template-cross-bar.kcl "Ok": { "body": [ { - "commentStart": 131, + "commentStart": 0, "declaration": { - "commentStart": 154, + "commentStart": 0, "end": 0, "id": { - "commentStart": 154, + "commentStart": 0, "end": 0, "name": "routerDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 171, + "commentStart": 0, "end": 0, "raw": "12.7", "start": 0, @@ -42,79 +42,72 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 176, + "commentStart": 0, "declaration": { - "commentStart": 176, + "commentStart": 0, "end": 0, "id": { - "commentStart": 176, + "commentStart": 0, "end": 0, "name": "templateDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 195, - "end": 0, - "left": { - "commentStart": 195, - "end": 0, - "left": { - "commentStart": 195, + "arguments": [ + { + "commentStart": 0, "end": 0, - "raw": "11", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 11.0, - "suffix": "None" - } - }, - "operator": "/", - "right": { - "commentStart": 200, - "end": 0, - "raw": "16", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 16.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "*", - "right": { - "arguments": [], - "callee": { - "abs_path": false, - "commentStart": 205, - "end": 0, - "name": { - "commentStart": 205, + "left": { + "commentStart": 0, "end": 0, - "name": "inch", + "raw": "11", "start": 0, - "type": "Identifier" + "type": "Literal", + "type": "Literal", + "value": { + "value": 11.0, + "suffix": "None" + } + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "16", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 16.0, + "suffix": "None" + } }, - "path": [], "start": 0, - "type": "Name" - }, - "commentStart": 205, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "fromInches", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "Name" }, + "commentStart": 0, + "end": 0, "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "CallExpression", + "type": "CallExpression" }, "start": 0, "type": "VariableDeclarator" @@ -126,22 +119,22 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 212, + "commentStart": 0, "declaration": { - "commentStart": 212, + "commentStart": 0, "end": 0, "id": { - "commentStart": 212, + "commentStart": 0, "end": 0, "name": "slateWidthHalf", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 229, + "commentStart": 0, "end": 0, "left": { - "commentStart": 229, + "commentStart": 0, "end": 0, "raw": "41.5", "start": 0, @@ -154,7 +147,7 @@ description: Result of parsing router-template-cross-bar.kcl }, "operator": "/", "right": { - "commentStart": 236, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -179,22 +172,22 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 238, + "commentStart": 0, "declaration": { - "commentStart": 238, + "commentStart": 0, "end": 0, "id": { - "commentStart": 238, + "commentStart": 0, "end": 0, "name": "minClampingDistance", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 260, + "commentStart": 0, "end": 0, "left": { - "commentStart": 260, + "commentStart": 0, "end": 0, "raw": "50", "start": 0, @@ -207,7 +200,7 @@ description: Result of parsing router-template-cross-bar.kcl }, "operator": "+", "right": { - "commentStart": 265, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -232,19 +225,19 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 268, + "commentStart": 0, "declaration": { - "commentStart": 268, + "commentStart": 0, "end": 0, "id": { - "commentStart": 268, + "commentStart": 0, "end": 0, "name": "templateThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 288, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -265,19 +258,19 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 291, + "commentStart": 0, "declaration": { - "commentStart": 291, + "commentStart": 0, "end": 0, "id": { - "commentStart": 291, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 300, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -298,19 +291,19 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 303, + "commentStart": 0, "declaration": { - "commentStart": 303, + "commentStart": 0, "end": 0, "id": { - "commentStart": 303, + "commentStart": 0, "end": 0, "name": "depth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 311, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -331,32 +324,32 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 313, + "commentStart": 0, "declaration": { - "commentStart": 340, + "commentStart": 0, "end": 0, "id": { - "commentStart": 340, + "commentStart": 0, "end": 0, "name": "templateGap", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 355, + "commentStart": 0, "end": 0, "left": { - "commentStart": 355, + "commentStart": 0, "end": 0, "left": { - "commentStart": 355, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 355, + "commentStart": 0, "end": 0, "name": { - "commentStart": 355, + "commentStart": 0, "end": 0, "name": "templateDiameter", "start": 0, @@ -370,10 +363,10 @@ description: Result of parsing router-template-cross-bar.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 374, + "commentStart": 0, "end": 0, "name": { - "commentStart": 374, + "commentStart": 0, "end": 0, "name": "routerDiameter", "start": 0, @@ -390,7 +383,7 @@ description: Result of parsing router-template-cross-bar.kcl }, "operator": "/", "right": { - "commentStart": 392, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -407,7 +400,7 @@ description: Result of parsing router-template-cross-bar.kcl }, "operator": "-", "right": { - "commentStart": 396, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -437,29 +430,29 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 400, + "commentStart": 0, "declaration": { - "commentStart": 400, + "commentStart": 0, "end": 0, "id": { - "commentStart": 400, + "commentStart": 0, "end": 0, "name": "distanceToInsideEdge", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 423, + "commentStart": 0, "end": 0, "left": { - "commentStart": 423, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 423, + "commentStart": 0, "end": 0, "name": { - "commentStart": 423, + "commentStart": 0, "end": 0, "name": "slateWidthHalf", "start": 0, @@ -473,10 +466,10 @@ description: Result of parsing router-template-cross-bar.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 440, + "commentStart": 0, "end": 0, "name": { - "commentStart": 440, + "commentStart": 0, "end": 0, "name": "templateThickness", "start": 0, @@ -494,10 +487,10 @@ description: Result of parsing router-template-cross-bar.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 460, + "commentStart": 0, "end": 0, "name": { - "commentStart": 460, + "commentStart": 0, "end": 0, "name": "templateGap", "start": 0, @@ -522,12 +515,12 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 471, + "commentStart": 0, "declaration": { - "commentStart": 500, + "commentStart": 0, "end": 0, "id": { - "commentStart": 500, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -539,10 +532,10 @@ description: Result of parsing router-template-cross-bar.kcl "arguments": [ { "abs_path": false, - "commentStart": 526, + "commentStart": 0, "end": 0, "name": { - "commentStart": 526, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -556,10 +549,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 512, + "commentStart": 0, "end": 0, "name": { - "commentStart": 512, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -569,7 +562,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 512, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -578,10 +571,10 @@ description: Result of parsing router-template-cross-bar.kcl { "arguments": [ { - "commentStart": 550, + "commentStart": 0, "elements": [ { - "commentStart": 551, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -593,14 +586,14 @@ description: Result of parsing router-template-cross-bar.kcl } }, { - "commentStart": 554, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 554, + "commentStart": 0, "end": 0, "name": { - "commentStart": 554, + "commentStart": 0, "end": 0, "name": "depth", "start": 0, @@ -614,10 +607,10 @@ description: Result of parsing router-template-cross-bar.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 562, + "commentStart": 0, "end": 0, "name": { - "commentStart": 562, + "commentStart": 0, "end": 0, "name": "templateGap", "start": 0, @@ -639,7 +632,7 @@ description: Result of parsing router-template-cross-bar.kcl "type": "ArrayExpression" }, { - "commentStart": 576, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -648,10 +641,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 535, + "commentStart": 0, "end": 0, "name": { - "commentStart": 535, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -661,7 +654,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 535, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -672,21 +665,21 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 590, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 599, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 599, + "commentStart": 0, "end": 0, "name": { - "commentStart": 599, + "commentStart": 0, "end": 0, "name": "slateWidthHalf", "start": 0, @@ -700,10 +693,10 @@ description: Result of parsing router-template-cross-bar.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 616, + "commentStart": 0, "end": 0, "name": { - "commentStart": 616, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -722,14 +715,14 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 624, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 630, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -740,10 +733,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 584, + "commentStart": 0, "end": 0, "name": { - "commentStart": 584, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -753,7 +746,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 584, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -763,14 +756,14 @@ description: Result of parsing router-template-cross-bar.kcl { "arguments": [ { - "commentStart": 647, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 656, + "commentStart": 0, "end": 0, "key": { - "commentStart": 656, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -779,7 +772,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 667, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -792,10 +785,10 @@ description: Result of parsing router-template-cross-bar.kcl } }, { - "commentStart": 677, + "commentStart": 0, "end": 0, "key": { - "commentStart": 677, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -804,7 +797,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 690, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -817,10 +810,10 @@ description: Result of parsing router-template-cross-bar.kcl } }, { - "commentStart": 701, + "commentStart": 0, "end": 0, "key": { - "commentStart": 701, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -829,10 +822,10 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 710, + "commentStart": 0, "end": 0, "left": { - "commentStart": 710, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -846,10 +839,10 @@ description: Result of parsing router-template-cross-bar.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 715, + "commentStart": 0, "end": 0, "name": { - "commentStart": 715, + "commentStart": 0, "end": 0, "name": "templateGap", "start": 0, @@ -871,14 +864,14 @@ description: Result of parsing router-template-cross-bar.kcl "type": "ObjectExpression" }, { - "commentStart": 735, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", "type": "PipeSubstitution" }, { - "commentStart": 738, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -888,10 +881,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 643, + "commentStart": 0, "end": 0, "name": { - "commentStart": 643, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -901,7 +894,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 643, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -912,7 +905,7 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 757, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -921,10 +914,10 @@ description: Result of parsing router-template-cross-bar.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 772, + "commentStart": 0, "end": 0, "name": { - "commentStart": 772, + "commentStart": 0, "end": 0, "name": "templateThickness", "start": 0, @@ -935,7 +928,7 @@ description: Result of parsing router-template-cross-bar.kcl "type": "Name", "type": "Name" }, - "commentStart": 771, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -946,14 +939,14 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 791, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 797, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -964,10 +957,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 751, + "commentStart": 0, "end": 0, "name": { - "commentStart": 751, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -977,7 +970,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 751, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -989,7 +982,7 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 816, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -997,10 +990,10 @@ description: Result of parsing router-template-cross-bar.kcl }, "arg": { "abs_path": false, - "commentStart": 825, + "commentStart": 0, "end": 0, "name": { - "commentStart": 825, + "commentStart": 0, "end": 0, "name": "templateThickness", "start": 0, @@ -1015,14 +1008,14 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 844, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 850, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1033,10 +1026,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 810, + "commentStart": 0, "end": 0, "name": { - "commentStart": 810, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1046,7 +1039,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 810, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1058,29 +1051,29 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 869, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 884, + "commentStart": 0, "end": 0, "left": { - "commentStart": 884, + "commentStart": 0, "end": 0, "left": { - "commentStart": 884, + "commentStart": 0, "end": 0, "left": { "arguments": [ { "abs_path": false, - "commentStart": 892, + "commentStart": 0, "end": 0, "name": { - "commentStart": 892, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -1094,10 +1087,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 884, + "commentStart": 0, "end": 0, "name": { - "commentStart": 884, + "commentStart": 0, "end": 0, "name": "segEndY", "start": 0, @@ -1107,7 +1100,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 884, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1116,10 +1109,10 @@ description: Result of parsing router-template-cross-bar.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 901, + "commentStart": 0, "end": 0, "name": { - "commentStart": 901, + "commentStart": 0, "end": 0, "name": "templateThickness", "start": 0, @@ -1136,7 +1129,7 @@ description: Result of parsing router-template-cross-bar.kcl }, "operator": "/", "right": { - "commentStart": 922, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1154,10 +1147,10 @@ description: Result of parsing router-template-cross-bar.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 926, + "commentStart": 0, "end": 0, "name": { - "commentStart": 926, + "commentStart": 0, "end": 0, "name": "templateThickness", "start": 0, @@ -1176,14 +1169,14 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 945, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 951, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1194,10 +1187,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 863, + "commentStart": 0, "end": 0, "name": { - "commentStart": 863, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1207,7 +1200,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 863, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1219,23 +1212,23 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 970, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 984, + "commentStart": 0, "end": 0, "left": { "arguments": [ { "abs_path": false, - "commentStart": 992, + "commentStart": 0, "end": 0, "name": { - "commentStart": 992, + "commentStart": 0, "end": 0, "name": "seg03", "start": 0, @@ -1249,10 +1242,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 984, + "commentStart": 0, "end": 0, "name": { - "commentStart": 984, + "commentStart": 0, "end": 0, "name": "segEndX", "start": 0, @@ -1262,7 +1255,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 984, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1271,10 +1264,10 @@ description: Result of parsing router-template-cross-bar.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1001, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1001, + "commentStart": 0, "end": 0, "name": "minClampingDistance", "start": 0, @@ -1293,14 +1286,14 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1022, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1028, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1311,10 +1304,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 964, + "commentStart": 0, "end": 0, "name": { - "commentStart": 964, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1324,7 +1317,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 964, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1336,21 +1329,21 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1047, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1056, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1056, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1056, + "commentStart": 0, "end": 0, "name": "templateThickness", "start": 0, @@ -1363,7 +1356,7 @@ description: Result of parsing router-template-cross-bar.kcl }, "operator": "*", "right": { - "commentStart": 1076, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1382,14 +1375,14 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1079, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1085, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1400,10 +1393,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1041, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1041, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1413,7 +1406,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1041, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1425,23 +1418,23 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1104, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1118, + "commentStart": 0, "end": 0, "left": { "arguments": [ { "abs_path": false, - "commentStart": 1126, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1126, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -1455,10 +1448,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1118, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1118, + "commentStart": 0, "end": 0, "name": "segEndX", "start": 0, @@ -1468,7 +1461,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1118, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1476,7 +1469,7 @@ description: Result of parsing router-template-cross-bar.kcl }, "operator": "+", "right": { - "commentStart": 1135, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1495,14 +1488,14 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1138, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1144, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1513,10 +1506,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1098, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1098, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1526,7 +1519,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1098, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1538,23 +1531,23 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1163, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1177, + "commentStart": 0, "end": 0, "left": { "arguments": [ { "abs_path": false, - "commentStart": 1185, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1185, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -1568,10 +1561,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1177, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1177, + "commentStart": 0, "end": 0, "name": "segEndY", "start": 0, @@ -1581,7 +1574,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1177, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1590,10 +1583,10 @@ description: Result of parsing router-template-cross-bar.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1194, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1194, + "commentStart": 0, "end": 0, "name": "templateThickness", "start": 0, @@ -1612,14 +1605,14 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1213, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1219, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1630,10 +1623,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1157, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1157, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1643,7 +1636,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1157, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1655,14 +1648,14 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1238, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1252, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1677,14 +1670,14 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1255, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1261, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1695,10 +1688,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1232, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1232, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1708,7 +1701,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1232, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1720,7 +1713,7 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1280, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1731,10 +1724,10 @@ description: Result of parsing router-template-cross-bar.kcl "arguments": [ { "abs_path": false, - "commentStart": 1297, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1297, + "commentStart": 0, "end": 0, "name": "seg04", "start": 0, @@ -1748,10 +1741,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1290, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1290, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -1761,13 +1754,13 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1290, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - "commentStart": 1289, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1778,10 +1771,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1274, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1274, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1791,7 +1784,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1274, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1803,7 +1796,7 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1316, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1814,10 +1807,10 @@ description: Result of parsing router-template-cross-bar.kcl "arguments": [ { "abs_path": false, - "commentStart": 1333, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1333, + "commentStart": 0, "end": 0, "name": "seg10", "start": 0, @@ -1831,10 +1824,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1326, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1326, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -1844,13 +1837,13 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1326, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - "commentStart": 1325, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1861,10 +1854,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1310, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1310, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1874,7 +1867,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1310, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1886,7 +1879,7 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1352, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1897,10 +1890,10 @@ description: Result of parsing router-template-cross-bar.kcl "arguments": [ { "abs_path": false, - "commentStart": 1369, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1369, + "commentStart": 0, "end": 0, "name": "seg05", "start": 0, @@ -1914,10 +1907,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1362, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1362, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -1927,13 +1920,13 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1362, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - "commentStart": 1361, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1944,10 +1937,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1346, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1346, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1957,7 +1950,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1346, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1969,7 +1962,7 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1388, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1980,10 +1973,10 @@ description: Result of parsing router-template-cross-bar.kcl "arguments": [ { "abs_path": false, - "commentStart": 1405, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1405, + "commentStart": 0, "end": 0, "name": "seg08", "start": 0, @@ -1997,10 +1990,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1398, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1398, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -2010,13 +2003,13 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1398, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - "commentStart": 1397, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2027,10 +2020,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1382, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1382, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2040,7 +2033,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1382, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2052,7 +2045,7 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1424, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2062,10 +2055,10 @@ description: Result of parsing router-template-cross-bar.kcl "arguments": [ { "abs_path": false, - "commentStart": 1440, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1440, + "commentStart": 0, "end": 0, "name": "seg06", "start": 0, @@ -2079,10 +2072,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1433, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1433, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -2092,7 +2085,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1433, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2102,10 +2095,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1418, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1418, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2115,7 +2108,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1418, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2127,7 +2120,7 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1459, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2138,10 +2131,10 @@ description: Result of parsing router-template-cross-bar.kcl "arguments": [ { "abs_path": false, - "commentStart": 1476, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1476, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -2155,10 +2148,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1469, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1469, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -2168,13 +2161,13 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1469, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - "commentStart": 1468, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2185,10 +2178,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1453, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1453, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2198,7 +2191,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1453, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2210,7 +2203,7 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1495, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2220,10 +2213,10 @@ description: Result of parsing router-template-cross-bar.kcl "arguments": [ { "abs_path": false, - "commentStart": 1511, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1511, + "commentStart": 0, "end": 0, "name": "seg07", "start": 0, @@ -2237,10 +2230,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1504, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1504, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -2250,7 +2243,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1504, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2260,10 +2253,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1489, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1489, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2273,7 +2266,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1489, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2285,7 +2278,7 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1530, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2295,10 +2288,10 @@ description: Result of parsing router-template-cross-bar.kcl "arguments": [ { "abs_path": false, - "commentStart": 1546, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1546, + "commentStart": 0, "end": 0, "name": "seg03", "start": 0, @@ -2312,10 +2305,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1539, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1539, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -2325,7 +2318,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1539, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2335,10 +2328,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1524, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1524, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2348,7 +2341,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1524, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2358,14 +2351,14 @@ description: Result of parsing router-template-cross-bar.kcl { "arguments": [ { - "commentStart": 1563, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1572, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1572, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -2374,7 +2367,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1583, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -2387,10 +2380,10 @@ description: Result of parsing router-template-cross-bar.kcl } }, { - "commentStart": 1594, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1594, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -2399,7 +2392,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1607, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -2412,10 +2405,10 @@ description: Result of parsing router-template-cross-bar.kcl } }, { - "commentStart": 1619, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1619, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -2424,10 +2417,10 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1628, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1628, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -2441,10 +2434,10 @@ description: Result of parsing router-template-cross-bar.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1633, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1633, + "commentStart": 0, "end": 0, "name": "templateGap", "start": 0, @@ -2466,7 +2459,7 @@ description: Result of parsing router-template-cross-bar.kcl "type": "ObjectExpression" }, { - "commentStart": 1653, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2475,10 +2468,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1559, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1559, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -2488,7 +2481,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1559, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2499,19 +2492,19 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1666, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1680, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1695, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2520,10 +2513,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1681, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1681, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -2533,7 +2526,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1681, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2542,7 +2535,7 @@ description: Result of parsing router-template-cross-bar.kcl { "arguments": [ { - "commentStart": 1713, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2551,10 +2544,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1699, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1699, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -2564,7 +2557,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1699, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2580,10 +2573,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1661, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1661, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2593,7 +2586,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1661, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2604,10 +2597,10 @@ description: Result of parsing router-template-cross-bar.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1723, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1723, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2617,20 +2610,20 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1723, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 512, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "22": [ { - "commentStart": 1730, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2663,12 +2656,12 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 1760, + "commentStart": 0, "declaration": { - "commentStart": 1760, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1760, + "commentStart": 0, "end": 0, "name": "extrude001", "start": 0, @@ -2679,14 +2672,14 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 1792, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1801, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -2701,10 +2694,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1773, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1773, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2714,17 +2707,17 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1773, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1781, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1781, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -2746,12 +2739,12 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 1803, + "commentStart": 0, "declaration": { - "commentStart": 1833, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1833, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -2762,37 +2755,38 @@ description: Result of parsing router-template-cross-bar.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1859, - "end": 0, - "name": { - "commentStart": 1859, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 1871, - "end": 0, - "raw": "'START'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "START" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1845, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1845, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2802,23 +2796,39 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1845, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 1900, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 1901, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1901, + "commentStart": 0, "end": 0, "name": "distanceToInsideEdge", "start": 0, @@ -2830,7 +2840,7 @@ description: Result of parsing router-template-cross-bar.kcl "type": "Name" }, { - "commentStart": 1923, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2848,7 +2858,7 @@ description: Result of parsing router-template-cross-bar.kcl "type": "ArrayExpression" }, { - "commentStart": 1927, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2857,10 +2867,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 1885, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1885, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2870,7 +2880,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1885, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2879,64 +2889,78 @@ description: Result of parsing router-template-cross-bar.kcl { "arguments": [ { - "commentStart": 1946, - "elements": [ - { - "commentStart": 1947, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, - { - "abs_path": false, - "commentStart": 1952, - "end": 0, - "name": { - "commentStart": 1952, - "end": 0, - "name": "templateThickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "180", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 180.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 1972, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "templateThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 1975, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA002" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA002" + } } ], "callee": { "abs_path": false, - "commentStart": 1935, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1935, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -2946,149 +2970,35 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 1935, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 2014, - "elements": [ - { - "commentStart": 2023, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 2030, - "end": 0, - "name": { - "commentStart": 2030, - "end": 0, - "name": "rectangleSegmentA002", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2023, - "end": 0, - "name": { - "commentStart": 2023, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2023, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "+", - "right": { - "commentStart": 2054, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "abs_path": false, - "commentStart": 2065, - "end": 0, - "name": { - "commentStart": 2065, - "end": 0, - "name": "templateThickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2091, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 2094, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentB002" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2003, - "end": 0, - "name": { - "commentStart": 2003, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2003, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2133, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 2149, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2149, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA002", "start": 0, @@ -3102,10 +3012,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 2142, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2142, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -3115,88 +3025,81 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2142, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 2187, - "end": 0, - "name": { - "commentStart": 2187, - "end": 0, - "name": "rectangleSegmentA002", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2180, - "end": 0, - "name": { - "commentStart": 2180, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2180, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 2179, + "operator": "+", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 2217, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "templateThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 2220, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentC002" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentB002" + } } ], "callee": { "abs_path": false, - "commentStart": 2122, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2122, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -3206,30 +3109,182 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2122, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2253, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA002", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA002", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentC002" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2267, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 2282, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3238,10 +3293,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 2268, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2268, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -3251,7 +3306,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2268, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3260,7 +3315,7 @@ description: Result of parsing router-template-cross-bar.kcl { "arguments": [ { - "commentStart": 2300, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3269,10 +3324,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 2286, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2286, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -3282,7 +3337,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2286, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3298,10 +3353,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 2248, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2248, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3311,7 +3366,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2248, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3322,10 +3377,10 @@ description: Result of parsing router-template-cross-bar.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2310, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2310, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -3335,20 +3390,20 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2310, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1845, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "6": [ { - "commentStart": 2317, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3381,12 +3436,12 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 2348, + "commentStart": 0, "declaration": { - "commentStart": 2348, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2348, + "commentStart": 0, "end": 0, "name": "extrude002", "start": 0, @@ -3397,14 +3452,14 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 2380, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2389, + "commentStart": 0, "end": 0, "raw": "13", "start": 0, @@ -3419,10 +3474,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 2361, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2361, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3432,17 +3487,17 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2361, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2369, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2369, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -3464,12 +3519,12 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 2392, + "commentStart": 0, "declaration": { - "commentStart": 2421, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2421, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -3480,37 +3535,38 @@ description: Result of parsing router-template-cross-bar.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 2447, - "end": 0, - "name": { - "commentStart": 2447, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 2459, - "end": 0, - "raw": "'START'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "START" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 2433, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2433, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -3520,24 +3576,40 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2433, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 2488, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 2490, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2490, + "commentStart": 0, "end": 0, "name": "distanceToInsideEdge", "start": 0, @@ -3548,7 +3620,7 @@ description: Result of parsing router-template-cross-bar.kcl "type": "Name", "type": "Name" }, - "commentStart": 2489, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3556,7 +3628,7 @@ description: Result of parsing router-template-cross-bar.kcl "type": "UnaryExpression" }, { - "commentStart": 2512, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3574,7 +3646,7 @@ description: Result of parsing router-template-cross-bar.kcl "type": "ArrayExpression" }, { - "commentStart": 2516, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3583,10 +3655,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 2473, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2473, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -3596,7 +3668,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2473, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3605,64 +3677,78 @@ description: Result of parsing router-template-cross-bar.kcl { "arguments": [ { - "commentStart": 2535, - "elements": [ - { - "commentStart": 2536, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "abs_path": false, - "commentStart": 2539, - "end": 0, - "name": { - "commentStart": 2539, - "end": 0, - "name": "templateThickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 2559, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "templateThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 2562, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA001" + } } ], "callee": { "abs_path": false, - "commentStart": 2524, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2524, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -3672,149 +3758,35 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2524, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 2601, - "elements": [ - { - "commentStart": 2610, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 2617, - "end": 0, - "name": { - "commentStart": 2617, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2610, - "end": 0, - "name": { - "commentStart": 2610, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2610, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 2641, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "abs_path": false, - "commentStart": 2652, - "end": 0, - "name": { - "commentStart": 2652, - "end": 0, - "name": "templateThickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2678, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 2681, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentB001" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2590, - "end": 0, - "name": { - "commentStart": 2590, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2590, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2720, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 2736, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2736, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA001", "start": 0, @@ -3828,10 +3800,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 2729, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2729, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -3841,88 +3813,81 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2729, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 2774, - "end": 0, - "name": { - "commentStart": 2774, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2767, - "end": 0, - "name": { - "commentStart": 2767, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2767, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 2766, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 2804, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "templateThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 2807, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentC001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentB001" + } } ], "callee": { "abs_path": false, - "commentStart": 2709, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2709, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -3932,30 +3897,182 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2709, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2840, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentC001" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2854, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 2869, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3964,10 +4081,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 2855, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2855, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -3977,7 +4094,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2855, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3986,7 +4103,7 @@ description: Result of parsing router-template-cross-bar.kcl { "arguments": [ { - "commentStart": 2887, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3995,10 +4112,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 2873, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2873, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -4008,7 +4125,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2873, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4024,10 +4141,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 2835, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2835, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4037,7 +4154,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2835, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4048,10 +4165,10 @@ description: Result of parsing router-template-cross-bar.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2897, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2897, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -4061,20 +4178,20 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2897, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 2433, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "6": [ { - "commentStart": 2904, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4107,12 +4224,12 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 2934, + "commentStart": 0, "declaration": { - "commentStart": 2934, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2934, + "commentStart": 0, "end": 0, "name": "extrude003", "start": 0, @@ -4123,14 +4240,14 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 2966, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2975, + "commentStart": 0, "end": 0, "raw": "13", "start": 0, @@ -4145,10 +4262,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 2947, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2947, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -4158,17 +4275,17 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 2947, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2955, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2955, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -4190,12 +4307,12 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 2978, + "commentStart": 0, "declaration": { - "commentStart": 3008, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3008, + "commentStart": 0, "end": 0, "name": "sketch004", "start": 0, @@ -4206,37 +4323,38 @@ description: Result of parsing router-template-cross-bar.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 3034, - "end": 0, - "name": { - "commentStart": 3034, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude002", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 3046, - "end": 0, - "raw": "'END'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 3020, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3020, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -4246,24 +4364,40 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 3020, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude002", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 3073, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 3075, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3075, + "commentStart": 0, "end": 0, "name": "distanceToInsideEdge", "start": 0, @@ -4274,7 +4408,7 @@ description: Result of parsing router-template-cross-bar.kcl "type": "Name", "type": "Name" }, - "commentStart": 3074, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4282,7 +4416,7 @@ description: Result of parsing router-template-cross-bar.kcl "type": "UnaryExpression" }, { - "commentStart": 3097, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4300,7 +4434,7 @@ description: Result of parsing router-template-cross-bar.kcl "type": "ArrayExpression" }, { - "commentStart": 3101, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4309,10 +4443,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 3058, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3058, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -4322,7 +4456,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 3058, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4331,172 +4465,47 @@ description: Result of parsing router-template-cross-bar.kcl { "arguments": [ { - "commentStart": 3120, - "elements": [ - { - "commentStart": 3121, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 3124, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 3124, - "end": 0, - "name": { - "commentStart": 3124, - "end": 0, - "name": "distanceToInsideEdge", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "*", - "right": { - "commentStart": 3147, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 3151, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 3154, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA003" - } - ], - "callee": { - "abs_path": false, - "commentStart": 3109, - "end": 0, - "name": { - "commentStart": 3109, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 3109, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 3193, - "elements": [ - { - "commentStart": 3202, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 3209, - "end": 0, - "name": { - "commentStart": 3209, - "end": 0, - "name": "rectangleSegmentA003", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 3202, - "end": 0, - "name": { - "commentStart": 3202, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 3202, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 3233, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "abs_path": false, - "commentStart": 3244, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3244, + "commentStart": 0, "end": 0, - "name": "templateThickness", + "name": "distanceToInsideEdge", "start": 0, "type": "Identifier" }, @@ -4504,35 +4513,50 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name", "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 3270, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 3273, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentB003" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA003" + } } ], "callee": { "abs_path": false, - "commentStart": 3182, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3182, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -4542,25 +4566,35 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 3182, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 3312, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 3328, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3328, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA003", "start": 0, @@ -4574,10 +4608,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 3321, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3321, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -4587,88 +4621,81 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 3321, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 3366, - "end": 0, - "name": { - "commentStart": 3366, - "end": 0, - "name": "rectangleSegmentA003", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 3359, - "end": 0, - "name": { - "commentStart": 3359, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 3359, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 3358, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 3396, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "templateThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 3399, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentC003" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentB003" + } } ], "callee": { "abs_path": false, - "commentStart": 3301, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3301, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -4678,30 +4705,182 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 3301, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 3432, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA003", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA003", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentC003" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3446, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 3461, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4710,10 +4889,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 3447, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3447, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -4723,7 +4902,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 3447, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4732,7 +4911,7 @@ description: Result of parsing router-template-cross-bar.kcl { "arguments": [ { - "commentStart": 3479, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4741,10 +4920,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 3465, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3465, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -4754,7 +4933,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 3465, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -4770,10 +4949,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 3427, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3427, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4783,7 +4962,7 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 3427, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4794,10 +4973,10 @@ description: Result of parsing router-template-cross-bar.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 3489, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3489, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -4807,20 +4986,20 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 3489, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 3020, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "6": [ { - "commentStart": 3496, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4853,12 +5032,12 @@ description: Result of parsing router-template-cross-bar.kcl "type": "VariableDeclaration" }, { - "commentStart": 3527, + "commentStart": 0, "declaration": { - "commentStart": 3527, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3527, + "commentStart": 0, "end": 0, "name": "extrude004", "start": 0, @@ -4869,14 +5048,14 @@ description: Result of parsing router-template-cross-bar.kcl { "type": "LabeledArg", "label": { - "commentStart": 3559, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3568, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -4891,10 +5070,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "callee": { "abs_path": false, - "commentStart": 3540, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3540, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -4904,17 +5083,17 @@ description: Result of parsing router-template-cross-bar.kcl "start": 0, "type": "Name" }, - "commentStart": 3540, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 3548, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3548, + "commentStart": 0, "end": 0, "name": "sketch004", "start": 0, @@ -4943,7 +5122,7 @@ description: Result of parsing router-template-cross-bar.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 99, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -4958,10 +5137,10 @@ description: Result of parsing router-template-cross-bar.kcl ], "properties": [ { - "commentStart": 108, + "commentStart": 0, "end": 0, "key": { - "commentStart": 108, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -4971,10 +5150,10 @@ description: Result of parsing router-template-cross-bar.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 128, + "commentStart": 0, "end": 0, "name": { - "commentStart": 128, + "commentStart": 0, "end": 0, "name": "mm", "start": 0, @@ -4995,7 +5174,7 @@ description: Result of parsing router-template-cross-bar.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 131, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/ops.snap b/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/ops.snap index 2bee7226c..cb48304fd 100644 --- a/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/ops.snap @@ -5,7 +5,7 @@ description: Operations executed router-template-cross-bar.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -52,19 +52,10 @@ description: Operations executed router-template-cross-bar.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -72,7 +63,15 @@ description: Operations executed router-template-cross-bar.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -108,19 +107,10 @@ description: Operations executed router-template-cross-bar.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -128,7 +118,15 @@ description: Operations executed router-template-cross-bar.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -164,19 +162,10 @@ description: Operations executed router-template-cross-bar.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -184,7 +173,15 @@ description: Operations executed router-template-cross-bar.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/program_memory.snap index 4376997df..3c94a9c82 100644 --- a/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/router-template-cross-bar/program_memory.snap @@ -20,7 +20,13 @@ description: Variables in memory after executing router-template-cross-bar.kcl "type": "Number", "value": 32.6313, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "extrude001": { @@ -35,9 +41,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 630, - "end": 636, - "start": 630, + "commentStart": 633, + "end": 639, + "start": 633, "type": "TagDeclarator", "value": "seg01" }, @@ -48,9 +54,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 738, - "end": 744, - "start": 738, + "commentStart": 741, + "end": 747, + "start": 741, "type": "TagDeclarator", "value": "seg09" }, @@ -61,9 +67,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 797, - "end": 803, - "start": 797, + "commentStart": 800, + "end": 806, + "start": 800, "type": "TagDeclarator", "value": "seg03" }, @@ -74,9 +80,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 850, - "end": 856, - "start": 850, + "commentStart": 853, + "end": 859, + "start": 853, "type": "TagDeclarator", "value": "seg07" }, @@ -87,9 +93,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 951, - "end": 957, - "start": 951, + "commentStart": 954, + "end": 960, + "start": 954, "type": "TagDeclarator", "value": "seg02" }, @@ -100,9 +106,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1028, - "end": 1034, - "start": 1028, + "commentStart": 1031, + "end": 1037, + "start": 1031, "type": "TagDeclarator", "value": "seg06" }, @@ -113,9 +119,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1088, + "end": 1094, + "start": 1088, "type": "TagDeclarator", "value": "seg08" }, @@ -126,9 +132,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1144, - "end": 1150, - "start": 1144, + "commentStart": 1147, + "end": 1153, + "start": 1147, "type": "TagDeclarator", "value": "seg05" }, @@ -139,9 +145,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1219, - "end": 1225, - "start": 1219, + "commentStart": 1222, + "end": 1228, + "start": 1222, "type": "TagDeclarator", "value": "seg10" }, @@ -152,9 +158,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1261, - "end": 1267, - "start": 1261, + "commentStart": 1264, + "end": 1270, + "start": 1264, "type": "TagDeclarator", "value": "seg04" }, @@ -238,9 +244,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 31.8813 ], "tag": { - "commentStart": 630, - "end": 636, - "start": 630, + "commentStart": 633, + "end": 639, + "start": 633, "type": "TagDeclarator", "value": "seg01" }, @@ -269,9 +275,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl ], "radius": 11.88125, "tag": { - "commentStart": 738, - "end": 744, - "start": 738, + "commentStart": 741, + "end": 747, + "start": 741, "type": "TagDeclarator", "value": "seg09" }, @@ -294,9 +300,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 20.0 ], "tag": { - "commentStart": 797, - "end": 803, - "start": 797, + "commentStart": 800, + "end": 806, + "start": 800, "type": "TagDeclarator", "value": "seg03" }, @@ -319,9 +325,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 850, - "end": 856, - "start": 850, + "commentStart": 853, + "end": 859, + "start": 853, "type": "TagDeclarator", "value": "seg07" }, @@ -344,9 +350,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 951, - "end": 957, - "start": 951, + "commentStart": 954, + "end": 960, + "start": 954, "type": "TagDeclarator", "value": "seg02" }, @@ -369,9 +375,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1028, - "end": 1034, - "start": 1028, + "commentStart": 1031, + "end": 1037, + "start": 1031, "type": "TagDeclarator", "value": "seg06" }, @@ -394,9 +400,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1088, + "end": 1094, + "start": 1088, "type": "TagDeclarator", "value": "seg08" }, @@ -419,9 +425,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1144, - "end": 1150, - "start": 1144, + "commentStart": 1147, + "end": 1153, + "start": 1147, "type": "TagDeclarator", "value": "seg05" }, @@ -444,9 +450,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1219, - "end": 1225, - "start": 1219, + "commentStart": 1222, + "end": 1228, + "start": 1222, "type": "TagDeclarator", "value": "seg10" }, @@ -469,9 +475,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 41.8813 ], "tag": { - "commentStart": 1261, - "end": 1267, - "start": 1261, + "commentStart": 1264, + "end": 1270, + "start": 1264, "type": "TagDeclarator", "value": "seg04" }, @@ -708,22 +714,34 @@ description: Variables in memory after executing router-template-cross-bar.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -815,9 +833,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1975, - "end": 1996, - "start": 1975, + "commentStart": 2001, + "end": 2022, + "start": 2001, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -828,9 +846,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2094, - "end": 2115, - "start": 2094, + "commentStart": 2117, + "end": 2138, + "start": 2117, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -841,9 +859,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2220, - "end": 2241, - "start": 2220, + "commentStart": 2240, + "end": 2261, + "start": 2240, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -871,9 +889,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 1975, - "end": 1996, - "start": 1975, + "commentStart": 2001, + "end": 2022, + "start": 2001, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -896,9 +914,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 2094, - "end": 2115, - "start": 2094, + "commentStart": 2117, + "end": 2138, + "start": 2117, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -921,9 +939,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 2220, - "end": 2241, - "start": 2220, + "commentStart": 2240, + "end": 2261, + "start": 2240, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -983,17 +1001,26 @@ description: Variables in memory after executing router-template-cross-bar.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1005,9 +1032,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 630, - "end": 636, - "start": 630, + "commentStart": 633, + "end": 639, + "start": 633, "type": "TagDeclarator", "value": "seg01" }, @@ -1018,9 +1045,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 738, - "end": 744, - "start": 738, + "commentStart": 741, + "end": 747, + "start": 741, "type": "TagDeclarator", "value": "seg09" }, @@ -1031,9 +1058,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 797, - "end": 803, - "start": 797, + "commentStart": 800, + "end": 806, + "start": 800, "type": "TagDeclarator", "value": "seg03" }, @@ -1044,9 +1071,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 850, - "end": 856, - "start": 850, + "commentStart": 853, + "end": 859, + "start": 853, "type": "TagDeclarator", "value": "seg07" }, @@ -1057,9 +1084,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 951, - "end": 957, - "start": 951, + "commentStart": 954, + "end": 960, + "start": 954, "type": "TagDeclarator", "value": "seg02" }, @@ -1070,9 +1097,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1028, - "end": 1034, - "start": 1028, + "commentStart": 1031, + "end": 1037, + "start": 1031, "type": "TagDeclarator", "value": "seg06" }, @@ -1083,9 +1110,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1088, + "end": 1094, + "start": 1088, "type": "TagDeclarator", "value": "seg08" }, @@ -1096,9 +1123,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1144, - "end": 1150, - "start": 1144, + "commentStart": 1147, + "end": 1153, + "start": 1147, "type": "TagDeclarator", "value": "seg05" }, @@ -1109,9 +1136,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1219, - "end": 1225, - "start": 1219, + "commentStart": 1222, + "end": 1228, + "start": 1222, "type": "TagDeclarator", "value": "seg10" }, @@ -1122,9 +1149,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1261, - "end": 1267, - "start": 1261, + "commentStart": 1264, + "end": 1270, + "start": 1264, "type": "TagDeclarator", "value": "seg04" }, @@ -1208,9 +1235,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 31.8813 ], "tag": { - "commentStart": 630, - "end": 636, - "start": 630, + "commentStart": 633, + "end": 639, + "start": 633, "type": "TagDeclarator", "value": "seg01" }, @@ -1239,9 +1266,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl ], "radius": 11.88125, "tag": { - "commentStart": 738, - "end": 744, - "start": 738, + "commentStart": 741, + "end": 747, + "start": 741, "type": "TagDeclarator", "value": "seg09" }, @@ -1264,9 +1291,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 20.0 ], "tag": { - "commentStart": 797, - "end": 803, - "start": 797, + "commentStart": 800, + "end": 806, + "start": 800, "type": "TagDeclarator", "value": "seg03" }, @@ -1289,9 +1316,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 850, - "end": 856, - "start": 850, + "commentStart": 853, + "end": 859, + "start": 853, "type": "TagDeclarator", "value": "seg07" }, @@ -1314,9 +1341,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 951, - "end": 957, - "start": 951, + "commentStart": 954, + "end": 960, + "start": 954, "type": "TagDeclarator", "value": "seg02" }, @@ -1339,9 +1366,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1028, - "end": 1034, - "start": 1028, + "commentStart": 1031, + "end": 1037, + "start": 1031, "type": "TagDeclarator", "value": "seg06" }, @@ -1364,9 +1391,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1088, + "end": 1094, + "start": 1088, "type": "TagDeclarator", "value": "seg08" }, @@ -1389,9 +1416,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1144, - "end": 1150, - "start": 1144, + "commentStart": 1147, + "end": 1153, + "start": 1147, "type": "TagDeclarator", "value": "seg05" }, @@ -1414,9 +1441,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1219, - "end": 1225, - "start": 1219, + "commentStart": 1222, + "end": 1228, + "start": 1222, "type": "TagDeclarator", "value": "seg10" }, @@ -1439,9 +1466,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 41.8813 ], "tag": { - "commentStart": 1261, - "end": 1267, - "start": 1261, + "commentStart": 1264, + "end": 1270, + "start": 1264, "type": "TagDeclarator", "value": "seg04" }, @@ -1678,22 +1705,34 @@ description: Variables in memory after executing router-template-cross-bar.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1834,9 +1873,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2562, - "end": 2583, - "start": 2562, + "commentStart": 2605, + "end": 2626, + "start": 2605, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -1847,9 +1886,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2681, - "end": 2702, - "start": 2681, + "commentStart": 2721, + "end": 2742, + "start": 2721, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -1860,9 +1899,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2807, - "end": 2828, - "start": 2807, + "commentStart": 2844, + "end": 2865, + "start": 2844, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -1890,9 +1929,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 2562, - "end": 2583, - "start": 2562, + "commentStart": 2605, + "end": 2626, + "start": 2605, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -1915,9 +1954,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 2681, - "end": 2702, - "start": 2681, + "commentStart": 2721, + "end": 2742, + "start": 2721, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -1940,9 +1979,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 2807, - "end": 2828, - "start": 2807, + "commentStart": 2844, + "end": 2865, + "start": 2844, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -2002,17 +2041,26 @@ description: Variables in memory after executing router-template-cross-bar.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2024,9 +2072,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 630, - "end": 636, - "start": 630, + "commentStart": 633, + "end": 639, + "start": 633, "type": "TagDeclarator", "value": "seg01" }, @@ -2037,9 +2085,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 738, - "end": 744, - "start": 738, + "commentStart": 741, + "end": 747, + "start": 741, "type": "TagDeclarator", "value": "seg09" }, @@ -2050,9 +2098,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 797, - "end": 803, - "start": 797, + "commentStart": 800, + "end": 806, + "start": 800, "type": "TagDeclarator", "value": "seg03" }, @@ -2063,9 +2111,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 850, - "end": 856, - "start": 850, + "commentStart": 853, + "end": 859, + "start": 853, "type": "TagDeclarator", "value": "seg07" }, @@ -2076,9 +2124,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 951, - "end": 957, - "start": 951, + "commentStart": 954, + "end": 960, + "start": 954, "type": "TagDeclarator", "value": "seg02" }, @@ -2089,9 +2137,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1028, - "end": 1034, - "start": 1028, + "commentStart": 1031, + "end": 1037, + "start": 1031, "type": "TagDeclarator", "value": "seg06" }, @@ -2102,9 +2150,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1088, + "end": 1094, + "start": 1088, "type": "TagDeclarator", "value": "seg08" }, @@ -2115,9 +2163,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1144, - "end": 1150, - "start": 1144, + "commentStart": 1147, + "end": 1153, + "start": 1147, "type": "TagDeclarator", "value": "seg05" }, @@ -2128,9 +2176,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1219, - "end": 1225, - "start": 1219, + "commentStart": 1222, + "end": 1228, + "start": 1222, "type": "TagDeclarator", "value": "seg10" }, @@ -2141,9 +2189,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1261, - "end": 1267, - "start": 1261, + "commentStart": 1264, + "end": 1270, + "start": 1264, "type": "TagDeclarator", "value": "seg04" }, @@ -2227,9 +2275,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 31.8813 ], "tag": { - "commentStart": 630, - "end": 636, - "start": 630, + "commentStart": 633, + "end": 639, + "start": 633, "type": "TagDeclarator", "value": "seg01" }, @@ -2258,9 +2306,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl ], "radius": 11.88125, "tag": { - "commentStart": 738, - "end": 744, - "start": 738, + "commentStart": 741, + "end": 747, + "start": 741, "type": "TagDeclarator", "value": "seg09" }, @@ -2283,9 +2331,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 20.0 ], "tag": { - "commentStart": 797, - "end": 803, - "start": 797, + "commentStart": 800, + "end": 806, + "start": 800, "type": "TagDeclarator", "value": "seg03" }, @@ -2308,9 +2356,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 850, - "end": 856, - "start": 850, + "commentStart": 853, + "end": 859, + "start": 853, "type": "TagDeclarator", "value": "seg07" }, @@ -2333,9 +2381,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 951, - "end": 957, - "start": 951, + "commentStart": 954, + "end": 960, + "start": 954, "type": "TagDeclarator", "value": "seg02" }, @@ -2358,9 +2406,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1028, - "end": 1034, - "start": 1028, + "commentStart": 1031, + "end": 1037, + "start": 1031, "type": "TagDeclarator", "value": "seg06" }, @@ -2383,9 +2431,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1088, + "end": 1094, + "start": 1088, "type": "TagDeclarator", "value": "seg08" }, @@ -2408,9 +2456,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1144, - "end": 1150, - "start": 1144, + "commentStart": 1147, + "end": 1153, + "start": 1147, "type": "TagDeclarator", "value": "seg05" }, @@ -2433,9 +2481,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1219, - "end": 1225, - "start": 1219, + "commentStart": 1222, + "end": 1228, + "start": 1222, "type": "TagDeclarator", "value": "seg10" }, @@ -2458,9 +2506,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 41.8813 ], "tag": { - "commentStart": 1261, - "end": 1267, - "start": 1261, + "commentStart": 1264, + "end": 1270, + "start": 1264, "type": "TagDeclarator", "value": "seg04" }, @@ -2697,22 +2745,34 @@ description: Variables in memory after executing router-template-cross-bar.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2853,9 +2913,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 3154, - "end": 3175, - "start": 3154, + "commentStart": 3214, + "end": 3235, + "start": 3214, "type": "TagDeclarator", "value": "rectangleSegmentA003" }, @@ -2866,9 +2926,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 3273, - "end": 3294, - "start": 3273, + "commentStart": 3330, + "end": 3351, + "start": 3330, "type": "TagDeclarator", "value": "rectangleSegmentB003" }, @@ -2879,9 +2939,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 3399, - "end": 3420, - "start": 3399, + "commentStart": 3453, + "end": 3474, + "start": 3453, "type": "TagDeclarator", "value": "rectangleSegmentC003" }, @@ -2909,9 +2969,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 3154, - "end": 3175, - "start": 3154, + "commentStart": 3214, + "end": 3235, + "start": 3214, "type": "TagDeclarator", "value": "rectangleSegmentA003" }, @@ -2934,9 +2994,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 3273, - "end": 3294, - "start": 3273, + "commentStart": 3330, + "end": 3351, + "start": 3330, "type": "TagDeclarator", "value": "rectangleSegmentB003" }, @@ -2959,9 +3019,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 3399, - "end": 3420, - "start": 3399, + "commentStart": 3453, + "end": 3474, + "start": 3453, "type": "TagDeclarator", "value": "rectangleSegmentC003" }, @@ -3021,17 +3081,26 @@ description: Variables in memory after executing router-template-cross-bar.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3043,9 +3112,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1975, - "end": 1996, - "start": 1975, + "commentStart": 2001, + "end": 2022, + "start": 2001, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -3056,9 +3125,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2094, - "end": 2115, - "start": 2094, + "commentStart": 2117, + "end": 2138, + "start": 2117, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -3069,9 +3138,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2220, - "end": 2241, - "start": 2220, + "commentStart": 2240, + "end": 2261, + "start": 2240, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -3099,9 +3168,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 1975, - "end": 1996, - "start": 1975, + "commentStart": 2001, + "end": 2022, + "start": 2001, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -3124,9 +3193,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 2094, - "end": 2115, - "start": 2094, + "commentStart": 2117, + "end": 2138, + "start": 2117, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -3149,9 +3218,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 2220, - "end": 2241, - "start": 2220, + "commentStart": 2240, + "end": 2261, + "start": 2240, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -3211,17 +3280,26 @@ description: Variables in memory after executing router-template-cross-bar.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3233,9 +3311,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 630, - "end": 636, - "start": 630, + "commentStart": 633, + "end": 639, + "start": 633, "type": "TagDeclarator", "value": "seg01" }, @@ -3246,9 +3324,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 738, - "end": 744, - "start": 738, + "commentStart": 741, + "end": 747, + "start": 741, "type": "TagDeclarator", "value": "seg09" }, @@ -3259,9 +3337,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 797, - "end": 803, - "start": 797, + "commentStart": 800, + "end": 806, + "start": 800, "type": "TagDeclarator", "value": "seg03" }, @@ -3272,9 +3350,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 850, - "end": 856, - "start": 850, + "commentStart": 853, + "end": 859, + "start": 853, "type": "TagDeclarator", "value": "seg07" }, @@ -3285,9 +3363,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 951, - "end": 957, - "start": 951, + "commentStart": 954, + "end": 960, + "start": 954, "type": "TagDeclarator", "value": "seg02" }, @@ -3298,9 +3376,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1028, - "end": 1034, - "start": 1028, + "commentStart": 1031, + "end": 1037, + "start": 1031, "type": "TagDeclarator", "value": "seg06" }, @@ -3311,9 +3389,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1088, + "end": 1094, + "start": 1088, "type": "TagDeclarator", "value": "seg08" }, @@ -3324,9 +3402,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1144, - "end": 1150, - "start": 1144, + "commentStart": 1147, + "end": 1153, + "start": 1147, "type": "TagDeclarator", "value": "seg05" }, @@ -3337,9 +3415,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1219, - "end": 1225, - "start": 1219, + "commentStart": 1222, + "end": 1228, + "start": 1222, "type": "TagDeclarator", "value": "seg10" }, @@ -3350,9 +3428,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1261, - "end": 1267, - "start": 1261, + "commentStart": 1264, + "end": 1270, + "start": 1264, "type": "TagDeclarator", "value": "seg04" }, @@ -3436,9 +3514,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 31.8813 ], "tag": { - "commentStart": 630, - "end": 636, - "start": 630, + "commentStart": 633, + "end": 639, + "start": 633, "type": "TagDeclarator", "value": "seg01" }, @@ -3467,9 +3545,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl ], "radius": 11.88125, "tag": { - "commentStart": 738, - "end": 744, - "start": 738, + "commentStart": 741, + "end": 747, + "start": 741, "type": "TagDeclarator", "value": "seg09" }, @@ -3492,9 +3570,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 20.0 ], "tag": { - "commentStart": 797, - "end": 803, - "start": 797, + "commentStart": 800, + "end": 806, + "start": 800, "type": "TagDeclarator", "value": "seg03" }, @@ -3517,9 +3595,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 850, - "end": 856, - "start": 850, + "commentStart": 853, + "end": 859, + "start": 853, "type": "TagDeclarator", "value": "seg07" }, @@ -3542,9 +3620,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 951, - "end": 957, - "start": 951, + "commentStart": 954, + "end": 960, + "start": 954, "type": "TagDeclarator", "value": "seg02" }, @@ -3567,9 +3645,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1028, - "end": 1034, - "start": 1028, + "commentStart": 1031, + "end": 1037, + "start": 1031, "type": "TagDeclarator", "value": "seg06" }, @@ -3592,9 +3670,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1088, + "end": 1094, + "start": 1088, "type": "TagDeclarator", "value": "seg08" }, @@ -3617,9 +3695,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1144, - "end": 1150, - "start": 1144, + "commentStart": 1147, + "end": 1153, + "start": 1147, "type": "TagDeclarator", "value": "seg05" }, @@ -3642,9 +3720,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1219, - "end": 1225, - "start": 1219, + "commentStart": 1222, + "end": 1228, + "start": 1222, "type": "TagDeclarator", "value": "seg10" }, @@ -3667,9 +3745,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 41.8813 ], "tag": { - "commentStart": 1261, - "end": 1267, - "start": 1261, + "commentStart": 1264, + "end": 1270, + "start": 1264, "type": "TagDeclarator", "value": "seg04" }, @@ -3906,22 +3984,34 @@ description: Variables in memory after executing router-template-cross-bar.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4249,9 +4339,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 31.8813 ], "tag": { - "commentStart": 630, - "end": 636, - "start": 630, + "commentStart": 633, + "end": 639, + "start": 633, "type": "TagDeclarator", "value": "seg01" }, @@ -4280,9 +4370,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl ], "radius": 11.88125, "tag": { - "commentStart": 738, - "end": 744, - "start": 738, + "commentStart": 741, + "end": 747, + "start": 741, "type": "TagDeclarator", "value": "seg09" }, @@ -4305,9 +4395,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 20.0 ], "tag": { - "commentStart": 797, - "end": 803, - "start": 797, + "commentStart": 800, + "end": 806, + "start": 800, "type": "TagDeclarator", "value": "seg03" }, @@ -4330,9 +4420,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 850, - "end": 856, - "start": 850, + "commentStart": 853, + "end": 859, + "start": 853, "type": "TagDeclarator", "value": "seg07" }, @@ -4355,9 +4445,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 951, - "end": 957, - "start": 951, + "commentStart": 954, + "end": 960, + "start": 954, "type": "TagDeclarator", "value": "seg02" }, @@ -4380,9 +4470,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1028, - "end": 1034, - "start": 1028, + "commentStart": 1031, + "end": 1037, + "start": 1031, "type": "TagDeclarator", "value": "seg06" }, @@ -4405,9 +4495,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1088, + "end": 1094, + "start": 1088, "type": "TagDeclarator", "value": "seg08" }, @@ -4430,9 +4520,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1144, - "end": 1150, - "start": 1144, + "commentStart": 1147, + "end": 1153, + "start": 1147, "type": "TagDeclarator", "value": "seg05" }, @@ -4455,9 +4545,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1219, - "end": 1225, - "start": 1219, + "commentStart": 1222, + "end": 1228, + "start": 1222, "type": "TagDeclarator", "value": "seg10" }, @@ -4480,9 +4570,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 41.8813 ], "tag": { - "commentStart": 1261, - "end": 1267, - "start": 1261, + "commentStart": 1264, + "end": 1270, + "start": 1264, "type": "TagDeclarator", "value": "seg04" }, @@ -4719,22 +4809,34 @@ description: Variables in memory after executing router-template-cross-bar.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4823,9 +4925,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 1975, - "end": 1996, - "start": 1975, + "commentStart": 2001, + "end": 2022, + "start": 2001, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -4848,9 +4950,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 2094, - "end": 2115, - "start": 2094, + "commentStart": 2117, + "end": 2138, + "start": 2117, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -4873,9 +4975,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 2220, - "end": 2241, - "start": 2220, + "commentStart": 2240, + "end": 2261, + "start": 2240, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -4935,17 +5037,26 @@ description: Variables in memory after executing router-template-cross-bar.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -4957,9 +5068,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 630, - "end": 636, - "start": 630, + "commentStart": 633, + "end": 639, + "start": 633, "type": "TagDeclarator", "value": "seg01" }, @@ -4970,9 +5081,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 738, - "end": 744, - "start": 738, + "commentStart": 741, + "end": 747, + "start": 741, "type": "TagDeclarator", "value": "seg09" }, @@ -4983,9 +5094,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 797, - "end": 803, - "start": 797, + "commentStart": 800, + "end": 806, + "start": 800, "type": "TagDeclarator", "value": "seg03" }, @@ -4996,9 +5107,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 850, - "end": 856, - "start": 850, + "commentStart": 853, + "end": 859, + "start": 853, "type": "TagDeclarator", "value": "seg07" }, @@ -5009,9 +5120,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 951, - "end": 957, - "start": 951, + "commentStart": 954, + "end": 960, + "start": 954, "type": "TagDeclarator", "value": "seg02" }, @@ -5022,9 +5133,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1028, - "end": 1034, - "start": 1028, + "commentStart": 1031, + "end": 1037, + "start": 1031, "type": "TagDeclarator", "value": "seg06" }, @@ -5035,9 +5146,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1088, + "end": 1094, + "start": 1088, "type": "TagDeclarator", "value": "seg08" }, @@ -5048,9 +5159,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1144, - "end": 1150, - "start": 1144, + "commentStart": 1147, + "end": 1153, + "start": 1147, "type": "TagDeclarator", "value": "seg05" }, @@ -5061,9 +5172,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1219, - "end": 1225, - "start": 1219, + "commentStart": 1222, + "end": 1228, + "start": 1222, "type": "TagDeclarator", "value": "seg10" }, @@ -5074,9 +5185,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1261, - "end": 1267, - "start": 1261, + "commentStart": 1264, + "end": 1270, + "start": 1264, "type": "TagDeclarator", "value": "seg04" }, @@ -5160,9 +5271,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 31.8813 ], "tag": { - "commentStart": 630, - "end": 636, - "start": 630, + "commentStart": 633, + "end": 639, + "start": 633, "type": "TagDeclarator", "value": "seg01" }, @@ -5191,9 +5302,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl ], "radius": 11.88125, "tag": { - "commentStart": 738, - "end": 744, - "start": 738, + "commentStart": 741, + "end": 747, + "start": 741, "type": "TagDeclarator", "value": "seg09" }, @@ -5216,9 +5327,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 20.0 ], "tag": { - "commentStart": 797, - "end": 803, - "start": 797, + "commentStart": 800, + "end": 806, + "start": 800, "type": "TagDeclarator", "value": "seg03" }, @@ -5241,9 +5352,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 850, - "end": 856, - "start": 850, + "commentStart": 853, + "end": 859, + "start": 853, "type": "TagDeclarator", "value": "seg07" }, @@ -5266,9 +5377,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 951, - "end": 957, - "start": 951, + "commentStart": 954, + "end": 960, + "start": 954, "type": "TagDeclarator", "value": "seg02" }, @@ -5291,9 +5402,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1028, - "end": 1034, - "start": 1028, + "commentStart": 1031, + "end": 1037, + "start": 1031, "type": "TagDeclarator", "value": "seg06" }, @@ -5316,9 +5427,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1088, + "end": 1094, + "start": 1088, "type": "TagDeclarator", "value": "seg08" }, @@ -5341,9 +5452,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1144, - "end": 1150, - "start": 1144, + "commentStart": 1147, + "end": 1153, + "start": 1147, "type": "TagDeclarator", "value": "seg05" }, @@ -5366,9 +5477,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1219, - "end": 1225, - "start": 1219, + "commentStart": 1222, + "end": 1228, + "start": 1222, "type": "TagDeclarator", "value": "seg10" }, @@ -5391,9 +5502,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 41.8813 ], "tag": { - "commentStart": 1261, - "end": 1267, - "start": 1261, + "commentStart": 1264, + "end": 1270, + "start": 1264, "type": "TagDeclarator", "value": "seg04" }, @@ -5630,22 +5741,34 @@ description: Variables in memory after executing router-template-cross-bar.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5783,9 +5906,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 2562, - "end": 2583, - "start": 2562, + "commentStart": 2605, + "end": 2626, + "start": 2605, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -5808,9 +5931,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 2681, - "end": 2702, - "start": 2681, + "commentStart": 2721, + "end": 2742, + "start": 2721, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -5833,9 +5956,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 2807, - "end": 2828, - "start": 2807, + "commentStart": 2844, + "end": 2865, + "start": 2844, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -5895,17 +6018,26 @@ description: Variables in memory after executing router-template-cross-bar.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -5917,9 +6049,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 630, - "end": 636, - "start": 630, + "commentStart": 633, + "end": 639, + "start": 633, "type": "TagDeclarator", "value": "seg01" }, @@ -5930,9 +6062,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 738, - "end": 744, - "start": 738, + "commentStart": 741, + "end": 747, + "start": 741, "type": "TagDeclarator", "value": "seg09" }, @@ -5943,9 +6075,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 797, - "end": 803, - "start": 797, + "commentStart": 800, + "end": 806, + "start": 800, "type": "TagDeclarator", "value": "seg03" }, @@ -5956,9 +6088,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 850, - "end": 856, - "start": 850, + "commentStart": 853, + "end": 859, + "start": 853, "type": "TagDeclarator", "value": "seg07" }, @@ -5969,9 +6101,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 951, - "end": 957, - "start": 951, + "commentStart": 954, + "end": 960, + "start": 954, "type": "TagDeclarator", "value": "seg02" }, @@ -5982,9 +6114,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1028, - "end": 1034, - "start": 1028, + "commentStart": 1031, + "end": 1037, + "start": 1031, "type": "TagDeclarator", "value": "seg06" }, @@ -5995,9 +6127,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1088, + "end": 1094, + "start": 1088, "type": "TagDeclarator", "value": "seg08" }, @@ -6008,9 +6140,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1144, - "end": 1150, - "start": 1144, + "commentStart": 1147, + "end": 1153, + "start": 1147, "type": "TagDeclarator", "value": "seg05" }, @@ -6021,9 +6153,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1219, - "end": 1225, - "start": 1219, + "commentStart": 1222, + "end": 1228, + "start": 1222, "type": "TagDeclarator", "value": "seg10" }, @@ -6034,9 +6166,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1261, - "end": 1267, - "start": 1261, + "commentStart": 1264, + "end": 1270, + "start": 1264, "type": "TagDeclarator", "value": "seg04" }, @@ -6120,9 +6252,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 31.8813 ], "tag": { - "commentStart": 630, - "end": 636, - "start": 630, + "commentStart": 633, + "end": 639, + "start": 633, "type": "TagDeclarator", "value": "seg01" }, @@ -6151,9 +6283,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl ], "radius": 11.88125, "tag": { - "commentStart": 738, - "end": 744, - "start": 738, + "commentStart": 741, + "end": 747, + "start": 741, "type": "TagDeclarator", "value": "seg09" }, @@ -6176,9 +6308,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 20.0 ], "tag": { - "commentStart": 797, - "end": 803, - "start": 797, + "commentStart": 800, + "end": 806, + "start": 800, "type": "TagDeclarator", "value": "seg03" }, @@ -6201,9 +6333,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 850, - "end": 856, - "start": 850, + "commentStart": 853, + "end": 859, + "start": 853, "type": "TagDeclarator", "value": "seg07" }, @@ -6226,9 +6358,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 951, - "end": 957, - "start": 951, + "commentStart": 954, + "end": 960, + "start": 954, "type": "TagDeclarator", "value": "seg02" }, @@ -6251,9 +6383,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1028, - "end": 1034, - "start": 1028, + "commentStart": 1031, + "end": 1037, + "start": 1031, "type": "TagDeclarator", "value": "seg06" }, @@ -6276,9 +6408,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1088, + "end": 1094, + "start": 1088, "type": "TagDeclarator", "value": "seg08" }, @@ -6301,9 +6433,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1144, - "end": 1150, - "start": 1144, + "commentStart": 1147, + "end": 1153, + "start": 1147, "type": "TagDeclarator", "value": "seg05" }, @@ -6326,9 +6458,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1219, - "end": 1225, - "start": 1219, + "commentStart": 1222, + "end": 1228, + "start": 1222, "type": "TagDeclarator", "value": "seg10" }, @@ -6351,9 +6483,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 41.8813 ], "tag": { - "commentStart": 1261, - "end": 1267, - "start": 1261, + "commentStart": 1264, + "end": 1270, + "start": 1264, "type": "TagDeclarator", "value": "seg04" }, @@ -6590,22 +6722,34 @@ description: Variables in memory after executing router-template-cross-bar.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6743,9 +6887,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 3154, - "end": 3175, - "start": 3154, + "commentStart": 3214, + "end": 3235, + "start": 3214, "type": "TagDeclarator", "value": "rectangleSegmentA003" }, @@ -6768,9 +6912,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 3273, - "end": 3294, - "start": 3273, + "commentStart": 3330, + "end": 3351, + "start": 3330, "type": "TagDeclarator", "value": "rectangleSegmentB003" }, @@ -6793,9 +6937,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 3399, - "end": 3420, - "start": 3399, + "commentStart": 3453, + "end": 3474, + "start": 3453, "type": "TagDeclarator", "value": "rectangleSegmentC003" }, @@ -6855,17 +6999,26 @@ description: Variables in memory after executing router-template-cross-bar.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -6877,9 +7030,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1975, - "end": 1996, - "start": 1975, + "commentStart": 2001, + "end": 2022, + "start": 2001, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -6890,9 +7043,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2094, - "end": 2115, - "start": 2094, + "commentStart": 2117, + "end": 2138, + "start": 2117, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -6903,9 +7056,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2220, - "end": 2241, - "start": 2220, + "commentStart": 2240, + "end": 2261, + "start": 2240, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -6933,9 +7086,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 1975, - "end": 1996, - "start": 1975, + "commentStart": 2001, + "end": 2022, + "start": 2001, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -6958,9 +7111,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 0.0 ], "tag": { - "commentStart": 2094, - "end": 2115, - "start": 2094, + "commentStart": 2117, + "end": 2138, + "start": 2117, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -6983,9 +7136,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 2220, - "end": 2241, - "start": 2220, + "commentStart": 2240, + "end": 2261, + "start": 2240, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -7045,17 +7198,26 @@ description: Variables in memory after executing router-template-cross-bar.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -7067,9 +7229,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 630, - "end": 636, - "start": 630, + "commentStart": 633, + "end": 639, + "start": 633, "type": "TagDeclarator", "value": "seg01" }, @@ -7080,9 +7242,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 738, - "end": 744, - "start": 738, + "commentStart": 741, + "end": 747, + "start": 741, "type": "TagDeclarator", "value": "seg09" }, @@ -7093,9 +7255,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 797, - "end": 803, - "start": 797, + "commentStart": 800, + "end": 806, + "start": 800, "type": "TagDeclarator", "value": "seg03" }, @@ -7106,9 +7268,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 850, - "end": 856, - "start": 850, + "commentStart": 853, + "end": 859, + "start": 853, "type": "TagDeclarator", "value": "seg07" }, @@ -7119,9 +7281,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 951, - "end": 957, - "start": 951, + "commentStart": 954, + "end": 960, + "start": 954, "type": "TagDeclarator", "value": "seg02" }, @@ -7132,9 +7294,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1028, - "end": 1034, - "start": 1028, + "commentStart": 1031, + "end": 1037, + "start": 1031, "type": "TagDeclarator", "value": "seg06" }, @@ -7145,9 +7307,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1088, + "end": 1094, + "start": 1088, "type": "TagDeclarator", "value": "seg08" }, @@ -7158,9 +7320,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1144, - "end": 1150, - "start": 1144, + "commentStart": 1147, + "end": 1153, + "start": 1147, "type": "TagDeclarator", "value": "seg05" }, @@ -7171,9 +7333,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1219, - "end": 1225, - "start": 1219, + "commentStart": 1222, + "end": 1228, + "start": 1222, "type": "TagDeclarator", "value": "seg10" }, @@ -7184,9 +7346,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1261, - "end": 1267, - "start": 1261, + "commentStart": 1264, + "end": 1270, + "start": 1264, "type": "TagDeclarator", "value": "seg04" }, @@ -7270,9 +7432,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 31.8813 ], "tag": { - "commentStart": 630, - "end": 636, - "start": 630, + "commentStart": 633, + "end": 639, + "start": 633, "type": "TagDeclarator", "value": "seg01" }, @@ -7301,9 +7463,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl ], "radius": 11.88125, "tag": { - "commentStart": 738, - "end": 744, - "start": 738, + "commentStart": 741, + "end": 747, + "start": 741, "type": "TagDeclarator", "value": "seg09" }, @@ -7326,9 +7488,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 20.0 ], "tag": { - "commentStart": 797, - "end": 803, - "start": 797, + "commentStart": 800, + "end": 806, + "start": 800, "type": "TagDeclarator", "value": "seg03" }, @@ -7351,9 +7513,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 850, - "end": 856, - "start": 850, + "commentStart": 853, + "end": 859, + "start": 853, "type": "TagDeclarator", "value": "seg07" }, @@ -7376,9 +7538,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl -10.0 ], "tag": { - "commentStart": 951, - "end": 957, - "start": 951, + "commentStart": 954, + "end": 960, + "start": 954, "type": "TagDeclarator", "value": "seg02" }, @@ -7401,9 +7563,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1028, - "end": 1034, - "start": 1028, + "commentStart": 1031, + "end": 1037, + "start": 1031, "type": "TagDeclarator", "value": "seg06" }, @@ -7426,9 +7588,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 10.9406 ], "tag": { - "commentStart": 1085, - "end": 1091, - "start": 1085, + "commentStart": 1088, + "end": 1094, + "start": 1088, "type": "TagDeclarator", "value": "seg08" }, @@ -7451,9 +7613,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1144, - "end": 1150, - "start": 1144, + "commentStart": 1147, + "end": 1153, + "start": 1147, "type": "TagDeclarator", "value": "seg05" }, @@ -7476,9 +7638,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 30.9406 ], "tag": { - "commentStart": 1219, - "end": 1225, - "start": 1219, + "commentStart": 1222, + "end": 1228, + "start": 1222, "type": "TagDeclarator", "value": "seg10" }, @@ -7501,9 +7663,9 @@ description: Variables in memory after executing router-template-cross-bar.kcl 41.8813 ], "tag": { - "commentStart": 1261, - "end": 1267, - "start": 1261, + "commentStart": 1264, + "end": 1270, + "start": 1264, "type": "TagDeclarator", "value": "seg04" }, @@ -7740,22 +7902,34 @@ description: Variables in memory after executing router-template-cross-bar.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7930,21 +8104,39 @@ description: Variables in memory after executing router-template-cross-bar.kcl "type": "Number", "value": 20.75, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "templateDiameter": { "type": "Number", "value": 17.4625, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "templateGap": { "type": "Number", "value": 1.8812, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "templateThickness": { diff --git a/rust/kcl-lib/tests/kcl_samples/router-template-slate/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/router-template-slate/artifact_commands.snap index a1bc94bf9..189e881a0 100644 --- a/rust/kcl-lib/tests/kcl_samples/router-template-slate/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/router-template-slate/artifact_commands.snap @@ -356,7 +356,8 @@ description: Artifact commands router-template-slate.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -737,7 +738,8 @@ description: Artifact commands router-template-slate.kcl "type": "extrude", "target": "[uuid]", "distance": 7.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -978,7 +980,8 @@ description: Artifact commands router-template-slate.kcl "type": "extrude", "target": "[uuid]", "distance": 7.5, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/router-template-slate/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/router-template-slate/artifact_graph_flowchart.snap.md index 311957b2f..1b3ec3dd1 100644 --- a/rust/kcl-lib/tests/kcl_samples/router-template-slate/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/router-template-slate/artifact_graph_flowchart.snap.md @@ -1,42 +1,42 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[534, 577, 0]"] - 3["Segment
[583, 622, 0]"] - 4["Segment
[628, 726, 0]"] - 5["Segment
[732, 808, 0]"] - 6["Segment
[814, 883, 0]"] - 7["Segment
[889, 929, 0]"] - 8["Segment
[935, 971, 0]"] - 9["Segment
[1011, 1041, 0]"] - 10["Segment
[1047, 1076, 0]"] - 11["Segment
[1082, 1111, 0]"] - 12["Segment
[1117, 1146, 0]"] - 13["Segment
[1152, 1252, 0]"] - 14["Segment
[1258, 1314, 0]"] - 15["Segment
[1320, 1327, 0]"] + 2["Path
[537, 580, 0]"] + 3["Segment
[586, 625, 0]"] + 4["Segment
[631, 729, 0]"] + 5["Segment
[735, 811, 0]"] + 6["Segment
[817, 886, 0]"] + 7["Segment
[892, 932, 0]"] + 8["Segment
[938, 974, 0]"] + 9["Segment
[1014, 1044, 0]"] + 10["Segment
[1050, 1079, 0]"] + 11["Segment
[1085, 1114, 0]"] + 12["Segment
[1120, 1149, 0]"] + 13["Segment
[1155, 1255, 0]"] + 14["Segment
[1261, 1317, 0]"] + 15["Segment
[1323, 1330, 0]"] 16[Solid2d] end subgraph path52 [Path] - 52["Path
[1482, 1582, 0]"] - 53["Segment
[1588, 1635, 0]"] - 54["Segment
[1641, 1756, 0]"] - 55["Segment
[1762, 1882, 0]"] - 56["Segment
[1888, 1944, 0]"] - 57["Segment
[1950, 1957, 0]"] + 52["Path
[1490, 1590, 0]"] + 53["Segment
[1596, 1643, 0]"] + 54["Segment
[1649, 1761, 0]"] + 55["Segment
[1767, 1884, 0]"] + 56["Segment
[1890, 1946, 0]"] + 57["Segment
[1952, 1959, 0]"] 58[Solid2d] end subgraph path74 [Path] - 74["Path
[2114, 2213, 0]"] - 75["Segment
[2219, 2265, 0]"] - 76["Segment
[2271, 2363, 0]"] - 77["Segment
[2369, 2466, 0]"] - 78["Segment
[2472, 2528, 0]"] - 79["Segment
[2534, 2541, 0]"] + 74["Path
[2121, 2220, 0]"] + 75["Segment
[2226, 2272, 0]"] + 76["Segment
[2278, 2361, 0]"] + 77["Segment
[2367, 2455, 0]"] + 78["Segment
[2461, 2517, 0]"] + 79["Segment
[2523, 2530, 0]"] 80[Solid2d] end - 1["Plane
[511, 528, 0]"] - 17["Sweep Extrusion
[1370, 1400, 0]"] + 1["Plane
[514, 531, 0]"] + 17["Sweep Extrusion
[1373, 1403, 0]"] 18[Wall] 19[Wall] 20[Wall] @@ -71,7 +71,7 @@ flowchart LR 49["SweepEdge Opposite"] 50["SweepEdge Adjacent"] 51["SweepEdge Opposite"] - 59["Sweep Extrusion
[2001, 2033, 0]"] + 59["Sweep Extrusion
[2003, 2035, 0]"] 60[Wall] 61[Wall] 62[Wall] @@ -86,7 +86,7 @@ flowchart LR 71["SweepEdge Adjacent"] 72["SweepEdge Opposite"] 73["SweepEdge Adjacent"] - 81["Sweep Extrusion
[2584, 2616, 0]"] + 81["Sweep Extrusion
[2573, 2605, 0]"] 82[Wall] 83[Wall] 84[Wall] @@ -101,8 +101,8 @@ flowchart LR 93["SweepEdge Adjacent"] 94["SweepEdge Opposite"] 95["SweepEdge Adjacent"] - 96["StartSketchOnFace
[1442, 1476, 0]"] - 97["StartSketchOnFace
[2074, 2108, 0]"] + 96["StartSketchOnFace
[1445, 1484, 0]"] + 97["StartSketchOnFace
[2076, 2115, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/router-template-slate/ast.snap b/rust/kcl-lib/tests/kcl_samples/router-template-slate/ast.snap index 3877cacb4..783978759 100644 --- a/rust/kcl-lib/tests/kcl_samples/router-template-slate/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/router-template-slate/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing router-template-slate.kcl "Ok": { "body": [ { - "commentStart": 126, + "commentStart": 0, "declaration": { - "commentStart": 149, + "commentStart": 0, "end": 0, "id": { - "commentStart": 149, + "commentStart": 0, "end": 0, "name": "routerDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 166, + "commentStart": 0, "end": 0, "raw": "12.7", "start": 0, @@ -42,79 +42,72 @@ description: Result of parsing router-template-slate.kcl "type": "VariableDeclaration" }, { - "commentStart": 171, + "commentStart": 0, "declaration": { - "commentStart": 171, + "commentStart": 0, "end": 0, "id": { - "commentStart": 171, + "commentStart": 0, "end": 0, "name": "templateDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 190, - "end": 0, - "left": { - "commentStart": 190, - "end": 0, - "left": { - "commentStart": 190, + "arguments": [ + { + "commentStart": 0, "end": 0, - "raw": "11", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 11.0, - "suffix": "None" - } - }, - "operator": "/", - "right": { - "commentStart": 195, - "end": 0, - "raw": "16", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 16.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "*", - "right": { - "arguments": [], - "callee": { - "abs_path": false, - "commentStart": 200, - "end": 0, - "name": { - "commentStart": 200, + "left": { + "commentStart": 0, "end": 0, - "name": "inch", + "raw": "11", "start": 0, - "type": "Identifier" + "type": "Literal", + "type": "Literal", + "value": { + "value": 11.0, + "suffix": "None" + } + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "16", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 16.0, + "suffix": "None" + } }, - "path": [], "start": 0, - "type": "Name" - }, - "commentStart": 200, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "fromInches", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "Name" }, + "commentStart": 0, + "end": 0, "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "CallExpression", + "type": "CallExpression" }, "start": 0, "type": "VariableDeclarator" @@ -126,22 +119,22 @@ description: Result of parsing router-template-slate.kcl "type": "VariableDeclaration" }, { - "commentStart": 207, + "commentStart": 0, "declaration": { - "commentStart": 207, + "commentStart": 0, "end": 0, "id": { - "commentStart": 207, + "commentStart": 0, "end": 0, "name": "slateWidthHalf", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 224, + "commentStart": 0, "end": 0, "left": { - "commentStart": 224, + "commentStart": 0, "end": 0, "raw": "41.5", "start": 0, @@ -154,7 +147,7 @@ description: Result of parsing router-template-slate.kcl }, "operator": "/", "right": { - "commentStart": 231, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -179,22 +172,22 @@ description: Result of parsing router-template-slate.kcl "type": "VariableDeclaration" }, { - "commentStart": 233, + "commentStart": 0, "declaration": { - "commentStart": 233, + "commentStart": 0, "end": 0, "id": { - "commentStart": 233, + "commentStart": 0, "end": 0, "name": "minClampingDistance", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 255, + "commentStart": 0, "end": 0, "left": { - "commentStart": 255, + "commentStart": 0, "end": 0, "raw": "50", "start": 0, @@ -207,7 +200,7 @@ description: Result of parsing router-template-slate.kcl }, "operator": "+", "right": { - "commentStart": 260, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -232,19 +225,19 @@ description: Result of parsing router-template-slate.kcl "type": "VariableDeclaration" }, { - "commentStart": 263, + "commentStart": 0, "declaration": { - "commentStart": 263, + "commentStart": 0, "end": 0, "id": { - "commentStart": 263, + "commentStart": 0, "end": 0, "name": "templateThickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 283, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -265,19 +258,19 @@ description: Result of parsing router-template-slate.kcl "type": "VariableDeclaration" }, { - "commentStart": 286, + "commentStart": 0, "declaration": { - "commentStart": 286, + "commentStart": 0, "end": 0, "id": { - "commentStart": 286, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 295, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -298,19 +291,19 @@ description: Result of parsing router-template-slate.kcl "type": "VariableDeclaration" }, { - "commentStart": 298, + "commentStart": 0, "declaration": { - "commentStart": 298, + "commentStart": 0, "end": 0, "id": { - "commentStart": 298, + "commentStart": 0, "end": 0, "name": "depth", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 306, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -331,32 +324,32 @@ description: Result of parsing router-template-slate.kcl "type": "VariableDeclaration" }, { - "commentStart": 308, + "commentStart": 0, "declaration": { - "commentStart": 335, + "commentStart": 0, "end": 0, "id": { - "commentStart": 335, + "commentStart": 0, "end": 0, "name": "templateGap", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 350, + "commentStart": 0, "end": 0, "left": { - "commentStart": 350, + "commentStart": 0, "end": 0, "left": { - "commentStart": 350, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 350, + "commentStart": 0, "end": 0, "name": { - "commentStart": 350, + "commentStart": 0, "end": 0, "name": "templateDiameter", "start": 0, @@ -370,10 +363,10 @@ description: Result of parsing router-template-slate.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 369, + "commentStart": 0, "end": 0, "name": { - "commentStart": 369, + "commentStart": 0, "end": 0, "name": "routerDiameter", "start": 0, @@ -390,7 +383,7 @@ description: Result of parsing router-template-slate.kcl }, "operator": "/", "right": { - "commentStart": 387, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -407,7 +400,7 @@ description: Result of parsing router-template-slate.kcl }, "operator": "-", "right": { - "commentStart": 391, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -437,26 +430,26 @@ description: Result of parsing router-template-slate.kcl "type": "VariableDeclaration" }, { - "commentStart": 395, + "commentStart": 0, "declaration": { - "commentStart": 395, + "commentStart": 0, "end": 0, "id": { - "commentStart": 395, + "commentStart": 0, "end": 0, "name": "length001", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 407, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 407, + "commentStart": 0, "end": 0, "name": { - "commentStart": 407, + "commentStart": 0, "end": 0, "name": "slateWidthHalf", "start": 0, @@ -470,10 +463,10 @@ description: Result of parsing router-template-slate.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 424, + "commentStart": 0, "end": 0, "name": { - "commentStart": 424, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -498,26 +491,26 @@ description: Result of parsing router-template-slate.kcl "type": "VariableDeclaration" }, { - "commentStart": 431, + "commentStart": 0, "declaration": { - "commentStart": 431, + "commentStart": 0, "end": 0, "id": { - "commentStart": 431, + "commentStart": 0, "end": 0, "name": "length002", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 443, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 443, + "commentStart": 0, "end": 0, "name": { - "commentStart": 443, + "commentStart": 0, "end": 0, "name": "depth", "start": 0, @@ -531,10 +524,10 @@ description: Result of parsing router-template-slate.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 451, + "commentStart": 0, "end": 0, "name": { - "commentStart": 451, + "commentStart": 0, "end": 0, "name": "minClampingDistance", "start": 0, @@ -559,12 +552,12 @@ description: Result of parsing router-template-slate.kcl "type": "VariableDeclaration" }, { - "commentStart": 470, + "commentStart": 0, "declaration": { - "commentStart": 499, + "commentStart": 0, "end": 0, "id": { - "commentStart": 499, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -576,10 +569,10 @@ description: Result of parsing router-template-slate.kcl "arguments": [ { "abs_path": false, - "commentStart": 525, + "commentStart": 0, "end": 0, "name": { - "commentStart": 525, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -593,10 +586,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 511, + "commentStart": 0, "end": 0, "name": { - "commentStart": 511, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -606,7 +599,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 511, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -615,10 +608,10 @@ description: Result of parsing router-template-slate.kcl { "arguments": [ { - "commentStart": 549, + "commentStart": 0, "elements": [ { - "commentStart": 550, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -630,14 +623,14 @@ description: Result of parsing router-template-slate.kcl } }, { - "commentStart": 553, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 553, + "commentStart": 0, "end": 0, "name": { - "commentStart": 553, + "commentStart": 0, "end": 0, "name": "depth", "start": 0, @@ -651,10 +644,10 @@ description: Result of parsing router-template-slate.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 561, + "commentStart": 0, "end": 0, "name": { - "commentStart": 561, + "commentStart": 0, "end": 0, "name": "templateGap", "start": 0, @@ -676,7 +669,7 @@ description: Result of parsing router-template-slate.kcl "type": "ArrayExpression" }, { - "commentStart": 575, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -685,10 +678,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 534, + "commentStart": 0, "end": 0, "name": { - "commentStart": 534, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -698,7 +691,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 534, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -709,7 +702,7 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 589, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -717,10 +710,10 @@ description: Result of parsing router-template-slate.kcl }, "arg": { "abs_path": false, - "commentStart": 598, + "commentStart": 0, "end": 0, "name": { - "commentStart": 598, + "commentStart": 0, "end": 0, "name": "length001", "start": 0, @@ -735,14 +728,14 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 609, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 615, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -753,10 +746,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 583, + "commentStart": 0, "end": 0, "name": { - "commentStart": 583, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -766,7 +759,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 583, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -776,14 +769,14 @@ description: Result of parsing router-template-slate.kcl { "arguments": [ { - "commentStart": 632, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 641, + "commentStart": 0, "end": 0, "key": { - "commentStart": 641, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -792,7 +785,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 652, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -805,10 +798,10 @@ description: Result of parsing router-template-slate.kcl } }, { - "commentStart": 662, + "commentStart": 0, "end": 0, "key": { - "commentStart": 662, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -817,7 +810,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 675, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -830,10 +823,10 @@ description: Result of parsing router-template-slate.kcl } }, { - "commentStart": 686, + "commentStart": 0, "end": 0, "key": { - "commentStart": 686, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -842,14 +835,14 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 695, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 695, + "commentStart": 0, "end": 0, "name": { - "commentStart": 695, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -863,10 +856,10 @@ description: Result of parsing router-template-slate.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 704, + "commentStart": 0, "end": 0, "name": { - "commentStart": 704, + "commentStart": 0, "end": 0, "name": "templateGap", "start": 0, @@ -888,7 +881,7 @@ description: Result of parsing router-template-slate.kcl "type": "ObjectExpression" }, { - "commentStart": 724, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -897,10 +890,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 628, + "commentStart": 0, "end": 0, "name": { - "commentStart": 628, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -910,7 +903,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 628, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -921,25 +914,25 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 738, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 752, + "commentStart": 0, "end": 0, "left": { - "commentStart": 752, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 753, + "commentStart": 0, "end": 0, "name": { - "commentStart": 753, + "commentStart": 0, "end": 0, "name": "templateGap", "start": 0, @@ -950,7 +943,7 @@ description: Result of parsing router-template-slate.kcl "type": "Name", "type": "Name" }, - "commentStart": 752, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -959,7 +952,7 @@ description: Result of parsing router-template-slate.kcl }, "operator": "*", "right": { - "commentStart": 767, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -976,14 +969,14 @@ description: Result of parsing router-template-slate.kcl }, "operator": "-", "right": { - "commentStart": 772, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 772, + "commentStart": 0, "end": 0, "name": { - "commentStart": 772, + "commentStart": 0, "end": 0, "name": "templateDiameter", "start": 0, @@ -996,7 +989,7 @@ description: Result of parsing router-template-slate.kcl }, "operator": "/", "right": { - "commentStart": 791, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1019,14 +1012,14 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 795, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 801, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1037,10 +1030,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 732, + "commentStart": 0, "end": 0, "name": { - "commentStart": 732, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1050,7 +1043,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 732, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1062,21 +1055,21 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 820, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 834, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 834, + "commentStart": 0, "end": 0, "name": { - "commentStart": 834, + "commentStart": 0, "end": 0, "name": "slateWidthHalf", "start": 0, @@ -1090,10 +1083,10 @@ description: Result of parsing router-template-slate.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 851, + "commentStart": 0, "end": 0, "name": { - "commentStart": 851, + "commentStart": 0, "end": 0, "name": "templateThickness", "start": 0, @@ -1112,14 +1105,14 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 870, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 876, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1130,10 +1123,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 814, + "commentStart": 0, "end": 0, "name": { - "commentStart": 814, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1143,7 +1136,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 814, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1155,7 +1148,7 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 895, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1164,10 +1157,10 @@ description: Result of parsing router-template-slate.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 905, + "commentStart": 0, "end": 0, "name": { - "commentStart": 905, + "commentStart": 0, "end": 0, "name": "length002", "start": 0, @@ -1178,7 +1171,7 @@ description: Result of parsing router-template-slate.kcl "type": "Name", "type": "Name" }, - "commentStart": 904, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1189,14 +1182,14 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 916, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 922, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1207,10 +1200,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 889, + "commentStart": 0, "end": 0, "name": { - "commentStart": 889, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1220,7 +1213,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 889, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1232,14 +1225,14 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 941, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 955, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1254,14 +1247,14 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 958, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 964, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1272,10 +1265,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 935, + "commentStart": 0, "end": 0, "name": { - "commentStart": 935, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1285,7 +1278,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 935, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1297,7 +1290,7 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1017, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1308,10 +1301,10 @@ description: Result of parsing router-template-slate.kcl "arguments": [ { "abs_path": false, - "commentStart": 1034, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1034, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -1325,10 +1318,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1027, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1027, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -1338,13 +1331,13 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1027, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - "commentStart": 1026, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1355,10 +1348,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1011, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1011, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1368,7 +1361,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1011, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1380,7 +1373,7 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1053, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1390,10 +1383,10 @@ description: Result of parsing router-template-slate.kcl "arguments": [ { "abs_path": false, - "commentStart": 1069, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1069, + "commentStart": 0, "end": 0, "name": "seg03", "start": 0, @@ -1407,10 +1400,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1062, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1062, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -1420,7 +1413,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1062, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1430,10 +1423,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1047, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1047, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1443,7 +1436,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1047, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1455,7 +1448,7 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1088, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1465,10 +1458,10 @@ description: Result of parsing router-template-slate.kcl "arguments": [ { "abs_path": false, - "commentStart": 1104, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1104, + "commentStart": 0, "end": 0, "name": "seg04", "start": 0, @@ -1482,10 +1475,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1097, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1097, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -1495,7 +1488,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1097, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1505,10 +1498,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1082, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1082, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1518,7 +1511,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1082, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1530,7 +1523,7 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1123, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1540,10 +1533,10 @@ description: Result of parsing router-template-slate.kcl "arguments": [ { "abs_path": false, - "commentStart": 1139, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1139, + "commentStart": 0, "end": 0, "name": "seg05", "start": 0, @@ -1557,10 +1550,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1132, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1132, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -1570,7 +1563,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1132, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1580,10 +1573,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1117, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1117, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1593,7 +1586,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1117, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1603,14 +1596,14 @@ description: Result of parsing router-template-slate.kcl { "arguments": [ { - "commentStart": 1156, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 1165, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1165, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -1619,7 +1612,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1176, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1632,10 +1625,10 @@ description: Result of parsing router-template-slate.kcl } }, { - "commentStart": 1187, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1187, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -1644,7 +1637,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1200, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -1657,10 +1650,10 @@ description: Result of parsing router-template-slate.kcl } }, { - "commentStart": 1212, + "commentStart": 0, "end": 0, "key": { - "commentStart": 1212, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -1669,14 +1662,14 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 1221, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1221, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1221, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -1690,10 +1683,10 @@ description: Result of parsing router-template-slate.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1230, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1230, + "commentStart": 0, "end": 0, "name": "templateGap", "start": 0, @@ -1715,7 +1708,7 @@ description: Result of parsing router-template-slate.kcl "type": "ObjectExpression" }, { - "commentStart": 1250, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1724,10 +1717,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1152, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1152, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -1737,7 +1730,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1152, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1748,19 +1741,19 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1263, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1277, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1292, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1769,10 +1762,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1278, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1278, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -1782,7 +1775,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1278, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1791,7 +1784,7 @@ description: Result of parsing router-template-slate.kcl { "arguments": [ { - "commentStart": 1310, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1800,10 +1793,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1296, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1296, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -1813,7 +1806,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1296, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1829,10 +1822,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1258, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1258, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1842,7 +1835,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1258, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1853,10 +1846,10 @@ description: Result of parsing router-template-slate.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1320, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1320, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1866,20 +1859,20 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1320, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 511, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "7": [ { - "commentStart": 973, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1892,7 +1885,7 @@ description: Result of parsing router-template-slate.kcl ], "14": [ { - "commentStart": 1327, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1925,12 +1918,12 @@ description: Result of parsing router-template-slate.kcl "type": "VariableDeclaration" }, { - "commentStart": 1357, + "commentStart": 0, "declaration": { - "commentStart": 1357, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1357, + "commentStart": 0, "end": 0, "name": "extrude001", "start": 0, @@ -1941,14 +1934,14 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1389, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1398, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -1963,10 +1956,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1370, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1370, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1976,17 +1969,17 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1370, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1378, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1378, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -2008,12 +2001,12 @@ description: Result of parsing router-template-slate.kcl "type": "VariableDeclaration" }, { - "commentStart": 1400, + "commentStart": 0, "declaration": { - "commentStart": 1430, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1430, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -2024,37 +2017,38 @@ description: Result of parsing router-template-slate.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1456, - "end": 0, - "name": { - "commentStart": 1456, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 1468, - "end": 0, - "raw": "'START'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "START" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1442, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1442, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2064,24 +2058,40 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1442, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 1497, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 1507, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1507, + "commentStart": 0, "end": 0, "name": "slateWidthHalf", "start": 0, @@ -2092,7 +2102,7 @@ description: Result of parsing router-template-slate.kcl "type": "Name", "type": "Name" }, - "commentStart": 1506, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2100,18 +2110,18 @@ description: Result of parsing router-template-slate.kcl "type": "UnaryExpression" }, { - "commentStart": 1530, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1530, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1531, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1531, + "commentStart": 0, "end": 0, "name": "templateGap", "start": 0, @@ -2122,7 +2132,7 @@ description: Result of parsing router-template-slate.kcl "type": "Name", "type": "Name" }, - "commentStart": 1530, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2131,7 +2141,7 @@ description: Result of parsing router-template-slate.kcl }, "operator": "*", "right": { - "commentStart": 1545, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2148,14 +2158,14 @@ description: Result of parsing router-template-slate.kcl }, "operator": "-", "right": { - "commentStart": 1550, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1550, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1550, + "commentStart": 0, "end": 0, "name": "templateDiameter", "start": 0, @@ -2168,7 +2178,7 @@ description: Result of parsing router-template-slate.kcl }, "operator": "/", "right": { - "commentStart": 1569, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2194,7 +2204,7 @@ description: Result of parsing router-template-slate.kcl "type": "ArrayExpression" }, { - "commentStart": 1580, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2203,10 +2213,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1482, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1482, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -2216,7 +2226,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1482, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2227,7 +2237,7 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1594, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2235,7 +2245,7 @@ description: Result of parsing router-template-slate.kcl }, "arg": { "argument": { - "commentStart": 1604, + "commentStart": 0, "end": 0, "raw": "7", "start": 0, @@ -2246,7 +2256,7 @@ description: Result of parsing router-template-slate.kcl "suffix": "None" } }, - "commentStart": 1603, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2257,14 +2267,14 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 1607, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1613, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2275,10 +2285,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1588, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1588, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2288,7 +2298,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1588, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2298,140 +2308,25 @@ description: Result of parsing router-template-slate.kcl { "arguments": [ { - "commentStart": 1652, - "elements": [ - { - "commentStart": 1661, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 1668, - "end": 0, - "name": { - "commentStart": 1668, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1661, - "end": 0, - "name": { - "commentStart": 1661, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1661, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "+", - "right": { - "commentStart": 1692, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "abs_path": false, - "commentStart": 1703, - "end": 0, - "name": { - "commentStart": 1703, - "end": 0, - "name": "minClampingDistance", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1731, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1734, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentB001" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1641, - "end": 0, - "name": { - "commentStart": 1641, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1641, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1773, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 1789, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1789, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA001", "start": 0, @@ -2445,10 +2340,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1782, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1782, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -2458,88 +2353,81 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1782, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 1827, - "end": 0, - "name": { - "commentStart": 1827, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1820, - "end": 0, - "name": { - "commentStart": 1820, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1820, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 1819, + "operator": "+", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 1857, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "minClampingDistance", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 1860, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentC001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentB001" + } } ], "callee": { "abs_path": false, - "commentStart": 1762, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1762, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -2549,30 +2437,182 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1762, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1893, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentC001" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1907, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1922, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2581,10 +2621,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1908, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1908, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -2594,7 +2634,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1908, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2603,7 +2643,7 @@ description: Result of parsing router-template-slate.kcl { "arguments": [ { - "commentStart": 1940, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2612,10 +2652,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1926, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1926, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -2625,7 +2665,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1926, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2641,10 +2681,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 1888, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1888, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2654,7 +2694,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1888, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2665,10 +2705,10 @@ description: Result of parsing router-template-slate.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1950, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1950, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2678,20 +2718,20 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 1950, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1442, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "6": [ { - "commentStart": 1957, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2724,12 +2764,12 @@ description: Result of parsing router-template-slate.kcl "type": "VariableDeclaration" }, { - "commentStart": 1988, + "commentStart": 0, "declaration": { - "commentStart": 1988, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1988, + "commentStart": 0, "end": 0, "name": "extrude002", "start": 0, @@ -2740,14 +2780,14 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 2020, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2029, + "commentStart": 0, "end": 0, "raw": "7.5", "start": 0, @@ -2762,10 +2802,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 2001, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2001, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2775,17 +2815,17 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 2001, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2009, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2009, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -2807,12 +2847,12 @@ description: Result of parsing router-template-slate.kcl "type": "VariableDeclaration" }, { - "commentStart": 2033, + "commentStart": 0, "declaration": { - "commentStart": 2062, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2062, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -2823,37 +2863,38 @@ description: Result of parsing router-template-slate.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 2088, - "end": 0, - "name": { - "commentStart": 2088, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 2100, - "end": 0, - "raw": "'START'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "START" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 2074, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2074, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -2863,23 +2904,39 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 2074, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 2129, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 2138, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2138, + "commentStart": 0, "end": 0, "name": "slateWidthHalf", "start": 0, @@ -2891,18 +2948,18 @@ description: Result of parsing router-template-slate.kcl "type": "Name" }, { - "commentStart": 2161, + "commentStart": 0, "end": 0, "left": { - "commentStart": 2161, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 2162, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2162, + "commentStart": 0, "end": 0, "name": "templateGap", "start": 0, @@ -2913,7 +2970,7 @@ description: Result of parsing router-template-slate.kcl "type": "Name", "type": "Name" }, - "commentStart": 2161, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2922,7 +2979,7 @@ description: Result of parsing router-template-slate.kcl }, "operator": "*", "right": { - "commentStart": 2176, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2939,14 +2996,14 @@ description: Result of parsing router-template-slate.kcl }, "operator": "-", "right": { - "commentStart": 2181, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2181, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2181, + "commentStart": 0, "end": 0, "name": "templateDiameter", "start": 0, @@ -2959,7 +3016,7 @@ description: Result of parsing router-template-slate.kcl }, "operator": "/", "right": { - "commentStart": 2200, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2985,7 +3042,7 @@ description: Result of parsing router-template-slate.kcl "type": "ArrayExpression" }, { - "commentStart": 2211, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2994,10 +3051,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 2114, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2114, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -3007,7 +3064,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 2114, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3018,14 +3075,14 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 2225, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2234, + "commentStart": 0, "end": 0, "raw": "7", "start": 0, @@ -3040,14 +3097,14 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 2237, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2243, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -3058,10 +3115,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 2219, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2219, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -3071,7 +3128,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 2219, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3081,132 +3138,25 @@ description: Result of parsing router-template-slate.kcl { "arguments": [ { - "commentStart": 2282, - "elements": [ - { - "commentStart": 2291, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 2298, - "end": 0, - "name": { - "commentStart": 2298, - "end": 0, - "name": "rectangleSegmentA002", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2291, - "end": 0, - "name": { - "commentStart": 2291, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2291, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 2322, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "abs_path": false, - "commentStart": 2333, - "end": 0, - "name": { - "commentStart": 2333, - "end": 0, - "name": "minClampingDistance", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2361, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2271, - "end": 0, - "name": { - "commentStart": 2271, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2271, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 2380, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 2396, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2396, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA002", "start": 0, @@ -3220,10 +3170,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 2389, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2389, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -3233,80 +3183,63 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 2389, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 2434, - "end": 0, - "name": { - "commentStart": 2434, - "end": 0, - "name": "rectangleSegmentA002", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2427, - "end": 0, - "name": { - "commentStart": 2427, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2427, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 2426, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 2464, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "minClampingDistance", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 2369, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2369, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -3316,30 +3249,164 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 2369, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2477, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA002", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA002", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2491, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 2506, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3348,10 +3415,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 2492, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2492, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -3361,7 +3428,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 2492, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3370,7 +3437,7 @@ description: Result of parsing router-template-slate.kcl { "arguments": [ { - "commentStart": 2524, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3379,10 +3446,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 2510, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2510, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -3392,7 +3459,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 2510, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3408,10 +3475,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 2472, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2472, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3421,7 +3488,7 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 2472, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3432,10 +3499,10 @@ description: Result of parsing router-template-slate.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2534, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2534, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -3445,20 +3512,20 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 2534, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 2074, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "6": [ { - "commentStart": 2541, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3491,12 +3558,12 @@ description: Result of parsing router-template-slate.kcl "type": "VariableDeclaration" }, { - "commentStart": 2571, + "commentStart": 0, "declaration": { - "commentStart": 2571, + "commentStart": 0, "end": 0, "id": { - "commentStart": 2571, + "commentStart": 0, "end": 0, "name": "extrude003", "start": 0, @@ -3507,14 +3574,14 @@ description: Result of parsing router-template-slate.kcl { "type": "LabeledArg", "label": { - "commentStart": 2603, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2612, + "commentStart": 0, "end": 0, "raw": "7.5", "start": 0, @@ -3529,10 +3596,10 @@ description: Result of parsing router-template-slate.kcl ], "callee": { "abs_path": false, - "commentStart": 2584, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2584, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3542,17 +3609,17 @@ description: Result of parsing router-template-slate.kcl "start": 0, "type": "Name" }, - "commentStart": 2584, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 2592, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2592, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -3581,7 +3648,7 @@ description: Result of parsing router-template-slate.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 94, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -3596,10 +3663,10 @@ description: Result of parsing router-template-slate.kcl ], "properties": [ { - "commentStart": 103, + "commentStart": 0, "end": 0, "key": { - "commentStart": 103, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -3609,10 +3676,10 @@ description: Result of parsing router-template-slate.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 123, + "commentStart": 0, "end": 0, "name": { - "commentStart": 123, + "commentStart": 0, "end": 0, "name": "mm", "start": 0, @@ -3633,7 +3700,7 @@ description: Result of parsing router-template-slate.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 126, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/router-template-slate/ops.snap b/rust/kcl-lib/tests/kcl_samples/router-template-slate/ops.snap index 5f0e48be7..a778d7c9e 100644 --- a/rust/kcl-lib/tests/kcl_samples/router-template-slate/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/router-template-slate/ops.snap @@ -5,7 +5,7 @@ description: Operations executed router-template-slate.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -52,19 +52,10 @@ description: Operations executed router-template-slate.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -72,7 +63,15 @@ description: Operations executed router-template-slate.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -108,19 +107,10 @@ description: Operations executed router-template-slate.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "START" + "value": "start" }, "sourceRange": [] } @@ -128,7 +118,15 @@ description: Operations executed router-template-slate.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/kcl_samples/router-template-slate/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/router-template-slate/program_memory.snap index 8cfd7a236..41e40d2cc 100644 --- a/rust/kcl-lib/tests/kcl_samples/router-template-slate/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/router-template-slate/program_memory.snap @@ -28,9 +28,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 615, - "end": 621, - "start": 615, + "commentStart": 618, + "end": 624, + "start": 618, "type": "TagDeclarator", "value": "seg01" }, @@ -48,9 +48,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 801, - "end": 807, - "start": 801, + "commentStart": 804, + "end": 810, + "start": 804, "type": "TagDeclarator", "value": "seg05" }, @@ -61,9 +61,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 876, - "end": 882, - "start": 876, + "commentStart": 879, + "end": 885, + "start": 879, "type": "TagDeclarator", "value": "seg04" }, @@ -74,9 +74,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 922, - "end": 928, - "start": 922, + "commentStart": 925, + "end": 931, + "start": 925, "type": "TagDeclarator", "value": "seg03" }, @@ -139,9 +139,9 @@ description: Variables in memory after executing router-template-slate.kcl 28.1188 ], "tag": { - "commentStart": 615, - "end": 621, - "start": 615, + "commentStart": 618, + "end": 624, + "start": 618, "type": "TagDeclarator", "value": "seg01" }, @@ -189,9 +189,9 @@ description: Variables in memory after executing router-template-slate.kcl 20.0 ], "tag": { - "commentStart": 801, - "end": 807, - "start": 801, + "commentStart": 804, + "end": 810, + "start": 804, "type": "TagDeclarator", "value": "seg05" }, @@ -214,9 +214,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 876, - "end": 882, - "start": 876, + "commentStart": 879, + "end": 885, + "start": 879, "type": "TagDeclarator", "value": "seg04" }, @@ -239,9 +239,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 922, - "end": 928, - "start": 922, + "commentStart": 925, + "end": 931, + "start": 925, "type": "TagDeclarator", "value": "seg03" }, @@ -264,9 +264,9 @@ description: Variables in memory after executing router-template-slate.kcl -122.4938 ], "tag": { - "commentStart": 964, - "end": 970, - "start": 964, + "commentStart": 967, + "end": 973, + "start": 967, "type": "TagDeclarator", "value": "seg02" }, @@ -427,22 +427,34 @@ description: Variables in memory after executing router-template-slate.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -514,9 +526,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1613, - "end": 1634, - "start": 1613, + "commentStart": 1621, + "end": 1642, + "start": 1621, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -527,9 +539,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1734, - "end": 1755, - "start": 1734, + "commentStart": 1739, + "end": 1760, + "start": 1739, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -540,9 +552,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1860, - "end": 1881, - "start": 1860, + "commentStart": 1862, + "end": 1883, + "start": 1862, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -570,9 +582,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 1613, - "end": 1634, - "start": 1613, + "commentStart": 1621, + "end": 1642, + "start": 1621, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -595,9 +607,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 1734, - "end": 1755, - "start": 1734, + "commentStart": 1739, + "end": 1760, + "start": 1739, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -620,9 +632,9 @@ description: Variables in memory after executing router-template-slate.kcl -92.4938 ], "tag": { - "commentStart": 1860, - "end": 1881, - "start": 1860, + "commentStart": 1862, + "end": 1883, + "start": 1862, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -682,17 +694,26 @@ description: Variables in memory after executing router-template-slate.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -704,9 +725,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 615, - "end": 621, - "start": 615, + "commentStart": 618, + "end": 624, + "start": 618, "type": "TagDeclarator", "value": "seg01" }, @@ -724,9 +745,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 801, - "end": 807, - "start": 801, + "commentStart": 804, + "end": 810, + "start": 804, "type": "TagDeclarator", "value": "seg05" }, @@ -737,9 +758,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 876, - "end": 882, - "start": 876, + "commentStart": 879, + "end": 885, + "start": 879, "type": "TagDeclarator", "value": "seg04" }, @@ -750,9 +771,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 922, - "end": 928, - "start": 922, + "commentStart": 925, + "end": 931, + "start": 925, "type": "TagDeclarator", "value": "seg03" }, @@ -815,9 +836,9 @@ description: Variables in memory after executing router-template-slate.kcl 28.1188 ], "tag": { - "commentStart": 615, - "end": 621, - "start": 615, + "commentStart": 618, + "end": 624, + "start": 618, "type": "TagDeclarator", "value": "seg01" }, @@ -865,9 +886,9 @@ description: Variables in memory after executing router-template-slate.kcl 20.0 ], "tag": { - "commentStart": 801, - "end": 807, - "start": 801, + "commentStart": 804, + "end": 810, + "start": 804, "type": "TagDeclarator", "value": "seg05" }, @@ -890,9 +911,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 876, - "end": 882, - "start": 876, + "commentStart": 879, + "end": 885, + "start": 879, "type": "TagDeclarator", "value": "seg04" }, @@ -915,9 +936,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 922, - "end": 928, - "start": 922, + "commentStart": 925, + "end": 931, + "start": 925, "type": "TagDeclarator", "value": "seg03" }, @@ -940,9 +961,9 @@ description: Variables in memory after executing router-template-slate.kcl -122.4938 ], "tag": { - "commentStart": 964, - "end": 970, - "start": 964, + "commentStart": 967, + "end": 973, + "start": 967, "type": "TagDeclarator", "value": "seg02" }, @@ -1103,22 +1124,34 @@ description: Variables in memory after executing router-template-slate.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1239,9 +1272,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2243, - "end": 2264, - "start": 2243, + "commentStart": 2250, + "end": 2271, + "start": 2250, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -1283,9 +1316,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 2243, - "end": 2264, - "start": 2243, + "commentStart": 2250, + "end": 2271, + "start": 2250, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -1383,17 +1416,26 @@ description: Variables in memory after executing router-template-slate.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1405,9 +1447,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 615, - "end": 621, - "start": 615, + "commentStart": 618, + "end": 624, + "start": 618, "type": "TagDeclarator", "value": "seg01" }, @@ -1425,9 +1467,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 801, - "end": 807, - "start": 801, + "commentStart": 804, + "end": 810, + "start": 804, "type": "TagDeclarator", "value": "seg05" }, @@ -1438,9 +1480,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 876, - "end": 882, - "start": 876, + "commentStart": 879, + "end": 885, + "start": 879, "type": "TagDeclarator", "value": "seg04" }, @@ -1451,9 +1493,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 922, - "end": 928, - "start": 922, + "commentStart": 925, + "end": 931, + "start": 925, "type": "TagDeclarator", "value": "seg03" }, @@ -1516,9 +1558,9 @@ description: Variables in memory after executing router-template-slate.kcl 28.1188 ], "tag": { - "commentStart": 615, - "end": 621, - "start": 615, + "commentStart": 618, + "end": 624, + "start": 618, "type": "TagDeclarator", "value": "seg01" }, @@ -1566,9 +1608,9 @@ description: Variables in memory after executing router-template-slate.kcl 20.0 ], "tag": { - "commentStart": 801, - "end": 807, - "start": 801, + "commentStart": 804, + "end": 810, + "start": 804, "type": "TagDeclarator", "value": "seg05" }, @@ -1591,9 +1633,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 876, - "end": 882, - "start": 876, + "commentStart": 879, + "end": 885, + "start": 879, "type": "TagDeclarator", "value": "seg04" }, @@ -1616,9 +1658,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 922, - "end": 928, - "start": 922, + "commentStart": 925, + "end": 931, + "start": 925, "type": "TagDeclarator", "value": "seg03" }, @@ -1641,9 +1683,9 @@ description: Variables in memory after executing router-template-slate.kcl -122.4938 ], "tag": { - "commentStart": 964, - "end": 970, - "start": 964, + "commentStart": 967, + "end": 973, + "start": 967, "type": "TagDeclarator", "value": "seg02" }, @@ -1804,22 +1846,34 @@ description: Variables in memory after executing router-template-slate.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1924,7 +1978,13 @@ description: Variables in memory after executing router-template-slate.kcl "type": "Number", "value": 10.75, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "length002": { @@ -2040,9 +2100,9 @@ description: Variables in memory after executing router-template-slate.kcl 28.1188 ], "tag": { - "commentStart": 615, - "end": 621, - "start": 615, + "commentStart": 618, + "end": 624, + "start": 618, "type": "TagDeclarator", "value": "seg01" }, @@ -2090,9 +2150,9 @@ description: Variables in memory after executing router-template-slate.kcl 20.0 ], "tag": { - "commentStart": 801, - "end": 807, - "start": 801, + "commentStart": 804, + "end": 810, + "start": 804, "type": "TagDeclarator", "value": "seg05" }, @@ -2115,9 +2175,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 876, - "end": 882, - "start": 876, + "commentStart": 879, + "end": 885, + "start": 879, "type": "TagDeclarator", "value": "seg04" }, @@ -2140,9 +2200,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 922, - "end": 928, - "start": 922, + "commentStart": 925, + "end": 931, + "start": 925, "type": "TagDeclarator", "value": "seg03" }, @@ -2165,9 +2225,9 @@ description: Variables in memory after executing router-template-slate.kcl -122.4938 ], "tag": { - "commentStart": 964, - "end": 970, - "start": 964, + "commentStart": 967, + "end": 973, + "start": 967, "type": "TagDeclarator", "value": "seg02" }, @@ -2328,22 +2388,34 @@ description: Variables in memory after executing router-template-slate.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2412,9 +2484,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 1613, - "end": 1634, - "start": 1613, + "commentStart": 1621, + "end": 1642, + "start": 1621, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -2437,9 +2509,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 1734, - "end": 1755, - "start": 1734, + "commentStart": 1739, + "end": 1760, + "start": 1739, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -2462,9 +2534,9 @@ description: Variables in memory after executing router-template-slate.kcl -92.4938 ], "tag": { - "commentStart": 1860, - "end": 1881, - "start": 1860, + "commentStart": 1862, + "end": 1883, + "start": 1862, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -2524,17 +2596,26 @@ description: Variables in memory after executing router-template-slate.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2546,9 +2627,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 615, - "end": 621, - "start": 615, + "commentStart": 618, + "end": 624, + "start": 618, "type": "TagDeclarator", "value": "seg01" }, @@ -2566,9 +2647,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 801, - "end": 807, - "start": 801, + "commentStart": 804, + "end": 810, + "start": 804, "type": "TagDeclarator", "value": "seg05" }, @@ -2579,9 +2660,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 876, - "end": 882, - "start": 876, + "commentStart": 879, + "end": 885, + "start": 879, "type": "TagDeclarator", "value": "seg04" }, @@ -2592,9 +2673,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 922, - "end": 928, - "start": 922, + "commentStart": 925, + "end": 931, + "start": 925, "type": "TagDeclarator", "value": "seg03" }, @@ -2657,9 +2738,9 @@ description: Variables in memory after executing router-template-slate.kcl 28.1188 ], "tag": { - "commentStart": 615, - "end": 621, - "start": 615, + "commentStart": 618, + "end": 624, + "start": 618, "type": "TagDeclarator", "value": "seg01" }, @@ -2707,9 +2788,9 @@ description: Variables in memory after executing router-template-slate.kcl 20.0 ], "tag": { - "commentStart": 801, - "end": 807, - "start": 801, + "commentStart": 804, + "end": 810, + "start": 804, "type": "TagDeclarator", "value": "seg05" }, @@ -2732,9 +2813,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 876, - "end": 882, - "start": 876, + "commentStart": 879, + "end": 885, + "start": 879, "type": "TagDeclarator", "value": "seg04" }, @@ -2757,9 +2838,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 922, - "end": 928, - "start": 922, + "commentStart": 925, + "end": 931, + "start": 925, "type": "TagDeclarator", "value": "seg03" }, @@ -2782,9 +2863,9 @@ description: Variables in memory after executing router-template-slate.kcl -122.4938 ], "tag": { - "commentStart": 964, - "end": 970, - "start": 964, + "commentStart": 967, + "end": 973, + "start": 967, "type": "TagDeclarator", "value": "seg02" }, @@ -2945,22 +3026,34 @@ description: Variables in memory after executing router-template-slate.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3078,9 +3171,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 2243, - "end": 2264, - "start": 2243, + "commentStart": 2250, + "end": 2271, + "start": 2250, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -3178,17 +3271,26 @@ description: Variables in memory after executing router-template-slate.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3200,9 +3302,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 615, - "end": 621, - "start": 615, + "commentStart": 618, + "end": 624, + "start": 618, "type": "TagDeclarator", "value": "seg01" }, @@ -3220,9 +3322,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 801, - "end": 807, - "start": 801, + "commentStart": 804, + "end": 810, + "start": 804, "type": "TagDeclarator", "value": "seg05" }, @@ -3233,9 +3335,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 876, - "end": 882, - "start": 876, + "commentStart": 879, + "end": 885, + "start": 879, "type": "TagDeclarator", "value": "seg04" }, @@ -3246,9 +3348,9 @@ description: Variables in memory after executing router-template-slate.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 922, - "end": 928, - "start": 922, + "commentStart": 925, + "end": 931, + "start": 925, "type": "TagDeclarator", "value": "seg03" }, @@ -3311,9 +3413,9 @@ description: Variables in memory after executing router-template-slate.kcl 28.1188 ], "tag": { - "commentStart": 615, - "end": 621, - "start": 615, + "commentStart": 618, + "end": 624, + "start": 618, "type": "TagDeclarator", "value": "seg01" }, @@ -3361,9 +3463,9 @@ description: Variables in memory after executing router-template-slate.kcl 20.0 ], "tag": { - "commentStart": 801, - "end": 807, - "start": 801, + "commentStart": 804, + "end": 810, + "start": 804, "type": "TagDeclarator", "value": "seg05" }, @@ -3386,9 +3488,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 876, - "end": 882, - "start": 876, + "commentStart": 879, + "end": 885, + "start": 879, "type": "TagDeclarator", "value": "seg04" }, @@ -3411,9 +3513,9 @@ description: Variables in memory after executing router-template-slate.kcl -12.4937 ], "tag": { - "commentStart": 922, - "end": 928, - "start": 922, + "commentStart": 925, + "end": 931, + "start": 925, "type": "TagDeclarator", "value": "seg03" }, @@ -3436,9 +3538,9 @@ description: Variables in memory after executing router-template-slate.kcl -122.4938 ], "tag": { - "commentStart": 964, - "end": 970, - "start": 964, + "commentStart": 967, + "end": 973, + "start": 967, "type": "TagDeclarator", "value": "seg02" }, @@ -3599,22 +3701,34 @@ description: Variables in memory after executing router-template-slate.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3712,21 +3826,39 @@ description: Variables in memory after executing router-template-slate.kcl "type": "Number", "value": 20.75, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "templateDiameter": { "type": "Number", "value": 17.4625, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "templateGap": { "type": "Number", "value": 1.8812, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "templateThickness": { diff --git a/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/artifact_commands.snap index e85412ca8..2d60f3caa 100644 --- a/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/artifact_commands.snap @@ -502,7 +502,8 @@ description: Artifact commands sheet-metal-bracket.kcl "type": "extrude", "target": "[uuid]", "distance": 5.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1128,7 +1129,8 @@ description: Artifact commands sheet-metal-bracket.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1194,7 +1196,8 @@ description: Artifact commands sheet-metal-bracket.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1372,7 +1375,8 @@ description: Artifact commands sheet-metal-bracket.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1438,7 +1442,8 @@ description: Artifact commands sheet-metal-bracket.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1696,7 +1701,8 @@ description: Artifact commands sheet-metal-bracket.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1762,7 +1768,8 @@ description: Artifact commands sheet-metal-bracket.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1828,7 +1835,8 @@ description: Artifact commands sheet-metal-bracket.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1894,7 +1902,8 @@ description: Artifact commands sheet-metal-bracket.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2032,7 +2041,8 @@ description: Artifact commands sheet-metal-bracket.kcl "type": "extrude", "target": "[uuid]", "distance": -0.125, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/artifact_graph_flowchart.snap.md index 1c94f1263..6dee8ebb1 100644 --- a/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/artifact_graph_flowchart.snap.md @@ -3,52 +3,52 @@ flowchart LR subgraph path2 [Path] 2["Path
[1228, 1309, 0]"] 3["Segment
[1315, 1343, 0]"] - 4["Segment
[1349, 1437, 0]"] - 5["Segment
[1443, 1503, 0]"] - 6["Segment
[1509, 1598, 0]"] - 7["Segment
[1604, 1640, 0]"] - 8["Segment
[1646, 1675, 0]"] - 9["Segment
[1681, 1770, 0]"] - 10["Segment
[1776, 1818, 0]"] - 11["Segment
[1824, 1912, 0]"] - 12["Segment
[1918, 1946, 0]"] - 13["Segment
[1952, 1991, 0]"] - 14["Segment
[1997, 2040, 0]"] - 15["Segment
[2046, 2135, 0]"] - 16["Segment
[2141, 2188, 0]"] - 17["Segment
[2194, 2282, 0]"] - 18["Segment
[2288, 2324, 0]"] - 19["Segment
[2330, 2360, 0]"] - 20["Segment
[2366, 2454, 0]"] - 21["Segment
[2460, 2507, 0]"] - 22["Segment
[2513, 2602, 0]"] - 23["Segment
[2608, 2651, 0]"] - 24["Segment
[2657, 2727, 0]"] - 25["Segment
[2733, 2740, 0]"] + 4["Segment
[1349, 1410, 0]"] + 5["Segment
[1416, 1497, 0]"] + 6["Segment
[1503, 1565, 0]"] + 7["Segment
[1571, 1607, 0]"] + 8["Segment
[1613, 1642, 0]"] + 9["Segment
[1648, 1710, 0]"] + 10["Segment
[1716, 1770, 0]"] + 11["Segment
[1776, 1837, 0]"] + 12["Segment
[1843, 1871, 0]"] + 13["Segment
[1877, 1916, 0]"] + 14["Segment
[1922, 1965, 0]"] + 15["Segment
[1971, 2033, 0]"] + 16["Segment
[2039, 2098, 0]"] + 17["Segment
[2104, 2165, 0]"] + 18["Segment
[2171, 2207, 0]"] + 19["Segment
[2213, 2243, 0]"] + 20["Segment
[2249, 2310, 0]"] + 21["Segment
[2316, 2375, 0]"] + 22["Segment
[2381, 2443, 0]"] + 23["Segment
[2449, 2492, 0]"] + 24["Segment
[2498, 2568, 0]"] + 25["Segment
[2574, 2581, 0]"] 26[Solid2d] end subgraph path94 [Path] - 94["Path
[3072, 3161, 0]"] - 95["Segment
[3072, 3161, 0]"] + 94["Path
[2920, 3009, 0]"] + 95["Segment
[2920, 3009, 0]"] 96[Solid2d] end subgraph path102 [Path] - 102["Path
[3436, 3524, 0]"] - 103["Segment
[3436, 3524, 0]"] + 102["Path
[3291, 3379, 0]"] + 103["Segment
[3291, 3379, 0]"] 104[Solid2d] end subgraph path110 [Path] - 110["Path
[3806, 3986, 0]"] - 111["Segment
[3806, 3986, 0]"] + 110["Path
[3668, 3848, 0]"] + 111["Segment
[3668, 3848, 0]"] 112[Solid2d] end subgraph path120 [Path] - 120["Path
[4402, 4458, 0]"] - 121["Segment
[4402, 4458, 0]"] + 120["Path
[4271, 4327, 0]"] + 121["Segment
[4271, 4327, 0]"] 122[Solid2d] end 1["Plane
[1205, 1222, 0]"] - 27["Sweep Extrusion
[2746, 2779, 0]"] + 27["Sweep Extrusion
[2587, 2620, 0]"] 28[Wall] 29[Wall] 30[Wall] @@ -111,35 +111,35 @@ flowchart LR 87["SweepEdge Adjacent"] 88["SweepEdge Opposite"] 89["SweepEdge Adjacent"] - 90["EdgeCut Fillet
[2785, 2956, 0]"] - 91["EdgeCut Fillet
[2785, 2956, 0]"] - 92["EdgeCut Fillet
[2785, 2956, 0]"] - 93["EdgeCut Fillet
[2785, 2956, 0]"] - 97["Sweep Extrusion
[3290, 3318, 0]"] + 90["EdgeCut Fillet
[2626, 2797, 0]"] + 91["EdgeCut Fillet
[2626, 2797, 0]"] + 92["EdgeCut Fillet
[2626, 2797, 0]"] + 93["EdgeCut Fillet
[2626, 2797, 0]"] + 97["Sweep Extrusion
[3138, 3166, 0]"] 98[Wall] 99["SweepEdge Opposite"] 100["SweepEdge Adjacent"] - 101["Sweep Extrusion
[3290, 3318, 0]"] - 105["Sweep Extrusion
[3653, 3681, 0]"] + 101["Sweep Extrusion
[3138, 3166, 0]"] + 105["Sweep Extrusion
[3508, 3536, 0]"] 106[Wall] 107["SweepEdge Opposite"] 108["SweepEdge Adjacent"] - 109["Sweep Extrusion
[3653, 3681, 0]"] - 113["Sweep Extrusion
[4240, 4268, 0]"] + 109["Sweep Extrusion
[3508, 3536, 0]"] + 113["Sweep Extrusion
[4102, 4130, 0]"] 114[Wall] 115["SweepEdge Opposite"] 116["SweepEdge Adjacent"] - 117["Sweep Extrusion
[4240, 4268, 0]"] - 118["Sweep Extrusion
[4240, 4268, 0]"] - 119["Sweep Extrusion
[4240, 4268, 0]"] - 123["Sweep Extrusion
[4464, 4492, 0]"] + 117["Sweep Extrusion
[4102, 4130, 0]"] + 118["Sweep Extrusion
[4102, 4130, 0]"] + 119["Sweep Extrusion
[4102, 4130, 0]"] + 123["Sweep Extrusion
[4333, 4361, 0]"] 124[Wall] 125["SweepEdge Opposite"] 126["SweepEdge Adjacent"] - 127["StartSketchOnFace
[3030, 3066, 0]"] - 128["StartSketchOnFace
[3394, 3430, 0]"] - 129["StartSketchOnFace
[3764, 3800, 0]"] - 130["StartSketchOnFace
[4360, 4396, 0]"] + 127["StartSketchOnFace
[2871, 2914, 0]"] + 128["StartSketchOnFace
[3242, 3285, 0]"] + 129["StartSketchOnFace
[3619, 3662, 0]"] + 130["StartSketchOnFace
[4222, 4265, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/ast.snap b/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/ast.snap index 78c6c394c..f10e62c64 100644 --- a/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/ast.snap @@ -6,22 +6,22 @@ description: Result of parsing sheet-metal-bracket.kcl "Ok": { "body": [ { - "commentStart": 353, + "commentStart": 0, "declaration": { - "commentStart": 409, + "commentStart": 0, "end": 0, "id": { - "commentStart": 409, + "commentStart": 0, "end": 0, "name": "mountingBoltDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 432, + "commentStart": 0, "end": 0, "left": { - "commentStart": 432, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -34,7 +34,7 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "/", "right": { - "commentStart": 436, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -62,19 +62,19 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 438, + "commentStart": 0, "declaration": { - "commentStart": 438, + "commentStart": 0, "end": 0, "id": { - "commentStart": 438, + "commentStart": 0, "end": 0, "name": "mountingBoltPatternX", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 461, + "commentStart": 0, "end": 0, "raw": "7", "start": 0, @@ -95,19 +95,19 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 463, + "commentStart": 0, "declaration": { - "commentStart": 463, + "commentStart": 0, "end": 0, "id": { - "commentStart": 463, + "commentStart": 0, "end": 0, "name": "mountingBoltPatternY", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 486, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -128,22 +128,22 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 487, + "commentStart": 0, "declaration": { - "commentStart": 558, + "commentStart": 0, "end": 0, "id": { - "commentStart": 558, + "commentStart": 0, "end": 0, "name": "componentBoltDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 582, + "commentStart": 0, "end": 0, "left": { - "commentStart": 582, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -156,7 +156,7 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "/", "right": { - "commentStart": 586, + "commentStart": 0, "end": 0, "raw": "16", "start": 0, @@ -186,19 +186,19 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 589, + "commentStart": 0, "declaration": { - "commentStart": 589, + "commentStart": 0, "end": 0, "id": { - "commentStart": 589, + "commentStart": 0, "end": 0, "name": "componentBoltPatternX", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 613, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -219,19 +219,19 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 615, + "commentStart": 0, "declaration": { - "commentStart": 615, + "commentStart": 0, "end": 0, "id": { - "commentStart": 615, + "commentStart": 0, "end": 0, "name": "componentBoltPatternY", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 639, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -252,19 +252,19 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 640, + "commentStart": 0, "declaration": { - "commentStart": 735, + "commentStart": 0, "end": 0, "id": { - "commentStart": 735, + "commentStart": 0, "end": 0, "name": "hatHeight", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 747, + "commentStart": 0, "end": 0, "raw": "2.5", "start": 0, @@ -290,19 +290,19 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 751, + "commentStart": 0, "declaration": { - "commentStart": 751, + "commentStart": 0, "end": 0, "id": { - "commentStart": 751, + "commentStart": 0, "end": 0, "name": "bendAngle", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 763, + "commentStart": 0, "end": 0, "raw": "75", "start": 0, @@ -323,19 +323,19 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 766, + "commentStart": 0, "declaration": { - "commentStart": 766, + "commentStart": 0, "end": 0, "id": { - "commentStart": 766, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 778, + "commentStart": 0, "end": 0, "raw": "0.125", "start": 0, @@ -356,19 +356,19 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 784, + "commentStart": 0, "declaration": { - "commentStart": 784, + "commentStart": 0, "end": 0, "id": { - "commentStart": 784, + "commentStart": 0, "end": 0, "name": "interiorBendRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 805, + "commentStart": 0, "end": 0, "raw": "0.125", "start": 0, @@ -389,26 +389,26 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 810, + "commentStart": 0, "declaration": { - "commentStart": 846, + "commentStart": 0, "end": 0, "id": { - "commentStart": 846, + "commentStart": 0, "end": 0, "name": "exteriorBendRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 867, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 867, + "commentStart": 0, "end": 0, "name": { - "commentStart": 867, + "commentStart": 0, "end": 0, "name": "interiorBendRadius", "start": 0, @@ -422,10 +422,10 @@ description: Result of parsing sheet-metal-bracket.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 888, + "commentStart": 0, "end": 0, "name": { - "commentStart": 888, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -455,22 +455,22 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 898, + "commentStart": 0, "declaration": { - "commentStart": 898, + "commentStart": 0, "end": 0, "id": { - "commentStart": 898, + "commentStart": 0, "end": 0, "name": "overhang", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 909, + "commentStart": 0, "end": 0, "left": { - "commentStart": 909, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -484,10 +484,10 @@ description: Result of parsing sheet-metal-bracket.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 913, + "commentStart": 0, "end": 0, "name": { - "commentStart": 913, + "commentStart": 0, "end": 0, "name": "mountingBoltDiameter", "start": 0, @@ -512,22 +512,22 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 934, + "commentStart": 0, "declaration": { - "commentStart": 934, + "commentStart": 0, "end": 0, "id": { - "commentStart": 934, + "commentStart": 0, "end": 0, "name": "flangeLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 949, + "commentStart": 0, "end": 0, "left": { - "commentStart": 949, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -541,10 +541,10 @@ description: Result of parsing sheet-metal-bracket.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 953, + "commentStart": 0, "end": 0, "name": { - "commentStart": 953, + "commentStart": 0, "end": 0, "name": "mountingBoltDiameter", "start": 0, @@ -569,28 +569,28 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 974, + "commentStart": 0, "declaration": { - "commentStart": 974, + "commentStart": 0, "end": 0, "id": { - "commentStart": 974, + "commentStart": 0, "end": 0, "name": "flangeExtrusion", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 992, + "commentStart": 0, "cond": { - "commentStart": 995, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 995, + "commentStart": 0, "end": 0, "name": { - "commentStart": 995, + "commentStart": 0, "end": 0, "name": "mountingBoltPatternY", "start": 0, @@ -604,10 +604,10 @@ description: Result of parsing sheet-metal-bracket.kcl "operator": ">", "right": { "abs_path": false, - "commentStart": 1018, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1018, + "commentStart": 0, "end": 0, "name": "componentBoltPatternY", "start": 0, @@ -628,17 +628,17 @@ description: Result of parsing sheet-metal-bracket.kcl "final_else": { "body": [ { - "commentStart": 1091, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 1091, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1091, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1091, + "commentStart": 0, "end": 0, "name": "componentBoltPatternY", "start": 0, @@ -651,14 +651,14 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "+", "right": { - "commentStart": 1115, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1115, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1115, + "commentStart": 0, "end": 0, "name": "overhang", "start": 0, @@ -671,7 +671,7 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "*", "right": { - "commentStart": 1126, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -695,7 +695,7 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "ExpressionStatement" } ], - "commentStart": 1091, + "commentStart": 0, "end": 0, "start": 0 }, @@ -703,17 +703,17 @@ description: Result of parsing sheet-metal-bracket.kcl "then_val": { "body": [ { - "commentStart": 1044, + "commentStart": 0, "end": 0, "expression": { - "commentStart": 1044, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1044, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1044, + "commentStart": 0, "end": 0, "name": "mountingBoltPatternY", "start": 0, @@ -726,14 +726,14 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "+", "right": { - "commentStart": 1067, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1067, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1067, + "commentStart": 0, "end": 0, "name": "overhang", "start": 0, @@ -746,7 +746,7 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "*", "right": { - "commentStart": 1078, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -770,7 +770,7 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "ExpressionStatement" } ], - "commentStart": 1044, + "commentStart": 0, "end": 0, "start": 0 }, @@ -787,12 +787,12 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 1129, + "commentStart": 0, "declaration": { - "commentStart": 1188, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1188, + "commentStart": 0, "end": 0, "name": "bracketProfile", "start": 0, @@ -804,10 +804,10 @@ description: Result of parsing sheet-metal-bracket.kcl "arguments": [ { "abs_path": false, - "commentStart": 1219, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1219, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -821,10 +821,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1205, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1205, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -834,7 +834,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1205, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -843,21 +843,21 @@ description: Result of parsing sheet-metal-bracket.kcl { "arguments": [ { - "commentStart": 1243, + "commentStart": 0, "elements": [ { - "commentStart": 1252, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1252, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1253, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1253, + "commentStart": 0, "end": 0, "name": "mountingBoltPatternX", "start": 0, @@ -868,7 +868,7 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 1252, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -877,7 +877,7 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "/", "right": { - "commentStart": 1276, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -895,10 +895,10 @@ description: Result of parsing sheet-metal-bracket.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1280, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1280, + "commentStart": 0, "end": 0, "name": "overhang", "start": 0, @@ -914,7 +914,7 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 1297, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -932,7 +932,7 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "ArrayExpression" }, { - "commentStart": 1307, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -941,10 +941,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1228, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1228, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -954,7 +954,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1228, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -965,7 +965,7 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1321, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -973,10 +973,10 @@ description: Result of parsing sheet-metal-bracket.kcl }, "arg": { "abs_path": false, - "commentStart": 1330, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1330, + "commentStart": 0, "end": 0, "name": "flangeLength", "start": 0, @@ -991,10 +991,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1315, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1315, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1004,7 +1004,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1315, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1014,86 +1014,64 @@ description: Result of parsing sheet-metal-bracket.kcl { "arguments": [ { - "commentStart": 1363, - "end": 0, - "properties": [ - { - "commentStart": 1372, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1372, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, + "name": "exteriorBendRadius", "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1381, - "end": 0, - "name": { - "commentStart": 1381, - "end": 0, - "name": "exteriorBendRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "Identifier" }, - { - "commentStart": 1408, - "end": 0, - "key": { - "commentStart": 1408, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1417, - "end": 0, - "name": { - "commentStart": 1417, - "end": 0, - "name": "bendAngle", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 1435, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendAngle", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1349, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1349, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -1103,23 +1081,176 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1349, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1457, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendAngle", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "abs_path": false, - "commentStart": 1458, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1458, + "commentStart": 0, + "end": 0, + "name": "hatHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "thickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "seg01" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "interiorBendRadius", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, "name": "bendAngle", "start": 0, @@ -1130,180 +1261,21 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "Name", "type": "Name" }, - { - "commentStart": 1469, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 1469, - "end": 0, - "name": { - "commentStart": 1469, - "end": 0, - "name": "hatHeight", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "-", - "right": { - "abs_path": false, - "commentStart": 1481, - "end": 0, - "name": { - "commentStart": 1481, - "end": 0, - "name": "thickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1493, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1496, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "seg01" + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1443, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1443, - "end": 0, - "name": "angledLineToY", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1443, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1523, - "end": 0, - "properties": [ - { - "commentStart": 1532, - "end": 0, - "key": { - "commentStart": 1532, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1541, - "end": 0, - "name": { - "commentStart": 1541, - "end": 0, - "name": "interiorBendRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - }, - { - "commentStart": 1568, - "end": 0, - "key": { - "commentStart": 1568, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "abs_path": false, - "commentStart": 1578, - "end": 0, - "name": { - "commentStart": 1578, - "end": 0, - "name": "bendAngle", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 1577, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1596, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1509, - "end": 0, - "name": { - "commentStart": 1509, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -1313,25 +1285,26 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1509, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1610, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1624, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1346,14 +1319,14 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1627, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1633, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1364,10 +1337,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1604, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1604, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1377,7 +1350,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1604, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1389,7 +1362,7 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1652, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1399,10 +1372,10 @@ description: Result of parsing sheet-metal-bracket.kcl "arguments": [ { "abs_path": false, - "commentStart": 1668, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1668, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -1416,10 +1389,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1661, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1661, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -1429,7 +1402,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1661, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1439,10 +1412,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1646, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1646, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1452,7 +1425,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1646, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1462,94 +1435,72 @@ description: Result of parsing sheet-metal-bracket.kcl { "arguments": [ { - "commentStart": 1695, - "end": 0, - "properties": [ - { - "commentStart": 1704, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1704, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, + "name": "interiorBendRadius", "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1713, - "end": 0, - "name": { - "commentStart": 1713, - "end": 0, - "name": "interiorBendRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "Identifier" }, - { - "commentStart": 1740, - "end": 0, - "key": { - "commentStart": 1740, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "abs_path": false, - "commentStart": 1750, - "end": 0, - "name": { - "commentStart": 1750, - "end": 0, - "name": "bendAngle", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 1749, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 1768, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendAngle", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1681, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1681, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -1559,26 +1510,68 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1681, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1787, - "elements": [ - { - "argument": { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendAngle", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { "abs_path": false, - "commentStart": 1789, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1789, + "commentStart": 0, "end": 0, - "name": "bendAngle", + "name": "seg01", "start": 0, "type": "Identifier" }, @@ -1586,74 +1579,37 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name", "type": "Name" - }, - "commentStart": 1788, + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - }, - { - "arguments": [ - { - "abs_path": false, - "commentStart": 1807, - "end": 0, - "name": { - "commentStart": 1807, - "end": 0, - "name": "seg01", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1800, + "name": { + "commentStart": 0, "end": 0, - "name": { - "commentStart": 1800, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], + "name": "segLen", "start": 0, - "type": "Name" + "type": "Identifier" }, - "commentStart": 1800, - "end": 0, + "path": [], "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1816, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1776, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1776, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -1663,95 +1619,74 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1776, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1838, - "end": 0, - "properties": [ - { - "commentStart": 1847, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1847, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, + "name": "exteriorBendRadius", "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1856, - "end": 0, - "name": { - "commentStart": 1856, - "end": 0, - "name": "exteriorBendRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "Identifier" }, - { - "commentStart": 1883, - "end": 0, - "key": { - "commentStart": 1883, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1892, - "end": 0, - "name": { - "commentStart": 1892, - "end": 0, - "name": "bendAngle", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 1910, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendAngle", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1824, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1824, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -1761,18 +1696,19 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1824, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1924, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1780,10 +1716,10 @@ description: Result of parsing sheet-metal-bracket.kcl }, "arg": { "abs_path": false, - "commentStart": 1933, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1933, + "commentStart": 0, "end": 0, "name": "flangeLength", "start": 0, @@ -1798,10 +1734,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1918, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1918, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1811,7 +1747,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1918, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1823,7 +1759,7 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1958, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1831,10 +1767,10 @@ description: Result of parsing sheet-metal-bracket.kcl }, "arg": { "abs_path": false, - "commentStart": 1967, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1967, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -1849,14 +1785,14 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 1978, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1984, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1867,10 +1803,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1952, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1952, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1880,7 +1816,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1952, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1892,7 +1828,7 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2003, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1901,10 +1837,10 @@ description: Result of parsing sheet-metal-bracket.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 2013, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2013, + "commentStart": 0, "end": 0, "name": "flangeLength", "start": 0, @@ -1915,7 +1851,7 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 2012, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1926,14 +1862,14 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2027, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2033, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1944,10 +1880,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 1997, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1997, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1957,7 +1893,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 1997, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1967,94 +1903,72 @@ description: Result of parsing sheet-metal-bracket.kcl { "arguments": [ { - "commentStart": 2060, - "end": 0, - "properties": [ - { - "commentStart": 2069, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 2069, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, + "name": "interiorBendRadius", "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 2078, - "end": 0, - "name": { - "commentStart": 2078, - "end": 0, - "name": "interiorBendRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "Identifier" }, - { - "commentStart": 2105, - "end": 0, - "key": { - "commentStart": 2105, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "abs_path": false, - "commentStart": 2115, - "end": 0, - "name": { - "commentStart": 2115, - "end": 0, - "name": "bendAngle", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 2114, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 2133, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendAngle", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 2046, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2046, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -2064,41 +1978,80 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2046, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 2152, - "elements": [ - { - "commentStart": 2153, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "left": { - "commentStart": 2153, + "raw": "180", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 180.0, + "suffix": "None" + } + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "raw": "180", + "name": "bendAngle", "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } + "type": "Identifier" }, - "operator": "-", - "right": { + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { "abs_path": false, - "commentStart": 2159, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2159, + "commentStart": 0, "end": 0, - "name": "bendAngle", + "name": "seg01", "start": 0, "type": "Identifier" }, @@ -2106,71 +2059,37 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name", "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "arguments": [ - { - "abs_path": false, - "commentStart": 2177, - "end": 0, - "name": { - "commentStart": 2177, - "end": 0, - "name": "seg01", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2170, - "end": 0, - "name": { - "commentStart": 2170, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2170, + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2186, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 2141, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2141, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -2180,95 +2099,74 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2141, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 2208, - "end": 0, - "properties": [ - { - "commentStart": 2217, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 2217, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, + "name": "exteriorBendRadius", "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 2226, - "end": 0, - "name": { - "commentStart": 2226, - "end": 0, - "name": "exteriorBendRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "Identifier" }, - { - "commentStart": 2253, - "end": 0, - "key": { - "commentStart": 2253, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 2262, - "end": 0, - "name": { - "commentStart": 2262, - "end": 0, - "name": "bendAngle", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 2280, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendAngle", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 2194, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2194, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -2278,25 +2176,26 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2194, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2294, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2308, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2311,14 +2210,14 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2311, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2317, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2329,10 +2228,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2288, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2288, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2342,7 +2241,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2288, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2354,7 +2253,7 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2336, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2365,10 +2264,10 @@ description: Result of parsing sheet-metal-bracket.kcl "arguments": [ { "abs_path": false, - "commentStart": 2353, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2353, + "commentStart": 0, "end": 0, "name": "seg05", "start": 0, @@ -2382,10 +2281,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2346, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2346, + "commentStart": 0, "end": 0, "name": "segLen", "start": 0, @@ -2395,13 +2294,13 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2346, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - "commentStart": 2345, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2412,10 +2311,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2330, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2330, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2425,7 +2324,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2330, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2435,86 +2334,64 @@ description: Result of parsing sheet-metal-bracket.kcl { "arguments": [ { - "commentStart": 2380, - "end": 0, - "properties": [ - { - "commentStart": 2389, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 2389, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, + "name": "exteriorBendRadius", "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 2398, - "end": 0, - "name": { - "commentStart": 2398, - "end": 0, - "name": "exteriorBendRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "Identifier" }, - { - "commentStart": 2425, - "end": 0, - "key": { - "commentStart": 2425, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 2434, - "end": 0, - "name": { - "commentStart": 2434, - "end": 0, - "name": "bendAngle", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 2452, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendAngle", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 2366, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2366, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -2524,28 +2401,80 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2366, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 2471, - "elements": [ - { - "commentStart": 2472, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "left": { + "name": { + "commentStart": 0, + "end": 0, + "name": "bendAngle", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "commentStart": 0, + "end": 0, + "raw": "180", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 180.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { "abs_path": false, - "commentStart": 2472, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2472, + "commentStart": 0, "end": 0, - "name": "bendAngle", + "name": "seg01", "start": 0, "type": "Identifier" }, @@ -2553,84 +2482,37 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name", "type": "Name" - }, - "operator": "-", - "right": { - "commentStart": 2484, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "arguments": [ - { - "abs_path": false, - "commentStart": 2496, - "end": 0, - "name": { - "commentStart": 2496, - "end": 0, - "name": "seg01", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 2489, - "end": 0, - "name": { - "commentStart": 2489, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 2489, + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "CallExpression", - "type": "CallExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 2505, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 2460, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2460, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -2640,103 +2522,82 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2460, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 2527, - "end": 0, - "properties": [ - { - "commentStart": 2536, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 2536, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, + "name": "interiorBendRadius", "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 2545, - "end": 0, - "name": { - "commentStart": 2545, - "end": 0, - "name": "interiorBendRadius", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "Identifier" }, - { - "commentStart": 2572, - "end": 0, - "key": { - "commentStart": 2572, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "abs_path": false, - "commentStart": 2582, - "end": 0, - "name": { - "commentStart": 2582, - "end": 0, - "name": "bendAngle", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 2581, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 2600, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bendAngle", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 2513, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2513, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -2746,18 +2607,19 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2513, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 2614, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2766,10 +2628,10 @@ description: Result of parsing sheet-metal-bracket.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 2624, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2624, + "commentStart": 0, "end": 0, "name": "flangeLength", "start": 0, @@ -2780,7 +2642,7 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 2623, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2791,14 +2653,14 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2638, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2644, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2809,10 +2671,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2608, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2608, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2822,7 +2684,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2608, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2834,19 +2696,19 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2662, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2676, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 2691, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2855,10 +2717,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2677, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2677, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -2868,7 +2730,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2677, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2877,7 +2739,7 @@ description: Result of parsing sheet-metal-bracket.kcl { "arguments": [ { - "commentStart": 2709, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2886,10 +2748,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2695, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2695, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -2899,7 +2761,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2695, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2915,14 +2777,14 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2714, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2720, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -2933,10 +2795,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2657, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2657, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2946,7 +2808,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2657, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2957,10 +2819,10 @@ description: Result of parsing sheet-metal-bracket.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 2733, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2733, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2970,7 +2832,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2733, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2981,7 +2843,7 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2754, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2989,10 +2851,10 @@ description: Result of parsing sheet-metal-bracket.kcl }, "arg": { "abs_path": false, - "commentStart": 2763, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2763, + "commentStart": 0, "end": 0, "name": "flangeExtrusion", "start": 0, @@ -3007,10 +2869,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2746, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2746, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3020,7 +2882,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2746, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3032,21 +2894,21 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2800, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2809, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 2809, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2809, + "commentStart": 0, "end": 0, "name": "flangeLength", "start": 0, @@ -3059,7 +2921,7 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "/", "right": { - "commentStart": 2824, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -3078,21 +2940,21 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 2834, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2841, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 2852, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2852, + "commentStart": 0, "end": 0, "name": "seg03", "start": 0, @@ -3107,10 +2969,10 @@ description: Result of parsing sheet-metal-bracket.kcl "arguments": [ { "abs_path": false, - "commentStart": 2884, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2884, + "commentStart": 0, "end": 0, "name": "seg03", "start": 0, @@ -3124,10 +2986,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2868, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2868, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -3137,7 +2999,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2868, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3145,10 +3007,10 @@ description: Result of parsing sheet-metal-bracket.kcl }, { "abs_path": false, - "commentStart": 2901, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2901, + "commentStart": 0, "end": 0, "name": "seg07", "start": 0, @@ -3163,10 +3025,10 @@ description: Result of parsing sheet-metal-bracket.kcl "arguments": [ { "abs_path": false, - "commentStart": 2933, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2933, + "commentStart": 0, "end": 0, "name": "seg07", "start": 0, @@ -3180,10 +3042,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2917, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2917, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -3193,7 +3055,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2917, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -3209,10 +3071,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 2785, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2785, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -3222,7 +3084,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 2785, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3230,13 +3092,13 @@ description: Result of parsing sheet-metal-bracket.kcl "unlabeled": null } ], - "commentStart": 1205, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "26": [ { - "commentStart": 2956, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3269,12 +3131,12 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 3006, + "commentStart": 0, "declaration": { - "commentStart": 3006, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3006, + "commentStart": 0, "end": 0, "name": "leftFlangeBoltPattern", "start": 0, @@ -3285,44 +3147,38 @@ description: Result of parsing sheet-metal-bracket.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 3044, - "end": 0, - "name": { - "commentStart": 3044, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "bracketProfile", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 3060, - "end": 0, - "name": { - "commentStart": 3060, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg04", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg04", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 3030, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3030, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -3332,36 +3188,52 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3030, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bracketProfile", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 3079, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3088, + "commentStart": 0, "elements": [ { - "commentStart": 3089, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 3090, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3090, + "commentStart": 0, "end": 0, "name": "mountingBoltPatternX", "start": 0, @@ -3372,7 +3244,7 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 3089, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3381,7 +3253,7 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3113, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3398,10 +3270,10 @@ description: Result of parsing sheet-metal-bracket.kcl }, { "abs_path": false, - "commentStart": 3116, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3116, + "commentStart": 0, "end": 0, "name": "overhang", "start": 0, @@ -3422,21 +3294,21 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3127, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3136, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3136, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3136, + "commentStart": 0, "end": 0, "name": "mountingBoltDiameter", "start": 0, @@ -3449,7 +3321,7 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3159, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3468,10 +3340,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3072, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3072, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -3481,7 +3353,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3072, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3493,14 +3365,14 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3201, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3213, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3515,7 +3387,7 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3223, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -3523,10 +3395,10 @@ description: Result of parsing sheet-metal-bracket.kcl }, "arg": { "abs_path": false, - "commentStart": 3234, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3234, + "commentStart": 0, "end": 0, "name": "mountingBoltPatternY", "start": 0, @@ -3541,17 +3413,17 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3263, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3270, + "commentStart": 0, "elements": [ { - "commentStart": 3271, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3563,7 +3435,7 @@ description: Result of parsing sheet-metal-bracket.kcl } }, { - "commentStart": 3274, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -3584,10 +3456,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3167, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3167, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -3597,13 +3469,13 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3167, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 3191, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -3615,7 +3487,7 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3298, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -3624,10 +3496,10 @@ description: Result of parsing sheet-metal-bracket.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 3308, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3308, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -3638,7 +3510,7 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 3307, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3649,10 +3521,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3290, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3290, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -3662,7 +3534,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3290, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3670,13 +3542,13 @@ description: Result of parsing sheet-metal-bracket.kcl "unlabeled": null } ], - "commentStart": 3030, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "3": [ { - "commentStart": 3318, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -3704,12 +3576,12 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 3369, + "commentStart": 0, "declaration": { - "commentStart": 3369, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3369, + "commentStart": 0, "end": 0, "name": "rightFlangeBoltPattern", "start": 0, @@ -3720,44 +3592,38 @@ description: Result of parsing sheet-metal-bracket.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 3408, - "end": 0, - "name": { - "commentStart": 3408, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "bracketProfile", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 3424, - "end": 0, - "name": { - "commentStart": 3424, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg06", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg06", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 3394, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3394, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -3767,35 +3633,51 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3394, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bracketProfile", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 3443, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3452, + "commentStart": 0, "elements": [ { - "commentStart": 3453, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3453, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3453, + "commentStart": 0, "end": 0, "name": "mountingBoltPatternX", "start": 0, @@ -3808,7 +3690,7 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3476, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3825,10 +3707,10 @@ description: Result of parsing sheet-metal-bracket.kcl }, { "abs_path": false, - "commentStart": 3479, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3479, + "commentStart": 0, "end": 0, "name": "overhang", "start": 0, @@ -3849,21 +3731,21 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3490, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3499, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3499, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3499, + "commentStart": 0, "end": 0, "name": "mountingBoltDiameter", "start": 0, @@ -3876,7 +3758,7 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3522, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3895,10 +3777,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3436, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3436, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -3908,7 +3790,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3436, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3920,14 +3802,14 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3564, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3576, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -3942,7 +3824,7 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3586, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -3950,10 +3832,10 @@ description: Result of parsing sheet-metal-bracket.kcl }, "arg": { "abs_path": false, - "commentStart": 3597, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3597, + "commentStart": 0, "end": 0, "name": "mountingBoltPatternY", "start": 0, @@ -3968,17 +3850,17 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3626, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3633, + "commentStart": 0, "elements": [ { - "commentStart": 3634, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -3990,7 +3872,7 @@ description: Result of parsing sheet-metal-bracket.kcl } }, { - "commentStart": 3637, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -4011,10 +3893,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3530, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3530, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -4024,13 +3906,13 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3530, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 3554, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4042,7 +3924,7 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3661, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4051,10 +3933,10 @@ description: Result of parsing sheet-metal-bracket.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 3671, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3671, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -4065,7 +3947,7 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 3670, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4076,10 +3958,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3653, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3653, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -4089,7 +3971,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3653, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4097,13 +3979,13 @@ description: Result of parsing sheet-metal-bracket.kcl "unlabeled": null } ], - "commentStart": 3394, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "3": [ { - "commentStart": 3681, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4131,12 +4013,12 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 3741, + "commentStart": 0, "declaration": { - "commentStart": 3741, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3741, + "commentStart": 0, "end": 0, "name": "topFlangeBoltPattern", "start": 0, @@ -4147,44 +4029,38 @@ description: Result of parsing sheet-metal-bracket.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 3778, - "end": 0, - "name": { - "commentStart": 3778, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "bracketProfile", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 3794, - "end": 0, - "name": { - "commentStart": 3794, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg05", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg05", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 3764, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3764, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -4194,36 +4070,52 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3764, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bracketProfile", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 3821, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3830, + "commentStart": 0, "elements": [ { - "commentStart": 3841, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 3842, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3842, + "commentStart": 0, "end": 0, "name": "componentBoltPatternX", "start": 0, @@ -4234,7 +4126,7 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 3841, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4243,7 +4135,7 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3866, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4259,18 +4151,18 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "BinaryExpression" }, { - "commentStart": 3878, + "commentStart": 0, "end": 0, "left": { - "commentStart": 3878, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 3879, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3879, + "commentStart": 0, "end": 0, "name": "componentBoltPatternY", "start": 0, @@ -4281,7 +4173,7 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 3878, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4290,7 +4182,7 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3903, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4307,14 +4199,14 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "+", "right": { - "commentStart": 3907, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3907, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3907, + "commentStart": 0, "end": 0, "name": "flangeExtrusion", "start": 0, @@ -4327,7 +4219,7 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3925, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4356,21 +4248,21 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 3944, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3953, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 3953, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3953, + "commentStart": 0, "end": 0, "name": "componentBoltDiameter", "start": 0, @@ -4383,7 +4275,7 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "/", "right": { - "commentStart": 3977, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4402,10 +4294,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3806, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3806, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -4415,7 +4307,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3806, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4427,14 +4319,14 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4026, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4038, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4449,7 +4341,7 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4048, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -4457,10 +4349,10 @@ description: Result of parsing sheet-metal-bracket.kcl }, "arg": { "abs_path": false, - "commentStart": 4059, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4059, + "commentStart": 0, "end": 0, "name": "componentBoltPatternX", "start": 0, @@ -4475,17 +4367,17 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4089, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4096, + "commentStart": 0, "elements": [ { - "commentStart": 4097, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -4497,7 +4389,7 @@ description: Result of parsing sheet-metal-bracket.kcl } }, { - "commentStart": 4100, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4518,10 +4410,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 3992, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3992, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -4531,13 +4423,13 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 3992, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 4016, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4549,14 +4441,14 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4150, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4162, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4571,7 +4463,7 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4172, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -4579,10 +4471,10 @@ description: Result of parsing sheet-metal-bracket.kcl }, "arg": { "abs_path": false, - "commentStart": 4183, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4183, + "commentStart": 0, "end": 0, "name": "componentBoltPatternY", "start": 0, @@ -4597,17 +4489,17 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4213, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4220, + "commentStart": 0, "elements": [ { - "commentStart": 4221, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4619,7 +4511,7 @@ description: Result of parsing sheet-metal-bracket.kcl } }, { - "commentStart": 4224, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -4640,10 +4532,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 4116, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4116, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -4653,13 +4545,13 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4116, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 4140, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -4671,7 +4563,7 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4248, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4680,10 +4572,10 @@ description: Result of parsing sheet-metal-bracket.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 4258, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4258, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -4694,7 +4586,7 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 4257, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4705,10 +4597,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 4240, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4240, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -4718,7 +4610,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4240, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4726,13 +4618,13 @@ description: Result of parsing sheet-metal-bracket.kcl "unlabeled": null } ], - "commentStart": 3764, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "4": [ { - "commentStart": 4268, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -4760,12 +4652,12 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "VariableDeclaration" }, { - "commentStart": 4345, + "commentStart": 0, "declaration": { - "commentStart": 4345, + "commentStart": 0, "end": 0, "id": { - "commentStart": 4345, + "commentStart": 0, "end": 0, "name": "centeredHole", "start": 0, @@ -4776,44 +4668,38 @@ description: Result of parsing sheet-metal-bracket.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 4374, - "end": 0, - "name": { - "commentStart": 4374, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "bracketProfile", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 4390, - "end": 0, - "name": { - "commentStart": 4390, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg05", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg05", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 4360, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4360, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -4823,28 +4709,44 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4360, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bracketProfile", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 4409, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4418, + "commentStart": 0, "elements": [ { - "commentStart": 4419, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -4856,14 +4758,14 @@ description: Result of parsing sheet-metal-bracket.kcl } }, { - "commentStart": 4422, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 4422, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4422, + "commentStart": 0, "end": 0, "name": "flangeExtrusion", "start": 0, @@ -4876,7 +4778,7 @@ description: Result of parsing sheet-metal-bracket.kcl }, "operator": "/", "right": { - "commentStart": 4440, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -4901,14 +4803,14 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4444, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4453, + "commentStart": 0, "end": 0, "raw": "0.75", "start": 0, @@ -4923,10 +4825,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 4402, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4402, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -4936,7 +4838,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4402, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4948,7 +4850,7 @@ description: Result of parsing sheet-metal-bracket.kcl { "type": "LabeledArg", "label": { - "commentStart": 4472, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -4957,10 +4859,10 @@ description: Result of parsing sheet-metal-bracket.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 4482, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4482, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -4971,7 +4873,7 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "Name", "type": "Name" }, - "commentStart": 4481, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4982,10 +4884,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "callee": { "abs_path": false, - "commentStart": 4464, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4464, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -4995,7 +4897,7 @@ description: Result of parsing sheet-metal-bracket.kcl "start": 0, "type": "Name" }, - "commentStart": 4464, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5003,7 +4905,7 @@ description: Result of parsing sheet-metal-bracket.kcl "unlabeled": null } ], - "commentStart": 4360, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -5026,7 +4928,7 @@ description: Result of parsing sheet-metal-bracket.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 321, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -5041,10 +4943,10 @@ description: Result of parsing sheet-metal-bracket.kcl ], "properties": [ { - "commentStart": 330, + "commentStart": 0, "end": 0, "key": { - "commentStart": 330, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -5054,10 +4956,10 @@ description: Result of parsing sheet-metal-bracket.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 350, + "commentStart": 0, "end": 0, "name": { - "commentStart": 350, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -5078,7 +4980,7 @@ description: Result of parsing sheet-metal-bracket.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 353, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/ops.snap b/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/ops.snap index 4bf5f028b..87a69af5f 100644 --- a/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/ops.snap @@ -5,7 +5,7 @@ description: Operations executed sheet-metal-bracket.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -25,7 +25,13 @@ description: Operations executed sheet-metal-bracket.kcl "type": "Number", "value": 5.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -51,7 +57,13 @@ description: Operations executed sheet-metal-bracket.kcl "type": "Number", "value": 0.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -98,16 +110,7 @@ description: Operations executed sheet-metal-bracket.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg04", @@ -119,7 +122,15 @@ description: Operations executed sheet-metal-bracket.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -166,16 +177,7 @@ description: Operations executed sheet-metal-bracket.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg06", @@ -187,7 +189,15 @@ description: Operations executed sheet-metal-bracket.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -234,16 +244,7 @@ description: Operations executed sheet-metal-bracket.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg05", @@ -255,7 +256,15 @@ description: Operations executed sheet-metal-bracket.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -314,16 +323,7 @@ description: Operations executed sheet-metal-bracket.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg05", @@ -335,7 +335,15 @@ description: Operations executed sheet-metal-bracket.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/program_memory.snap index a06aa9904..362c443e1 100644 --- a/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/sheet-metal-bracket/program_memory.snap @@ -42,9 +42,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -62,9 +62,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -103,9 +103,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -116,9 +116,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -150,9 +150,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -184,9 +184,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -197,9 +197,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -263,9 +263,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.1853 ], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -312,9 +312,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.4676 ], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -442,9 +442,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl -0.0 ], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -467,9 +467,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -559,9 +559,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.5926 ], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -670,9 +670,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -695,9 +695,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -738,22 +738,34 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -820,28 +832,72 @@ description: Variables in memory after executing sheet-metal-bracket.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -904,17 +960,26 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -940,9 +1005,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -960,9 +1025,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -1001,9 +1066,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -1014,9 +1079,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -1048,9 +1113,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -1082,9 +1147,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -1095,9 +1160,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -1161,9 +1226,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.1853 ], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -1210,9 +1275,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.4676 ], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -1340,9 +1405,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl -0.0 ], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -1365,9 +1430,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -1457,9 +1522,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.5926 ], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -1568,9 +1633,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -1593,9 +1658,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -1636,22 +1701,34 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -1718,28 +1795,72 @@ description: Variables in memory after executing sheet-metal-bracket.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -1788,7 +1909,13 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "type": "Number", "value": 0.1875, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "componentBoltPatternX": { @@ -1834,14 +1961,26 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "type": "Number", "value": 5.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "flangeLength": { "type": "Number", "value": 1.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "hatHeight": { @@ -1926,17 +2065,26 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1962,9 +2110,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -1982,9 +2130,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -2023,9 +2171,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -2036,9 +2184,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -2070,9 +2218,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -2104,9 +2252,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -2117,9 +2265,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -2183,9 +2331,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.1853 ], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -2232,9 +2380,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.4676 ], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -2362,9 +2510,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl -0.0 ], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -2387,9 +2535,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -2479,9 +2627,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.5926 ], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -2590,9 +2738,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -2615,9 +2763,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -2658,22 +2806,34 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -2740,28 +2900,72 @@ description: Variables in memory after executing sheet-metal-bracket.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -2859,17 +3063,26 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2895,9 +3108,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -2915,9 +3128,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -2956,9 +3169,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -2969,9 +3182,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -3003,9 +3216,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -3037,9 +3250,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -3050,9 +3263,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -3116,9 +3329,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.1853 ], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -3165,9 +3378,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.4676 ], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -3295,9 +3508,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl -0.0 ], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -3320,9 +3533,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -3412,9 +3625,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.5926 ], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -3523,9 +3736,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -3548,9 +3761,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -3591,22 +3804,34 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -3673,28 +3898,72 @@ description: Variables in memory after executing sheet-metal-bracket.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -3745,7 +4014,13 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "type": "Number", "value": 0.25, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "mountingBoltPatternX": { @@ -3778,7 +4053,13 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "type": "Number", "value": 0.75, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "rightFlangeBoltPattern": { @@ -3837,17 +4118,26 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3873,9 +4163,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -3893,9 +4183,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -3934,9 +4224,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -3947,9 +4237,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -3981,9 +4271,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -4015,9 +4305,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -4028,9 +4318,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -4094,9 +4384,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.1853 ], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -4143,9 +4433,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.4676 ], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -4273,9 +4563,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl -0.0 ], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -4298,9 +4588,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -4390,9 +4680,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.5926 ], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -4501,9 +4791,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -4526,9 +4816,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -4569,22 +4859,34 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -4651,28 +4953,72 @@ description: Variables in memory after executing sheet-metal-bracket.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -4770,17 +5116,26 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -4806,9 +5161,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -4826,9 +5181,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -4867,9 +5222,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -4880,9 +5235,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -4914,9 +5269,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -4948,9 +5303,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -4961,9 +5316,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -5027,9 +5382,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.1853 ], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -5076,9 +5431,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.4676 ], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -5206,9 +5561,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl -0.0 ], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -5231,9 +5586,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -5323,9 +5678,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.5926 ], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -5434,9 +5789,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -5459,9 +5814,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -5502,22 +5857,34 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -5584,28 +5951,72 @@ description: Variables in memory after executing sheet-metal-bracket.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -5756,17 +6167,26 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -5792,9 +6212,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -5812,9 +6232,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -5853,9 +6273,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -5866,9 +6286,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -5900,9 +6320,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -5934,9 +6354,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -5947,9 +6367,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -6013,9 +6433,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.1853 ], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -6062,9 +6482,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.4676 ], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -6192,9 +6612,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl -0.0 ], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -6217,9 +6637,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -6309,9 +6729,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.5926 ], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -6420,9 +6840,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -6445,9 +6865,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -6488,22 +6908,34 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -6570,28 +7002,72 @@ description: Variables in memory after executing sheet-metal-bracket.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -6689,17 +7165,26 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -6725,9 +7210,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -6745,9 +7230,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -6786,9 +7271,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -6799,9 +7284,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -6833,9 +7318,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -6867,9 +7352,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -6880,9 +7365,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -6946,9 +7431,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.1853 ], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -6995,9 +7480,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.4676 ], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -7125,9 +7610,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl -0.0 ], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -7150,9 +7635,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -7242,9 +7727,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.5926 ], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -7353,9 +7838,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -7378,9 +7863,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -7421,22 +7906,34 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -7503,28 +8000,72 @@ description: Variables in memory after executing sheet-metal-bracket.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -7622,17 +8163,26 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -7658,9 +8208,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -7678,9 +8228,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -7719,9 +8269,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -7732,9 +8282,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -7766,9 +8316,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -7800,9 +8350,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -7813,9 +8363,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -7879,9 +8429,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.1853 ], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -7928,9 +8478,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.4676 ], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -8058,9 +8608,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl -0.0 ], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -8083,9 +8633,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -8175,9 +8725,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.5926 ], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -8286,9 +8836,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -8311,9 +8861,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -8354,22 +8904,34 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -8436,28 +8998,72 @@ description: Variables in memory after executing sheet-metal-bracket.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -8555,17 +9161,26 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -8591,9 +9206,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -8611,9 +9226,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -8652,9 +9267,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -8665,9 +9280,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -8699,9 +9314,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -8733,9 +9348,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -8746,9 +9361,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -8812,9 +9427,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.1853 ], "tag": { - "commentStart": 1496, - "end": 1502, - "start": 1496, + "commentStart": 1490, + "end": 1496, + "start": 1490, "type": "TagDeclarator", "value": "seg01" }, @@ -8861,9 +9476,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.4676 ], "tag": { - "commentStart": 1633, - "end": 1639, - "start": 1633, + "commentStart": 1600, + "end": 1606, + "start": 1600, "type": "TagDeclarator", "value": "seg02" }, @@ -8991,9 +9606,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl -0.0 ], "tag": { - "commentStart": 1984, - "end": 1990, - "start": 1984, + "commentStart": 1909, + "end": 1915, + "start": 1909, "type": "TagDeclarator", "value": "seg03" }, @@ -9016,9 +9631,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2033, - "end": 2039, - "start": 2033, + "commentStart": 1958, + "end": 1964, + "start": 1958, "type": "TagDeclarator", "value": "seg04" }, @@ -9108,9 +9723,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 2.5926 ], "tag": { - "commentStart": 2317, - "end": 2323, - "start": 2317, + "commentStart": 2200, + "end": 2206, + "start": 2200, "type": "TagDeclarator", "value": "seg05" }, @@ -9219,9 +9834,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2644, - "end": 2650, - "start": 2644, + "commentStart": 2485, + "end": 2491, + "start": 2485, "type": "TagDeclarator", "value": "seg06" }, @@ -9244,9 +9859,9 @@ description: Variables in memory after executing sheet-metal-bracket.kcl 0.125 ], "tag": { - "commentStart": 2720, - "end": 2726, - "start": 2720, + "commentStart": 2561, + "end": 2567, + "start": 2561, "type": "TagDeclarator", "value": "seg07" }, @@ -9287,22 +9902,34 @@ description: Variables in memory after executing sheet-metal-bracket.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -9369,28 +9996,72 @@ description: Variables in memory after executing sheet-metal-bracket.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5, + "radius": { + "n": 0.5, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } diff --git a/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/artifact_commands.snap index b04405acf..e2c9d6f90 100644 --- a/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/artifact_commands.snap @@ -161,7 +161,8 @@ description: Artifact commands socket-head-cap-screw.kcl "type": "extrude", "target": "[uuid]", "distance": -0.19, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -393,7 +394,8 @@ description: Artifact commands socket-head-cap-screw.kcl "type": "extrude", "target": "[uuid]", "distance": -0.14250000000000002, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -631,7 +633,8 @@ description: Artifact commands socket-head-cap-screw.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/artifact_graph_flowchart.snap.md index 2f7711840..467383cf8 100644 --- a/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/artifact_graph_flowchart.snap.md @@ -6,18 +6,18 @@ flowchart LR 4[Solid2d] end subgraph path13 [Path] - 13["Path
[971, 1052, 0]"] - 14["Segment
[1058, 1135, 0]"] - 15["Segment
[1141, 1218, 0]"] - 16["Segment
[1224, 1301, 0]"] - 17["Segment
[1307, 1383, 0]"] - 18["Segment
[1389, 1465, 0]"] - 19["Segment
[1471, 1478, 0]"] + 13["Path
[976, 1057, 0]"] + 14["Segment
[1063, 1114, 0]"] + 15["Segment
[1120, 1171, 0]"] + 16["Segment
[1177, 1228, 0]"] + 17["Segment
[1234, 1284, 0]"] + 18["Segment
[1290, 1340, 0]"] + 19["Segment
[1346, 1353, 0]"] 20[Solid2d] end subgraph path41 [Path] - 41["Path
[1572, 1641, 0]"] - 42["Segment
[1572, 1641, 0]"] + 41["Path
[1452, 1521, 0]"] + 42["Segment
[1452, 1521, 0]"] 43[Solid2d] end 1["Plane
[650, 667, 0]"] @@ -29,7 +29,7 @@ flowchart LR 10["SweepEdge Adjacent"] 11["EdgeCut Fillet
[788, 854, 0]"] 12["EdgeCut Fillet
[788, 854, 0]"] - 21["Sweep Extrusion
[1484, 1524, 0]"] + 21["Sweep Extrusion
[1359, 1399, 0]"] 22[Wall] 23[Wall] 24[Wall] @@ -49,14 +49,14 @@ flowchart LR 38["SweepEdge Adjacent"] 39["SweepEdge Opposite"] 40["SweepEdge Adjacent"] - 44["Sweep Extrusion
[1647, 1675, 0]"] + 44["Sweep Extrusion
[1527, 1555, 0]"] 45[Wall] 46["Cap End"] 47["SweepEdge Opposite"] 48["SweepEdge Adjacent"] - 49["EdgeCut Fillet
[1681, 1740, 0]"] - 50["StartSketchOnFace
[933, 965, 0]"] - 51["StartSketchOnFace
[1536, 1566, 0]"] + 49["EdgeCut Fillet
[1561, 1620, 0]"] + 50["StartSketchOnFace
[933, 970, 0]"] + 51["StartSketchOnFace
[1411, 1446, 0]"] 1 --- 2 2 --- 3 2 ---- 5 diff --git a/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/ast.snap b/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/ast.snap index 412c74207..2e732a4dc 100644 --- a/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing socket-head-cap-screw.kcl "Ok": { "body": [ { - "commentStart": 404, + "commentStart": 0, "declaration": { - "commentStart": 427, + "commentStart": 0, "end": 0, "id": { - "commentStart": 427, + "commentStart": 0, "end": 0, "name": "boltDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 442, + "commentStart": 0, "end": 0, "raw": "0.190", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing socket-head-cap-screw.kcl "type": "VariableDeclaration" }, { - "commentStart": 448, + "commentStart": 0, "declaration": { - "commentStart": 448, + "commentStart": 0, "end": 0, "id": { - "commentStart": 448, + "commentStart": 0, "end": 0, "name": "boltLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 461, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -75,12 +75,12 @@ description: Result of parsing socket-head-cap-screw.kcl "type": "VariableDeclaration" }, { - "commentStart": 465, + "commentStart": 0, "declaration": { - "commentStart": 465, + "commentStart": 0, "end": 0, "id": { - "commentStart": 465, + "commentStart": 0, "end": 0, "name": "boltHeadLength", "start": 0, @@ -88,10 +88,10 @@ description: Result of parsing socket-head-cap-screw.kcl }, "init": { "abs_path": false, - "commentStart": 482, + "commentStart": 0, "end": 0, "name": { - "commentStart": 482, + "commentStart": 0, "end": 0, "name": "boltDiameter", "start": 0, @@ -112,19 +112,19 @@ description: Result of parsing socket-head-cap-screw.kcl "type": "VariableDeclaration" }, { - "commentStart": 495, + "commentStart": 0, "declaration": { - "commentStart": 495, + "commentStart": 0, "end": 0, "id": { - "commentStart": 495, + "commentStart": 0, "end": 0, "name": "boltHeadDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 514, + "commentStart": 0, "end": 0, "raw": "0.313", "start": 0, @@ -145,22 +145,22 @@ description: Result of parsing socket-head-cap-screw.kcl "type": "VariableDeclaration" }, { - "commentStart": 520, + "commentStart": 0, "declaration": { - "commentStart": 520, + "commentStart": 0, "end": 0, "id": { - "commentStart": 520, + "commentStart": 0, "end": 0, "name": "boltHexDrive", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 535, + "commentStart": 0, "end": 0, "left": { - "commentStart": 535, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -173,7 +173,7 @@ description: Result of parsing socket-head-cap-screw.kcl }, "operator": "/", "right": { - "commentStart": 539, + "commentStart": 0, "end": 0, "raw": "32", "start": 0, @@ -198,26 +198,26 @@ description: Result of parsing socket-head-cap-screw.kcl "type": "VariableDeclaration" }, { - "commentStart": 542, + "commentStart": 0, "declaration": { - "commentStart": 542, + "commentStart": 0, "end": 0, "id": { - "commentStart": 542, + "commentStart": 0, "end": 0, "name": "boltHexFlatLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 562, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 562, + "commentStart": 0, "end": 0, "name": { - "commentStart": 562, + "commentStart": 0, "end": 0, "name": "boltHexDrive", "start": 0, @@ -230,10 +230,10 @@ description: Result of parsing socket-head-cap-screw.kcl }, "operator": "/", "right": { - "commentStart": 578, + "commentStart": 0, "end": 0, "left": { - "commentStart": 578, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -250,7 +250,7 @@ description: Result of parsing socket-head-cap-screw.kcl { "arguments": [ { - "commentStart": 596, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -264,10 +264,10 @@ description: Result of parsing socket-head-cap-screw.kcl ], "callee": { "abs_path": false, - "commentStart": 586, + "commentStart": 0, "end": 0, "name": { - "commentStart": 586, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -277,7 +277,7 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 586, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -286,10 +286,10 @@ description: Result of parsing socket-head-cap-screw.kcl ], "callee": { "abs_path": false, - "commentStart": 582, + "commentStart": 0, "end": 0, "name": { - "commentStart": 582, + "commentStart": 0, "end": 0, "name": "cos", "start": 0, @@ -299,7 +299,7 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 582, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -323,12 +323,12 @@ description: Result of parsing socket-head-cap-screw.kcl "type": "VariableDeclaration" }, { - "commentStart": 601, + "commentStart": 0, "declaration": { - "commentStart": 639, + "commentStart": 0, "end": 0, "id": { - "commentStart": 639, + "commentStart": 0, "end": 0, "name": "boltHead", "start": 0, @@ -340,10 +340,10 @@ description: Result of parsing socket-head-cap-screw.kcl "arguments": [ { "abs_path": false, - "commentStart": 664, + "commentStart": 0, "end": 0, "name": { - "commentStart": 664, + "commentStart": 0, "end": 0, "name": "XZ", "start": 0, @@ -357,10 +357,10 @@ description: Result of parsing socket-head-cap-screw.kcl ], "callee": { "abs_path": false, - "commentStart": 650, + "commentStart": 0, "end": 0, "name": { - "commentStart": 650, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -370,7 +370,7 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 650, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -381,17 +381,17 @@ description: Result of parsing socket-head-cap-screw.kcl { "type": "LabeledArg", "label": { - "commentStart": 680, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 689, + "commentStart": 0, "elements": [ { - "commentStart": 690, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -403,7 +403,7 @@ description: Result of parsing socket-head-cap-screw.kcl } }, { - "commentStart": 693, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -424,21 +424,21 @@ description: Result of parsing socket-head-cap-screw.kcl { "type": "LabeledArg", "label": { - "commentStart": 697, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 706, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 706, + "commentStart": 0, "end": 0, "name": { - "commentStart": 706, + "commentStart": 0, "end": 0, "name": "boltHeadDiameter", "start": 0, @@ -451,7 +451,7 @@ description: Result of parsing socket-head-cap-screw.kcl }, "operator": "/", "right": { - "commentStart": 725, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -470,14 +470,14 @@ description: Result of parsing socket-head-cap-screw.kcl { "type": "LabeledArg", "label": { - "commentStart": 728, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 734, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -488,10 +488,10 @@ description: Result of parsing socket-head-cap-screw.kcl ], "callee": { "abs_path": false, - "commentStart": 673, + "commentStart": 0, "end": 0, "name": { - "commentStart": 673, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -501,7 +501,7 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 673, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -513,7 +513,7 @@ description: Result of parsing socket-head-cap-screw.kcl { "type": "LabeledArg", "label": { - "commentStart": 757, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -522,10 +522,10 @@ description: Result of parsing socket-head-cap-screw.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 767, + "commentStart": 0, "end": 0, "name": { - "commentStart": 767, + "commentStart": 0, "end": 0, "name": "boltHeadLength", "start": 0, @@ -536,7 +536,7 @@ description: Result of parsing socket-head-cap-screw.kcl "type": "Name", "type": "Name" }, - "commentStart": 766, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -547,10 +547,10 @@ description: Result of parsing socket-head-cap-screw.kcl ], "callee": { "abs_path": false, - "commentStart": 749, + "commentStart": 0, "end": 0, "name": { - "commentStart": 749, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -560,7 +560,7 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 749, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -572,14 +572,14 @@ description: Result of parsing socket-head-cap-screw.kcl { "type": "LabeledArg", "label": { - "commentStart": 795, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 804, + "commentStart": 0, "end": 0, "raw": "0.020", "start": 0, @@ -594,21 +594,21 @@ description: Result of parsing socket-head-cap-screw.kcl { "type": "LabeledArg", "label": { - "commentStart": 811, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 818, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 819, + "commentStart": 0, "end": 0, "name": { - "commentStart": 819, + "commentStart": 0, "end": 0, "name": "topEdge", "start": 0, @@ -623,10 +623,10 @@ description: Result of parsing socket-head-cap-screw.kcl "arguments": [ { "abs_path": false, - "commentStart": 844, + "commentStart": 0, "end": 0, "name": { - "commentStart": 844, + "commentStart": 0, "end": 0, "name": "topEdge", "start": 0, @@ -640,10 +640,10 @@ description: Result of parsing socket-head-cap-screw.kcl ], "callee": { "abs_path": false, - "commentStart": 828, + "commentStart": 0, "end": 0, "name": { - "commentStart": 828, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -653,7 +653,7 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 828, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -669,10 +669,10 @@ description: Result of parsing socket-head-cap-screw.kcl ], "callee": { "abs_path": false, - "commentStart": 788, + "commentStart": 0, "end": 0, "name": { - "commentStart": 788, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -682,7 +682,7 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 788, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -690,13 +690,13 @@ description: Result of parsing socket-head-cap-screw.kcl "unlabeled": null } ], - "commentStart": 650, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "3": [ { - "commentStart": 854, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -729,12 +729,12 @@ description: Result of parsing socket-head-cap-screw.kcl "type": "VariableDeclaration" }, { - "commentStart": 914, + "commentStart": 0, "declaration": { - "commentStart": 914, + "commentStart": 0, "end": 0, "id": { - "commentStart": 914, + "commentStart": 0, "end": 0, "name": "hexPatternSketch", "start": 0, @@ -745,37 +745,38 @@ description: Result of parsing socket-head-cap-screw.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 947, - "end": 0, - "name": { - "commentStart": 947, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "boltHead", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 957, - "end": 0, - "raw": "'start'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "start" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "START", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 933, + "commentStart": 0, "end": 0, "name": { - "commentStart": 933, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -785,26 +786,42 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 933, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHead", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 986, + "commentStart": 0, "elements": [ { - "commentStart": 995, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 995, + "commentStart": 0, "end": 0, "name": { - "commentStart": 995, + "commentStart": 0, "end": 0, "name": "boltHexDrive", "start": 0, @@ -817,7 +834,7 @@ description: Result of parsing socket-head-cap-screw.kcl }, "operator": "/", "right": { - "commentStart": 1010, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -833,14 +850,14 @@ description: Result of parsing socket-head-cap-screw.kcl "type": "BinaryExpression" }, { - "commentStart": 1020, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1020, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1020, + "commentStart": 0, "end": 0, "name": "boltHexFlatLength", "start": 0, @@ -853,7 +870,7 @@ description: Result of parsing socket-head-cap-screw.kcl }, "operator": "/", "right": { - "commentStart": 1040, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -875,7 +892,7 @@ description: Result of parsing socket-head-cap-screw.kcl "type": "ArrayExpression" }, { - "commentStart": 1050, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -884,10 +901,10 @@ description: Result of parsing socket-head-cap-screw.kcl ], "callee": { "abs_path": false, - "commentStart": 971, + "commentStart": 0, "end": 0, "name": { - "commentStart": 971, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -897,500 +914,7 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 971, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1069, - "end": 0, - "properties": [ - { - "commentStart": 1078, - "end": 0, - "key": { - "commentStart": 1078, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1086, - "end": 0, - "raw": "270", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 270.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1098, - "end": 0, - "key": { - "commentStart": 1098, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1107, - "end": 0, - "name": { - "commentStart": 1107, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1133, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1058, - "end": 0, - "name": { - "commentStart": 1058, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1058, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1152, - "end": 0, - "properties": [ - { - "commentStart": 1161, - "end": 0, - "key": { - "commentStart": 1161, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1169, - "end": 0, - "raw": "210", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 210.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1181, - "end": 0, - "key": { - "commentStart": 1181, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1190, - "end": 0, - "name": { - "commentStart": 1190, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1216, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1141, - "end": 0, - "name": { - "commentStart": 1141, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1141, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1235, - "end": 0, - "properties": [ - { - "commentStart": 1244, - "end": 0, - "key": { - "commentStart": 1244, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1252, - "end": 0, - "raw": "150", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 150.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1264, - "end": 0, - "key": { - "commentStart": 1264, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1273, - "end": 0, - "name": { - "commentStart": 1273, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1299, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1224, - "end": 0, - "name": { - "commentStart": 1224, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1224, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1318, - "end": 0, - "properties": [ - { - "commentStart": 1327, - "end": 0, - "key": { - "commentStart": 1327, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1335, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1346, - "end": 0, - "key": { - "commentStart": 1346, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1355, - "end": 0, - "name": { - "commentStart": 1355, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1381, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1307, - "end": 0, - "name": { - "commentStart": 1307, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1307, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1400, - "end": 0, - "properties": [ - { - "commentStart": 1409, - "end": 0, - "key": { - "commentStart": 1409, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1417, - "end": 0, - "raw": "30", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 30.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1428, - "end": 0, - "key": { - "commentStart": 1428, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1437, - "end": 0, - "name": { - "commentStart": 1437, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1463, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1389, - "end": 0, - "name": { - "commentStart": 1389, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1389, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [], - "callee": { - "abs_path": false, - "commentStart": 1471, - "end": 0, - "name": { - "commentStart": 1471, - "end": 0, - "name": "close", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1471, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1401,22 +925,410 @@ description: Result of parsing socket-head-cap-screw.kcl { "type": "LabeledArg", "label": { - "commentStart": 1492, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "270", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 270.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1501, + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "210", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 210.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "150", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 150.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "90", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "30", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 30.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "close", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1502, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1502, + "commentStart": 0, "end": 0, "name": "boltHeadLength", "start": 0, @@ -1427,7 +1339,7 @@ description: Result of parsing socket-head-cap-screw.kcl "type": "Name", "type": "Name" }, - "commentStart": 1501, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1436,7 +1348,7 @@ description: Result of parsing socket-head-cap-screw.kcl }, "operator": "*", "right": { - "commentStart": 1519, + "commentStart": 0, "end": 0, "raw": "0.75", "start": 0, @@ -1455,10 +1367,10 @@ description: Result of parsing socket-head-cap-screw.kcl ], "callee": { "abs_path": false, - "commentStart": 1484, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1484, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1468,7 +1380,7 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 1484, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1476,7 +1388,7 @@ description: Result of parsing socket-head-cap-screw.kcl "unlabeled": null } ], - "commentStart": 933, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1492,12 +1404,12 @@ description: Result of parsing socket-head-cap-screw.kcl "type": "VariableDeclaration" }, { - "commentStart": 1525, + "commentStart": 0, "declaration": { - "commentStart": 1525, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1525, + "commentStart": 0, "end": 0, "name": "boltBody", "start": 0, @@ -1508,37 +1420,38 @@ description: Result of parsing socket-head-cap-screw.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1550, - "end": 0, - "name": { - "commentStart": 1550, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "boltHead", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 1560, - "end": 0, - "raw": "'end'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "end" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "END", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1536, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1536, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1548,28 +1461,44 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 1536, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHead", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1579, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1588, + "commentStart": 0, "elements": [ { - "commentStart": 1589, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1581,7 +1510,7 @@ description: Result of parsing socket-head-cap-screw.kcl } }, { - "commentStart": 1592, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1602,21 +1531,21 @@ description: Result of parsing socket-head-cap-screw.kcl { "type": "LabeledArg", "label": { - "commentStart": 1596, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1605, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1605, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1605, + "commentStart": 0, "end": 0, "name": "boltDiameter", "start": 0, @@ -1629,7 +1558,7 @@ description: Result of parsing socket-head-cap-screw.kcl }, "operator": "/", "right": { - "commentStart": 1620, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1648,14 +1577,14 @@ description: Result of parsing socket-head-cap-screw.kcl { "type": "LabeledArg", "label": { - "commentStart": 1623, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1629, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1666,10 +1595,10 @@ description: Result of parsing socket-head-cap-screw.kcl ], "callee": { "abs_path": false, - "commentStart": 1572, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1572, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1679,7 +1608,7 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 1572, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1691,7 +1620,7 @@ description: Result of parsing socket-head-cap-screw.kcl { "type": "LabeledArg", "label": { - "commentStart": 1655, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1699,10 +1628,10 @@ description: Result of parsing socket-head-cap-screw.kcl }, "arg": { "abs_path": false, - "commentStart": 1664, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1664, + "commentStart": 0, "end": 0, "name": "boltLength", "start": 0, @@ -1717,10 +1646,10 @@ description: Result of parsing socket-head-cap-screw.kcl ], "callee": { "abs_path": false, - "commentStart": 1647, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1647, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1730,7 +1659,7 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 1647, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1742,14 +1671,14 @@ description: Result of parsing socket-head-cap-screw.kcl { "type": "LabeledArg", "label": { - "commentStart": 1688, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1697, + "commentStart": 0, "end": 0, "raw": ".020", "start": 0, @@ -1764,23 +1693,23 @@ description: Result of parsing socket-head-cap-screw.kcl { "type": "LabeledArg", "label": { - "commentStart": 1703, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1710, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 1727, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1727, + "commentStart": 0, "end": 0, "name": "filletEdge", "start": 0, @@ -1794,10 +1723,10 @@ description: Result of parsing socket-head-cap-screw.kcl ], "callee": { "abs_path": false, - "commentStart": 1711, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1711, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -1807,7 +1736,7 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 1711, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1823,10 +1752,10 @@ description: Result of parsing socket-head-cap-screw.kcl ], "callee": { "abs_path": false, - "commentStart": 1681, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1681, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -1836,7 +1765,7 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 1681, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1848,14 +1777,14 @@ description: Result of parsing socket-head-cap-screw.kcl { "type": "LabeledArg", "label": { - "commentStart": 1757, + "commentStart": 0, "end": 0, "name": "color", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1765, + "commentStart": 0, "end": 0, "raw": "\"#4dd043\"", "start": 0, @@ -1867,14 +1796,14 @@ description: Result of parsing socket-head-cap-screw.kcl { "type": "LabeledArg", "label": { - "commentStart": 1776, + "commentStart": 0, "end": 0, "name": "metalness", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1788, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1889,14 +1818,14 @@ description: Result of parsing socket-head-cap-screw.kcl { "type": "LabeledArg", "label": { - "commentStart": 1792, + "commentStart": 0, "end": 0, "name": "roughness", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1804, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1911,10 +1840,10 @@ description: Result of parsing socket-head-cap-screw.kcl ], "callee": { "abs_path": false, - "commentStart": 1746, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1746, + "commentStart": 0, "end": 0, "name": "appearance", "start": 0, @@ -1924,7 +1853,7 @@ description: Result of parsing socket-head-cap-screw.kcl "start": 0, "type": "Name" }, - "commentStart": 1746, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1932,7 +1861,7 @@ description: Result of parsing socket-head-cap-screw.kcl "unlabeled": null } ], - "commentStart": 1536, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1955,7 +1884,7 @@ description: Result of parsing socket-head-cap-screw.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 372, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -1970,10 +1899,10 @@ description: Result of parsing socket-head-cap-screw.kcl ], "properties": [ { - "commentStart": 381, + "commentStart": 0, "end": 0, "key": { - "commentStart": 381, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -1983,10 +1912,10 @@ description: Result of parsing socket-head-cap-screw.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 401, + "commentStart": 0, "end": 0, "name": { - "commentStart": 401, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -2007,7 +1936,7 @@ description: Result of parsing socket-head-cap-screw.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 404, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/ops.snap b/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/ops.snap index 5bcbac621..e1cb2f566 100644 --- a/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/ops.snap @@ -23,7 +23,7 @@ description: Operations executed socket-head-cap-screw.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -119,16 +119,7 @@ description: Operations executed socket-head-cap-screw.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -139,7 +130,15 @@ description: Operations executed socket-head-cap-screw.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -148,7 +147,13 @@ description: Operations executed socket-head-cap-screw.kcl "type": "Number", "value": -0.14250000000000002, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -169,16 +174,7 @@ description: Operations executed socket-head-cap-screw.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -189,7 +185,15 @@ description: Operations executed socket-head-cap-screw.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/program_memory.snap index 66484fca3..de48e4080 100644 --- a/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/socket-head-cap-screw/program_memory.snap @@ -15,9 +15,9 @@ description: Variables in memory after executing socket-head-cap-screw.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1629, - "end": 1640, - "start": 1629, + "commentStart": 1509, + "end": 1520, + "start": 1509, "type": "TagDeclarator", "value": "filletEdge" }, @@ -44,9 +44,9 @@ description: Variables in memory after executing socket-head-cap-screw.kcl ], "radius": 0.095, "tag": { - "commentStart": 1629, - "end": 1640, - "start": 1629, + "commentStart": 1509, + "end": 1520, + "start": 1509, "type": "TagDeclarator", "value": "filletEdge" }, @@ -68,17 +68,26 @@ description: Variables in memory after executing socket-head-cap-screw.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -143,22 +152,34 @@ description: Variables in memory after executing socket-head-cap-screw.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -201,14 +222,36 @@ description: Variables in memory after executing socket-head-cap-screw.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.02, + "radius": { + "n": 0.02, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.02, + "radius": { + "n": 0.02, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -258,7 +301,18 @@ description: Variables in memory after executing socket-head-cap-screw.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.02, + "radius": { + "n": 0.02, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -346,22 +400,34 @@ description: Variables in memory after executing socket-head-cap-screw.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -404,14 +470,36 @@ description: Variables in memory after executing socket-head-cap-screw.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.02, + "radius": { + "n": 0.02, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.02, + "radius": { + "n": 0.02, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -451,14 +539,26 @@ description: Variables in memory after executing socket-head-cap-screw.kcl "type": "Number", "value": 0.1563, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "boltHexFlatLength": { "type": "Number", "value": 0.0902, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "boltLength": { @@ -656,17 +756,26 @@ description: Variables in memory after executing socket-head-cap-screw.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -731,22 +840,34 @@ description: Variables in memory after executing socket-head-cap-screw.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -789,14 +910,36 @@ description: Variables in memory after executing socket-head-cap-screw.kcl { "type": "fillet", "id": "[uuid]", - "radius": 0.02, + "radius": { + "n": 0.02, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.02, + "radius": { + "n": 0.02, + "ty": { + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } diff --git a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_commands.snap index d525bd0bb..d61dc8de0 100644 --- a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_commands.snap @@ -195,7 +195,8 @@ description: Artifact commands walkie-talkie.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -575,7 +576,8 @@ description: Artifact commands walkie-talkie.kcl "type": "extrude", "target": "[uuid]", "distance": -0.0625, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -896,7 +898,8 @@ description: Artifact commands walkie-talkie.kcl "type": "extrude", "target": "[uuid]", "distance": -0.0625, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1120,7 +1123,8 @@ description: Artifact commands walkie-talkie.kcl "type": "extrude", "target": "[uuid]", "distance": -0.5, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -10036,7 +10040,8 @@ description: Artifact commands walkie-talkie.kcl "type": "extrude", "target": "[uuid]", "distance": -0.0625, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -22582,7 +22587,8 @@ description: Artifact commands walkie-talkie.kcl "type": "extrude", "target": "[uuid]", "distance": 0.05, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -22999,7 +23005,8 @@ description: Artifact commands walkie-talkie.kcl "unit": "degrees", "value": 360.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -23310,7 +23317,8 @@ description: Artifact commands walkie-talkie.kcl "type": "extrude", "target": "[uuid]", "distance": 0.04, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -23652,7 +23660,8 @@ description: Artifact commands walkie-talkie.kcl "type": "extrude", "target": "[uuid]", "distance": 0.04, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -23994,7 +24003,8 @@ description: Artifact commands walkie-talkie.kcl "type": "extrude", "target": "[uuid]", "distance": 0.04, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -24360,7 +24370,8 @@ description: Artifact commands walkie-talkie.kcl "type": "extrude", "target": "[uuid]", "distance": 0.04, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_graph_flowchart.snap.md index 88a8eed0f..3bf3939cb 100644 --- a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/artifact_graph_flowchart.snap.md @@ -9,32 +9,32 @@ flowchart LR 7[Solid2d] end subgraph path27 [Path] - 27["Path
[963, 1088, 6]"] - 28["Segment
[1094, 1152, 6]"] - 29["Segment
[1158, 1283, 6]"] - 30["Segment
[1289, 1347, 6]"] - 31["Segment
[1353, 1481, 6]"] - 32["Segment
[1487, 1567, 6]"] - 33["Segment
[1573, 1702, 6]"] - 34["Segment
[1708, 1787, 6]"] - 35["Segment
[1793, 1800, 6]"] + 27["Path
[968, 1093, 6]"] + 28["Segment
[1099, 1157, 6]"] + 29["Segment
[1163, 1288, 6]"] + 30["Segment
[1294, 1352, 6]"] + 31["Segment
[1358, 1486, 6]"] + 32["Segment
[1492, 1553, 6]"] + 33["Segment
[1559, 1688, 6]"] + 34["Segment
[1694, 1754, 6]"] + 35["Segment
[1760, 1767, 6]"] 36[Solid2d] end subgraph path63 [Path] - 63["Path
[1950, 2004, 6]"] - 64["Segment
[2010, 2051, 6]"] - 65["Segment
[2057, 2086, 6]"] - 66["Segment
[2092, 2122, 6]"] - 67["Segment
[2128, 2184, 6]"] - 68["Segment
[2190, 2197, 6]"] + 63["Path
[1922, 1976, 6]"] + 64["Segment
[1982, 2023, 6]"] + 65["Segment
[2029, 2058, 6]"] + 66["Segment
[2064, 2094, 6]"] + 67["Segment
[2100, 2156, 6]"] + 68["Segment
[2162, 2169, 6]"] 69[Solid2d] end subgraph path84 [Path] - 84["Path
[2335, 2372, 6]"] - 85["Segment
[2378, 2409, 6]"] - 86["Segment
[2415, 2448, 6]"] - 87["Segment
[2454, 2486, 6]"] - 88["Segment
[2492, 2499, 6]"] + 84["Path
[2312, 2349, 6]"] + 85["Segment
[2355, 2386, 6]"] + 86["Segment
[2392, 2425, 6]"] + 87["Segment
[2431, 2463, 6]"] + 88["Segment
[2469, 2476, 6]"] 89[Solid2d] end subgraph path105 [Path] @@ -68,66 +68,66 @@ flowchart LR end subgraph path145 [Path] 145["Path
[1441, 1600, 7]"] - 146["Segment
[1606, 1701, 7]"] - 147["Segment
[1707, 1868, 7]"] - 148["Segment
[1874, 1969, 7]"] - 149["Segment
[1975, 2139, 7]"] - 150["Segment
[2145, 2241, 7]"] - 151["Segment
[2247, 2410, 7]"] - 152["Segment
[2416, 2511, 7]"] - 153["Segment
[2517, 2524, 7]"] + 146["Segment
[1606, 1682, 7]"] + 147["Segment
[1688, 1849, 7]"] + 148["Segment
[1855, 1931, 7]"] + 149["Segment
[1937, 2101, 7]"] + 150["Segment
[2107, 2184, 7]"] + 151["Segment
[2190, 2353, 7]"] + 152["Segment
[2359, 2435, 7]"] + 153["Segment
[2441, 2448, 7]"] 154[Solid2d] end subgraph path156 [Path] 156["Path
[123, 210, 12]"] 157["Segment
[218, 247, 12]"] 158["Segment
[255, 283, 12]"] - 159["Segment
[291, 388, 12]"] - 160["Segment
[396, 443, 12]"] - 161["Segment
[451, 479, 12]"] - 162["Segment
[487, 516, 12]"] - 163["Segment
[524, 553, 12]"] - 164["Segment
[561, 652, 12]"] - 165["Segment
[660, 688, 12]"] - 166["Segment
[696, 725, 12]"] - 167["Segment
[733, 821, 12]"] - 168["Segment
[829, 857, 12]"] - 169["Segment
[865, 899, 12]"] - 170["Segment
[907, 937, 12]"] - 171["Segment
[945, 1054, 12]"] - 172["Segment
[1062, 1069, 12]"] + 159["Segment
[291, 369, 12]"] + 160["Segment
[377, 424, 12]"] + 161["Segment
[432, 460, 12]"] + 162["Segment
[468, 497, 12]"] + 163["Segment
[505, 534, 12]"] + 164["Segment
[542, 608, 12]"] + 165["Segment
[616, 644, 12]"] + 166["Segment
[652, 681, 12]"] + 167["Segment
[689, 751, 12]"] + 168["Segment
[759, 787, 12]"] + 169["Segment
[795, 829, 12]"] + 170["Segment
[837, 867, 12]"] + 171["Segment
[875, 984, 12]"] + 172["Segment
[992, 999, 12]"] 173[Solid2d] end subgraph path175 [Path] - 175["Path
[1203, 1301, 12]"] - 176["Segment
[1309, 1428, 12]"] - 177["Segment
[1436, 1490, 12]"] - 178["Segment
[1498, 1619, 12]"] - 179["Segment
[1627, 1634, 12]"] + 175["Path
[1133, 1231, 12]"] + 176["Segment
[1239, 1358, 12]"] + 177["Segment
[1366, 1413, 12]"] + 178["Segment
[1421, 1542, 12]"] + 179["Segment
[1550, 1557, 12]"] 180[Solid2d] end subgraph path182 [Path] - 182["Path
[1731, 1828, 12]"] - 183["Segment
[1836, 1955, 12]"] - 184["Segment
[1963, 2018, 12]"] - 185["Segment
[2026, 2147, 12]"] - 186["Segment
[2155, 2162, 12]"] + 182["Path
[1654, 1751, 12]"] + 183["Segment
[1759, 1878, 12]"] + 184["Segment
[1886, 1934, 12]"] + 185["Segment
[1942, 2063, 12]"] + 186["Segment
[2071, 2078, 12]"] 187[Solid2d] end subgraph path189 [Path] - 189["Path
[1203, 1301, 12]"] - 190["Segment
[1309, 1428, 12]"] - 191["Segment
[1436, 1490, 12]"] - 192["Segment
[1498, 1619, 12]"] - 193["Segment
[1627, 1634, 12]"] + 189["Path
[1133, 1231, 12]"] + 190["Segment
[1239, 1358, 12]"] + 191["Segment
[1366, 1413, 12]"] + 192["Segment
[1421, 1542, 12]"] + 193["Segment
[1550, 1557, 12]"] 194[Solid2d] end subgraph path196 [Path] - 196["Path
[1731, 1828, 12]"] - 197["Segment
[1836, 1955, 12]"] - 198["Segment
[1963, 2018, 12]"] - 199["Segment
[2026, 2147, 12]"] - 200["Segment
[2155, 2162, 12]"] + 196["Path
[1654, 1751, 12]"] + 197["Segment
[1759, 1878, 12]"] + 198["Segment
[1886, 1934, 12]"] + 199["Segment
[1942, 2063, 12]"] + 200["Segment
[2071, 2078, 12]"] 201[Solid2d] end subgraph path230 [Path] @@ -149,34 +149,34 @@ flowchart LR end subgraph path274 [Path] 274["Path
[398, 423, 11]"] - 275["Segment
[431, 490, 11]"] - 276["Segment
[498, 558, 11]"] - 277["Segment
[566, 616, 11]"] - 278["Segment
[624, 631, 11]"] + 275["Segment
[431, 489, 11]"] + 276["Segment
[497, 556, 11]"] + 277["Segment
[564, 607, 11]"] + 278["Segment
[615, 622, 11]"] 279[Solid2d] end subgraph path298 [Path] 298["Path
[398, 423, 11]"] - 299["Segment
[431, 490, 11]"] - 300["Segment
[498, 558, 11]"] - 301["Segment
[566, 616, 11]"] - 302["Segment
[624, 631, 11]"] + 299["Segment
[431, 489, 11]"] + 300["Segment
[497, 556, 11]"] + 301["Segment
[564, 607, 11]"] + 302["Segment
[615, 622, 11]"] 303[Solid2d] end subgraph path322 [Path] 322["Path
[398, 423, 11]"] - 323["Segment
[431, 490, 11]"] - 324["Segment
[498, 558, 11]"] - 325["Segment
[566, 616, 11]"] - 326["Segment
[624, 631, 11]"] + 323["Segment
[431, 489, 11]"] + 324["Segment
[497, 556, 11]"] + 325["Segment
[564, 607, 11]"] + 326["Segment
[615, 622, 11]"] 327[Solid2d] end subgraph path346 [Path] 346["Path
[398, 423, 11]"] - 347["Segment
[431, 490, 11]"] - 348["Segment
[498, 558, 11]"] - 349["Segment
[566, 616, 11]"] - 350["Segment
[624, 631, 11]"] + 347["Segment
[431, 489, 11]"] + 348["Segment
[497, 556, 11]"] + 349["Segment
[564, 607, 11]"] + 350["Segment
[615, 622, 11]"] 351[Solid2d] end 1["Plane
[368, 385, 6]"] @@ -199,7 +199,7 @@ flowchart LR 24["EdgeCut Chamfer
[639, 870, 6]"] 25["EdgeCut Chamfer
[639, 870, 6]"] 26["EdgeCut Chamfer
[639, 870, 6]"] - 37["Sweep Extrusion
[1814, 1857, 6]"] + 37["Sweep Extrusion
[1781, 1824, 6]"] 38[Wall] 39[Wall] 40[Wall] @@ -225,7 +225,7 @@ flowchart LR 60["SweepEdge Adjacent"] 61["SweepEdge Opposite"] 62["SweepEdge Adjacent"] - 70["Sweep Extrusion
[2211, 2254, 6]"] + 70["Sweep Extrusion
[2183, 2226, 6]"] 71[Wall] 72[Wall] 73[Wall] @@ -239,7 +239,7 @@ flowchart LR 81["SweepEdge Adjacent"] 82["SweepEdge Opposite"] 83["SweepEdge Adjacent"] - 90["Sweep Extrusion
[2501, 2534, 6]"] + 90["Sweep Extrusion
[2478, 2511, 6]"] 91[Wall] 92[Wall] 93[Wall] @@ -273,12 +273,12 @@ flowchart LR 129["Plane
[455, 472, 7]"] 137["Plane
[957, 974, 7]"] 144["Plane
[1418, 1435, 7]"] - 155["Plane
[2632, 2649, 7]"] - 174["Plane
[2692, 2709, 7]"] - 181["Plane
[2754, 2771, 7]"] - 188["Plane
[2815, 2832, 7]"] - 195["Plane
[2876, 2893, 7]"] - 202["Sweep Extrusion
[2920, 2951, 7]"] + 155["Plane
[2556, 2573, 7]"] + 174["Plane
[2616, 2633, 7]"] + 181["Plane
[2678, 2695, 7]"] + 188["Plane
[2739, 2756, 7]"] + 195["Plane
[2800, 2817, 7]"] + 202["Sweep Extrusion
[2844, 2875, 7]"] 203[Wall] 204[Wall] 205[Wall] @@ -337,7 +337,7 @@ flowchart LR 271["SweepEdge Adjacent"] 272["SweepEdge Adjacent"] 273["Plane
[373, 390, 11]"] - 280["Sweep Extrusion
[643, 690, 11]"] + 280["Sweep Extrusion
[634, 681, 11]"] 281[Wall] 282[Wall] 283[Wall] @@ -352,10 +352,10 @@ flowchart LR 292["SweepEdge Adjacent"] 293["SweepEdge Opposite"] 294["SweepEdge Adjacent"] - 295["EdgeCut Chamfer
[698, 844, 11]"] - 296["EdgeCut Chamfer
[698, 844, 11]"] + 295["EdgeCut Chamfer
[689, 835, 11]"] + 296["EdgeCut Chamfer
[689, 835, 11]"] 297["Plane
[373, 390, 11]"] - 304["Sweep Extrusion
[643, 690, 11]"] + 304["Sweep Extrusion
[634, 681, 11]"] 305[Wall] 306[Wall] 307[Wall] @@ -370,10 +370,10 @@ flowchart LR 316["SweepEdge Adjacent"] 317["SweepEdge Opposite"] 318["SweepEdge Adjacent"] - 319["EdgeCut Chamfer
[698, 844, 11]"] - 320["EdgeCut Chamfer
[698, 844, 11]"] + 319["EdgeCut Chamfer
[689, 835, 11]"] + 320["EdgeCut Chamfer
[689, 835, 11]"] 321["Plane
[373, 390, 11]"] - 328["Sweep Extrusion
[643, 690, 11]"] + 328["Sweep Extrusion
[634, 681, 11]"] 329[Wall] 330[Wall] 331[Wall] @@ -388,10 +388,10 @@ flowchart LR 340["SweepEdge Adjacent"] 341["SweepEdge Opposite"] 342["SweepEdge Adjacent"] - 343["EdgeCut Chamfer
[698, 844, 11]"] - 344["EdgeCut Chamfer
[698, 844, 11]"] + 343["EdgeCut Chamfer
[689, 835, 11]"] + 344["EdgeCut Chamfer
[689, 835, 11]"] 345["Plane
[373, 390, 11]"] - 352["Sweep Extrusion
[643, 690, 11]"] + 352["Sweep Extrusion
[634, 681, 11]"] 353[Wall] 354[Wall] 355[Wall] @@ -406,11 +406,11 @@ flowchart LR 364["SweepEdge Adjacent"] 365["SweepEdge Opposite"] 366["SweepEdge Adjacent"] - 367["EdgeCut Chamfer
[698, 844, 11]"] - 368["EdgeCut Chamfer
[698, 844, 11]"] - 369["StartSketchOnFace
[931, 957, 6]"] - 370["StartSketchOnFace
[1910, 1944, 6]"] - 371["StartSketchOnFace
[2295, 2329, 6]"] + 367["EdgeCut Chamfer
[689, 835, 11]"] + 368["EdgeCut Chamfer
[689, 835, 11]"] + 369["StartSketchOnFace
[931, 962, 6]"] + 370["StartSketchOnFace
[1877, 1916, 6]"] + 371["StartSketchOnFace
[2267, 2306, 6]"] 372["StartSketchOnPlane
[594, 618, 8]"] 1 --- 2 2 --- 3 diff --git a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/ast.snap b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/ast.snap index 868bc8248..dfef21dd3 100644 --- a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/ast.snap @@ -6,7 +6,7 @@ description: Result of parsing walkie-talkie.kcl "Ok": { "body": [ { - "commentStart": 383, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -16,7 +16,7 @@ description: Result of parsing walkie-talkie.kcl "// import constants" ], "selector": { - "commentStart": 412, + "commentStart": 0, "end": 0, "start": 0, "type": "Glob" @@ -26,7 +26,7 @@ description: Result of parsing walkie-talkie.kcl "type": "ImportStatement" }, { - "commentStart": 435, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -40,7 +40,7 @@ description: Result of parsing walkie-talkie.kcl "selector": { "type": "None", "alias": { - "commentStart": 489, + "commentStart": 0, "end": 0, "name": "body", "start": 0, @@ -52,7 +52,7 @@ description: Result of parsing walkie-talkie.kcl "type": "ImportStatement" }, { - "commentStart": 494, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -61,7 +61,7 @@ description: Result of parsing walkie-talkie.kcl "selector": { "type": "None", "alias": { - "commentStart": 515, + "commentStart": 0, "end": 0, "name": "case", "start": 0, @@ -73,7 +73,7 @@ description: Result of parsing walkie-talkie.kcl "type": "ImportStatement" }, { - "commentStart": 520, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -82,7 +82,7 @@ description: Result of parsing walkie-talkie.kcl "selector": { "type": "None", "alias": { - "commentStart": 544, + "commentStart": 0, "end": 0, "name": "antenna", "start": 0, @@ -94,7 +94,7 @@ description: Result of parsing walkie-talkie.kcl "type": "ImportStatement" }, { - "commentStart": 552, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -103,7 +103,7 @@ description: Result of parsing walkie-talkie.kcl "selector": { "type": "None", "alias": { - "commentStart": 580, + "commentStart": 0, "end": 0, "name": "talkButton", "start": 0, @@ -115,7 +115,7 @@ description: Result of parsing walkie-talkie.kcl "type": "ImportStatement" }, { - "commentStart": 591, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -124,7 +124,7 @@ description: Result of parsing walkie-talkie.kcl "selector": { "type": "None", "alias": { - "commentStart": 612, + "commentStart": 0, "end": 0, "name": "knob", "start": 0, @@ -136,7 +136,7 @@ description: Result of parsing walkie-talkie.kcl "type": "ImportStatement" }, { - "commentStart": 617, + "commentStart": 0, "end": 0, "path": { "type": "Kcl", @@ -147,10 +147,10 @@ description: Result of parsing walkie-talkie.kcl "items": [ { "alias": null, - "commentStart": 624, + "commentStart": 0, "end": 0, "name": { - "commentStart": 624, + "commentStart": 0, "end": 0, "name": "button", "start": 0, @@ -166,14 +166,14 @@ description: Result of parsing walkie-talkie.kcl "type": "ImportStatement" }, { - "commentStart": 648, + "commentStart": 0, "end": 0, "expression": { "abs_path": false, - "commentStart": 669, + "commentStart": 0, "end": 0, "name": { - "commentStart": 669, + "commentStart": 0, "end": 0, "name": "body", "start": 0, @@ -194,16 +194,16 @@ description: Result of parsing walkie-talkie.kcl "type": "ExpressionStatement" }, { - "commentStart": 673, + "commentStart": 0, "end": 0, "expression": { "body": [ { "abs_path": false, - "commentStart": 697, + "commentStart": 0, "end": 0, "name": { - "commentStart": 697, + "commentStart": 0, "end": 0, "name": "antenna", "start": 0, @@ -219,25 +219,25 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 720, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 724, + "commentStart": 0, "end": 0, "left": { - "commentStart": 724, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 725, + "commentStart": 0, "end": 0, "name": { - "commentStart": 725, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -248,7 +248,7 @@ description: Result of parsing walkie-talkie.kcl "type": "Name", "type": "Name" }, - "commentStart": 724, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -257,7 +257,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "/", "right": { - "commentStart": 733, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -274,7 +274,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "+", "right": { - "commentStart": 737, + "commentStart": 0, "end": 0, "raw": ".45", "start": 0, @@ -293,7 +293,7 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 742, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -301,7 +301,7 @@ description: Result of parsing walkie-talkie.kcl }, "arg": { "argument": { - "commentStart": 747, + "commentStart": 0, "end": 0, "raw": "0.10", "start": 0, @@ -312,7 +312,7 @@ description: Result of parsing walkie-talkie.kcl "suffix": "None" } }, - "commentStart": 746, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -323,21 +323,21 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 753, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 757, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 757, + "commentStart": 0, "end": 0, "name": { - "commentStart": 757, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -350,7 +350,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "/", "right": { - "commentStart": 766, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -369,10 +369,10 @@ description: Result of parsing walkie-talkie.kcl ], "callee": { "abs_path": false, - "commentStart": 710, + "commentStart": 0, "end": 0, "name": { - "commentStart": 710, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -382,7 +382,7 @@ description: Result of parsing walkie-talkie.kcl "start": 0, "type": "Name" }, - "commentStart": 710, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -390,13 +390,13 @@ description: Result of parsing walkie-talkie.kcl "unlabeled": null } ], - "commentStart": 697, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 768, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -424,16 +424,16 @@ description: Result of parsing walkie-talkie.kcl "type": "ExpressionStatement" }, { - "commentStart": 789, + "commentStart": 0, "end": 0, "expression": { "body": [ { "abs_path": false, - "commentStart": 789, + "commentStart": 0, "end": 0, "name": { - "commentStart": 789, + "commentStart": 0, "end": 0, "name": "case", "start": 0, @@ -449,14 +449,14 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 809, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 813, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -471,7 +471,7 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 816, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -479,7 +479,7 @@ description: Result of parsing walkie-talkie.kcl }, "arg": { "argument": { - "commentStart": 821, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -490,7 +490,7 @@ description: Result of parsing walkie-talkie.kcl "suffix": "None" } }, - "commentStart": 820, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -501,14 +501,14 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 824, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 828, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -523,10 +523,10 @@ description: Result of parsing walkie-talkie.kcl ], "callee": { "abs_path": false, - "commentStart": 799, + "commentStart": 0, "end": 0, "name": { - "commentStart": 799, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -536,7 +536,7 @@ description: Result of parsing walkie-talkie.kcl "start": 0, "type": "Name" }, - "commentStart": 799, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -544,13 +544,13 @@ description: Result of parsing walkie-talkie.kcl "unlabeled": null } ], - "commentStart": 789, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 830, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -573,16 +573,16 @@ description: Result of parsing walkie-talkie.kcl "type": "ExpressionStatement" }, { - "commentStart": 858, + "commentStart": 0, "end": 0, "expression": { "body": [ { "abs_path": false, - "commentStart": 858, + "commentStart": 0, "end": 0, "name": { - "commentStart": 858, + "commentStart": 0, "end": 0, "name": "talkButton", "start": 0, @@ -598,21 +598,21 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 884, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 888, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 888, + "commentStart": 0, "end": 0, "name": { - "commentStart": 888, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -625,7 +625,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "/", "right": { - "commentStart": 896, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -644,22 +644,22 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 899, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 903, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 904, + "commentStart": 0, "end": 0, "name": { - "commentStart": 904, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -670,7 +670,7 @@ description: Result of parsing walkie-talkie.kcl "type": "Name", "type": "Name" }, - "commentStart": 903, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -679,7 +679,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "/", "right": { - "commentStart": 916, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -698,14 +698,14 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 919, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 923, + "commentStart": 0, "end": 0, "raw": ".5", "start": 0, @@ -720,10 +720,10 @@ description: Result of parsing walkie-talkie.kcl ], "callee": { "abs_path": false, - "commentStart": 874, + "commentStart": 0, "end": 0, "name": { - "commentStart": 874, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -733,7 +733,7 @@ description: Result of parsing walkie-talkie.kcl "start": 0, "type": "Name" }, - "commentStart": 874, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -741,13 +741,13 @@ description: Result of parsing walkie-talkie.kcl "unlabeled": null } ], - "commentStart": 858, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 926, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -770,16 +770,16 @@ description: Result of parsing walkie-talkie.kcl "type": "ExpressionStatement" }, { - "commentStart": 957, + "commentStart": 0, "end": 0, "expression": { "body": [ { "abs_path": false, - "commentStart": 957, + "commentStart": 0, "end": 0, "name": { - "commentStart": 957, + "commentStart": 0, "end": 0, "name": "knob", "start": 0, @@ -795,24 +795,24 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 977, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 981, + "commentStart": 0, "end": 0, "left": { - "commentStart": 981, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 981, + "commentStart": 0, "end": 0, "name": { - "commentStart": 981, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -825,7 +825,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "/", "right": { - "commentStart": 989, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -842,7 +842,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "-", "right": { - "commentStart": 993, + "commentStart": 0, "end": 0, "raw": "0.70", "start": 0, @@ -861,22 +861,22 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 999, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1003, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1004, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1004, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -887,7 +887,7 @@ description: Result of parsing walkie-talkie.kcl "type": "Name", "type": "Name" }, - "commentStart": 1003, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -896,7 +896,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "/", "right": { - "commentStart": 1016, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -915,21 +915,21 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1019, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1023, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1023, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1023, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -942,7 +942,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "/", "right": { - "commentStart": 1032, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -961,10 +961,10 @@ description: Result of parsing walkie-talkie.kcl ], "callee": { "abs_path": false, - "commentStart": 967, + "commentStart": 0, "end": 0, "name": { - "commentStart": 967, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -974,7 +974,7 @@ description: Result of parsing walkie-talkie.kcl "start": 0, "type": "Name" }, - "commentStart": 967, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -982,13 +982,13 @@ description: Result of parsing walkie-talkie.kcl "unlabeled": null } ], - "commentStart": 957, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 1034, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1011,7 +1011,7 @@ description: Result of parsing walkie-talkie.kcl "type": "ExpressionStatement" }, { - "commentStart": 1058, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -1019,10 +1019,10 @@ description: Result of parsing walkie-talkie.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1058, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1058, + "commentStart": 0, "end": 0, "name": "button", "start": 0, @@ -1032,7 +1032,7 @@ description: Result of parsing walkie-talkie.kcl "start": 0, "type": "Name" }, - "commentStart": 1058, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1043,7 +1043,7 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1082, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -1051,17 +1051,17 @@ description: Result of parsing walkie-talkie.kcl }, "arg": { "argument": { - "commentStart": 1088, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1088, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1088, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1088, + "commentStart": 0, "end": 0, "name": "screenWidth", "start": 0, @@ -1074,7 +1074,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "/", "right": { - "commentStart": 1102, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1092,10 +1092,10 @@ description: Result of parsing walkie-talkie.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1106, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1106, + "commentStart": 0, "end": 0, "name": "tolerance", "start": 0, @@ -1110,7 +1110,7 @@ description: Result of parsing walkie-talkie.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1086, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1121,7 +1121,7 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1118, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -1129,7 +1129,7 @@ description: Result of parsing walkie-talkie.kcl }, "arg": { "argument": { - "commentStart": 1123, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1140,7 +1140,7 @@ description: Result of parsing walkie-talkie.kcl "suffix": "None" } }, - "commentStart": 1122, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1151,7 +1151,7 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1126, + "commentStart": 0, "end": 0, "name": "z", "start": 0, @@ -1159,10 +1159,10 @@ description: Result of parsing walkie-talkie.kcl }, "arg": { "abs_path": false, - "commentStart": 1130, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1130, + "commentStart": 0, "end": 0, "name": "screenYPosition", "start": 0, @@ -1177,10 +1177,10 @@ description: Result of parsing walkie-talkie.kcl ], "callee": { "abs_path": false, - "commentStart": 1072, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1072, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -1190,7 +1190,7 @@ description: Result of parsing walkie-talkie.kcl "start": 0, "type": "Name" }, - "commentStart": 1072, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1198,7 +1198,7 @@ description: Result of parsing walkie-talkie.kcl "unlabeled": null } ], - "commentStart": 1058, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1209,7 +1209,7 @@ description: Result of parsing walkie-talkie.kcl "type": "ExpressionStatement" }, { - "commentStart": 1147, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -1217,10 +1217,10 @@ description: Result of parsing walkie-talkie.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1147, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1147, + "commentStart": 0, "end": 0, "name": "button", "start": 0, @@ -1230,7 +1230,7 @@ description: Result of parsing walkie-talkie.kcl "start": 0, "type": "Name" }, - "commentStart": 1147, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1241,7 +1241,7 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1171, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -1249,17 +1249,17 @@ description: Result of parsing walkie-talkie.kcl }, "arg": { "argument": { - "commentStart": 1177, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1177, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1177, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1177, + "commentStart": 0, "end": 0, "name": "screenWidth", "start": 0, @@ -1272,7 +1272,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "/", "right": { - "commentStart": 1191, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1290,10 +1290,10 @@ description: Result of parsing walkie-talkie.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1195, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1195, + "commentStart": 0, "end": 0, "name": "tolerance", "start": 0, @@ -1308,7 +1308,7 @@ description: Result of parsing walkie-talkie.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 1175, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1319,7 +1319,7 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1207, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -1327,7 +1327,7 @@ description: Result of parsing walkie-talkie.kcl }, "arg": { "argument": { - "commentStart": 1212, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1338,7 +1338,7 @@ description: Result of parsing walkie-talkie.kcl "suffix": "None" } }, - "commentStart": 1211, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1349,24 +1349,24 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1215, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1219, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1219, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1219, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1219, + "commentStart": 0, "end": 0, "name": "screenYPosition", "start": 0, @@ -1380,10 +1380,10 @@ description: Result of parsing walkie-talkie.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1237, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1237, + "commentStart": 0, "end": 0, "name": "buttonHeight", "start": 0, @@ -1400,14 +1400,14 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "-", "right": { - "commentStart": 1253, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1253, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1253, + "commentStart": 0, "end": 0, "name": "tolerance", "start": 0, @@ -1420,7 +1420,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "*", "right": { - "commentStart": 1265, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1443,10 +1443,10 @@ description: Result of parsing walkie-talkie.kcl ], "callee": { "abs_path": false, - "commentStart": 1161, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1161, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -1456,7 +1456,7 @@ description: Result of parsing walkie-talkie.kcl "start": 0, "type": "Name" }, - "commentStart": 1161, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1464,7 +1464,7 @@ description: Result of parsing walkie-talkie.kcl "unlabeled": null } ], - "commentStart": 1147, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1475,7 +1475,7 @@ description: Result of parsing walkie-talkie.kcl "type": "ExpressionStatement" }, { - "commentStart": 1269, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -1483,10 +1483,10 @@ description: Result of parsing walkie-talkie.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1269, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1269, + "commentStart": 0, "end": 0, "name": "button", "start": 0, @@ -1496,7 +1496,7 @@ description: Result of parsing walkie-talkie.kcl "start": 0, "type": "Name" }, - "commentStart": 1269, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1507,14 +1507,14 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1308, + "commentStart": 0, "end": 0, "name": "roll", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1315, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1529,14 +1529,14 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1325, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1333, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -1551,14 +1551,14 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1345, + "commentStart": 0, "end": 0, "name": "yaw", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1351, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1573,10 +1573,10 @@ description: Result of parsing walkie-talkie.kcl ], "callee": { "abs_path": false, - "commentStart": 1283, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1283, + "commentStart": 0, "end": 0, "name": "rotate", "start": 0, @@ -1586,13 +1586,13 @@ description: Result of parsing walkie-talkie.kcl "start": 0, "type": "Name" }, - "commentStart": 1283, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 1298, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1604,24 +1604,24 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1384, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1388, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1388, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1388, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1388, + "commentStart": 0, "end": 0, "name": "screenWidth", "start": 0, @@ -1634,7 +1634,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "/", "right": { - "commentStart": 1402, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1652,10 +1652,10 @@ description: Result of parsing walkie-talkie.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1406, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1406, + "commentStart": 0, "end": 0, "name": "tolerance", "start": 0, @@ -1674,7 +1674,7 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1424, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -1682,7 +1682,7 @@ description: Result of parsing walkie-talkie.kcl }, "arg": { "argument": { - "commentStart": 1429, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -1693,7 +1693,7 @@ description: Result of parsing walkie-talkie.kcl "suffix": "None" } }, - "commentStart": 1428, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1704,21 +1704,21 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1439, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1443, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1443, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1443, + "commentStart": 0, "end": 0, "name": "screenYPosition", "start": 0, @@ -1732,10 +1732,10 @@ description: Result of parsing walkie-talkie.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1461, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1461, + "commentStart": 0, "end": 0, "name": "buttonHeight", "start": 0, @@ -1754,14 +1754,14 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1482, + "commentStart": 0, "end": 0, "name": "global", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1491, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -1773,10 +1773,10 @@ description: Result of parsing walkie-talkie.kcl ], "callee": { "abs_path": false, - "commentStart": 1366, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1366, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -1786,7 +1786,7 @@ description: Result of parsing walkie-talkie.kcl "start": 0, "type": "Name" }, - "commentStart": 1366, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1794,7 +1794,7 @@ description: Result of parsing walkie-talkie.kcl "unlabeled": null } ], - "commentStart": 1269, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1805,7 +1805,7 @@ description: Result of parsing walkie-talkie.kcl "type": "ExpressionStatement" }, { - "commentStart": 1504, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -1813,10 +1813,10 @@ description: Result of parsing walkie-talkie.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1504, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1504, + "commentStart": 0, "end": 0, "name": "button", "start": 0, @@ -1826,7 +1826,7 @@ description: Result of parsing walkie-talkie.kcl "start": 0, "type": "Name" }, - "commentStart": 1504, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1837,14 +1837,14 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1543, + "commentStart": 0, "end": 0, "name": "roll", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1550, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1859,14 +1859,14 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1560, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1568, + "commentStart": 0, "end": 0, "raw": "180", "start": 0, @@ -1881,14 +1881,14 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1580, + "commentStart": 0, "end": 0, "name": "yaw", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1586, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1903,10 +1903,10 @@ description: Result of parsing walkie-talkie.kcl ], "callee": { "abs_path": false, - "commentStart": 1518, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1518, + "commentStart": 0, "end": 0, "name": "rotate", "start": 0, @@ -1916,13 +1916,13 @@ description: Result of parsing walkie-talkie.kcl "start": 0, "type": "Name" }, - "commentStart": 1518, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 1533, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1934,24 +1934,24 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1619, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1623, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1623, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1623, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1623, + "commentStart": 0, "end": 0, "name": "screenWidth", "start": 0, @@ -1964,7 +1964,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "/", "right": { - "commentStart": 1637, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1982,10 +1982,10 @@ description: Result of parsing walkie-talkie.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1641, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1641, + "commentStart": 0, "end": 0, "name": "tolerance", "start": 0, @@ -2004,7 +2004,7 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1659, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -2012,7 +2012,7 @@ description: Result of parsing walkie-talkie.kcl }, "arg": { "argument": { - "commentStart": 1664, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -2023,7 +2023,7 @@ description: Result of parsing walkie-talkie.kcl "suffix": "None" } }, - "commentStart": 1663, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2034,24 +2034,24 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1674, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1678, + "commentStart": 0, "end": 0, "left": { - "commentStart": 1678, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1678, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1678, + "commentStart": 0, "end": 0, "name": "screenYPosition", "start": 0, @@ -2064,14 +2064,14 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "-", "right": { - "commentStart": 1697, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1697, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1697, + "commentStart": 0, "end": 0, "name": "buttonHeight", "start": 0, @@ -2084,7 +2084,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "*", "right": { - "commentStart": 1712, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2105,14 +2105,14 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "-", "right": { - "commentStart": 1718, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1718, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1718, + "commentStart": 0, "end": 0, "name": "tolerance", "start": 0, @@ -2125,7 +2125,7 @@ description: Result of parsing walkie-talkie.kcl }, "operator": "*", "right": { - "commentStart": 1730, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -2148,14 +2148,14 @@ description: Result of parsing walkie-talkie.kcl { "type": "LabeledArg", "label": { - "commentStart": 1741, + "commentStart": 0, "end": 0, "name": "global", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1750, + "commentStart": 0, "end": 0, "raw": "true", "start": 0, @@ -2167,10 +2167,10 @@ description: Result of parsing walkie-talkie.kcl ], "callee": { "abs_path": false, - "commentStart": 1601, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1601, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -2180,7 +2180,7 @@ description: Result of parsing walkie-talkie.kcl "start": 0, "type": "Name" }, - "commentStart": 1601, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2188,7 +2188,7 @@ description: Result of parsing walkie-talkie.kcl "unlabeled": null } ], - "commentStart": 1504, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2206,7 +2206,7 @@ description: Result of parsing walkie-talkie.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 351, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -2221,10 +2221,10 @@ description: Result of parsing walkie-talkie.kcl ], "properties": [ { - "commentStart": 360, + "commentStart": 0, "end": 0, "key": { - "commentStart": 360, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -2234,10 +2234,10 @@ description: Result of parsing walkie-talkie.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 380, + "commentStart": 0, "end": 0, "name": { - "commentStart": 380, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -2258,7 +2258,7 @@ description: Result of parsing walkie-talkie.kcl "nonCodeNodes": {}, "startNodes": [ { - "commentStart": 383, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/ops.snap b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/ops.snap index ef9135fa5..c07ac1764 100644 --- a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/ops.snap @@ -14,7 +14,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -117,19 +117,10 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", - "value": "END" + "value": "end" }, "sourceRange": [] } @@ -137,7 +128,15 @@ description: Operations executed walkie-talkie.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupBegin", @@ -245,16 +244,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -265,7 +255,15 @@ description: Operations executed walkie-talkie.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -301,16 +299,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -321,7 +310,15 @@ description: Operations executed walkie-talkie.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -369,7 +366,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -414,7 +411,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -469,7 +466,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -484,7 +481,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -499,7 +496,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1495,7 +1492,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1515,7 +1512,7 @@ description: Operations executed walkie-talkie.kcl "name": "zLogo", "functionSourceRange": [ 69, - 1088, + 1018, 12 ], "unlabeledArg": null, @@ -1554,7 +1551,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1573,8 +1570,8 @@ description: Operations executed walkie-talkie.kcl "type": "FunctionCall", "name": "oLogo", "functionSourceRange": [ - 1146, - 1656, + 1076, + 1579, 12 ], "unlabeledArg": null, @@ -1613,7 +1610,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1632,8 +1629,8 @@ description: Operations executed walkie-talkie.kcl "type": "FunctionCall", "name": "oLogo2", "functionSourceRange": [ - 1674, - 2184, + 1597, + 2100, 12 ], "unlabeledArg": null, @@ -1672,7 +1669,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1691,8 +1688,8 @@ description: Operations executed walkie-talkie.kcl "type": "FunctionCall", "name": "oLogo", "functionSourceRange": [ - 1146, - 1656, + 1076, + 1579, 12 ], "unlabeledArg": null, @@ -1731,7 +1728,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1750,8 +1747,8 @@ description: Operations executed walkie-talkie.kcl "type": "FunctionCall", "name": "oLogo2", "functionSourceRange": [ - 1674, - 2184, + 1597, + 2100, 12 ], "unlabeledArg": null, @@ -1834,7 +1831,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -1949,7 +1946,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -2058,7 +2055,7 @@ description: Operations executed walkie-talkie.kcl "name": "button", "functionSourceRange": [ 308, - 900, + 891, 11 ], "unlabeledArg": null, @@ -2068,7 +2065,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -2171,7 +2168,7 @@ description: Operations executed walkie-talkie.kcl "name": "button", "functionSourceRange": [ 308, - 900, + 891, 11 ], "unlabeledArg": null, @@ -2181,7 +2178,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -2284,7 +2281,7 @@ description: Operations executed walkie-talkie.kcl "name": "button", "functionSourceRange": [ 308, - 900, + 891, 11 ], "unlabeledArg": null, @@ -2294,7 +2291,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -2397,7 +2394,7 @@ description: Operations executed walkie-talkie.kcl "name": "button", "functionSourceRange": [ 308, - 900, + 891, 11 ], "unlabeledArg": null, @@ -2407,7 +2404,7 @@ description: Operations executed walkie-talkie.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/program_memory.snap index 2b7fceaa6..f1fb6a1e5 100644 --- a/rust/kcl-lib/tests/kcl_samples/walkie-talkie/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/walkie-talkie/program_memory.snap @@ -83,7 +83,13 @@ description: Variables in memory after executing walkie-talkie.kcl "type": "Number", "value": 0.48, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "buttonThickness": { @@ -254,7 +260,13 @@ description: Variables in memory after executing walkie-talkie.kcl "type": "Number", "value": 1.25, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Inches" + }, + "angle": { + "type": "Degrees" + } } }, "speakerBoxHeight": { diff --git a/rust/kcl-lib/tests/kcl_samples/washer/artifact_commands.snap b/rust/kcl-lib/tests/kcl_samples/washer/artifact_commands.snap index 546b4cee8..2d22eaa09 100644 --- a/rust/kcl-lib/tests/kcl_samples/washer/artifact_commands.snap +++ b/rust/kcl-lib/tests/kcl_samples/washer/artifact_commands.snap @@ -255,7 +255,8 @@ description: Artifact commands washer.kcl "type": "extrude", "target": "[uuid]", "distance": 0.032, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kcl_samples/washer/ast.snap b/rust/kcl-lib/tests/kcl_samples/washer/ast.snap index 8fe2c579e..b525dd617 100644 --- a/rust/kcl-lib/tests/kcl_samples/washer/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/washer/ast.snap @@ -6,19 +6,19 @@ description: Result of parsing washer.kcl "Ok": { "body": [ { - "commentStart": 518, + "commentStart": 0, "declaration": { - "commentStart": 541, + "commentStart": 0, "end": 0, "id": { - "commentStart": 541, + "commentStart": 0, "end": 0, "name": "innerDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 557, + "commentStart": 0, "end": 0, "raw": "0.203", "start": 0, @@ -42,19 +42,19 @@ description: Result of parsing washer.kcl "type": "VariableDeclaration" }, { - "commentStart": 563, + "commentStart": 0, "declaration": { - "commentStart": 563, + "commentStart": 0, "end": 0, "id": { - "commentStart": 563, + "commentStart": 0, "end": 0, "name": "outerDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 579, + "commentStart": 0, "end": 0, "raw": "0.438", "start": 0, @@ -75,19 +75,19 @@ description: Result of parsing washer.kcl "type": "VariableDeclaration" }, { - "commentStart": 585, + "commentStart": 0, "declaration": { - "commentStart": 585, + "commentStart": 0, "end": 0, "id": { - "commentStart": 585, + "commentStart": 0, "end": 0, "name": "thicknessMax", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 600, + "commentStart": 0, "end": 0, "raw": "0.038", "start": 0, @@ -108,19 +108,19 @@ description: Result of parsing washer.kcl "type": "VariableDeclaration" }, { - "commentStart": 606, + "commentStart": 0, "declaration": { - "commentStart": 606, + "commentStart": 0, "end": 0, "id": { - "commentStart": 606, + "commentStart": 0, "end": 0, "name": "thicknessNom", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 621, + "commentStart": 0, "end": 0, "raw": "0.032", "start": 0, @@ -141,19 +141,19 @@ description: Result of parsing washer.kcl "type": "VariableDeclaration" }, { - "commentStart": 627, + "commentStart": 0, "declaration": { - "commentStart": 627, + "commentStart": 0, "end": 0, "id": { - "commentStart": 627, + "commentStart": 0, "end": 0, "name": "thicknessMin", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 642, + "commentStart": 0, "end": 0, "raw": "0.024", "start": 0, @@ -174,12 +174,12 @@ description: Result of parsing washer.kcl "type": "VariableDeclaration" }, { - "commentStart": 647, + "commentStart": 0, "declaration": { - "commentStart": 684, + "commentStart": 0, "end": 0, "id": { - "commentStart": 684, + "commentStart": 0, "end": 0, "name": "washerSketch", "start": 0, @@ -191,10 +191,10 @@ description: Result of parsing washer.kcl "arguments": [ { "abs_path": false, - "commentStart": 713, + "commentStart": 0, "end": 0, "name": { - "commentStart": 713, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -208,10 +208,10 @@ description: Result of parsing washer.kcl ], "callee": { "abs_path": false, - "commentStart": 699, + "commentStart": 0, "end": 0, "name": { - "commentStart": 699, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -221,7 +221,7 @@ description: Result of parsing washer.kcl "start": 0, "type": "Name" }, - "commentStart": 699, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -232,17 +232,17 @@ description: Result of parsing washer.kcl { "type": "LabeledArg", "label": { - "commentStart": 729, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 738, + "commentStart": 0, "elements": [ { - "commentStart": 739, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -254,7 +254,7 @@ description: Result of parsing washer.kcl } }, { - "commentStart": 742, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -275,21 +275,21 @@ description: Result of parsing washer.kcl { "type": "LabeledArg", "label": { - "commentStart": 746, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 755, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 755, + "commentStart": 0, "end": 0, "name": { - "commentStart": 755, + "commentStart": 0, "end": 0, "name": "outerDiameter", "start": 0, @@ -302,7 +302,7 @@ description: Result of parsing washer.kcl }, "operator": "/", "right": { - "commentStart": 771, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -321,10 +321,10 @@ description: Result of parsing washer.kcl ], "callee": { "abs_path": false, - "commentStart": 722, + "commentStart": 0, "end": 0, "name": { - "commentStart": 722, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -334,7 +334,7 @@ description: Result of parsing washer.kcl "start": 0, "type": "Name" }, - "commentStart": 722, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -348,17 +348,17 @@ description: Result of parsing washer.kcl { "type": "LabeledArg", "label": { - "commentStart": 791, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 800, + "commentStart": 0, "elements": [ { - "commentStart": 801, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -370,7 +370,7 @@ description: Result of parsing washer.kcl } }, { - "commentStart": 804, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -391,21 +391,21 @@ description: Result of parsing washer.kcl { "type": "LabeledArg", "label": { - "commentStart": 808, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 817, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 817, + "commentStart": 0, "end": 0, "name": { - "commentStart": 817, + "commentStart": 0, "end": 0, "name": "innerDiameter", "start": 0, @@ -418,7 +418,7 @@ description: Result of parsing washer.kcl }, "operator": "/", "right": { - "commentStart": 833, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -437,10 +437,10 @@ description: Result of parsing washer.kcl ], "callee": { "abs_path": false, - "commentStart": 784, + "commentStart": 0, "end": 0, "name": { - "commentStart": 784, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -450,7 +450,7 @@ description: Result of parsing washer.kcl "start": 0, "type": "Name" }, - "commentStart": 784, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -458,7 +458,7 @@ description: Result of parsing washer.kcl "unlabeled": null }, { - "commentStart": 837, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -467,10 +467,10 @@ description: Result of parsing washer.kcl ], "callee": { "abs_path": false, - "commentStart": 779, + "commentStart": 0, "end": 0, "name": { - "commentStart": 779, + "commentStart": 0, "end": 0, "name": "hole", "start": 0, @@ -480,14 +480,14 @@ description: Result of parsing washer.kcl "start": 0, "type": "Name" }, - "commentStart": 779, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 699, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -508,12 +508,12 @@ description: Result of parsing washer.kcl "type": "VariableDeclaration" }, { - "commentStart": 839, + "commentStart": 0, "declaration": { - "commentStart": 841, + "commentStart": 0, "end": 0, "id": { - "commentStart": 841, + "commentStart": 0, "end": 0, "name": "washer", "start": 0, @@ -524,7 +524,7 @@ description: Result of parsing washer.kcl { "type": "LabeledArg", "label": { - "commentStart": 872, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -532,10 +532,10 @@ description: Result of parsing washer.kcl }, "arg": { "abs_path": false, - "commentStart": 881, + "commentStart": 0, "end": 0, "name": { - "commentStart": 881, + "commentStart": 0, "end": 0, "name": "thicknessNom", "start": 0, @@ -550,10 +550,10 @@ description: Result of parsing washer.kcl ], "callee": { "abs_path": false, - "commentStart": 850, + "commentStart": 0, "end": 0, "name": { - "commentStart": 850, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -563,17 +563,17 @@ description: Result of parsing washer.kcl "start": 0, "type": "Name" }, - "commentStart": 850, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 858, + "commentStart": 0, "end": 0, "name": { - "commentStart": 858, + "commentStart": 0, "end": 0, "name": "washerSketch", "start": 0, @@ -602,7 +602,7 @@ description: Result of parsing washer.kcl "commentStart": 0, "end": 0, "name": { - "commentStart": 486, + "commentStart": 0, "end": 0, "name": "settings", "start": 0, @@ -617,10 +617,10 @@ description: Result of parsing washer.kcl ], "properties": [ { - "commentStart": 495, + "commentStart": 0, "end": 0, "key": { - "commentStart": 495, + "commentStart": 0, "end": 0, "name": "defaultLengthUnit", "start": 0, @@ -630,10 +630,10 @@ description: Result of parsing washer.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 515, + "commentStart": 0, "end": 0, "name": { - "commentStart": 515, + "commentStart": 0, "end": 0, "name": "in", "start": 0, @@ -654,7 +654,7 @@ description: Result of parsing washer.kcl "nonCodeNodes": { "5": [ { - "commentStart": 839, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -666,7 +666,7 @@ description: Result of parsing washer.kcl }, "startNodes": [ { - "commentStart": 518, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kcl_samples/washer/ops.snap b/rust/kcl-lib/tests/kcl_samples/washer/ops.snap index 38ba6db5f..7bf11febc 100644 --- a/rust/kcl-lib/tests/kcl_samples/washer/ops.snap +++ b/rust/kcl-lib/tests/kcl_samples/washer/ops.snap @@ -5,7 +5,7 @@ description: Operations executed washer.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/kcl_samples/washer/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/washer/program_memory.snap index ba2fff7dd..0f055dd74 100644 --- a/rust/kcl-lib/tests/kcl_samples/washer/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/washer/program_memory.snap @@ -121,22 +121,34 @@ description: Variables in memory after executing washer.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" @@ -214,22 +226,34 @@ description: Variables in memory after executing washer.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Inches" diff --git a/rust/kcl-lib/tests/kittycad_svg/artifact_commands.snap b/rust/kcl-lib/tests/kittycad_svg/artifact_commands.snap index 2f0884759..277d9d1c6 100644 --- a/rust/kcl-lib/tests/kittycad_svg/artifact_commands.snap +++ b/rust/kcl-lib/tests/kittycad_svg/artifact_commands.snap @@ -4905,7 +4905,8 @@ description: Artifact commands kittycad_svg.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/kittycad_svg/ast.snap b/rust/kcl-lib/tests/kittycad_svg/ast.snap index 07dd7d4de..e11721e06 100644 --- a/rust/kcl-lib/tests/kittycad_svg/ast.snap +++ b/rust/kcl-lib/tests/kittycad_svg/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing kittycad_svg.kcl { "arguments": [ { - "commentStart": 20, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing kittycad_svg.kcl { "arguments": [ { - "commentStart": 46, + "commentStart": 0, "elements": [ { - "commentStart": 47, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing kittycad_svg.kcl } }, { - "commentStart": 50, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing kittycad_svg.kcl "type": "ArrayExpression" }, { - "commentStart": 54, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 31, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 31, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +121,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 67, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 81, + "commentStart": 0, "elements": [ { - "commentStart": 82, + "commentStart": 0, "end": 0, "raw": "2.52", "start": 0, @@ -144,7 +144,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 89, + "commentStart": 0, "end": 0, "raw": "26.04", "start": 0, @@ -155,7 +155,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 88, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -172,10 +172,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 62, + "commentStart": 0, "end": 0, "name": { - "commentStart": 62, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -185,7 +185,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 62, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -197,17 +197,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 123, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 137, + "commentStart": 0, "elements": [ { - "commentStart": 138, + "commentStart": 0, "end": 0, "raw": "2.52", "start": 0, @@ -220,7 +220,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 145, + "commentStart": 0, "end": 0, "raw": "25.2", "start": 0, @@ -231,7 +231,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 144, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -248,10 +248,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 118, + "commentStart": 0, "end": 0, "name": { - "commentStart": 118, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -261,7 +261,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 118, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -273,17 +273,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 186, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 200, + "commentStart": 0, "elements": [ { - "commentStart": 201, + "commentStart": 0, "end": 0, "raw": "0.84", "start": 0, @@ -296,7 +296,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 208, + "commentStart": 0, "end": 0, "raw": "25.2", "start": 0, @@ -307,7 +307,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 207, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -324,10 +324,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 181, + "commentStart": 0, "end": 0, "name": { - "commentStart": 181, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -337,7 +337,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 181, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -349,17 +349,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 251, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 265, + "commentStart": 0, "elements": [ { - "commentStart": 266, + "commentStart": 0, "end": 0, "raw": "0.84", "start": 0, @@ -372,7 +372,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 273, + "commentStart": 0, "end": 0, "raw": "24.36", "start": 0, @@ -383,7 +383,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 272, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -400,10 +400,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 246, + "commentStart": 0, "end": 0, "name": { - "commentStart": 246, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -413,7 +413,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 246, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -425,17 +425,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 315, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 329, + "commentStart": 0, "elements": [ { - "commentStart": 330, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -448,7 +448,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 334, + "commentStart": 0, "end": 0, "raw": "24.36", "start": 0, @@ -459,7 +459,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 333, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -476,10 +476,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 310, + "commentStart": 0, "end": 0, "name": { - "commentStart": 310, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -489,7 +489,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 310, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -501,17 +501,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 378, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 392, + "commentStart": 0, "elements": [ { - "commentStart": 393, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -524,7 +524,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 397, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -535,7 +535,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 396, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -552,10 +552,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 373, + "commentStart": 0, "end": 0, "name": { - "commentStart": 373, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -565,7 +565,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 373, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -577,17 +577,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 438, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 452, + "commentStart": 0, "elements": [ { - "commentStart": 453, + "commentStart": 0, "end": 0, "raw": "0.84", "start": 0, @@ -600,7 +600,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 460, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -611,7 +611,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 459, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -628,10 +628,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 433, + "commentStart": 0, "end": 0, "name": { - "commentStart": 433, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -641,7 +641,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 433, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -653,17 +653,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 503, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 517, + "commentStart": 0, "elements": [ { - "commentStart": 518, + "commentStart": 0, "end": 0, "raw": "0.84", "start": 0, @@ -676,7 +676,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 525, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -687,7 +687,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 524, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -704,10 +704,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 498, + "commentStart": 0, "end": 0, "name": { - "commentStart": 498, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -717,7 +717,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 498, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -729,17 +729,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 566, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 580, + "commentStart": 0, "elements": [ { - "commentStart": 581, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -752,7 +752,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 588, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -763,7 +763,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 587, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -780,10 +780,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 561, + "commentStart": 0, "end": 0, "name": { - "commentStart": 561, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -793,7 +793,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 561, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -805,17 +805,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 631, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 645, + "commentStart": 0, "elements": [ { - "commentStart": 646, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -828,7 +828,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 653, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -839,7 +839,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 652, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -856,10 +856,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 626, + "commentStart": 0, "end": 0, "name": { - "commentStart": 626, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -869,7 +869,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 626, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -881,17 +881,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 694, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 708, + "commentStart": 0, "elements": [ { - "commentStart": 709, + "commentStart": 0, "end": 0, "raw": "2.52", "start": 0, @@ -904,7 +904,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 716, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -915,7 +915,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 715, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -932,10 +932,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 689, + "commentStart": 0, "end": 0, "name": { - "commentStart": 689, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -945,7 +945,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 689, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -957,17 +957,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 759, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 773, + "commentStart": 0, "elements": [ { - "commentStart": 774, + "commentStart": 0, "end": 0, "raw": "2.52", "start": 0, @@ -980,7 +980,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 781, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -991,7 +991,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 780, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1008,10 +1008,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 754, + "commentStart": 0, "end": 0, "name": { - "commentStart": 754, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1021,7 +1021,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 754, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1033,17 +1033,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 821, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 835, + "commentStart": 0, "elements": [ { - "commentStart": 836, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -1056,7 +1056,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 843, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -1067,7 +1067,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 842, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1084,10 +1084,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 816, + "commentStart": 0, "end": 0, "name": { - "commentStart": 816, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1097,7 +1097,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 816, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1109,17 +1109,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 885, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 899, + "commentStart": 0, "elements": [ { - "commentStart": 900, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -1132,7 +1132,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 907, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -1143,7 +1143,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 906, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1160,10 +1160,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 880, + "commentStart": 0, "end": 0, "name": { - "commentStart": 880, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1173,7 +1173,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 880, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1185,17 +1185,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 948, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 962, + "commentStart": 0, "elements": [ { - "commentStart": 963, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -1208,7 +1208,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 971, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -1219,7 +1219,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 970, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1236,10 +1236,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 943, + "commentStart": 0, "end": 0, "name": { - "commentStart": 943, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1249,7 +1249,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 943, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1261,17 +1261,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1014, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1028, + "commentStart": 0, "elements": [ { - "commentStart": 1029, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -1284,7 +1284,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 1037, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -1295,7 +1295,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 1036, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1312,10 +1312,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1009, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1009, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1325,7 +1325,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1009, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1337,17 +1337,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1077, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1091, + "commentStart": 0, "elements": [ { - "commentStart": 1092, + "commentStart": 0, "end": 0, "raw": "18.48", "start": 0, @@ -1360,7 +1360,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 1100, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -1371,7 +1371,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 1099, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1388,10 +1388,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1072, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1072, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1401,7 +1401,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1072, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1413,17 +1413,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1142, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1156, + "commentStart": 0, "elements": [ { - "commentStart": 1157, + "commentStart": 0, "end": 0, "raw": "18.48", "start": 0, @@ -1436,7 +1436,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 1165, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -1447,7 +1447,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 1164, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1464,10 +1464,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1137, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1137, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1477,7 +1477,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1137, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1489,17 +1489,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1207, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1221, + "commentStart": 0, "elements": [ { - "commentStart": 1222, + "commentStart": 0, "end": 0, "raw": "19.32", "start": 0, @@ -1512,7 +1512,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 1230, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -1523,7 +1523,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 1229, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1540,10 +1540,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1202, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1202, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1553,7 +1553,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1202, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1565,17 +1565,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1273, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1287, + "commentStart": 0, "elements": [ { - "commentStart": 1288, + "commentStart": 0, "end": 0, "raw": "19.32", "start": 0, @@ -1588,7 +1588,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 1296, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -1599,7 +1599,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 1295, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1616,10 +1616,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1268, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1268, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1629,7 +1629,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1268, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1641,17 +1641,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1338, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1352, + "commentStart": 0, "elements": [ { - "commentStart": 1353, + "commentStart": 0, "end": 0, "raw": "20.16", "start": 0, @@ -1664,7 +1664,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 1361, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -1675,7 +1675,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 1360, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1692,10 +1692,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1333, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1333, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1705,7 +1705,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1333, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1717,17 +1717,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1404, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1418, + "commentStart": 0, "elements": [ { - "commentStart": 1419, + "commentStart": 0, "end": 0, "raw": "20.16", "start": 0, @@ -1740,7 +1740,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 1427, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -1751,7 +1751,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 1426, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1768,10 +1768,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1399, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1399, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1781,7 +1781,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1399, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1793,17 +1793,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1468, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1482, + "commentStart": 0, "elements": [ { - "commentStart": 1483, + "commentStart": 0, "end": 0, "raw": "21", "start": 0, @@ -1816,7 +1816,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 1488, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -1827,7 +1827,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 1487, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1844,10 +1844,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1463, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1463, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1857,7 +1857,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1463, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1869,17 +1869,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1531, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1545, + "commentStart": 0, "elements": [ { - "commentStart": 1546, + "commentStart": 0, "end": 0, "raw": "21", "start": 0, @@ -1892,7 +1892,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 1551, + "commentStart": 0, "end": 0, "raw": "24.36", "start": 0, @@ -1903,7 +1903,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 1550, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1920,10 +1920,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1526, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1526, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1933,7 +1933,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1526, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1945,17 +1945,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1594, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1608, + "commentStart": 0, "elements": [ { - "commentStart": 1609, + "commentStart": 0, "end": 0, "raw": "20.16", "start": 0, @@ -1968,7 +1968,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 1617, + "commentStart": 0, "end": 0, "raw": "24.36", "start": 0, @@ -1979,7 +1979,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 1616, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1996,10 +1996,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1589, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1589, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2009,7 +2009,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1589, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2021,17 +2021,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1661, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1675, + "commentStart": 0, "elements": [ { - "commentStart": 1676, + "commentStart": 0, "end": 0, "raw": "20.16", "start": 0, @@ -2044,7 +2044,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 1684, + "commentStart": 0, "end": 0, "raw": "25.2", "start": 0, @@ -2055,7 +2055,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 1683, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2072,10 +2072,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1656, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1656, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2085,7 +2085,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1656, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2097,17 +2097,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1726, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1740, + "commentStart": 0, "elements": [ { - "commentStart": 1741, + "commentStart": 0, "end": 0, "raw": "18.48", "start": 0, @@ -2120,7 +2120,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 1749, + "commentStart": 0, "end": 0, "raw": "25.2", "start": 0, @@ -2131,7 +2131,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 1748, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2148,10 +2148,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1721, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1721, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2161,7 +2161,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1721, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2173,17 +2173,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1792, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1806, + "commentStart": 0, "elements": [ { - "commentStart": 1807, + "commentStart": 0, "end": 0, "raw": "18.48", "start": 0, @@ -2196,7 +2196,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 1815, + "commentStart": 0, "end": 0, "raw": "26.04", "start": 0, @@ -2207,7 +2207,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 1814, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2224,10 +2224,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1787, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1787, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2237,7 +2237,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1787, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2249,17 +2249,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1858, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1872, + "commentStart": 0, "elements": [ { - "commentStart": 1873, + "commentStart": 0, "end": 0, "raw": "15.96", "start": 0, @@ -2272,7 +2272,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 1881, + "commentStart": 0, "end": 0, "raw": "26.04", "start": 0, @@ -2283,7 +2283,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 1880, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2300,10 +2300,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1853, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1853, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2313,7 +2313,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1853, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2325,17 +2325,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1925, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1939, + "commentStart": 0, "elements": [ { - "commentStart": 1940, + "commentStart": 0, "end": 0, "raw": "15.96", "start": 0, @@ -2348,7 +2348,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 1948, + "commentStart": 0, "end": 0, "raw": "26.88", "start": 0, @@ -2359,7 +2359,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 1947, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2376,10 +2376,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1920, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1920, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2389,7 +2389,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1920, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2401,17 +2401,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 1991, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2005, + "commentStart": 0, "elements": [ { - "commentStart": 2006, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -2424,7 +2424,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2013, + "commentStart": 0, "end": 0, "raw": "26.88", "start": 0, @@ -2435,7 +2435,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2012, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2452,10 +2452,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 1986, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1986, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2465,7 +2465,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 1986, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2477,17 +2477,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 2057, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2071, + "commentStart": 0, "elements": [ { - "commentStart": 2072, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -2500,7 +2500,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2079, + "commentStart": 0, "end": 0, "raw": "28.56", "start": 0, @@ -2511,7 +2511,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2078, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2528,10 +2528,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 2052, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2052, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2541,7 +2541,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 2052, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2553,17 +2553,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 2122, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2136, + "commentStart": 0, "elements": [ { - "commentStart": 2137, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -2576,7 +2576,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2145, + "commentStart": 0, "end": 0, "raw": "28.56", "start": 0, @@ -2587,7 +2587,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2144, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2604,10 +2604,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 2117, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2117, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2617,7 +2617,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 2117, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2629,17 +2629,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 2189, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2203, + "commentStart": 0, "elements": [ { - "commentStart": 2204, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -2652,7 +2652,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2212, + "commentStart": 0, "end": 0, "raw": "26.88", "start": 0, @@ -2663,7 +2663,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2211, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2680,10 +2680,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 2184, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2184, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2693,7 +2693,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 2184, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2705,17 +2705,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 2254, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2268, + "commentStart": 0, "elements": [ { - "commentStart": 2269, + "commentStart": 0, "end": 0, "raw": "12.6", "start": 0, @@ -2728,7 +2728,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2276, + "commentStart": 0, "end": 0, "raw": "26.88", "start": 0, @@ -2739,7 +2739,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2275, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2756,10 +2756,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 2249, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2249, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2769,7 +2769,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 2249, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2781,17 +2781,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 2320, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2334, + "commentStart": 0, "elements": [ { - "commentStart": 2335, + "commentStart": 0, "end": 0, "raw": "12.6", "start": 0, @@ -2804,7 +2804,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2342, + "commentStart": 0, "end": 0, "raw": "26.04", "start": 0, @@ -2815,7 +2815,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2341, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2832,10 +2832,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 2315, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2315, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2845,7 +2845,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 2315, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2857,17 +2857,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 2384, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2398, + "commentStart": 0, "elements": [ { - "commentStart": 2399, + "commentStart": 0, "end": 0, "raw": "8.4", "start": 0, @@ -2880,7 +2880,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2405, + "commentStart": 0, "end": 0, "raw": "26.04", "start": 0, @@ -2891,7 +2891,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2404, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2908,10 +2908,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 2379, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2379, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2921,7 +2921,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 2379, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2933,17 +2933,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 2449, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2463, + "commentStart": 0, "elements": [ { - "commentStart": 2464, + "commentStart": 0, "end": 0, "raw": "8.4", "start": 0, @@ -2956,7 +2956,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2470, + "commentStart": 0, "end": 0, "raw": "26.88", "start": 0, @@ -2967,7 +2967,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2469, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2984,10 +2984,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 2444, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2444, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2997,7 +2997,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 2444, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3009,17 +3009,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 2513, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2527, + "commentStart": 0, "elements": [ { - "commentStart": 2528, + "commentStart": 0, "end": 0, "raw": "9.24", "start": 0, @@ -3032,7 +3032,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2535, + "commentStart": 0, "end": 0, "raw": "26.88", "start": 0, @@ -3043,7 +3043,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2534, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3060,10 +3060,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 2508, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2508, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3073,7 +3073,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 2508, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3085,17 +3085,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 2579, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2593, + "commentStart": 0, "elements": [ { - "commentStart": 2594, + "commentStart": 0, "end": 0, "raw": "9.24", "start": 0, @@ -3108,7 +3108,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2601, + "commentStart": 0, "end": 0, "raw": "28.56", "start": 0, @@ -3119,7 +3119,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2600, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3136,10 +3136,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 2574, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2574, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3149,7 +3149,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 2574, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3161,17 +3161,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 2644, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2658, + "commentStart": 0, "elements": [ { - "commentStart": 2659, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -3184,7 +3184,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2665, + "commentStart": 0, "end": 0, "raw": "28.56", "start": 0, @@ -3195,7 +3195,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2664, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3212,10 +3212,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 2639, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2639, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3225,7 +3225,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 2639, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3237,17 +3237,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 2709, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2723, + "commentStart": 0, "elements": [ { - "commentStart": 2724, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -3260,7 +3260,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2730, + "commentStart": 0, "end": 0, "raw": "26.88", "start": 0, @@ -3271,7 +3271,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2729, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3288,10 +3288,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 2704, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2704, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3301,7 +3301,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 2704, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3313,17 +3313,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 2773, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2787, + "commentStart": 0, "elements": [ { - "commentStart": 2788, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -3336,7 +3336,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2795, + "commentStart": 0, "end": 0, "raw": "26.88", "start": 0, @@ -3347,7 +3347,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2794, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3364,10 +3364,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 2768, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2768, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3377,7 +3377,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 2768, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3389,17 +3389,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 2839, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2853, + "commentStart": 0, "elements": [ { - "commentStart": 2854, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -3412,7 +3412,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2861, + "commentStart": 0, "end": 0, "raw": "26.04", "start": 0, @@ -3423,7 +3423,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2860, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3440,10 +3440,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 2834, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2834, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3453,7 +3453,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 2834, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3465,17 +3465,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 2904, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2918, + "commentStart": 0, "elements": [ { - "commentStart": 2919, + "commentStart": 0, "end": 0, "raw": "0.839996", "start": 0, @@ -3488,7 +3488,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2930, + "commentStart": 0, "end": 0, "raw": "20.58", "start": 0, @@ -3499,7 +3499,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2929, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3516,10 +3516,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 2899, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2899, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3529,7 +3529,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 2899, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3541,17 +3541,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 2964, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2978, + "commentStart": 0, "elements": [ { - "commentStart": 2979, + "commentStart": 0, "end": 0, "raw": "0.839996", "start": 0, @@ -3564,7 +3564,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 2990, + "commentStart": 0, "end": 0, "raw": "24.36", "start": 0, @@ -3575,7 +3575,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 2989, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3592,10 +3592,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 2959, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2959, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3605,7 +3605,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 2959, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3617,17 +3617,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 3033, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3047, + "commentStart": 0, "elements": [ { - "commentStart": 3048, + "commentStart": 0, "end": 0, "raw": "2.52", "start": 0, @@ -3640,7 +3640,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 3055, + "commentStart": 0, "end": 0, "raw": "24.36", "start": 0, @@ -3651,7 +3651,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 3054, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3668,10 +3668,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 3028, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3028, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3681,7 +3681,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 3028, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3693,17 +3693,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 3099, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3113, + "commentStart": 0, "elements": [ { - "commentStart": 3114, + "commentStart": 0, "end": 0, "raw": "2.52", "start": 0, @@ -3716,7 +3716,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 3121, + "commentStart": 0, "end": 0, "raw": "25.2", "start": 0, @@ -3727,7 +3727,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 3120, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3744,10 +3744,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 3094, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3094, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3757,7 +3757,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 3094, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3769,17 +3769,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 3163, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3177, + "commentStart": 0, "elements": [ { - "commentStart": 3178, + "commentStart": 0, "end": 0, "raw": "18.48", "start": 0, @@ -3792,7 +3792,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 3186, + "commentStart": 0, "end": 0, "raw": "25.2", "start": 0, @@ -3803,7 +3803,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 3185, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3820,10 +3820,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 3158, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3158, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3833,7 +3833,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 3158, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3845,17 +3845,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 3229, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3243, + "commentStart": 0, "elements": [ { - "commentStart": 3244, + "commentStart": 0, "end": 0, "raw": "18.48", "start": 0, @@ -3868,7 +3868,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 3252, + "commentStart": 0, "end": 0, "raw": "24.36", "start": 0, @@ -3879,7 +3879,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 3251, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3896,10 +3896,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 3224, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3224, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3909,7 +3909,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 3224, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3921,17 +3921,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 3295, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3309, + "commentStart": 0, "elements": [ { - "commentStart": 3310, + "commentStart": 0, "end": 0, "raw": "20.16", "start": 0, @@ -3944,7 +3944,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 3318, + "commentStart": 0, "end": 0, "raw": "24.36", "start": 0, @@ -3955,7 +3955,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 3317, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3972,10 +3972,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 3290, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3290, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3985,7 +3985,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 3290, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3997,17 +3997,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 3362, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3376, + "commentStart": 0, "elements": [ { - "commentStart": 3377, + "commentStart": 0, "end": 0, "raw": "20.16", "start": 0, @@ -4020,7 +4020,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 3385, + "commentStart": 0, "end": 0, "raw": "20.58", "start": 0, @@ -4031,7 +4031,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 3384, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4048,10 +4048,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 3357, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3357, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4061,7 +4061,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 3357, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4073,17 +4073,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 3445, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3459, + "commentStart": 0, "elements": [ { - "commentStart": 3460, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -4096,7 +4096,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 3467, + "commentStart": 0, "end": 0, "raw": "24.36", "start": 0, @@ -4107,7 +4107,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 3466, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4124,10 +4124,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 3440, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3440, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4137,7 +4137,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 3440, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4149,17 +4149,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 3501, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3515, + "commentStart": 0, "elements": [ { - "commentStart": 3516, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -4172,7 +4172,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 3523, + "commentStart": 0, "end": 0, "raw": "22.68", "start": 0, @@ -4183,7 +4183,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 3522, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4200,10 +4200,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 3496, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3496, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4213,7 +4213,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 3496, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4225,17 +4225,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 3566, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3580, + "commentStart": 0, "elements": [ { - "commentStart": 3581, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -4248,7 +4248,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 3589, + "commentStart": 0, "end": 0, "raw": "22.68", "start": 0, @@ -4259,7 +4259,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 3588, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4276,10 +4276,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 3561, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3561, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4289,7 +4289,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 3561, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4301,17 +4301,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 3633, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3647, + "commentStart": 0, "elements": [ { - "commentStart": 3648, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -4324,7 +4324,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 3656, + "commentStart": 0, "end": 0, "raw": "24.36", "start": 0, @@ -4335,7 +4335,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 3655, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4352,10 +4352,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 3628, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3628, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4365,7 +4365,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 3628, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4377,17 +4377,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 3699, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3713, + "commentStart": 0, "elements": [ { - "commentStart": 3714, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -4400,7 +4400,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 3721, + "commentStart": 0, "end": 0, "raw": "22.68", "start": 0, @@ -4411,7 +4411,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 3720, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4428,10 +4428,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 3694, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3694, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4441,7 +4441,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 3694, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4453,17 +4453,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 3755, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3769, + "commentStart": 0, "elements": [ { - "commentStart": 3770, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -4476,7 +4476,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 3777, + "commentStart": 0, "end": 0, "raw": "21.84", "start": 0, @@ -4487,7 +4487,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 3776, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4504,10 +4504,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 3750, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3750, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4517,7 +4517,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 3750, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4529,17 +4529,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 3820, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3834, + "commentStart": 0, "elements": [ { - "commentStart": 3835, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -4552,7 +4552,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 3842, + "commentStart": 0, "end": 0, "raw": "21.84", "start": 0, @@ -4563,7 +4563,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 3841, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4580,10 +4580,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 3815, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3815, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4593,7 +4593,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 3815, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4605,17 +4605,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 3886, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3900, + "commentStart": 0, "elements": [ { - "commentStart": 3901, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -4628,7 +4628,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 3908, + "commentStart": 0, "end": 0, "raw": "22.68", "start": 0, @@ -4639,7 +4639,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 3907, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4656,10 +4656,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 3881, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3881, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4669,7 +4669,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 3881, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4681,17 +4681,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 3951, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3965, + "commentStart": 0, "elements": [ { - "commentStart": 3966, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -4704,7 +4704,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 3973, + "commentStart": 0, "end": 0, "raw": "24.36", "start": 0, @@ -4715,7 +4715,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 3972, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4732,10 +4732,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 3946, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3946, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4745,7 +4745,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 3946, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4757,17 +4757,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4007, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4021, + "commentStart": 0, "elements": [ { - "commentStart": 4022, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -4780,7 +4780,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 4029, + "commentStart": 0, "end": 0, "raw": "23.52", "start": 0, @@ -4791,7 +4791,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 4028, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4808,10 +4808,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4002, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4002, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4821,7 +4821,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4002, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4833,17 +4833,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4072, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4086, + "commentStart": 0, "elements": [ { - "commentStart": 4087, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -4856,7 +4856,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 4094, + "commentStart": 0, "end": 0, "raw": "23.52", "start": 0, @@ -4867,7 +4867,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 4093, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4884,10 +4884,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4067, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4067, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4897,7 +4897,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4067, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4909,17 +4909,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4138, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4152, + "commentStart": 0, "elements": [ { - "commentStart": 4153, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -4932,7 +4932,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 4160, + "commentStart": 0, "end": 0, "raw": "24.36", "start": 0, @@ -4943,7 +4943,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 4159, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4960,10 +4960,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4133, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4133, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4973,7 +4973,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4133, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4985,17 +4985,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4203, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4217, + "commentStart": 0, "elements": [ { - "commentStart": 4218, + "commentStart": 0, "end": 0, "raw": "15.12", "start": 0, @@ -5008,7 +5008,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 4226, + "commentStart": 0, "end": 0, "raw": "22.68", "start": 0, @@ -5019,7 +5019,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 4225, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5036,10 +5036,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4198, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4198, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5049,7 +5049,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4198, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5061,17 +5061,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4260, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4274, + "commentStart": 0, "elements": [ { - "commentStart": 4275, + "commentStart": 0, "end": 0, "raw": "15.12", "start": 0, @@ -5084,7 +5084,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 4283, + "commentStart": 0, "end": 0, "raw": "21.84", "start": 0, @@ -5095,7 +5095,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 4282, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5112,10 +5112,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4255, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4255, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5125,7 +5125,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4255, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5137,17 +5137,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4326, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4340, + "commentStart": 0, "elements": [ { - "commentStart": 4341, + "commentStart": 0, "end": 0, "raw": "15.959999999999999", "start": 0, @@ -5160,7 +5160,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 4362, + "commentStart": 0, "end": 0, "raw": "21.84", "start": 0, @@ -5171,7 +5171,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 4361, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5188,10 +5188,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4321, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4321, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5201,7 +5201,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4321, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5213,17 +5213,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4406, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4420, + "commentStart": 0, "elements": [ { - "commentStart": 4421, + "commentStart": 0, "end": 0, "raw": "15.959999999999999", "start": 0, @@ -5236,7 +5236,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 4442, + "commentStart": 0, "end": 0, "raw": "22.68", "start": 0, @@ -5247,7 +5247,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 4441, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5264,10 +5264,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4401, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4401, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5277,7 +5277,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4401, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5289,17 +5289,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4485, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4499, + "commentStart": 0, "elements": [ { - "commentStart": 4500, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -5312,7 +5312,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 4507, + "commentStart": 0, "end": 0, "raw": "22.68", "start": 0, @@ -5323,7 +5323,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 4506, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5340,10 +5340,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4480, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4480, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5353,7 +5353,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4480, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5365,17 +5365,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4541, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4555, + "commentStart": 0, "elements": [ { - "commentStart": 4556, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -5388,7 +5388,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 4563, + "commentStart": 0, "end": 0, "raw": "21.84", "start": 0, @@ -5399,7 +5399,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 4562, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5416,10 +5416,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4536, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4536, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5429,7 +5429,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4536, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5441,17 +5441,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4606, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4620, + "commentStart": 0, "elements": [ { - "commentStart": 4621, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -5464,7 +5464,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 4629, + "commentStart": 0, "end": 0, "raw": "21.84", "start": 0, @@ -5475,7 +5475,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 4628, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5492,10 +5492,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4601, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4601, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5505,7 +5505,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4601, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5517,17 +5517,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4673, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4687, + "commentStart": 0, "elements": [ { - "commentStart": 4688, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -5540,7 +5540,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 4696, + "commentStart": 0, "end": 0, "raw": "22.68", "start": 0, @@ -5551,7 +5551,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 4695, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5568,10 +5568,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4668, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4668, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5581,7 +5581,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4668, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5593,17 +5593,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4739, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4753, + "commentStart": 0, "elements": [ { - "commentStart": 4754, + "commentStart": 0, "end": 0, "raw": "18.48", "start": 0, @@ -5616,7 +5616,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 4762, + "commentStart": 0, "end": 0, "raw": "22.68", "start": 0, @@ -5627,7 +5627,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 4761, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5644,10 +5644,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4734, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4734, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5657,7 +5657,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4734, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5669,17 +5669,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4796, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4810, + "commentStart": 0, "elements": [ { - "commentStart": 4811, + "commentStart": 0, "end": 0, "raw": "18.48", "start": 0, @@ -5692,7 +5692,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 4819, + "commentStart": 0, "end": 0, "raw": "21.84", "start": 0, @@ -5703,7 +5703,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 4818, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5720,10 +5720,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4791, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4791, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5733,7 +5733,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4791, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5745,17 +5745,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4862, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4876, + "commentStart": 0, "elements": [ { - "commentStart": 4877, + "commentStart": 0, "end": 0, "raw": "19.32", "start": 0, @@ -5768,7 +5768,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 4885, + "commentStart": 0, "end": 0, "raw": "21.84", "start": 0, @@ -5779,7 +5779,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 4884, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5796,10 +5796,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4857, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4857, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5809,7 +5809,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4857, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5821,17 +5821,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4929, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4943, + "commentStart": 0, "elements": [ { - "commentStart": 4944, + "commentStart": 0, "end": 0, "raw": "19.32", "start": 0, @@ -5844,7 +5844,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 4952, + "commentStart": 0, "end": 0, "raw": "22.68", "start": 0, @@ -5855,7 +5855,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 4951, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5872,10 +5872,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4924, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4924, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5885,7 +5885,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4924, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5897,17 +5897,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 4995, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5009, + "commentStart": 0, "elements": [ { - "commentStart": 5010, + "commentStart": 0, "end": 0, "raw": "15.12", "start": 0, @@ -5920,7 +5920,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5018, + "commentStart": 0, "end": 0, "raw": "24.36", "start": 0, @@ -5931,7 +5931,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5017, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5948,10 +5948,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 4990, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4990, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5961,7 +5961,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 4990, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5973,17 +5973,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 5052, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5066, + "commentStart": 0, "elements": [ { - "commentStart": 5067, + "commentStart": 0, "end": 0, "raw": "15.12", "start": 0, @@ -5996,7 +5996,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5075, + "commentStart": 0, "end": 0, "raw": "23.52", "start": 0, @@ -6007,7 +6007,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5074, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6024,10 +6024,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 5047, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5047, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6037,7 +6037,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 5047, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6049,17 +6049,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 5118, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5132, + "commentStart": 0, "elements": [ { - "commentStart": 5133, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -6072,7 +6072,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5141, + "commentStart": 0, "end": 0, "raw": "23.52", "start": 0, @@ -6083,7 +6083,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5140, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6100,10 +6100,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 5113, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5113, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6113,7 +6113,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 5113, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6125,17 +6125,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 5185, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5199, + "commentStart": 0, "elements": [ { - "commentStart": 5200, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -6148,7 +6148,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5208, + "commentStart": 0, "end": 0, "raw": "24.36", "start": 0, @@ -6159,7 +6159,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5207, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6176,10 +6176,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 5180, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5180, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6189,7 +6189,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 5180, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6201,17 +6201,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 5251, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5265, + "commentStart": 0, "elements": [ { - "commentStart": 5266, + "commentStart": 0, "end": 0, "raw": "18.48", "start": 0, @@ -6224,7 +6224,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5274, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -6235,7 +6235,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5273, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6252,10 +6252,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 5246, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5246, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6265,7 +6265,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 5246, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6277,17 +6277,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 5307, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5321, + "commentStart": 0, "elements": [ { - "commentStart": 5322, + "commentStart": 0, "end": 0, "raw": "18.48", "start": 0, @@ -6300,7 +6300,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5330, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -6311,7 +6311,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5329, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6328,10 +6328,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 5302, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5302, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6341,7 +6341,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 5302, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6353,17 +6353,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 5371, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5385, + "commentStart": 0, "elements": [ { - "commentStart": 5386, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -6376,7 +6376,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5394, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -6387,7 +6387,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5393, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6404,10 +6404,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 5366, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5366, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6417,7 +6417,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 5366, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6429,17 +6429,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 5437, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5451, + "commentStart": 0, "elements": [ { - "commentStart": 5452, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -6452,7 +6452,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5460, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -6463,7 +6463,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5459, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6480,10 +6480,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 5432, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5432, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6493,7 +6493,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 5432, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6505,17 +6505,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 5500, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5514, + "commentStart": 0, "elements": [ { - "commentStart": 5515, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -6528,7 +6528,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5522, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -6539,7 +6539,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5521, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6556,10 +6556,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 5495, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5495, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6569,7 +6569,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 5495, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6581,17 +6581,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 5564, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5578, + "commentStart": 0, "elements": [ { - "commentStart": 5579, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -6604,7 +6604,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5586, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -6615,7 +6615,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5585, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6632,10 +6632,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 5559, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5559, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6645,7 +6645,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 5559, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6657,17 +6657,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 5627, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5641, + "commentStart": 0, "elements": [ { - "commentStart": 5642, + "commentStart": 0, "end": 0, "raw": "2.52", "start": 0, @@ -6680,7 +6680,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5649, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -6691,7 +6691,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5648, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6708,10 +6708,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 5622, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5622, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6721,7 +6721,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 5622, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6733,17 +6733,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 5692, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5706, + "commentStart": 0, "elements": [ { - "commentStart": 5707, + "commentStart": 0, "end": 0, "raw": "2.52", "start": 0, @@ -6756,7 +6756,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5714, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -6767,7 +6767,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5713, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6784,10 +6784,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 5687, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5687, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6797,7 +6797,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 5687, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6809,17 +6809,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 5755, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5769, + "commentStart": 0, "elements": [ { - "commentStart": 5770, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -6832,7 +6832,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5777, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -6843,7 +6843,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5776, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6860,10 +6860,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 5750, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5750, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6873,7 +6873,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 5750, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6885,17 +6885,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 5820, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5834, + "commentStart": 0, "elements": [ { - "commentStart": 5835, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -6908,7 +6908,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5842, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -6919,7 +6919,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5841, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6936,10 +6936,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 5815, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5815, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6949,7 +6949,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 5815, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6961,17 +6961,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 5883, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5897, + "commentStart": 0, "elements": [ { - "commentStart": 5898, + "commentStart": 0, "end": 0, "raw": "0.839996", "start": 0, @@ -6984,7 +6984,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5909, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -6995,7 +6995,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5908, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7012,10 +7012,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 5878, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5878, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7025,7 +7025,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 5878, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7037,17 +7037,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 5952, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5966, + "commentStart": 0, "elements": [ { - "commentStart": 5967, + "commentStart": 0, "end": 0, "raw": "0.839996", "start": 0, @@ -7060,7 +7060,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 5978, + "commentStart": 0, "end": 0, "raw": "8.4", "start": 0, @@ -7071,7 +7071,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 5977, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7088,10 +7088,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 5947, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5947, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7101,7 +7101,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 5947, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7113,17 +7113,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6018, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6032, + "commentStart": 0, "elements": [ { - "commentStart": 6033, + "commentStart": 0, "end": 0, "raw": "20.16", "start": 0, @@ -7136,7 +7136,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 6041, + "commentStart": 0, "end": 0, "raw": "8.4", "start": 0, @@ -7147,7 +7147,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 6040, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7164,10 +7164,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6013, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6013, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7177,7 +7177,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6013, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7189,17 +7189,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6083, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6097, + "commentStart": 0, "elements": [ { - "commentStart": 6098, + "commentStart": 0, "end": 0, "raw": "20.16", "start": 0, @@ -7212,7 +7212,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 6106, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -7223,7 +7223,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 6105, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7240,10 +7240,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6078, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6078, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7253,7 +7253,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6078, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7265,17 +7265,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6147, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6161, + "commentStart": 0, "elements": [ { - "commentStart": 6162, + "commentStart": 0, "end": 0, "raw": "19.32", "start": 0, @@ -7288,7 +7288,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 6170, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -7299,7 +7299,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 6169, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7316,10 +7316,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6142, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6142, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7329,7 +7329,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6142, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7341,17 +7341,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6213, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6227, + "commentStart": 0, "elements": [ { - "commentStart": 6228, + "commentStart": 0, "end": 0, "raw": "19.32", "start": 0, @@ -7364,7 +7364,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 6236, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -7375,7 +7375,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 6235, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7392,10 +7392,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6208, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6208, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7405,7 +7405,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6208, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7417,17 +7417,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6277, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6291, + "commentStart": 0, "elements": [ { - "commentStart": 6292, + "commentStart": 0, "end": 0, "raw": "20.16", "start": 0, @@ -7440,7 +7440,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 6300, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -7451,7 +7451,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 6299, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7468,10 +7468,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6272, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6272, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7481,7 +7481,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6272, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7493,17 +7493,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6333, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6347, + "commentStart": 0, "elements": [ { - "commentStart": 6348, + "commentStart": 0, "end": 0, "raw": "0.839996", "start": 0, @@ -7516,7 +7516,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 6359, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -7527,7 +7527,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 6358, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7544,10 +7544,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6328, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6328, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7557,7 +7557,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6328, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7569,17 +7569,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6402, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6416, + "commentStart": 0, "elements": [ { - "commentStart": 6417, + "commentStart": 0, "end": 0, "raw": "0.839996", "start": 0, @@ -7592,7 +7592,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 6428, + "commentStart": 0, "end": 0, "raw": "19.32", "start": 0, @@ -7603,7 +7603,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 6427, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7620,10 +7620,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6397, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6397, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7633,7 +7633,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6397, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7645,17 +7645,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6470, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6484, + "commentStart": 0, "elements": [ { - "commentStart": 6485, + "commentStart": 0, "end": 0, "raw": "20.16", "start": 0, @@ -7668,7 +7668,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 6493, + "commentStart": 0, "end": 0, "raw": "19.32", "start": 0, @@ -7679,7 +7679,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 6492, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7696,10 +7696,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6465, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6465, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7709,7 +7709,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6465, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7721,17 +7721,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6537, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6551, + "commentStart": 0, "elements": [ { - "commentStart": 6552, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -7744,7 +7744,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 6559, + "commentStart": 0, "end": 0, "raw": "10.08", "start": 0, @@ -7755,7 +7755,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 6558, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7772,10 +7772,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6532, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6532, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7785,7 +7785,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6532, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7797,17 +7797,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6593, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6607, + "commentStart": 0, "elements": [ { - "commentStart": 6608, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -7820,7 +7820,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 6615, + "commentStart": 0, "end": 0, "raw": "9.24001", "start": 0, @@ -7831,7 +7831,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 6614, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7848,10 +7848,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6588, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6588, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7861,7 +7861,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6588, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7873,17 +7873,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6659, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6673, + "commentStart": 0, "elements": [ { - "commentStart": 6674, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -7896,7 +7896,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 6682, + "commentStart": 0, "end": 0, "raw": "9.24001", "start": 0, @@ -7907,7 +7907,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 6681, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7924,10 +7924,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6654, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6654, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7937,7 +7937,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6654, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7949,17 +7949,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6728, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6742, + "commentStart": 0, "elements": [ { - "commentStart": 6743, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -7972,7 +7972,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 6751, + "commentStart": 0, "end": 0, "raw": "10.08", "start": 0, @@ -7983,7 +7983,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 6750, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8000,10 +8000,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6723, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6723, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8013,7 +8013,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6723, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8025,17 +8025,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6793, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6807, + "commentStart": 0, "elements": [ { - "commentStart": 6808, + "commentStart": 0, "end": 0, "raw": "18.48", "start": 0, @@ -8048,7 +8048,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 6816, + "commentStart": 0, "end": 0, "raw": "10.08", "start": 0, @@ -8059,7 +8059,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 6815, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8076,10 +8076,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6788, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6788, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8089,7 +8089,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6788, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8101,17 +8101,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6860, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6874, + "commentStart": 0, "elements": [ { - "commentStart": 6875, + "commentStart": 0, "end": 0, "raw": "18.48", "start": 0, @@ -8124,7 +8124,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 6883, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -8135,7 +8135,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 6882, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8152,10 +8152,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6855, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6855, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8165,7 +8165,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6855, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8177,17 +8177,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6925, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6939, + "commentStart": 0, "elements": [ { - "commentStart": 6940, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -8200,7 +8200,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 6948, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -8211,7 +8211,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 6947, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8228,10 +8228,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6920, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6920, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8241,7 +8241,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6920, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8253,17 +8253,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 6991, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7005, + "commentStart": 0, "elements": [ { - "commentStart": 7006, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -8276,7 +8276,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 7014, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -8287,7 +8287,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 7013, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8304,10 +8304,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 6986, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6986, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8317,7 +8317,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 6986, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8329,17 +8329,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 7057, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7071, + "commentStart": 0, "elements": [ { - "commentStart": 7072, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -8352,7 +8352,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 7079, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -8363,7 +8363,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 7078, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8380,10 +8380,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 7052, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7052, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8393,7 +8393,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 7052, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8405,17 +8405,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 7123, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7137, + "commentStart": 0, "elements": [ { - "commentStart": 7138, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -8428,7 +8428,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 7145, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -8439,7 +8439,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 7144, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8456,10 +8456,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 7118, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7118, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8469,7 +8469,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 7118, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8481,17 +8481,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 7186, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7200, + "commentStart": 0, "elements": [ { - "commentStart": 7201, + "commentStart": 0, "end": 0, "raw": "2.52", "start": 0, @@ -8504,7 +8504,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 7208, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -8515,7 +8515,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 7207, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8532,10 +8532,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 7181, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7181, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8545,7 +8545,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 7181, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8557,17 +8557,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 7251, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7265, + "commentStart": 0, "elements": [ { - "commentStart": 7266, + "commentStart": 0, "end": 0, "raw": "2.52", "start": 0, @@ -8580,7 +8580,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 7273, + "commentStart": 0, "end": 0, "raw": "10.080000000000002", "start": 0, @@ -8591,7 +8591,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 7272, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8608,10 +8608,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 7246, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7246, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8621,7 +8621,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 7246, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8633,17 +8633,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 7329, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7343, + "commentStart": 0, "elements": [ { - "commentStart": 7344, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -8656,7 +8656,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 7352, + "commentStart": 0, "end": 0, "raw": "10.92", "start": 0, @@ -8667,7 +8667,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 7351, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8684,10 +8684,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 7324, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7324, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8697,7 +8697,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 7324, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8709,17 +8709,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 7386, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7400, + "commentStart": 0, "elements": [ { - "commentStart": 7401, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -8732,7 +8732,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 7409, + "commentStart": 0, "end": 0, "raw": "10.08", "start": 0, @@ -8743,7 +8743,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 7408, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8760,10 +8760,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 7381, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7381, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8773,7 +8773,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 7381, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8785,17 +8785,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 7452, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7466, + "commentStart": 0, "elements": [ { - "commentStart": 7467, + "commentStart": 0, "end": 0, "raw": "15.12", "start": 0, @@ -8808,7 +8808,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 7475, + "commentStart": 0, "end": 0, "raw": "10.08", "start": 0, @@ -8819,7 +8819,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 7474, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8836,10 +8836,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 7447, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7447, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8849,7 +8849,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 7447, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8861,17 +8861,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 7519, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7533, + "commentStart": 0, "elements": [ { - "commentStart": 7534, + "commentStart": 0, "end": 0, "raw": "15.12", "start": 0, @@ -8884,7 +8884,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 7542, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -8895,7 +8895,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 7541, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8912,10 +8912,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 7514, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7514, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8925,7 +8925,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 7514, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8937,17 +8937,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 7585, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7599, + "commentStart": 0, "elements": [ { - "commentStart": 7600, + "commentStart": 0, "end": 0, "raw": "14.28", "start": 0, @@ -8960,7 +8960,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 7608, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -8971,7 +8971,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 7607, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8988,10 +8988,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 7580, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7580, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9001,7 +9001,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 7580, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9013,17 +9013,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 7652, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7666, + "commentStart": 0, "elements": [ { - "commentStart": 7667, + "commentStart": 0, "end": 0, "raw": "9.24", "start": 0, @@ -9036,7 +9036,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 7674, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -9047,7 +9047,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 7673, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9064,10 +9064,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 7647, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7647, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9077,7 +9077,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 7647, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9089,17 +9089,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 7708, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7722, + "commentStart": 0, "elements": [ { - "commentStart": 7723, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -9112,7 +9112,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 7731, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -9123,7 +9123,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 7730, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9140,10 +9140,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 7703, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7703, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9153,7 +9153,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 7703, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9165,17 +9165,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 7775, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7789, + "commentStart": 0, "elements": [ { - "commentStart": 7790, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -9188,7 +9188,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 7798, + "commentStart": 0, "end": 0, "raw": "14.28", "start": 0, @@ -9199,7 +9199,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 7797, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9216,10 +9216,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 7770, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7770, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9229,7 +9229,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 7770, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9241,17 +9241,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 7841, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7855, + "commentStart": 0, "elements": [ { - "commentStart": 7856, + "commentStart": 0, "end": 0, "raw": "10.92", "start": 0, @@ -9264,7 +9264,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 7864, + "commentStart": 0, "end": 0, "raw": "14.28", "start": 0, @@ -9275,7 +9275,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 7863, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9292,10 +9292,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 7836, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7836, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9305,7 +9305,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 7836, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9317,17 +9317,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 7913, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7927, + "commentStart": 0, "elements": [ { - "commentStart": 7928, + "commentStart": 0, "end": 0, "raw": "10.92", "start": 0, @@ -9340,7 +9340,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 7936, + "commentStart": 0, "end": 0, "raw": "15.959999999999999", "start": 0, @@ -9351,7 +9351,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 7935, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9368,10 +9368,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 7908, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7908, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9381,7 +9381,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 7908, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9393,17 +9393,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 7992, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8006, + "commentStart": 0, "elements": [ { - "commentStart": 8007, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -9416,7 +9416,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 8015, + "commentStart": 0, "end": 0, "raw": "15.959999999999999", "start": 0, @@ -9427,7 +9427,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 8014, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9444,10 +9444,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 7987, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7987, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9457,7 +9457,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 7987, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9469,17 +9469,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 8072, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8086, + "commentStart": 0, "elements": [ { - "commentStart": 8087, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -9492,7 +9492,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 8095, + "commentStart": 0, "end": 0, "raw": "15.12", "start": 0, @@ -9503,7 +9503,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 8094, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9520,10 +9520,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 8067, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8067, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9533,7 +9533,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 8067, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9545,17 +9545,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 8138, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8152, + "commentStart": 0, "elements": [ { - "commentStart": 8153, + "commentStart": 0, "end": 0, "raw": "14.28", "start": 0, @@ -9568,7 +9568,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 8161, + "commentStart": 0, "end": 0, "raw": "15.12", "start": 0, @@ -9579,7 +9579,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 8160, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9596,10 +9596,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 8133, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8133, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9609,7 +9609,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 8133, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9621,17 +9621,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 8205, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8219, + "commentStart": 0, "elements": [ { - "commentStart": 8220, + "commentStart": 0, "end": 0, "raw": "14.28", "start": 0, @@ -9644,7 +9644,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 8228, + "commentStart": 0, "end": 0, "raw": "15.959999999999999", "start": 0, @@ -9655,7 +9655,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 8227, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9672,10 +9672,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 8200, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8200, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9685,7 +9685,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 8200, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9697,17 +9697,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 8284, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8298, + "commentStart": 0, "elements": [ { - "commentStart": 8299, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -9720,7 +9720,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 8307, + "commentStart": 0, "end": 0, "raw": "15.959999999999999", "start": 0, @@ -9731,7 +9731,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 8306, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9748,10 +9748,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 8279, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8279, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9761,7 +9761,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 8279, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9773,17 +9773,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 8364, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8378, + "commentStart": 0, "elements": [ { - "commentStart": 8379, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -9796,7 +9796,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 8387, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -9807,7 +9807,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 8386, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9824,10 +9824,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 8359, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8359, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9837,7 +9837,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 8359, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9849,17 +9849,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 8428, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8442, + "commentStart": 0, "elements": [ { - "commentStart": 8443, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -9872,7 +9872,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 8450, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -9883,7 +9883,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 8449, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9900,10 +9900,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 8423, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8423, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9913,7 +9913,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 8423, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9925,17 +9925,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 8493, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8507, + "commentStart": 0, "elements": [ { - "commentStart": 8508, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -9948,7 +9948,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 8515, + "commentStart": 0, "end": 0, "raw": "15.96", "start": 0, @@ -9959,7 +9959,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 8514, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9976,10 +9976,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 8488, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8488, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9989,7 +9989,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 8488, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10001,17 +10001,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 8557, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8571, + "commentStart": 0, "elements": [ { - "commentStart": 8572, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -10024,7 +10024,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 8579, + "commentStart": 0, "end": 0, "raw": "15.96", "start": 0, @@ -10035,7 +10035,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 8578, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10052,10 +10052,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 8552, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8552, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10065,7 +10065,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 8552, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10077,17 +10077,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 8623, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8637, + "commentStart": 0, "elements": [ { - "commentStart": 8638, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -10100,7 +10100,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 8645, + "commentStart": 0, "end": 0, "raw": "15.120000000000001", "start": 0, @@ -10111,7 +10111,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 8644, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10128,10 +10128,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 8618, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8618, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10141,7 +10141,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 8618, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10153,17 +10153,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 8701, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8715, + "commentStart": 0, "elements": [ { - "commentStart": 8716, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -10176,7 +10176,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 8723, + "commentStart": 0, "end": 0, "raw": "15.120000000000001", "start": 0, @@ -10187,7 +10187,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 8722, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10204,10 +10204,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 8696, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8696, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10217,7 +10217,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 8696, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10229,17 +10229,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 8780, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8794, + "commentStart": 0, "elements": [ { - "commentStart": 8795, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -10252,7 +10252,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 8802, + "commentStart": 0, "end": 0, "raw": "15.96", "start": 0, @@ -10263,7 +10263,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 8801, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10280,10 +10280,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 8775, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8775, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10293,7 +10293,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 8775, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10305,17 +10305,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 8845, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8859, + "commentStart": 0, "elements": [ { - "commentStart": 8860, + "commentStart": 0, "end": 0, "raw": "10.08", "start": 0, @@ -10328,7 +10328,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 8868, + "commentStart": 0, "end": 0, "raw": "15.96", "start": 0, @@ -10339,7 +10339,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 8867, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10356,10 +10356,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 8840, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8840, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10369,7 +10369,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 8840, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10381,17 +10381,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 8912, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8926, + "commentStart": 0, "elements": [ { - "commentStart": 8927, + "commentStart": 0, "end": 0, "raw": "10.08", "start": 0, @@ -10404,7 +10404,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 8935, + "commentStart": 0, "end": 0, "raw": "14.28", "start": 0, @@ -10415,7 +10415,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 8934, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10432,10 +10432,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 8907, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8907, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10445,7 +10445,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 8907, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10457,17 +10457,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 8977, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8991, + "commentStart": 0, "elements": [ { - "commentStart": 8992, + "commentStart": 0, "end": 0, "raw": "9.24", "start": 0, @@ -10480,7 +10480,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 8999, + "commentStart": 0, "end": 0, "raw": "14.28", "start": 0, @@ -10491,7 +10491,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 8998, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10508,10 +10508,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 8972, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8972, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10521,7 +10521,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 8972, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10533,17 +10533,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 9043, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9057, + "commentStart": 0, "elements": [ { - "commentStart": 9058, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -10556,7 +10556,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 9065, + "commentStart": 0, "end": 0, "raw": "12.6", "start": 0, @@ -10567,7 +10567,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 9064, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10584,10 +10584,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 9038, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9038, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10597,7 +10597,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 9038, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10609,17 +10609,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 9098, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9112, + "commentStart": 0, "elements": [ { - "commentStart": 9113, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -10632,7 +10632,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 9120, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -10643,7 +10643,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 9119, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10660,10 +10660,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 9093, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9093, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10673,7 +10673,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 9093, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10685,17 +10685,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 9162, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9176, + "commentStart": 0, "elements": [ { - "commentStart": 9177, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -10708,7 +10708,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 9184, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -10719,7 +10719,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 9183, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10736,10 +10736,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 9157, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9157, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10749,7 +10749,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 9157, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10761,17 +10761,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 9228, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9242, + "commentStart": 0, "elements": [ { - "commentStart": 9243, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -10784,7 +10784,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 9250, + "commentStart": 0, "end": 0, "raw": "12.6", "start": 0, @@ -10795,7 +10795,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 9249, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10812,10 +10812,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 9223, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9223, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10825,7 +10825,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 9223, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10837,17 +10837,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 9291, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9305, + "commentStart": 0, "elements": [ { - "commentStart": 9306, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -10860,7 +10860,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 9312, + "commentStart": 0, "end": 0, "raw": "12.6", "start": 0, @@ -10871,7 +10871,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 9311, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10888,10 +10888,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 9286, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9286, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10901,7 +10901,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 9286, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10913,17 +10913,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 9355, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9369, + "commentStart": 0, "elements": [ { - "commentStart": 9370, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -10936,7 +10936,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 9376, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -10947,7 +10947,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 9375, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10964,10 +10964,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 9350, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9350, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10977,7 +10977,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 9350, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10989,17 +10989,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 9419, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9433, + "commentStart": 0, "elements": [ { - "commentStart": 9434, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -11012,7 +11012,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 9441, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -11023,7 +11023,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 9440, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11040,10 +11040,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 9414, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9414, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11053,7 +11053,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 9414, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11065,17 +11065,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 9485, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9499, + "commentStart": 0, "elements": [ { - "commentStart": 9500, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -11088,7 +11088,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 9507, + "commentStart": 0, "end": 0, "raw": "10.92", "start": 0, @@ -11099,7 +11099,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 9506, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11116,10 +11116,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 9480, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9480, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11129,7 +11129,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 9480, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11141,17 +11141,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 9550, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9564, + "commentStart": 0, "elements": [ { - "commentStart": 9565, + "commentStart": 0, "end": 0, "raw": "7.5600000000000005", "start": 0, @@ -11164,7 +11164,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 9586, + "commentStart": 0, "end": 0, "raw": "10.92", "start": 0, @@ -11175,7 +11175,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 9585, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11192,10 +11192,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 9545, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9545, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11205,7 +11205,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 9545, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11217,17 +11217,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 9630, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9644, + "commentStart": 0, "elements": [ { - "commentStart": 9645, + "commentStart": 0, "end": 0, "raw": "7.5600000000000005", "start": 0, @@ -11240,7 +11240,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 9666, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -11251,7 +11251,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 9665, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11268,10 +11268,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 9625, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9625, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11281,7 +11281,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 9625, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11293,17 +11293,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 9709, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9723, + "commentStart": 0, "elements": [ { - "commentStart": 9724, + "commentStart": 0, "end": 0, "raw": "8.4", "start": 0, @@ -11316,7 +11316,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 9730, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -11327,7 +11327,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 9729, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11344,10 +11344,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 9704, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9704, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11357,7 +11357,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 9704, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11369,17 +11369,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 9774, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9788, + "commentStart": 0, "elements": [ { - "commentStart": 9789, + "commentStart": 0, "end": 0, "raw": "8.4", "start": 0, @@ -11392,7 +11392,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 9795, + "commentStart": 0, "end": 0, "raw": "12.6", "start": 0, @@ -11403,7 +11403,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 9794, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11420,10 +11420,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 9769, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9769, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11433,7 +11433,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 9769, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11445,17 +11445,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 9837, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9851, + "commentStart": 0, "elements": [ { - "commentStart": 9852, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -11468,7 +11468,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 9859, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -11479,7 +11479,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 9858, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11496,10 +11496,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 9832, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9832, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11509,7 +11509,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 9832, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11521,17 +11521,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 9892, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9906, + "commentStart": 0, "elements": [ { - "commentStart": 9907, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -11544,7 +11544,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 9914, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -11555,7 +11555,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 9913, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11572,10 +11572,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 9887, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9887, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11585,7 +11585,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 9887, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11597,17 +11597,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 9955, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9969, + "commentStart": 0, "elements": [ { - "commentStart": 9970, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -11620,7 +11620,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 9976, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -11631,7 +11631,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 9975, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11648,10 +11648,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 9950, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9950, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11661,7 +11661,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 9950, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11673,17 +11673,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10019, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10033, + "commentStart": 0, "elements": [ { - "commentStart": 10034, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -11696,7 +11696,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 10040, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -11707,7 +11707,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 10039, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11724,10 +11724,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10014, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10014, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11737,7 +11737,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10014, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11749,17 +11749,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10081, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10095, + "commentStart": 0, "elements": [ { - "commentStart": 10096, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -11772,7 +11772,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 10103, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -11783,7 +11783,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 10102, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11800,10 +11800,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10076, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10076, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11813,7 +11813,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10076, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11825,17 +11825,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10146, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10160, + "commentStart": 0, "elements": [ { - "commentStart": 10161, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -11848,7 +11848,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 10168, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -11859,7 +11859,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 10167, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11876,10 +11876,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10141, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10141, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11889,7 +11889,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10141, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11901,17 +11901,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10209, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10223, + "commentStart": 0, "elements": [ { - "commentStart": 10224, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -11924,7 +11924,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 10231, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -11935,7 +11935,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 10230, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11952,10 +11952,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10204, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10204, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11965,7 +11965,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10204, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11977,17 +11977,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10274, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10288, + "commentStart": 0, "elements": [ { - "commentStart": 10289, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -12000,7 +12000,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 10296, + "commentStart": 0, "end": 0, "raw": "0.83999599", "start": 0, @@ -12011,7 +12011,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 10295, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12028,10 +12028,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10269, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10269, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12041,7 +12041,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10269, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12053,17 +12053,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10343, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10357, + "commentStart": 0, "elements": [ { - "commentStart": 10358, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -12076,7 +12076,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 10365, + "commentStart": 0, "end": 0, "raw": "0.83999599", "start": 0, @@ -12087,7 +12087,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 10364, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12104,10 +12104,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10338, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10338, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12117,7 +12117,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10338, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12129,17 +12129,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10414, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10428, + "commentStart": 0, "elements": [ { - "commentStart": 10429, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -12152,7 +12152,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 10436, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -12163,7 +12163,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 10435, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12180,10 +12180,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10409, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10409, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12193,7 +12193,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10409, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12205,17 +12205,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10477, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10491, + "commentStart": 0, "elements": [ { - "commentStart": 10492, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -12228,7 +12228,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 10499, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -12239,7 +12239,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 10498, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12256,10 +12256,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10472, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10472, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12269,7 +12269,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10472, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12281,17 +12281,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10542, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10556, + "commentStart": 0, "elements": [ { - "commentStart": 10557, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -12304,7 +12304,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 10564, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -12315,7 +12315,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 10563, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12332,10 +12332,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10537, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10537, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12345,7 +12345,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10537, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12357,17 +12357,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10605, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10619, + "commentStart": 0, "elements": [ { - "commentStart": 10620, + "commentStart": 0, "end": 0, "raw": "8.4", "start": 0, @@ -12380,7 +12380,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 10626, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -12391,7 +12391,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 10625, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12408,10 +12408,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10600, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10600, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12421,7 +12421,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10600, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12433,17 +12433,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10669, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10683, + "commentStart": 0, "elements": [ { - "commentStart": 10684, + "commentStart": 0, "end": 0, "raw": "8.4", "start": 0, @@ -12456,7 +12456,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 10690, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -12467,7 +12467,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 10689, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12484,10 +12484,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10664, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10664, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12497,7 +12497,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10664, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12509,17 +12509,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10732, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10746, + "commentStart": 0, "elements": [ { - "commentStart": 10747, + "commentStart": 0, "end": 0, "raw": "9.24", "start": 0, @@ -12532,7 +12532,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 10754, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -12543,7 +12543,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 10753, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12560,10 +12560,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10727, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10727, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12573,7 +12573,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10727, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12585,17 +12585,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10797, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10811, + "commentStart": 0, "elements": [ { - "commentStart": 10812, + "commentStart": 0, "end": 0, "raw": "9.24", "start": 0, @@ -12608,7 +12608,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 10819, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -12619,7 +12619,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 10818, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12636,10 +12636,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10792, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10792, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12649,7 +12649,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10792, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12661,17 +12661,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10861, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10875, + "commentStart": 0, "elements": [ { - "commentStart": 10876, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -12684,7 +12684,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 10884, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -12695,7 +12695,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 10883, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12712,10 +12712,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10856, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10856, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12725,7 +12725,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10856, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12737,17 +12737,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10917, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10931, + "commentStart": 0, "elements": [ { - "commentStart": 10932, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -12760,7 +12760,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 10940, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -12771,7 +12771,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 10939, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12788,10 +12788,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10912, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10912, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12801,7 +12801,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10912, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12813,17 +12813,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 10981, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10995, + "commentStart": 0, "elements": [ { - "commentStart": 10996, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -12836,7 +12836,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 11004, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -12847,7 +12847,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 11003, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12864,10 +12864,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 10976, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10976, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12877,7 +12877,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 10976, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12889,17 +12889,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 11047, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11061, + "commentStart": 0, "elements": [ { - "commentStart": 11062, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -12912,7 +12912,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 11070, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -12923,7 +12923,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 11069, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12940,10 +12940,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 11042, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11042, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12953,7 +12953,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 11042, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12965,17 +12965,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 11111, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11125, + "commentStart": 0, "elements": [ { - "commentStart": 11126, + "commentStart": 0, "end": 0, "raw": "12.6", "start": 0, @@ -12988,7 +12988,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 11133, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -12999,7 +12999,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 11132, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13016,10 +13016,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 11106, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11106, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13029,7 +13029,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 11106, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13041,17 +13041,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 11176, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11190, + "commentStart": 0, "elements": [ { - "commentStart": 11191, + "commentStart": 0, "end": 0, "raw": "12.6", "start": 0, @@ -13064,7 +13064,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 11198, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -13075,7 +13075,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 11197, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13092,10 +13092,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 11171, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11171, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13105,7 +13105,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 11171, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13117,17 +13117,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 11239, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11253, + "commentStart": 0, "elements": [ { - "commentStart": 11254, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -13140,7 +13140,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 11262, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -13151,7 +13151,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 11261, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13168,10 +13168,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 11234, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11234, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13181,7 +13181,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 11234, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13193,17 +13193,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 11305, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11319, + "commentStart": 0, "elements": [ { - "commentStart": 11320, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -13216,7 +13216,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 11328, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -13227,7 +13227,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 11327, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13244,10 +13244,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 11300, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11300, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13257,7 +13257,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 11300, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13269,17 +13269,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 11369, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11383, + "commentStart": 0, "elements": [ { - "commentStart": 11384, + "commentStart": 0, "end": 0, "raw": "14.28", "start": 0, @@ -13292,7 +13292,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 11392, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -13303,7 +13303,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 11391, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13320,10 +13320,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 11364, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11364, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13333,7 +13333,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 11364, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13345,17 +13345,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 11435, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11449, + "commentStart": 0, "elements": [ { - "commentStart": 11450, + "commentStart": 0, "end": 0, "raw": "14.28", "start": 0, @@ -13368,7 +13368,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 11458, + "commentStart": 0, "end": 0, "raw": "0.83999599", "start": 0, @@ -13379,7 +13379,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 11457, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13396,10 +13396,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 11430, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11430, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13409,7 +13409,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 11430, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13421,17 +13421,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 11505, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11519, + "commentStart": 0, "elements": [ { - "commentStart": 11520, + "commentStart": 0, "end": 0, "raw": "15.12", "start": 0, @@ -13444,7 +13444,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 11528, + "commentStart": 0, "end": 0, "raw": "0.83999599", "start": 0, @@ -13455,7 +13455,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 11527, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13472,10 +13472,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 11500, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11500, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13485,7 +13485,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 11500, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13497,17 +13497,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 11577, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11591, + "commentStart": 0, "elements": [ { - "commentStart": 11592, + "commentStart": 0, "end": 0, "raw": "15.12", "start": 0, @@ -13520,7 +13520,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 11600, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -13531,7 +13531,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 11599, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13548,10 +13548,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 11572, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11572, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13561,7 +13561,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 11572, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13573,17 +13573,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 11641, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11655, + "commentStart": 0, "elements": [ { - "commentStart": 11656, + "commentStart": 0, "end": 0, "raw": "15.959999999999999", "start": 0, @@ -13596,7 +13596,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 11677, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -13607,7 +13607,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 11676, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13624,10 +13624,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 11636, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11636, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13637,7 +13637,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 11636, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13649,17 +13649,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 11720, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11734, + "commentStart": 0, "elements": [ { - "commentStart": 11735, + "commentStart": 0, "end": 0, "raw": "15.959999999999999", "start": 0, @@ -13672,7 +13672,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 11756, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -13683,7 +13683,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 11755, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13700,10 +13700,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 11715, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11715, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13713,7 +13713,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 11715, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13725,17 +13725,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 11798, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11812, + "commentStart": 0, "elements": [ { - "commentStart": 11813, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -13748,7 +13748,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 11820, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -13759,7 +13759,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 11819, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13776,10 +13776,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 11793, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11793, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13789,7 +13789,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 11793, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13801,17 +13801,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 11863, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11877, + "commentStart": 0, "elements": [ { - "commentStart": 11878, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -13824,7 +13824,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 11885, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -13835,7 +13835,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 11884, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13852,10 +13852,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 11858, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11858, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13865,7 +13865,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 11858, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13877,17 +13877,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 11927, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11941, + "commentStart": 0, "elements": [ { - "commentStart": 11942, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -13900,7 +13900,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 11950, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -13911,7 +13911,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 11949, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13928,10 +13928,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 11922, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11922, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13941,7 +13941,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 11922, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13953,17 +13953,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 11983, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11997, + "commentStart": 0, "elements": [ { - "commentStart": 11998, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -13976,7 +13976,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 12006, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -13987,7 +13987,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 12005, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14004,10 +14004,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 11978, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11978, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14017,7 +14017,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 11978, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14029,17 +14029,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 12044, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12058, + "commentStart": 0, "elements": [ { - "commentStart": 12059, + "commentStart": 0, "end": 0, "raw": "15.959999999999999", "start": 0, @@ -14052,7 +14052,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 12080, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -14063,7 +14063,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 12079, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14080,10 +14080,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 12039, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12039, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14093,7 +14093,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 12039, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14105,17 +14105,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 12120, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12134, + "commentStart": 0, "elements": [ { - "commentStart": 12135, + "commentStart": 0, "end": 0, "raw": "15.959999999999999", "start": 0, @@ -14128,7 +14128,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 12156, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -14139,7 +14139,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 12155, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14156,10 +14156,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 12115, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12115, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14169,7 +14169,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 12115, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14181,17 +14181,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 12198, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12212, + "commentStart": 0, "elements": [ { - "commentStart": 12213, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -14204,7 +14204,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 12220, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -14215,7 +14215,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 12219, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14232,10 +14232,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 12193, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12193, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14245,7 +14245,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 12193, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14257,17 +14257,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 12263, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12277, + "commentStart": 0, "elements": [ { - "commentStart": 12278, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -14280,7 +14280,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 12285, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -14291,7 +14291,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 12284, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14308,10 +14308,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 12258, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12258, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14321,7 +14321,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 12258, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14333,17 +14333,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 12327, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12341, + "commentStart": 0, "elements": [ { - "commentStart": 12342, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -14356,7 +14356,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 12350, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -14367,7 +14367,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 12349, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14384,10 +14384,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 12322, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12322, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14397,7 +14397,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 12322, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14409,17 +14409,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 12393, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12407, + "commentStart": 0, "elements": [ { - "commentStart": 12408, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -14432,7 +14432,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 12416, + "commentStart": 0, "end": 0, "raw": "4.62", "start": 0, @@ -14443,7 +14443,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 12415, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14460,10 +14460,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 12388, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12388, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14473,7 +14473,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 12388, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14485,17 +14485,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 12457, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12471, + "commentStart": 0, "elements": [ { - "commentStart": 12472, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -14508,7 +14508,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 12479, + "commentStart": 0, "end": 0, "raw": "4.62", "start": 0, @@ -14519,7 +14519,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 12478, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14536,10 +14536,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 12452, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12452, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14549,7 +14549,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 12452, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14561,17 +14561,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 12522, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12536, + "commentStart": 0, "elements": [ { - "commentStart": 12537, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -14584,7 +14584,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 12544, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -14595,7 +14595,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 12543, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14612,10 +14612,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 12517, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12517, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14625,7 +14625,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 12517, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14637,17 +14637,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 12585, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12599, + "commentStart": 0, "elements": [ { - "commentStart": 12600, + "commentStart": 0, "end": 0, "raw": "15.96", "start": 0, @@ -14660,7 +14660,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 12608, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -14671,7 +14671,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 12607, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14688,10 +14688,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 12580, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12580, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14701,7 +14701,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 12580, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14713,17 +14713,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 12651, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12665, + "commentStart": 0, "elements": [ { - "commentStart": 12666, + "commentStart": 0, "end": 0, "raw": "15.96", "start": 0, @@ -14736,7 +14736,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 12674, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -14747,7 +14747,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 12673, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14764,10 +14764,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 12646, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12646, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14777,7 +14777,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 12646, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14789,17 +14789,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 12715, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12729, + "commentStart": 0, "elements": [ { - "commentStart": 12730, + "commentStart": 0, "end": 0, "raw": "15.12", "start": 0, @@ -14812,7 +14812,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 12738, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -14823,7 +14823,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 12737, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14840,10 +14840,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 12710, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12710, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14853,7 +14853,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 12710, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14865,17 +14865,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 12781, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12795, + "commentStart": 0, "elements": [ { - "commentStart": 12796, + "commentStart": 0, "end": 0, "raw": "15.12", "start": 0, @@ -14888,7 +14888,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 12804, + "commentStart": 0, "end": 0, "raw": "0.83999999", "start": 0, @@ -14899,7 +14899,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 12803, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14916,10 +14916,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 12776, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12776, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14929,7 +14929,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 12776, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14941,17 +14941,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 12851, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12865, + "commentStart": 0, "elements": [ { - "commentStart": 12866, + "commentStart": 0, "end": 0, "raw": "14.28", "start": 0, @@ -14964,7 +14964,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 12874, + "commentStart": 0, "end": 0, "raw": "0.83999999", "start": 0, @@ -14975,7 +14975,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 12873, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14992,10 +14992,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 12846, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12846, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15005,7 +15005,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 12846, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15017,17 +15017,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 12923, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12937, + "commentStart": 0, "elements": [ { - "commentStart": 12938, + "commentStart": 0, "end": 0, "raw": "14.28", "start": 0, @@ -15040,7 +15040,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 12946, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -15051,7 +15051,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 12945, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15068,10 +15068,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 12918, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12918, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15081,7 +15081,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 12918, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15093,17 +15093,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 12987, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13001, + "commentStart": 0, "elements": [ { - "commentStart": 13002, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -15116,7 +15116,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13010, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -15127,7 +15127,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13009, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15144,10 +15144,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 12982, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12982, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15157,7 +15157,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 12982, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15169,17 +15169,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13053, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13067, + "commentStart": 0, "elements": [ { - "commentStart": 13068, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -15192,7 +15192,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13076, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -15203,7 +15203,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13075, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15220,10 +15220,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13048, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13048, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15233,7 +15233,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13048, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15245,17 +15245,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13117, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13131, + "commentStart": 0, "elements": [ { - "commentStart": 13132, + "commentStart": 0, "end": 0, "raw": "12.6", "start": 0, @@ -15268,7 +15268,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13139, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -15279,7 +15279,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13138, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15296,10 +15296,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13112, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13112, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15309,7 +15309,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13112, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15321,17 +15321,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13182, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13196, + "commentStart": 0, "elements": [ { - "commentStart": 13197, + "commentStart": 0, "end": 0, "raw": "12.6", "start": 0, @@ -15344,7 +15344,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13204, + "commentStart": 0, "end": 0, "raw": "4.62", "start": 0, @@ -15355,7 +15355,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13203, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15372,10 +15372,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13177, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13177, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15385,7 +15385,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13177, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15397,17 +15397,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13245, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13259, + "commentStart": 0, "elements": [ { - "commentStart": 13260, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -15420,7 +15420,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13268, + "commentStart": 0, "end": 0, "raw": "4.62", "start": 0, @@ -15431,7 +15431,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13267, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15448,10 +15448,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13240, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13240, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15461,7 +15461,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13240, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15473,17 +15473,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13311, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13325, + "commentStart": 0, "elements": [ { - "commentStart": 13326, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -15496,7 +15496,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13334, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -15507,7 +15507,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13333, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15524,10 +15524,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13306, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13306, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15537,7 +15537,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13306, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15549,17 +15549,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13375, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13389, + "commentStart": 0, "elements": [ { - "commentStart": 13390, + "commentStart": 0, "end": 0, "raw": "12.6", "start": 0, @@ -15572,7 +15572,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13397, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -15583,7 +15583,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13396, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15600,10 +15600,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13370, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13370, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15613,7 +15613,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13370, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15625,17 +15625,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13440, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13454, + "commentStart": 0, "elements": [ { - "commentStart": 13455, + "commentStart": 0, "end": 0, "raw": "12.6", "start": 0, @@ -15648,7 +15648,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13462, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -15659,7 +15659,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13461, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15676,10 +15676,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13435, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13435, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15689,7 +15689,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13435, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15701,17 +15701,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13503, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13517, + "commentStart": 0, "elements": [ { - "commentStart": 13518, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -15724,7 +15724,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13525, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -15735,7 +15735,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13524, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15752,10 +15752,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13498, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13498, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15765,7 +15765,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13498, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15777,17 +15777,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13558, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13572, + "commentStart": 0, "elements": [ { - "commentStart": 13573, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -15800,7 +15800,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13580, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -15811,7 +15811,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13579, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15828,10 +15828,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13553, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13553, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15841,7 +15841,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13553, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15853,17 +15853,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13618, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13632, + "commentStart": 0, "elements": [ { - "commentStart": 13633, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -15876,7 +15876,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13640, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -15887,7 +15887,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13639, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15904,10 +15904,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13613, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13613, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15917,7 +15917,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13613, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15929,17 +15929,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13680, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13694, + "commentStart": 0, "elements": [ { - "commentStart": 13695, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -15952,7 +15952,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13702, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -15963,7 +15963,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13701, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15980,10 +15980,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13675, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13675, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15993,7 +15993,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13675, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16005,17 +16005,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13743, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13757, + "commentStart": 0, "elements": [ { - "commentStart": 13758, + "commentStart": 0, "end": 0, "raw": "8.4", "start": 0, @@ -16028,7 +16028,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13764, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -16039,7 +16039,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13763, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16056,10 +16056,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13738, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13738, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16069,7 +16069,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13738, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16081,17 +16081,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13807, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13821, + "commentStart": 0, "elements": [ { - "commentStart": 13822, + "commentStart": 0, "end": 0, "raw": "8.4", "start": 0, @@ -16104,7 +16104,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13828, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -16115,7 +16115,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13827, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16132,10 +16132,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13802, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13802, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16145,7 +16145,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13802, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16157,17 +16157,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13869, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13883, + "commentStart": 0, "elements": [ { - "commentStart": 13884, + "commentStart": 0, "end": 0, "raw": "9.24", "start": 0, @@ -16180,7 +16180,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13891, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -16191,7 +16191,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13890, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16208,10 +16208,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13864, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13864, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16221,7 +16221,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13864, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16233,17 +16233,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13934, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13948, + "commentStart": 0, "elements": [ { - "commentStart": 13949, + "commentStart": 0, "end": 0, "raw": "9.24", "start": 0, @@ -16256,7 +16256,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 13956, + "commentStart": 0, "end": 0, "raw": "4.62", "start": 0, @@ -16267,7 +16267,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 13955, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16284,10 +16284,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13929, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13929, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16297,7 +16297,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13929, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16309,17 +16309,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 13997, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14011, + "commentStart": 0, "elements": [ { - "commentStart": 14012, + "commentStart": 0, "end": 0, "raw": "8.4", "start": 0, @@ -16332,7 +16332,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14018, + "commentStart": 0, "end": 0, "raw": "4.62", "start": 0, @@ -16343,7 +16343,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14017, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16360,10 +16360,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 13992, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13992, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16373,7 +16373,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 13992, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16385,17 +16385,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 14061, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14075, + "commentStart": 0, "elements": [ { - "commentStart": 14076, + "commentStart": 0, "end": 0, "raw": "8.4", "start": 0, @@ -16408,7 +16408,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14082, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -16419,7 +16419,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14081, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16436,10 +16436,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 14056, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14056, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16449,7 +16449,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 14056, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16461,17 +16461,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 14123, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14137, + "commentStart": 0, "elements": [ { - "commentStart": 14138, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -16484,7 +16484,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14145, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -16495,7 +16495,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14144, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16512,10 +16512,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 14118, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14118, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16525,7 +16525,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 14118, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16537,17 +16537,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 14188, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14202, + "commentStart": 0, "elements": [ { - "commentStart": 14203, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -16560,7 +16560,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14210, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -16571,7 +16571,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14209, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16588,10 +16588,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 14183, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14183, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16601,7 +16601,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 14183, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16613,17 +16613,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 14251, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14265, + "commentStart": 0, "elements": [ { - "commentStart": 14266, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -16636,7 +16636,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14273, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -16647,7 +16647,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14272, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16664,10 +16664,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 14246, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14246, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16677,7 +16677,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 14246, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16689,17 +16689,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 14316, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14330, + "commentStart": 0, "elements": [ { - "commentStart": 14331, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -16712,7 +16712,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14338, + "commentStart": 0, "end": 0, "raw": "0.83999999", "start": 0, @@ -16723,7 +16723,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14337, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16740,10 +16740,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 14311, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14311, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16753,7 +16753,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 14311, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16765,17 +16765,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 14385, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14399, + "commentStart": 0, "elements": [ { - "commentStart": 14400, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -16788,7 +16788,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14407, + "commentStart": 0, "end": 0, "raw": "0.83999999", "start": 0, @@ -16799,7 +16799,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14406, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16816,10 +16816,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 14380, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14380, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16829,7 +16829,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 14380, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16841,17 +16841,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 14456, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14470, + "commentStart": 0, "elements": [ { - "commentStart": 14471, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -16864,7 +16864,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14478, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -16875,7 +16875,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14477, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16892,10 +16892,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 14451, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14451, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16905,7 +16905,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 14451, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16917,17 +16917,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 14519, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14533, + "commentStart": 0, "elements": [ { - "commentStart": 14534, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -16940,7 +16940,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14541, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -16951,7 +16951,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14540, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16968,10 +16968,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 14514, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14514, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16981,7 +16981,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 14514, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16993,17 +16993,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 14584, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14598, + "commentStart": 0, "elements": [ { - "commentStart": 14599, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -17016,7 +17016,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14606, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -17027,7 +17027,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14605, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17044,10 +17044,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 14579, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14579, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17057,7 +17057,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 14579, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17069,17 +17069,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 14647, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14661, + "commentStart": 0, "elements": [ { - "commentStart": 14662, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -17092,7 +17092,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14668, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -17103,7 +17103,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14667, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17120,10 +17120,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 14642, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14642, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17133,7 +17133,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 14642, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17145,17 +17145,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 14711, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14725, + "commentStart": 0, "elements": [ { - "commentStart": 14726, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -17168,7 +17168,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14732, + "commentStart": 0, "end": 0, "raw": "4.62", "start": 0, @@ -17179,7 +17179,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14731, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17196,10 +17196,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 14706, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14706, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17209,7 +17209,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 14706, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17221,17 +17221,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 14773, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14787, + "commentStart": 0, "elements": [ { - "commentStart": 14788, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -17244,7 +17244,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14795, + "commentStart": 0, "end": 0, "raw": "4.62", "start": 0, @@ -17255,7 +17255,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14794, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17272,10 +17272,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 14768, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14768, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17285,7 +17285,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 14768, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17297,17 +17297,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 14838, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14852, + "commentStart": 0, "elements": [ { - "commentStart": 14853, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -17320,7 +17320,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14860, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -17331,7 +17331,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14859, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17348,10 +17348,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 14833, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14833, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17361,7 +17361,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 14833, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17373,17 +17373,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 14901, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14915, + "commentStart": 0, "elements": [ { - "commentStart": 14916, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -17396,7 +17396,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14922, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -17407,7 +17407,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14921, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17424,10 +17424,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 14896, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14896, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17437,7 +17437,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 14896, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17449,17 +17449,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 14965, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14979, + "commentStart": 0, "elements": [ { - "commentStart": 14980, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -17472,7 +17472,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 14986, + "commentStart": 0, "end": 0, "raw": "1.68", "start": 0, @@ -17483,7 +17483,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 14985, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17500,10 +17500,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 14960, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14960, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17513,7 +17513,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 14960, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17525,17 +17525,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 15027, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15041, + "commentStart": 0, "elements": [ { - "commentStart": 15042, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -17548,7 +17548,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 15050, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -17559,7 +17559,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 15049, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17576,10 +17576,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15022, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15022, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17589,7 +17589,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15022, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17601,17 +17601,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 15083, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15097, + "commentStart": 0, "elements": [ { - "commentStart": 15098, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -17624,7 +17624,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 15106, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -17635,7 +17635,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 15105, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17652,10 +17652,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15078, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15078, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17665,7 +17665,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15078, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17677,17 +17677,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 15147, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15161, + "commentStart": 0, "elements": [ { - "commentStart": 15162, + "commentStart": 0, "end": 0, "raw": "14.28", "start": 0, @@ -17700,7 +17700,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 15170, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -17711,7 +17711,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 15169, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17728,10 +17728,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15142, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15142, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17741,7 +17741,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15142, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17753,17 +17753,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 15213, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15227, + "commentStart": 0, "elements": [ { - "commentStart": 15228, + "commentStart": 0, "end": 0, "raw": "14.28", "start": 0, @@ -17776,7 +17776,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 15236, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -17787,7 +17787,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 15235, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17804,10 +17804,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15208, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15208, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17817,7 +17817,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15208, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17829,17 +17829,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 15276, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15290, + "commentStart": 0, "elements": [ { - "commentStart": 15291, + "commentStart": 0, "end": 0, "raw": "15.12", "start": 0, @@ -17852,7 +17852,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 15299, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -17863,7 +17863,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 15298, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17880,10 +17880,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15271, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15271, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17893,7 +17893,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15271, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17905,17 +17905,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 15341, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15355, + "commentStart": 0, "elements": [ { - "commentStart": 15356, + "commentStart": 0, "end": 0, "raw": "15.12", "start": 0, @@ -17928,7 +17928,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 15364, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -17939,7 +17939,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 15363, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17956,10 +17956,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15336, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15336, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17969,7 +17969,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15336, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17981,17 +17981,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 15406, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15420, + "commentStart": 0, "elements": [ { - "commentStart": 15421, + "commentStart": 0, "end": 0, "raw": "15.959999999999999", "start": 0, @@ -18004,7 +18004,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 15442, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -18015,7 +18015,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 15441, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18032,10 +18032,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15401, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15401, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18045,7 +18045,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15401, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18057,17 +18057,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 15485, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15499, + "commentStart": 0, "elements": [ { - "commentStart": 15500, + "commentStart": 0, "end": 0, "raw": "15.959999999999999", "start": 0, @@ -18080,7 +18080,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 15521, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -18091,7 +18091,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 15520, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18108,10 +18108,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15480, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15480, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18121,7 +18121,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15480, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18133,17 +18133,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 15563, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15577, + "commentStart": 0, "elements": [ { - "commentStart": 15578, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -18156,7 +18156,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 15585, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -18167,7 +18167,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 15584, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18184,10 +18184,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15558, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15558, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18197,7 +18197,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15558, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18209,17 +18209,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 15618, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15632, + "commentStart": 0, "elements": [ { - "commentStart": 15633, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -18232,7 +18232,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 15640, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -18243,7 +18243,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 15639, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18260,10 +18260,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15613, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15613, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18273,7 +18273,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15613, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18285,17 +18285,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 15680, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15694, + "commentStart": 0, "elements": [ { - "commentStart": 15695, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -18308,7 +18308,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 15702, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -18319,7 +18319,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 15701, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18336,10 +18336,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15675, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15675, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18349,7 +18349,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15675, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18361,17 +18361,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 15744, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15758, + "commentStart": 0, "elements": [ { - "commentStart": 15759, + "commentStart": 0, "end": 0, "raw": "6.72", "start": 0, @@ -18384,7 +18384,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 15766, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -18395,7 +18395,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 15765, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18412,10 +18412,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15739, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15739, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18425,7 +18425,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15739, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18437,17 +18437,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 15807, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15821, + "commentStart": 0, "elements": [ { - "commentStart": 15822, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -18460,7 +18460,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 15829, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -18471,7 +18471,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 15828, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18488,10 +18488,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15802, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15802, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18501,7 +18501,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15802, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18513,17 +18513,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 15872, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15886, + "commentStart": 0, "elements": [ { - "commentStart": 15887, + "commentStart": 0, "end": 0, "raw": "7.56", "start": 0, @@ -18536,7 +18536,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 15894, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -18547,7 +18547,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 15893, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18564,10 +18564,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15867, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15867, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18577,7 +18577,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15867, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18589,17 +18589,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 15935, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15949, + "commentStart": 0, "elements": [ { - "commentStart": 15950, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -18612,7 +18612,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 15957, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -18623,7 +18623,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 15956, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18640,10 +18640,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15930, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15930, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18653,7 +18653,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15930, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18665,17 +18665,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16000, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16014, + "commentStart": 0, "elements": [ { - "commentStart": 16015, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -18688,7 +18688,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16022, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -18699,7 +18699,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16021, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18716,10 +18716,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 15995, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15995, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18729,7 +18729,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 15995, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18741,17 +18741,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16063, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16077, + "commentStart": 0, "elements": [ { - "commentStart": 16078, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -18764,7 +18764,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16086, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -18775,7 +18775,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16085, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18792,10 +18792,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 16058, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16058, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18805,7 +18805,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 16058, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18817,17 +18817,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16119, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16133, + "commentStart": 0, "elements": [ { - "commentStart": 16134, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -18840,7 +18840,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16142, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -18851,7 +18851,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16141, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18868,10 +18868,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 16114, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16114, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18881,7 +18881,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 16114, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18893,17 +18893,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16183, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16197, + "commentStart": 0, "elements": [ { - "commentStart": 16198, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -18916,7 +18916,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16205, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -18927,7 +18927,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16204, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18944,10 +18944,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 16178, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16178, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18957,7 +18957,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 16178, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18969,17 +18969,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16248, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16262, + "commentStart": 0, "elements": [ { - "commentStart": 16263, + "commentStart": 0, "end": 0, "raw": "16.8", "start": 0, @@ -18992,7 +18992,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16270, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -19003,7 +19003,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16269, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19020,10 +19020,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 16243, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16243, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19033,7 +19033,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 16243, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19045,17 +19045,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16310, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16324, + "commentStart": 0, "elements": [ { - "commentStart": 16325, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -19068,7 +19068,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16333, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -19079,7 +19079,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16332, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19096,10 +19096,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 16305, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16305, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19109,7 +19109,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 16305, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19121,17 +19121,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16375, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16389, + "commentStart": 0, "elements": [ { - "commentStart": 16390, + "commentStart": 0, "end": 0, "raw": "17.64", "start": 0, @@ -19144,7 +19144,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16398, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -19155,7 +19155,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16397, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19172,10 +19172,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 16370, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16370, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19185,7 +19185,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 16370, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19197,17 +19197,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16440, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16454, + "commentStart": 0, "elements": [ { - "commentStart": 16455, + "commentStart": 0, "end": 0, "raw": "18.48", "start": 0, @@ -19220,7 +19220,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16463, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -19231,7 +19231,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16462, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19248,10 +19248,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 16435, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16435, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19261,7 +19261,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 16435, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19273,17 +19273,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16506, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16520, + "commentStart": 0, "elements": [ { - "commentStart": 16521, + "commentStart": 0, "end": 0, "raw": "18.48", "start": 0, @@ -19296,7 +19296,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16529, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -19307,7 +19307,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16528, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19324,10 +19324,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 16501, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16501, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19337,7 +19337,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 16501, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19349,17 +19349,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16571, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16585, + "commentStart": 0, "elements": [ { - "commentStart": 16586, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -19372,7 +19372,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16593, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -19383,7 +19383,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16592, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19400,10 +19400,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 16566, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16566, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19413,7 +19413,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 16566, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19425,17 +19425,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16626, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16640, + "commentStart": 0, "elements": [ { - "commentStart": 16641, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -19448,7 +19448,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16648, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -19459,7 +19459,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16647, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19476,10 +19476,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 16621, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16621, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19489,7 +19489,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 16621, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19501,17 +19501,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16689, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16703, + "commentStart": 0, "elements": [ { - "commentStart": 16704, + "commentStart": 0, "end": 0, "raw": "2.52", "start": 0, @@ -19524,7 +19524,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16711, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -19535,7 +19535,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16710, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19552,10 +19552,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 16684, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16684, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19565,7 +19565,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 16684, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19577,17 +19577,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16754, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16768, + "commentStart": 0, "elements": [ { - "commentStart": 16769, + "commentStart": 0, "end": 0, "raw": "2.52", "start": 0, @@ -19600,7 +19600,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16776, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -19611,7 +19611,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16775, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19628,10 +19628,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 16749, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16749, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19641,7 +19641,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 16749, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19653,17 +19653,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16817, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16831, + "commentStart": 0, "elements": [ { - "commentStart": 16832, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -19676,7 +19676,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16839, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -19687,7 +19687,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16838, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19704,10 +19704,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 16812, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16812, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19717,7 +19717,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 16812, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19729,17 +19729,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16882, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16896, + "commentStart": 0, "elements": [ { - "commentStart": 16897, + "commentStart": 0, "end": 0, "raw": "3.36", "start": 0, @@ -19752,7 +19752,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16904, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -19763,7 +19763,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16903, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19780,10 +19780,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 16877, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16877, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19793,7 +19793,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 16877, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19805,17 +19805,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 16944, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16958, + "commentStart": 0, "elements": [ { - "commentStart": 16959, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -19828,7 +19828,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 16965, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -19839,7 +19839,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 16964, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19856,10 +19856,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 16939, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16939, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19869,7 +19869,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 16939, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19881,17 +19881,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17007, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17021, + "commentStart": 0, "elements": [ { - "commentStart": 17022, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -19904,7 +19904,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17028, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -19915,7 +19915,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17027, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19932,10 +19932,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17002, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17002, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19945,7 +19945,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17002, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19957,17 +19957,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17070, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17084, + "commentStart": 0, "elements": [ { - "commentStart": 17085, + "commentStart": 0, "end": 0, "raw": "8.4", "start": 0, @@ -19980,7 +19980,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17091, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -19991,7 +19991,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17090, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20008,10 +20008,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17065, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17065, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20021,7 +20021,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17065, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20033,17 +20033,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17123, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17137, + "commentStart": 0, "elements": [ { - "commentStart": 17138, + "commentStart": 0, "end": 0, "raw": "9.24", "start": 0, @@ -20056,7 +20056,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17145, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -20067,7 +20067,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17144, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20084,10 +20084,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17118, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17118, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20097,7 +20097,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17118, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20109,17 +20109,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17187, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17201, + "commentStart": 0, "elements": [ { - "commentStart": 17202, + "commentStart": 0, "end": 0, "raw": "9.24", "start": 0, @@ -20132,7 +20132,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17209, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -20143,7 +20143,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17208, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20160,10 +20160,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17182, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17182, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20173,7 +20173,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17182, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20185,17 +20185,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17251, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17265, + "commentStart": 0, "elements": [ { - "commentStart": 17266, + "commentStart": 0, "end": 0, "raw": "10.08", "start": 0, @@ -20208,7 +20208,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17274, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -20219,7 +20219,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17273, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20236,10 +20236,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17246, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17246, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20249,7 +20249,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17246, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20261,17 +20261,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17317, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17331, + "commentStart": 0, "elements": [ { - "commentStart": 17332, + "commentStart": 0, "end": 0, "raw": "10.08", "start": 0, @@ -20284,7 +20284,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17340, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -20295,7 +20295,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17339, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20312,10 +20312,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17312, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17312, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20325,7 +20325,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17312, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20337,17 +20337,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17381, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17395, + "commentStart": 0, "elements": [ { - "commentStart": 17396, + "commentStart": 0, "end": 0, "raw": "9.24", "start": 0, @@ -20360,7 +20360,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17403, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -20371,7 +20371,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17402, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20388,10 +20388,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17376, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17376, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20401,7 +20401,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17376, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20413,17 +20413,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17446, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17460, + "commentStart": 0, "elements": [ { - "commentStart": 17461, + "commentStart": 0, "end": 0, "raw": "9.24", "start": 0, @@ -20436,7 +20436,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17468, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -20447,7 +20447,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17467, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20464,10 +20464,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17441, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17441, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20477,7 +20477,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17441, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20489,17 +20489,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17509, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17523, + "commentStart": 0, "elements": [ { - "commentStart": 17524, + "commentStart": 0, "end": 0, "raw": "8.4", "start": 0, @@ -20512,7 +20512,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17530, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -20523,7 +20523,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17529, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20540,10 +20540,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17504, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17504, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20553,7 +20553,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17504, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20565,17 +20565,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17573, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17587, + "commentStart": 0, "elements": [ { - "commentStart": 17588, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -20588,7 +20588,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17596, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -20599,7 +20599,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17595, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20616,10 +20616,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17568, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17568, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20629,7 +20629,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17568, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20641,17 +20641,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17628, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17642, + "commentStart": 0, "elements": [ { - "commentStart": 17643, + "commentStart": 0, "end": 0, "raw": "12.6", "start": 0, @@ -20664,7 +20664,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17650, + "commentStart": 0, "end": 0, "raw": "4.2", "start": 0, @@ -20675,7 +20675,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17649, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20692,10 +20692,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17623, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17623, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20705,7 +20705,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17623, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20717,17 +20717,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17692, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17706, + "commentStart": 0, "elements": [ { - "commentStart": 17707, + "commentStart": 0, "end": 0, "raw": "12.6", "start": 0, @@ -20740,7 +20740,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17714, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -20751,7 +20751,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17713, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20768,10 +20768,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17687, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17687, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20781,7 +20781,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17687, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20793,17 +20793,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17755, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17769, + "commentStart": 0, "elements": [ { - "commentStart": 17770, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -20816,7 +20816,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17778, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -20827,7 +20827,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17777, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20844,10 +20844,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17750, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17750, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20857,7 +20857,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17750, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20869,17 +20869,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17821, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17835, + "commentStart": 0, "elements": [ { - "commentStart": 17836, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -20892,7 +20892,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17844, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -20903,7 +20903,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17843, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20920,10 +20920,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17816, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17816, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20933,7 +20933,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17816, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20945,17 +20945,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17885, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17899, + "commentStart": 0, "elements": [ { - "commentStart": 17900, + "commentStart": 0, "end": 0, "raw": "10.92", "start": 0, @@ -20968,7 +20968,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17908, + "commentStart": 0, "end": 0, "raw": "5.88", "start": 0, @@ -20979,7 +20979,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17907, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20996,10 +20996,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17880, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17880, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21009,7 +21009,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17880, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21021,17 +21021,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 17951, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17965, + "commentStart": 0, "elements": [ { - "commentStart": 17966, + "commentStart": 0, "end": 0, "raw": "10.92", "start": 0, @@ -21044,7 +21044,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 17974, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -21055,7 +21055,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 17973, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21072,10 +21072,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 17946, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17946, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21085,7 +21085,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 17946, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21097,17 +21097,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 18015, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18029, + "commentStart": 0, "elements": [ { - "commentStart": 18030, + "commentStart": 0, "end": 0, "raw": "11.76", "start": 0, @@ -21120,7 +21120,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 18038, + "commentStart": 0, "end": 0, "raw": "5.04", "start": 0, @@ -21131,7 +21131,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 18037, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21148,10 +21148,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 18010, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18010, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21161,7 +21161,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 18010, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21173,17 +21173,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 18081, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18095, + "commentStart": 0, "elements": [ { - "commentStart": 18096, + "commentStart": 0, "end": 0, "raw": "14.28", "start": 0, @@ -21196,7 +21196,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 18104, + "commentStart": 0, "end": 0, "raw": "10.92", "start": 0, @@ -21207,7 +21207,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 18103, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21224,10 +21224,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 18076, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18076, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21237,7 +21237,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 18076, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21249,17 +21249,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 18138, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18152, + "commentStart": 0, "elements": [ { - "commentStart": 18153, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -21272,7 +21272,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 18161, + "commentStart": 0, "end": 0, "raw": "10.92", "start": 0, @@ -21283,7 +21283,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 18160, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21300,10 +21300,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 18133, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18133, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21313,7 +21313,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 18133, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21325,17 +21325,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 18205, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18219, + "commentStart": 0, "elements": [ { - "commentStart": 18220, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -21348,7 +21348,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 18228, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -21359,7 +21359,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 18227, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21376,10 +21376,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 18200, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18200, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21389,7 +21389,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 18200, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21401,17 +21401,17 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 18271, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18285, + "commentStart": 0, "elements": [ { - "commentStart": 18286, + "commentStart": 0, "end": 0, "raw": "14.28", "start": 0, @@ -21424,7 +21424,7 @@ description: Result of parsing kittycad_svg.kcl }, { "argument": { - "commentStart": 18294, + "commentStart": 0, "end": 0, "raw": "13.44", "start": 0, @@ -21435,7 +21435,7 @@ description: Result of parsing kittycad_svg.kcl "suffix": "None" } }, - "commentStart": 18293, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21452,10 +21452,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 18266, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18266, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21465,7 +21465,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 18266, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21475,7 +21475,7 @@ description: Result of parsing kittycad_svg.kcl { "arguments": [ { - "commentStart": 18339, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -21484,10 +21484,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 18333, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18333, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -21497,7 +21497,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 18333, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -21508,14 +21508,14 @@ description: Result of parsing kittycad_svg.kcl { "type": "LabeledArg", "label": { - "commentStart": 18355, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18364, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -21530,10 +21530,10 @@ description: Result of parsing kittycad_svg.kcl ], "callee": { "abs_path": false, - "commentStart": 18347, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18347, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -21543,7 +21543,7 @@ description: Result of parsing kittycad_svg.kcl "start": 0, "type": "Name" }, - "commentStart": 18347, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21551,13 +21551,13 @@ description: Result of parsing kittycad_svg.kcl "unlabeled": null } ], - "commentStart": 6, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "commentStart": 96, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21570,7 +21570,7 @@ description: Result of parsing kittycad_svg.kcl ], "3": [ { - "commentStart": 151, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21583,7 +21583,7 @@ description: Result of parsing kittycad_svg.kcl ], "4": [ { - "commentStart": 214, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21596,7 +21596,7 @@ description: Result of parsing kittycad_svg.kcl ], "5": [ { - "commentStart": 280, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21609,7 +21609,7 @@ description: Result of parsing kittycad_svg.kcl ], "6": [ { - "commentStart": 341, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21622,7 +21622,7 @@ description: Result of parsing kittycad_svg.kcl ], "7": [ { - "commentStart": 403, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21635,7 +21635,7 @@ description: Result of parsing kittycad_svg.kcl ], "8": [ { - "commentStart": 466, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21648,7 +21648,7 @@ description: Result of parsing kittycad_svg.kcl ], "9": [ { - "commentStart": 531, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21661,7 +21661,7 @@ description: Result of parsing kittycad_svg.kcl ], "10": [ { - "commentStart": 594, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21674,7 +21674,7 @@ description: Result of parsing kittycad_svg.kcl ], "11": [ { - "commentStart": 659, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21687,7 +21687,7 @@ description: Result of parsing kittycad_svg.kcl ], "12": [ { - "commentStart": 722, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21700,7 +21700,7 @@ description: Result of parsing kittycad_svg.kcl ], "13": [ { - "commentStart": 786, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21713,7 +21713,7 @@ description: Result of parsing kittycad_svg.kcl ], "14": [ { - "commentStart": 848, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21726,7 +21726,7 @@ description: Result of parsing kittycad_svg.kcl ], "15": [ { - "commentStart": 913, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21739,7 +21739,7 @@ description: Result of parsing kittycad_svg.kcl ], "16": [ { - "commentStart": 977, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21752,7 +21752,7 @@ description: Result of parsing kittycad_svg.kcl ], "17": [ { - "commentStart": 1042, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21765,7 +21765,7 @@ description: Result of parsing kittycad_svg.kcl ], "18": [ { - "commentStart": 1105, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21778,7 +21778,7 @@ description: Result of parsing kittycad_svg.kcl ], "19": [ { - "commentStart": 1171, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21791,7 +21791,7 @@ description: Result of parsing kittycad_svg.kcl ], "20": [ { - "commentStart": 1236, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21804,7 +21804,7 @@ description: Result of parsing kittycad_svg.kcl ], "21": [ { - "commentStart": 1302, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21817,7 +21817,7 @@ description: Result of parsing kittycad_svg.kcl ], "22": [ { - "commentStart": 1367, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21830,7 +21830,7 @@ description: Result of parsing kittycad_svg.kcl ], "23": [ { - "commentStart": 1433, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21843,7 +21843,7 @@ description: Result of parsing kittycad_svg.kcl ], "24": [ { - "commentStart": 1494, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21856,7 +21856,7 @@ description: Result of parsing kittycad_svg.kcl ], "25": [ { - "commentStart": 1558, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21869,7 +21869,7 @@ description: Result of parsing kittycad_svg.kcl ], "26": [ { - "commentStart": 1624, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21882,7 +21882,7 @@ description: Result of parsing kittycad_svg.kcl ], "27": [ { - "commentStart": 1690, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21895,7 +21895,7 @@ description: Result of parsing kittycad_svg.kcl ], "28": [ { - "commentStart": 1755, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21908,7 +21908,7 @@ description: Result of parsing kittycad_svg.kcl ], "29": [ { - "commentStart": 1822, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21921,7 +21921,7 @@ description: Result of parsing kittycad_svg.kcl ], "30": [ { - "commentStart": 1888, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21934,7 +21934,7 @@ description: Result of parsing kittycad_svg.kcl ], "31": [ { - "commentStart": 1955, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21947,7 +21947,7 @@ description: Result of parsing kittycad_svg.kcl ], "32": [ { - "commentStart": 2020, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21960,7 +21960,7 @@ description: Result of parsing kittycad_svg.kcl ], "33": [ { - "commentStart": 2086, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21973,7 +21973,7 @@ description: Result of parsing kittycad_svg.kcl ], "34": [ { - "commentStart": 2152, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21986,7 +21986,7 @@ description: Result of parsing kittycad_svg.kcl ], "35": [ { - "commentStart": 2219, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -21999,7 +21999,7 @@ description: Result of parsing kittycad_svg.kcl ], "36": [ { - "commentStart": 2283, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22012,7 +22012,7 @@ description: Result of parsing kittycad_svg.kcl ], "37": [ { - "commentStart": 2349, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22025,7 +22025,7 @@ description: Result of parsing kittycad_svg.kcl ], "38": [ { - "commentStart": 2412, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22038,7 +22038,7 @@ description: Result of parsing kittycad_svg.kcl ], "39": [ { - "commentStart": 2477, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22051,7 +22051,7 @@ description: Result of parsing kittycad_svg.kcl ], "40": [ { - "commentStart": 2542, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22064,7 +22064,7 @@ description: Result of parsing kittycad_svg.kcl ], "41": [ { - "commentStart": 2608, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22077,7 +22077,7 @@ description: Result of parsing kittycad_svg.kcl ], "42": [ { - "commentStart": 2672, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22090,7 +22090,7 @@ description: Result of parsing kittycad_svg.kcl ], "43": [ { - "commentStart": 2737, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22103,7 +22103,7 @@ description: Result of parsing kittycad_svg.kcl ], "44": [ { - "commentStart": 2802, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22116,7 +22116,7 @@ description: Result of parsing kittycad_svg.kcl ], "45": [ { - "commentStart": 2868, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22129,7 +22129,7 @@ description: Result of parsing kittycad_svg.kcl ], "46": [ { - "commentStart": 2937, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22142,7 +22142,7 @@ description: Result of parsing kittycad_svg.kcl ], "47": [ { - "commentStart": 2997, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22155,7 +22155,7 @@ description: Result of parsing kittycad_svg.kcl ], "48": [ { - "commentStart": 3062, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22168,7 +22168,7 @@ description: Result of parsing kittycad_svg.kcl ], "49": [ { - "commentStart": 3127, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22181,7 +22181,7 @@ description: Result of parsing kittycad_svg.kcl ], "50": [ { - "commentStart": 3192, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22194,7 +22194,7 @@ description: Result of parsing kittycad_svg.kcl ], "51": [ { - "commentStart": 3259, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22207,7 +22207,7 @@ description: Result of parsing kittycad_svg.kcl ], "52": [ { - "commentStart": 3325, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22220,7 +22220,7 @@ description: Result of parsing kittycad_svg.kcl ], "53": [ { - "commentStart": 3392, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22231,7 +22231,7 @@ description: Result of parsing kittycad_svg.kcl } }, { - "commentStart": 3418, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22244,7 +22244,7 @@ description: Result of parsing kittycad_svg.kcl ], "54": [ { - "commentStart": 3474, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22257,7 +22257,7 @@ description: Result of parsing kittycad_svg.kcl ], "55": [ { - "commentStart": 3530, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22270,7 +22270,7 @@ description: Result of parsing kittycad_svg.kcl ], "56": [ { - "commentStart": 3596, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22283,7 +22283,7 @@ description: Result of parsing kittycad_svg.kcl ], "57": [ { - "commentStart": 3663, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22296,7 +22296,7 @@ description: Result of parsing kittycad_svg.kcl ], "58": [ { - "commentStart": 3728, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22309,7 +22309,7 @@ description: Result of parsing kittycad_svg.kcl ], "59": [ { - "commentStart": 3784, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22322,7 +22322,7 @@ description: Result of parsing kittycad_svg.kcl ], "60": [ { - "commentStart": 3849, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22335,7 +22335,7 @@ description: Result of parsing kittycad_svg.kcl ], "61": [ { - "commentStart": 3915, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22348,7 +22348,7 @@ description: Result of parsing kittycad_svg.kcl ], "62": [ { - "commentStart": 3980, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22361,7 +22361,7 @@ description: Result of parsing kittycad_svg.kcl ], "63": [ { - "commentStart": 4036, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22374,7 +22374,7 @@ description: Result of parsing kittycad_svg.kcl ], "64": [ { - "commentStart": 4101, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22387,7 +22387,7 @@ description: Result of parsing kittycad_svg.kcl ], "65": [ { - "commentStart": 4167, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22400,7 +22400,7 @@ description: Result of parsing kittycad_svg.kcl ], "66": [ { - "commentStart": 4233, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22413,7 +22413,7 @@ description: Result of parsing kittycad_svg.kcl ], "67": [ { - "commentStart": 4290, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22426,7 +22426,7 @@ description: Result of parsing kittycad_svg.kcl ], "68": [ { - "commentStart": 4369, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22439,7 +22439,7 @@ description: Result of parsing kittycad_svg.kcl ], "69": [ { - "commentStart": 4449, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22452,7 +22452,7 @@ description: Result of parsing kittycad_svg.kcl ], "70": [ { - "commentStart": 4514, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22465,7 +22465,7 @@ description: Result of parsing kittycad_svg.kcl ], "71": [ { - "commentStart": 4570, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22478,7 +22478,7 @@ description: Result of parsing kittycad_svg.kcl ], "72": [ { - "commentStart": 4636, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22491,7 +22491,7 @@ description: Result of parsing kittycad_svg.kcl ], "73": [ { - "commentStart": 4703, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22504,7 +22504,7 @@ description: Result of parsing kittycad_svg.kcl ], "74": [ { - "commentStart": 4769, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22517,7 +22517,7 @@ description: Result of parsing kittycad_svg.kcl ], "75": [ { - "commentStart": 4826, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22530,7 +22530,7 @@ description: Result of parsing kittycad_svg.kcl ], "76": [ { - "commentStart": 4892, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22543,7 +22543,7 @@ description: Result of parsing kittycad_svg.kcl ], "77": [ { - "commentStart": 4959, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22556,7 +22556,7 @@ description: Result of parsing kittycad_svg.kcl ], "78": [ { - "commentStart": 5025, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22569,7 +22569,7 @@ description: Result of parsing kittycad_svg.kcl ], "79": [ { - "commentStart": 5082, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22582,7 +22582,7 @@ description: Result of parsing kittycad_svg.kcl ], "80": [ { - "commentStart": 5148, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22595,7 +22595,7 @@ description: Result of parsing kittycad_svg.kcl ], "81": [ { - "commentStart": 5215, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22608,7 +22608,7 @@ description: Result of parsing kittycad_svg.kcl ], "82": [ { - "commentStart": 5280, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22621,7 +22621,7 @@ description: Result of parsing kittycad_svg.kcl ], "83": [ { - "commentStart": 5336, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22634,7 +22634,7 @@ description: Result of parsing kittycad_svg.kcl ], "84": [ { - "commentStart": 5400, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22647,7 +22647,7 @@ description: Result of parsing kittycad_svg.kcl ], "85": [ { - "commentStart": 5465, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22660,7 +22660,7 @@ description: Result of parsing kittycad_svg.kcl ], "86": [ { - "commentStart": 5527, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22673,7 +22673,7 @@ description: Result of parsing kittycad_svg.kcl ], "87": [ { - "commentStart": 5592, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22686,7 +22686,7 @@ description: Result of parsing kittycad_svg.kcl ], "88": [ { - "commentStart": 5655, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22699,7 +22699,7 @@ description: Result of parsing kittycad_svg.kcl ], "89": [ { - "commentStart": 5720, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22712,7 +22712,7 @@ description: Result of parsing kittycad_svg.kcl ], "90": [ { - "commentStart": 5783, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22725,7 +22725,7 @@ description: Result of parsing kittycad_svg.kcl ], "91": [ { - "commentStart": 5848, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22738,7 +22738,7 @@ description: Result of parsing kittycad_svg.kcl ], "92": [ { - "commentStart": 5915, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22751,7 +22751,7 @@ description: Result of parsing kittycad_svg.kcl ], "93": [ { - "commentStart": 5983, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22764,7 +22764,7 @@ description: Result of parsing kittycad_svg.kcl ], "94": [ { - "commentStart": 6046, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22777,7 +22777,7 @@ description: Result of parsing kittycad_svg.kcl ], "95": [ { - "commentStart": 6112, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22790,7 +22790,7 @@ description: Result of parsing kittycad_svg.kcl ], "96": [ { - "commentStart": 6176, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22803,7 +22803,7 @@ description: Result of parsing kittycad_svg.kcl ], "97": [ { - "commentStart": 6242, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22816,7 +22816,7 @@ description: Result of parsing kittycad_svg.kcl ], "98": [ { - "commentStart": 6306, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22829,7 +22829,7 @@ description: Result of parsing kittycad_svg.kcl ], "99": [ { - "commentStart": 6365, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22842,7 +22842,7 @@ description: Result of parsing kittycad_svg.kcl ], "100": [ { - "commentStart": 6435, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22855,7 +22855,7 @@ description: Result of parsing kittycad_svg.kcl ], "101": [ { - "commentStart": 6500, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22868,7 +22868,7 @@ description: Result of parsing kittycad_svg.kcl ], "102": [ { - "commentStart": 6566, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22881,7 +22881,7 @@ description: Result of parsing kittycad_svg.kcl ], "103": [ { - "commentStart": 6624, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22894,7 +22894,7 @@ description: Result of parsing kittycad_svg.kcl ], "104": [ { - "commentStart": 6691, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22907,7 +22907,7 @@ description: Result of parsing kittycad_svg.kcl ], "105": [ { - "commentStart": 6758, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22920,7 +22920,7 @@ description: Result of parsing kittycad_svg.kcl ], "106": [ { - "commentStart": 6823, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22933,7 +22933,7 @@ description: Result of parsing kittycad_svg.kcl ], "107": [ { - "commentStart": 6889, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22946,7 +22946,7 @@ description: Result of parsing kittycad_svg.kcl ], "108": [ { - "commentStart": 6954, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22959,7 +22959,7 @@ description: Result of parsing kittycad_svg.kcl ], "109": [ { - "commentStart": 7021, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22972,7 +22972,7 @@ description: Result of parsing kittycad_svg.kcl ], "110": [ { - "commentStart": 7086, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22985,7 +22985,7 @@ description: Result of parsing kittycad_svg.kcl ], "111": [ { - "commentStart": 7151, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -22998,7 +22998,7 @@ description: Result of parsing kittycad_svg.kcl ], "112": [ { - "commentStart": 7214, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23011,7 +23011,7 @@ description: Result of parsing kittycad_svg.kcl ], "113": [ { - "commentStart": 7293, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23024,7 +23024,7 @@ description: Result of parsing kittycad_svg.kcl ], "114": [ { - "commentStart": 7359, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23037,7 +23037,7 @@ description: Result of parsing kittycad_svg.kcl ], "115": [ { - "commentStart": 7416, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23050,7 +23050,7 @@ description: Result of parsing kittycad_svg.kcl ], "116": [ { - "commentStart": 7482, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23063,7 +23063,7 @@ description: Result of parsing kittycad_svg.kcl ], "117": [ { - "commentStart": 7549, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23076,7 +23076,7 @@ description: Result of parsing kittycad_svg.kcl ], "118": [ { - "commentStart": 7615, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23089,7 +23089,7 @@ description: Result of parsing kittycad_svg.kcl ], "119": [ { - "commentStart": 7681, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23102,7 +23102,7 @@ description: Result of parsing kittycad_svg.kcl ], "120": [ { - "commentStart": 7738, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23115,7 +23115,7 @@ description: Result of parsing kittycad_svg.kcl ], "121": [ { - "commentStart": 7805, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23128,7 +23128,7 @@ description: Result of parsing kittycad_svg.kcl ], "122": [ { - "commentStart": 7871, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23141,7 +23141,7 @@ description: Result of parsing kittycad_svg.kcl ], "123": [ { - "commentStart": 7956, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23154,7 +23154,7 @@ description: Result of parsing kittycad_svg.kcl ], "124": [ { - "commentStart": 8035, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23167,7 +23167,7 @@ description: Result of parsing kittycad_svg.kcl ], "125": [ { - "commentStart": 8102, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23180,7 +23180,7 @@ description: Result of parsing kittycad_svg.kcl ], "126": [ { - "commentStart": 8168, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23193,7 +23193,7 @@ description: Result of parsing kittycad_svg.kcl ], "127": [ { - "commentStart": 8248, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23206,7 +23206,7 @@ description: Result of parsing kittycad_svg.kcl ], "128": [ { - "commentStart": 8327, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23219,7 +23219,7 @@ description: Result of parsing kittycad_svg.kcl ], "129": [ { - "commentStart": 8393, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23232,7 +23232,7 @@ description: Result of parsing kittycad_svg.kcl ], "130": [ { - "commentStart": 8456, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23245,7 +23245,7 @@ description: Result of parsing kittycad_svg.kcl ], "131": [ { - "commentStart": 8522, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23258,7 +23258,7 @@ description: Result of parsing kittycad_svg.kcl ], "132": [ { - "commentStart": 8586, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23271,7 +23271,7 @@ description: Result of parsing kittycad_svg.kcl ], "133": [ { - "commentStart": 8665, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23284,7 +23284,7 @@ description: Result of parsing kittycad_svg.kcl ], "134": [ { - "commentStart": 8743, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23297,7 +23297,7 @@ description: Result of parsing kittycad_svg.kcl ], "135": [ { - "commentStart": 8809, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23310,7 +23310,7 @@ description: Result of parsing kittycad_svg.kcl ], "136": [ { - "commentStart": 8875, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23323,7 +23323,7 @@ description: Result of parsing kittycad_svg.kcl ], "137": [ { - "commentStart": 8942, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23336,7 +23336,7 @@ description: Result of parsing kittycad_svg.kcl ], "138": [ { - "commentStart": 9006, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23349,7 +23349,7 @@ description: Result of parsing kittycad_svg.kcl ], "139": [ { - "commentStart": 9071, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23362,7 +23362,7 @@ description: Result of parsing kittycad_svg.kcl ], "140": [ { - "commentStart": 9127, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23375,7 +23375,7 @@ description: Result of parsing kittycad_svg.kcl ], "141": [ { - "commentStart": 9191, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23388,7 +23388,7 @@ description: Result of parsing kittycad_svg.kcl ], "142": [ { - "commentStart": 9256, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23401,7 +23401,7 @@ description: Result of parsing kittycad_svg.kcl ], "143": [ { - "commentStart": 9318, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23414,7 +23414,7 @@ description: Result of parsing kittycad_svg.kcl ], "144": [ { - "commentStart": 9383, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23427,7 +23427,7 @@ description: Result of parsing kittycad_svg.kcl ], "145": [ { - "commentStart": 9448, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23440,7 +23440,7 @@ description: Result of parsing kittycad_svg.kcl ], "146": [ { - "commentStart": 9514, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23453,7 +23453,7 @@ description: Result of parsing kittycad_svg.kcl ], "147": [ { - "commentStart": 9593, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23466,7 +23466,7 @@ description: Result of parsing kittycad_svg.kcl ], "148": [ { - "commentStart": 9673, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23479,7 +23479,7 @@ description: Result of parsing kittycad_svg.kcl ], "149": [ { - "commentStart": 9737, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23492,7 +23492,7 @@ description: Result of parsing kittycad_svg.kcl ], "150": [ { - "commentStart": 9801, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23505,7 +23505,7 @@ description: Result of parsing kittycad_svg.kcl ], "151": [ { - "commentStart": 9865, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23518,7 +23518,7 @@ description: Result of parsing kittycad_svg.kcl ], "152": [ { - "commentStart": 9920, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23531,7 +23531,7 @@ description: Result of parsing kittycad_svg.kcl ], "153": [ { - "commentStart": 9982, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23544,7 +23544,7 @@ description: Result of parsing kittycad_svg.kcl ], "154": [ { - "commentStart": 10046, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23557,7 +23557,7 @@ description: Result of parsing kittycad_svg.kcl ], "155": [ { - "commentStart": 10109, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23570,7 +23570,7 @@ description: Result of parsing kittycad_svg.kcl ], "156": [ { - "commentStart": 10174, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23583,7 +23583,7 @@ description: Result of parsing kittycad_svg.kcl ], "157": [ { - "commentStart": 10237, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23596,7 +23596,7 @@ description: Result of parsing kittycad_svg.kcl ], "158": [ { - "commentStart": 10308, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23609,7 +23609,7 @@ description: Result of parsing kittycad_svg.kcl ], "159": [ { - "commentStart": 10377, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23622,7 +23622,7 @@ description: Result of parsing kittycad_svg.kcl ], "160": [ { - "commentStart": 10442, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23635,7 +23635,7 @@ description: Result of parsing kittycad_svg.kcl ], "161": [ { - "commentStart": 10505, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23648,7 +23648,7 @@ description: Result of parsing kittycad_svg.kcl ], "162": [ { - "commentStart": 10570, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23661,7 +23661,7 @@ description: Result of parsing kittycad_svg.kcl ], "163": [ { - "commentStart": 10632, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23674,7 +23674,7 @@ description: Result of parsing kittycad_svg.kcl ], "164": [ { - "commentStart": 10696, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23687,7 +23687,7 @@ description: Result of parsing kittycad_svg.kcl ], "165": [ { - "commentStart": 10760, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23700,7 +23700,7 @@ description: Result of parsing kittycad_svg.kcl ], "166": [ { - "commentStart": 10825, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23713,7 +23713,7 @@ description: Result of parsing kittycad_svg.kcl ], "167": [ { - "commentStart": 10890, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23726,7 +23726,7 @@ description: Result of parsing kittycad_svg.kcl ], "168": [ { - "commentStart": 10946, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23739,7 +23739,7 @@ description: Result of parsing kittycad_svg.kcl ], "169": [ { - "commentStart": 11010, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23752,7 +23752,7 @@ description: Result of parsing kittycad_svg.kcl ], "170": [ { - "commentStart": 11076, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23765,7 +23765,7 @@ description: Result of parsing kittycad_svg.kcl ], "171": [ { - "commentStart": 11139, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23778,7 +23778,7 @@ description: Result of parsing kittycad_svg.kcl ], "172": [ { - "commentStart": 11204, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23791,7 +23791,7 @@ description: Result of parsing kittycad_svg.kcl ], "173": [ { - "commentStart": 11268, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23804,7 +23804,7 @@ description: Result of parsing kittycad_svg.kcl ], "174": [ { - "commentStart": 11334, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23817,7 +23817,7 @@ description: Result of parsing kittycad_svg.kcl ], "175": [ { - "commentStart": 11398, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23830,7 +23830,7 @@ description: Result of parsing kittycad_svg.kcl ], "176": [ { - "commentStart": 11470, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23843,7 +23843,7 @@ description: Result of parsing kittycad_svg.kcl ], "177": [ { - "commentStart": 11540, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23856,7 +23856,7 @@ description: Result of parsing kittycad_svg.kcl ], "178": [ { - "commentStart": 11606, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23869,7 +23869,7 @@ description: Result of parsing kittycad_svg.kcl ], "179": [ { - "commentStart": 11683, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23882,7 +23882,7 @@ description: Result of parsing kittycad_svg.kcl ], "180": [ { - "commentStart": 11762, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23895,7 +23895,7 @@ description: Result of parsing kittycad_svg.kcl ], "181": [ { - "commentStart": 11826, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23908,7 +23908,7 @@ description: Result of parsing kittycad_svg.kcl ], "182": [ { - "commentStart": 11891, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23921,7 +23921,7 @@ description: Result of parsing kittycad_svg.kcl ], "183": [ { - "commentStart": 11956, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23934,7 +23934,7 @@ description: Result of parsing kittycad_svg.kcl ], "184": [ { - "commentStart": 12009, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23947,7 +23947,7 @@ description: Result of parsing kittycad_svg.kcl ], "185": [ { - "commentStart": 12083, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23960,7 +23960,7 @@ description: Result of parsing kittycad_svg.kcl ], "186": [ { - "commentStart": 12162, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23973,7 +23973,7 @@ description: Result of parsing kittycad_svg.kcl ], "187": [ { - "commentStart": 12226, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23986,7 +23986,7 @@ description: Result of parsing kittycad_svg.kcl ], "188": [ { - "commentStart": 12291, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -23999,7 +23999,7 @@ description: Result of parsing kittycad_svg.kcl ], "189": [ { - "commentStart": 12356, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24012,7 +24012,7 @@ description: Result of parsing kittycad_svg.kcl ], "190": [ { - "commentStart": 12422, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24025,7 +24025,7 @@ description: Result of parsing kittycad_svg.kcl ], "191": [ { - "commentStart": 12485, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24038,7 +24038,7 @@ description: Result of parsing kittycad_svg.kcl ], "192": [ { - "commentStart": 12550, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24051,7 +24051,7 @@ description: Result of parsing kittycad_svg.kcl ], "193": [ { - "commentStart": 12614, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24064,7 +24064,7 @@ description: Result of parsing kittycad_svg.kcl ], "194": [ { - "commentStart": 12680, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24077,7 +24077,7 @@ description: Result of parsing kittycad_svg.kcl ], "195": [ { - "commentStart": 12744, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24090,7 +24090,7 @@ description: Result of parsing kittycad_svg.kcl ], "196": [ { - "commentStart": 12816, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24103,7 +24103,7 @@ description: Result of parsing kittycad_svg.kcl ], "197": [ { - "commentStart": 12886, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24116,7 +24116,7 @@ description: Result of parsing kittycad_svg.kcl ], "198": [ { - "commentStart": 12952, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24129,7 +24129,7 @@ description: Result of parsing kittycad_svg.kcl ], "199": [ { - "commentStart": 13016, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24142,7 +24142,7 @@ description: Result of parsing kittycad_svg.kcl ], "200": [ { - "commentStart": 13082, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24155,7 +24155,7 @@ description: Result of parsing kittycad_svg.kcl ], "201": [ { - "commentStart": 13145, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24168,7 +24168,7 @@ description: Result of parsing kittycad_svg.kcl ], "202": [ { - "commentStart": 13210, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24181,7 +24181,7 @@ description: Result of parsing kittycad_svg.kcl ], "203": [ { - "commentStart": 13274, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24194,7 +24194,7 @@ description: Result of parsing kittycad_svg.kcl ], "204": [ { - "commentStart": 13340, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24207,7 +24207,7 @@ description: Result of parsing kittycad_svg.kcl ], "205": [ { - "commentStart": 13403, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24220,7 +24220,7 @@ description: Result of parsing kittycad_svg.kcl ], "206": [ { - "commentStart": 13468, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24233,7 +24233,7 @@ description: Result of parsing kittycad_svg.kcl ], "207": [ { - "commentStart": 13531, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24246,7 +24246,7 @@ description: Result of parsing kittycad_svg.kcl ], "208": [ { - "commentStart": 13583, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24259,7 +24259,7 @@ description: Result of parsing kittycad_svg.kcl ], "209": [ { - "commentStart": 13643, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24272,7 +24272,7 @@ description: Result of parsing kittycad_svg.kcl ], "210": [ { - "commentStart": 13708, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24285,7 +24285,7 @@ description: Result of parsing kittycad_svg.kcl ], "211": [ { - "commentStart": 13770, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24298,7 +24298,7 @@ description: Result of parsing kittycad_svg.kcl ], "212": [ { - "commentStart": 13834, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24311,7 +24311,7 @@ description: Result of parsing kittycad_svg.kcl ], "213": [ { - "commentStart": 13897, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24324,7 +24324,7 @@ description: Result of parsing kittycad_svg.kcl ], "214": [ { - "commentStart": 13962, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24337,7 +24337,7 @@ description: Result of parsing kittycad_svg.kcl ], "215": [ { - "commentStart": 14024, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24350,7 +24350,7 @@ description: Result of parsing kittycad_svg.kcl ], "216": [ { - "commentStart": 14088, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24363,7 +24363,7 @@ description: Result of parsing kittycad_svg.kcl ], "217": [ { - "commentStart": 14151, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24376,7 +24376,7 @@ description: Result of parsing kittycad_svg.kcl ], "218": [ { - "commentStart": 14216, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24389,7 +24389,7 @@ description: Result of parsing kittycad_svg.kcl ], "219": [ { - "commentStart": 14279, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24402,7 +24402,7 @@ description: Result of parsing kittycad_svg.kcl ], "220": [ { - "commentStart": 14350, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24415,7 +24415,7 @@ description: Result of parsing kittycad_svg.kcl ], "221": [ { - "commentStart": 14419, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24428,7 +24428,7 @@ description: Result of parsing kittycad_svg.kcl ], "222": [ { - "commentStart": 14484, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24441,7 +24441,7 @@ description: Result of parsing kittycad_svg.kcl ], "223": [ { - "commentStart": 14547, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24454,7 +24454,7 @@ description: Result of parsing kittycad_svg.kcl ], "224": [ { - "commentStart": 14612, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24467,7 +24467,7 @@ description: Result of parsing kittycad_svg.kcl ], "225": [ { - "commentStart": 14674, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24480,7 +24480,7 @@ description: Result of parsing kittycad_svg.kcl ], "226": [ { - "commentStart": 14738, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24493,7 +24493,7 @@ description: Result of parsing kittycad_svg.kcl ], "227": [ { - "commentStart": 14801, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24506,7 +24506,7 @@ description: Result of parsing kittycad_svg.kcl ], "228": [ { - "commentStart": 14866, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24519,7 +24519,7 @@ description: Result of parsing kittycad_svg.kcl ], "229": [ { - "commentStart": 14928, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24532,7 +24532,7 @@ description: Result of parsing kittycad_svg.kcl ], "230": [ { - "commentStart": 14992, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24545,7 +24545,7 @@ description: Result of parsing kittycad_svg.kcl ], "231": [ { - "commentStart": 15056, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24558,7 +24558,7 @@ description: Result of parsing kittycad_svg.kcl ], "232": [ { - "commentStart": 15112, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24571,7 +24571,7 @@ description: Result of parsing kittycad_svg.kcl ], "233": [ { - "commentStart": 15176, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24584,7 +24584,7 @@ description: Result of parsing kittycad_svg.kcl ], "234": [ { - "commentStart": 15241, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24597,7 +24597,7 @@ description: Result of parsing kittycad_svg.kcl ], "235": [ { - "commentStart": 15304, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24610,7 +24610,7 @@ description: Result of parsing kittycad_svg.kcl ], "236": [ { - "commentStart": 15370, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24623,7 +24623,7 @@ description: Result of parsing kittycad_svg.kcl ], "237": [ { - "commentStart": 15448, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24636,7 +24636,7 @@ description: Result of parsing kittycad_svg.kcl ], "238": [ { - "commentStart": 15527, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24649,7 +24649,7 @@ description: Result of parsing kittycad_svg.kcl ], "239": [ { - "commentStart": 15591, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24662,7 +24662,7 @@ description: Result of parsing kittycad_svg.kcl ], "240": [ { - "commentStart": 15645, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24675,7 +24675,7 @@ description: Result of parsing kittycad_svg.kcl ], "241": [ { - "commentStart": 15707, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24688,7 +24688,7 @@ description: Result of parsing kittycad_svg.kcl ], "242": [ { - "commentStart": 15772, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24701,7 +24701,7 @@ description: Result of parsing kittycad_svg.kcl ], "243": [ { - "commentStart": 15835, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24714,7 +24714,7 @@ description: Result of parsing kittycad_svg.kcl ], "244": [ { - "commentStart": 15900, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24727,7 +24727,7 @@ description: Result of parsing kittycad_svg.kcl ], "245": [ { - "commentStart": 15963, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24740,7 +24740,7 @@ description: Result of parsing kittycad_svg.kcl ], "246": [ { - "commentStart": 16028, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24753,7 +24753,7 @@ description: Result of parsing kittycad_svg.kcl ], "247": [ { - "commentStart": 16092, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24766,7 +24766,7 @@ description: Result of parsing kittycad_svg.kcl ], "248": [ { - "commentStart": 16148, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24779,7 +24779,7 @@ description: Result of parsing kittycad_svg.kcl ], "249": [ { - "commentStart": 16211, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24792,7 +24792,7 @@ description: Result of parsing kittycad_svg.kcl ], "250": [ { - "commentStart": 16275, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24805,7 +24805,7 @@ description: Result of parsing kittycad_svg.kcl ], "251": [ { - "commentStart": 16338, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24818,7 +24818,7 @@ description: Result of parsing kittycad_svg.kcl ], "252": [ { - "commentStart": 16404, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24831,7 +24831,7 @@ description: Result of parsing kittycad_svg.kcl ], "253": [ { - "commentStart": 16469, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24844,7 +24844,7 @@ description: Result of parsing kittycad_svg.kcl ], "254": [ { - "commentStart": 16535, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24857,7 +24857,7 @@ description: Result of parsing kittycad_svg.kcl ], "255": [ { - "commentStart": 16599, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24870,7 +24870,7 @@ description: Result of parsing kittycad_svg.kcl ], "256": [ { - "commentStart": 16654, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24883,7 +24883,7 @@ description: Result of parsing kittycad_svg.kcl ], "257": [ { - "commentStart": 16717, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24896,7 +24896,7 @@ description: Result of parsing kittycad_svg.kcl ], "258": [ { - "commentStart": 16782, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24909,7 +24909,7 @@ description: Result of parsing kittycad_svg.kcl ], "259": [ { - "commentStart": 16845, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24922,7 +24922,7 @@ description: Result of parsing kittycad_svg.kcl ], "260": [ { - "commentStart": 16909, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24935,7 +24935,7 @@ description: Result of parsing kittycad_svg.kcl ], "261": [ { - "commentStart": 16970, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24948,7 +24948,7 @@ description: Result of parsing kittycad_svg.kcl ], "262": [ { - "commentStart": 17034, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24961,7 +24961,7 @@ description: Result of parsing kittycad_svg.kcl ], "263": [ { - "commentStart": 17096, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24974,7 +24974,7 @@ description: Result of parsing kittycad_svg.kcl ], "264": [ { - "commentStart": 17150, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -24987,7 +24987,7 @@ description: Result of parsing kittycad_svg.kcl ], "265": [ { - "commentStart": 17215, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25000,7 +25000,7 @@ description: Result of parsing kittycad_svg.kcl ], "266": [ { - "commentStart": 17280, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25013,7 +25013,7 @@ description: Result of parsing kittycad_svg.kcl ], "267": [ { - "commentStart": 17346, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25026,7 +25026,7 @@ description: Result of parsing kittycad_svg.kcl ], "268": [ { - "commentStart": 17409, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25039,7 +25039,7 @@ description: Result of parsing kittycad_svg.kcl ], "269": [ { - "commentStart": 17474, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25052,7 +25052,7 @@ description: Result of parsing kittycad_svg.kcl ], "270": [ { - "commentStart": 17536, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25065,7 +25065,7 @@ description: Result of parsing kittycad_svg.kcl ], "271": [ { - "commentStart": 17601, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25078,7 +25078,7 @@ description: Result of parsing kittycad_svg.kcl ], "272": [ { - "commentStart": 17655, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25091,7 +25091,7 @@ description: Result of parsing kittycad_svg.kcl ], "273": [ { - "commentStart": 17720, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25104,7 +25104,7 @@ description: Result of parsing kittycad_svg.kcl ], "274": [ { - "commentStart": 17784, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25117,7 +25117,7 @@ description: Result of parsing kittycad_svg.kcl ], "275": [ { - "commentStart": 17850, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25130,7 +25130,7 @@ description: Result of parsing kittycad_svg.kcl ], "276": [ { - "commentStart": 17914, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25143,7 +25143,7 @@ description: Result of parsing kittycad_svg.kcl ], "277": [ { - "commentStart": 17980, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25156,7 +25156,7 @@ description: Result of parsing kittycad_svg.kcl ], "278": [ { - "commentStart": 18044, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25169,7 +25169,7 @@ description: Result of parsing kittycad_svg.kcl ], "279": [ { - "commentStart": 18111, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25182,7 +25182,7 @@ description: Result of parsing kittycad_svg.kcl ], "280": [ { - "commentStart": 18168, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25195,7 +25195,7 @@ description: Result of parsing kittycad_svg.kcl ], "281": [ { - "commentStart": 18235, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -25208,7 +25208,7 @@ description: Result of parsing kittycad_svg.kcl ], "282": [ { - "commentStart": 18301, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kittycad_svg/ops.snap b/rust/kcl-lib/tests/kittycad_svg/ops.snap index 67a3bfb53..c33a24f64 100644 --- a/rust/kcl-lib/tests/kittycad_svg/ops.snap +++ b/rust/kcl-lib/tests/kittycad_svg/ops.snap @@ -5,7 +5,7 @@ description: Operations executed kittycad_svg.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/kittycad_svg/program_memory.snap b/rust/kcl-lib/tests/kittycad_svg/program_memory.snap index 5db6ce745..967e0ad4a 100644 --- a/rust/kcl-lib/tests/kittycad_svg/program_memory.snap +++ b/rust/kcl-lib/tests/kittycad_svg/program_memory.snap @@ -7349,22 +7349,34 @@ description: Variables in memory after executing kittycad_svg.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/kw_fn/ast.snap b/rust/kcl-lib/tests/kw_fn/ast.snap index eecb77425..b15dfaf7e 100644 --- a/rust/kcl-lib/tests/kw_fn/ast.snap +++ b/rust/kcl-lib/tests/kw_fn/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing kw_fn.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "increment", "start": 0, @@ -22,14 +22,14 @@ description: Result of parsing kw_fn.kcl "body": [ { "argument": { - "commentStart": 28, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 28, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -42,7 +42,7 @@ description: Result of parsing kw_fn.kcl }, "operator": "+", "right": { - "commentStart": 32, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -57,24 +57,24 @@ description: Result of parsing kw_fn.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 21, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 17, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 12, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 14, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -97,12 +97,12 @@ description: Result of parsing kw_fn.kcl "type": "VariableDeclaration" }, { - "commentStart": 35, + "commentStart": 0, "declaration": { - "commentStart": 40, + "commentStart": 0, "end": 0, "id": { - "commentStart": 40, + "commentStart": 0, "end": 0, "name": "add", "start": 0, @@ -113,14 +113,14 @@ description: Result of parsing kw_fn.kcl "body": [ { "argument": { - "commentStart": 66, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 66, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -134,10 +134,10 @@ description: Result of parsing kw_fn.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 70, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70, + "commentStart": 0, "end": 0, "name": "delta", "start": 0, @@ -152,24 +152,24 @@ description: Result of parsing kw_fn.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 59, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 55, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 43, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 45, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -180,7 +180,7 @@ description: Result of parsing kw_fn.kcl { "type": "Parameter", "identifier": { - "commentStart": 48, + "commentStart": 0, "end": 0, "name": "delta", "start": 0, @@ -202,12 +202,12 @@ description: Result of parsing kw_fn.kcl "type": "VariableDeclaration" }, { - "commentStart": 77, + "commentStart": 0, "declaration": { - "commentStart": 79, + "commentStart": 0, "end": 0, "id": { - "commentStart": 79, + "commentStart": 0, "end": 0, "name": "two", "start": 0, @@ -216,7 +216,7 @@ description: Result of parsing kw_fn.kcl "init": { "arguments": [ { - "commentStart": 95, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -230,10 +230,10 @@ description: Result of parsing kw_fn.kcl ], "callee": { "abs_path": false, - "commentStart": 85, + "commentStart": 0, "end": 0, "name": { - "commentStart": 85, + "commentStart": 0, "end": 0, "name": "increment", "start": 0, @@ -243,7 +243,7 @@ description: Result of parsing kw_fn.kcl "start": 0, "type": "Name" }, - "commentStart": 85, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -259,12 +259,12 @@ description: Result of parsing kw_fn.kcl "type": "VariableDeclaration" }, { - "commentStart": 98, + "commentStart": 0, "declaration": { - "commentStart": 98, + "commentStart": 0, "end": 0, "id": { - "commentStart": 98, + "commentStart": 0, "end": 0, "name": "three", "start": 0, @@ -275,14 +275,14 @@ description: Result of parsing kw_fn.kcl { "type": "LabeledArg", "label": { - "commentStart": 113, + "commentStart": 0, "end": 0, "name": "delta", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 121, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -297,10 +297,10 @@ description: Result of parsing kw_fn.kcl ], "callee": { "abs_path": false, - "commentStart": 106, + "commentStart": 0, "end": 0, "name": { - "commentStart": 106, + "commentStart": 0, "end": 0, "name": "add", "start": 0, @@ -310,13 +310,13 @@ description: Result of parsing kw_fn.kcl "start": 0, "type": "Name" }, - "commentStart": 106, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 110, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -344,7 +344,7 @@ description: Result of parsing kw_fn.kcl "nonCodeNodes": { "0": [ { - "commentStart": 35, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -355,7 +355,7 @@ description: Result of parsing kw_fn.kcl ], "1": [ { - "commentStart": 77, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kw_fn_too_few_args/ast.snap b/rust/kcl-lib/tests/kw_fn_too_few_args/ast.snap index a7a2b8dbb..cb8ef299b 100644 --- a/rust/kcl-lib/tests/kw_fn_too_few_args/ast.snap +++ b/rust/kcl-lib/tests/kw_fn_too_few_args/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing kw_fn_too_few_args.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "add", "start": 0, @@ -22,14 +22,14 @@ description: Result of parsing kw_fn_too_few_args.kcl "body": [ { "argument": { - "commentStart": 24, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 24, + "commentStart": 0, "end": 0, "name": { - "commentStart": 24, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -43,10 +43,10 @@ description: Result of parsing kw_fn_too_few_args.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 28, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -61,24 +61,24 @@ description: Result of parsing kw_fn_too_few_args.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 17, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 13, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 6, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 7, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing kw_fn_too_few_args.kcl { "type": "Parameter", "identifier": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -110,12 +110,12 @@ description: Result of parsing kw_fn_too_few_args.kcl "type": "VariableDeclaration" }, { - "commentStart": 31, + "commentStart": 0, "declaration": { - "commentStart": 33, + "commentStart": 0, "end": 0, "id": { - "commentStart": 33, + "commentStart": 0, "end": 0, "name": "three", "start": 0, @@ -126,14 +126,14 @@ description: Result of parsing kw_fn_too_few_args.kcl { "type": "LabeledArg", "label": { - "commentStart": 45, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 49, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -148,10 +148,10 @@ description: Result of parsing kw_fn_too_few_args.kcl ], "callee": { "abs_path": false, - "commentStart": 41, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41, + "commentStart": 0, "end": 0, "name": "add", "start": 0, @@ -161,7 +161,7 @@ description: Result of parsing kw_fn_too_few_args.kcl "start": 0, "type": "Name" }, - "commentStart": 41, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -184,7 +184,7 @@ description: Result of parsing kw_fn_too_few_args.kcl "nonCodeNodes": { "0": [ { - "commentStart": 31, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kw_fn_unlabeled_but_has_label/ast.snap b/rust/kcl-lib/tests/kw_fn_unlabeled_but_has_label/ast.snap index b7efecee2..87a13065d 100644 --- a/rust/kcl-lib/tests/kw_fn_unlabeled_but_has_label/ast.snap +++ b/rust/kcl-lib/tests/kw_fn_unlabeled_but_has_label/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing kw_fn_unlabeled_but_has_label.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "add", "start": 0, @@ -22,14 +22,14 @@ description: Result of parsing kw_fn_unlabeled_but_has_label.kcl "body": [ { "argument": { - "commentStart": 22, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 22, + "commentStart": 0, "end": 0, "name": { - "commentStart": 22, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -42,7 +42,7 @@ description: Result of parsing kw_fn_unlabeled_but_has_label.kcl }, "operator": "+", "right": { - "commentStart": 26, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -57,24 +57,24 @@ description: Result of parsing kw_fn_unlabeled_but_has_label.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 15, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 11, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 6, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 8, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -97,12 +97,12 @@ description: Result of parsing kw_fn_unlabeled_but_has_label.kcl "type": "VariableDeclaration" }, { - "commentStart": 29, + "commentStart": 0, "declaration": { - "commentStart": 31, + "commentStart": 0, "end": 0, "id": { - "commentStart": 31, + "commentStart": 0, "end": 0, "name": "two", "start": 0, @@ -113,14 +113,14 @@ description: Result of parsing kw_fn_unlabeled_but_has_label.kcl { "type": "LabeledArg", "label": { - "commentStart": 41, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 45, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -135,10 +135,10 @@ description: Result of parsing kw_fn_unlabeled_but_has_label.kcl ], "callee": { "abs_path": false, - "commentStart": 37, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37, + "commentStart": 0, "end": 0, "name": "add", "start": 0, @@ -148,7 +148,7 @@ description: Result of parsing kw_fn_unlabeled_but_has_label.kcl "start": 0, "type": "Name" }, - "commentStart": 37, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -171,7 +171,7 @@ description: Result of parsing kw_fn_unlabeled_but_has_label.kcl "nonCodeNodes": { "0": [ { - "commentStart": 29, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/kw_fn_with_defaults/ast.snap b/rust/kcl-lib/tests/kw_fn_with_defaults/ast.snap index 2e0646fc7..6957782ea 100644 --- a/rust/kcl-lib/tests/kw_fn_with_defaults/ast.snap +++ b/rust/kcl-lib/tests/kw_fn_with_defaults/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing kw_fn_with_defaults.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "increment", "start": 0, @@ -22,14 +22,14 @@ description: Result of parsing kw_fn_with_defaults.kcl "body": [ { "argument": { - "commentStart": 37, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 37, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -43,10 +43,10 @@ description: Result of parsing kw_fn_with_defaults.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 41, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41, + "commentStart": 0, "end": 0, "name": "by", "start": 0, @@ -61,24 +61,24 @@ description: Result of parsing kw_fn_with_defaults.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 30, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 26, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 12, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 14, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -89,14 +89,14 @@ description: Result of parsing kw_fn_with_defaults.kcl { "type": "Parameter", "identifier": { - "commentStart": 17, + "commentStart": 0, "end": 0, "name": "by", "start": 0, "type": "Identifier" }, "default_value": { - "commentStart": 23, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -123,12 +123,12 @@ description: Result of parsing kw_fn_with_defaults.kcl "type": "VariableDeclaration" }, { - "commentStart": 45, + "commentStart": 0, "declaration": { - "commentStart": 47, + "commentStart": 0, "end": 0, "id": { - "commentStart": 47, + "commentStart": 0, "end": 0, "name": "two", "start": 0, @@ -137,7 +137,7 @@ description: Result of parsing kw_fn_with_defaults.kcl "init": { "arguments": [ { - "commentStart": 63, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -151,10 +151,10 @@ description: Result of parsing kw_fn_with_defaults.kcl ], "callee": { "abs_path": false, - "commentStart": 53, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53, + "commentStart": 0, "end": 0, "name": "increment", "start": 0, @@ -164,7 +164,7 @@ description: Result of parsing kw_fn_with_defaults.kcl "start": 0, "type": "Name" }, - "commentStart": 53, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -180,12 +180,12 @@ description: Result of parsing kw_fn_with_defaults.kcl "type": "VariableDeclaration" }, { - "commentStart": 66, + "commentStart": 0, "declaration": { - "commentStart": 66, + "commentStart": 0, "end": 0, "id": { - "commentStart": 66, + "commentStart": 0, "end": 0, "name": "twentyOne", "start": 0, @@ -196,14 +196,14 @@ description: Result of parsing kw_fn_with_defaults.kcl { "type": "LabeledArg", "label": { - "commentStart": 91, + "commentStart": 0, "end": 0, "name": "by", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 96, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -218,10 +218,10 @@ description: Result of parsing kw_fn_with_defaults.kcl ], "callee": { "abs_path": false, - "commentStart": 78, + "commentStart": 0, "end": 0, "name": { - "commentStart": 78, + "commentStart": 0, "end": 0, "name": "increment", "start": 0, @@ -231,13 +231,13 @@ description: Result of parsing kw_fn_with_defaults.kcl "start": 0, "type": "Name" }, - "commentStart": 78, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 88, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -265,7 +265,7 @@ description: Result of parsing kw_fn_with_defaults.kcl "nonCodeNodes": { "0": [ { - "commentStart": 45, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/linear_pattern3d_a_pattern/artifact_commands.snap b/rust/kcl-lib/tests/linear_pattern3d_a_pattern/artifact_commands.snap index 071dc3c37..d2751ee46 100644 --- a/rust/kcl-lib/tests/linear_pattern3d_a_pattern/artifact_commands.snap +++ b/rust/kcl-lib/tests/linear_pattern3d_a_pattern/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands linear_pattern3d_a_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/linear_pattern3d_a_pattern/ast.snap b/rust/kcl-lib/tests/linear_pattern3d_a_pattern/ast.snap index f9c619d27..03e30709c 100644 --- a/rust/kcl-lib/tests/linear_pattern3d_a_pattern/ast.snap +++ b/rust/kcl-lib/tests/linear_pattern3d_a_pattern/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl { "arguments": [ { - "commentStart": 30, + "commentStart": 0, "end": 0, "raw": "'XZ'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 16, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 16, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl { "arguments": [ { - "commentStart": 56, + "commentStart": 0, "elements": [ { - "commentStart": 57, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl } }, { - "commentStart": 60, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl "type": "ArrayExpression" }, { - "commentStart": 64, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 41, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 41, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +121,17 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 77, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 83, + "commentStart": 0, "elements": [ { - "commentStart": 84, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -143,7 +143,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl } }, { - "commentStart": 87, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -164,10 +164,10 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 72, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -177,7 +177,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 72, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -189,17 +189,17 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 101, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 107, + "commentStart": 0, "elements": [ { - "commentStart": 108, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -211,7 +211,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl } }, { - "commentStart": 111, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -232,10 +232,10 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 96, + "commentStart": 0, "end": 0, "name": { - "commentStart": 96, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -245,7 +245,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 96, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -257,17 +257,17 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 125, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 131, + "commentStart": 0, "elements": [ { - "commentStart": 132, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -280,7 +280,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl }, { "argument": { - "commentStart": 136, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -291,7 +291,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl "suffix": "None" } }, - "commentStart": 135, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -308,10 +308,10 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 120, + "commentStart": 0, "end": 0, "name": { - "commentStart": 120, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -321,7 +321,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 120, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -331,7 +331,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl { "arguments": [ { - "commentStart": 151, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -340,10 +340,10 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 145, + "commentStart": 0, "end": 0, "name": { - "commentStart": 145, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -353,7 +353,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 145, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -364,14 +364,14 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 167, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 176, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -386,10 +386,10 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 159, + "commentStart": 0, "end": 0, "name": { - "commentStart": 159, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -399,7 +399,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 159, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -407,7 +407,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl "unlabeled": null } ], - "commentStart": 16, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -423,12 +423,12 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl "type": "VariableDeclaration" }, { - "commentStart": 178, + "commentStart": 0, "declaration": { - "commentStart": 180, + "commentStart": 0, "end": 0, "id": { - "commentStart": 180, + "commentStart": 0, "end": 0, "name": "pattn1", "start": 0, @@ -439,17 +439,17 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 225, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 232, + "commentStart": 0, "elements": [ { - "commentStart": 233, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -461,7 +461,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl } }, { - "commentStart": 236, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -473,7 +473,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl } }, { - "commentStart": 239, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -494,14 +494,14 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 245, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 257, + "commentStart": 0, "end": 0, "raw": "7", "start": 0, @@ -516,14 +516,14 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 262, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 273, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -538,10 +538,10 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 189, + "commentStart": 0, "end": 0, "name": { - "commentStart": 189, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -551,17 +551,17 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 189, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 208, + "commentStart": 0, "end": 0, "name": { - "commentStart": 208, + "commentStart": 0, "end": 0, "name": "exampleSketch", "start": 0, @@ -583,12 +583,12 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl "type": "VariableDeclaration" }, { - "commentStart": 277, + "commentStart": 0, "declaration": { - "commentStart": 279, + "commentStart": 0, "end": 0, "id": { - "commentStart": 279, + "commentStart": 0, "end": 0, "name": "pattn2", "start": 0, @@ -599,17 +599,17 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 317, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 324, + "commentStart": 0, "elements": [ { - "commentStart": 325, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -621,7 +621,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl } }, { - "commentStart": 328, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -633,7 +633,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl } }, { - "commentStart": 331, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -654,14 +654,14 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 337, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 348, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -676,14 +676,14 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 353, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 365, + "commentStart": 0, "end": 0, "raw": "7", "start": 0, @@ -698,10 +698,10 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 288, + "commentStart": 0, "end": 0, "name": { - "commentStart": 288, + "commentStart": 0, "end": 0, "name": "patternLinear3d", "start": 0, @@ -711,17 +711,17 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 288, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 307, + "commentStart": 0, "end": 0, "name": { - "commentStart": 307, + "commentStart": 0, "end": 0, "name": "pattn1", "start": 0, @@ -749,7 +749,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl "nonCodeNodes": { "0": [ { - "commentStart": 178, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -760,7 +760,7 @@ description: Result of parsing linear_pattern3d_a_pattern.kcl ], "1": [ { - "commentStart": 277, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/linear_pattern3d_a_pattern/ops.snap b/rust/kcl-lib/tests/linear_pattern3d_a_pattern/ops.snap index 023666a35..5ef7bbaa6 100644 --- a/rust/kcl-lib/tests/linear_pattern3d_a_pattern/ops.snap +++ b/rust/kcl-lib/tests/linear_pattern3d_a_pattern/ops.snap @@ -5,7 +5,7 @@ description: Operations executed linear_pattern3d_a_pattern.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XZ" diff --git a/rust/kcl-lib/tests/linear_pattern3d_a_pattern/program_memory.snap b/rust/kcl-lib/tests/linear_pattern3d_a_pattern/program_memory.snap index c4e1bd709..6e0438086 100644 --- a/rust/kcl-lib/tests/linear_pattern3d_a_pattern/program_memory.snap +++ b/rust/kcl-lib/tests/linear_pattern3d_a_pattern/program_memory.snap @@ -128,22 +128,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -309,22 +321,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -487,22 +511,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -665,22 +701,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -843,22 +891,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1021,22 +1081,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1199,22 +1271,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1377,22 +1461,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1560,22 +1656,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1738,22 +1846,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1916,22 +2036,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2094,22 +2226,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2272,22 +2416,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2450,22 +2606,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2628,22 +2796,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2806,22 +2986,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2984,22 +3176,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3162,22 +3366,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3340,22 +3556,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3518,22 +3746,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3696,22 +3936,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3874,22 +4126,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4052,22 +4316,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4230,22 +4506,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4408,22 +4696,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4586,22 +4886,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4764,22 +5076,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4942,22 +5266,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5120,22 +5456,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5298,22 +5646,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5476,22 +5836,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5654,22 +6026,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5832,22 +6216,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6010,22 +6406,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6188,22 +6596,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6366,22 +6786,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6544,22 +6976,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6722,22 +7166,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6900,22 +7356,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7078,22 +7546,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7256,22 +7736,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7434,22 +7926,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7612,22 +8116,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7790,22 +8306,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7968,22 +8496,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8146,22 +8686,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8324,22 +8876,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8502,22 +9066,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8680,22 +9256,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8858,22 +9446,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9036,22 +9636,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9214,22 +9826,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9392,22 +10016,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9570,22 +10206,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9748,22 +10396,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9926,22 +10586,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10104,22 +10776,34 @@ description: Variables in memory after executing linear_pattern3d_a_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/mike_stress_test/artifact_commands.snap b/rust/kcl-lib/tests/mike_stress_test/artifact_commands.snap index 75ae6551f..d35e7cadf 100644 --- a/rust/kcl-lib/tests/mike_stress_test/artifact_commands.snap +++ b/rust/kcl-lib/tests/mike_stress_test/artifact_commands.snap @@ -17128,7 +17128,8 @@ description: Artifact commands mike_stress_test.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/mike_stress_test/ast.snap b/rust/kcl-lib/tests/mike_stress_test/ast.snap index 72fb8ecab..551086133 100644 --- a/rust/kcl-lib/tests/mike_stress_test/ast.snap +++ b/rust/kcl-lib/tests/mike_stress_test/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing mike_stress_test.kcl { "arguments": [ { - "commentStart": 24, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 10, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing mike_stress_test.kcl { "arguments": [ { - "commentStart": 50, + "commentStart": 0, "elements": [ { - "commentStart": 51, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 56, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing mike_stress_test.kcl "type": "ArrayExpression" }, { - "commentStart": 62, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 35, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 35, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,18 +121,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 75, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 81, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 91, + "commentStart": 0, "end": 0, "raw": "0.3670208139314082", "start": 0, @@ -143,7 +143,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 90, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -151,7 +151,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 118, + "commentStart": 0, "end": 0, "raw": "0.21201331909674526", "start": 0, @@ -172,10 +172,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 70, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -185,7 +185,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 70, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -197,18 +197,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 156, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 162, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 172, + "commentStart": 0, "end": 0, "raw": "0.4707511307971115", "start": 0, @@ -219,7 +219,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 171, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -227,7 +227,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 199, + "commentStart": 0, "end": 0, "raw": "0.4905279615419764", "start": 0, @@ -248,10 +248,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 151, + "commentStart": 0, "end": 0, "name": { - "commentStart": 151, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -261,7 +261,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 151, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -273,18 +273,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 236, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 242, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 252, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -295,7 +295,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 251, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -303,7 +303,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 279, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -324,10 +324,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 231, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -337,7 +337,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 231, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -349,18 +349,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 316, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 322, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 332, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -371,7 +371,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 331, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -380,7 +380,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 360, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -391,7 +391,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 359, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -408,10 +408,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 311, + "commentStart": 0, "end": 0, "name": { - "commentStart": 311, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -421,7 +421,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 311, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -433,17 +433,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 398, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 404, + "commentStart": 0, "elements": [ { - "commentStart": 413, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -455,7 +455,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 441, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -476,10 +476,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 393, + "commentStart": 0, "end": 0, "name": { - "commentStart": 393, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -489,7 +489,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 393, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -501,17 +501,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 479, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 485, + "commentStart": 0, "elements": [ { - "commentStart": 494, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -523,7 +523,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 522, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -544,10 +544,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 474, + "commentStart": 0, "end": 0, "name": { - "commentStart": 474, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -557,7 +557,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 474, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -569,18 +569,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 560, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 566, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 576, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -591,7 +591,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 575, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -599,7 +599,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 604, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -620,10 +620,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 555, + "commentStart": 0, "end": 0, "name": { - "commentStart": 555, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -633,7 +633,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 555, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -645,18 +645,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 641, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 647, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 657, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -667,7 +667,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 656, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -676,7 +676,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 686, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -687,7 +687,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 685, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -704,10 +704,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 636, + "commentStart": 0, "end": 0, "name": { - "commentStart": 636, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -717,7 +717,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 636, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -729,17 +729,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 724, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 730, + "commentStart": 0, "elements": [ { - "commentStart": 739, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -752,7 +752,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 767, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -763,7 +763,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 766, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -780,10 +780,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 719, + "commentStart": 0, "end": 0, "name": { - "commentStart": 719, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -793,7 +793,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 719, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -805,17 +805,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 805, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 811, + "commentStart": 0, "elements": [ { - "commentStart": 820, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -828,7 +828,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 851, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -839,7 +839,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 850, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -856,10 +856,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 800, + "commentStart": 0, "end": 0, "name": { - "commentStart": 800, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -869,7 +869,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 800, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -881,17 +881,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 888, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 894, + "commentStart": 0, "elements": [ { - "commentStart": 903, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -904,7 +904,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 931, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -915,7 +915,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 930, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -932,10 +932,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 883, + "commentStart": 0, "end": 0, "name": { - "commentStart": 883, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -945,7 +945,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 883, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -957,18 +957,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 968, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 974, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 984, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -979,7 +979,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 983, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -987,7 +987,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 1011, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -1008,10 +1008,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 963, + "commentStart": 0, "end": 0, "name": { - "commentStart": 963, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1021,7 +1021,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 963, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1033,17 +1033,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 1048, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1054, + "commentStart": 0, "elements": [ { - "commentStart": 1055, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -1055,7 +1055,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 1075, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -1076,10 +1076,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 1043, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1043, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1089,7 +1089,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 1043, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1101,18 +1101,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 1106, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1112, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1122, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -1123,7 +1123,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 1121, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1131,7 +1131,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 1150, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -1152,10 +1152,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 1101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1101, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1165,7 +1165,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 1101, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1177,18 +1177,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 1189, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1195, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1205, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -1199,7 +1199,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 1204, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1208,7 +1208,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 1233, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -1219,7 +1219,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 1232, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1236,10 +1236,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 1184, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1184, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1249,7 +1249,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 1184, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1261,18 +1261,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 1271, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1277, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1287, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -1283,7 +1283,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 1286, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1292,7 +1292,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 1315, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -1303,7 +1303,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 1314, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1320,10 +1320,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 1266, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1266, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1333,7 +1333,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 1266, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1345,17 +1345,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 1353, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1359, + "commentStart": 0, "elements": [ { - "commentStart": 1360, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -1367,7 +1367,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 1379, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -1388,10 +1388,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 1348, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1348, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1401,7 +1401,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 1348, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1413,17 +1413,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 1410, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1416, + "commentStart": 0, "elements": [ { - "commentStart": 1425, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -1436,7 +1436,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 1454, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -1447,7 +1447,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 1453, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1464,10 +1464,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 1405, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1405, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1477,7 +1477,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 1405, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1489,17 +1489,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 1492, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1498, + "commentStart": 0, "elements": [ { - "commentStart": 1499, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -1511,7 +1511,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 1519, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -1532,10 +1532,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 1487, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1487, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1545,7 +1545,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 1487, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1557,17 +1557,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 1549, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1555, + "commentStart": 0, "elements": [ { - "commentStart": 1564, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -1580,7 +1580,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 1593, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -1591,7 +1591,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 1592, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1608,10 +1608,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 1544, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1544, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1621,7 +1621,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 1544, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1633,17 +1633,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 1630, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1636, + "commentStart": 0, "elements": [ { - "commentStart": 1637, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -1655,7 +1655,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 1657, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -1676,10 +1676,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 1625, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1625, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1689,7 +1689,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 1625, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1701,17 +1701,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 1688, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1694, + "commentStart": 0, "elements": [ { - "commentStart": 1703, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -1723,7 +1723,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 1730, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -1744,10 +1744,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 1683, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1683, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1757,7 +1757,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 1683, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1769,17 +1769,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 1768, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1774, + "commentStart": 0, "elements": [ { - "commentStart": 1775, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -1791,7 +1791,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 1795, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -1812,10 +1812,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 1763, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1763, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1825,7 +1825,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 1763, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1837,18 +1837,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 1826, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1832, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1842, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -1859,7 +1859,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 1841, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1868,7 +1868,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 1871, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -1879,7 +1879,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 1870, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1896,10 +1896,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 1821, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1821, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1909,7 +1909,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 1821, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1921,17 +1921,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 1908, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1914, + "commentStart": 0, "elements": [ { - "commentStart": 1923, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -1944,7 +1944,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 1951, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -1955,7 +1955,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 1950, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1972,10 +1972,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 1903, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1903, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1985,7 +1985,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 1903, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1997,18 +1997,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 1988, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1994, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 2004, + "commentStart": 0, "end": 0, "raw": "0.6716353749059765", "start": 0, @@ -2019,7 +2019,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 2003, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2028,7 +2028,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 2032, + "commentStart": 0, "end": 0, "raw": "0.9605576808879026", "start": 0, @@ -2039,7 +2039,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 2031, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2056,10 +2056,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 1983, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1983, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2069,7 +2069,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 1983, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2081,17 +2081,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 2069, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2075, + "commentStart": 0, "elements": [ { - "commentStart": 2084, + "commentStart": 0, "end": 0, "raw": "0.010280170930300203", "start": 0, @@ -2104,7 +2104,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 2114, + "commentStart": 0, "end": 0, "raw": "0.37344123662342166", "start": 0, @@ -2115,7 +2115,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 2113, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2132,10 +2132,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 2064, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2064, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2145,7 +2145,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 2064, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2157,17 +2157,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 2152, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2158, + "commentStart": 0, "elements": [ { - "commentStart": 2167, + "commentStart": 0, "end": 0, "raw": "0.10357375682791004", "start": 0, @@ -2180,7 +2180,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 2196, + "commentStart": 0, "end": 0, "raw": "0.42294321030821425", "start": 0, @@ -2191,7 +2191,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 2195, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2208,10 +2208,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 2147, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2147, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2221,7 +2221,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 2147, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2233,17 +2233,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 2234, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2240, + "commentStart": 0, "elements": [ { - "commentStart": 2249, + "commentStart": 0, "end": 0, "raw": "0.4520311575096987", "start": 0, @@ -2256,7 +2256,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 2277, + "commentStart": 0, "end": 0, "raw": "0.11232675307600548", "start": 0, @@ -2267,7 +2267,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 2276, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2284,10 +2284,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 2229, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2229, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2297,7 +2297,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 2229, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2309,18 +2309,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 2315, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2321, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 2331, + "commentStart": 0, "end": 0, "raw": "0.8821185914380845", "start": 0, @@ -2331,7 +2331,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 2330, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2340,7 +2340,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 2359, + "commentStart": 0, "end": 0, "raw": "0.7155147434939819", "start": 0, @@ -2351,7 +2351,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 2358, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2368,10 +2368,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 2310, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2310, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2381,7 +2381,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 2310, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2393,17 +2393,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 2396, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2402, + "commentStart": 0, "elements": [ { - "commentStart": 2403, + "commentStart": 0, "end": 0, "raw": "0.9195487101690416", "start": 0, @@ -2415,7 +2415,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 2423, + "commentStart": 0, "end": 0, "raw": "0.2691627465297364", "start": 0, @@ -2436,10 +2436,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 2391, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2391, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2449,7 +2449,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 2391, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2461,17 +2461,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 2454, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2460, + "commentStart": 0, "elements": [ { - "commentStart": 2469, + "commentStart": 0, "end": 0, "raw": "0.7098978191546745", "start": 0, @@ -2483,7 +2483,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 2496, + "commentStart": 0, "end": 0, "raw": "0.11710004169385968", "start": 0, @@ -2504,10 +2504,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 2449, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2449, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2517,7 +2517,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 2449, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2529,18 +2529,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 2534, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2540, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 2550, + "commentStart": 0, "end": 0, "raw": "0.37876368560819995", "start": 0, @@ -2551,7 +2551,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 2549, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2559,7 +2559,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 2578, + "commentStart": 0, "end": 0, "raw": "0.7106729314759084", "start": 0, @@ -2580,10 +2580,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 2529, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2529, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2593,7 +2593,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 2529, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2605,18 +2605,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 2615, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2621, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 2631, + "commentStart": 0, "end": 0, "raw": "0.29728126898353335", "start": 0, @@ -2627,7 +2627,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 2630, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2636,7 +2636,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 2660, + "commentStart": 0, "end": 0, "raw": "0.06649734568328003", "start": 0, @@ -2647,7 +2647,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 2659, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2664,10 +2664,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 2610, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2610, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2677,7 +2677,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 2610, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2689,17 +2689,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 2698, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2704, + "commentStart": 0, "elements": [ { - "commentStart": 2713, + "commentStart": 0, "end": 0, "raw": "0.22965781558352072", "start": 0, @@ -2712,7 +2712,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 2742, + "commentStart": 0, "end": 0, "raw": "0.7601866432836641", "start": 0, @@ -2723,7 +2723,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 2741, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2740,10 +2740,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 2693, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2693, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2753,7 +2753,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 2693, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2765,18 +2765,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 2779, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2785, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 2795, + "commentStart": 0, "end": 0, "raw": "0.6356501074317229", "start": 0, @@ -2787,7 +2787,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 2794, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2795,7 +2795,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 2822, + "commentStart": 0, "end": 0, "raw": "0.19458425399338064", "start": 0, @@ -2816,10 +2816,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 2774, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2774, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2829,7 +2829,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 2774, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2841,17 +2841,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 2860, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2866, + "commentStart": 0, "elements": [ { - "commentStart": 2867, + "commentStart": 0, "end": 0, "raw": "0.5721251777404546", "start": 0, @@ -2863,7 +2863,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 2887, + "commentStart": 0, "end": 0, "raw": "0.2888584097921527", "start": 0, @@ -2884,10 +2884,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 2855, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2855, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2897,7 +2897,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 2855, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2909,18 +2909,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 2918, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 2924, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 2934, + "commentStart": 0, "end": 0, "raw": "0.9580409549552311", "start": 0, @@ -2931,7 +2931,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 2933, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2940,7 +2940,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 2962, + "commentStart": 0, "end": 0, "raw": "0.02243818192078395", "start": 0, @@ -2951,7 +2951,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 2961, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2968,10 +2968,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 2913, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2913, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2981,7 +2981,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 2913, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2993,17 +2993,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 3000, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3006, + "commentStart": 0, "elements": [ { - "commentStart": 3015, + "commentStart": 0, "end": 0, "raw": "0.3299184618602866", "start": 0, @@ -3016,7 +3016,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 3043, + "commentStart": 0, "end": 0, "raw": "0.8353726942369875", "start": 0, @@ -3027,7 +3027,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 3042, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3044,10 +3044,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 2995, + "commentStart": 0, "end": 0, "name": { - "commentStart": 2995, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3057,7 +3057,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 2995, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3069,17 +3069,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 3080, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3086, + "commentStart": 0, "elements": [ { - "commentStart": 3095, + "commentStart": 0, "end": 0, "raw": "0.7434639386755209", "start": 0, @@ -3092,7 +3092,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 3123, + "commentStart": 0, "end": 0, "raw": "0.7919648864138378", "start": 0, @@ -3103,7 +3103,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 3122, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3120,10 +3120,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 3075, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3075, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3133,7 +3133,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 3075, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3145,17 +3145,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 3160, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3166, + "commentStart": 0, "elements": [ { - "commentStart": 3167, + "commentStart": 0, "end": 0, "raw": "0.9935751011164615", "start": 0, @@ -3167,7 +3167,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 3187, + "commentStart": 0, "end": 0, "raw": "0.9042566468497608", "start": 0, @@ -3188,10 +3188,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 3155, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3155, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3201,7 +3201,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 3155, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3213,18 +3213,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 3218, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3224, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 3234, + "commentStart": 0, "end": 0, "raw": "0.5035812884687294", "start": 0, @@ -3235,7 +3235,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 3233, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3243,7 +3243,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 3261, + "commentStart": 0, "end": 0, "raw": "0.5150967434989442", "start": 0, @@ -3264,10 +3264,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 3213, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3213, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3277,7 +3277,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 3213, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3289,17 +3289,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 3298, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3304, + "commentStart": 0, "elements": [ { - "commentStart": 3305, + "commentStart": 0, "end": 0, "raw": "0.5526227215900215", "start": 0, @@ -3311,7 +3311,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 3325, + "commentStart": 0, "end": 0, "raw": "0.7612604137272441", "start": 0, @@ -3332,10 +3332,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 3293, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3293, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3345,7 +3345,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 3293, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3357,17 +3357,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 3356, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3362, + "commentStart": 0, "elements": [ { - "commentStart": 3371, + "commentStart": 0, "end": 0, "raw": "0.8593271349126876", "start": 0, @@ -3379,7 +3379,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 3398, + "commentStart": 0, "end": 0, "raw": "0.08414894953725849", "start": 0, @@ -3400,10 +3400,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 3351, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3351, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3413,7 +3413,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 3351, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3425,18 +3425,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 3436, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3442, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 3452, + "commentStart": 0, "end": 0, "raw": "0.8181049219192864", "start": 0, @@ -3447,7 +3447,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 3451, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3456,7 +3456,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 3480, + "commentStart": 0, "end": 0, "raw": "0.903548131323352", "start": 0, @@ -3467,7 +3467,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 3479, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3484,10 +3484,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 3431, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3431, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3497,7 +3497,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 3431, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3509,17 +3509,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 3516, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3522, + "commentStart": 0, "elements": [ { - "commentStart": 3531, + "commentStart": 0, "end": 0, "raw": "0.3165782044458305", "start": 0, @@ -3532,7 +3532,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 3559, + "commentStart": 0, "end": 0, "raw": "0.24189274252014914", "start": 0, @@ -3543,7 +3543,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 3558, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3560,10 +3560,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 3511, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3511, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3573,7 +3573,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 3511, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3585,18 +3585,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 3597, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3603, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 3613, + "commentStart": 0, "end": 0, "raw": "0.44390956414045135", "start": 0, @@ -3607,7 +3607,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 3612, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3616,7 +3616,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 3642, + "commentStart": 0, "end": 0, "raw": "0.25912591535126905", "start": 0, @@ -3627,7 +3627,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 3641, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3644,10 +3644,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 3592, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3592, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3657,7 +3657,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 3592, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3669,18 +3669,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 3680, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3686, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 3696, + "commentStart": 0, "end": 0, "raw": "0.6605165911891009", "start": 0, @@ -3691,7 +3691,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 3695, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3700,7 +3700,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 3724, + "commentStart": 0, "end": 0, "raw": "0.40355115288839194", "start": 0, @@ -3711,7 +3711,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 3723, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3728,10 +3728,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 3675, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3675, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3741,7 +3741,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 3675, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3753,18 +3753,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 3762, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3768, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 3778, + "commentStart": 0, "end": 0, "raw": "0.7170489950180006", "start": 0, @@ -3775,7 +3775,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 3777, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3783,7 +3783,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 3805, + "commentStart": 0, "end": 0, "raw": "0.23454356079651384", "start": 0, @@ -3804,10 +3804,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 3757, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3757, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3817,7 +3817,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 3757, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3829,18 +3829,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 3843, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3849, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 3859, + "commentStart": 0, "end": 0, "raw": "0.2568187045379722", "start": 0, @@ -3851,7 +3851,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 3858, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3860,7 +3860,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 3887, + "commentStart": 0, "end": 0, "raw": "0.45031188717601367", "start": 0, @@ -3871,7 +3871,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 3886, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3888,10 +3888,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 3838, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3838, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3901,7 +3901,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 3838, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3913,17 +3913,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 3925, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 3931, + "commentStart": 0, "elements": [ { - "commentStart": 3940, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -3936,7 +3936,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 3968, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -3947,7 +3947,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 3967, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -3964,10 +3964,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 3920, + "commentStart": 0, "end": 0, "name": { - "commentStart": 3920, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -3977,7 +3977,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 3920, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -3989,18 +3989,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 4005, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4011, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 4021, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -4011,7 +4011,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 4020, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4019,7 +4019,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 4048, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -4040,10 +4040,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 4000, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4000, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4053,7 +4053,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 4000, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4065,18 +4065,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 4085, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4091, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 4101, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -4087,7 +4087,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 4100, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4095,7 +4095,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 4128, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -4116,10 +4116,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 4080, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4080, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4129,7 +4129,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 4080, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4141,18 +4141,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 4165, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4171, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 4181, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -4163,7 +4163,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 4180, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4172,7 +4172,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 4209, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -4183,7 +4183,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 4208, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4200,10 +4200,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 4160, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4160, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4213,7 +4213,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 4160, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4225,17 +4225,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 4247, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4253, + "commentStart": 0, "elements": [ { - "commentStart": 4262, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -4247,7 +4247,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 4290, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -4268,10 +4268,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 4242, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4242, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4281,7 +4281,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 4242, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4293,17 +4293,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 4328, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4334, + "commentStart": 0, "elements": [ { - "commentStart": 4343, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -4315,7 +4315,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 4371, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -4336,10 +4336,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 4323, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4323, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4349,7 +4349,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 4323, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4361,18 +4361,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 4409, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4415, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 4425, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -4383,7 +4383,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 4424, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4391,7 +4391,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 4453, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -4412,10 +4412,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 4404, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4404, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4425,7 +4425,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 4404, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4437,18 +4437,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 4490, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4496, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 4506, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -4459,7 +4459,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 4505, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4468,7 +4468,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 4535, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -4479,7 +4479,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 4534, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4496,10 +4496,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 4485, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4485, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4509,7 +4509,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 4485, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4521,17 +4521,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 4573, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4579, + "commentStart": 0, "elements": [ { - "commentStart": 4588, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -4544,7 +4544,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 4616, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -4555,7 +4555,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 4615, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4572,10 +4572,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 4568, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4568, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4585,7 +4585,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 4568, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4597,17 +4597,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 4654, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4660, + "commentStart": 0, "elements": [ { - "commentStart": 4669, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -4620,7 +4620,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 4700, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -4631,7 +4631,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 4699, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4648,10 +4648,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 4649, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4649, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4661,7 +4661,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 4649, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4673,17 +4673,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 4737, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4743, + "commentStart": 0, "elements": [ { - "commentStart": 4752, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -4696,7 +4696,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 4780, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -4707,7 +4707,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 4779, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4724,10 +4724,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 4732, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4732, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4737,7 +4737,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 4732, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4749,18 +4749,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 4817, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4823, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 4833, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -4771,7 +4771,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 4832, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4779,7 +4779,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 4860, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -4800,10 +4800,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 4812, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4812, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4813,7 +4813,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 4812, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4825,17 +4825,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 4897, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4903, + "commentStart": 0, "elements": [ { - "commentStart": 4904, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -4847,7 +4847,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 4924, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -4868,10 +4868,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 4892, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4892, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4881,7 +4881,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 4892, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4893,18 +4893,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 4955, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 4961, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 4971, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -4915,7 +4915,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 4970, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -4923,7 +4923,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 4999, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -4944,10 +4944,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 4950, + "commentStart": 0, "end": 0, "name": { - "commentStart": 4950, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -4957,7 +4957,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 4950, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -4969,18 +4969,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 5038, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5044, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 5054, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -4991,7 +4991,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 5053, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5000,7 +5000,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 5082, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -5011,7 +5011,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 5081, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5028,10 +5028,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 5033, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5033, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5041,7 +5041,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 5033, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5053,18 +5053,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 5120, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5126, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 5136, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -5075,7 +5075,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 5135, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5084,7 +5084,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 5164, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -5095,7 +5095,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 5163, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5112,10 +5112,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 5115, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5115, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5125,7 +5125,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 5115, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5137,17 +5137,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 5202, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5208, + "commentStart": 0, "elements": [ { - "commentStart": 5209, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -5159,7 +5159,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 5228, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -5180,10 +5180,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 5197, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5197, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5193,7 +5193,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 5197, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5205,17 +5205,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 5259, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5265, + "commentStart": 0, "elements": [ { - "commentStart": 5274, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -5228,7 +5228,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 5303, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -5239,7 +5239,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 5302, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5256,10 +5256,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 5254, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5254, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5269,7 +5269,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 5254, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5281,17 +5281,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 5341, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5347, + "commentStart": 0, "elements": [ { - "commentStart": 5348, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -5303,7 +5303,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 5368, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -5324,10 +5324,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 5336, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5336, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5337,7 +5337,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 5336, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5349,17 +5349,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 5398, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5404, + "commentStart": 0, "elements": [ { - "commentStart": 5413, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -5372,7 +5372,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 5442, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -5383,7 +5383,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 5441, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5400,10 +5400,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 5393, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5393, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5413,7 +5413,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 5393, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5425,17 +5425,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 5479, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5485, + "commentStart": 0, "elements": [ { - "commentStart": 5486, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -5447,7 +5447,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 5506, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -5468,10 +5468,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 5474, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5474, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5481,7 +5481,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 5474, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5493,17 +5493,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 5537, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5543, + "commentStart": 0, "elements": [ { - "commentStart": 5552, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -5515,7 +5515,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 5579, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -5536,10 +5536,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 5532, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5532, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5549,7 +5549,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 5532, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5561,17 +5561,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 5617, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5623, + "commentStart": 0, "elements": [ { - "commentStart": 5624, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -5583,7 +5583,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 5644, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -5604,10 +5604,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 5612, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5612, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5617,7 +5617,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 5612, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5629,18 +5629,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 5675, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5681, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 5691, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -5651,7 +5651,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 5690, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5660,7 +5660,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 5720, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -5671,7 +5671,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 5719, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5688,10 +5688,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 5670, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5670, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5701,7 +5701,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 5670, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5713,17 +5713,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 5757, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5763, + "commentStart": 0, "elements": [ { - "commentStart": 5772, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -5736,7 +5736,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 5800, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -5747,7 +5747,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 5799, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5764,10 +5764,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 5752, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5752, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5777,7 +5777,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 5752, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5789,17 +5789,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 5837, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5843, + "commentStart": 0, "elements": [ { - "commentStart": 5852, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -5812,7 +5812,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 5880, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -5823,7 +5823,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 5879, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5840,10 +5840,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 5832, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5832, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5853,7 +5853,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 5832, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5865,18 +5865,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 5917, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 5923, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 5933, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -5887,7 +5887,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 5932, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5895,7 +5895,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 5960, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -5916,10 +5916,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 5912, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5912, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -5929,7 +5929,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 5912, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -5941,17 +5941,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 5997, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6003, + "commentStart": 0, "elements": [ { - "commentStart": 6012, + "commentStart": 0, "end": 0, "raw": "0.9464450621708211", "start": 0, @@ -5964,7 +5964,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 6040, + "commentStart": 0, "end": 0, "raw": "0.2684908127803667", "start": 0, @@ -5975,7 +5975,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 6039, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -5992,10 +5992,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 5992, + "commentStart": 0, "end": 0, "name": { - "commentStart": 5992, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6005,7 +6005,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 5992, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6017,17 +6017,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 6077, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6083, + "commentStart": 0, "elements": [ { - "commentStart": 6084, + "commentStart": 0, "end": 0, "raw": "0.5241732366617591", "start": 0, @@ -6039,7 +6039,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 6104, + "commentStart": 0, "end": 0, "raw": "0.9011437416408563", "start": 0, @@ -6060,10 +6060,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 6072, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6072, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6073,7 +6073,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 6072, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6085,18 +6085,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 6135, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6141, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 6151, + "commentStart": 0, "end": 0, "raw": "0.14255393713960607", "start": 0, @@ -6107,7 +6107,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 6150, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6116,7 +6116,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 6180, + "commentStart": 0, "end": 0, "raw": "0.5194262624564814", "start": 0, @@ -6127,7 +6127,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 6179, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6144,10 +6144,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 6130, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6130, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6157,7 +6157,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 6130, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6169,18 +6169,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 6217, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6223, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 6233, + "commentStart": 0, "end": 0, "raw": "0.4287123231350338", "start": 0, @@ -6191,7 +6191,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 6232, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6200,7 +6200,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 6261, + "commentStart": 0, "end": 0, "raw": "0.4223564528725028", "start": 0, @@ -6211,7 +6211,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 6260, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6228,10 +6228,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 6212, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6212, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6241,7 +6241,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 6212, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6253,18 +6253,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 6298, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6304, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 6314, + "commentStart": 0, "end": 0, "raw": "0.09316367294024519", "start": 0, @@ -6275,7 +6275,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 6313, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6284,7 +6284,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 6343, + "commentStart": 0, "end": 0, "raw": "0.9063127021008246", "start": 0, @@ -6295,7 +6295,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 6342, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6312,10 +6312,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 6293, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6293, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6325,7 +6325,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 6293, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6337,18 +6337,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 6380, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6386, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 6396, + "commentStart": 0, "end": 0, "raw": "0.2767766535558669", "start": 0, @@ -6359,7 +6359,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 6395, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6367,7 +6367,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 6423, + "commentStart": 0, "end": 0, "raw": "0.6816248114129131", "start": 0, @@ -6388,10 +6388,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 6375, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6375, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6401,7 +6401,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 6375, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6413,17 +6413,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 6460, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6466, + "commentStart": 0, "elements": [ { - "commentStart": 6475, + "commentStart": 0, "end": 0, "raw": "0.9796762495562534", "start": 0, @@ -6436,7 +6436,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 6503, + "commentStart": 0, "end": 0, "raw": "0.0822145668330625", "start": 0, @@ -6447,7 +6447,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 6502, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6464,10 +6464,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 6455, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6455, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6477,7 +6477,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 6455, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6489,18 +6489,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 6540, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6546, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 6556, + "commentStart": 0, "end": 0, "raw": "0.8666513070867441", "start": 0, @@ -6511,7 +6511,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 6555, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6520,7 +6520,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 6584, + "commentStart": 0, "end": 0, "raw": "0.301053160242023", "start": 0, @@ -6531,7 +6531,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 6583, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6548,10 +6548,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 6535, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6535, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6561,7 +6561,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 6535, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6573,17 +6573,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 6620, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6626, + "commentStart": 0, "elements": [ { - "commentStart": 6635, + "commentStart": 0, "end": 0, "raw": "0.537415656028112", "start": 0, @@ -6595,7 +6595,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 6661, + "commentStart": 0, "end": 0, "raw": "0.020272692875002774", "start": 0, @@ -6616,10 +6616,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 6615, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6615, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6629,7 +6629,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 6615, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6641,17 +6641,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 6700, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6706, + "commentStart": 0, "elements": [ { - "commentStart": 6715, + "commentStart": 0, "end": 0, "raw": "0.9332396256457531", "start": 0, @@ -6664,7 +6664,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 6743, + "commentStart": 0, "end": 0, "raw": "0.6228175690649898", "start": 0, @@ -6675,7 +6675,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 6742, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6692,10 +6692,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 6695, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6695, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6705,7 +6705,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 6695, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6717,17 +6717,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 6780, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6786, + "commentStart": 0, "elements": [ { - "commentStart": 6795, + "commentStart": 0, "end": 0, "raw": "0.18052415837320734", "start": 0, @@ -6740,7 +6740,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 6824, + "commentStart": 0, "end": 0, "raw": "0.36894384647296197", "start": 0, @@ -6751,7 +6751,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 6823, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -6768,10 +6768,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 6775, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6775, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6781,7 +6781,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 6775, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6793,17 +6793,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 6862, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6868, + "commentStart": 0, "elements": [ { - "commentStart": 6869, + "commentStart": 0, "end": 0, "raw": "0.5384372634075449", "start": 0, @@ -6815,7 +6815,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 6889, + "commentStart": 0, "end": 0, "raw": "0.2377565050887107", "start": 0, @@ -6836,10 +6836,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 6857, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6857, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6849,7 +6849,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 6857, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6861,17 +6861,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 6920, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 6926, + "commentStart": 0, "elements": [ { - "commentStart": 6935, + "commentStart": 0, "end": 0, "raw": "0.39043436929278874", "start": 0, @@ -6883,7 +6883,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 6963, + "commentStart": 0, "end": 0, "raw": "0.14273182483160451", "start": 0, @@ -6904,10 +6904,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 6915, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6915, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6917,7 +6917,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 6915, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6929,17 +6929,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 7001, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7007, + "commentStart": 0, "elements": [ { - "commentStart": 7016, + "commentStart": 0, "end": 0, "raw": "0.09782890412897283", "start": 0, @@ -6951,7 +6951,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 7044, + "commentStart": 0, "end": 0, "raw": "0.9907667536909659", "start": 0, @@ -6972,10 +6972,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 6996, + "commentStart": 0, "end": 0, "name": { - "commentStart": 6996, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -6985,7 +6985,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 6996, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -6997,17 +6997,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 7081, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7087, + "commentStart": 0, "elements": [ { - "commentStart": 7096, + "commentStart": 0, "end": 0, "raw": "0.5286610085921146", "start": 0, @@ -7020,7 +7020,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 7124, + "commentStart": 0, "end": 0, "raw": "0.7924508308419256", "start": 0, @@ -7031,7 +7031,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 7123, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7048,10 +7048,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 7076, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7076, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7061,7 +7061,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 7076, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7073,17 +7073,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 7161, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7167, + "commentStart": 0, "elements": [ { - "commentStart": 7176, + "commentStart": 0, "end": 0, "raw": "0.3789978184503342", "start": 0, @@ -7095,7 +7095,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 7203, + "commentStart": 0, "end": 0, "raw": "0.12396120576838676", "start": 0, @@ -7116,10 +7116,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 7156, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7156, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7129,7 +7129,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 7156, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7141,18 +7141,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 7241, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7247, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 7257, + "commentStart": 0, "end": 0, "raw": "0.9484912744890612", "start": 0, @@ -7163,7 +7163,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 7256, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7171,7 +7171,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 7284, + "commentStart": 0, "end": 0, "raw": "0.6729649846476855", "start": 0, @@ -7192,10 +7192,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 7236, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7236, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7205,7 +7205,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 7236, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7217,17 +7217,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 7321, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7327, + "commentStart": 0, "elements": [ { - "commentStart": 7336, + "commentStart": 0, "end": 0, "raw": "0.7451758753425153", "start": 0, @@ -7240,7 +7240,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 7364, + "commentStart": 0, "end": 0, "raw": "0.21318737562458967", "start": 0, @@ -7251,7 +7251,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 7363, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7268,10 +7268,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 7316, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7316, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7281,7 +7281,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 7316, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7293,17 +7293,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 7402, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7408, + "commentStart": 0, "elements": [ { - "commentStart": 7417, + "commentStart": 0, "end": 0, "raw": "0.1873200727251887", "start": 0, @@ -7316,7 +7316,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 7445, + "commentStart": 0, "end": 0, "raw": "0.15961374297992448", "start": 0, @@ -7327,7 +7327,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 7444, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7344,10 +7344,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 7397, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7397, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7357,7 +7357,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 7397, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7369,18 +7369,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 7483, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7489, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 7499, + "commentStart": 0, "end": 0, "raw": "0.05729464924537564", "start": 0, @@ -7391,7 +7391,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 7498, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7400,7 +7400,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 7528, + "commentStart": 0, "end": 0, "raw": "0.5436345558508746", "start": 0, @@ -7411,7 +7411,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 7527, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7428,10 +7428,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 7478, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7478, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7441,7 +7441,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 7478, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7453,18 +7453,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 7565, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7571, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 7581, + "commentStart": 0, "end": 0, "raw": "0.09582414374469184", "start": 0, @@ -7475,7 +7475,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 7580, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7484,7 +7484,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 7610, + "commentStart": 0, "end": 0, "raw": "0.7533839681212353", "start": 0, @@ -7495,7 +7495,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 7609, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7512,10 +7512,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 7560, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7560, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7525,7 +7525,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 7560, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7537,18 +7537,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 7647, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7653, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 7663, + "commentStart": 0, "end": 0, "raw": "0.17254116580051848", "start": 0, @@ -7559,7 +7559,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 7662, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7568,7 +7568,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 7692, + "commentStart": 0, "end": 0, "raw": "0.7669113400341137", "start": 0, @@ -7579,7 +7579,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 7691, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7596,10 +7596,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 7642, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7642, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7609,7 +7609,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 7642, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7621,17 +7621,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 7729, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7735, + "commentStart": 0, "elements": [ { - "commentStart": 7736, + "commentStart": 0, "end": 0, "raw": "0.8944730032887609", "start": 0, @@ -7643,7 +7643,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 7756, + "commentStart": 0, "end": 0, "raw": "0.6093318694741408", "start": 0, @@ -7664,10 +7664,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 7724, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7724, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7677,7 +7677,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 7724, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7689,18 +7689,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 7787, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7793, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 7803, + "commentStart": 0, "end": 0, "raw": "0.3670208139314082", "start": 0, @@ -7711,7 +7711,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 7802, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7719,7 +7719,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 7830, + "commentStart": 0, "end": 0, "raw": "0.21201331909674526", "start": 0, @@ -7740,10 +7740,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 7782, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7782, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7753,7 +7753,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 7782, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7765,18 +7765,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 7868, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7874, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 7884, + "commentStart": 0, "end": 0, "raw": "0.4707511307971115", "start": 0, @@ -7787,7 +7787,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 7883, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7795,7 +7795,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 7911, + "commentStart": 0, "end": 0, "raw": "0.4905279615419764", "start": 0, @@ -7816,10 +7816,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 7863, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7863, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7829,7 +7829,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 7863, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7841,18 +7841,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 7948, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 7954, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 7964, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -7863,7 +7863,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 7963, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7871,7 +7871,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 7991, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -7892,10 +7892,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 7943, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7943, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7905,7 +7905,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 7943, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -7917,18 +7917,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 8028, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8034, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 8044, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -7939,7 +7939,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 8043, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7948,7 +7948,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 8072, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -7959,7 +7959,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 8071, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -7976,10 +7976,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 8023, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8023, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -7989,7 +7989,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 8023, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8001,17 +8001,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 8110, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8116, + "commentStart": 0, "elements": [ { - "commentStart": 8125, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -8023,7 +8023,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 8153, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -8044,10 +8044,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 8105, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8105, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8057,7 +8057,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 8105, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8069,17 +8069,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 8191, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8197, + "commentStart": 0, "elements": [ { - "commentStart": 8206, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -8091,7 +8091,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 8234, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -8112,10 +8112,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 8186, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8186, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8125,7 +8125,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 8186, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8137,18 +8137,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 8272, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8278, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 8288, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -8159,7 +8159,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 8287, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8167,7 +8167,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 8316, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -8188,10 +8188,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 8267, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8267, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8201,7 +8201,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 8267, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8213,18 +8213,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 8353, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8359, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 8369, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -8235,7 +8235,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 8368, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8244,7 +8244,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 8398, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -8255,7 +8255,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 8397, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8272,10 +8272,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 8348, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8348, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8285,7 +8285,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 8348, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8297,17 +8297,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 8436, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8442, + "commentStart": 0, "elements": [ { - "commentStart": 8451, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -8320,7 +8320,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 8479, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -8331,7 +8331,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 8478, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8348,10 +8348,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 8431, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8431, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8361,7 +8361,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 8431, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8373,17 +8373,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 8517, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8523, + "commentStart": 0, "elements": [ { - "commentStart": 8532, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -8396,7 +8396,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 8563, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -8407,7 +8407,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 8562, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8424,10 +8424,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 8512, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8512, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8437,7 +8437,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 8512, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8449,17 +8449,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 8600, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8606, + "commentStart": 0, "elements": [ { - "commentStart": 8615, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -8472,7 +8472,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 8643, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -8483,7 +8483,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 8642, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8500,10 +8500,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 8595, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8595, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8513,7 +8513,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 8595, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8525,18 +8525,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 8680, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8686, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 8696, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -8547,7 +8547,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 8695, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8555,7 +8555,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 8723, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -8576,10 +8576,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 8675, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8675, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8589,7 +8589,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 8675, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8601,17 +8601,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 8760, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8766, + "commentStart": 0, "elements": [ { - "commentStart": 8767, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -8623,7 +8623,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 8787, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -8644,10 +8644,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 8755, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8755, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8657,7 +8657,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 8755, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8669,18 +8669,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 8818, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8824, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 8834, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -8691,7 +8691,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 8833, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8699,7 +8699,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 8862, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -8720,10 +8720,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 8813, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8813, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8733,7 +8733,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 8813, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8745,18 +8745,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 8901, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8907, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 8917, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -8767,7 +8767,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 8916, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8776,7 +8776,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 8945, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -8787,7 +8787,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 8944, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8804,10 +8804,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 8896, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8896, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8817,7 +8817,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 8896, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8829,18 +8829,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 8983, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 8989, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 8999, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -8851,7 +8851,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 8998, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8860,7 +8860,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 9027, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -8871,7 +8871,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 9026, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -8888,10 +8888,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 8978, + "commentStart": 0, "end": 0, "name": { - "commentStart": 8978, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8901,7 +8901,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 8978, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8913,17 +8913,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 9065, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9071, + "commentStart": 0, "elements": [ { - "commentStart": 9072, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -8935,7 +8935,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 9091, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -8956,10 +8956,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 9060, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9060, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -8969,7 +8969,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 9060, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -8981,17 +8981,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 9122, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9128, + "commentStart": 0, "elements": [ { - "commentStart": 9137, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -9004,7 +9004,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 9166, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -9015,7 +9015,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 9165, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9032,10 +9032,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 9117, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9117, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9045,7 +9045,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 9117, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9057,17 +9057,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 9204, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9210, + "commentStart": 0, "elements": [ { - "commentStart": 9211, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -9079,7 +9079,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 9231, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -9100,10 +9100,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 9199, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9199, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9113,7 +9113,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 9199, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9125,17 +9125,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 9261, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9267, + "commentStart": 0, "elements": [ { - "commentStart": 9276, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -9148,7 +9148,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 9305, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -9159,7 +9159,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 9304, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9176,10 +9176,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 9256, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9256, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9189,7 +9189,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 9256, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9201,17 +9201,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 9342, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9348, + "commentStart": 0, "elements": [ { - "commentStart": 9349, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -9223,7 +9223,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 9369, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -9244,10 +9244,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 9337, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9337, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9257,7 +9257,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 9337, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9269,17 +9269,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 9400, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9406, + "commentStart": 0, "elements": [ { - "commentStart": 9415, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -9291,7 +9291,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 9442, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -9312,10 +9312,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 9395, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9395, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9325,7 +9325,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 9395, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9337,17 +9337,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 9480, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9486, + "commentStart": 0, "elements": [ { - "commentStart": 9487, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -9359,7 +9359,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 9507, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -9380,10 +9380,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 9475, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9475, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9393,7 +9393,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 9475, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9405,18 +9405,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 9538, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9544, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 9554, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -9427,7 +9427,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 9553, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9436,7 +9436,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 9583, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -9447,7 +9447,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 9582, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9464,10 +9464,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 9533, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9533, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9477,7 +9477,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 9533, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9489,17 +9489,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 9620, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9626, + "commentStart": 0, "elements": [ { - "commentStart": 9635, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -9512,7 +9512,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 9663, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -9523,7 +9523,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 9662, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9540,10 +9540,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 9615, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9615, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9553,7 +9553,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 9615, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9565,18 +9565,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 9700, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9706, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 9716, + "commentStart": 0, "end": 0, "raw": "0.6716353749059765", "start": 0, @@ -9587,7 +9587,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 9715, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9596,7 +9596,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 9744, + "commentStart": 0, "end": 0, "raw": "0.9605576808879026", "start": 0, @@ -9607,7 +9607,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 9743, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9624,10 +9624,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 9695, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9695, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9637,7 +9637,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 9695, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9649,17 +9649,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 9781, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9787, + "commentStart": 0, "elements": [ { - "commentStart": 9796, + "commentStart": 0, "end": 0, "raw": "0.010280170930300203", "start": 0, @@ -9672,7 +9672,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 9826, + "commentStart": 0, "end": 0, "raw": "0.37344123662342166", "start": 0, @@ -9683,7 +9683,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 9825, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9700,10 +9700,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 9776, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9776, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9713,7 +9713,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 9776, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9725,17 +9725,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 9864, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9870, + "commentStart": 0, "elements": [ { - "commentStart": 9879, + "commentStart": 0, "end": 0, "raw": "0.10357375682791004", "start": 0, @@ -9748,7 +9748,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 9908, + "commentStart": 0, "end": 0, "raw": "0.42294321030821425", "start": 0, @@ -9759,7 +9759,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 9907, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9776,10 +9776,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 9859, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9859, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9789,7 +9789,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 9859, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9801,17 +9801,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 9946, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 9952, + "commentStart": 0, "elements": [ { - "commentStart": 9961, + "commentStart": 0, "end": 0, "raw": "0.4520311575096987", "start": 0, @@ -9824,7 +9824,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 9989, + "commentStart": 0, "end": 0, "raw": "0.11232675307600548", "start": 0, @@ -9835,7 +9835,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 9988, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9852,10 +9852,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 9941, + "commentStart": 0, "end": 0, "name": { - "commentStart": 9941, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9865,7 +9865,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 9941, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9877,18 +9877,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 10027, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10033, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 10043, + "commentStart": 0, "end": 0, "raw": "0.8821185914380845", "start": 0, @@ -9899,7 +9899,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 10042, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9908,7 +9908,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 10071, + "commentStart": 0, "end": 0, "raw": "0.7155147434939819", "start": 0, @@ -9919,7 +9919,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 10070, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -9936,10 +9936,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 10022, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10022, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -9949,7 +9949,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 10022, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -9961,17 +9961,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 10108, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10114, + "commentStart": 0, "elements": [ { - "commentStart": 10115, + "commentStart": 0, "end": 0, "raw": "0.9195487101690416", "start": 0, @@ -9983,7 +9983,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 10135, + "commentStart": 0, "end": 0, "raw": "0.2691627465297364", "start": 0, @@ -10004,10 +10004,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 10103, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10103, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10017,7 +10017,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 10103, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10029,17 +10029,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 10166, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10172, + "commentStart": 0, "elements": [ { - "commentStart": 10181, + "commentStart": 0, "end": 0, "raw": "0.7098978191546745", "start": 0, @@ -10051,7 +10051,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 10208, + "commentStart": 0, "end": 0, "raw": "0.11710004169385968", "start": 0, @@ -10072,10 +10072,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 10161, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10161, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10085,7 +10085,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 10161, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10097,18 +10097,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 10246, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10252, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 10262, + "commentStart": 0, "end": 0, "raw": "0.37876368560819995", "start": 0, @@ -10119,7 +10119,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 10261, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10127,7 +10127,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 10290, + "commentStart": 0, "end": 0, "raw": "0.7106729314759084", "start": 0, @@ -10148,10 +10148,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 10241, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10241, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10161,7 +10161,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 10241, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10173,18 +10173,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 10327, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10333, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 10343, + "commentStart": 0, "end": 0, "raw": "0.29728126898353335", "start": 0, @@ -10195,7 +10195,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 10342, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10204,7 +10204,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 10372, + "commentStart": 0, "end": 0, "raw": "0.06649734568328003", "start": 0, @@ -10215,7 +10215,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 10371, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10232,10 +10232,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 10322, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10322, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10245,7 +10245,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 10322, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10257,17 +10257,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 10410, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10416, + "commentStart": 0, "elements": [ { - "commentStart": 10425, + "commentStart": 0, "end": 0, "raw": "0.22965781558352072", "start": 0, @@ -10280,7 +10280,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 10454, + "commentStart": 0, "end": 0, "raw": "0.7601866432836641", "start": 0, @@ -10291,7 +10291,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 10453, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10308,10 +10308,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 10405, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10405, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10321,7 +10321,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 10405, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10333,18 +10333,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 10491, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10497, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 10507, + "commentStart": 0, "end": 0, "raw": "0.6356501074317229", "start": 0, @@ -10355,7 +10355,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 10506, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10363,7 +10363,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 10534, + "commentStart": 0, "end": 0, "raw": "0.19458425399338064", "start": 0, @@ -10384,10 +10384,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 10486, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10486, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10397,7 +10397,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 10486, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10409,17 +10409,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 10572, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10578, + "commentStart": 0, "elements": [ { - "commentStart": 10579, + "commentStart": 0, "end": 0, "raw": "0.5721251777404546", "start": 0, @@ -10431,7 +10431,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 10599, + "commentStart": 0, "end": 0, "raw": "0.2888584097921527", "start": 0, @@ -10452,10 +10452,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 10567, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10567, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10465,7 +10465,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 10567, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10477,18 +10477,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 10630, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10636, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 10646, + "commentStart": 0, "end": 0, "raw": "0.9580409549552311", "start": 0, @@ -10499,7 +10499,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 10645, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10508,7 +10508,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 10674, + "commentStart": 0, "end": 0, "raw": "0.02243818192078395", "start": 0, @@ -10519,7 +10519,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 10673, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10536,10 +10536,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 10625, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10625, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10549,7 +10549,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 10625, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10561,17 +10561,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 10712, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10718, + "commentStart": 0, "elements": [ { - "commentStart": 10727, + "commentStart": 0, "end": 0, "raw": "0.3299184618602866", "start": 0, @@ -10584,7 +10584,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 10755, + "commentStart": 0, "end": 0, "raw": "0.8353726942369875", "start": 0, @@ -10595,7 +10595,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 10754, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10612,10 +10612,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 10707, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10707, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10625,7 +10625,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 10707, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10637,17 +10637,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 10792, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10798, + "commentStart": 0, "elements": [ { - "commentStart": 10807, + "commentStart": 0, "end": 0, "raw": "0.7434639386755209", "start": 0, @@ -10660,7 +10660,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 10835, + "commentStart": 0, "end": 0, "raw": "0.7919648864138378", "start": 0, @@ -10671,7 +10671,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 10834, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10688,10 +10688,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 10787, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10787, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10701,7 +10701,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 10787, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10713,17 +10713,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 10872, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10878, + "commentStart": 0, "elements": [ { - "commentStart": 10879, + "commentStart": 0, "end": 0, "raw": "0.9935751011164615", "start": 0, @@ -10735,7 +10735,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 10899, + "commentStart": 0, "end": 0, "raw": "0.9042566468497608", "start": 0, @@ -10756,10 +10756,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 10867, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10867, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10769,7 +10769,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 10867, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10781,18 +10781,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 10930, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 10936, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 10946, + "commentStart": 0, "end": 0, "raw": "0.5035812884687294", "start": 0, @@ -10803,7 +10803,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 10945, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -10811,7 +10811,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 10973, + "commentStart": 0, "end": 0, "raw": "0.5150967434989442", "start": 0, @@ -10832,10 +10832,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 10925, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10925, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10845,7 +10845,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 10925, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10857,17 +10857,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 11010, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11016, + "commentStart": 0, "elements": [ { - "commentStart": 11017, + "commentStart": 0, "end": 0, "raw": "0.5526227215900215", "start": 0, @@ -10879,7 +10879,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 11037, + "commentStart": 0, "end": 0, "raw": "0.7612604137272441", "start": 0, @@ -10900,10 +10900,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 11005, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11005, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10913,7 +10913,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 11005, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10925,17 +10925,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 11068, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11074, + "commentStart": 0, "elements": [ { - "commentStart": 11083, + "commentStart": 0, "end": 0, "raw": "0.8593271349126876", "start": 0, @@ -10947,7 +10947,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 11110, + "commentStart": 0, "end": 0, "raw": "0.08414894953725849", "start": 0, @@ -10968,10 +10968,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 11063, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11063, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -10981,7 +10981,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 11063, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -10993,18 +10993,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 11148, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11154, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 11164, + "commentStart": 0, "end": 0, "raw": "0.8181049219192864", "start": 0, @@ -11015,7 +11015,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 11163, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11024,7 +11024,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 11192, + "commentStart": 0, "end": 0, "raw": "0.903548131323352", "start": 0, @@ -11035,7 +11035,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 11191, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11052,10 +11052,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 11143, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11143, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11065,7 +11065,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 11143, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11077,17 +11077,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 11228, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11234, + "commentStart": 0, "elements": [ { - "commentStart": 11243, + "commentStart": 0, "end": 0, "raw": "0.3165782044458305", "start": 0, @@ -11100,7 +11100,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 11271, + "commentStart": 0, "end": 0, "raw": "0.24189274252014914", "start": 0, @@ -11111,7 +11111,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 11270, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11128,10 +11128,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 11223, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11223, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11141,7 +11141,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 11223, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11153,18 +11153,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 11309, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11315, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 11325, + "commentStart": 0, "end": 0, "raw": "0.44390956414045135", "start": 0, @@ -11175,7 +11175,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 11324, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11184,7 +11184,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 11354, + "commentStart": 0, "end": 0, "raw": "0.25912591535126905", "start": 0, @@ -11195,7 +11195,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 11353, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11212,10 +11212,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 11304, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11304, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11225,7 +11225,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 11304, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11237,18 +11237,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 11392, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11398, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 11408, + "commentStart": 0, "end": 0, "raw": "0.6605165911891009", "start": 0, @@ -11259,7 +11259,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 11407, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11268,7 +11268,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 11436, + "commentStart": 0, "end": 0, "raw": "0.40355115288839194", "start": 0, @@ -11279,7 +11279,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 11435, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11296,10 +11296,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 11387, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11387, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11309,7 +11309,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 11387, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11321,18 +11321,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 11474, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11480, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 11490, + "commentStart": 0, "end": 0, "raw": "0.7170489950180006", "start": 0, @@ -11343,7 +11343,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 11489, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11351,7 +11351,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 11517, + "commentStart": 0, "end": 0, "raw": "0.23454356079651384", "start": 0, @@ -11372,10 +11372,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 11469, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11469, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11385,7 +11385,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 11469, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11397,18 +11397,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 11555, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11561, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 11571, + "commentStart": 0, "end": 0, "raw": "0.2568187045379722", "start": 0, @@ -11419,7 +11419,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 11570, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11428,7 +11428,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 11599, + "commentStart": 0, "end": 0, "raw": "0.45031188717601367", "start": 0, @@ -11439,7 +11439,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 11598, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11456,10 +11456,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 11550, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11550, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11469,7 +11469,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 11550, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11481,17 +11481,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 11637, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11643, + "commentStart": 0, "elements": [ { - "commentStart": 11652, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -11504,7 +11504,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 11680, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -11515,7 +11515,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 11679, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11532,10 +11532,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 11632, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11632, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11545,7 +11545,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 11632, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11557,18 +11557,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 11717, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11723, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 11733, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -11579,7 +11579,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 11732, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11587,7 +11587,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 11760, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -11608,10 +11608,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 11712, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11712, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11621,7 +11621,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 11712, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11633,18 +11633,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 11797, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11803, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 11813, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -11655,7 +11655,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 11812, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11663,7 +11663,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 11840, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -11684,10 +11684,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 11792, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11792, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11697,7 +11697,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 11792, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11709,18 +11709,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 11877, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11883, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 11893, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -11731,7 +11731,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 11892, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11740,7 +11740,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 11921, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -11751,7 +11751,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 11920, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11768,10 +11768,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 11872, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11872, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11781,7 +11781,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 11872, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11793,17 +11793,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 11959, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 11965, + "commentStart": 0, "elements": [ { - "commentStart": 11974, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -11815,7 +11815,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 12002, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -11836,10 +11836,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 11954, + "commentStart": 0, "end": 0, "name": { - "commentStart": 11954, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11849,7 +11849,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 11954, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11861,17 +11861,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 12040, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12046, + "commentStart": 0, "elements": [ { - "commentStart": 12055, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -11883,7 +11883,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 12083, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -11904,10 +11904,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 12035, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12035, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11917,7 +11917,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 12035, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -11929,18 +11929,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 12121, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12127, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 12137, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -11951,7 +11951,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 12136, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -11959,7 +11959,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 12165, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -11980,10 +11980,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 12116, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12116, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -11993,7 +11993,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 12116, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12005,18 +12005,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 12202, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12208, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 12218, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -12027,7 +12027,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 12217, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12036,7 +12036,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 12247, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -12047,7 +12047,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 12246, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12064,10 +12064,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 12197, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12197, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12077,7 +12077,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 12197, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12089,17 +12089,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 12285, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12291, + "commentStart": 0, "elements": [ { - "commentStart": 12300, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -12112,7 +12112,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 12328, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -12123,7 +12123,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 12327, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12140,10 +12140,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 12280, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12280, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12153,7 +12153,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 12280, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12165,17 +12165,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 12366, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12372, + "commentStart": 0, "elements": [ { - "commentStart": 12381, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -12188,7 +12188,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 12412, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -12199,7 +12199,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 12411, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12216,10 +12216,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 12361, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12361, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12229,7 +12229,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 12361, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12241,17 +12241,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 12449, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12455, + "commentStart": 0, "elements": [ { - "commentStart": 12464, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -12264,7 +12264,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 12492, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -12275,7 +12275,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 12491, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12292,10 +12292,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 12444, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12444, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12305,7 +12305,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 12444, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12317,18 +12317,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 12529, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12535, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 12545, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -12339,7 +12339,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 12544, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12347,7 +12347,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 12572, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -12368,10 +12368,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 12524, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12524, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12381,7 +12381,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 12524, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12393,17 +12393,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 12609, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12615, + "commentStart": 0, "elements": [ { - "commentStart": 12616, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -12415,7 +12415,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 12636, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -12436,10 +12436,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 12604, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12604, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12449,7 +12449,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 12604, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12461,18 +12461,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 12667, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12673, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 12683, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -12483,7 +12483,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 12682, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12491,7 +12491,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 12711, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -12512,10 +12512,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 12662, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12662, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12525,7 +12525,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 12662, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12537,18 +12537,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 12750, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12756, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 12766, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -12559,7 +12559,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 12765, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12568,7 +12568,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 12794, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -12579,7 +12579,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 12793, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12596,10 +12596,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 12745, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12745, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12609,7 +12609,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 12745, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12621,18 +12621,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 12832, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12838, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 12848, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -12643,7 +12643,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 12847, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12652,7 +12652,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 12876, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -12663,7 +12663,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 12875, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12680,10 +12680,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 12827, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12827, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12693,7 +12693,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 12827, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12705,17 +12705,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 12914, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12920, + "commentStart": 0, "elements": [ { - "commentStart": 12921, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -12727,7 +12727,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 12940, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -12748,10 +12748,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 12909, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12909, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12761,7 +12761,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 12909, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12773,17 +12773,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 12971, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 12977, + "commentStart": 0, "elements": [ { - "commentStart": 12986, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -12796,7 +12796,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 13015, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -12807,7 +12807,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 13014, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12824,10 +12824,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 12966, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12966, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12837,7 +12837,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 12966, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12849,17 +12849,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 13053, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13059, + "commentStart": 0, "elements": [ { - "commentStart": 13060, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -12871,7 +12871,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 13080, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -12892,10 +12892,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 13048, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13048, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12905,7 +12905,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 13048, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12917,17 +12917,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 13110, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13116, + "commentStart": 0, "elements": [ { - "commentStart": 13125, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -12940,7 +12940,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 13154, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -12951,7 +12951,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 13153, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -12968,10 +12968,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 13105, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13105, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -12981,7 +12981,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 13105, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -12993,17 +12993,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 13191, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13197, + "commentStart": 0, "elements": [ { - "commentStart": 13198, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -13015,7 +13015,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 13218, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -13036,10 +13036,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 13186, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13186, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13049,7 +13049,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 13186, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13061,17 +13061,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 13249, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13255, + "commentStart": 0, "elements": [ { - "commentStart": 13264, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -13083,7 +13083,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 13291, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -13104,10 +13104,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 13244, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13244, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13117,7 +13117,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 13244, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13129,17 +13129,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 13329, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13335, + "commentStart": 0, "elements": [ { - "commentStart": 13336, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -13151,7 +13151,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 13356, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -13172,10 +13172,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 13324, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13324, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13185,7 +13185,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 13324, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13197,18 +13197,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 13387, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13393, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 13403, + "commentStart": 0, "end": 0, "raw": "0.3670208139314082", "start": 0, @@ -13219,7 +13219,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 13402, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13227,7 +13227,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 13430, + "commentStart": 0, "end": 0, "raw": "0.21201331909674526", "start": 0, @@ -13248,10 +13248,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 13382, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13382, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13261,7 +13261,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 13382, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13273,18 +13273,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 13468, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13474, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 13484, + "commentStart": 0, "end": 0, "raw": "0.4707511307971115", "start": 0, @@ -13295,7 +13295,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 13483, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13303,7 +13303,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 13511, + "commentStart": 0, "end": 0, "raw": "0.4905279615419764", "start": 0, @@ -13324,10 +13324,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 13463, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13463, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13337,7 +13337,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 13463, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13349,18 +13349,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 13548, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13554, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 13564, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -13371,7 +13371,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 13563, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13379,7 +13379,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 13591, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -13400,10 +13400,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 13543, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13543, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13413,7 +13413,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 13543, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13425,18 +13425,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 13628, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13634, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 13644, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -13447,7 +13447,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 13643, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13456,7 +13456,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 13672, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -13467,7 +13467,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 13671, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13484,10 +13484,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 13623, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13623, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13497,7 +13497,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 13623, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13509,17 +13509,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 13710, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13716, + "commentStart": 0, "elements": [ { - "commentStart": 13725, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -13531,7 +13531,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 13753, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -13552,10 +13552,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 13705, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13705, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13565,7 +13565,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 13705, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13577,17 +13577,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 13791, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13797, + "commentStart": 0, "elements": [ { - "commentStart": 13806, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -13599,7 +13599,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 13834, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -13620,10 +13620,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 13786, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13786, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13633,7 +13633,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 13786, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13645,18 +13645,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 13872, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13878, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 13888, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -13667,7 +13667,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 13887, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13675,7 +13675,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 13916, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -13696,10 +13696,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 13867, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13867, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13709,7 +13709,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 13867, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13721,18 +13721,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 13953, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 13959, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 13969, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -13743,7 +13743,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 13968, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13752,7 +13752,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 13998, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -13763,7 +13763,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 13997, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13780,10 +13780,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 13948, + "commentStart": 0, "end": 0, "name": { - "commentStart": 13948, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13793,7 +13793,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 13948, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13805,17 +13805,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 14036, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14042, + "commentStart": 0, "elements": [ { - "commentStart": 14051, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -13828,7 +13828,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 14079, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -13839,7 +13839,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 14078, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13856,10 +13856,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 14031, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14031, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13869,7 +13869,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 14031, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13881,17 +13881,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 14117, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14123, + "commentStart": 0, "elements": [ { - "commentStart": 14132, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -13904,7 +13904,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 14163, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -13915,7 +13915,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 14162, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -13932,10 +13932,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 14112, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14112, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -13945,7 +13945,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 14112, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -13957,17 +13957,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 14200, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14206, + "commentStart": 0, "elements": [ { - "commentStart": 14215, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -13980,7 +13980,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 14243, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -13991,7 +13991,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 14242, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14008,10 +14008,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 14195, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14195, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14021,7 +14021,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 14195, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14033,18 +14033,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 14280, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14286, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 14296, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -14055,7 +14055,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 14295, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14063,7 +14063,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 14323, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -14084,10 +14084,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 14275, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14275, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14097,7 +14097,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 14275, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14109,17 +14109,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 14360, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14366, + "commentStart": 0, "elements": [ { - "commentStart": 14367, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -14131,7 +14131,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 14387, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -14152,10 +14152,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 14355, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14355, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14165,7 +14165,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 14355, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14177,18 +14177,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 14418, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14424, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 14434, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -14199,7 +14199,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 14433, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14207,7 +14207,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 14462, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -14228,10 +14228,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 14413, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14413, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14241,7 +14241,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 14413, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14253,18 +14253,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 14501, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14507, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 14517, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -14275,7 +14275,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 14516, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14284,7 +14284,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 14545, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -14295,7 +14295,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 14544, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14312,10 +14312,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 14496, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14496, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14325,7 +14325,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 14496, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14337,18 +14337,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 14583, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14589, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 14599, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -14359,7 +14359,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 14598, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14368,7 +14368,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 14627, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -14379,7 +14379,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 14626, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14396,10 +14396,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 14578, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14578, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14409,7 +14409,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 14578, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14421,17 +14421,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 14665, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14671, + "commentStart": 0, "elements": [ { - "commentStart": 14672, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -14443,7 +14443,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 14691, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -14464,10 +14464,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 14660, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14660, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14477,7 +14477,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 14660, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14489,17 +14489,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 14722, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14728, + "commentStart": 0, "elements": [ { - "commentStart": 14737, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -14512,7 +14512,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 14766, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -14523,7 +14523,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 14765, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14540,10 +14540,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 14717, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14717, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14553,7 +14553,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 14717, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14565,17 +14565,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 14804, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14810, + "commentStart": 0, "elements": [ { - "commentStart": 14811, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -14587,7 +14587,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 14831, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -14608,10 +14608,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 14799, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14799, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14621,7 +14621,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 14799, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14633,17 +14633,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 14861, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14867, + "commentStart": 0, "elements": [ { - "commentStart": 14876, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -14656,7 +14656,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 14905, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -14667,7 +14667,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 14904, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14684,10 +14684,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 14856, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14856, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14697,7 +14697,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 14856, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14709,17 +14709,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 14942, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 14948, + "commentStart": 0, "elements": [ { - "commentStart": 14949, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -14731,7 +14731,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 14969, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -14752,10 +14752,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 14937, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14937, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14765,7 +14765,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 14937, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14777,17 +14777,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 15000, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15006, + "commentStart": 0, "elements": [ { - "commentStart": 15015, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -14799,7 +14799,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 15042, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -14820,10 +14820,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 14995, + "commentStart": 0, "end": 0, "name": { - "commentStart": 14995, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14833,7 +14833,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 14995, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14845,17 +14845,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 15080, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15086, + "commentStart": 0, "elements": [ { - "commentStart": 15087, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -14867,7 +14867,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 15107, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -14888,10 +14888,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 15075, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15075, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14901,7 +14901,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 15075, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14913,18 +14913,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 15138, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15144, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 15154, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -14935,7 +14935,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 15153, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14944,7 +14944,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 15183, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -14955,7 +14955,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 15182, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -14972,10 +14972,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 15133, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15133, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -14985,7 +14985,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 15133, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -14997,17 +14997,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 15220, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15226, + "commentStart": 0, "elements": [ { - "commentStart": 15235, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -15020,7 +15020,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 15263, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -15031,7 +15031,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 15262, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15048,10 +15048,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 15215, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15215, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15061,7 +15061,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 15215, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15073,18 +15073,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 15300, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15306, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 15316, + "commentStart": 0, "end": 0, "raw": "0.6716353749059765", "start": 0, @@ -15095,7 +15095,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 15315, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15104,7 +15104,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 15344, + "commentStart": 0, "end": 0, "raw": "0.9605576808879026", "start": 0, @@ -15115,7 +15115,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 15343, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15132,10 +15132,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 15295, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15295, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15145,7 +15145,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 15295, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15157,17 +15157,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 15381, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15387, + "commentStart": 0, "elements": [ { - "commentStart": 15396, + "commentStart": 0, "end": 0, "raw": "0.010280170930300203", "start": 0, @@ -15180,7 +15180,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 15426, + "commentStart": 0, "end": 0, "raw": "0.37344123662342166", "start": 0, @@ -15191,7 +15191,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 15425, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15208,10 +15208,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 15376, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15376, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15221,7 +15221,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 15376, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15233,18 +15233,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 15464, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15470, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 15480, + "commentStart": 0, "end": 0, "raw": "0.3670208139314082", "start": 0, @@ -15255,7 +15255,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 15479, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15263,7 +15263,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 15507, + "commentStart": 0, "end": 0, "raw": "0.21201331909674526", "start": 0, @@ -15284,10 +15284,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 15459, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15459, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15297,7 +15297,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 15459, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15309,18 +15309,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 15545, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15551, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 15561, + "commentStart": 0, "end": 0, "raw": "0.4707511307971115", "start": 0, @@ -15331,7 +15331,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 15560, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15339,7 +15339,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 15588, + "commentStart": 0, "end": 0, "raw": "0.4905279615419764", "start": 0, @@ -15360,10 +15360,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 15540, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15540, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15373,7 +15373,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 15540, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15385,18 +15385,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 15625, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15631, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 15641, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -15407,7 +15407,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 15640, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15415,7 +15415,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 15668, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -15436,10 +15436,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 15620, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15620, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15449,7 +15449,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 15620, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15461,18 +15461,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 15705, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15711, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 15721, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -15483,7 +15483,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 15720, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15492,7 +15492,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 15749, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -15503,7 +15503,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 15748, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15520,10 +15520,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 15700, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15700, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15533,7 +15533,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 15700, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15545,17 +15545,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 15787, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15793, + "commentStart": 0, "elements": [ { - "commentStart": 15802, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -15567,7 +15567,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 15830, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -15588,10 +15588,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 15782, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15782, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15601,7 +15601,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 15782, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15613,17 +15613,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 15868, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15874, + "commentStart": 0, "elements": [ { - "commentStart": 15883, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -15635,7 +15635,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 15911, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -15656,10 +15656,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 15863, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15863, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15669,7 +15669,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 15863, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15681,18 +15681,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 15949, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 15955, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 15965, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -15703,7 +15703,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 15964, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15711,7 +15711,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 15993, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -15732,10 +15732,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 15944, + "commentStart": 0, "end": 0, "name": { - "commentStart": 15944, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15745,7 +15745,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 15944, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15757,18 +15757,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 16030, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16036, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 16046, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -15779,7 +15779,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 16045, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15788,7 +15788,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 16075, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -15799,7 +15799,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 16074, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15816,10 +15816,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 16025, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16025, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15829,7 +15829,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 16025, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15841,17 +15841,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 16113, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16119, + "commentStart": 0, "elements": [ { - "commentStart": 16128, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -15864,7 +15864,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 16156, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -15875,7 +15875,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 16155, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15892,10 +15892,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 16108, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16108, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15905,7 +15905,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 16108, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15917,17 +15917,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 16194, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16200, + "commentStart": 0, "elements": [ { - "commentStart": 16209, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -15940,7 +15940,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 16240, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -15951,7 +15951,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 16239, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -15968,10 +15968,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 16189, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16189, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -15981,7 +15981,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 16189, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -15993,17 +15993,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 16277, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16283, + "commentStart": 0, "elements": [ { - "commentStart": 16292, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -16016,7 +16016,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 16320, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -16027,7 +16027,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 16319, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16044,10 +16044,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 16272, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16272, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16057,7 +16057,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 16272, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16069,18 +16069,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 16357, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16363, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 16373, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -16091,7 +16091,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 16372, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16099,7 +16099,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 16400, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -16120,10 +16120,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 16352, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16352, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16133,7 +16133,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 16352, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16145,17 +16145,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 16437, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16443, + "commentStart": 0, "elements": [ { - "commentStart": 16444, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -16167,7 +16167,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 16464, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -16188,10 +16188,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 16432, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16432, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16201,7 +16201,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 16432, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16213,18 +16213,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 16495, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16501, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 16511, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -16235,7 +16235,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 16510, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16243,7 +16243,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 16539, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -16264,10 +16264,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 16490, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16490, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16277,7 +16277,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 16490, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16289,18 +16289,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 16578, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16584, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 16594, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -16311,7 +16311,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 16593, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16320,7 +16320,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 16622, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -16331,7 +16331,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 16621, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16348,10 +16348,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 16573, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16573, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16361,7 +16361,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 16573, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16373,18 +16373,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 16660, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16666, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 16676, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -16395,7 +16395,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 16675, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16404,7 +16404,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 16704, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -16415,7 +16415,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 16703, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16432,10 +16432,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 16655, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16655, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16445,7 +16445,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 16655, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16457,17 +16457,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 16742, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16748, + "commentStart": 0, "elements": [ { - "commentStart": 16749, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -16479,7 +16479,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 16768, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -16500,10 +16500,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 16737, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16737, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16513,7 +16513,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 16737, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16525,17 +16525,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 16799, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16805, + "commentStart": 0, "elements": [ { - "commentStart": 16814, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -16548,7 +16548,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 16843, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -16559,7 +16559,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 16842, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16576,10 +16576,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 16794, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16794, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16589,7 +16589,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 16794, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16601,17 +16601,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 16881, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16887, + "commentStart": 0, "elements": [ { - "commentStart": 16888, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -16623,7 +16623,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 16908, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -16644,10 +16644,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 16876, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16876, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16657,7 +16657,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 16876, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16669,17 +16669,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 16938, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 16944, + "commentStart": 0, "elements": [ { - "commentStart": 16953, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -16692,7 +16692,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 16982, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -16703,7 +16703,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 16981, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16720,10 +16720,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 16933, + "commentStart": 0, "end": 0, "name": { - "commentStart": 16933, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16733,7 +16733,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 16933, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16745,17 +16745,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 17019, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17025, + "commentStart": 0, "elements": [ { - "commentStart": 17026, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -16767,7 +16767,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 17046, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -16788,10 +16788,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 17014, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17014, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16801,7 +16801,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 17014, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16813,17 +16813,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 17077, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17083, + "commentStart": 0, "elements": [ { - "commentStart": 17092, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -16835,7 +16835,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 17119, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -16856,10 +16856,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 17072, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17072, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16869,7 +16869,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 17072, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16881,17 +16881,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 17157, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17163, + "commentStart": 0, "elements": [ { - "commentStart": 17164, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -16903,7 +16903,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 17184, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -16924,10 +16924,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 17152, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17152, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -16937,7 +16937,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 17152, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -16949,18 +16949,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 17215, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17221, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 17231, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -16971,7 +16971,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 17230, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -16980,7 +16980,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 17260, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -16991,7 +16991,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 17259, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17008,10 +17008,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 17210, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17210, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17021,7 +17021,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 17210, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17033,17 +17033,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 17297, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17303, + "commentStart": 0, "elements": [ { - "commentStart": 17312, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -17056,7 +17056,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 17340, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -17067,7 +17067,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 17339, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17084,10 +17084,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 17292, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17292, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17097,7 +17097,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 17292, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17109,18 +17109,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 17377, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17383, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 17393, + "commentStart": 0, "end": 0, "raw": "0.6716353749059765", "start": 0, @@ -17131,7 +17131,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 17392, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17140,7 +17140,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 17421, + "commentStart": 0, "end": 0, "raw": "0.9605576808879026", "start": 0, @@ -17151,7 +17151,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 17420, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17168,10 +17168,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 17372, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17372, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17181,7 +17181,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 17372, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17193,17 +17193,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 17458, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17464, + "commentStart": 0, "elements": [ { - "commentStart": 17473, + "commentStart": 0, "end": 0, "raw": "0.010280170930300203", "start": 0, @@ -17216,7 +17216,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 17503, + "commentStart": 0, "end": 0, "raw": "0.37344123662342166", "start": 0, @@ -17227,7 +17227,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 17502, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17244,10 +17244,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 17453, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17453, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17257,7 +17257,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 17453, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17269,17 +17269,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 17541, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17547, + "commentStart": 0, "elements": [ { - "commentStart": 17556, + "commentStart": 0, "end": 0, "raw": "0.10357375682791004", "start": 0, @@ -17292,7 +17292,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 17585, + "commentStart": 0, "end": 0, "raw": "0.42294321030821425", "start": 0, @@ -17303,7 +17303,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 17584, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17320,10 +17320,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 17536, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17536, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17333,7 +17333,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 17536, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17345,17 +17345,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 17623, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17629, + "commentStart": 0, "elements": [ { - "commentStart": 17638, + "commentStart": 0, "end": 0, "raw": "0.4520311575096987", "start": 0, @@ -17368,7 +17368,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 17666, + "commentStart": 0, "end": 0, "raw": "0.11232675307600548", "start": 0, @@ -17379,7 +17379,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 17665, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17396,10 +17396,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 17618, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17618, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17409,7 +17409,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 17618, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17421,18 +17421,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 17704, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17710, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 17720, + "commentStart": 0, "end": 0, "raw": "0.8821185914380845", "start": 0, @@ -17443,7 +17443,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 17719, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17452,7 +17452,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 17748, + "commentStart": 0, "end": 0, "raw": "0.7155147434939819", "start": 0, @@ -17463,7 +17463,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 17747, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17480,10 +17480,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 17699, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17699, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17493,7 +17493,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 17699, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17505,17 +17505,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 17785, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17791, + "commentStart": 0, "elements": [ { - "commentStart": 17792, + "commentStart": 0, "end": 0, "raw": "0.9195487101690416", "start": 0, @@ -17527,7 +17527,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 17812, + "commentStart": 0, "end": 0, "raw": "0.2691627465297364", "start": 0, @@ -17548,10 +17548,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 17780, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17780, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17561,7 +17561,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 17780, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17573,17 +17573,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 17843, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17849, + "commentStart": 0, "elements": [ { - "commentStart": 17858, + "commentStart": 0, "end": 0, "raw": "0.7098978191546745", "start": 0, @@ -17595,7 +17595,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 17885, + "commentStart": 0, "end": 0, "raw": "0.11710004169385968", "start": 0, @@ -17616,10 +17616,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 17838, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17838, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17629,7 +17629,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 17838, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17641,18 +17641,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 17923, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 17929, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 17939, + "commentStart": 0, "end": 0, "raw": "0.37876368560819995", "start": 0, @@ -17663,7 +17663,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 17938, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17671,7 +17671,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 17967, + "commentStart": 0, "end": 0, "raw": "0.7106729314759084", "start": 0, @@ -17692,10 +17692,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 17918, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17918, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17705,7 +17705,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 17918, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17717,18 +17717,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 18004, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18010, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 18020, + "commentStart": 0, "end": 0, "raw": "0.29728126898353335", "start": 0, @@ -17739,7 +17739,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 18019, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17748,7 +17748,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 18049, + "commentStart": 0, "end": 0, "raw": "0.06649734568328003", "start": 0, @@ -17759,7 +17759,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 18048, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17776,10 +17776,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 17999, + "commentStart": 0, "end": 0, "name": { - "commentStart": 17999, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17789,7 +17789,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 17999, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17801,17 +17801,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 18087, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18093, + "commentStart": 0, "elements": [ { - "commentStart": 18102, + "commentStart": 0, "end": 0, "raw": "0.22965781558352072", "start": 0, @@ -17824,7 +17824,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 18131, + "commentStart": 0, "end": 0, "raw": "0.7601866432836641", "start": 0, @@ -17835,7 +17835,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 18130, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17852,10 +17852,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 18082, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18082, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17865,7 +17865,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 18082, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17877,18 +17877,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 18168, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18174, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 18184, + "commentStart": 0, "end": 0, "raw": "0.6356501074317229", "start": 0, @@ -17899,7 +17899,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 18183, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -17907,7 +17907,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 18211, + "commentStart": 0, "end": 0, "raw": "0.19458425399338064", "start": 0, @@ -17928,10 +17928,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 18163, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18163, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -17941,7 +17941,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 18163, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -17953,17 +17953,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 18249, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18255, + "commentStart": 0, "elements": [ { - "commentStart": 18256, + "commentStart": 0, "end": 0, "raw": "0.5721251777404546", "start": 0, @@ -17975,7 +17975,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 18276, + "commentStart": 0, "end": 0, "raw": "0.2888584097921527", "start": 0, @@ -17996,10 +17996,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 18244, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18244, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18009,7 +18009,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 18244, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18021,18 +18021,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 18307, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18313, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 18323, + "commentStart": 0, "end": 0, "raw": "0.9580409549552311", "start": 0, @@ -18043,7 +18043,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 18322, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18052,7 +18052,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 18351, + "commentStart": 0, "end": 0, "raw": "0.02243818192078395", "start": 0, @@ -18063,7 +18063,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 18350, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18080,10 +18080,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 18302, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18302, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18093,7 +18093,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 18302, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18105,17 +18105,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 18389, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18395, + "commentStart": 0, "elements": [ { - "commentStart": 18404, + "commentStart": 0, "end": 0, "raw": "0.3299184618602866", "start": 0, @@ -18128,7 +18128,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 18432, + "commentStart": 0, "end": 0, "raw": "0.8353726942369875", "start": 0, @@ -18139,7 +18139,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 18431, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18156,10 +18156,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 18384, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18384, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18169,7 +18169,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 18384, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18181,17 +18181,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 18469, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18475, + "commentStart": 0, "elements": [ { - "commentStart": 18484, + "commentStart": 0, "end": 0, "raw": "0.7434639386755209", "start": 0, @@ -18204,7 +18204,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 18512, + "commentStart": 0, "end": 0, "raw": "0.7919648864138378", "start": 0, @@ -18215,7 +18215,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 18511, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18232,10 +18232,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 18464, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18464, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18245,7 +18245,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 18464, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18257,17 +18257,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 18549, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18555, + "commentStart": 0, "elements": [ { - "commentStart": 18556, + "commentStart": 0, "end": 0, "raw": "0.9935751011164615", "start": 0, @@ -18279,7 +18279,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 18576, + "commentStart": 0, "end": 0, "raw": "0.9042566468497608", "start": 0, @@ -18300,10 +18300,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 18544, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18544, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18313,7 +18313,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 18544, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18325,18 +18325,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 18607, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18613, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 18623, + "commentStart": 0, "end": 0, "raw": "0.5035812884687294", "start": 0, @@ -18347,7 +18347,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 18622, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18355,7 +18355,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 18650, + "commentStart": 0, "end": 0, "raw": "0.5150967434989442", "start": 0, @@ -18376,10 +18376,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 18602, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18602, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18389,7 +18389,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 18602, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18401,17 +18401,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 18687, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18693, + "commentStart": 0, "elements": [ { - "commentStart": 18694, + "commentStart": 0, "end": 0, "raw": "0.5526227215900215", "start": 0, @@ -18423,7 +18423,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 18714, + "commentStart": 0, "end": 0, "raw": "0.7612604137272441", "start": 0, @@ -18444,10 +18444,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 18682, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18682, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18457,7 +18457,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 18682, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18469,17 +18469,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 18745, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18751, + "commentStart": 0, "elements": [ { - "commentStart": 18760, + "commentStart": 0, "end": 0, "raw": "0.8593271349126876", "start": 0, @@ -18491,7 +18491,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 18787, + "commentStart": 0, "end": 0, "raw": "0.08414894953725849", "start": 0, @@ -18512,10 +18512,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 18740, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18740, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18525,7 +18525,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 18740, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18537,18 +18537,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 18825, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18831, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 18841, + "commentStart": 0, "end": 0, "raw": "0.8181049219192864", "start": 0, @@ -18559,7 +18559,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 18840, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18568,7 +18568,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 18869, + "commentStart": 0, "end": 0, "raw": "0.903548131323352", "start": 0, @@ -18579,7 +18579,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 18868, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18596,10 +18596,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 18820, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18820, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18609,7 +18609,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 18820, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18621,17 +18621,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 18905, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18911, + "commentStart": 0, "elements": [ { - "commentStart": 18920, + "commentStart": 0, "end": 0, "raw": "0.3165782044458305", "start": 0, @@ -18644,7 +18644,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 18948, + "commentStart": 0, "end": 0, "raw": "0.24189274252014914", "start": 0, @@ -18655,7 +18655,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 18947, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18672,10 +18672,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 18900, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18900, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18685,7 +18685,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 18900, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18697,18 +18697,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 18986, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 18992, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 19002, + "commentStart": 0, "end": 0, "raw": "0.44390956414045135", "start": 0, @@ -18719,7 +18719,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 19001, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18728,7 +18728,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 19031, + "commentStart": 0, "end": 0, "raw": "0.25912591535126905", "start": 0, @@ -18739,7 +18739,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 19030, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18756,10 +18756,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 18981, + "commentStart": 0, "end": 0, "name": { - "commentStart": 18981, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18769,7 +18769,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 18981, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18781,18 +18781,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 19069, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 19075, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 19085, + "commentStart": 0, "end": 0, "raw": "0.6605165911891009", "start": 0, @@ -18803,7 +18803,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 19084, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18812,7 +18812,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 19113, + "commentStart": 0, "end": 0, "raw": "0.40355115288839194", "start": 0, @@ -18823,7 +18823,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 19112, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18840,10 +18840,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 19064, + "commentStart": 0, "end": 0, "name": { - "commentStart": 19064, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18853,7 +18853,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 19064, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18865,18 +18865,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 19151, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 19157, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 19167, + "commentStart": 0, "end": 0, "raw": "0.7170489950180006", "start": 0, @@ -18887,7 +18887,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 19166, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18895,7 +18895,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 19194, + "commentStart": 0, "end": 0, "raw": "0.23454356079651384", "start": 0, @@ -18916,10 +18916,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 19146, + "commentStart": 0, "end": 0, "name": { - "commentStart": 19146, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -18929,7 +18929,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 19146, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -18941,18 +18941,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 19232, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 19238, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 19248, + "commentStart": 0, "end": 0, "raw": "0.2568187045379722", "start": 0, @@ -18963,7 +18963,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 19247, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -18972,7 +18972,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 19276, + "commentStart": 0, "end": 0, "raw": "0.45031188717601367", "start": 0, @@ -18983,7 +18983,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 19275, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19000,10 +19000,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 19227, + "commentStart": 0, "end": 0, "name": { - "commentStart": 19227, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19013,7 +19013,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 19227, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19025,17 +19025,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 19314, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 19320, + "commentStart": 0, "elements": [ { - "commentStart": 19329, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -19048,7 +19048,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 19357, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -19059,7 +19059,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 19356, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19076,10 +19076,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 19309, + "commentStart": 0, "end": 0, "name": { - "commentStart": 19309, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19089,7 +19089,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 19309, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19101,18 +19101,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 19394, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 19400, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 19410, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -19123,7 +19123,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 19409, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19131,7 +19131,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 19437, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -19152,10 +19152,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 19389, + "commentStart": 0, "end": 0, "name": { - "commentStart": 19389, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19165,7 +19165,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 19389, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19177,18 +19177,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 19474, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 19480, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 19490, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -19199,7 +19199,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 19489, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19207,7 +19207,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 19517, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -19228,10 +19228,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 19469, + "commentStart": 0, "end": 0, "name": { - "commentStart": 19469, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19241,7 +19241,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 19469, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19253,18 +19253,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 19554, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 19560, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 19570, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -19275,7 +19275,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 19569, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19284,7 +19284,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 19598, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -19295,7 +19295,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 19597, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19312,10 +19312,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 19549, + "commentStart": 0, "end": 0, "name": { - "commentStart": 19549, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19325,7 +19325,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 19549, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19337,17 +19337,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 19636, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 19642, + "commentStart": 0, "elements": [ { - "commentStart": 19651, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -19359,7 +19359,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 19679, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -19380,10 +19380,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 19631, + "commentStart": 0, "end": 0, "name": { - "commentStart": 19631, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19393,7 +19393,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 19631, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19405,17 +19405,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 19717, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 19723, + "commentStart": 0, "elements": [ { - "commentStart": 19732, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -19427,7 +19427,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 19760, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -19448,10 +19448,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 19712, + "commentStart": 0, "end": 0, "name": { - "commentStart": 19712, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19461,7 +19461,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 19712, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19473,18 +19473,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 19798, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 19804, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 19814, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -19495,7 +19495,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 19813, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19503,7 +19503,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 19842, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -19524,10 +19524,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 19793, + "commentStart": 0, "end": 0, "name": { - "commentStart": 19793, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19537,7 +19537,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 19793, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19549,18 +19549,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 19879, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 19885, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 19895, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -19571,7 +19571,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 19894, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19580,7 +19580,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 19924, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -19591,7 +19591,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 19923, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19608,10 +19608,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 19874, + "commentStart": 0, "end": 0, "name": { - "commentStart": 19874, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19621,7 +19621,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 19874, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19633,17 +19633,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 19962, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 19968, + "commentStart": 0, "elements": [ { - "commentStart": 19977, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -19656,7 +19656,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 20005, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -19667,7 +19667,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 20004, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19684,10 +19684,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 19957, + "commentStart": 0, "end": 0, "name": { - "commentStart": 19957, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19697,7 +19697,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 19957, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19709,17 +19709,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 20043, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 20049, + "commentStart": 0, "elements": [ { - "commentStart": 20058, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -19732,7 +19732,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 20089, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -19743,7 +19743,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 20088, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19760,10 +19760,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 20038, + "commentStart": 0, "end": 0, "name": { - "commentStart": 20038, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19773,7 +19773,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 20038, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19785,17 +19785,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 20126, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 20132, + "commentStart": 0, "elements": [ { - "commentStart": 20141, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -19808,7 +19808,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 20169, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -19819,7 +19819,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 20168, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19836,10 +19836,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 20121, + "commentStart": 0, "end": 0, "name": { - "commentStart": 20121, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19849,7 +19849,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 20121, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19861,18 +19861,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 20206, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 20212, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 20222, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -19883,7 +19883,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 20221, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -19891,7 +19891,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 20249, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -19912,10 +19912,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 20201, + "commentStart": 0, "end": 0, "name": { - "commentStart": 20201, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19925,7 +19925,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 20201, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -19937,17 +19937,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 20286, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 20292, + "commentStart": 0, "elements": [ { - "commentStart": 20293, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -19959,7 +19959,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 20313, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -19980,10 +19980,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 20281, + "commentStart": 0, "end": 0, "name": { - "commentStart": 20281, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -19993,7 +19993,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 20281, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20005,18 +20005,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 20344, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 20350, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 20360, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -20027,7 +20027,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 20359, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20035,7 +20035,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 20388, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -20056,10 +20056,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 20339, + "commentStart": 0, "end": 0, "name": { - "commentStart": 20339, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20069,7 +20069,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 20339, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20081,18 +20081,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 20427, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 20433, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 20443, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -20103,7 +20103,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 20442, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20112,7 +20112,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 20471, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -20123,7 +20123,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 20470, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20140,10 +20140,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 20422, + "commentStart": 0, "end": 0, "name": { - "commentStart": 20422, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20153,7 +20153,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 20422, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20165,18 +20165,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 20509, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 20515, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 20525, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -20187,7 +20187,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 20524, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20196,7 +20196,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 20553, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -20207,7 +20207,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 20552, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20224,10 +20224,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 20504, + "commentStart": 0, "end": 0, "name": { - "commentStart": 20504, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20237,7 +20237,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 20504, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20249,17 +20249,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 20591, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 20597, + "commentStart": 0, "elements": [ { - "commentStart": 20598, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -20271,7 +20271,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 20617, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -20292,10 +20292,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 20586, + "commentStart": 0, "end": 0, "name": { - "commentStart": 20586, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20305,7 +20305,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 20586, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20317,17 +20317,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 20648, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 20654, + "commentStart": 0, "elements": [ { - "commentStart": 20663, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -20340,7 +20340,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 20692, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -20351,7 +20351,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 20691, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20368,10 +20368,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 20643, + "commentStart": 0, "end": 0, "name": { - "commentStart": 20643, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20381,7 +20381,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 20643, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20393,17 +20393,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 20730, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 20736, + "commentStart": 0, "elements": [ { - "commentStart": 20737, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -20415,7 +20415,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 20757, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -20436,10 +20436,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 20725, + "commentStart": 0, "end": 0, "name": { - "commentStart": 20725, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20449,7 +20449,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 20725, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20461,17 +20461,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 20787, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 20793, + "commentStart": 0, "elements": [ { - "commentStart": 20802, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -20484,7 +20484,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 20831, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -20495,7 +20495,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 20830, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20512,10 +20512,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 20782, + "commentStart": 0, "end": 0, "name": { - "commentStart": 20782, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20525,7 +20525,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 20782, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20537,17 +20537,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 20868, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 20874, + "commentStart": 0, "elements": [ { - "commentStart": 20875, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -20559,7 +20559,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 20895, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -20580,10 +20580,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 20863, + "commentStart": 0, "end": 0, "name": { - "commentStart": 20863, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20593,7 +20593,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 20863, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20605,17 +20605,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 20926, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 20932, + "commentStart": 0, "elements": [ { - "commentStart": 20941, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -20627,7 +20627,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 20968, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -20648,10 +20648,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 20921, + "commentStart": 0, "end": 0, "name": { - "commentStart": 20921, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20661,7 +20661,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 20921, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20673,17 +20673,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 21006, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 21012, + "commentStart": 0, "elements": [ { - "commentStart": 21013, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -20695,7 +20695,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 21033, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -20716,10 +20716,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 21001, + "commentStart": 0, "end": 0, "name": { - "commentStart": 21001, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20729,7 +20729,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 21001, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20741,18 +20741,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 21064, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 21070, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 21080, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -20763,7 +20763,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21079, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20772,7 +20772,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 21109, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -20783,7 +20783,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21108, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20800,10 +20800,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 21059, + "commentStart": 0, "end": 0, "name": { - "commentStart": 21059, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20813,7 +20813,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 21059, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20825,17 +20825,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 21146, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 21152, + "commentStart": 0, "elements": [ { - "commentStart": 21161, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -20848,7 +20848,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 21189, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -20859,7 +20859,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21188, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20876,10 +20876,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 21141, + "commentStart": 0, "end": 0, "name": { - "commentStart": 21141, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20889,7 +20889,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 21141, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20901,17 +20901,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 21226, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 21232, + "commentStart": 0, "elements": [ { - "commentStart": 21241, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -20924,7 +20924,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 21269, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -20935,7 +20935,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21268, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -20952,10 +20952,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 21221, + "commentStart": 0, "end": 0, "name": { - "commentStart": 21221, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -20965,7 +20965,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 21221, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -20977,18 +20977,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 21306, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 21312, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 21322, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -20999,7 +20999,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21321, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21007,7 +21007,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 21349, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -21028,10 +21028,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 21301, + "commentStart": 0, "end": 0, "name": { - "commentStart": 21301, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21041,7 +21041,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 21301, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21053,17 +21053,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 21386, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 21392, + "commentStart": 0, "elements": [ { - "commentStart": 21401, + "commentStart": 0, "end": 0, "raw": "0.9464450621708211", "start": 0, @@ -21076,7 +21076,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 21429, + "commentStart": 0, "end": 0, "raw": "0.2684908127803667", "start": 0, @@ -21087,7 +21087,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21428, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21104,10 +21104,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 21381, + "commentStart": 0, "end": 0, "name": { - "commentStart": 21381, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21117,7 +21117,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 21381, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21129,17 +21129,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 21466, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 21472, + "commentStart": 0, "elements": [ { - "commentStart": 21473, + "commentStart": 0, "end": 0, "raw": "0.5241732366617591", "start": 0, @@ -21151,7 +21151,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 21493, + "commentStart": 0, "end": 0, "raw": "0.9011437416408563", "start": 0, @@ -21172,10 +21172,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 21461, + "commentStart": 0, "end": 0, "name": { - "commentStart": 21461, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21185,7 +21185,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 21461, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21197,18 +21197,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 21524, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 21530, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 21540, + "commentStart": 0, "end": 0, "raw": "0.14255393713960607", "start": 0, @@ -21219,7 +21219,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21539, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21228,7 +21228,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 21569, + "commentStart": 0, "end": 0, "raw": "0.5194262624564814", "start": 0, @@ -21239,7 +21239,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21568, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21256,10 +21256,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 21519, + "commentStart": 0, "end": 0, "name": { - "commentStart": 21519, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21269,7 +21269,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 21519, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21281,18 +21281,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 21606, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 21612, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 21622, + "commentStart": 0, "end": 0, "raw": "0.4287123231350338", "start": 0, @@ -21303,7 +21303,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21621, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21312,7 +21312,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 21650, + "commentStart": 0, "end": 0, "raw": "0.4223564528725028", "start": 0, @@ -21323,7 +21323,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21649, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21340,10 +21340,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 21601, + "commentStart": 0, "end": 0, "name": { - "commentStart": 21601, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21353,7 +21353,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 21601, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21365,18 +21365,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 21687, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 21693, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 21703, + "commentStart": 0, "end": 0, "raw": "0.09316367294024519", "start": 0, @@ -21387,7 +21387,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21702, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21396,7 +21396,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 21732, + "commentStart": 0, "end": 0, "raw": "0.9063127021008246", "start": 0, @@ -21407,7 +21407,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21731, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21424,10 +21424,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 21682, + "commentStart": 0, "end": 0, "name": { - "commentStart": 21682, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21437,7 +21437,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 21682, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21449,18 +21449,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 21769, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 21775, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 21785, + "commentStart": 0, "end": 0, "raw": "0.2767766535558669", "start": 0, @@ -21471,7 +21471,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21784, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21479,7 +21479,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 21812, + "commentStart": 0, "end": 0, "raw": "0.6816248114129131", "start": 0, @@ -21500,10 +21500,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 21764, + "commentStart": 0, "end": 0, "name": { - "commentStart": 21764, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21513,7 +21513,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 21764, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21525,17 +21525,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 21849, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 21855, + "commentStart": 0, "elements": [ { - "commentStart": 21864, + "commentStart": 0, "end": 0, "raw": "0.9796762495562534", "start": 0, @@ -21548,7 +21548,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 21892, + "commentStart": 0, "end": 0, "raw": "0.0822145668330625", "start": 0, @@ -21559,7 +21559,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21891, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21576,10 +21576,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 21844, + "commentStart": 0, "end": 0, "name": { - "commentStart": 21844, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21589,7 +21589,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 21844, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21601,18 +21601,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 21929, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 21935, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 21945, + "commentStart": 0, "end": 0, "raw": "0.8666513070867441", "start": 0, @@ -21623,7 +21623,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21944, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21632,7 +21632,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 21973, + "commentStart": 0, "end": 0, "raw": "0.301053160242023", "start": 0, @@ -21643,7 +21643,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 21972, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21660,10 +21660,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 21924, + "commentStart": 0, "end": 0, "name": { - "commentStart": 21924, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21673,7 +21673,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 21924, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21685,17 +21685,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 22009, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 22015, + "commentStart": 0, "elements": [ { - "commentStart": 22024, + "commentStart": 0, "end": 0, "raw": "0.537415656028112", "start": 0, @@ -21707,7 +21707,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 22050, + "commentStart": 0, "end": 0, "raw": "0.020272692875002774", "start": 0, @@ -21728,10 +21728,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 22004, + "commentStart": 0, "end": 0, "name": { - "commentStart": 22004, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21741,7 +21741,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 22004, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21753,17 +21753,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 22089, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 22095, + "commentStart": 0, "elements": [ { - "commentStart": 22104, + "commentStart": 0, "end": 0, "raw": "0.9332396256457531", "start": 0, @@ -21776,7 +21776,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 22132, + "commentStart": 0, "end": 0, "raw": "0.6228175690649898", "start": 0, @@ -21787,7 +21787,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 22131, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21804,10 +21804,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 22084, + "commentStart": 0, "end": 0, "name": { - "commentStart": 22084, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21817,7 +21817,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 22084, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21829,17 +21829,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 22169, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 22175, + "commentStart": 0, "elements": [ { - "commentStart": 22184, + "commentStart": 0, "end": 0, "raw": "0.18052415837320734", "start": 0, @@ -21852,7 +21852,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 22213, + "commentStart": 0, "end": 0, "raw": "0.36894384647296197", "start": 0, @@ -21863,7 +21863,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 22212, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -21880,10 +21880,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 22164, + "commentStart": 0, "end": 0, "name": { - "commentStart": 22164, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21893,7 +21893,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 22164, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21905,17 +21905,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 22251, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 22257, + "commentStart": 0, "elements": [ { - "commentStart": 22258, + "commentStart": 0, "end": 0, "raw": "0.5384372634075449", "start": 0, @@ -21927,7 +21927,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 22278, + "commentStart": 0, "end": 0, "raw": "0.2377565050887107", "start": 0, @@ -21948,10 +21948,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 22246, + "commentStart": 0, "end": 0, "name": { - "commentStart": 22246, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -21961,7 +21961,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 22246, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -21973,17 +21973,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 22309, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 22315, + "commentStart": 0, "elements": [ { - "commentStart": 22324, + "commentStart": 0, "end": 0, "raw": "0.39043436929278874", "start": 0, @@ -21995,7 +21995,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 22352, + "commentStart": 0, "end": 0, "raw": "0.14273182483160451", "start": 0, @@ -22016,10 +22016,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 22304, + "commentStart": 0, "end": 0, "name": { - "commentStart": 22304, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -22029,7 +22029,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 22304, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -22041,17 +22041,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 22390, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 22396, + "commentStart": 0, "elements": [ { - "commentStart": 22405, + "commentStart": 0, "end": 0, "raw": "0.09782890412897283", "start": 0, @@ -22063,7 +22063,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 22433, + "commentStart": 0, "end": 0, "raw": "0.9907667536909659", "start": 0, @@ -22084,10 +22084,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 22385, + "commentStart": 0, "end": 0, "name": { - "commentStart": 22385, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -22097,7 +22097,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 22385, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -22109,17 +22109,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 22470, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 22476, + "commentStart": 0, "elements": [ { - "commentStart": 22485, + "commentStart": 0, "end": 0, "raw": "0.5286610085921146", "start": 0, @@ -22132,7 +22132,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 22513, + "commentStart": 0, "end": 0, "raw": "0.7924508308419256", "start": 0, @@ -22143,7 +22143,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 22512, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -22160,10 +22160,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 22465, + "commentStart": 0, "end": 0, "name": { - "commentStart": 22465, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -22173,7 +22173,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 22465, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -22185,17 +22185,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 22550, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 22556, + "commentStart": 0, "elements": [ { - "commentStart": 22565, + "commentStart": 0, "end": 0, "raw": "0.3789978184503342", "start": 0, @@ -22207,7 +22207,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 22592, + "commentStart": 0, "end": 0, "raw": "0.12396120576838676", "start": 0, @@ -22228,10 +22228,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 22545, + "commentStart": 0, "end": 0, "name": { - "commentStart": 22545, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -22241,7 +22241,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 22545, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -22253,18 +22253,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 22630, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 22636, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 22646, + "commentStart": 0, "end": 0, "raw": "0.9484912744890612", "start": 0, @@ -22275,7 +22275,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 22645, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -22283,7 +22283,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 22673, + "commentStart": 0, "end": 0, "raw": "0.6729649846476855", "start": 0, @@ -22304,10 +22304,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 22625, + "commentStart": 0, "end": 0, "name": { - "commentStart": 22625, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -22317,7 +22317,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 22625, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -22329,17 +22329,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 22710, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 22716, + "commentStart": 0, "elements": [ { - "commentStart": 22725, + "commentStart": 0, "end": 0, "raw": "0.7451758753425153", "start": 0, @@ -22352,7 +22352,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 22753, + "commentStart": 0, "end": 0, "raw": "0.21318737562458967", "start": 0, @@ -22363,7 +22363,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 22752, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -22380,10 +22380,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 22705, + "commentStart": 0, "end": 0, "name": { - "commentStart": 22705, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -22393,7 +22393,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 22705, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -22405,17 +22405,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 22791, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 22797, + "commentStart": 0, "elements": [ { - "commentStart": 22806, + "commentStart": 0, "end": 0, "raw": "0.1873200727251887", "start": 0, @@ -22428,7 +22428,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 22834, + "commentStart": 0, "end": 0, "raw": "0.15961374297992448", "start": 0, @@ -22439,7 +22439,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 22833, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -22456,10 +22456,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 22786, + "commentStart": 0, "end": 0, "name": { - "commentStart": 22786, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -22469,7 +22469,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 22786, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -22481,18 +22481,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 22872, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 22878, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 22888, + "commentStart": 0, "end": 0, "raw": "0.05729464924537564", "start": 0, @@ -22503,7 +22503,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 22887, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -22512,7 +22512,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 22917, + "commentStart": 0, "end": 0, "raw": "0.5436345558508746", "start": 0, @@ -22523,7 +22523,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 22916, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -22540,10 +22540,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 22867, + "commentStart": 0, "end": 0, "name": { - "commentStart": 22867, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -22553,7 +22553,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 22867, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -22565,18 +22565,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 22954, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 22960, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 22970, + "commentStart": 0, "end": 0, "raw": "0.09582414374469184", "start": 0, @@ -22587,7 +22587,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 22969, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -22596,7 +22596,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 22999, + "commentStart": 0, "end": 0, "raw": "0.7533839681212353", "start": 0, @@ -22607,7 +22607,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 22998, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -22624,10 +22624,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 22949, + "commentStart": 0, "end": 0, "name": { - "commentStart": 22949, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -22637,7 +22637,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 22949, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -22649,18 +22649,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 23036, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 23042, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 23052, + "commentStart": 0, "end": 0, "raw": "0.17254116580051848", "start": 0, @@ -22671,7 +22671,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 23051, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -22680,7 +22680,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 23081, + "commentStart": 0, "end": 0, "raw": "0.7669113400341137", "start": 0, @@ -22691,7 +22691,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 23080, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -22708,10 +22708,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 23031, + "commentStart": 0, "end": 0, "name": { - "commentStart": 23031, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -22721,7 +22721,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 23031, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -22733,17 +22733,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 23118, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 23124, + "commentStart": 0, "elements": [ { - "commentStart": 23125, + "commentStart": 0, "end": 0, "raw": "0.8944730032887609", "start": 0, @@ -22755,7 +22755,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 23145, + "commentStart": 0, "end": 0, "raw": "0.6093318694741408", "start": 0, @@ -22776,10 +22776,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 23113, + "commentStart": 0, "end": 0, "name": { - "commentStart": 23113, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -22789,7 +22789,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 23113, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -22801,18 +22801,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 23176, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 23182, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 23192, + "commentStart": 0, "end": 0, "raw": "0.3670208139314082", "start": 0, @@ -22823,7 +22823,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 23191, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -22831,7 +22831,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 23219, + "commentStart": 0, "end": 0, "raw": "0.21201331909674526", "start": 0, @@ -22852,10 +22852,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 23171, + "commentStart": 0, "end": 0, "name": { - "commentStart": 23171, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -22865,7 +22865,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 23171, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -22877,18 +22877,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 23257, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 23263, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 23273, + "commentStart": 0, "end": 0, "raw": "0.4707511307971115", "start": 0, @@ -22899,7 +22899,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 23272, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -22907,7 +22907,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 23300, + "commentStart": 0, "end": 0, "raw": "0.4905279615419764", "start": 0, @@ -22928,10 +22928,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 23252, + "commentStart": 0, "end": 0, "name": { - "commentStart": 23252, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -22941,7 +22941,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 23252, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -22953,18 +22953,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 23337, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 23343, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 23353, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -22975,7 +22975,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 23352, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -22983,7 +22983,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 23380, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -23004,10 +23004,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 23332, + "commentStart": 0, "end": 0, "name": { - "commentStart": 23332, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -23017,7 +23017,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 23332, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -23029,18 +23029,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 23417, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 23423, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 23433, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -23051,7 +23051,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 23432, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -23060,7 +23060,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 23461, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -23071,7 +23071,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 23460, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -23088,10 +23088,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 23412, + "commentStart": 0, "end": 0, "name": { - "commentStart": 23412, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -23101,7 +23101,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 23412, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -23113,17 +23113,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 23499, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 23505, + "commentStart": 0, "elements": [ { - "commentStart": 23514, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -23135,7 +23135,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 23542, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -23156,10 +23156,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 23494, + "commentStart": 0, "end": 0, "name": { - "commentStart": 23494, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -23169,7 +23169,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 23494, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -23181,17 +23181,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 23580, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 23586, + "commentStart": 0, "elements": [ { - "commentStart": 23595, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -23203,7 +23203,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 23623, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -23224,10 +23224,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 23575, + "commentStart": 0, "end": 0, "name": { - "commentStart": 23575, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -23237,7 +23237,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 23575, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -23249,18 +23249,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 23661, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 23667, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 23677, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -23271,7 +23271,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 23676, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -23279,7 +23279,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 23705, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -23300,10 +23300,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 23656, + "commentStart": 0, "end": 0, "name": { - "commentStart": 23656, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -23313,7 +23313,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 23656, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -23325,18 +23325,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 23742, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 23748, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 23758, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -23347,7 +23347,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 23757, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -23356,7 +23356,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 23787, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -23367,7 +23367,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 23786, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -23384,10 +23384,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 23737, + "commentStart": 0, "end": 0, "name": { - "commentStart": 23737, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -23397,7 +23397,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 23737, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -23409,17 +23409,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 23825, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 23831, + "commentStart": 0, "elements": [ { - "commentStart": 23840, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -23432,7 +23432,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 23868, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -23443,7 +23443,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 23867, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -23460,10 +23460,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 23820, + "commentStart": 0, "end": 0, "name": { - "commentStart": 23820, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -23473,7 +23473,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 23820, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -23485,17 +23485,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 23906, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 23912, + "commentStart": 0, "elements": [ { - "commentStart": 23921, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -23508,7 +23508,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 23952, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -23519,7 +23519,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 23951, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -23536,10 +23536,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 23901, + "commentStart": 0, "end": 0, "name": { - "commentStart": 23901, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -23549,7 +23549,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 23901, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -23561,17 +23561,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 23989, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 23995, + "commentStart": 0, "elements": [ { - "commentStart": 24004, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -23584,7 +23584,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 24032, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -23595,7 +23595,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 24031, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -23612,10 +23612,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 23984, + "commentStart": 0, "end": 0, "name": { - "commentStart": 23984, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -23625,7 +23625,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 23984, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -23637,18 +23637,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 24069, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 24075, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 24085, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -23659,7 +23659,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 24084, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -23667,7 +23667,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 24112, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -23688,10 +23688,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 24064, + "commentStart": 0, "end": 0, "name": { - "commentStart": 24064, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -23701,7 +23701,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 24064, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -23713,17 +23713,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 24149, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 24155, + "commentStart": 0, "elements": [ { - "commentStart": 24156, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -23735,7 +23735,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 24176, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -23756,10 +23756,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 24144, + "commentStart": 0, "end": 0, "name": { - "commentStart": 24144, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -23769,7 +23769,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 24144, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -23781,18 +23781,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 24207, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 24213, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 24223, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -23803,7 +23803,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 24222, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -23811,7 +23811,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 24251, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -23832,10 +23832,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 24202, + "commentStart": 0, "end": 0, "name": { - "commentStart": 24202, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -23845,7 +23845,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 24202, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -23857,18 +23857,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 24290, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 24296, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 24306, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -23879,7 +23879,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 24305, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -23888,7 +23888,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 24334, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -23899,7 +23899,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 24333, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -23916,10 +23916,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 24285, + "commentStart": 0, "end": 0, "name": { - "commentStart": 24285, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -23929,7 +23929,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 24285, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -23941,18 +23941,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 24372, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 24378, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 24388, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -23963,7 +23963,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 24387, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -23972,7 +23972,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 24416, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -23983,7 +23983,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 24415, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -24000,10 +24000,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 24367, + "commentStart": 0, "end": 0, "name": { - "commentStart": 24367, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -24013,7 +24013,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 24367, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -24025,17 +24025,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 24454, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 24460, + "commentStart": 0, "elements": [ { - "commentStart": 24461, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -24047,7 +24047,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 24480, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -24068,10 +24068,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 24449, + "commentStart": 0, "end": 0, "name": { - "commentStart": 24449, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -24081,7 +24081,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 24449, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -24093,17 +24093,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 24511, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 24517, + "commentStart": 0, "elements": [ { - "commentStart": 24526, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -24116,7 +24116,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 24555, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -24127,7 +24127,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 24554, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -24144,10 +24144,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 24506, + "commentStart": 0, "end": 0, "name": { - "commentStart": 24506, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -24157,7 +24157,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 24506, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -24169,17 +24169,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 24593, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 24599, + "commentStart": 0, "elements": [ { - "commentStart": 24600, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -24191,7 +24191,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 24620, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -24212,10 +24212,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 24588, + "commentStart": 0, "end": 0, "name": { - "commentStart": 24588, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -24225,7 +24225,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 24588, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -24237,17 +24237,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 24650, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 24656, + "commentStart": 0, "elements": [ { - "commentStart": 24665, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -24260,7 +24260,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 24694, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -24271,7 +24271,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 24693, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -24288,10 +24288,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 24645, + "commentStart": 0, "end": 0, "name": { - "commentStart": 24645, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -24301,7 +24301,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 24645, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -24313,17 +24313,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 24731, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 24737, + "commentStart": 0, "elements": [ { - "commentStart": 24738, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -24335,7 +24335,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 24758, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -24356,10 +24356,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 24726, + "commentStart": 0, "end": 0, "name": { - "commentStart": 24726, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -24369,7 +24369,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 24726, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -24381,17 +24381,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 24789, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 24795, + "commentStart": 0, "elements": [ { - "commentStart": 24804, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -24403,7 +24403,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 24831, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -24424,10 +24424,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 24784, + "commentStart": 0, "end": 0, "name": { - "commentStart": 24784, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -24437,7 +24437,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 24784, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -24449,17 +24449,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 24869, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 24875, + "commentStart": 0, "elements": [ { - "commentStart": 24876, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -24471,7 +24471,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 24896, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -24492,10 +24492,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 24864, + "commentStart": 0, "end": 0, "name": { - "commentStart": 24864, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -24505,7 +24505,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 24864, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -24517,18 +24517,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 24927, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 24933, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 24943, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -24539,7 +24539,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 24942, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -24548,7 +24548,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 24972, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -24559,7 +24559,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 24971, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -24576,10 +24576,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 24922, + "commentStart": 0, "end": 0, "name": { - "commentStart": 24922, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -24589,7 +24589,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 24922, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -24601,17 +24601,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 25009, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 25015, + "commentStart": 0, "elements": [ { - "commentStart": 25024, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -24624,7 +24624,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 25052, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -24635,7 +24635,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 25051, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -24652,10 +24652,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 25004, + "commentStart": 0, "end": 0, "name": { - "commentStart": 25004, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -24665,7 +24665,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 25004, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -24677,18 +24677,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 25089, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 25095, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 25105, + "commentStart": 0, "end": 0, "raw": "0.6716353749059765", "start": 0, @@ -24699,7 +24699,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 25104, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -24708,7 +24708,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 25133, + "commentStart": 0, "end": 0, "raw": "0.9605576808879026", "start": 0, @@ -24719,7 +24719,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 25132, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -24736,10 +24736,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 25084, + "commentStart": 0, "end": 0, "name": { - "commentStart": 25084, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -24749,7 +24749,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 25084, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -24761,17 +24761,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 25170, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 25176, + "commentStart": 0, "elements": [ { - "commentStart": 25185, + "commentStart": 0, "end": 0, "raw": "0.010280170930300203", "start": 0, @@ -24784,7 +24784,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 25215, + "commentStart": 0, "end": 0, "raw": "0.37344123662342166", "start": 0, @@ -24795,7 +24795,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 25214, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -24812,10 +24812,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 25165, + "commentStart": 0, "end": 0, "name": { - "commentStart": 25165, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -24825,7 +24825,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 25165, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -24837,17 +24837,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 25253, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 25259, + "commentStart": 0, "elements": [ { - "commentStart": 25268, + "commentStart": 0, "end": 0, "raw": "0.10357375682791004", "start": 0, @@ -24860,7 +24860,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 25297, + "commentStart": 0, "end": 0, "raw": "0.42294321030821425", "start": 0, @@ -24871,7 +24871,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 25296, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -24888,10 +24888,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 25248, + "commentStart": 0, "end": 0, "name": { - "commentStart": 25248, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -24901,7 +24901,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 25248, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -24913,17 +24913,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 25335, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 25341, + "commentStart": 0, "elements": [ { - "commentStart": 25350, + "commentStart": 0, "end": 0, "raw": "0.4520311575096987", "start": 0, @@ -24936,7 +24936,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 25378, + "commentStart": 0, "end": 0, "raw": "0.11232675307600548", "start": 0, @@ -24947,7 +24947,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 25377, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -24964,10 +24964,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 25330, + "commentStart": 0, "end": 0, "name": { - "commentStart": 25330, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -24977,7 +24977,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 25330, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -24989,18 +24989,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 25416, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 25422, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 25432, + "commentStart": 0, "end": 0, "raw": "0.8821185914380845", "start": 0, @@ -25011,7 +25011,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 25431, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -25020,7 +25020,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 25460, + "commentStart": 0, "end": 0, "raw": "0.7155147434939819", "start": 0, @@ -25031,7 +25031,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 25459, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -25048,10 +25048,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 25411, + "commentStart": 0, "end": 0, "name": { - "commentStart": 25411, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -25061,7 +25061,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 25411, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -25073,17 +25073,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 25497, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 25503, + "commentStart": 0, "elements": [ { - "commentStart": 25504, + "commentStart": 0, "end": 0, "raw": "0.9195487101690416", "start": 0, @@ -25095,7 +25095,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 25524, + "commentStart": 0, "end": 0, "raw": "0.2691627465297364", "start": 0, @@ -25116,10 +25116,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 25492, + "commentStart": 0, "end": 0, "name": { - "commentStart": 25492, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -25129,7 +25129,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 25492, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -25141,17 +25141,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 25555, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 25561, + "commentStart": 0, "elements": [ { - "commentStart": 25570, + "commentStart": 0, "end": 0, "raw": "0.7098978191546745", "start": 0, @@ -25163,7 +25163,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 25597, + "commentStart": 0, "end": 0, "raw": "0.11710004169385968", "start": 0, @@ -25184,10 +25184,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 25550, + "commentStart": 0, "end": 0, "name": { - "commentStart": 25550, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -25197,7 +25197,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 25550, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -25209,18 +25209,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 25635, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 25641, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 25651, + "commentStart": 0, "end": 0, "raw": "0.37876368560819995", "start": 0, @@ -25231,7 +25231,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 25650, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -25239,7 +25239,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 25679, + "commentStart": 0, "end": 0, "raw": "0.7106729314759084", "start": 0, @@ -25260,10 +25260,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 25630, + "commentStart": 0, "end": 0, "name": { - "commentStart": 25630, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -25273,7 +25273,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 25630, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -25285,18 +25285,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 25716, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 25722, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 25732, + "commentStart": 0, "end": 0, "raw": "0.29728126898353335", "start": 0, @@ -25307,7 +25307,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 25731, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -25316,7 +25316,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 25761, + "commentStart": 0, "end": 0, "raw": "0.06649734568328003", "start": 0, @@ -25327,7 +25327,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 25760, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -25344,10 +25344,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 25711, + "commentStart": 0, "end": 0, "name": { - "commentStart": 25711, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -25357,7 +25357,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 25711, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -25369,17 +25369,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 25799, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 25805, + "commentStart": 0, "elements": [ { - "commentStart": 25814, + "commentStart": 0, "end": 0, "raw": "0.22965781558352072", "start": 0, @@ -25392,7 +25392,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 25843, + "commentStart": 0, "end": 0, "raw": "0.7601866432836641", "start": 0, @@ -25403,7 +25403,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 25842, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -25420,10 +25420,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 25794, + "commentStart": 0, "end": 0, "name": { - "commentStart": 25794, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -25433,7 +25433,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 25794, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -25445,18 +25445,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 25880, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 25886, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 25896, + "commentStart": 0, "end": 0, "raw": "0.6356501074317229", "start": 0, @@ -25467,7 +25467,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 25895, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -25475,7 +25475,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 25923, + "commentStart": 0, "end": 0, "raw": "0.19458425399338064", "start": 0, @@ -25496,10 +25496,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 25875, + "commentStart": 0, "end": 0, "name": { - "commentStart": 25875, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -25509,7 +25509,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 25875, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -25521,17 +25521,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 25961, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 25967, + "commentStart": 0, "elements": [ { - "commentStart": 25968, + "commentStart": 0, "end": 0, "raw": "0.5721251777404546", "start": 0, @@ -25543,7 +25543,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 25988, + "commentStart": 0, "end": 0, "raw": "0.2888584097921527", "start": 0, @@ -25564,10 +25564,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 25956, + "commentStart": 0, "end": 0, "name": { - "commentStart": 25956, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -25577,7 +25577,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 25956, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -25589,18 +25589,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 26019, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 26025, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 26035, + "commentStart": 0, "end": 0, "raw": "0.9580409549552311", "start": 0, @@ -25611,7 +25611,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 26034, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -25620,7 +25620,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 26063, + "commentStart": 0, "end": 0, "raw": "0.02243818192078395", "start": 0, @@ -25631,7 +25631,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 26062, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -25648,10 +25648,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 26014, + "commentStart": 0, "end": 0, "name": { - "commentStart": 26014, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -25661,7 +25661,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 26014, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -25673,17 +25673,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 26101, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 26107, + "commentStart": 0, "elements": [ { - "commentStart": 26116, + "commentStart": 0, "end": 0, "raw": "0.3299184618602866", "start": 0, @@ -25696,7 +25696,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 26144, + "commentStart": 0, "end": 0, "raw": "0.8353726942369875", "start": 0, @@ -25707,7 +25707,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 26143, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -25724,10 +25724,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 26096, + "commentStart": 0, "end": 0, "name": { - "commentStart": 26096, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -25737,7 +25737,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 26096, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -25749,17 +25749,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 26181, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 26187, + "commentStart": 0, "elements": [ { - "commentStart": 26196, + "commentStart": 0, "end": 0, "raw": "0.7434639386755209", "start": 0, @@ -25772,7 +25772,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 26224, + "commentStart": 0, "end": 0, "raw": "0.7919648864138378", "start": 0, @@ -25783,7 +25783,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 26223, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -25800,10 +25800,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 26176, + "commentStart": 0, "end": 0, "name": { - "commentStart": 26176, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -25813,7 +25813,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 26176, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -25825,17 +25825,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 26261, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 26267, + "commentStart": 0, "elements": [ { - "commentStart": 26268, + "commentStart": 0, "end": 0, "raw": "0.9935751011164615", "start": 0, @@ -25847,7 +25847,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 26288, + "commentStart": 0, "end": 0, "raw": "0.9042566468497608", "start": 0, @@ -25868,10 +25868,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 26256, + "commentStart": 0, "end": 0, "name": { - "commentStart": 26256, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -25881,7 +25881,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 26256, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -25893,18 +25893,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 26319, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 26325, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 26335, + "commentStart": 0, "end": 0, "raw": "0.5035812884687294", "start": 0, @@ -25915,7 +25915,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 26334, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -25923,7 +25923,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 26362, + "commentStart": 0, "end": 0, "raw": "0.5150967434989442", "start": 0, @@ -25944,10 +25944,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 26314, + "commentStart": 0, "end": 0, "name": { - "commentStart": 26314, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -25957,7 +25957,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 26314, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -25969,17 +25969,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 26399, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 26405, + "commentStart": 0, "elements": [ { - "commentStart": 26406, + "commentStart": 0, "end": 0, "raw": "0.5526227215900215", "start": 0, @@ -25991,7 +25991,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 26426, + "commentStart": 0, "end": 0, "raw": "0.7612604137272441", "start": 0, @@ -26012,10 +26012,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 26394, + "commentStart": 0, "end": 0, "name": { - "commentStart": 26394, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -26025,7 +26025,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 26394, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -26037,17 +26037,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 26457, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 26463, + "commentStart": 0, "elements": [ { - "commentStart": 26472, + "commentStart": 0, "end": 0, "raw": "0.8593271349126876", "start": 0, @@ -26059,7 +26059,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 26499, + "commentStart": 0, "end": 0, "raw": "0.08414894953725849", "start": 0, @@ -26080,10 +26080,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 26452, + "commentStart": 0, "end": 0, "name": { - "commentStart": 26452, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -26093,7 +26093,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 26452, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -26105,18 +26105,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 26537, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 26543, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 26553, + "commentStart": 0, "end": 0, "raw": "0.8181049219192864", "start": 0, @@ -26127,7 +26127,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 26552, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -26136,7 +26136,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 26581, + "commentStart": 0, "end": 0, "raw": "0.903548131323352", "start": 0, @@ -26147,7 +26147,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 26580, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -26164,10 +26164,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 26532, + "commentStart": 0, "end": 0, "name": { - "commentStart": 26532, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -26177,7 +26177,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 26532, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -26189,17 +26189,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 26617, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 26623, + "commentStart": 0, "elements": [ { - "commentStart": 26632, + "commentStart": 0, "end": 0, "raw": "0.3165782044458305", "start": 0, @@ -26212,7 +26212,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 26660, + "commentStart": 0, "end": 0, "raw": "0.24189274252014914", "start": 0, @@ -26223,7 +26223,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 26659, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -26240,10 +26240,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 26612, + "commentStart": 0, "end": 0, "name": { - "commentStart": 26612, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -26253,7 +26253,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 26612, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -26265,18 +26265,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 26698, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 26704, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 26714, + "commentStart": 0, "end": 0, "raw": "0.44390956414045135", "start": 0, @@ -26287,7 +26287,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 26713, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -26296,7 +26296,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 26743, + "commentStart": 0, "end": 0, "raw": "0.25912591535126905", "start": 0, @@ -26307,7 +26307,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 26742, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -26324,10 +26324,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 26693, + "commentStart": 0, "end": 0, "name": { - "commentStart": 26693, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -26337,7 +26337,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 26693, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -26349,18 +26349,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 26781, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 26787, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 26797, + "commentStart": 0, "end": 0, "raw": "0.6605165911891009", "start": 0, @@ -26371,7 +26371,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 26796, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -26380,7 +26380,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 26825, + "commentStart": 0, "end": 0, "raw": "0.40355115288839194", "start": 0, @@ -26391,7 +26391,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 26824, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -26408,10 +26408,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 26776, + "commentStart": 0, "end": 0, "name": { - "commentStart": 26776, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -26421,7 +26421,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 26776, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -26433,18 +26433,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 26863, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 26869, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 26879, + "commentStart": 0, "end": 0, "raw": "0.7170489950180006", "start": 0, @@ -26455,7 +26455,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 26878, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -26463,7 +26463,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 26906, + "commentStart": 0, "end": 0, "raw": "0.23454356079651384", "start": 0, @@ -26484,10 +26484,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 26858, + "commentStart": 0, "end": 0, "name": { - "commentStart": 26858, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -26497,7 +26497,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 26858, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -26509,18 +26509,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 26944, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 26950, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 26960, + "commentStart": 0, "end": 0, "raw": "0.2568187045379722", "start": 0, @@ -26531,7 +26531,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 26959, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -26540,7 +26540,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 26988, + "commentStart": 0, "end": 0, "raw": "0.45031188717601367", "start": 0, @@ -26551,7 +26551,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 26987, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -26568,10 +26568,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 26939, + "commentStart": 0, "end": 0, "name": { - "commentStart": 26939, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -26581,7 +26581,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 26939, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -26593,17 +26593,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 27026, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 27032, + "commentStart": 0, "elements": [ { - "commentStart": 27041, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -26616,7 +26616,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 27069, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -26627,7 +26627,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 27068, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -26644,10 +26644,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 27021, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27021, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -26657,7 +26657,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 27021, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -26669,18 +26669,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 27106, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 27112, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 27122, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -26691,7 +26691,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 27121, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -26699,7 +26699,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 27149, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -26720,10 +26720,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 27101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27101, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -26733,7 +26733,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 27101, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -26745,18 +26745,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 27186, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 27192, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 27202, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -26767,7 +26767,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 27201, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -26775,7 +26775,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 27229, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -26796,10 +26796,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 27181, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27181, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -26809,7 +26809,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 27181, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -26821,18 +26821,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 27266, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 27272, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 27282, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -26843,7 +26843,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 27281, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -26852,7 +26852,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 27310, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -26863,7 +26863,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 27309, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -26880,10 +26880,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 27261, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27261, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -26893,7 +26893,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 27261, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -26905,17 +26905,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 27348, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 27354, + "commentStart": 0, "elements": [ { - "commentStart": 27363, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -26927,7 +26927,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 27391, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -26948,10 +26948,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 27343, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27343, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -26961,7 +26961,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 27343, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -26973,17 +26973,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 27429, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 27435, + "commentStart": 0, "elements": [ { - "commentStart": 27444, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -26995,7 +26995,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 27472, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -27016,10 +27016,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 27424, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27424, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -27029,7 +27029,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 27424, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -27041,18 +27041,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 27510, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 27516, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 27526, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -27063,7 +27063,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 27525, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -27071,7 +27071,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 27554, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -27092,10 +27092,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 27505, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27505, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -27105,7 +27105,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 27505, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -27117,18 +27117,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 27591, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 27597, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 27607, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -27139,7 +27139,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 27606, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -27148,7 +27148,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 27636, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -27159,7 +27159,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 27635, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -27176,10 +27176,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 27586, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27586, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -27189,7 +27189,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 27586, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -27201,17 +27201,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 27674, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 27680, + "commentStart": 0, "elements": [ { - "commentStart": 27689, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -27224,7 +27224,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 27717, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -27235,7 +27235,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 27716, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -27252,10 +27252,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 27669, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27669, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -27265,7 +27265,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 27669, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -27277,17 +27277,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 27755, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 27761, + "commentStart": 0, "elements": [ { - "commentStart": 27770, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -27300,7 +27300,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 27801, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -27311,7 +27311,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 27800, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -27328,10 +27328,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 27750, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27750, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -27341,7 +27341,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 27750, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -27353,17 +27353,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 27838, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 27844, + "commentStart": 0, "elements": [ { - "commentStart": 27853, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -27376,7 +27376,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 27881, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -27387,7 +27387,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 27880, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -27404,10 +27404,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 27833, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27833, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -27417,7 +27417,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 27833, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -27429,18 +27429,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 27918, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 27924, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 27934, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -27451,7 +27451,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 27933, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -27459,7 +27459,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 27961, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -27480,10 +27480,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 27913, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27913, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -27493,7 +27493,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 27913, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -27505,17 +27505,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 27998, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 28004, + "commentStart": 0, "elements": [ { - "commentStart": 28005, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -27527,7 +27527,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 28025, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -27548,10 +27548,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 27993, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27993, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -27561,7 +27561,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 27993, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -27573,18 +27573,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 28056, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 28062, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 28072, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -27595,7 +27595,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 28071, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -27603,7 +27603,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 28100, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -27624,10 +27624,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 28051, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28051, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -27637,7 +27637,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 28051, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -27649,18 +27649,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 28139, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 28145, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 28155, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -27671,7 +27671,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 28154, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -27680,7 +27680,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 28183, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -27691,7 +27691,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 28182, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -27708,10 +27708,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 28134, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28134, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -27721,7 +27721,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 28134, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -27733,18 +27733,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 28221, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 28227, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 28237, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -27755,7 +27755,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 28236, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -27764,7 +27764,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 28265, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -27775,7 +27775,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 28264, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -27792,10 +27792,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 28216, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28216, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -27805,7 +27805,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 28216, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -27817,17 +27817,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 28303, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 28309, + "commentStart": 0, "elements": [ { - "commentStart": 28310, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -27839,7 +27839,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 28329, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -27860,10 +27860,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 28298, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28298, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -27873,7 +27873,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 28298, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -27885,17 +27885,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 28360, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 28366, + "commentStart": 0, "elements": [ { - "commentStart": 28375, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -27908,7 +27908,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 28404, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -27919,7 +27919,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 28403, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -27936,10 +27936,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 28355, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28355, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -27949,7 +27949,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 28355, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -27961,17 +27961,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 28442, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 28448, + "commentStart": 0, "elements": [ { - "commentStart": 28449, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -27983,7 +27983,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 28469, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -28004,10 +28004,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 28437, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28437, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -28017,7 +28017,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 28437, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -28029,17 +28029,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 28499, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 28505, + "commentStart": 0, "elements": [ { - "commentStart": 28514, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -28052,7 +28052,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 28543, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -28063,7 +28063,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 28542, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -28080,10 +28080,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 28494, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28494, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -28093,7 +28093,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 28494, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -28105,17 +28105,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 28580, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 28586, + "commentStart": 0, "elements": [ { - "commentStart": 28587, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -28127,7 +28127,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 28607, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -28148,10 +28148,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 28575, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28575, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -28161,7 +28161,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 28575, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -28173,17 +28173,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 28638, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 28644, + "commentStart": 0, "elements": [ { - "commentStart": 28653, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -28195,7 +28195,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 28680, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -28216,10 +28216,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 28633, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28633, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -28229,7 +28229,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 28633, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -28241,17 +28241,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 28718, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 28724, + "commentStart": 0, "elements": [ { - "commentStart": 28725, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -28263,7 +28263,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 28745, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -28284,10 +28284,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 28713, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28713, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -28297,7 +28297,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 28713, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -28309,18 +28309,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 28776, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 28782, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 28792, + "commentStart": 0, "end": 0, "raw": "0.3670208139314082", "start": 0, @@ -28331,7 +28331,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 28791, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -28339,7 +28339,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 28819, + "commentStart": 0, "end": 0, "raw": "0.21201331909674526", "start": 0, @@ -28360,10 +28360,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 28771, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28771, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -28373,7 +28373,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 28771, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -28385,18 +28385,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 28857, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 28863, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 28873, + "commentStart": 0, "end": 0, "raw": "0.4707511307971115", "start": 0, @@ -28407,7 +28407,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 28872, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -28415,7 +28415,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 28900, + "commentStart": 0, "end": 0, "raw": "0.4905279615419764", "start": 0, @@ -28436,10 +28436,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 28852, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28852, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -28449,7 +28449,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 28852, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -28461,18 +28461,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 28937, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 28943, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 28953, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -28483,7 +28483,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 28952, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -28491,7 +28491,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 28980, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -28512,10 +28512,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 28932, + "commentStart": 0, "end": 0, "name": { - "commentStart": 28932, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -28525,7 +28525,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 28932, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -28537,18 +28537,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 29017, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 29023, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 29033, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -28559,7 +28559,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 29032, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -28568,7 +28568,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 29061, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -28579,7 +28579,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 29060, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -28596,10 +28596,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 29012, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29012, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -28609,7 +28609,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 29012, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -28621,17 +28621,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 29099, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 29105, + "commentStart": 0, "elements": [ { - "commentStart": 29114, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -28643,7 +28643,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 29142, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -28664,10 +28664,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 29094, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29094, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -28677,7 +28677,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 29094, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -28689,17 +28689,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 29180, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 29186, + "commentStart": 0, "elements": [ { - "commentStart": 29195, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -28711,7 +28711,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 29223, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -28732,10 +28732,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 29175, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29175, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -28745,7 +28745,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 29175, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -28757,18 +28757,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 29261, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 29267, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 29277, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -28779,7 +28779,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 29276, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -28787,7 +28787,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 29305, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -28808,10 +28808,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 29256, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29256, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -28821,7 +28821,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 29256, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -28833,18 +28833,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 29342, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 29348, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 29358, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -28855,7 +28855,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 29357, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -28864,7 +28864,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 29387, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -28875,7 +28875,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 29386, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -28892,10 +28892,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 29337, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29337, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -28905,7 +28905,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 29337, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -28917,17 +28917,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 29425, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 29431, + "commentStart": 0, "elements": [ { - "commentStart": 29440, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -28940,7 +28940,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 29468, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -28951,7 +28951,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 29467, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -28968,10 +28968,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 29420, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29420, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -28981,7 +28981,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 29420, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -28993,17 +28993,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 29506, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 29512, + "commentStart": 0, "elements": [ { - "commentStart": 29521, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -29016,7 +29016,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 29552, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -29027,7 +29027,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 29551, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -29044,10 +29044,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 29501, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29501, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -29057,7 +29057,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 29501, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -29069,17 +29069,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 29589, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 29595, + "commentStart": 0, "elements": [ { - "commentStart": 29604, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -29092,7 +29092,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 29632, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -29103,7 +29103,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 29631, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -29120,10 +29120,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 29584, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29584, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -29133,7 +29133,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 29584, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -29145,18 +29145,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 29669, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 29675, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 29685, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -29167,7 +29167,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 29684, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -29175,7 +29175,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 29712, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -29196,10 +29196,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 29664, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29664, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -29209,7 +29209,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 29664, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -29221,17 +29221,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 29749, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 29755, + "commentStart": 0, "elements": [ { - "commentStart": 29756, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -29243,7 +29243,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 29776, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -29264,10 +29264,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 29744, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29744, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -29277,7 +29277,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 29744, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -29289,18 +29289,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 29807, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 29813, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 29823, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -29311,7 +29311,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 29822, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -29319,7 +29319,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 29851, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -29340,10 +29340,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 29802, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29802, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -29353,7 +29353,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 29802, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -29365,18 +29365,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 29890, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 29896, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 29906, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -29387,7 +29387,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 29905, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -29396,7 +29396,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 29934, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -29407,7 +29407,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 29933, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -29424,10 +29424,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 29885, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29885, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -29437,7 +29437,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 29885, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -29449,18 +29449,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 29972, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 29978, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 29988, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -29471,7 +29471,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 29987, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -29480,7 +29480,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 30016, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -29491,7 +29491,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 30015, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -29508,10 +29508,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 29967, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29967, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -29521,7 +29521,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 29967, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -29533,17 +29533,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 30054, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 30060, + "commentStart": 0, "elements": [ { - "commentStart": 30061, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -29555,7 +29555,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 30080, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -29576,10 +29576,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 30049, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30049, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -29589,7 +29589,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 30049, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -29601,17 +29601,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 30111, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 30117, + "commentStart": 0, "elements": [ { - "commentStart": 30126, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -29624,7 +29624,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 30155, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -29635,7 +29635,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 30154, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -29652,10 +29652,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 30106, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30106, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -29665,7 +29665,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 30106, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -29677,17 +29677,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 30193, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 30199, + "commentStart": 0, "elements": [ { - "commentStart": 30200, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -29699,7 +29699,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 30220, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -29720,10 +29720,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 30188, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30188, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -29733,7 +29733,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 30188, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -29745,17 +29745,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 30250, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 30256, + "commentStart": 0, "elements": [ { - "commentStart": 30265, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -29768,7 +29768,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 30294, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -29779,7 +29779,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 30293, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -29796,10 +29796,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 30245, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30245, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -29809,7 +29809,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 30245, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -29821,17 +29821,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 30331, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 30337, + "commentStart": 0, "elements": [ { - "commentStart": 30338, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -29843,7 +29843,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 30358, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -29864,10 +29864,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 30326, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30326, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -29877,7 +29877,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 30326, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -29889,17 +29889,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 30389, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 30395, + "commentStart": 0, "elements": [ { - "commentStart": 30404, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -29911,7 +29911,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 30431, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -29932,10 +29932,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 30384, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30384, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -29945,7 +29945,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 30384, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -29957,17 +29957,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 30469, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 30475, + "commentStart": 0, "elements": [ { - "commentStart": 30476, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -29979,7 +29979,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 30496, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -30000,10 +30000,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 30464, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30464, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -30013,7 +30013,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 30464, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -30025,18 +30025,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 30527, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 30533, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 30543, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -30047,7 +30047,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 30542, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -30056,7 +30056,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 30572, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -30067,7 +30067,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 30571, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -30084,10 +30084,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 30522, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30522, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -30097,7 +30097,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 30522, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -30109,17 +30109,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 30609, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 30615, + "commentStart": 0, "elements": [ { - "commentStart": 30624, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -30132,7 +30132,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 30652, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -30143,7 +30143,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 30651, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -30160,10 +30160,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 30604, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30604, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -30173,7 +30173,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 30604, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -30185,18 +30185,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 30689, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 30695, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 30705, + "commentStart": 0, "end": 0, "raw": "0.6716353749059765", "start": 0, @@ -30207,7 +30207,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 30704, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -30216,7 +30216,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 30733, + "commentStart": 0, "end": 0, "raw": "0.9605576808879026", "start": 0, @@ -30227,7 +30227,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 30732, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -30244,10 +30244,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 30684, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30684, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -30257,7 +30257,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 30684, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -30269,17 +30269,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 30770, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 30776, + "commentStart": 0, "elements": [ { - "commentStart": 30785, + "commentStart": 0, "end": 0, "raw": "0.010280170930300203", "start": 0, @@ -30292,7 +30292,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 30815, + "commentStart": 0, "end": 0, "raw": "0.37344123662342166", "start": 0, @@ -30303,7 +30303,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 30814, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -30320,10 +30320,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 30765, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30765, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -30333,7 +30333,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 30765, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -30345,17 +30345,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 30853, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 30859, + "commentStart": 0, "elements": [ { - "commentStart": 30868, + "commentStart": 0, "end": 0, "raw": "0.10357375682791004", "start": 0, @@ -30368,7 +30368,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 30897, + "commentStart": 0, "end": 0, "raw": "0.42294321030821425", "start": 0, @@ -30379,7 +30379,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 30896, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -30396,10 +30396,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 30848, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30848, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -30409,7 +30409,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 30848, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -30421,17 +30421,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 30935, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 30941, + "commentStart": 0, "elements": [ { - "commentStart": 30950, + "commentStart": 0, "end": 0, "raw": "0.4520311575096987", "start": 0, @@ -30444,7 +30444,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 30978, + "commentStart": 0, "end": 0, "raw": "0.11232675307600548", "start": 0, @@ -30455,7 +30455,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 30977, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -30472,10 +30472,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 30930, + "commentStart": 0, "end": 0, "name": { - "commentStart": 30930, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -30485,7 +30485,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 30930, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -30497,18 +30497,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 31016, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 31022, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 31032, + "commentStart": 0, "end": 0, "raw": "0.8821185914380845", "start": 0, @@ -30519,7 +30519,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 31031, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -30528,7 +30528,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 31060, + "commentStart": 0, "end": 0, "raw": "0.7155147434939819", "start": 0, @@ -30539,7 +30539,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 31059, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -30556,10 +30556,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 31011, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31011, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -30569,7 +30569,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 31011, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -30581,17 +30581,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 31097, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 31103, + "commentStart": 0, "elements": [ { - "commentStart": 31104, + "commentStart": 0, "end": 0, "raw": "0.9195487101690416", "start": 0, @@ -30603,7 +30603,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 31124, + "commentStart": 0, "end": 0, "raw": "0.2691627465297364", "start": 0, @@ -30624,10 +30624,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 31092, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31092, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -30637,7 +30637,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 31092, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -30649,17 +30649,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 31155, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 31161, + "commentStart": 0, "elements": [ { - "commentStart": 31170, + "commentStart": 0, "end": 0, "raw": "0.7098978191546745", "start": 0, @@ -30671,7 +30671,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 31197, + "commentStart": 0, "end": 0, "raw": "0.11710004169385968", "start": 0, @@ -30692,10 +30692,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 31150, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31150, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -30705,7 +30705,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 31150, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -30717,18 +30717,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 31235, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 31241, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 31251, + "commentStart": 0, "end": 0, "raw": "0.37876368560819995", "start": 0, @@ -30739,7 +30739,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 31250, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -30747,7 +30747,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 31279, + "commentStart": 0, "end": 0, "raw": "0.7106729314759084", "start": 0, @@ -30768,10 +30768,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 31230, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31230, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -30781,7 +30781,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 31230, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -30793,18 +30793,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 31316, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 31322, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 31332, + "commentStart": 0, "end": 0, "raw": "0.29728126898353335", "start": 0, @@ -30815,7 +30815,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 31331, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -30824,7 +30824,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 31361, + "commentStart": 0, "end": 0, "raw": "0.06649734568328003", "start": 0, @@ -30835,7 +30835,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 31360, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -30852,10 +30852,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 31311, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31311, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -30865,7 +30865,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 31311, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -30877,17 +30877,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 31399, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 31405, + "commentStart": 0, "elements": [ { - "commentStart": 31414, + "commentStart": 0, "end": 0, "raw": "0.22965781558352072", "start": 0, @@ -30900,7 +30900,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 31443, + "commentStart": 0, "end": 0, "raw": "0.7601866432836641", "start": 0, @@ -30911,7 +30911,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 31442, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -30928,10 +30928,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 31394, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31394, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -30941,7 +30941,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 31394, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -30953,18 +30953,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 31480, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 31486, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 31496, + "commentStart": 0, "end": 0, "raw": "0.6356501074317229", "start": 0, @@ -30975,7 +30975,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 31495, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -30983,7 +30983,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 31523, + "commentStart": 0, "end": 0, "raw": "0.19458425399338064", "start": 0, @@ -31004,10 +31004,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 31475, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31475, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -31017,7 +31017,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 31475, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -31029,17 +31029,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 31561, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 31567, + "commentStart": 0, "elements": [ { - "commentStart": 31568, + "commentStart": 0, "end": 0, "raw": "0.5721251777404546", "start": 0, @@ -31051,7 +31051,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 31588, + "commentStart": 0, "end": 0, "raw": "0.2888584097921527", "start": 0, @@ -31072,10 +31072,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 31556, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31556, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -31085,7 +31085,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 31556, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -31097,18 +31097,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 31619, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 31625, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 31635, + "commentStart": 0, "end": 0, "raw": "0.9580409549552311", "start": 0, @@ -31119,7 +31119,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 31634, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -31128,7 +31128,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 31663, + "commentStart": 0, "end": 0, "raw": "0.02243818192078395", "start": 0, @@ -31139,7 +31139,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 31662, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -31156,10 +31156,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 31614, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31614, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -31169,7 +31169,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 31614, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -31181,17 +31181,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 31701, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 31707, + "commentStart": 0, "elements": [ { - "commentStart": 31716, + "commentStart": 0, "end": 0, "raw": "0.3299184618602866", "start": 0, @@ -31204,7 +31204,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 31744, + "commentStart": 0, "end": 0, "raw": "0.8353726942369875", "start": 0, @@ -31215,7 +31215,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 31743, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -31232,10 +31232,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 31696, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31696, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -31245,7 +31245,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 31696, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -31257,17 +31257,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 31781, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 31787, + "commentStart": 0, "elements": [ { - "commentStart": 31796, + "commentStart": 0, "end": 0, "raw": "0.7434639386755209", "start": 0, @@ -31280,7 +31280,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 31824, + "commentStart": 0, "end": 0, "raw": "0.7919648864138378", "start": 0, @@ -31291,7 +31291,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 31823, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -31308,10 +31308,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 31776, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31776, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -31321,7 +31321,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 31776, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -31333,17 +31333,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 31861, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 31867, + "commentStart": 0, "elements": [ { - "commentStart": 31868, + "commentStart": 0, "end": 0, "raw": "0.9935751011164615", "start": 0, @@ -31355,7 +31355,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 31888, + "commentStart": 0, "end": 0, "raw": "0.9042566468497608", "start": 0, @@ -31376,10 +31376,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 31856, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31856, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -31389,7 +31389,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 31856, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -31401,18 +31401,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 31919, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 31925, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 31935, + "commentStart": 0, "end": 0, "raw": "0.5035812884687294", "start": 0, @@ -31423,7 +31423,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 31934, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -31431,7 +31431,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 31962, + "commentStart": 0, "end": 0, "raw": "0.5150967434989442", "start": 0, @@ -31452,10 +31452,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 31914, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31914, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -31465,7 +31465,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 31914, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -31477,17 +31477,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 31999, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 32005, + "commentStart": 0, "elements": [ { - "commentStart": 32006, + "commentStart": 0, "end": 0, "raw": "0.5526227215900215", "start": 0, @@ -31499,7 +31499,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 32026, + "commentStart": 0, "end": 0, "raw": "0.7612604137272441", "start": 0, @@ -31520,10 +31520,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 31994, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31994, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -31533,7 +31533,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 31994, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -31545,17 +31545,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 32057, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 32063, + "commentStart": 0, "elements": [ { - "commentStart": 32072, + "commentStart": 0, "end": 0, "raw": "0.8593271349126876", "start": 0, @@ -31567,7 +31567,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 32099, + "commentStart": 0, "end": 0, "raw": "0.08414894953725849", "start": 0, @@ -31588,10 +31588,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 32052, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32052, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -31601,7 +31601,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 32052, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -31613,18 +31613,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 32137, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 32143, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 32153, + "commentStart": 0, "end": 0, "raw": "0.8181049219192864", "start": 0, @@ -31635,7 +31635,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 32152, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -31644,7 +31644,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 32181, + "commentStart": 0, "end": 0, "raw": "0.903548131323352", "start": 0, @@ -31655,7 +31655,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 32180, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -31672,10 +31672,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 32132, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32132, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -31685,7 +31685,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 32132, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -31697,17 +31697,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 32217, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 32223, + "commentStart": 0, "elements": [ { - "commentStart": 32232, + "commentStart": 0, "end": 0, "raw": "0.3165782044458305", "start": 0, @@ -31720,7 +31720,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 32260, + "commentStart": 0, "end": 0, "raw": "0.24189274252014914", "start": 0, @@ -31731,7 +31731,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 32259, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -31748,10 +31748,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 32212, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32212, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -31761,7 +31761,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 32212, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -31773,18 +31773,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 32298, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 32304, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 32314, + "commentStart": 0, "end": 0, "raw": "0.44390956414045135", "start": 0, @@ -31795,7 +31795,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 32313, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -31804,7 +31804,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 32343, + "commentStart": 0, "end": 0, "raw": "0.25912591535126905", "start": 0, @@ -31815,7 +31815,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 32342, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -31832,10 +31832,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 32293, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32293, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -31845,7 +31845,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 32293, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -31857,18 +31857,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 32381, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 32387, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 32397, + "commentStart": 0, "end": 0, "raw": "0.6605165911891009", "start": 0, @@ -31879,7 +31879,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 32396, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -31888,7 +31888,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 32425, + "commentStart": 0, "end": 0, "raw": "0.40355115288839194", "start": 0, @@ -31899,7 +31899,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 32424, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -31916,10 +31916,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 32376, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32376, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -31929,7 +31929,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 32376, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -31941,18 +31941,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 32463, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 32469, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 32479, + "commentStart": 0, "end": 0, "raw": "0.7170489950180006", "start": 0, @@ -31963,7 +31963,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 32478, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -31971,7 +31971,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 32506, + "commentStart": 0, "end": 0, "raw": "0.23454356079651384", "start": 0, @@ -31992,10 +31992,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 32458, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32458, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -32005,7 +32005,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 32458, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -32017,18 +32017,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 32544, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 32550, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 32560, + "commentStart": 0, "end": 0, "raw": "0.2568187045379722", "start": 0, @@ -32039,7 +32039,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 32559, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -32048,7 +32048,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 32588, + "commentStart": 0, "end": 0, "raw": "0.45031188717601367", "start": 0, @@ -32059,7 +32059,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 32587, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -32076,10 +32076,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 32539, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32539, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -32089,7 +32089,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 32539, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -32101,17 +32101,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 32626, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 32632, + "commentStart": 0, "elements": [ { - "commentStart": 32641, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -32124,7 +32124,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 32669, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -32135,7 +32135,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 32668, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -32152,10 +32152,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 32621, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32621, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -32165,7 +32165,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 32621, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -32177,18 +32177,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 32706, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 32712, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 32722, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -32199,7 +32199,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 32721, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -32207,7 +32207,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 32749, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -32228,10 +32228,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 32701, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32701, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -32241,7 +32241,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 32701, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -32253,18 +32253,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 32786, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 32792, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 32802, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -32275,7 +32275,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 32801, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -32283,7 +32283,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 32829, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -32304,10 +32304,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 32781, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32781, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -32317,7 +32317,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 32781, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -32329,18 +32329,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 32866, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 32872, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 32882, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -32351,7 +32351,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 32881, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -32360,7 +32360,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 32910, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -32371,7 +32371,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 32909, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -32388,10 +32388,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 32861, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32861, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -32401,7 +32401,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 32861, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -32413,17 +32413,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 32948, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 32954, + "commentStart": 0, "elements": [ { - "commentStart": 32963, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -32435,7 +32435,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 32991, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -32456,10 +32456,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 32943, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32943, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -32469,7 +32469,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 32943, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -32481,17 +32481,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 33029, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 33035, + "commentStart": 0, "elements": [ { - "commentStart": 33044, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -32503,7 +32503,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 33072, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -32524,10 +32524,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 33024, + "commentStart": 0, "end": 0, "name": { - "commentStart": 33024, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -32537,7 +32537,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 33024, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -32549,18 +32549,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 33110, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 33116, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 33126, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -32571,7 +32571,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 33125, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -32579,7 +32579,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 33154, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -32600,10 +32600,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 33105, + "commentStart": 0, "end": 0, "name": { - "commentStart": 33105, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -32613,7 +32613,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 33105, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -32625,18 +32625,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 33191, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 33197, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 33207, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -32647,7 +32647,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 33206, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -32656,7 +32656,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 33236, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -32667,7 +32667,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 33235, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -32684,10 +32684,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 33186, + "commentStart": 0, "end": 0, "name": { - "commentStart": 33186, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -32697,7 +32697,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 33186, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -32709,17 +32709,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 33274, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 33280, + "commentStart": 0, "elements": [ { - "commentStart": 33289, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -32732,7 +32732,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 33317, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -32743,7 +32743,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 33316, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -32760,10 +32760,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 33269, + "commentStart": 0, "end": 0, "name": { - "commentStart": 33269, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -32773,7 +32773,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 33269, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -32785,17 +32785,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 33355, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 33361, + "commentStart": 0, "elements": [ { - "commentStart": 33370, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -32808,7 +32808,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 33401, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -32819,7 +32819,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 33400, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -32836,10 +32836,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 33350, + "commentStart": 0, "end": 0, "name": { - "commentStart": 33350, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -32849,7 +32849,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 33350, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -32861,17 +32861,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 33438, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 33444, + "commentStart": 0, "elements": [ { - "commentStart": 33453, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -32884,7 +32884,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 33481, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -32895,7 +32895,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 33480, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -32912,10 +32912,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 33433, + "commentStart": 0, "end": 0, "name": { - "commentStart": 33433, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -32925,7 +32925,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 33433, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -32937,18 +32937,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 33518, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 33524, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 33534, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -32959,7 +32959,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 33533, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -32967,7 +32967,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 33561, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -32988,10 +32988,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 33513, + "commentStart": 0, "end": 0, "name": { - "commentStart": 33513, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -33001,7 +33001,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 33513, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -33013,17 +33013,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 33598, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 33604, + "commentStart": 0, "elements": [ { - "commentStart": 33605, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -33035,7 +33035,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 33625, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -33056,10 +33056,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 33593, + "commentStart": 0, "end": 0, "name": { - "commentStart": 33593, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -33069,7 +33069,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 33593, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -33081,18 +33081,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 33656, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 33662, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 33672, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -33103,7 +33103,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 33671, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -33111,7 +33111,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 33700, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -33132,10 +33132,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 33651, + "commentStart": 0, "end": 0, "name": { - "commentStart": 33651, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -33145,7 +33145,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 33651, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -33157,18 +33157,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 33739, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 33745, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 33755, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -33179,7 +33179,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 33754, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -33188,7 +33188,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 33783, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -33199,7 +33199,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 33782, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -33216,10 +33216,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 33734, + "commentStart": 0, "end": 0, "name": { - "commentStart": 33734, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -33229,7 +33229,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 33734, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -33241,18 +33241,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 33821, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 33827, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 33837, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -33263,7 +33263,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 33836, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -33272,7 +33272,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 33865, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -33283,7 +33283,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 33864, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -33300,10 +33300,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 33816, + "commentStart": 0, "end": 0, "name": { - "commentStart": 33816, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -33313,7 +33313,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 33816, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -33325,17 +33325,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 33903, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 33909, + "commentStart": 0, "elements": [ { - "commentStart": 33910, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -33347,7 +33347,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 33929, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -33368,10 +33368,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 33898, + "commentStart": 0, "end": 0, "name": { - "commentStart": 33898, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -33381,7 +33381,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 33898, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -33393,17 +33393,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 33960, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 33966, + "commentStart": 0, "elements": [ { - "commentStart": 33975, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -33416,7 +33416,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 34004, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -33427,7 +33427,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 34003, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -33444,10 +33444,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 33955, + "commentStart": 0, "end": 0, "name": { - "commentStart": 33955, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -33457,7 +33457,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 33955, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -33469,17 +33469,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 34042, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 34048, + "commentStart": 0, "elements": [ { - "commentStart": 34049, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -33491,7 +33491,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 34069, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -33512,10 +33512,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 34037, + "commentStart": 0, "end": 0, "name": { - "commentStart": 34037, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -33525,7 +33525,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 34037, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -33537,17 +33537,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 34099, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 34105, + "commentStart": 0, "elements": [ { - "commentStart": 34114, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -33560,7 +33560,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 34143, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -33571,7 +33571,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 34142, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -33588,10 +33588,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 34094, + "commentStart": 0, "end": 0, "name": { - "commentStart": 34094, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -33601,7 +33601,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 34094, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -33613,17 +33613,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 34180, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 34186, + "commentStart": 0, "elements": [ { - "commentStart": 34187, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -33635,7 +33635,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 34207, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -33656,10 +33656,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 34175, + "commentStart": 0, "end": 0, "name": { - "commentStart": 34175, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -33669,7 +33669,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 34175, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -33681,17 +33681,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 34238, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 34244, + "commentStart": 0, "elements": [ { - "commentStart": 34253, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -33703,7 +33703,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 34280, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -33724,10 +33724,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 34233, + "commentStart": 0, "end": 0, "name": { - "commentStart": 34233, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -33737,7 +33737,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 34233, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -33749,18 +33749,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 34318, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 34324, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 34334, + "commentStart": 0, "end": 0, "raw": "0.09582414374469184", "start": 0, @@ -33771,7 +33771,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 34333, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -33780,7 +33780,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 34363, + "commentStart": 0, "end": 0, "raw": "0.7533839681212353", "start": 0, @@ -33791,7 +33791,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 34362, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -33808,10 +33808,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 34313, + "commentStart": 0, "end": 0, "name": { - "commentStart": 34313, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -33821,7 +33821,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 34313, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -33833,18 +33833,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 34400, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 34406, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 34416, + "commentStart": 0, "end": 0, "raw": "0.17254116580051848", "start": 0, @@ -33855,7 +33855,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 34415, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -33864,7 +33864,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 34445, + "commentStart": 0, "end": 0, "raw": "0.7669113400341137", "start": 0, @@ -33875,7 +33875,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 34444, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -33892,10 +33892,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 34395, + "commentStart": 0, "end": 0, "name": { - "commentStart": 34395, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -33905,7 +33905,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 34395, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -33917,17 +33917,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 34482, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 34488, + "commentStart": 0, "elements": [ { - "commentStart": 34489, + "commentStart": 0, "end": 0, "raw": "0.8944730032887609", "start": 0, @@ -33939,7 +33939,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 34509, + "commentStart": 0, "end": 0, "raw": "0.6093318694741408", "start": 0, @@ -33960,10 +33960,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 34477, + "commentStart": 0, "end": 0, "name": { - "commentStart": 34477, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -33973,7 +33973,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 34477, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -33985,18 +33985,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 34540, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 34546, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 34556, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -34007,7 +34007,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 34555, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34016,7 +34016,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 34585, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -34027,7 +34027,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 34584, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34044,10 +34044,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 34535, + "commentStart": 0, "end": 0, "name": { - "commentStart": 34535, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -34057,7 +34057,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 34535, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -34069,17 +34069,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 34622, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 34628, + "commentStart": 0, "elements": [ { - "commentStart": 34637, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -34092,7 +34092,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 34665, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -34103,7 +34103,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 34664, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34120,10 +34120,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 34617, + "commentStart": 0, "end": 0, "name": { - "commentStart": 34617, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -34133,7 +34133,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 34617, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -34145,17 +34145,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 34702, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 34708, + "commentStart": 0, "elements": [ { - "commentStart": 34717, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -34168,7 +34168,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 34745, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -34179,7 +34179,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 34744, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34196,10 +34196,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 34697, + "commentStart": 0, "end": 0, "name": { - "commentStart": 34697, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -34209,7 +34209,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 34697, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -34221,18 +34221,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 34782, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 34788, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 34798, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -34243,7 +34243,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 34797, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34251,7 +34251,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 34825, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -34272,10 +34272,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 34777, + "commentStart": 0, "end": 0, "name": { - "commentStart": 34777, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -34285,7 +34285,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 34777, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -34297,17 +34297,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 34862, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 34868, + "commentStart": 0, "elements": [ { - "commentStart": 34877, + "commentStart": 0, "end": 0, "raw": "0.9464450621708211", "start": 0, @@ -34320,7 +34320,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 34905, + "commentStart": 0, "end": 0, "raw": "0.2684908127803667", "start": 0, @@ -34331,7 +34331,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 34904, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34348,10 +34348,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 34857, + "commentStart": 0, "end": 0, "name": { - "commentStart": 34857, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -34361,7 +34361,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 34857, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -34373,17 +34373,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 34942, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 34948, + "commentStart": 0, "elements": [ { - "commentStart": 34949, + "commentStart": 0, "end": 0, "raw": "0.5241732366617591", "start": 0, @@ -34395,7 +34395,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 34969, + "commentStart": 0, "end": 0, "raw": "0.9011437416408563", "start": 0, @@ -34416,10 +34416,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 34937, + "commentStart": 0, "end": 0, "name": { - "commentStart": 34937, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -34429,7 +34429,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 34937, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -34441,18 +34441,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 35000, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 35006, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 35016, + "commentStart": 0, "end": 0, "raw": "0.14255393713960607", "start": 0, @@ -34463,7 +34463,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 35015, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34472,7 +34472,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 35045, + "commentStart": 0, "end": 0, "raw": "0.5194262624564814", "start": 0, @@ -34483,7 +34483,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 35044, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34500,10 +34500,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 34995, + "commentStart": 0, "end": 0, "name": { - "commentStart": 34995, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -34513,7 +34513,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 34995, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -34525,18 +34525,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 35082, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 35088, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 35098, + "commentStart": 0, "end": 0, "raw": "0.4287123231350338", "start": 0, @@ -34547,7 +34547,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 35097, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34556,7 +34556,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 35126, + "commentStart": 0, "end": 0, "raw": "0.4223564528725028", "start": 0, @@ -34567,7 +34567,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 35125, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34584,10 +34584,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 35077, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35077, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -34597,7 +34597,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 35077, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -34609,18 +34609,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 35163, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 35169, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 35179, + "commentStart": 0, "end": 0, "raw": "0.09316367294024519", "start": 0, @@ -34631,7 +34631,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 35178, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34640,7 +34640,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 35208, + "commentStart": 0, "end": 0, "raw": "0.9063127021008246", "start": 0, @@ -34651,7 +34651,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 35207, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34668,10 +34668,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 35158, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35158, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -34681,7 +34681,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 35158, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -34693,18 +34693,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 35245, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 35251, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 35261, + "commentStart": 0, "end": 0, "raw": "0.2767766535558669", "start": 0, @@ -34715,7 +34715,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 35260, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34723,7 +34723,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 35288, + "commentStart": 0, "end": 0, "raw": "0.6816248114129131", "start": 0, @@ -34744,10 +34744,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 35240, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35240, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -34757,7 +34757,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 35240, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -34769,17 +34769,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 35325, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 35331, + "commentStart": 0, "elements": [ { - "commentStart": 35340, + "commentStart": 0, "end": 0, "raw": "0.9796762495562534", "start": 0, @@ -34792,7 +34792,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 35368, + "commentStart": 0, "end": 0, "raw": "0.0822145668330625", "start": 0, @@ -34803,7 +34803,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 35367, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34820,10 +34820,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 35320, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35320, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -34833,7 +34833,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 35320, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -34845,18 +34845,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 35405, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 35411, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 35421, + "commentStart": 0, "end": 0, "raw": "0.8666513070867441", "start": 0, @@ -34867,7 +34867,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 35420, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34876,7 +34876,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 35449, + "commentStart": 0, "end": 0, "raw": "0.301053160242023", "start": 0, @@ -34887,7 +34887,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 35448, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -34904,10 +34904,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 35400, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35400, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -34917,7 +34917,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 35400, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -34929,17 +34929,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 35485, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 35491, + "commentStart": 0, "elements": [ { - "commentStart": 35500, + "commentStart": 0, "end": 0, "raw": "0.537415656028112", "start": 0, @@ -34951,7 +34951,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 35526, + "commentStart": 0, "end": 0, "raw": "0.020272692875002774", "start": 0, @@ -34972,10 +34972,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 35480, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35480, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -34985,7 +34985,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 35480, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -34997,17 +34997,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 35565, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 35571, + "commentStart": 0, "elements": [ { - "commentStart": 35580, + "commentStart": 0, "end": 0, "raw": "0.9332396256457531", "start": 0, @@ -35020,7 +35020,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 35608, + "commentStart": 0, "end": 0, "raw": "0.6228175690649898", "start": 0, @@ -35031,7 +35031,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 35607, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -35048,10 +35048,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 35560, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35560, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -35061,7 +35061,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 35560, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -35073,17 +35073,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 35645, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 35651, + "commentStart": 0, "elements": [ { - "commentStart": 35660, + "commentStart": 0, "end": 0, "raw": "0.18052415837320734", "start": 0, @@ -35096,7 +35096,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 35689, + "commentStart": 0, "end": 0, "raw": "0.36894384647296197", "start": 0, @@ -35107,7 +35107,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 35688, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -35124,10 +35124,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 35640, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35640, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -35137,7 +35137,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 35640, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -35149,17 +35149,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 35727, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 35733, + "commentStart": 0, "elements": [ { - "commentStart": 35734, + "commentStart": 0, "end": 0, "raw": "0.5384372634075449", "start": 0, @@ -35171,7 +35171,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 35754, + "commentStart": 0, "end": 0, "raw": "0.2377565050887107", "start": 0, @@ -35192,10 +35192,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 35722, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35722, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -35205,7 +35205,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 35722, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -35217,17 +35217,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 35785, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 35791, + "commentStart": 0, "elements": [ { - "commentStart": 35800, + "commentStart": 0, "end": 0, "raw": "0.39043436929278874", "start": 0, @@ -35239,7 +35239,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 35828, + "commentStart": 0, "end": 0, "raw": "0.14273182483160451", "start": 0, @@ -35260,10 +35260,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 35780, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35780, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -35273,7 +35273,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 35780, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -35285,17 +35285,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 35866, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 35872, + "commentStart": 0, "elements": [ { - "commentStart": 35881, + "commentStart": 0, "end": 0, "raw": "0.09782890412897283", "start": 0, @@ -35307,7 +35307,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 35909, + "commentStart": 0, "end": 0, "raw": "0.9907667536909659", "start": 0, @@ -35328,10 +35328,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 35861, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35861, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -35341,7 +35341,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 35861, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -35353,17 +35353,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 35946, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 35952, + "commentStart": 0, "elements": [ { - "commentStart": 35961, + "commentStart": 0, "end": 0, "raw": "0.5286610085921146", "start": 0, @@ -35376,7 +35376,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 35989, + "commentStart": 0, "end": 0, "raw": "0.7924508308419256", "start": 0, @@ -35387,7 +35387,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 35988, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -35404,10 +35404,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 35941, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35941, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -35417,7 +35417,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 35941, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -35429,17 +35429,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 36026, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 36032, + "commentStart": 0, "elements": [ { - "commentStart": 36041, + "commentStart": 0, "end": 0, "raw": "0.3789978184503342", "start": 0, @@ -35451,7 +35451,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 36068, + "commentStart": 0, "end": 0, "raw": "0.12396120576838676", "start": 0, @@ -35472,10 +35472,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 36021, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36021, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -35485,7 +35485,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 36021, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -35497,18 +35497,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 36106, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 36112, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 36122, + "commentStart": 0, "end": 0, "raw": "0.9484912744890612", "start": 0, @@ -35519,7 +35519,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 36121, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -35527,7 +35527,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 36149, + "commentStart": 0, "end": 0, "raw": "0.6729649846476855", "start": 0, @@ -35548,10 +35548,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 36101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36101, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -35561,7 +35561,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 36101, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -35573,17 +35573,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 36186, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 36192, + "commentStart": 0, "elements": [ { - "commentStart": 36201, + "commentStart": 0, "end": 0, "raw": "0.7451758753425153", "start": 0, @@ -35596,7 +35596,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 36229, + "commentStart": 0, "end": 0, "raw": "0.21318737562458967", "start": 0, @@ -35607,7 +35607,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 36228, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -35624,10 +35624,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 36181, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36181, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -35637,7 +35637,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 36181, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -35649,17 +35649,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 36267, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 36273, + "commentStart": 0, "elements": [ { - "commentStart": 36282, + "commentStart": 0, "end": 0, "raw": "0.1873200727251887", "start": 0, @@ -35672,7 +35672,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 36310, + "commentStart": 0, "end": 0, "raw": "0.15961374297992448", "start": 0, @@ -35683,7 +35683,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 36309, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -35700,10 +35700,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 36262, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36262, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -35713,7 +35713,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 36262, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -35725,18 +35725,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 36348, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 36354, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 36364, + "commentStart": 0, "end": 0, "raw": "0.05729464924537564", "start": 0, @@ -35747,7 +35747,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 36363, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -35756,7 +35756,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 36393, + "commentStart": 0, "end": 0, "raw": "0.5436345558508746", "start": 0, @@ -35767,7 +35767,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 36392, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -35784,10 +35784,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 36343, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36343, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -35797,7 +35797,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 36343, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -35809,18 +35809,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 36430, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 36436, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 36446, + "commentStart": 0, "end": 0, "raw": "0.09582414374469184", "start": 0, @@ -35831,7 +35831,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 36445, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -35840,7 +35840,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 36475, + "commentStart": 0, "end": 0, "raw": "0.7533839681212353", "start": 0, @@ -35851,7 +35851,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 36474, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -35868,10 +35868,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 36425, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36425, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -35881,7 +35881,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 36425, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -35893,18 +35893,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 36512, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 36518, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 36528, + "commentStart": 0, "end": 0, "raw": "0.17254116580051848", "start": 0, @@ -35915,7 +35915,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 36527, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -35924,7 +35924,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 36557, + "commentStart": 0, "end": 0, "raw": "0.7669113400341137", "start": 0, @@ -35935,7 +35935,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 36556, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -35952,10 +35952,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 36507, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36507, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -35965,7 +35965,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 36507, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -35977,17 +35977,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 36594, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 36600, + "commentStart": 0, "elements": [ { - "commentStart": 36601, + "commentStart": 0, "end": 0, "raw": "0.8944730032887609", "start": 0, @@ -35999,7 +35999,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 36621, + "commentStart": 0, "end": 0, "raw": "0.6093318694741408", "start": 0, @@ -36020,10 +36020,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 36589, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36589, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -36033,7 +36033,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 36589, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -36045,18 +36045,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 36652, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 36658, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 36668, + "commentStart": 0, "end": 0, "raw": "0.6238548626325471", "start": 0, @@ -36067,7 +36067,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 36667, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -36075,7 +36075,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 36695, + "commentStart": 0, "end": 0, "raw": "0.4053626746020169", "start": 0, @@ -36096,10 +36096,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 36647, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36647, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -36109,7 +36109,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 36647, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -36121,17 +36121,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 36732, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 36738, + "commentStart": 0, "elements": [ { - "commentStart": 36747, + "commentStart": 0, "end": 0, "raw": "0.1379445992766417", "start": 0, @@ -36144,7 +36144,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 36775, + "commentStart": 0, "end": 0, "raw": "0.47871087958516045", "start": 0, @@ -36155,7 +36155,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 36774, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -36172,10 +36172,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 36727, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36727, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -36185,7 +36185,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 36727, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -36197,18 +36197,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 36813, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 36819, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 36829, + "commentStart": 0, "end": 0, "raw": "0.9516767113283946", "start": 0, @@ -36219,7 +36219,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 36828, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -36227,7 +36227,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 36856, + "commentStart": 0, "end": 0, "raw": "0.8619900618578948", "start": 0, @@ -36248,10 +36248,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 36808, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36808, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -36261,7 +36261,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 36808, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -36273,17 +36273,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 36893, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 36899, + "commentStart": 0, "elements": [ { - "commentStart": 36900, + "commentStart": 0, "end": 0, "raw": "0.9398732950992088", "start": 0, @@ -36295,7 +36295,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 36920, + "commentStart": 0, "end": 0, "raw": "0.6326239915683629", "start": 0, @@ -36316,10 +36316,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 36888, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36888, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -36329,7 +36329,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 36888, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -36341,18 +36341,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 36951, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 36957, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 36967, + "commentStart": 0, "end": 0, "raw": "0.8631974445502164", "start": 0, @@ -36363,7 +36363,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 36966, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -36371,7 +36371,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 36994, + "commentStart": 0, "end": 0, "raw": "0.016153555523963137", "start": 0, @@ -36392,10 +36392,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 36946, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36946, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -36405,7 +36405,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 36946, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -36417,17 +36417,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 37033, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 37039, + "commentStart": 0, "elements": [ { - "commentStart": 37048, + "commentStart": 0, "end": 0, "raw": "0.19167797120152907", "start": 0, @@ -36440,7 +36440,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 37077, + "commentStart": 0, "end": 0, "raw": "0.4916414381703984", "start": 0, @@ -36451,7 +36451,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 37076, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -36468,10 +36468,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 37028, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37028, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -36481,7 +36481,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 37028, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -36493,18 +36493,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 37114, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 37120, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 37130, + "commentStart": 0, "end": 0, "raw": "0.8644261221501586", "start": 0, @@ -36515,7 +36515,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 37129, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -36524,7 +36524,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 37158, + "commentStart": 0, "end": 0, "raw": "0.11434763886359756", "start": 0, @@ -36535,7 +36535,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 37157, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -36552,10 +36552,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 37109, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37109, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -36565,7 +36565,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 37109, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -36577,18 +36577,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 37196, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 37202, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 37212, + "commentStart": 0, "end": 0, "raw": "0.029081958413378572", "start": 0, @@ -36599,7 +36599,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 37211, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -36608,7 +36608,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 37242, + "commentStart": 0, "end": 0, "raw": "0.5214138808318329", "start": 0, @@ -36619,7 +36619,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 37241, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -36636,10 +36636,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 37191, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37191, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -36649,7 +36649,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 37191, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -36661,18 +36661,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 37279, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 37285, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 37295, + "commentStart": 0, "end": 0, "raw": "0.8713091851579695", "start": 0, @@ -36683,7 +36683,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 37294, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -36691,7 +36691,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 37322, + "commentStart": 0, "end": 0, "raw": "0.7866284950967315", "start": 0, @@ -36712,10 +36712,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 37274, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37274, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -36725,7 +36725,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 37274, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -36737,17 +36737,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 37359, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 37365, + "commentStart": 0, "elements": [ { - "commentStart": 37366, + "commentStart": 0, "end": 0, "raw": "0.884342023093545", "start": 0, @@ -36760,7 +36760,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 37386, + "commentStart": 0, "end": 0, "raw": "0.1825407002568431", "start": 0, @@ -36771,7 +36771,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 37385, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -36788,10 +36788,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 37354, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37354, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -36801,7 +36801,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 37354, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -36813,18 +36813,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 37417, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 37423, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 37433, + "commentStart": 0, "end": 0, "raw": "0.6978385295364686", "start": 0, @@ -36835,7 +36835,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 37432, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -36843,7 +36843,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 37460, + "commentStart": 0, "end": 0, "raw": "0.0440574328736949", "start": 0, @@ -36864,10 +36864,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 37412, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37412, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -36877,7 +36877,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 37412, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -36889,18 +36889,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 37497, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 37503, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 37513, + "commentStart": 0, "end": 0, "raw": "0.48055049324331556", "start": 0, @@ -36911,7 +36911,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 37512, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -36920,7 +36920,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 37542, + "commentStart": 0, "end": 0, "raw": "0.028546347149214002", "start": 0, @@ -36931,7 +36931,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 37541, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -36948,10 +36948,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 37492, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37492, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -36961,7 +36961,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 37492, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -36973,17 +36973,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 37581, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 37587, + "commentStart": 0, "elements": [ { - "commentStart": 37596, + "commentStart": 0, "end": 0, "raw": "0.41283517382864776", "start": 0, @@ -36996,7 +36996,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 37625, + "commentStart": 0, "end": 0, "raw": "0.44938038251347323", "start": 0, @@ -37007,7 +37007,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 37624, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -37024,10 +37024,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 37576, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37576, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -37037,7 +37037,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 37576, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -37049,17 +37049,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 37663, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 37669, + "commentStart": 0, "elements": [ { - "commentStart": 37670, + "commentStart": 0, "end": 0, "raw": "0.7911399832501751", "start": 0, @@ -37071,7 +37071,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 37690, + "commentStart": 0, "end": 0, "raw": "0.893446368526005", "start": 0, @@ -37092,10 +37092,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 37658, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37658, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -37105,7 +37105,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 37658, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -37117,17 +37117,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 37720, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 37726, + "commentStart": 0, "elements": [ { - "commentStart": 37735, + "commentStart": 0, "end": 0, "raw": "0.6507434699009087", "start": 0, @@ -37140,7 +37140,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 37763, + "commentStart": 0, "end": 0, "raw": "0.6890023920962012", "start": 0, @@ -37151,7 +37151,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 37762, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -37168,10 +37168,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 37715, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37715, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -37181,7 +37181,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 37715, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -37193,17 +37193,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 37800, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 37806, + "commentStart": 0, "elements": [ { - "commentStart": 37815, + "commentStart": 0, "end": 0, "raw": "0.10489019777253028", "start": 0, @@ -37216,7 +37216,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 37844, + "commentStart": 0, "end": 0, "raw": "0.5467450997193952", "start": 0, @@ -37227,7 +37227,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 37843, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -37244,10 +37244,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 37795, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37795, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -37257,7 +37257,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 37795, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -37269,18 +37269,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 37881, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 37887, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 37897, + "commentStart": 0, "end": 0, "raw": "0.5760905289992633", "start": 0, @@ -37291,7 +37291,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 37896, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -37300,7 +37300,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 37925, + "commentStart": 0, "end": 0, "raw": "0.2639900702114173", "start": 0, @@ -37311,7 +37311,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 37924, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -37328,10 +37328,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 37876, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37876, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -37341,7 +37341,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 37876, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -37353,17 +37353,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 37962, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 37968, + "commentStart": 0, "elements": [ { - "commentStart": 37977, + "commentStart": 0, "end": 0, "raw": "0.39828861790105297", "start": 0, @@ -37375,7 +37375,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 38005, + "commentStart": 0, "end": 0, "raw": "0.8036624129416385", "start": 0, @@ -37396,10 +37396,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 37957, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37957, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -37409,7 +37409,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 37957, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -37421,18 +37421,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 38042, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 38048, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 38050, + "commentStart": 0, "end": 0, "raw": "0.673848991328553", "start": 0, @@ -37443,7 +37443,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 38049, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -37452,7 +37452,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 38070, + "commentStart": 0, "end": 0, "raw": "0.918443329270668", "start": 0, @@ -37463,7 +37463,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 38069, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -37480,10 +37480,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 38037, + "commentStart": 0, "end": 0, "name": { - "commentStart": 38037, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -37493,7 +37493,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 38037, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -37505,18 +37505,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 38100, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 38106, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 38116, + "commentStart": 0, "end": 0, "raw": "0.8599152936179257", "start": 0, @@ -37527,7 +37527,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 38115, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -37536,7 +37536,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 38144, + "commentStart": 0, "end": 0, "raw": "0.9499371022680787", "start": 0, @@ -37547,7 +37547,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 38143, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -37564,10 +37564,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 38095, + "commentStart": 0, "end": 0, "name": { - "commentStart": 38095, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -37577,7 +37577,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 38095, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -37589,17 +37589,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 38181, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 38187, + "commentStart": 0, "elements": [ { - "commentStart": 38196, + "commentStart": 0, "end": 0, "raw": "0.6285243831393765", "start": 0, @@ -37612,7 +37612,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 38224, + "commentStart": 0, "end": 0, "raw": "0.5186557636566307", "start": 0, @@ -37623,7 +37623,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 38223, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -37640,10 +37640,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 38176, + "commentStart": 0, "end": 0, "name": { - "commentStart": 38176, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -37653,7 +37653,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 38176, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -37665,17 +37665,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 38261, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 38267, + "commentStart": 0, "elements": [ { - "commentStart": 38276, + "commentStart": 0, "end": 0, "raw": "0.3222412784832269", "start": 0, @@ -37687,7 +37687,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 38303, + "commentStart": 0, "end": 0, "raw": "0.24621192679727177", "start": 0, @@ -37708,10 +37708,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 38256, + "commentStart": 0, "end": 0, "name": { - "commentStart": 38256, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -37721,7 +37721,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 38256, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -37733,17 +37733,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 38341, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 38347, + "commentStart": 0, "elements": [ { - "commentStart": 38356, + "commentStart": 0, "end": 0, "raw": "0.19754357911311016", "start": 0, @@ -37756,7 +37756,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 38385, + "commentStart": 0, "end": 0, "raw": "0.7529246632397206", "start": 0, @@ -37767,7 +37767,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 38384, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -37784,10 +37784,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 38336, + "commentStart": 0, "end": 0, "name": { - "commentStart": 38336, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -37797,7 +37797,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 38336, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -37809,18 +37809,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 38422, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 38428, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 38438, + "commentStart": 0, "end": 0, "raw": "0.43181570545865555", "start": 0, @@ -37831,7 +37831,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 38437, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -37839,7 +37839,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 38466, + "commentStart": 0, "end": 0, "raw": "0.18945437402201537", "start": 0, @@ -37860,10 +37860,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 38417, + "commentStart": 0, "end": 0, "name": { - "commentStart": 38417, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -37873,7 +37873,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 38417, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -37885,17 +37885,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 38504, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 38510, + "commentStart": 0, "elements": [ { - "commentStart": 38519, + "commentStart": 0, "end": 0, "raw": "0.8714511090241797", "start": 0, @@ -37908,7 +37908,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 38547, + "commentStart": 0, "end": 0, "raw": "0.7215844196844685", "start": 0, @@ -37919,7 +37919,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 38546, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -37936,10 +37936,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 38499, + "commentStart": 0, "end": 0, "name": { - "commentStart": 38499, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -37949,7 +37949,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 38499, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -37961,18 +37961,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 38584, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 38590, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 38600, + "commentStart": 0, "end": 0, "raw": "0.3670208139314082", "start": 0, @@ -37983,7 +37983,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 38599, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -37991,7 +37991,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 38627, + "commentStart": 0, "end": 0, "raw": "0.21201331909674526", "start": 0, @@ -38012,10 +38012,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 38579, + "commentStart": 0, "end": 0, "name": { - "commentStart": 38579, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -38025,7 +38025,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 38579, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -38037,18 +38037,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 38665, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 38671, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 38681, + "commentStart": 0, "end": 0, "raw": "0.4707511307971115", "start": 0, @@ -38059,7 +38059,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 38680, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -38067,7 +38067,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 38708, + "commentStart": 0, "end": 0, "raw": "0.4905279615419764", "start": 0, @@ -38088,10 +38088,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 38660, + "commentStart": 0, "end": 0, "name": { - "commentStart": 38660, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -38101,7 +38101,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 38660, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -38113,18 +38113,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 38745, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 38751, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 38761, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -38135,7 +38135,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 38760, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -38143,7 +38143,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 38788, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -38164,10 +38164,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 38740, + "commentStart": 0, "end": 0, "name": { - "commentStart": 38740, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -38177,7 +38177,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 38740, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -38189,18 +38189,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 38825, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 38831, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 38841, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -38211,7 +38211,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 38840, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -38220,7 +38220,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 38869, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -38231,7 +38231,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 38868, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -38248,10 +38248,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 38820, + "commentStart": 0, "end": 0, "name": { - "commentStart": 38820, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -38261,7 +38261,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 38820, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -38273,17 +38273,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 38907, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 38913, + "commentStart": 0, "elements": [ { - "commentStart": 38922, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -38295,7 +38295,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 38950, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -38316,10 +38316,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 38902, + "commentStart": 0, "end": 0, "name": { - "commentStart": 38902, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -38329,7 +38329,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 38902, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -38341,17 +38341,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 38988, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 38994, + "commentStart": 0, "elements": [ { - "commentStart": 39003, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -38363,7 +38363,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 39031, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -38384,10 +38384,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 38983, + "commentStart": 0, "end": 0, "name": { - "commentStart": 38983, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -38397,7 +38397,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 38983, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -38409,18 +38409,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 39069, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 39075, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 39085, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -38431,7 +38431,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 39084, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -38439,7 +38439,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 39113, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -38460,10 +38460,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 39064, + "commentStart": 0, "end": 0, "name": { - "commentStart": 39064, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -38473,7 +38473,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 39064, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -38485,18 +38485,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 39150, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 39156, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 39166, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -38507,7 +38507,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 39165, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -38516,7 +38516,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 39195, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -38527,7 +38527,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 39194, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -38544,10 +38544,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 39145, + "commentStart": 0, "end": 0, "name": { - "commentStart": 39145, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -38557,7 +38557,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 39145, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -38569,17 +38569,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 39233, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 39239, + "commentStart": 0, "elements": [ { - "commentStart": 39248, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -38592,7 +38592,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 39276, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -38603,7 +38603,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 39275, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -38620,10 +38620,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 39228, + "commentStart": 0, "end": 0, "name": { - "commentStart": 39228, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -38633,7 +38633,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 39228, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -38645,17 +38645,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 39314, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 39320, + "commentStart": 0, "elements": [ { - "commentStart": 39329, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -38668,7 +38668,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 39360, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -38679,7 +38679,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 39359, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -38696,10 +38696,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 39309, + "commentStart": 0, "end": 0, "name": { - "commentStart": 39309, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -38709,7 +38709,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 39309, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -38721,17 +38721,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 39397, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 39403, + "commentStart": 0, "elements": [ { - "commentStart": 39412, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -38744,7 +38744,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 39440, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -38755,7 +38755,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 39439, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -38772,10 +38772,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 39392, + "commentStart": 0, "end": 0, "name": { - "commentStart": 39392, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -38785,7 +38785,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 39392, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -38797,18 +38797,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 39477, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 39483, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 39493, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -38819,7 +38819,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 39492, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -38827,7 +38827,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 39520, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -38848,10 +38848,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 39472, + "commentStart": 0, "end": 0, "name": { - "commentStart": 39472, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -38861,7 +38861,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 39472, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -38873,17 +38873,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 39557, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 39563, + "commentStart": 0, "elements": [ { - "commentStart": 39564, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -38895,7 +38895,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 39584, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -38916,10 +38916,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 39552, + "commentStart": 0, "end": 0, "name": { - "commentStart": 39552, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -38929,7 +38929,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 39552, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -38941,18 +38941,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 39615, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 39621, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 39631, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -38963,7 +38963,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 39630, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -38971,7 +38971,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 39659, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -38992,10 +38992,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 39610, + "commentStart": 0, "end": 0, "name": { - "commentStart": 39610, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -39005,7 +39005,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 39610, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -39017,18 +39017,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 39698, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 39704, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 39714, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -39039,7 +39039,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 39713, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -39048,7 +39048,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 39742, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -39059,7 +39059,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 39741, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -39076,10 +39076,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 39693, + "commentStart": 0, "end": 0, "name": { - "commentStart": 39693, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -39089,7 +39089,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 39693, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -39101,18 +39101,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 39780, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 39786, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 39796, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -39123,7 +39123,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 39795, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -39132,7 +39132,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 39824, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -39143,7 +39143,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 39823, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -39160,10 +39160,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 39775, + "commentStart": 0, "end": 0, "name": { - "commentStart": 39775, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -39173,7 +39173,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 39775, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -39185,17 +39185,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 39862, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 39868, + "commentStart": 0, "elements": [ { - "commentStart": 39869, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -39207,7 +39207,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 39888, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -39228,10 +39228,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 39857, + "commentStart": 0, "end": 0, "name": { - "commentStart": 39857, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -39241,7 +39241,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 39857, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -39253,17 +39253,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 39919, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 39925, + "commentStart": 0, "elements": [ { - "commentStart": 39934, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -39276,7 +39276,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 39963, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -39287,7 +39287,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 39962, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -39304,10 +39304,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 39914, + "commentStart": 0, "end": 0, "name": { - "commentStart": 39914, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -39317,7 +39317,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 39914, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -39329,17 +39329,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 40001, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 40007, + "commentStart": 0, "elements": [ { - "commentStart": 40008, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -39351,7 +39351,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 40028, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -39372,10 +39372,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 39996, + "commentStart": 0, "end": 0, "name": { - "commentStart": 39996, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -39385,7 +39385,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 39996, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -39397,17 +39397,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 40058, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 40064, + "commentStart": 0, "elements": [ { - "commentStart": 40073, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -39420,7 +39420,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 40102, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -39431,7 +39431,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 40101, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -39448,10 +39448,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 40053, + "commentStart": 0, "end": 0, "name": { - "commentStart": 40053, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -39461,7 +39461,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 40053, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -39473,17 +39473,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 40139, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 40145, + "commentStart": 0, "elements": [ { - "commentStart": 40146, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -39495,7 +39495,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 40166, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -39516,10 +39516,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 40134, + "commentStart": 0, "end": 0, "name": { - "commentStart": 40134, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -39529,7 +39529,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 40134, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -39541,17 +39541,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 40197, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 40203, + "commentStart": 0, "elements": [ { - "commentStart": 40212, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -39563,7 +39563,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 40239, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -39584,10 +39584,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 40192, + "commentStart": 0, "end": 0, "name": { - "commentStart": 40192, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -39597,7 +39597,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 40192, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -39609,17 +39609,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 40277, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 40283, + "commentStart": 0, "elements": [ { - "commentStart": 40284, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -39631,7 +39631,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 40304, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -39652,10 +39652,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 40272, + "commentStart": 0, "end": 0, "name": { - "commentStart": 40272, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -39665,7 +39665,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 40272, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -39677,18 +39677,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 40335, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 40341, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 40351, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -39699,7 +39699,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 40350, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -39708,7 +39708,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 40380, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -39719,7 +39719,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 40379, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -39736,10 +39736,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 40330, + "commentStart": 0, "end": 0, "name": { - "commentStart": 40330, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -39749,7 +39749,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 40330, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -39761,17 +39761,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 40417, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 40423, + "commentStart": 0, "elements": [ { - "commentStart": 40432, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -39784,7 +39784,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 40460, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -39795,7 +39795,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 40459, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -39812,10 +39812,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 40412, + "commentStart": 0, "end": 0, "name": { - "commentStart": 40412, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -39825,7 +39825,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 40412, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -39837,18 +39837,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 40497, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 40503, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 40513, + "commentStart": 0, "end": 0, "raw": "0.6716353749059765", "start": 0, @@ -39859,7 +39859,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 40512, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -39868,7 +39868,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 40541, + "commentStart": 0, "end": 0, "raw": "0.9605576808879026", "start": 0, @@ -39879,7 +39879,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 40540, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -39896,10 +39896,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 40492, + "commentStart": 0, "end": 0, "name": { - "commentStart": 40492, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -39909,7 +39909,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 40492, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -39921,17 +39921,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 40578, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 40584, + "commentStart": 0, "elements": [ { - "commentStart": 40593, + "commentStart": 0, "end": 0, "raw": "0.010280170930300203", "start": 0, @@ -39944,7 +39944,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 40623, + "commentStart": 0, "end": 0, "raw": "0.37344123662342166", "start": 0, @@ -39955,7 +39955,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 40622, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -39972,10 +39972,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 40573, + "commentStart": 0, "end": 0, "name": { - "commentStart": 40573, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -39985,7 +39985,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 40573, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -39997,17 +39997,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 40661, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 40667, + "commentStart": 0, "elements": [ { - "commentStart": 40676, + "commentStart": 0, "end": 0, "raw": "0.10357375682791004", "start": 0, @@ -40020,7 +40020,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 40705, + "commentStart": 0, "end": 0, "raw": "0.42294321030821425", "start": 0, @@ -40031,7 +40031,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 40704, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -40048,10 +40048,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 40656, + "commentStart": 0, "end": 0, "name": { - "commentStart": 40656, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -40061,7 +40061,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 40656, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -40073,17 +40073,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 40743, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 40749, + "commentStart": 0, "elements": [ { - "commentStart": 40758, + "commentStart": 0, "end": 0, "raw": "0.4520311575096987", "start": 0, @@ -40096,7 +40096,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 40786, + "commentStart": 0, "end": 0, "raw": "0.11232675307600548", "start": 0, @@ -40107,7 +40107,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 40785, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -40124,10 +40124,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 40738, + "commentStart": 0, "end": 0, "name": { - "commentStart": 40738, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -40137,7 +40137,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 40738, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -40149,18 +40149,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 40824, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 40830, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 40840, + "commentStart": 0, "end": 0, "raw": "0.8821185914380845", "start": 0, @@ -40171,7 +40171,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 40839, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -40180,7 +40180,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 40868, + "commentStart": 0, "end": 0, "raw": "0.7155147434939819", "start": 0, @@ -40191,7 +40191,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 40867, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -40208,10 +40208,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 40819, + "commentStart": 0, "end": 0, "name": { - "commentStart": 40819, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -40221,7 +40221,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 40819, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -40233,17 +40233,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 40905, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 40911, + "commentStart": 0, "elements": [ { - "commentStart": 40912, + "commentStart": 0, "end": 0, "raw": "0.9195487101690416", "start": 0, @@ -40255,7 +40255,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 40932, + "commentStart": 0, "end": 0, "raw": "0.2691627465297364", "start": 0, @@ -40276,10 +40276,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 40900, + "commentStart": 0, "end": 0, "name": { - "commentStart": 40900, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -40289,7 +40289,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 40900, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -40301,17 +40301,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 40963, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 40969, + "commentStart": 0, "elements": [ { - "commentStart": 40978, + "commentStart": 0, "end": 0, "raw": "0.7098978191546745", "start": 0, @@ -40323,7 +40323,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 41005, + "commentStart": 0, "end": 0, "raw": "0.11710004169385968", "start": 0, @@ -40344,10 +40344,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 40958, + "commentStart": 0, "end": 0, "name": { - "commentStart": 40958, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -40357,7 +40357,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 40958, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -40369,18 +40369,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 41043, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 41049, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 41059, + "commentStart": 0, "end": 0, "raw": "0.37876368560819995", "start": 0, @@ -40391,7 +40391,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 41058, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -40399,7 +40399,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 41087, + "commentStart": 0, "end": 0, "raw": "0.7106729314759084", "start": 0, @@ -40420,10 +40420,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 41038, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41038, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -40433,7 +40433,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 41038, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -40445,18 +40445,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 41124, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 41130, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 41140, + "commentStart": 0, "end": 0, "raw": "0.29728126898353335", "start": 0, @@ -40467,7 +40467,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 41139, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -40476,7 +40476,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 41169, + "commentStart": 0, "end": 0, "raw": "0.06649734568328003", "start": 0, @@ -40487,7 +40487,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 41168, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -40504,10 +40504,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 41119, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41119, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -40517,7 +40517,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 41119, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -40529,17 +40529,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 41207, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 41213, + "commentStart": 0, "elements": [ { - "commentStart": 41222, + "commentStart": 0, "end": 0, "raw": "0.22965781558352072", "start": 0, @@ -40552,7 +40552,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 41251, + "commentStart": 0, "end": 0, "raw": "0.7601866432836641", "start": 0, @@ -40563,7 +40563,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 41250, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -40580,10 +40580,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 41202, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41202, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -40593,7 +40593,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 41202, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -40605,18 +40605,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 41288, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 41294, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 41304, + "commentStart": 0, "end": 0, "raw": "0.6356501074317229", "start": 0, @@ -40627,7 +40627,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 41303, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -40635,7 +40635,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 41331, + "commentStart": 0, "end": 0, "raw": "0.19458425399338064", "start": 0, @@ -40656,10 +40656,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 41283, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41283, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -40669,7 +40669,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 41283, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -40681,17 +40681,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 41369, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 41375, + "commentStart": 0, "elements": [ { - "commentStart": 41376, + "commentStart": 0, "end": 0, "raw": "0.5721251777404546", "start": 0, @@ -40703,7 +40703,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 41396, + "commentStart": 0, "end": 0, "raw": "0.2888584097921527", "start": 0, @@ -40724,10 +40724,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 41364, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41364, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -40737,7 +40737,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 41364, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -40749,18 +40749,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 41427, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 41433, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 41443, + "commentStart": 0, "end": 0, "raw": "0.9580409549552311", "start": 0, @@ -40771,7 +40771,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 41442, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -40780,7 +40780,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 41471, + "commentStart": 0, "end": 0, "raw": "0.02243818192078395", "start": 0, @@ -40791,7 +40791,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 41470, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -40808,10 +40808,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 41422, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41422, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -40821,7 +40821,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 41422, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -40833,17 +40833,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 41509, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 41515, + "commentStart": 0, "elements": [ { - "commentStart": 41524, + "commentStart": 0, "end": 0, "raw": "0.3299184618602866", "start": 0, @@ -40856,7 +40856,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 41552, + "commentStart": 0, "end": 0, "raw": "0.8353726942369875", "start": 0, @@ -40867,7 +40867,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 41551, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -40884,10 +40884,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 41504, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41504, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -40897,7 +40897,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 41504, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -40909,17 +40909,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 41589, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 41595, + "commentStart": 0, "elements": [ { - "commentStart": 41604, + "commentStart": 0, "end": 0, "raw": "0.7434639386755209", "start": 0, @@ -40932,7 +40932,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 41632, + "commentStart": 0, "end": 0, "raw": "0.7919648864138378", "start": 0, @@ -40943,7 +40943,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 41631, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -40960,10 +40960,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 41584, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41584, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -40973,7 +40973,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 41584, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -40985,17 +40985,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 41669, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 41675, + "commentStart": 0, "elements": [ { - "commentStart": 41676, + "commentStart": 0, "end": 0, "raw": "0.9935751011164615", "start": 0, @@ -41007,7 +41007,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 41696, + "commentStart": 0, "end": 0, "raw": "0.9042566468497608", "start": 0, @@ -41028,10 +41028,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 41664, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41664, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -41041,7 +41041,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 41664, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -41053,18 +41053,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 41727, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 41733, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 41743, + "commentStart": 0, "end": 0, "raw": "0.5035812884687294", "start": 0, @@ -41075,7 +41075,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 41742, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -41083,7 +41083,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 41770, + "commentStart": 0, "end": 0, "raw": "0.5150967434989442", "start": 0, @@ -41104,10 +41104,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 41722, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41722, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -41117,7 +41117,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 41722, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -41129,17 +41129,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 41807, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 41813, + "commentStart": 0, "elements": [ { - "commentStart": 41814, + "commentStart": 0, "end": 0, "raw": "0.5526227215900215", "start": 0, @@ -41151,7 +41151,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 41834, + "commentStart": 0, "end": 0, "raw": "0.7612604137272441", "start": 0, @@ -41172,10 +41172,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 41802, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41802, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -41185,7 +41185,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 41802, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -41197,17 +41197,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 41865, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 41871, + "commentStart": 0, "elements": [ { - "commentStart": 41880, + "commentStart": 0, "end": 0, "raw": "0.8593271349126876", "start": 0, @@ -41219,7 +41219,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 41907, + "commentStart": 0, "end": 0, "raw": "0.08414894953725849", "start": 0, @@ -41240,10 +41240,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 41860, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41860, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -41253,7 +41253,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 41860, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -41265,18 +41265,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 41945, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 41951, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 41961, + "commentStart": 0, "end": 0, "raw": "0.8181049219192864", "start": 0, @@ -41287,7 +41287,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 41960, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -41296,7 +41296,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 41989, + "commentStart": 0, "end": 0, "raw": "0.903548131323352", "start": 0, @@ -41307,7 +41307,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 41988, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -41324,10 +41324,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 41940, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41940, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -41337,7 +41337,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 41940, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -41349,17 +41349,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 42025, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 42031, + "commentStart": 0, "elements": [ { - "commentStart": 42040, + "commentStart": 0, "end": 0, "raw": "0.3165782044458305", "start": 0, @@ -41372,7 +41372,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 42068, + "commentStart": 0, "end": 0, "raw": "0.24189274252014914", "start": 0, @@ -41383,7 +41383,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 42067, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -41400,10 +41400,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 42020, + "commentStart": 0, "end": 0, "name": { - "commentStart": 42020, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -41413,7 +41413,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 42020, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -41425,18 +41425,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 42106, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 42112, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 42122, + "commentStart": 0, "end": 0, "raw": "0.44390956414045135", "start": 0, @@ -41447,7 +41447,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 42121, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -41456,7 +41456,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 42151, + "commentStart": 0, "end": 0, "raw": "0.25912591535126905", "start": 0, @@ -41467,7 +41467,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 42150, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -41484,10 +41484,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 42101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 42101, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -41497,7 +41497,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 42101, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -41509,18 +41509,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 42189, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 42195, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 42205, + "commentStart": 0, "end": 0, "raw": "0.6605165911891009", "start": 0, @@ -41531,7 +41531,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 42204, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -41540,7 +41540,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 42233, + "commentStart": 0, "end": 0, "raw": "0.40355115288839194", "start": 0, @@ -41551,7 +41551,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 42232, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -41568,10 +41568,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 42184, + "commentStart": 0, "end": 0, "name": { - "commentStart": 42184, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -41581,7 +41581,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 42184, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -41593,18 +41593,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 42271, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 42277, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 42287, + "commentStart": 0, "end": 0, "raw": "0.7170489950180006", "start": 0, @@ -41615,7 +41615,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 42286, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -41623,7 +41623,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 42314, + "commentStart": 0, "end": 0, "raw": "0.23454356079651384", "start": 0, @@ -41644,10 +41644,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 42266, + "commentStart": 0, "end": 0, "name": { - "commentStart": 42266, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -41657,7 +41657,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 42266, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -41669,18 +41669,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 42352, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 42358, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 42368, + "commentStart": 0, "end": 0, "raw": "0.2568187045379722", "start": 0, @@ -41691,7 +41691,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 42367, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -41700,7 +41700,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 42396, + "commentStart": 0, "end": 0, "raw": "0.45031188717601367", "start": 0, @@ -41711,7 +41711,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 42395, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -41728,10 +41728,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 42347, + "commentStart": 0, "end": 0, "name": { - "commentStart": 42347, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -41741,7 +41741,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 42347, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -41753,17 +41753,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 42434, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 42440, + "commentStart": 0, "elements": [ { - "commentStart": 42449, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -41776,7 +41776,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 42477, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -41787,7 +41787,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 42476, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -41804,10 +41804,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 42429, + "commentStart": 0, "end": 0, "name": { - "commentStart": 42429, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -41817,7 +41817,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 42429, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -41829,18 +41829,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 42514, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 42520, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 42530, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -41851,7 +41851,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 42529, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -41859,7 +41859,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 42557, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -41880,10 +41880,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 42509, + "commentStart": 0, "end": 0, "name": { - "commentStart": 42509, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -41893,7 +41893,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 42509, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -41905,18 +41905,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 42594, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 42600, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 42610, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -41927,7 +41927,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 42609, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -41935,7 +41935,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 42637, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -41956,10 +41956,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 42589, + "commentStart": 0, "end": 0, "name": { - "commentStart": 42589, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -41969,7 +41969,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 42589, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -41981,18 +41981,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 42674, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 42680, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 42690, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -42003,7 +42003,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 42689, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -42012,7 +42012,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 42718, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -42023,7 +42023,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 42717, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -42040,10 +42040,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 42669, + "commentStart": 0, "end": 0, "name": { - "commentStart": 42669, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -42053,7 +42053,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 42669, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -42065,17 +42065,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 42756, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 42762, + "commentStart": 0, "elements": [ { - "commentStart": 42771, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -42087,7 +42087,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 42799, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -42108,10 +42108,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 42751, + "commentStart": 0, "end": 0, "name": { - "commentStart": 42751, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -42121,7 +42121,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 42751, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -42133,17 +42133,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 42837, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 42843, + "commentStart": 0, "elements": [ { - "commentStart": 42852, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -42155,7 +42155,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 42880, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -42176,10 +42176,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 42832, + "commentStart": 0, "end": 0, "name": { - "commentStart": 42832, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -42189,7 +42189,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 42832, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -42201,18 +42201,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 42918, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 42924, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 42934, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -42223,7 +42223,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 42933, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -42231,7 +42231,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 42962, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -42252,10 +42252,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 42913, + "commentStart": 0, "end": 0, "name": { - "commentStart": 42913, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -42265,7 +42265,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 42913, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -42277,18 +42277,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 42999, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 43005, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 43015, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -42299,7 +42299,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 43014, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -42308,7 +42308,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 43044, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -42319,7 +42319,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 43043, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -42336,10 +42336,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 42994, + "commentStart": 0, "end": 0, "name": { - "commentStart": 42994, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -42349,7 +42349,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 42994, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -42361,17 +42361,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 43082, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 43088, + "commentStart": 0, "elements": [ { - "commentStart": 43097, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -42384,7 +42384,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 43125, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -42395,7 +42395,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 43124, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -42412,10 +42412,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 43077, + "commentStart": 0, "end": 0, "name": { - "commentStart": 43077, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -42425,7 +42425,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 43077, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -42437,17 +42437,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 43163, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 43169, + "commentStart": 0, "elements": [ { - "commentStart": 43178, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -42460,7 +42460,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 43209, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -42471,7 +42471,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 43208, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -42488,10 +42488,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 43158, + "commentStart": 0, "end": 0, "name": { - "commentStart": 43158, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -42501,7 +42501,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 43158, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -42513,17 +42513,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 43246, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 43252, + "commentStart": 0, "elements": [ { - "commentStart": 43261, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -42536,7 +42536,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 43289, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -42547,7 +42547,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 43288, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -42564,10 +42564,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 43241, + "commentStart": 0, "end": 0, "name": { - "commentStart": 43241, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -42577,7 +42577,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 43241, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -42589,18 +42589,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 43326, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 43332, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 43342, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -42611,7 +42611,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 43341, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -42619,7 +42619,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 43369, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -42640,10 +42640,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 43321, + "commentStart": 0, "end": 0, "name": { - "commentStart": 43321, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -42653,7 +42653,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 43321, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -42665,17 +42665,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 43406, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 43412, + "commentStart": 0, "elements": [ { - "commentStart": 43413, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -42687,7 +42687,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 43433, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -42708,10 +42708,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 43401, + "commentStart": 0, "end": 0, "name": { - "commentStart": 43401, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -42721,7 +42721,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 43401, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -42733,18 +42733,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 43464, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 43470, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 43480, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -42755,7 +42755,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 43479, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -42763,7 +42763,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 43508, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -42784,10 +42784,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 43459, + "commentStart": 0, "end": 0, "name": { - "commentStart": 43459, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -42797,7 +42797,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 43459, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -42809,18 +42809,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 43547, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 43553, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 43563, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -42831,7 +42831,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 43562, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -42840,7 +42840,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 43591, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -42851,7 +42851,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 43590, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -42868,10 +42868,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 43542, + "commentStart": 0, "end": 0, "name": { - "commentStart": 43542, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -42881,7 +42881,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 43542, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -42893,18 +42893,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 43629, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 43635, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 43645, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -42915,7 +42915,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 43644, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -42924,7 +42924,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 43673, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -42935,7 +42935,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 43672, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -42952,10 +42952,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 43624, + "commentStart": 0, "end": 0, "name": { - "commentStart": 43624, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -42965,7 +42965,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 43624, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -42977,17 +42977,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 43711, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 43717, + "commentStart": 0, "elements": [ { - "commentStart": 43718, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -42999,7 +42999,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 43737, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -43020,10 +43020,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 43706, + "commentStart": 0, "end": 0, "name": { - "commentStart": 43706, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -43033,7 +43033,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 43706, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -43045,17 +43045,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 43768, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 43774, + "commentStart": 0, "elements": [ { - "commentStart": 43783, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -43068,7 +43068,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 43812, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -43079,7 +43079,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 43811, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -43096,10 +43096,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 43763, + "commentStart": 0, "end": 0, "name": { - "commentStart": 43763, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -43109,7 +43109,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 43763, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -43121,17 +43121,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 43850, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 43856, + "commentStart": 0, "elements": [ { - "commentStart": 43857, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -43143,7 +43143,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 43877, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -43164,10 +43164,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 43845, + "commentStart": 0, "end": 0, "name": { - "commentStart": 43845, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -43177,7 +43177,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 43845, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -43189,17 +43189,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 43907, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 43913, + "commentStart": 0, "elements": [ { - "commentStart": 43922, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -43212,7 +43212,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 43951, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -43223,7 +43223,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 43950, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -43240,10 +43240,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 43902, + "commentStart": 0, "end": 0, "name": { - "commentStart": 43902, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -43253,7 +43253,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 43902, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -43265,17 +43265,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 43988, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 43994, + "commentStart": 0, "elements": [ { - "commentStart": 43995, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -43287,7 +43287,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 44015, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -43308,10 +43308,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 43983, + "commentStart": 0, "end": 0, "name": { - "commentStart": 43983, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -43321,7 +43321,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 43983, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -43333,17 +43333,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 44046, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 44052, + "commentStart": 0, "elements": [ { - "commentStart": 44061, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -43355,7 +43355,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 44088, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -43376,10 +43376,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 44041, + "commentStart": 0, "end": 0, "name": { - "commentStart": 44041, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -43389,7 +43389,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 44041, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -43401,17 +43401,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 44126, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 44132, + "commentStart": 0, "elements": [ { - "commentStart": 44133, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -43423,7 +43423,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 44153, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -43444,10 +43444,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 44121, + "commentStart": 0, "end": 0, "name": { - "commentStart": 44121, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -43457,7 +43457,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 44121, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -43469,18 +43469,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 44184, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 44190, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 44200, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -43491,7 +43491,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 44199, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -43500,7 +43500,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 44229, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -43511,7 +43511,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 44228, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -43528,10 +43528,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 44179, + "commentStart": 0, "end": 0, "name": { - "commentStart": 44179, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -43541,7 +43541,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 44179, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -43553,17 +43553,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 44266, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 44272, + "commentStart": 0, "elements": [ { - "commentStart": 44281, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -43576,7 +43576,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 44309, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -43587,7 +43587,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 44308, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -43604,10 +43604,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 44261, + "commentStart": 0, "end": 0, "name": { - "commentStart": 44261, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -43617,7 +43617,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 44261, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -43629,17 +43629,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 44346, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 44352, + "commentStart": 0, "elements": [ { - "commentStart": 44361, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -43652,7 +43652,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 44389, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -43663,7 +43663,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 44388, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -43680,10 +43680,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 44341, + "commentStart": 0, "end": 0, "name": { - "commentStart": 44341, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -43693,7 +43693,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 44341, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -43705,18 +43705,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 44426, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 44432, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 44442, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -43727,7 +43727,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 44441, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -43735,7 +43735,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 44469, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -43756,10 +43756,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 44421, + "commentStart": 0, "end": 0, "name": { - "commentStart": 44421, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -43769,7 +43769,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 44421, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -43781,17 +43781,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 44506, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 44512, + "commentStart": 0, "elements": [ { - "commentStart": 44521, + "commentStart": 0, "end": 0, "raw": "0.9464450621708211", "start": 0, @@ -43804,7 +43804,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 44549, + "commentStart": 0, "end": 0, "raw": "0.2684908127803667", "start": 0, @@ -43815,7 +43815,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 44548, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -43832,10 +43832,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 44501, + "commentStart": 0, "end": 0, "name": { - "commentStart": 44501, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -43845,7 +43845,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 44501, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -43857,17 +43857,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 44586, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 44592, + "commentStart": 0, "elements": [ { - "commentStart": 44593, + "commentStart": 0, "end": 0, "raw": "0.5241732366617591", "start": 0, @@ -43879,7 +43879,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 44613, + "commentStart": 0, "end": 0, "raw": "0.9011437416408563", "start": 0, @@ -43900,10 +43900,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 44581, + "commentStart": 0, "end": 0, "name": { - "commentStart": 44581, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -43913,7 +43913,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 44581, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -43925,18 +43925,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 44644, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 44650, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 44660, + "commentStart": 0, "end": 0, "raw": "0.14255393713960607", "start": 0, @@ -43947,7 +43947,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 44659, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -43956,7 +43956,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 44689, + "commentStart": 0, "end": 0, "raw": "0.5194262624564814", "start": 0, @@ -43967,7 +43967,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 44688, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -43984,10 +43984,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 44639, + "commentStart": 0, "end": 0, "name": { - "commentStart": 44639, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -43997,7 +43997,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 44639, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -44009,18 +44009,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 44726, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 44732, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 44742, + "commentStart": 0, "end": 0, "raw": "0.4287123231350338", "start": 0, @@ -44031,7 +44031,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 44741, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -44040,7 +44040,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 44770, + "commentStart": 0, "end": 0, "raw": "0.4223564528725028", "start": 0, @@ -44051,7 +44051,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 44769, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -44068,10 +44068,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 44721, + "commentStart": 0, "end": 0, "name": { - "commentStart": 44721, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -44081,7 +44081,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 44721, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -44093,18 +44093,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 44807, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 44813, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 44823, + "commentStart": 0, "end": 0, "raw": "0.09316367294024519", "start": 0, @@ -44115,7 +44115,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 44822, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -44124,7 +44124,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 44852, + "commentStart": 0, "end": 0, "raw": "0.9063127021008246", "start": 0, @@ -44135,7 +44135,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 44851, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -44152,10 +44152,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 44802, + "commentStart": 0, "end": 0, "name": { - "commentStart": 44802, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -44165,7 +44165,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 44802, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -44177,18 +44177,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 44889, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 44895, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 44905, + "commentStart": 0, "end": 0, "raw": "0.2767766535558669", "start": 0, @@ -44199,7 +44199,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 44904, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -44207,7 +44207,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 44932, + "commentStart": 0, "end": 0, "raw": "0.6816248114129131", "start": 0, @@ -44228,10 +44228,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 44884, + "commentStart": 0, "end": 0, "name": { - "commentStart": 44884, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -44241,7 +44241,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 44884, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -44253,17 +44253,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 44969, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 44975, + "commentStart": 0, "elements": [ { - "commentStart": 44984, + "commentStart": 0, "end": 0, "raw": "0.9796762495562534", "start": 0, @@ -44276,7 +44276,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 45012, + "commentStart": 0, "end": 0, "raw": "0.0822145668330625", "start": 0, @@ -44287,7 +44287,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 45011, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -44304,10 +44304,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 44964, + "commentStart": 0, "end": 0, "name": { - "commentStart": 44964, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -44317,7 +44317,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 44964, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -44329,18 +44329,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 45049, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 45055, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 45065, + "commentStart": 0, "end": 0, "raw": "0.8666513070867441", "start": 0, @@ -44351,7 +44351,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 45064, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -44360,7 +44360,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 45093, + "commentStart": 0, "end": 0, "raw": "0.301053160242023", "start": 0, @@ -44371,7 +44371,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 45092, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -44388,10 +44388,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 45044, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45044, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -44401,7 +44401,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 45044, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -44413,17 +44413,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 45129, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 45135, + "commentStart": 0, "elements": [ { - "commentStart": 45144, + "commentStart": 0, "end": 0, "raw": "0.537415656028112", "start": 0, @@ -44435,7 +44435,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 45170, + "commentStart": 0, "end": 0, "raw": "0.020272692875002774", "start": 0, @@ -44456,10 +44456,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 45124, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45124, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -44469,7 +44469,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 45124, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -44481,17 +44481,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 45209, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 45215, + "commentStart": 0, "elements": [ { - "commentStart": 45224, + "commentStart": 0, "end": 0, "raw": "0.9332396256457531", "start": 0, @@ -44504,7 +44504,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 45252, + "commentStart": 0, "end": 0, "raw": "0.6228175690649898", "start": 0, @@ -44515,7 +44515,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 45251, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -44532,10 +44532,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 45204, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45204, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -44545,7 +44545,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 45204, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -44557,17 +44557,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 45289, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 45295, + "commentStart": 0, "elements": [ { - "commentStart": 45304, + "commentStart": 0, "end": 0, "raw": "0.18052415837320734", "start": 0, @@ -44580,7 +44580,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 45333, + "commentStart": 0, "end": 0, "raw": "0.36894384647296197", "start": 0, @@ -44591,7 +44591,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 45332, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -44608,10 +44608,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 45284, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45284, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -44621,7 +44621,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 45284, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -44633,17 +44633,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 45371, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 45377, + "commentStart": 0, "elements": [ { - "commentStart": 45378, + "commentStart": 0, "end": 0, "raw": "0.5384372634075449", "start": 0, @@ -44655,7 +44655,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 45398, + "commentStart": 0, "end": 0, "raw": "0.2377565050887107", "start": 0, @@ -44676,10 +44676,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 45366, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45366, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -44689,7 +44689,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 45366, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -44701,17 +44701,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 45429, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 45435, + "commentStart": 0, "elements": [ { - "commentStart": 45444, + "commentStart": 0, "end": 0, "raw": "0.39043436929278874", "start": 0, @@ -44723,7 +44723,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 45472, + "commentStart": 0, "end": 0, "raw": "0.14273182483160451", "start": 0, @@ -44744,10 +44744,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 45424, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45424, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -44757,7 +44757,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 45424, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -44769,17 +44769,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 45510, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 45516, + "commentStart": 0, "elements": [ { - "commentStart": 45525, + "commentStart": 0, "end": 0, "raw": "0.09782890412897283", "start": 0, @@ -44791,7 +44791,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 45553, + "commentStart": 0, "end": 0, "raw": "0.9907667536909659", "start": 0, @@ -44812,10 +44812,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 45505, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45505, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -44825,7 +44825,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 45505, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -44837,17 +44837,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 45590, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 45596, + "commentStart": 0, "elements": [ { - "commentStart": 45605, + "commentStart": 0, "end": 0, "raw": "0.5286610085921146", "start": 0, @@ -44860,7 +44860,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 45633, + "commentStart": 0, "end": 0, "raw": "0.7924508308419256", "start": 0, @@ -44871,7 +44871,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 45632, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -44888,10 +44888,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 45585, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45585, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -44901,7 +44901,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 45585, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -44913,17 +44913,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 45670, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 45676, + "commentStart": 0, "elements": [ { - "commentStart": 45685, + "commentStart": 0, "end": 0, "raw": "0.3789978184503342", "start": 0, @@ -44935,7 +44935,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 45712, + "commentStart": 0, "end": 0, "raw": "0.12396120576838676", "start": 0, @@ -44956,10 +44956,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 45665, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45665, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -44969,7 +44969,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 45665, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -44981,18 +44981,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 45750, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 45756, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 45766, + "commentStart": 0, "end": 0, "raw": "0.9484912744890612", "start": 0, @@ -45003,7 +45003,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 45765, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -45011,7 +45011,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 45793, + "commentStart": 0, "end": 0, "raw": "0.6729649846476855", "start": 0, @@ -45032,10 +45032,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 45745, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45745, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -45045,7 +45045,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 45745, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -45057,17 +45057,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 45830, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 45836, + "commentStart": 0, "elements": [ { - "commentStart": 45845, + "commentStart": 0, "end": 0, "raw": "0.7451758753425153", "start": 0, @@ -45080,7 +45080,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 45873, + "commentStart": 0, "end": 0, "raw": "0.21318737562458967", "start": 0, @@ -45091,7 +45091,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 45872, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -45108,10 +45108,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 45825, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45825, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -45121,7 +45121,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 45825, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -45133,17 +45133,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 45911, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 45917, + "commentStart": 0, "elements": [ { - "commentStart": 45926, + "commentStart": 0, "end": 0, "raw": "0.1873200727251887", "start": 0, @@ -45156,7 +45156,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 45954, + "commentStart": 0, "end": 0, "raw": "0.15961374297992448", "start": 0, @@ -45167,7 +45167,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 45953, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -45184,10 +45184,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 45906, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45906, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -45197,7 +45197,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 45906, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -45209,18 +45209,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 45992, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 45998, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 46008, + "commentStart": 0, "end": 0, "raw": "0.05729464924537564", "start": 0, @@ -45231,7 +45231,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 46007, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -45240,7 +45240,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 46037, + "commentStart": 0, "end": 0, "raw": "0.5436345558508746", "start": 0, @@ -45251,7 +45251,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 46036, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -45268,10 +45268,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 45987, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45987, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -45281,7 +45281,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 45987, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -45293,18 +45293,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 46074, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 46080, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 46090, + "commentStart": 0, "end": 0, "raw": "0.09582414374469184", "start": 0, @@ -45315,7 +45315,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 46089, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -45324,7 +45324,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 46119, + "commentStart": 0, "end": 0, "raw": "0.7533839681212353", "start": 0, @@ -45335,7 +45335,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 46118, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -45352,10 +45352,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 46069, + "commentStart": 0, "end": 0, "name": { - "commentStart": 46069, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -45365,7 +45365,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 46069, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -45377,18 +45377,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 46156, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 46162, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 46172, + "commentStart": 0, "end": 0, "raw": "0.17254116580051848", "start": 0, @@ -45399,7 +45399,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 46171, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -45408,7 +45408,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 46201, + "commentStart": 0, "end": 0, "raw": "0.7669113400341137", "start": 0, @@ -45419,7 +45419,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 46200, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -45436,10 +45436,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 46151, + "commentStart": 0, "end": 0, "name": { - "commentStart": 46151, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -45449,7 +45449,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 46151, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -45461,17 +45461,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 46238, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 46244, + "commentStart": 0, "elements": [ { - "commentStart": 46245, + "commentStart": 0, "end": 0, "raw": "0.8944730032887609", "start": 0, @@ -45483,7 +45483,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 46265, + "commentStart": 0, "end": 0, "raw": "0.6093318694741408", "start": 0, @@ -45504,10 +45504,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 46233, + "commentStart": 0, "end": 0, "name": { - "commentStart": 46233, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -45517,7 +45517,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 46233, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -45529,18 +45529,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 46296, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 46302, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 46312, + "commentStart": 0, "end": 0, "raw": "0.3670208139314082", "start": 0, @@ -45551,7 +45551,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 46311, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -45559,7 +45559,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 46339, + "commentStart": 0, "end": 0, "raw": "0.21201331909674526", "start": 0, @@ -45580,10 +45580,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 46291, + "commentStart": 0, "end": 0, "name": { - "commentStart": 46291, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -45593,7 +45593,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 46291, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -45605,18 +45605,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 46377, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 46383, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 46393, + "commentStart": 0, "end": 0, "raw": "0.4707511307971115", "start": 0, @@ -45627,7 +45627,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 46392, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -45635,7 +45635,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 46420, + "commentStart": 0, "end": 0, "raw": "0.4905279615419764", "start": 0, @@ -45656,10 +45656,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 46372, + "commentStart": 0, "end": 0, "name": { - "commentStart": 46372, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -45669,7 +45669,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 46372, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -45681,18 +45681,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 46457, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 46463, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 46473, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -45703,7 +45703,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 46472, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -45711,7 +45711,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 46500, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -45732,10 +45732,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 46452, + "commentStart": 0, "end": 0, "name": { - "commentStart": 46452, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -45745,7 +45745,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 46452, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -45757,18 +45757,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 46537, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 46543, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 46553, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -45779,7 +45779,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 46552, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -45788,7 +45788,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 46581, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -45799,7 +45799,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 46580, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -45816,10 +45816,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 46532, + "commentStart": 0, "end": 0, "name": { - "commentStart": 46532, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -45829,7 +45829,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 46532, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -45841,17 +45841,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 46619, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 46625, + "commentStart": 0, "elements": [ { - "commentStart": 46634, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -45863,7 +45863,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 46662, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -45884,10 +45884,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 46614, + "commentStart": 0, "end": 0, "name": { - "commentStart": 46614, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -45897,7 +45897,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 46614, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -45909,17 +45909,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 46700, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 46706, + "commentStart": 0, "elements": [ { - "commentStart": 46715, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -45931,7 +45931,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 46743, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -45952,10 +45952,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 46695, + "commentStart": 0, "end": 0, "name": { - "commentStart": 46695, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -45965,7 +45965,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 46695, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -45977,18 +45977,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 46781, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 46787, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 46797, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -45999,7 +45999,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 46796, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -46007,7 +46007,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 46825, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -46028,10 +46028,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 46776, + "commentStart": 0, "end": 0, "name": { - "commentStart": 46776, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -46041,7 +46041,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 46776, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -46053,18 +46053,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 46862, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 46868, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 46878, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -46075,7 +46075,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 46877, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -46084,7 +46084,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 46907, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -46095,7 +46095,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 46906, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -46112,10 +46112,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 46857, + "commentStart": 0, "end": 0, "name": { - "commentStart": 46857, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -46125,7 +46125,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 46857, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -46137,17 +46137,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 46945, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 46951, + "commentStart": 0, "elements": [ { - "commentStart": 46960, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -46160,7 +46160,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 46988, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -46171,7 +46171,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 46987, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -46188,10 +46188,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 46940, + "commentStart": 0, "end": 0, "name": { - "commentStart": 46940, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -46201,7 +46201,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 46940, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -46213,17 +46213,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 47026, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 47032, + "commentStart": 0, "elements": [ { - "commentStart": 47041, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -46236,7 +46236,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 47072, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -46247,7 +46247,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 47071, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -46264,10 +46264,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 47021, + "commentStart": 0, "end": 0, "name": { - "commentStart": 47021, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -46277,7 +46277,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 47021, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -46289,17 +46289,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 47109, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 47115, + "commentStart": 0, "elements": [ { - "commentStart": 47124, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -46312,7 +46312,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 47152, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -46323,7 +46323,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 47151, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -46340,10 +46340,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 47104, + "commentStart": 0, "end": 0, "name": { - "commentStart": 47104, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -46353,7 +46353,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 47104, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -46365,18 +46365,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 47189, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 47195, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 47205, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -46387,7 +46387,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 47204, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -46395,7 +46395,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 47232, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -46416,10 +46416,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 47184, + "commentStart": 0, "end": 0, "name": { - "commentStart": 47184, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -46429,7 +46429,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 47184, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -46441,17 +46441,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 47269, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 47275, + "commentStart": 0, "elements": [ { - "commentStart": 47276, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -46463,7 +46463,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 47296, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -46484,10 +46484,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 47264, + "commentStart": 0, "end": 0, "name": { - "commentStart": 47264, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -46497,7 +46497,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 47264, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -46509,18 +46509,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 47327, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 47333, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 47343, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -46531,7 +46531,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 47342, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -46539,7 +46539,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 47371, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -46560,10 +46560,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 47322, + "commentStart": 0, "end": 0, "name": { - "commentStart": 47322, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -46573,7 +46573,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 47322, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -46585,18 +46585,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 47410, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 47416, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 47426, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -46607,7 +46607,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 47425, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -46616,7 +46616,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 47454, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -46627,7 +46627,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 47453, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -46644,10 +46644,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 47405, + "commentStart": 0, "end": 0, "name": { - "commentStart": 47405, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -46657,7 +46657,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 47405, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -46669,18 +46669,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 47492, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 47498, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 47508, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -46691,7 +46691,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 47507, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -46700,7 +46700,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 47536, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -46711,7 +46711,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 47535, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -46728,10 +46728,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 47487, + "commentStart": 0, "end": 0, "name": { - "commentStart": 47487, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -46741,7 +46741,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 47487, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -46753,17 +46753,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 47574, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 47580, + "commentStart": 0, "elements": [ { - "commentStart": 47581, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -46775,7 +46775,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 47600, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -46796,10 +46796,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 47569, + "commentStart": 0, "end": 0, "name": { - "commentStart": 47569, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -46809,7 +46809,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 47569, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -46821,17 +46821,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 47631, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 47637, + "commentStart": 0, "elements": [ { - "commentStart": 47646, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -46844,7 +46844,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 47675, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -46855,7 +46855,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 47674, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -46872,10 +46872,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 47626, + "commentStart": 0, "end": 0, "name": { - "commentStart": 47626, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -46885,7 +46885,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 47626, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -46897,17 +46897,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 47713, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 47719, + "commentStart": 0, "elements": [ { - "commentStart": 47720, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -46919,7 +46919,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 47740, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -46940,10 +46940,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 47708, + "commentStart": 0, "end": 0, "name": { - "commentStart": 47708, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -46953,7 +46953,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 47708, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -46965,17 +46965,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 47770, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 47776, + "commentStart": 0, "elements": [ { - "commentStart": 47785, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -46988,7 +46988,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 47814, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -46999,7 +46999,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 47813, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -47016,10 +47016,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 47765, + "commentStart": 0, "end": 0, "name": { - "commentStart": 47765, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -47029,7 +47029,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 47765, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -47041,17 +47041,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 47851, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 47857, + "commentStart": 0, "elements": [ { - "commentStart": 47858, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -47063,7 +47063,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 47878, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -47084,10 +47084,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 47846, + "commentStart": 0, "end": 0, "name": { - "commentStart": 47846, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -47097,7 +47097,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 47846, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -47109,17 +47109,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 47909, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 47915, + "commentStart": 0, "elements": [ { - "commentStart": 47924, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -47131,7 +47131,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 47951, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -47152,10 +47152,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 47904, + "commentStart": 0, "end": 0, "name": { - "commentStart": 47904, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -47165,7 +47165,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 47904, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -47177,17 +47177,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 47989, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 47995, + "commentStart": 0, "elements": [ { - "commentStart": 47996, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -47199,7 +47199,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 48016, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -47220,10 +47220,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 47984, + "commentStart": 0, "end": 0, "name": { - "commentStart": 47984, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -47233,7 +47233,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 47984, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -47245,18 +47245,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 48047, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 48053, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 48063, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -47267,7 +47267,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 48062, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -47276,7 +47276,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 48092, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -47287,7 +47287,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 48091, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -47304,10 +47304,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 48042, + "commentStart": 0, "end": 0, "name": { - "commentStart": 48042, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -47317,7 +47317,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 48042, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -47329,17 +47329,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 48129, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 48135, + "commentStart": 0, "elements": [ { - "commentStart": 48144, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -47352,7 +47352,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 48172, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -47363,7 +47363,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 48171, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -47380,10 +47380,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 48124, + "commentStart": 0, "end": 0, "name": { - "commentStart": 48124, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -47393,7 +47393,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 48124, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -47405,18 +47405,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 48209, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 48215, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 48225, + "commentStart": 0, "end": 0, "raw": "0.6716353749059765", "start": 0, @@ -47427,7 +47427,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 48224, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -47436,7 +47436,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 48253, + "commentStart": 0, "end": 0, "raw": "0.9605576808879026", "start": 0, @@ -47447,7 +47447,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 48252, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -47464,10 +47464,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 48204, + "commentStart": 0, "end": 0, "name": { - "commentStart": 48204, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -47477,7 +47477,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 48204, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -47489,17 +47489,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 48290, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 48296, + "commentStart": 0, "elements": [ { - "commentStart": 48305, + "commentStart": 0, "end": 0, "raw": "0.010280170930300203", "start": 0, @@ -47512,7 +47512,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 48335, + "commentStart": 0, "end": 0, "raw": "0.37344123662342166", "start": 0, @@ -47523,7 +47523,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 48334, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -47540,10 +47540,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 48285, + "commentStart": 0, "end": 0, "name": { - "commentStart": 48285, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -47553,7 +47553,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 48285, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -47565,17 +47565,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 48373, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 48379, + "commentStart": 0, "elements": [ { - "commentStart": 48388, + "commentStart": 0, "end": 0, "raw": "0.10357375682791004", "start": 0, @@ -47588,7 +47588,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 48417, + "commentStart": 0, "end": 0, "raw": "0.42294321030821425", "start": 0, @@ -47599,7 +47599,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 48416, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -47616,10 +47616,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 48368, + "commentStart": 0, "end": 0, "name": { - "commentStart": 48368, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -47629,7 +47629,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 48368, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -47641,17 +47641,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 48455, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 48461, + "commentStart": 0, "elements": [ { - "commentStart": 48470, + "commentStart": 0, "end": 0, "raw": "0.4520311575096987", "start": 0, @@ -47664,7 +47664,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 48498, + "commentStart": 0, "end": 0, "raw": "0.11232675307600548", "start": 0, @@ -47675,7 +47675,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 48497, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -47692,10 +47692,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 48450, + "commentStart": 0, "end": 0, "name": { - "commentStart": 48450, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -47705,7 +47705,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 48450, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -47717,18 +47717,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 48536, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 48542, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 48552, + "commentStart": 0, "end": 0, "raw": "0.8821185914380845", "start": 0, @@ -47739,7 +47739,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 48551, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -47748,7 +47748,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 48580, + "commentStart": 0, "end": 0, "raw": "0.7155147434939819", "start": 0, @@ -47759,7 +47759,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 48579, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -47776,10 +47776,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 48531, + "commentStart": 0, "end": 0, "name": { - "commentStart": 48531, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -47789,7 +47789,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 48531, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -47801,17 +47801,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 48617, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 48623, + "commentStart": 0, "elements": [ { - "commentStart": 48624, + "commentStart": 0, "end": 0, "raw": "0.9195487101690416", "start": 0, @@ -47823,7 +47823,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 48644, + "commentStart": 0, "end": 0, "raw": "0.2691627465297364", "start": 0, @@ -47844,10 +47844,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 48612, + "commentStart": 0, "end": 0, "name": { - "commentStart": 48612, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -47857,7 +47857,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 48612, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -47869,17 +47869,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 48675, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 48681, + "commentStart": 0, "elements": [ { - "commentStart": 48690, + "commentStart": 0, "end": 0, "raw": "0.7098978191546745", "start": 0, @@ -47891,7 +47891,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 48717, + "commentStart": 0, "end": 0, "raw": "0.11710004169385968", "start": 0, @@ -47912,10 +47912,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 48670, + "commentStart": 0, "end": 0, "name": { - "commentStart": 48670, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -47925,7 +47925,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 48670, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -47937,18 +47937,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 48755, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 48761, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 48771, + "commentStart": 0, "end": 0, "raw": "0.37876368560819995", "start": 0, @@ -47959,7 +47959,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 48770, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -47967,7 +47967,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 48799, + "commentStart": 0, "end": 0, "raw": "0.7106729314759084", "start": 0, @@ -47988,10 +47988,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 48750, + "commentStart": 0, "end": 0, "name": { - "commentStart": 48750, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -48001,7 +48001,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 48750, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -48013,18 +48013,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 48836, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 48842, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 48852, + "commentStart": 0, "end": 0, "raw": "0.29728126898353335", "start": 0, @@ -48035,7 +48035,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 48851, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -48044,7 +48044,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 48881, + "commentStart": 0, "end": 0, "raw": "0.06649734568328003", "start": 0, @@ -48055,7 +48055,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 48880, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -48072,10 +48072,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 48831, + "commentStart": 0, "end": 0, "name": { - "commentStart": 48831, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -48085,7 +48085,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 48831, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -48097,17 +48097,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 48919, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 48925, + "commentStart": 0, "elements": [ { - "commentStart": 48934, + "commentStart": 0, "end": 0, "raw": "0.22965781558352072", "start": 0, @@ -48120,7 +48120,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 48963, + "commentStart": 0, "end": 0, "raw": "0.7601866432836641", "start": 0, @@ -48131,7 +48131,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 48962, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -48148,10 +48148,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 48914, + "commentStart": 0, "end": 0, "name": { - "commentStart": 48914, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -48161,7 +48161,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 48914, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -48173,18 +48173,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 49000, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 49006, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 49016, + "commentStart": 0, "end": 0, "raw": "0.6356501074317229", "start": 0, @@ -48195,7 +48195,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 49015, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -48203,7 +48203,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 49043, + "commentStart": 0, "end": 0, "raw": "0.19458425399338064", "start": 0, @@ -48224,10 +48224,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 48995, + "commentStart": 0, "end": 0, "name": { - "commentStart": 48995, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -48237,7 +48237,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 48995, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -48249,17 +48249,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 49081, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 49087, + "commentStart": 0, "elements": [ { - "commentStart": 49088, + "commentStart": 0, "end": 0, "raw": "0.5721251777404546", "start": 0, @@ -48271,7 +48271,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 49108, + "commentStart": 0, "end": 0, "raw": "0.2888584097921527", "start": 0, @@ -48292,10 +48292,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 49076, + "commentStart": 0, "end": 0, "name": { - "commentStart": 49076, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -48305,7 +48305,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 49076, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -48317,18 +48317,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 49139, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 49145, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 49155, + "commentStart": 0, "end": 0, "raw": "0.9580409549552311", "start": 0, @@ -48339,7 +48339,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 49154, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -48348,7 +48348,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 49183, + "commentStart": 0, "end": 0, "raw": "0.02243818192078395", "start": 0, @@ -48359,7 +48359,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 49182, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -48376,10 +48376,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 49134, + "commentStart": 0, "end": 0, "name": { - "commentStart": 49134, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -48389,7 +48389,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 49134, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -48401,17 +48401,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 49221, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 49227, + "commentStart": 0, "elements": [ { - "commentStart": 49236, + "commentStart": 0, "end": 0, "raw": "0.3299184618602866", "start": 0, @@ -48424,7 +48424,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 49264, + "commentStart": 0, "end": 0, "raw": "0.8353726942369875", "start": 0, @@ -48435,7 +48435,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 49263, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -48452,10 +48452,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 49216, + "commentStart": 0, "end": 0, "name": { - "commentStart": 49216, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -48465,7 +48465,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 49216, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -48477,17 +48477,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 49301, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 49307, + "commentStart": 0, "elements": [ { - "commentStart": 49316, + "commentStart": 0, "end": 0, "raw": "0.7434639386755209", "start": 0, @@ -48500,7 +48500,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 49344, + "commentStart": 0, "end": 0, "raw": "0.7919648864138378", "start": 0, @@ -48511,7 +48511,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 49343, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -48528,10 +48528,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 49296, + "commentStart": 0, "end": 0, "name": { - "commentStart": 49296, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -48541,7 +48541,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 49296, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -48553,17 +48553,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 49381, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 49387, + "commentStart": 0, "elements": [ { - "commentStart": 49388, + "commentStart": 0, "end": 0, "raw": "0.9935751011164615", "start": 0, @@ -48575,7 +48575,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 49408, + "commentStart": 0, "end": 0, "raw": "0.9042566468497608", "start": 0, @@ -48596,10 +48596,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 49376, + "commentStart": 0, "end": 0, "name": { - "commentStart": 49376, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -48609,7 +48609,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 49376, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -48621,18 +48621,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 49439, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 49445, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 49455, + "commentStart": 0, "end": 0, "raw": "0.5035812884687294", "start": 0, @@ -48643,7 +48643,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 49454, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -48651,7 +48651,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 49482, + "commentStart": 0, "end": 0, "raw": "0.5150967434989442", "start": 0, @@ -48672,10 +48672,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 49434, + "commentStart": 0, "end": 0, "name": { - "commentStart": 49434, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -48685,7 +48685,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 49434, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -48697,17 +48697,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 49519, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 49525, + "commentStart": 0, "elements": [ { - "commentStart": 49526, + "commentStart": 0, "end": 0, "raw": "0.5526227215900215", "start": 0, @@ -48719,7 +48719,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 49546, + "commentStart": 0, "end": 0, "raw": "0.7612604137272441", "start": 0, @@ -48740,10 +48740,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 49514, + "commentStart": 0, "end": 0, "name": { - "commentStart": 49514, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -48753,7 +48753,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 49514, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -48765,17 +48765,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 49577, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 49583, + "commentStart": 0, "elements": [ { - "commentStart": 49592, + "commentStart": 0, "end": 0, "raw": "0.8593271349126876", "start": 0, @@ -48787,7 +48787,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 49619, + "commentStart": 0, "end": 0, "raw": "0.08414894953725849", "start": 0, @@ -48808,10 +48808,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 49572, + "commentStart": 0, "end": 0, "name": { - "commentStart": 49572, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -48821,7 +48821,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 49572, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -48833,18 +48833,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 49657, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 49663, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 49673, + "commentStart": 0, "end": 0, "raw": "0.8181049219192864", "start": 0, @@ -48855,7 +48855,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 49672, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -48864,7 +48864,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 49701, + "commentStart": 0, "end": 0, "raw": "0.903548131323352", "start": 0, @@ -48875,7 +48875,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 49700, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -48892,10 +48892,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 49652, + "commentStart": 0, "end": 0, "name": { - "commentStart": 49652, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -48905,7 +48905,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 49652, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -48917,17 +48917,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 49737, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 49743, + "commentStart": 0, "elements": [ { - "commentStart": 49752, + "commentStart": 0, "end": 0, "raw": "0.3165782044458305", "start": 0, @@ -48940,7 +48940,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 49780, + "commentStart": 0, "end": 0, "raw": "0.24189274252014914", "start": 0, @@ -48951,7 +48951,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 49779, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -48968,10 +48968,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 49732, + "commentStart": 0, "end": 0, "name": { - "commentStart": 49732, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -48981,7 +48981,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 49732, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -48993,18 +48993,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 49818, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 49824, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 49834, + "commentStart": 0, "end": 0, "raw": "0.44390956414045135", "start": 0, @@ -49015,7 +49015,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 49833, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49024,7 +49024,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 49863, + "commentStart": 0, "end": 0, "raw": "0.25912591535126905", "start": 0, @@ -49035,7 +49035,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 49862, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49052,10 +49052,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 49813, + "commentStart": 0, "end": 0, "name": { - "commentStart": 49813, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -49065,7 +49065,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 49813, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -49077,18 +49077,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 49901, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 49907, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 49917, + "commentStart": 0, "end": 0, "raw": "0.6605165911891009", "start": 0, @@ -49099,7 +49099,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 49916, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49108,7 +49108,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 49945, + "commentStart": 0, "end": 0, "raw": "0.40355115288839194", "start": 0, @@ -49119,7 +49119,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 49944, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49136,10 +49136,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 49896, + "commentStart": 0, "end": 0, "name": { - "commentStart": 49896, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -49149,7 +49149,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 49896, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -49161,18 +49161,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 49983, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 49989, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 49999, + "commentStart": 0, "end": 0, "raw": "0.7170489950180006", "start": 0, @@ -49183,7 +49183,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 49998, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49191,7 +49191,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 50026, + "commentStart": 0, "end": 0, "raw": "0.23454356079651384", "start": 0, @@ -49212,10 +49212,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 49978, + "commentStart": 0, "end": 0, "name": { - "commentStart": 49978, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -49225,7 +49225,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 49978, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -49237,18 +49237,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 50064, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 50070, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 50080, + "commentStart": 0, "end": 0, "raw": "0.2568187045379722", "start": 0, @@ -49259,7 +49259,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 50079, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49268,7 +49268,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 50108, + "commentStart": 0, "end": 0, "raw": "0.45031188717601367", "start": 0, @@ -49279,7 +49279,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 50107, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49296,10 +49296,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 50059, + "commentStart": 0, "end": 0, "name": { - "commentStart": 50059, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -49309,7 +49309,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 50059, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -49321,17 +49321,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 50146, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 50152, + "commentStart": 0, "elements": [ { - "commentStart": 50161, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -49344,7 +49344,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 50189, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -49355,7 +49355,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 50188, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49372,10 +49372,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 50141, + "commentStart": 0, "end": 0, "name": { - "commentStart": 50141, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -49385,7 +49385,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 50141, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -49397,18 +49397,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 50226, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 50232, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 50242, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -49419,7 +49419,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 50241, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49427,7 +49427,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 50269, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -49448,10 +49448,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 50221, + "commentStart": 0, "end": 0, "name": { - "commentStart": 50221, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -49461,7 +49461,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 50221, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -49473,18 +49473,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 50306, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 50312, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 50322, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -49495,7 +49495,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 50321, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49503,7 +49503,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 50349, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -49524,10 +49524,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 50301, + "commentStart": 0, "end": 0, "name": { - "commentStart": 50301, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -49537,7 +49537,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 50301, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -49549,18 +49549,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 50386, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 50392, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 50402, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -49571,7 +49571,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 50401, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49580,7 +49580,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 50430, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -49591,7 +49591,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 50429, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49608,10 +49608,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 50381, + "commentStart": 0, "end": 0, "name": { - "commentStart": 50381, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -49621,7 +49621,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 50381, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -49633,17 +49633,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 50468, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 50474, + "commentStart": 0, "elements": [ { - "commentStart": 50483, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -49655,7 +49655,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 50511, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -49676,10 +49676,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 50463, + "commentStart": 0, "end": 0, "name": { - "commentStart": 50463, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -49689,7 +49689,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 50463, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -49701,17 +49701,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 50549, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 50555, + "commentStart": 0, "elements": [ { - "commentStart": 50564, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -49723,7 +49723,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 50592, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -49744,10 +49744,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 50544, + "commentStart": 0, "end": 0, "name": { - "commentStart": 50544, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -49757,7 +49757,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 50544, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -49769,18 +49769,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 50630, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 50636, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 50646, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -49791,7 +49791,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 50645, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49799,7 +49799,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 50674, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -49820,10 +49820,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 50625, + "commentStart": 0, "end": 0, "name": { - "commentStart": 50625, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -49833,7 +49833,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 50625, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -49845,18 +49845,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 50711, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 50717, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 50727, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -49867,7 +49867,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 50726, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49876,7 +49876,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 50756, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -49887,7 +49887,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 50755, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49904,10 +49904,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 50706, + "commentStart": 0, "end": 0, "name": { - "commentStart": 50706, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -49917,7 +49917,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 50706, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -49929,17 +49929,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 50794, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 50800, + "commentStart": 0, "elements": [ { - "commentStart": 50809, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -49952,7 +49952,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 50837, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -49963,7 +49963,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 50836, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -49980,10 +49980,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 50789, + "commentStart": 0, "end": 0, "name": { - "commentStart": 50789, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -49993,7 +49993,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 50789, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -50005,17 +50005,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 50875, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 50881, + "commentStart": 0, "elements": [ { - "commentStart": 50890, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -50028,7 +50028,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 50921, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -50039,7 +50039,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 50920, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -50056,10 +50056,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 50870, + "commentStart": 0, "end": 0, "name": { - "commentStart": 50870, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -50069,7 +50069,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 50870, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -50081,17 +50081,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 50958, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 50964, + "commentStart": 0, "elements": [ { - "commentStart": 50973, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -50104,7 +50104,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 51001, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -50115,7 +50115,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 51000, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -50132,10 +50132,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 50953, + "commentStart": 0, "end": 0, "name": { - "commentStart": 50953, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -50145,7 +50145,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 50953, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -50157,18 +50157,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 51038, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 51044, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 51054, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -50179,7 +50179,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 51053, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -50187,7 +50187,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 51081, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -50208,10 +50208,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 51033, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51033, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -50221,7 +50221,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 51033, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -50233,17 +50233,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 51118, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 51124, + "commentStart": 0, "elements": [ { - "commentStart": 51125, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -50255,7 +50255,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 51145, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -50276,10 +50276,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 51113, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51113, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -50289,7 +50289,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 51113, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -50301,18 +50301,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 51176, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 51182, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 51192, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -50323,7 +50323,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 51191, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -50331,7 +50331,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 51220, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -50352,10 +50352,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 51171, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51171, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -50365,7 +50365,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 51171, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -50377,18 +50377,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 51259, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 51265, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 51275, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -50399,7 +50399,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 51274, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -50408,7 +50408,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 51303, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -50419,7 +50419,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 51302, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -50436,10 +50436,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 51254, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51254, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -50449,7 +50449,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 51254, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -50461,18 +50461,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 51341, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 51347, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 51357, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -50483,7 +50483,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 51356, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -50492,7 +50492,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 51385, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -50503,7 +50503,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 51384, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -50520,10 +50520,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 51336, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51336, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -50533,7 +50533,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 51336, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -50545,17 +50545,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 51423, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 51429, + "commentStart": 0, "elements": [ { - "commentStart": 51430, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -50567,7 +50567,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 51449, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -50588,10 +50588,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 51418, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51418, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -50601,7 +50601,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 51418, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -50613,17 +50613,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 51480, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 51486, + "commentStart": 0, "elements": [ { - "commentStart": 51495, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -50636,7 +50636,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 51524, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -50647,7 +50647,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 51523, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -50664,10 +50664,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 51475, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51475, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -50677,7 +50677,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 51475, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -50689,17 +50689,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 51562, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 51568, + "commentStart": 0, "elements": [ { - "commentStart": 51569, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -50711,7 +50711,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 51589, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -50732,10 +50732,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 51557, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51557, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -50745,7 +50745,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 51557, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -50757,17 +50757,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 51619, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 51625, + "commentStart": 0, "elements": [ { - "commentStart": 51634, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -50780,7 +50780,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 51663, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -50791,7 +50791,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 51662, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -50808,10 +50808,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 51614, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51614, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -50821,7 +50821,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 51614, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -50833,17 +50833,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 51700, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 51706, + "commentStart": 0, "elements": [ { - "commentStart": 51707, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -50855,7 +50855,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 51727, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -50876,10 +50876,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 51695, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51695, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -50889,7 +50889,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 51695, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -50901,17 +50901,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 51758, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 51764, + "commentStart": 0, "elements": [ { - "commentStart": 51773, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -50923,7 +50923,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 51800, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -50944,10 +50944,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 51753, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51753, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -50957,7 +50957,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 51753, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -50969,17 +50969,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 51838, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 51844, + "commentStart": 0, "elements": [ { - "commentStart": 51845, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -50991,7 +50991,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 51865, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -51012,10 +51012,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 51833, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51833, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -51025,7 +51025,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 51833, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -51037,18 +51037,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 51896, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 51902, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 51912, + "commentStart": 0, "end": 0, "raw": "0.3670208139314082", "start": 0, @@ -51059,7 +51059,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 51911, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -51067,7 +51067,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 51939, + "commentStart": 0, "end": 0, "raw": "0.21201331909674526", "start": 0, @@ -51088,10 +51088,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 51891, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51891, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -51101,7 +51101,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 51891, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -51113,18 +51113,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 51977, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 51983, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 51993, + "commentStart": 0, "end": 0, "raw": "0.4707511307971115", "start": 0, @@ -51135,7 +51135,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 51992, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -51143,7 +51143,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 52020, + "commentStart": 0, "end": 0, "raw": "0.4905279615419764", "start": 0, @@ -51164,10 +51164,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 51972, + "commentStart": 0, "end": 0, "name": { - "commentStart": 51972, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -51177,7 +51177,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 51972, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -51189,18 +51189,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 52057, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 52063, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 52073, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -51211,7 +51211,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 52072, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -51219,7 +51219,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 52100, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -51240,10 +51240,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 52052, + "commentStart": 0, "end": 0, "name": { - "commentStart": 52052, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -51253,7 +51253,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 52052, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -51265,18 +51265,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 52137, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 52143, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 52153, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -51287,7 +51287,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 52152, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -51296,7 +51296,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 52181, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -51307,7 +51307,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 52180, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -51324,10 +51324,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 52132, + "commentStart": 0, "end": 0, "name": { - "commentStart": 52132, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -51337,7 +51337,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 52132, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -51349,17 +51349,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 52219, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 52225, + "commentStart": 0, "elements": [ { - "commentStart": 52234, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -51371,7 +51371,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 52262, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -51392,10 +51392,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 52214, + "commentStart": 0, "end": 0, "name": { - "commentStart": 52214, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -51405,7 +51405,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 52214, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -51417,17 +51417,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 52300, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 52306, + "commentStart": 0, "elements": [ { - "commentStart": 52315, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -51439,7 +51439,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 52343, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -51460,10 +51460,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 52295, + "commentStart": 0, "end": 0, "name": { - "commentStart": 52295, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -51473,7 +51473,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 52295, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -51485,18 +51485,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 52381, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 52387, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 52397, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -51507,7 +51507,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 52396, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -51515,7 +51515,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 52425, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -51536,10 +51536,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 52376, + "commentStart": 0, "end": 0, "name": { - "commentStart": 52376, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -51549,7 +51549,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 52376, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -51561,18 +51561,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 52462, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 52468, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 52478, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -51583,7 +51583,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 52477, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -51592,7 +51592,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 52507, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -51603,7 +51603,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 52506, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -51620,10 +51620,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 52457, + "commentStart": 0, "end": 0, "name": { - "commentStart": 52457, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -51633,7 +51633,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 52457, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -51645,17 +51645,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 52545, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 52551, + "commentStart": 0, "elements": [ { - "commentStart": 52560, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -51668,7 +51668,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 52588, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -51679,7 +51679,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 52587, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -51696,10 +51696,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 52540, + "commentStart": 0, "end": 0, "name": { - "commentStart": 52540, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -51709,7 +51709,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 52540, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -51721,17 +51721,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 52626, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 52632, + "commentStart": 0, "elements": [ { - "commentStart": 52641, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -51744,7 +51744,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 52672, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -51755,7 +51755,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 52671, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -51772,10 +51772,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 52621, + "commentStart": 0, "end": 0, "name": { - "commentStart": 52621, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -51785,7 +51785,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 52621, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -51797,17 +51797,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 52709, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 52715, + "commentStart": 0, "elements": [ { - "commentStart": 52724, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -51820,7 +51820,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 52752, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -51831,7 +51831,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 52751, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -51848,10 +51848,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 52704, + "commentStart": 0, "end": 0, "name": { - "commentStart": 52704, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -51861,7 +51861,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 52704, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -51873,18 +51873,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 52789, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 52795, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 52805, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -51895,7 +51895,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 52804, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -51903,7 +51903,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 52832, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -51924,10 +51924,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 52784, + "commentStart": 0, "end": 0, "name": { - "commentStart": 52784, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -51937,7 +51937,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 52784, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -51949,17 +51949,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 52869, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 52875, + "commentStart": 0, "elements": [ { - "commentStart": 52876, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -51971,7 +51971,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 52896, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -51992,10 +51992,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 52864, + "commentStart": 0, "end": 0, "name": { - "commentStart": 52864, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -52005,7 +52005,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 52864, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -52017,18 +52017,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 52927, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 52933, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 52943, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -52039,7 +52039,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 52942, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -52047,7 +52047,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 52971, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -52068,10 +52068,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 52922, + "commentStart": 0, "end": 0, "name": { - "commentStart": 52922, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -52081,7 +52081,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 52922, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -52093,18 +52093,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 53010, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 53016, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 53026, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -52115,7 +52115,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 53025, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -52124,7 +52124,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 53054, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -52135,7 +52135,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 53053, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -52152,10 +52152,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 53005, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53005, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -52165,7 +52165,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 53005, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -52177,18 +52177,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 53092, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 53098, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 53108, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -52199,7 +52199,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 53107, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -52208,7 +52208,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 53136, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -52219,7 +52219,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 53135, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -52236,10 +52236,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 53087, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53087, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -52249,7 +52249,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 53087, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -52261,17 +52261,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 53174, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 53180, + "commentStart": 0, "elements": [ { - "commentStart": 53181, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -52283,7 +52283,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 53200, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -52304,10 +52304,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 53169, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53169, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -52317,7 +52317,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 53169, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -52329,17 +52329,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 53231, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 53237, + "commentStart": 0, "elements": [ { - "commentStart": 53246, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -52352,7 +52352,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 53275, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -52363,7 +52363,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 53274, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -52380,10 +52380,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 53226, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53226, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -52393,7 +52393,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 53226, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -52405,17 +52405,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 53313, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 53319, + "commentStart": 0, "elements": [ { - "commentStart": 53320, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -52427,7 +52427,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 53340, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -52448,10 +52448,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 53308, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53308, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -52461,7 +52461,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 53308, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -52473,17 +52473,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 53370, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 53376, + "commentStart": 0, "elements": [ { - "commentStart": 53385, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -52496,7 +52496,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 53414, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -52507,7 +52507,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 53413, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -52524,10 +52524,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 53365, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53365, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -52537,7 +52537,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 53365, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -52549,17 +52549,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 53451, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 53457, + "commentStart": 0, "elements": [ { - "commentStart": 53458, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -52571,7 +52571,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 53478, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -52592,10 +52592,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 53446, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53446, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -52605,7 +52605,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 53446, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -52617,17 +52617,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 53509, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 53515, + "commentStart": 0, "elements": [ { - "commentStart": 53524, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -52639,7 +52639,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 53551, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -52660,10 +52660,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 53504, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53504, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -52673,7 +52673,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 53504, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -52685,17 +52685,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 53589, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 53595, + "commentStart": 0, "elements": [ { - "commentStart": 53596, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -52707,7 +52707,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 53616, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -52728,10 +52728,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 53584, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53584, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -52741,7 +52741,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 53584, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -52753,18 +52753,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 53647, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 53653, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 53663, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -52775,7 +52775,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 53662, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -52784,7 +52784,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 53692, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -52795,7 +52795,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 53691, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -52812,10 +52812,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 53642, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53642, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -52825,7 +52825,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 53642, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -52837,17 +52837,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 53729, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 53735, + "commentStart": 0, "elements": [ { - "commentStart": 53744, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -52860,7 +52860,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 53772, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -52871,7 +52871,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 53771, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -52888,10 +52888,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 53724, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53724, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -52901,7 +52901,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 53724, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -52913,18 +52913,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 53809, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 53815, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 53825, + "commentStart": 0, "end": 0, "raw": "0.6716353749059765", "start": 0, @@ -52935,7 +52935,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 53824, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -52944,7 +52944,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 53853, + "commentStart": 0, "end": 0, "raw": "0.9605576808879026", "start": 0, @@ -52955,7 +52955,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 53852, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -52972,10 +52972,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 53804, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53804, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -52985,7 +52985,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 53804, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -52997,17 +52997,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 53890, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 53896, + "commentStart": 0, "elements": [ { - "commentStart": 53905, + "commentStart": 0, "end": 0, "raw": "0.010280170930300203", "start": 0, @@ -53020,7 +53020,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 53935, + "commentStart": 0, "end": 0, "raw": "0.37344123662342166", "start": 0, @@ -53031,7 +53031,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 53934, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -53048,10 +53048,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 53885, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53885, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -53061,7 +53061,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 53885, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -53073,18 +53073,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 53973, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 53979, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 53989, + "commentStart": 0, "end": 0, "raw": "0.3670208139314082", "start": 0, @@ -53095,7 +53095,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 53988, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -53103,7 +53103,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 54016, + "commentStart": 0, "end": 0, "raw": "0.21201331909674526", "start": 0, @@ -53124,10 +53124,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 53968, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53968, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -53137,7 +53137,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 53968, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -53149,18 +53149,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 54054, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 54060, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 54070, + "commentStart": 0, "end": 0, "raw": "0.4707511307971115", "start": 0, @@ -53171,7 +53171,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 54069, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -53179,7 +53179,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 54097, + "commentStart": 0, "end": 0, "raw": "0.4905279615419764", "start": 0, @@ -53200,10 +53200,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 54049, + "commentStart": 0, "end": 0, "name": { - "commentStart": 54049, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -53213,7 +53213,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 54049, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -53225,18 +53225,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 54134, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 54140, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 54150, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -53247,7 +53247,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 54149, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -53255,7 +53255,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 54177, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -53276,10 +53276,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 54129, + "commentStart": 0, "end": 0, "name": { - "commentStart": 54129, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -53289,7 +53289,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 54129, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -53301,18 +53301,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 54214, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 54220, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 54230, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -53323,7 +53323,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 54229, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -53332,7 +53332,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 54258, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -53343,7 +53343,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 54257, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -53360,10 +53360,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 54209, + "commentStart": 0, "end": 0, "name": { - "commentStart": 54209, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -53373,7 +53373,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 54209, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -53385,17 +53385,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 54296, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 54302, + "commentStart": 0, "elements": [ { - "commentStart": 54311, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -53407,7 +53407,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 54339, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -53428,10 +53428,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 54291, + "commentStart": 0, "end": 0, "name": { - "commentStart": 54291, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -53441,7 +53441,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 54291, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -53453,17 +53453,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 54377, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 54383, + "commentStart": 0, "elements": [ { - "commentStart": 54392, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -53475,7 +53475,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 54420, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -53496,10 +53496,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 54372, + "commentStart": 0, "end": 0, "name": { - "commentStart": 54372, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -53509,7 +53509,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 54372, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -53521,18 +53521,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 54458, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 54464, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 54474, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -53543,7 +53543,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 54473, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -53551,7 +53551,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 54502, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -53572,10 +53572,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 54453, + "commentStart": 0, "end": 0, "name": { - "commentStart": 54453, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -53585,7 +53585,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 54453, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -53597,18 +53597,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 54539, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 54545, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 54555, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -53619,7 +53619,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 54554, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -53628,7 +53628,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 54584, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -53639,7 +53639,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 54583, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -53656,10 +53656,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 54534, + "commentStart": 0, "end": 0, "name": { - "commentStart": 54534, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -53669,7 +53669,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 54534, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -53681,17 +53681,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 54622, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 54628, + "commentStart": 0, "elements": [ { - "commentStart": 54637, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -53704,7 +53704,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 54665, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -53715,7 +53715,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 54664, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -53732,10 +53732,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 54617, + "commentStart": 0, "end": 0, "name": { - "commentStart": 54617, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -53745,7 +53745,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 54617, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -53757,17 +53757,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 54703, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 54709, + "commentStart": 0, "elements": [ { - "commentStart": 54718, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -53780,7 +53780,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 54749, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -53791,7 +53791,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 54748, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -53808,10 +53808,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 54698, + "commentStart": 0, "end": 0, "name": { - "commentStart": 54698, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -53821,7 +53821,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 54698, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -53833,17 +53833,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 54786, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 54792, + "commentStart": 0, "elements": [ { - "commentStart": 54801, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -53856,7 +53856,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 54829, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -53867,7 +53867,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 54828, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -53884,10 +53884,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 54781, + "commentStart": 0, "end": 0, "name": { - "commentStart": 54781, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -53897,7 +53897,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 54781, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -53909,18 +53909,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 54866, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 54872, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 54882, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -53931,7 +53931,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 54881, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -53939,7 +53939,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 54909, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -53960,10 +53960,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 54861, + "commentStart": 0, "end": 0, "name": { - "commentStart": 54861, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -53973,7 +53973,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 54861, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -53985,17 +53985,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 54946, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 54952, + "commentStart": 0, "elements": [ { - "commentStart": 54953, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -54007,7 +54007,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 54973, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -54028,10 +54028,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 54941, + "commentStart": 0, "end": 0, "name": { - "commentStart": 54941, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -54041,7 +54041,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 54941, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -54053,18 +54053,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 55004, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 55010, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 55020, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -54075,7 +54075,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 55019, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -54083,7 +54083,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 55048, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -54104,10 +54104,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 54999, + "commentStart": 0, "end": 0, "name": { - "commentStart": 54999, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -54117,7 +54117,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 54999, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -54129,18 +54129,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 55087, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 55093, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 55103, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -54151,7 +54151,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 55102, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -54160,7 +54160,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 55131, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -54171,7 +54171,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 55130, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -54188,10 +54188,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 55082, + "commentStart": 0, "end": 0, "name": { - "commentStart": 55082, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -54201,7 +54201,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 55082, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -54213,18 +54213,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 55169, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 55175, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 55185, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -54235,7 +54235,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 55184, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -54244,7 +54244,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 55213, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -54255,7 +54255,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 55212, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -54272,10 +54272,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 55164, + "commentStart": 0, "end": 0, "name": { - "commentStart": 55164, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -54285,7 +54285,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 55164, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -54297,17 +54297,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 55251, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 55257, + "commentStart": 0, "elements": [ { - "commentStart": 55258, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -54319,7 +54319,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 55277, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -54340,10 +54340,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 55246, + "commentStart": 0, "end": 0, "name": { - "commentStart": 55246, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -54353,7 +54353,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 55246, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -54365,17 +54365,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 55308, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 55314, + "commentStart": 0, "elements": [ { - "commentStart": 55323, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -54388,7 +54388,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 55352, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -54399,7 +54399,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 55351, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -54416,10 +54416,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 55303, + "commentStart": 0, "end": 0, "name": { - "commentStart": 55303, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -54429,7 +54429,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 55303, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -54441,17 +54441,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 55390, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 55396, + "commentStart": 0, "elements": [ { - "commentStart": 55397, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -54463,7 +54463,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 55417, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -54484,10 +54484,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 55385, + "commentStart": 0, "end": 0, "name": { - "commentStart": 55385, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -54497,7 +54497,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 55385, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -54509,17 +54509,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 55447, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 55453, + "commentStart": 0, "elements": [ { - "commentStart": 55462, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -54532,7 +54532,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 55491, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -54543,7 +54543,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 55490, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -54560,10 +54560,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 55442, + "commentStart": 0, "end": 0, "name": { - "commentStart": 55442, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -54573,7 +54573,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 55442, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -54585,17 +54585,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 55528, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 55534, + "commentStart": 0, "elements": [ { - "commentStart": 55535, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -54607,7 +54607,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 55555, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -54628,10 +54628,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 55523, + "commentStart": 0, "end": 0, "name": { - "commentStart": 55523, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -54641,7 +54641,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 55523, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -54653,17 +54653,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 55586, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 55592, + "commentStart": 0, "elements": [ { - "commentStart": 55601, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -54675,7 +54675,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 55628, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -54696,10 +54696,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 55581, + "commentStart": 0, "end": 0, "name": { - "commentStart": 55581, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -54709,7 +54709,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 55581, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -54721,17 +54721,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 55666, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 55672, + "commentStart": 0, "elements": [ { - "commentStart": 55673, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -54743,7 +54743,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 55693, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -54764,10 +54764,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 55661, + "commentStart": 0, "end": 0, "name": { - "commentStart": 55661, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -54777,7 +54777,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 55661, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -54789,18 +54789,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 55724, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 55730, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 55740, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -54811,7 +54811,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 55739, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -54820,7 +54820,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 55769, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -54831,7 +54831,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 55768, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -54848,10 +54848,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 55719, + "commentStart": 0, "end": 0, "name": { - "commentStart": 55719, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -54861,7 +54861,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 55719, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -54873,17 +54873,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 55806, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 55812, + "commentStart": 0, "elements": [ { - "commentStart": 55821, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -54896,7 +54896,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 55849, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -54907,7 +54907,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 55848, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -54924,10 +54924,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 55801, + "commentStart": 0, "end": 0, "name": { - "commentStart": 55801, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -54937,7 +54937,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 55801, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -54949,18 +54949,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 55886, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 55892, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 55902, + "commentStart": 0, "end": 0, "raw": "0.6716353749059765", "start": 0, @@ -54971,7 +54971,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 55901, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -54980,7 +54980,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 55930, + "commentStart": 0, "end": 0, "raw": "0.9605576808879026", "start": 0, @@ -54991,7 +54991,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 55929, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -55008,10 +55008,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 55881, + "commentStart": 0, "end": 0, "name": { - "commentStart": 55881, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -55021,7 +55021,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 55881, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -55033,17 +55033,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 55967, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 55973, + "commentStart": 0, "elements": [ { - "commentStart": 55982, + "commentStart": 0, "end": 0, "raw": "0.010280170930300203", "start": 0, @@ -55056,7 +55056,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 56012, + "commentStart": 0, "end": 0, "raw": "0.37344123662342166", "start": 0, @@ -55067,7 +55067,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 56011, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -55084,10 +55084,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 55962, + "commentStart": 0, "end": 0, "name": { - "commentStart": 55962, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -55097,7 +55097,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 55962, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -55109,17 +55109,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 56050, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 56056, + "commentStart": 0, "elements": [ { - "commentStart": 56065, + "commentStart": 0, "end": 0, "raw": "0.10357375682791004", "start": 0, @@ -55132,7 +55132,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 56094, + "commentStart": 0, "end": 0, "raw": "0.42294321030821425", "start": 0, @@ -55143,7 +55143,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 56093, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -55160,10 +55160,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 56045, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56045, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -55173,7 +55173,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 56045, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -55185,17 +55185,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 56132, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 56138, + "commentStart": 0, "elements": [ { - "commentStart": 56147, + "commentStart": 0, "end": 0, "raw": "0.4520311575096987", "start": 0, @@ -55208,7 +55208,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 56175, + "commentStart": 0, "end": 0, "raw": "0.11232675307600548", "start": 0, @@ -55219,7 +55219,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 56174, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -55236,10 +55236,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 56127, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56127, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -55249,7 +55249,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 56127, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -55261,18 +55261,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 56213, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 56219, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 56229, + "commentStart": 0, "end": 0, "raw": "0.8821185914380845", "start": 0, @@ -55283,7 +55283,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 56228, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -55292,7 +55292,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 56257, + "commentStart": 0, "end": 0, "raw": "0.7155147434939819", "start": 0, @@ -55303,7 +55303,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 56256, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -55320,10 +55320,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 56208, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56208, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -55333,7 +55333,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 56208, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -55345,17 +55345,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 56294, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 56300, + "commentStart": 0, "elements": [ { - "commentStart": 56301, + "commentStart": 0, "end": 0, "raw": "0.9195487101690416", "start": 0, @@ -55367,7 +55367,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 56321, + "commentStart": 0, "end": 0, "raw": "0.2691627465297364", "start": 0, @@ -55388,10 +55388,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 56289, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56289, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -55401,7 +55401,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 56289, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -55413,17 +55413,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 56352, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 56358, + "commentStart": 0, "elements": [ { - "commentStart": 56367, + "commentStart": 0, "end": 0, "raw": "0.7098978191546745", "start": 0, @@ -55435,7 +55435,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 56394, + "commentStart": 0, "end": 0, "raw": "0.11710004169385968", "start": 0, @@ -55456,10 +55456,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 56347, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56347, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -55469,7 +55469,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 56347, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -55481,18 +55481,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 56432, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 56438, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 56448, + "commentStart": 0, "end": 0, "raw": "0.37876368560819995", "start": 0, @@ -55503,7 +55503,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 56447, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -55511,7 +55511,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 56476, + "commentStart": 0, "end": 0, "raw": "0.7106729314759084", "start": 0, @@ -55532,10 +55532,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 56427, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56427, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -55545,7 +55545,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 56427, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -55557,18 +55557,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 56513, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 56519, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 56529, + "commentStart": 0, "end": 0, "raw": "0.29728126898353335", "start": 0, @@ -55579,7 +55579,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 56528, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -55588,7 +55588,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 56558, + "commentStart": 0, "end": 0, "raw": "0.06649734568328003", "start": 0, @@ -55599,7 +55599,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 56557, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -55616,10 +55616,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 56508, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56508, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -55629,7 +55629,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 56508, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -55641,17 +55641,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 56596, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 56602, + "commentStart": 0, "elements": [ { - "commentStart": 56611, + "commentStart": 0, "end": 0, "raw": "0.22965781558352072", "start": 0, @@ -55664,7 +55664,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 56640, + "commentStart": 0, "end": 0, "raw": "0.7601866432836641", "start": 0, @@ -55675,7 +55675,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 56639, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -55692,10 +55692,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 56591, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56591, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -55705,7 +55705,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 56591, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -55717,18 +55717,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 56677, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 56683, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 56693, + "commentStart": 0, "end": 0, "raw": "0.6356501074317229", "start": 0, @@ -55739,7 +55739,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 56692, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -55747,7 +55747,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 56720, + "commentStart": 0, "end": 0, "raw": "0.19458425399338064", "start": 0, @@ -55768,10 +55768,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 56672, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56672, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -55781,7 +55781,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 56672, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -55793,17 +55793,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 56758, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 56764, + "commentStart": 0, "elements": [ { - "commentStart": 56765, + "commentStart": 0, "end": 0, "raw": "0.5721251777404546", "start": 0, @@ -55815,7 +55815,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 56785, + "commentStart": 0, "end": 0, "raw": "0.2888584097921527", "start": 0, @@ -55836,10 +55836,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 56753, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56753, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -55849,7 +55849,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 56753, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -55861,18 +55861,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 56816, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 56822, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 56832, + "commentStart": 0, "end": 0, "raw": "0.9580409549552311", "start": 0, @@ -55883,7 +55883,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 56831, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -55892,7 +55892,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 56860, + "commentStart": 0, "end": 0, "raw": "0.02243818192078395", "start": 0, @@ -55903,7 +55903,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 56859, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -55920,10 +55920,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 56811, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56811, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -55933,7 +55933,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 56811, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -55945,17 +55945,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 56898, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 56904, + "commentStart": 0, "elements": [ { - "commentStart": 56913, + "commentStart": 0, "end": 0, "raw": "0.3299184618602866", "start": 0, @@ -55968,7 +55968,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 56941, + "commentStart": 0, "end": 0, "raw": "0.8353726942369875", "start": 0, @@ -55979,7 +55979,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 56940, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -55996,10 +55996,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 56893, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56893, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -56009,7 +56009,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 56893, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -56021,17 +56021,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 56978, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 56984, + "commentStart": 0, "elements": [ { - "commentStart": 56993, + "commentStart": 0, "end": 0, "raw": "0.7434639386755209", "start": 0, @@ -56044,7 +56044,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 57021, + "commentStart": 0, "end": 0, "raw": "0.7919648864138378", "start": 0, @@ -56055,7 +56055,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 57020, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -56072,10 +56072,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 56973, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56973, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -56085,7 +56085,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 56973, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -56097,17 +56097,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 57058, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 57064, + "commentStart": 0, "elements": [ { - "commentStart": 57065, + "commentStart": 0, "end": 0, "raw": "0.9935751011164615", "start": 0, @@ -56119,7 +56119,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 57085, + "commentStart": 0, "end": 0, "raw": "0.9042566468497608", "start": 0, @@ -56140,10 +56140,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 57053, + "commentStart": 0, "end": 0, "name": { - "commentStart": 57053, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -56153,7 +56153,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 57053, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -56165,18 +56165,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 57116, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 57122, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 57132, + "commentStart": 0, "end": 0, "raw": "0.5035812884687294", "start": 0, @@ -56187,7 +56187,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 57131, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -56195,7 +56195,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 57159, + "commentStart": 0, "end": 0, "raw": "0.5150967434989442", "start": 0, @@ -56216,10 +56216,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 57111, + "commentStart": 0, "end": 0, "name": { - "commentStart": 57111, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -56229,7 +56229,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 57111, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -56241,17 +56241,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 57196, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 57202, + "commentStart": 0, "elements": [ { - "commentStart": 57203, + "commentStart": 0, "end": 0, "raw": "0.5526227215900215", "start": 0, @@ -56263,7 +56263,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 57223, + "commentStart": 0, "end": 0, "raw": "0.7612604137272441", "start": 0, @@ -56284,10 +56284,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 57191, + "commentStart": 0, "end": 0, "name": { - "commentStart": 57191, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -56297,7 +56297,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 57191, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -56309,17 +56309,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 57254, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 57260, + "commentStart": 0, "elements": [ { - "commentStart": 57269, + "commentStart": 0, "end": 0, "raw": "0.8593271349126876", "start": 0, @@ -56331,7 +56331,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 57296, + "commentStart": 0, "end": 0, "raw": "0.08414894953725849", "start": 0, @@ -56352,10 +56352,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 57249, + "commentStart": 0, "end": 0, "name": { - "commentStart": 57249, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -56365,7 +56365,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 57249, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -56377,18 +56377,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 57334, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 57340, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 57350, + "commentStart": 0, "end": 0, "raw": "0.8181049219192864", "start": 0, @@ -56399,7 +56399,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 57349, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -56408,7 +56408,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 57378, + "commentStart": 0, "end": 0, "raw": "0.903548131323352", "start": 0, @@ -56419,7 +56419,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 57377, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -56436,10 +56436,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 57329, + "commentStart": 0, "end": 0, "name": { - "commentStart": 57329, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -56449,7 +56449,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 57329, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -56461,17 +56461,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 57414, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 57420, + "commentStart": 0, "elements": [ { - "commentStart": 57429, + "commentStart": 0, "end": 0, "raw": "0.3165782044458305", "start": 0, @@ -56484,7 +56484,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 57457, + "commentStart": 0, "end": 0, "raw": "0.24189274252014914", "start": 0, @@ -56495,7 +56495,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 57456, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -56512,10 +56512,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 57409, + "commentStart": 0, "end": 0, "name": { - "commentStart": 57409, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -56525,7 +56525,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 57409, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -56537,18 +56537,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 57495, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 57501, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 57511, + "commentStart": 0, "end": 0, "raw": "0.44390956414045135", "start": 0, @@ -56559,7 +56559,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 57510, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -56568,7 +56568,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 57540, + "commentStart": 0, "end": 0, "raw": "0.25912591535126905", "start": 0, @@ -56579,7 +56579,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 57539, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -56596,10 +56596,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 57490, + "commentStart": 0, "end": 0, "name": { - "commentStart": 57490, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -56609,7 +56609,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 57490, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -56621,18 +56621,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 57578, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 57584, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 57594, + "commentStart": 0, "end": 0, "raw": "0.6605165911891009", "start": 0, @@ -56643,7 +56643,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 57593, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -56652,7 +56652,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 57622, + "commentStart": 0, "end": 0, "raw": "0.40355115288839194", "start": 0, @@ -56663,7 +56663,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 57621, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -56680,10 +56680,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 57573, + "commentStart": 0, "end": 0, "name": { - "commentStart": 57573, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -56693,7 +56693,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 57573, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -56705,18 +56705,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 57660, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 57666, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 57676, + "commentStart": 0, "end": 0, "raw": "0.7170489950180006", "start": 0, @@ -56727,7 +56727,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 57675, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -56735,7 +56735,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 57703, + "commentStart": 0, "end": 0, "raw": "0.23454356079651384", "start": 0, @@ -56756,10 +56756,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 57655, + "commentStart": 0, "end": 0, "name": { - "commentStart": 57655, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -56769,7 +56769,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 57655, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -56781,18 +56781,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 57741, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 57747, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 57757, + "commentStart": 0, "end": 0, "raw": "0.2568187045379722", "start": 0, @@ -56803,7 +56803,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 57756, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -56812,7 +56812,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 57785, + "commentStart": 0, "end": 0, "raw": "0.45031188717601367", "start": 0, @@ -56823,7 +56823,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 57784, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -56840,10 +56840,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 57736, + "commentStart": 0, "end": 0, "name": { - "commentStart": 57736, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -56853,7 +56853,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 57736, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -56865,17 +56865,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 57823, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 57829, + "commentStart": 0, "elements": [ { - "commentStart": 57838, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -56888,7 +56888,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 57866, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -56899,7 +56899,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 57865, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -56916,10 +56916,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 57818, + "commentStart": 0, "end": 0, "name": { - "commentStart": 57818, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -56929,7 +56929,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 57818, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -56941,18 +56941,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 57903, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 57909, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 57919, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -56963,7 +56963,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 57918, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -56971,7 +56971,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 57946, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -56992,10 +56992,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 57898, + "commentStart": 0, "end": 0, "name": { - "commentStart": 57898, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -57005,7 +57005,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 57898, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -57017,18 +57017,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 57983, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 57989, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 57999, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -57039,7 +57039,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 57998, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -57047,7 +57047,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 58026, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -57068,10 +57068,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 57978, + "commentStart": 0, "end": 0, "name": { - "commentStart": 57978, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -57081,7 +57081,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 57978, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -57093,18 +57093,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 58063, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 58069, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 58079, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -57115,7 +57115,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 58078, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -57124,7 +57124,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 58107, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -57135,7 +57135,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 58106, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -57152,10 +57152,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 58058, + "commentStart": 0, "end": 0, "name": { - "commentStart": 58058, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -57165,7 +57165,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 58058, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -57177,17 +57177,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 58145, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 58151, + "commentStart": 0, "elements": [ { - "commentStart": 58160, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -57199,7 +57199,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 58188, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -57220,10 +57220,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 58140, + "commentStart": 0, "end": 0, "name": { - "commentStart": 58140, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -57233,7 +57233,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 58140, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -57245,17 +57245,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 58226, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 58232, + "commentStart": 0, "elements": [ { - "commentStart": 58241, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -57267,7 +57267,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 58269, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -57288,10 +57288,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 58221, + "commentStart": 0, "end": 0, "name": { - "commentStart": 58221, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -57301,7 +57301,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 58221, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -57313,18 +57313,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 58307, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 58313, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 58323, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -57335,7 +57335,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 58322, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -57343,7 +57343,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 58351, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -57364,10 +57364,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 58302, + "commentStart": 0, "end": 0, "name": { - "commentStart": 58302, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -57377,7 +57377,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 58302, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -57389,18 +57389,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 58388, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 58394, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 58404, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -57411,7 +57411,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 58403, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -57420,7 +57420,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 58433, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -57431,7 +57431,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 58432, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -57448,10 +57448,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 58383, + "commentStart": 0, "end": 0, "name": { - "commentStart": 58383, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -57461,7 +57461,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 58383, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -57473,17 +57473,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 58471, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 58477, + "commentStart": 0, "elements": [ { - "commentStart": 58486, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -57496,7 +57496,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 58514, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -57507,7 +57507,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 58513, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -57524,10 +57524,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 58466, + "commentStart": 0, "end": 0, "name": { - "commentStart": 58466, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -57537,7 +57537,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 58466, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -57549,17 +57549,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 58552, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 58558, + "commentStart": 0, "elements": [ { - "commentStart": 58567, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -57572,7 +57572,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 58598, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -57583,7 +57583,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 58597, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -57600,10 +57600,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 58547, + "commentStart": 0, "end": 0, "name": { - "commentStart": 58547, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -57613,7 +57613,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 58547, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -57625,17 +57625,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 58635, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 58641, + "commentStart": 0, "elements": [ { - "commentStart": 58650, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -57648,7 +57648,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 58678, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -57659,7 +57659,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 58677, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -57676,10 +57676,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 58630, + "commentStart": 0, "end": 0, "name": { - "commentStart": 58630, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -57689,7 +57689,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 58630, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -57701,18 +57701,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 58715, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 58721, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 58731, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -57723,7 +57723,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 58730, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -57731,7 +57731,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 58758, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -57752,10 +57752,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 58710, + "commentStart": 0, "end": 0, "name": { - "commentStart": 58710, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -57765,7 +57765,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 58710, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -57777,17 +57777,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 58795, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 58801, + "commentStart": 0, "elements": [ { - "commentStart": 58802, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -57799,7 +57799,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 58822, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -57820,10 +57820,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 58790, + "commentStart": 0, "end": 0, "name": { - "commentStart": 58790, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -57833,7 +57833,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 58790, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -57845,18 +57845,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 58853, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 58859, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 58869, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -57867,7 +57867,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 58868, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -57875,7 +57875,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 58897, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -57896,10 +57896,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 58848, + "commentStart": 0, "end": 0, "name": { - "commentStart": 58848, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -57909,7 +57909,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 58848, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -57921,18 +57921,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 58936, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 58942, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 58952, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -57943,7 +57943,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 58951, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -57952,7 +57952,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 58980, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -57963,7 +57963,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 58979, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -57980,10 +57980,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 58931, + "commentStart": 0, "end": 0, "name": { - "commentStart": 58931, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -57993,7 +57993,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 58931, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -58005,18 +58005,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 59018, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 59024, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 59034, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -58027,7 +58027,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 59033, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -58036,7 +58036,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 59062, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -58047,7 +58047,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 59061, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -58064,10 +58064,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 59013, + "commentStart": 0, "end": 0, "name": { - "commentStart": 59013, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -58077,7 +58077,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 59013, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -58089,17 +58089,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 59100, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 59106, + "commentStart": 0, "elements": [ { - "commentStart": 59107, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -58111,7 +58111,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 59126, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -58132,10 +58132,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 59095, + "commentStart": 0, "end": 0, "name": { - "commentStart": 59095, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -58145,7 +58145,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 59095, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -58157,17 +58157,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 59157, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 59163, + "commentStart": 0, "elements": [ { - "commentStart": 59172, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -58180,7 +58180,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 59201, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -58191,7 +58191,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 59200, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -58208,10 +58208,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 59152, + "commentStart": 0, "end": 0, "name": { - "commentStart": 59152, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -58221,7 +58221,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 59152, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -58233,17 +58233,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 59239, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 59245, + "commentStart": 0, "elements": [ { - "commentStart": 59246, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -58255,7 +58255,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 59266, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -58276,10 +58276,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 59234, + "commentStart": 0, "end": 0, "name": { - "commentStart": 59234, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -58289,7 +58289,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 59234, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -58301,17 +58301,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 59296, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 59302, + "commentStart": 0, "elements": [ { - "commentStart": 59311, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -58324,7 +58324,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 59340, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -58335,7 +58335,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 59339, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -58352,10 +58352,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 59291, + "commentStart": 0, "end": 0, "name": { - "commentStart": 59291, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -58365,7 +58365,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 59291, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -58377,17 +58377,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 59377, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 59383, + "commentStart": 0, "elements": [ { - "commentStart": 59384, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -58399,7 +58399,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 59404, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -58420,10 +58420,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 59372, + "commentStart": 0, "end": 0, "name": { - "commentStart": 59372, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -58433,7 +58433,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 59372, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -58445,17 +58445,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 59435, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 59441, + "commentStart": 0, "elements": [ { - "commentStart": 59450, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -58467,7 +58467,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 59477, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -58488,10 +58488,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 59430, + "commentStart": 0, "end": 0, "name": { - "commentStart": 59430, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -58501,7 +58501,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 59430, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -58513,17 +58513,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 59515, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 59521, + "commentStart": 0, "elements": [ { - "commentStart": 59522, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -58535,7 +58535,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 59542, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -58556,10 +58556,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 59510, + "commentStart": 0, "end": 0, "name": { - "commentStart": 59510, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -58569,7 +58569,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 59510, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -58581,18 +58581,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 59573, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 59579, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 59589, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -58603,7 +58603,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 59588, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -58612,7 +58612,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 59618, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -58623,7 +58623,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 59617, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -58640,10 +58640,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 59568, + "commentStart": 0, "end": 0, "name": { - "commentStart": 59568, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -58653,7 +58653,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 59568, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -58665,17 +58665,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 59655, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 59661, + "commentStart": 0, "elements": [ { - "commentStart": 59670, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -58688,7 +58688,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 59698, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -58699,7 +58699,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 59697, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -58716,10 +58716,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 59650, + "commentStart": 0, "end": 0, "name": { - "commentStart": 59650, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -58729,7 +58729,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 59650, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -58741,17 +58741,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 59735, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 59741, + "commentStart": 0, "elements": [ { - "commentStart": 59750, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -58764,7 +58764,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 59778, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -58775,7 +58775,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 59777, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -58792,10 +58792,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 59730, + "commentStart": 0, "end": 0, "name": { - "commentStart": 59730, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -58805,7 +58805,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 59730, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -58817,18 +58817,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 59815, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 59821, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 59831, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -58839,7 +58839,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 59830, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -58847,7 +58847,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 59858, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -58868,10 +58868,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 59810, + "commentStart": 0, "end": 0, "name": { - "commentStart": 59810, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -58881,7 +58881,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 59810, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -58893,17 +58893,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 59895, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 59901, + "commentStart": 0, "elements": [ { - "commentStart": 59910, + "commentStart": 0, "end": 0, "raw": "0.9464450621708211", "start": 0, @@ -58916,7 +58916,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 59938, + "commentStart": 0, "end": 0, "raw": "0.2684908127803667", "start": 0, @@ -58927,7 +58927,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 59937, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -58944,10 +58944,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 59890, + "commentStart": 0, "end": 0, "name": { - "commentStart": 59890, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -58957,7 +58957,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 59890, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -58969,17 +58969,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 59975, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 59981, + "commentStart": 0, "elements": [ { - "commentStart": 59982, + "commentStart": 0, "end": 0, "raw": "0.5241732366617591", "start": 0, @@ -58991,7 +58991,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 60002, + "commentStart": 0, "end": 0, "raw": "0.9011437416408563", "start": 0, @@ -59012,10 +59012,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 59970, + "commentStart": 0, "end": 0, "name": { - "commentStart": 59970, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -59025,7 +59025,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 59970, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -59037,18 +59037,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 60033, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 60039, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 60049, + "commentStart": 0, "end": 0, "raw": "0.14255393713960607", "start": 0, @@ -59059,7 +59059,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 60048, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -59068,7 +59068,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 60078, + "commentStart": 0, "end": 0, "raw": "0.5194262624564814", "start": 0, @@ -59079,7 +59079,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 60077, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -59096,10 +59096,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 60028, + "commentStart": 0, "end": 0, "name": { - "commentStart": 60028, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -59109,7 +59109,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 60028, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -59121,18 +59121,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 60115, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 60121, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 60131, + "commentStart": 0, "end": 0, "raw": "0.4287123231350338", "start": 0, @@ -59143,7 +59143,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 60130, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -59152,7 +59152,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 60159, + "commentStart": 0, "end": 0, "raw": "0.4223564528725028", "start": 0, @@ -59163,7 +59163,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 60158, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -59180,10 +59180,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 60110, + "commentStart": 0, "end": 0, "name": { - "commentStart": 60110, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -59193,7 +59193,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 60110, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -59205,18 +59205,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 60196, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 60202, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 60212, + "commentStart": 0, "end": 0, "raw": "0.09316367294024519", "start": 0, @@ -59227,7 +59227,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 60211, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -59236,7 +59236,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 60241, + "commentStart": 0, "end": 0, "raw": "0.9063127021008246", "start": 0, @@ -59247,7 +59247,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 60240, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -59264,10 +59264,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 60191, + "commentStart": 0, "end": 0, "name": { - "commentStart": 60191, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -59277,7 +59277,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 60191, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -59289,18 +59289,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 60278, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 60284, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 60294, + "commentStart": 0, "end": 0, "raw": "0.2767766535558669", "start": 0, @@ -59311,7 +59311,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 60293, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -59319,7 +59319,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 60321, + "commentStart": 0, "end": 0, "raw": "0.6816248114129131", "start": 0, @@ -59340,10 +59340,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 60273, + "commentStart": 0, "end": 0, "name": { - "commentStart": 60273, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -59353,7 +59353,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 60273, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -59365,17 +59365,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 60358, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 60364, + "commentStart": 0, "elements": [ { - "commentStart": 60373, + "commentStart": 0, "end": 0, "raw": "0.9796762495562534", "start": 0, @@ -59388,7 +59388,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 60401, + "commentStart": 0, "end": 0, "raw": "0.0822145668330625", "start": 0, @@ -59399,7 +59399,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 60400, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -59416,10 +59416,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 60353, + "commentStart": 0, "end": 0, "name": { - "commentStart": 60353, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -59429,7 +59429,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 60353, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -59441,18 +59441,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 60438, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 60444, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 60454, + "commentStart": 0, "end": 0, "raw": "0.8666513070867441", "start": 0, @@ -59463,7 +59463,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 60453, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -59472,7 +59472,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 60482, + "commentStart": 0, "end": 0, "raw": "0.301053160242023", "start": 0, @@ -59483,7 +59483,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 60481, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -59500,10 +59500,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 60433, + "commentStart": 0, "end": 0, "name": { - "commentStart": 60433, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -59513,7 +59513,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 60433, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -59525,17 +59525,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 60518, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 60524, + "commentStart": 0, "elements": [ { - "commentStart": 60533, + "commentStart": 0, "end": 0, "raw": "0.537415656028112", "start": 0, @@ -59547,7 +59547,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 60559, + "commentStart": 0, "end": 0, "raw": "0.020272692875002774", "start": 0, @@ -59568,10 +59568,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 60513, + "commentStart": 0, "end": 0, "name": { - "commentStart": 60513, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -59581,7 +59581,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 60513, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -59593,17 +59593,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 60598, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 60604, + "commentStart": 0, "elements": [ { - "commentStart": 60613, + "commentStart": 0, "end": 0, "raw": "0.9332396256457531", "start": 0, @@ -59616,7 +59616,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 60641, + "commentStart": 0, "end": 0, "raw": "0.6228175690649898", "start": 0, @@ -59627,7 +59627,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 60640, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -59644,10 +59644,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 60593, + "commentStart": 0, "end": 0, "name": { - "commentStart": 60593, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -59657,7 +59657,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 60593, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -59669,17 +59669,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 60678, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 60684, + "commentStart": 0, "elements": [ { - "commentStart": 60693, + "commentStart": 0, "end": 0, "raw": "0.18052415837320734", "start": 0, @@ -59692,7 +59692,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 60722, + "commentStart": 0, "end": 0, "raw": "0.36894384647296197", "start": 0, @@ -59703,7 +59703,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 60721, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -59720,10 +59720,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 60673, + "commentStart": 0, "end": 0, "name": { - "commentStart": 60673, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -59733,7 +59733,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 60673, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -59745,17 +59745,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 60760, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 60766, + "commentStart": 0, "elements": [ { - "commentStart": 60767, + "commentStart": 0, "end": 0, "raw": "0.5384372634075449", "start": 0, @@ -59767,7 +59767,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 60787, + "commentStart": 0, "end": 0, "raw": "0.2377565050887107", "start": 0, @@ -59788,10 +59788,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 60755, + "commentStart": 0, "end": 0, "name": { - "commentStart": 60755, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -59801,7 +59801,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 60755, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -59813,17 +59813,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 60818, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 60824, + "commentStart": 0, "elements": [ { - "commentStart": 60833, + "commentStart": 0, "end": 0, "raw": "0.39043436929278874", "start": 0, @@ -59835,7 +59835,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 60861, + "commentStart": 0, "end": 0, "raw": "0.14273182483160451", "start": 0, @@ -59856,10 +59856,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 60813, + "commentStart": 0, "end": 0, "name": { - "commentStart": 60813, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -59869,7 +59869,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 60813, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -59881,17 +59881,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 60899, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 60905, + "commentStart": 0, "elements": [ { - "commentStart": 60914, + "commentStart": 0, "end": 0, "raw": "0.09782890412897283", "start": 0, @@ -59903,7 +59903,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 60942, + "commentStart": 0, "end": 0, "raw": "0.9907667536909659", "start": 0, @@ -59924,10 +59924,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 60894, + "commentStart": 0, "end": 0, "name": { - "commentStart": 60894, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -59937,7 +59937,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 60894, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -59949,17 +59949,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 60979, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 60985, + "commentStart": 0, "elements": [ { - "commentStart": 60994, + "commentStart": 0, "end": 0, "raw": "0.5286610085921146", "start": 0, @@ -59972,7 +59972,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 61022, + "commentStart": 0, "end": 0, "raw": "0.7924508308419256", "start": 0, @@ -59983,7 +59983,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 61021, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -60000,10 +60000,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 60974, + "commentStart": 0, "end": 0, "name": { - "commentStart": 60974, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -60013,7 +60013,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 60974, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -60025,17 +60025,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 61059, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 61065, + "commentStart": 0, "elements": [ { - "commentStart": 61074, + "commentStart": 0, "end": 0, "raw": "0.3789978184503342", "start": 0, @@ -60047,7 +60047,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 61101, + "commentStart": 0, "end": 0, "raw": "0.12396120576838676", "start": 0, @@ -60068,10 +60068,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 61054, + "commentStart": 0, "end": 0, "name": { - "commentStart": 61054, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -60081,7 +60081,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 61054, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -60093,18 +60093,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 61139, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 61145, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 61155, + "commentStart": 0, "end": 0, "raw": "0.9484912744890612", "start": 0, @@ -60115,7 +60115,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 61154, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -60123,7 +60123,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 61182, + "commentStart": 0, "end": 0, "raw": "0.6729649846476855", "start": 0, @@ -60144,10 +60144,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 61134, + "commentStart": 0, "end": 0, "name": { - "commentStart": 61134, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -60157,7 +60157,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 61134, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -60169,17 +60169,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 61219, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 61225, + "commentStart": 0, "elements": [ { - "commentStart": 61234, + "commentStart": 0, "end": 0, "raw": "0.7451758753425153", "start": 0, @@ -60192,7 +60192,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 61262, + "commentStart": 0, "end": 0, "raw": "0.21318737562458967", "start": 0, @@ -60203,7 +60203,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 61261, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -60220,10 +60220,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 61214, + "commentStart": 0, "end": 0, "name": { - "commentStart": 61214, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -60233,7 +60233,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 61214, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -60245,17 +60245,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 61300, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 61306, + "commentStart": 0, "elements": [ { - "commentStart": 61315, + "commentStart": 0, "end": 0, "raw": "0.1873200727251887", "start": 0, @@ -60268,7 +60268,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 61343, + "commentStart": 0, "end": 0, "raw": "0.15961374297992448", "start": 0, @@ -60279,7 +60279,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 61342, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -60296,10 +60296,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 61295, + "commentStart": 0, "end": 0, "name": { - "commentStart": 61295, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -60309,7 +60309,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 61295, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -60321,18 +60321,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 61381, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 61387, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 61397, + "commentStart": 0, "end": 0, "raw": "0.05729464924537564", "start": 0, @@ -60343,7 +60343,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 61396, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -60352,7 +60352,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 61426, + "commentStart": 0, "end": 0, "raw": "0.5436345558508746", "start": 0, @@ -60363,7 +60363,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 61425, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -60380,10 +60380,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 61376, + "commentStart": 0, "end": 0, "name": { - "commentStart": 61376, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -60393,7 +60393,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 61376, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -60405,18 +60405,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 61463, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 61469, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 61479, + "commentStart": 0, "end": 0, "raw": "0.09582414374469184", "start": 0, @@ -60427,7 +60427,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 61478, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -60436,7 +60436,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 61508, + "commentStart": 0, "end": 0, "raw": "0.7533839681212353", "start": 0, @@ -60447,7 +60447,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 61507, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -60464,10 +60464,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 61458, + "commentStart": 0, "end": 0, "name": { - "commentStart": 61458, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -60477,7 +60477,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 61458, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -60489,18 +60489,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 61545, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 61551, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 61561, + "commentStart": 0, "end": 0, "raw": "0.17254116580051848", "start": 0, @@ -60511,7 +60511,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 61560, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -60520,7 +60520,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 61590, + "commentStart": 0, "end": 0, "raw": "0.7669113400341137", "start": 0, @@ -60531,7 +60531,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 61589, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -60548,10 +60548,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 61540, + "commentStart": 0, "end": 0, "name": { - "commentStart": 61540, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -60561,7 +60561,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 61540, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -60573,17 +60573,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 61627, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 61633, + "commentStart": 0, "elements": [ { - "commentStart": 61634, + "commentStart": 0, "end": 0, "raw": "0.8944730032887609", "start": 0, @@ -60595,7 +60595,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 61654, + "commentStart": 0, "end": 0, "raw": "0.6093318694741408", "start": 0, @@ -60616,10 +60616,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 61622, + "commentStart": 0, "end": 0, "name": { - "commentStart": 61622, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -60629,7 +60629,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 61622, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -60641,18 +60641,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 61685, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 61691, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 61701, + "commentStart": 0, "end": 0, "raw": "0.3670208139314082", "start": 0, @@ -60663,7 +60663,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 61700, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -60671,7 +60671,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 61728, + "commentStart": 0, "end": 0, "raw": "0.21201331909674526", "start": 0, @@ -60692,10 +60692,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 61680, + "commentStart": 0, "end": 0, "name": { - "commentStart": 61680, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -60705,7 +60705,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 61680, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -60717,18 +60717,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 61766, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 61772, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 61782, + "commentStart": 0, "end": 0, "raw": "0.4707511307971115", "start": 0, @@ -60739,7 +60739,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 61781, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -60747,7 +60747,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 61809, + "commentStart": 0, "end": 0, "raw": "0.4905279615419764", "start": 0, @@ -60768,10 +60768,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 61761, + "commentStart": 0, "end": 0, "name": { - "commentStart": 61761, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -60781,7 +60781,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 61761, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -60793,18 +60793,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 61846, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 61852, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 61862, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -60815,7 +60815,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 61861, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -60823,7 +60823,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 61889, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -60844,10 +60844,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 61841, + "commentStart": 0, "end": 0, "name": { - "commentStart": 61841, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -60857,7 +60857,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 61841, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -60869,18 +60869,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 61926, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 61932, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 61942, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -60891,7 +60891,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 61941, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -60900,7 +60900,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 61970, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -60911,7 +60911,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 61969, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -60928,10 +60928,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 61921, + "commentStart": 0, "end": 0, "name": { - "commentStart": 61921, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -60941,7 +60941,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 61921, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -60953,17 +60953,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 62008, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 62014, + "commentStart": 0, "elements": [ { - "commentStart": 62023, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -60975,7 +60975,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 62051, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -60996,10 +60996,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 62003, + "commentStart": 0, "end": 0, "name": { - "commentStart": 62003, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -61009,7 +61009,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 62003, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -61021,17 +61021,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 62089, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 62095, + "commentStart": 0, "elements": [ { - "commentStart": 62104, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -61043,7 +61043,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 62132, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -61064,10 +61064,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 62084, + "commentStart": 0, "end": 0, "name": { - "commentStart": 62084, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -61077,7 +61077,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 62084, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -61089,18 +61089,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 62170, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 62176, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 62186, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -61111,7 +61111,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 62185, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -61119,7 +61119,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 62214, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -61140,10 +61140,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 62165, + "commentStart": 0, "end": 0, "name": { - "commentStart": 62165, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -61153,7 +61153,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 62165, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -61165,18 +61165,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 62251, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 62257, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 62267, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -61187,7 +61187,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 62266, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -61196,7 +61196,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 62296, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -61207,7 +61207,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 62295, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -61224,10 +61224,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 62246, + "commentStart": 0, "end": 0, "name": { - "commentStart": 62246, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -61237,7 +61237,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 62246, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -61249,17 +61249,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 62334, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 62340, + "commentStart": 0, "elements": [ { - "commentStart": 62349, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -61272,7 +61272,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 62377, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -61283,7 +61283,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 62376, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -61300,10 +61300,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 62329, + "commentStart": 0, "end": 0, "name": { - "commentStart": 62329, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -61313,7 +61313,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 62329, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -61325,17 +61325,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 62415, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 62421, + "commentStart": 0, "elements": [ { - "commentStart": 62430, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -61348,7 +61348,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 62461, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -61359,7 +61359,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 62460, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -61376,10 +61376,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 62410, + "commentStart": 0, "end": 0, "name": { - "commentStart": 62410, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -61389,7 +61389,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 62410, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -61401,17 +61401,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 62498, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 62504, + "commentStart": 0, "elements": [ { - "commentStart": 62513, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -61424,7 +61424,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 62541, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -61435,7 +61435,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 62540, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -61452,10 +61452,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 62493, + "commentStart": 0, "end": 0, "name": { - "commentStart": 62493, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -61465,7 +61465,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 62493, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -61477,18 +61477,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 62578, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 62584, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 62594, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -61499,7 +61499,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 62593, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -61507,7 +61507,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 62621, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -61528,10 +61528,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 62573, + "commentStart": 0, "end": 0, "name": { - "commentStart": 62573, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -61541,7 +61541,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 62573, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -61553,17 +61553,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 62658, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 62664, + "commentStart": 0, "elements": [ { - "commentStart": 62665, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -61575,7 +61575,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 62685, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -61596,10 +61596,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 62653, + "commentStart": 0, "end": 0, "name": { - "commentStart": 62653, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -61609,7 +61609,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 62653, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -61621,18 +61621,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 62716, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 62722, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 62732, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -61643,7 +61643,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 62731, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -61651,7 +61651,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 62760, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -61672,10 +61672,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 62711, + "commentStart": 0, "end": 0, "name": { - "commentStart": 62711, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -61685,7 +61685,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 62711, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -61697,18 +61697,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 62799, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 62805, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 62815, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -61719,7 +61719,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 62814, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -61728,7 +61728,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 62843, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -61739,7 +61739,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 62842, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -61756,10 +61756,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 62794, + "commentStart": 0, "end": 0, "name": { - "commentStart": 62794, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -61769,7 +61769,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 62794, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -61781,18 +61781,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 62881, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 62887, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 62897, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -61803,7 +61803,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 62896, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -61812,7 +61812,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 62925, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -61823,7 +61823,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 62924, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -61840,10 +61840,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 62876, + "commentStart": 0, "end": 0, "name": { - "commentStart": 62876, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -61853,7 +61853,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 62876, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -61865,17 +61865,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 62963, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 62969, + "commentStart": 0, "elements": [ { - "commentStart": 62970, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -61887,7 +61887,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 62989, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -61908,10 +61908,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 62958, + "commentStart": 0, "end": 0, "name": { - "commentStart": 62958, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -61921,7 +61921,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 62958, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -61933,17 +61933,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 63020, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 63026, + "commentStart": 0, "elements": [ { - "commentStart": 63035, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -61956,7 +61956,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 63064, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -61967,7 +61967,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 63063, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -61984,10 +61984,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 63015, + "commentStart": 0, "end": 0, "name": { - "commentStart": 63015, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -61997,7 +61997,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 63015, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -62009,17 +62009,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 63102, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 63108, + "commentStart": 0, "elements": [ { - "commentStart": 63109, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -62031,7 +62031,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 63129, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -62052,10 +62052,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 63097, + "commentStart": 0, "end": 0, "name": { - "commentStart": 63097, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -62065,7 +62065,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 63097, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -62077,17 +62077,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 63159, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 63165, + "commentStart": 0, "elements": [ { - "commentStart": 63174, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -62100,7 +62100,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 63203, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -62111,7 +62111,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 63202, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -62128,10 +62128,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 63154, + "commentStart": 0, "end": 0, "name": { - "commentStart": 63154, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -62141,7 +62141,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 63154, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -62153,17 +62153,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 63240, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 63246, + "commentStart": 0, "elements": [ { - "commentStart": 63247, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -62175,7 +62175,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 63267, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -62196,10 +62196,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 63235, + "commentStart": 0, "end": 0, "name": { - "commentStart": 63235, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -62209,7 +62209,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 63235, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -62221,17 +62221,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 63298, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 63304, + "commentStart": 0, "elements": [ { - "commentStart": 63313, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -62243,7 +62243,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 63340, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -62264,10 +62264,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 63293, + "commentStart": 0, "end": 0, "name": { - "commentStart": 63293, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -62277,7 +62277,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 63293, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -62289,17 +62289,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 63378, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 63384, + "commentStart": 0, "elements": [ { - "commentStart": 63385, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -62311,7 +62311,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 63405, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -62332,10 +62332,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 63373, + "commentStart": 0, "end": 0, "name": { - "commentStart": 63373, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -62345,7 +62345,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 63373, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -62357,18 +62357,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 63436, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 63442, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 63452, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -62379,7 +62379,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 63451, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -62388,7 +62388,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 63481, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -62399,7 +62399,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 63480, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -62416,10 +62416,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 63431, + "commentStart": 0, "end": 0, "name": { - "commentStart": 63431, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -62429,7 +62429,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 63431, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -62441,17 +62441,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 63518, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 63524, + "commentStart": 0, "elements": [ { - "commentStart": 63533, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -62464,7 +62464,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 63561, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -62475,7 +62475,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 63560, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -62492,10 +62492,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 63513, + "commentStart": 0, "end": 0, "name": { - "commentStart": 63513, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -62505,7 +62505,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 63513, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -62517,18 +62517,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 63598, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 63604, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 63614, + "commentStart": 0, "end": 0, "raw": "0.6716353749059765", "start": 0, @@ -62539,7 +62539,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 63613, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -62548,7 +62548,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 63642, + "commentStart": 0, "end": 0, "raw": "0.9605576808879026", "start": 0, @@ -62559,7 +62559,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 63641, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -62576,10 +62576,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 63593, + "commentStart": 0, "end": 0, "name": { - "commentStart": 63593, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -62589,7 +62589,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 63593, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -62601,17 +62601,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 63679, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 63685, + "commentStart": 0, "elements": [ { - "commentStart": 63694, + "commentStart": 0, "end": 0, "raw": "0.010280170930300203", "start": 0, @@ -62624,7 +62624,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 63724, + "commentStart": 0, "end": 0, "raw": "0.37344123662342166", "start": 0, @@ -62635,7 +62635,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 63723, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -62652,10 +62652,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 63674, + "commentStart": 0, "end": 0, "name": { - "commentStart": 63674, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -62665,7 +62665,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 63674, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -62677,17 +62677,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 63762, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 63768, + "commentStart": 0, "elements": [ { - "commentStart": 63777, + "commentStart": 0, "end": 0, "raw": "0.10357375682791004", "start": 0, @@ -62700,7 +62700,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 63806, + "commentStart": 0, "end": 0, "raw": "0.42294321030821425", "start": 0, @@ -62711,7 +62711,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 63805, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -62728,10 +62728,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 63757, + "commentStart": 0, "end": 0, "name": { - "commentStart": 63757, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -62741,7 +62741,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 63757, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -62753,17 +62753,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 63844, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 63850, + "commentStart": 0, "elements": [ { - "commentStart": 63859, + "commentStart": 0, "end": 0, "raw": "0.4520311575096987", "start": 0, @@ -62776,7 +62776,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 63887, + "commentStart": 0, "end": 0, "raw": "0.11232675307600548", "start": 0, @@ -62787,7 +62787,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 63886, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -62804,10 +62804,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 63839, + "commentStart": 0, "end": 0, "name": { - "commentStart": 63839, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -62817,7 +62817,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 63839, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -62829,18 +62829,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 63925, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 63931, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 63941, + "commentStart": 0, "end": 0, "raw": "0.8821185914380845", "start": 0, @@ -62851,7 +62851,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 63940, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -62860,7 +62860,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 63969, + "commentStart": 0, "end": 0, "raw": "0.7155147434939819", "start": 0, @@ -62871,7 +62871,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 63968, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -62888,10 +62888,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 63920, + "commentStart": 0, "end": 0, "name": { - "commentStart": 63920, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -62901,7 +62901,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 63920, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -62913,17 +62913,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 64006, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 64012, + "commentStart": 0, "elements": [ { - "commentStart": 64013, + "commentStart": 0, "end": 0, "raw": "0.9195487101690416", "start": 0, @@ -62935,7 +62935,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 64033, + "commentStart": 0, "end": 0, "raw": "0.2691627465297364", "start": 0, @@ -62956,10 +62956,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 64001, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64001, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -62969,7 +62969,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 64001, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -62981,17 +62981,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 64064, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 64070, + "commentStart": 0, "elements": [ { - "commentStart": 64079, + "commentStart": 0, "end": 0, "raw": "0.7098978191546745", "start": 0, @@ -63003,7 +63003,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 64106, + "commentStart": 0, "end": 0, "raw": "0.11710004169385968", "start": 0, @@ -63024,10 +63024,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 64059, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64059, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -63037,7 +63037,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 64059, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -63049,18 +63049,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 64144, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 64150, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 64160, + "commentStart": 0, "end": 0, "raw": "0.37876368560819995", "start": 0, @@ -63071,7 +63071,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 64159, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -63079,7 +63079,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 64188, + "commentStart": 0, "end": 0, "raw": "0.7106729314759084", "start": 0, @@ -63100,10 +63100,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 64139, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64139, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -63113,7 +63113,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 64139, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -63125,18 +63125,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 64225, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 64231, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 64241, + "commentStart": 0, "end": 0, "raw": "0.29728126898353335", "start": 0, @@ -63147,7 +63147,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 64240, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -63156,7 +63156,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 64270, + "commentStart": 0, "end": 0, "raw": "0.06649734568328003", "start": 0, @@ -63167,7 +63167,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 64269, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -63184,10 +63184,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 64220, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64220, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -63197,7 +63197,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 64220, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -63209,17 +63209,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 64308, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 64314, + "commentStart": 0, "elements": [ { - "commentStart": 64323, + "commentStart": 0, "end": 0, "raw": "0.22965781558352072", "start": 0, @@ -63232,7 +63232,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 64352, + "commentStart": 0, "end": 0, "raw": "0.7601866432836641", "start": 0, @@ -63243,7 +63243,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 64351, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -63260,10 +63260,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 64303, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64303, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -63273,7 +63273,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 64303, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -63285,18 +63285,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 64389, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 64395, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 64405, + "commentStart": 0, "end": 0, "raw": "0.6356501074317229", "start": 0, @@ -63307,7 +63307,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 64404, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -63315,7 +63315,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 64432, + "commentStart": 0, "end": 0, "raw": "0.19458425399338064", "start": 0, @@ -63336,10 +63336,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 64384, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64384, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -63349,7 +63349,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 64384, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -63361,17 +63361,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 64470, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 64476, + "commentStart": 0, "elements": [ { - "commentStart": 64477, + "commentStart": 0, "end": 0, "raw": "0.5721251777404546", "start": 0, @@ -63383,7 +63383,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 64497, + "commentStart": 0, "end": 0, "raw": "0.2888584097921527", "start": 0, @@ -63404,10 +63404,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 64465, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64465, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -63417,7 +63417,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 64465, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -63429,18 +63429,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 64528, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 64534, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 64544, + "commentStart": 0, "end": 0, "raw": "0.9580409549552311", "start": 0, @@ -63451,7 +63451,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 64543, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -63460,7 +63460,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 64572, + "commentStart": 0, "end": 0, "raw": "0.02243818192078395", "start": 0, @@ -63471,7 +63471,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 64571, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -63488,10 +63488,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 64523, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64523, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -63501,7 +63501,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 64523, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -63513,17 +63513,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 64610, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 64616, + "commentStart": 0, "elements": [ { - "commentStart": 64625, + "commentStart": 0, "end": 0, "raw": "0.3299184618602866", "start": 0, @@ -63536,7 +63536,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 64653, + "commentStart": 0, "end": 0, "raw": "0.8353726942369875", "start": 0, @@ -63547,7 +63547,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 64652, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -63564,10 +63564,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 64605, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64605, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -63577,7 +63577,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 64605, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -63589,17 +63589,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 64690, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 64696, + "commentStart": 0, "elements": [ { - "commentStart": 64705, + "commentStart": 0, "end": 0, "raw": "0.7434639386755209", "start": 0, @@ -63612,7 +63612,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 64733, + "commentStart": 0, "end": 0, "raw": "0.7919648864138378", "start": 0, @@ -63623,7 +63623,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 64732, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -63640,10 +63640,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 64685, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64685, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -63653,7 +63653,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 64685, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -63665,17 +63665,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 64770, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 64776, + "commentStart": 0, "elements": [ { - "commentStart": 64777, + "commentStart": 0, "end": 0, "raw": "0.9935751011164615", "start": 0, @@ -63687,7 +63687,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 64797, + "commentStart": 0, "end": 0, "raw": "0.9042566468497608", "start": 0, @@ -63708,10 +63708,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 64765, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64765, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -63721,7 +63721,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 64765, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -63733,18 +63733,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 64828, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 64834, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 64844, + "commentStart": 0, "end": 0, "raw": "0.5035812884687294", "start": 0, @@ -63755,7 +63755,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 64843, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -63763,7 +63763,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 64871, + "commentStart": 0, "end": 0, "raw": "0.5150967434989442", "start": 0, @@ -63784,10 +63784,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 64823, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64823, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -63797,7 +63797,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 64823, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -63809,17 +63809,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 64908, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 64914, + "commentStart": 0, "elements": [ { - "commentStart": 64915, + "commentStart": 0, "end": 0, "raw": "0.5526227215900215", "start": 0, @@ -63831,7 +63831,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 64935, + "commentStart": 0, "end": 0, "raw": "0.7612604137272441", "start": 0, @@ -63852,10 +63852,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 64903, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64903, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -63865,7 +63865,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 64903, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -63877,17 +63877,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 64966, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 64972, + "commentStart": 0, "elements": [ { - "commentStart": 64981, + "commentStart": 0, "end": 0, "raw": "0.8593271349126876", "start": 0, @@ -63899,7 +63899,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 65008, + "commentStart": 0, "end": 0, "raw": "0.08414894953725849", "start": 0, @@ -63920,10 +63920,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 64961, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64961, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -63933,7 +63933,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 64961, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -63945,18 +63945,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 65046, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 65052, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 65062, + "commentStart": 0, "end": 0, "raw": "0.8181049219192864", "start": 0, @@ -63967,7 +63967,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 65061, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -63976,7 +63976,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 65090, + "commentStart": 0, "end": 0, "raw": "0.903548131323352", "start": 0, @@ -63987,7 +63987,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 65089, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64004,10 +64004,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 65041, + "commentStart": 0, "end": 0, "name": { - "commentStart": 65041, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -64017,7 +64017,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 65041, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -64029,17 +64029,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 65126, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 65132, + "commentStart": 0, "elements": [ { - "commentStart": 65141, + "commentStart": 0, "end": 0, "raw": "0.3165782044458305", "start": 0, @@ -64052,7 +64052,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 65169, + "commentStart": 0, "end": 0, "raw": "0.24189274252014914", "start": 0, @@ -64063,7 +64063,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 65168, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64080,10 +64080,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 65121, + "commentStart": 0, "end": 0, "name": { - "commentStart": 65121, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -64093,7 +64093,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 65121, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -64105,18 +64105,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 65207, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 65213, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 65223, + "commentStart": 0, "end": 0, "raw": "0.44390956414045135", "start": 0, @@ -64127,7 +64127,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 65222, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64136,7 +64136,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 65252, + "commentStart": 0, "end": 0, "raw": "0.25912591535126905", "start": 0, @@ -64147,7 +64147,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 65251, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64164,10 +64164,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 65202, + "commentStart": 0, "end": 0, "name": { - "commentStart": 65202, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -64177,7 +64177,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 65202, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -64189,18 +64189,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 65290, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 65296, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 65306, + "commentStart": 0, "end": 0, "raw": "0.6605165911891009", "start": 0, @@ -64211,7 +64211,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 65305, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64220,7 +64220,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 65334, + "commentStart": 0, "end": 0, "raw": "0.40355115288839194", "start": 0, @@ -64231,7 +64231,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 65333, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64248,10 +64248,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 65285, + "commentStart": 0, "end": 0, "name": { - "commentStart": 65285, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -64261,7 +64261,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 65285, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -64273,18 +64273,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 65372, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 65378, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 65388, + "commentStart": 0, "end": 0, "raw": "0.7170489950180006", "start": 0, @@ -64295,7 +64295,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 65387, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64303,7 +64303,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 65415, + "commentStart": 0, "end": 0, "raw": "0.23454356079651384", "start": 0, @@ -64324,10 +64324,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 65367, + "commentStart": 0, "end": 0, "name": { - "commentStart": 65367, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -64337,7 +64337,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 65367, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -64349,18 +64349,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 65453, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 65459, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 65469, + "commentStart": 0, "end": 0, "raw": "0.2568187045379722", "start": 0, @@ -64371,7 +64371,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 65468, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64380,7 +64380,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 65497, + "commentStart": 0, "end": 0, "raw": "0.45031188717601367", "start": 0, @@ -64391,7 +64391,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 65496, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64408,10 +64408,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 65448, + "commentStart": 0, "end": 0, "name": { - "commentStart": 65448, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -64421,7 +64421,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 65448, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -64433,17 +64433,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 65535, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 65541, + "commentStart": 0, "elements": [ { - "commentStart": 65550, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -64456,7 +64456,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 65578, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -64467,7 +64467,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 65577, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64484,10 +64484,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 65530, + "commentStart": 0, "end": 0, "name": { - "commentStart": 65530, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -64497,7 +64497,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 65530, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -64509,18 +64509,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 65615, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 65621, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 65631, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -64531,7 +64531,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 65630, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64539,7 +64539,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 65658, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -64560,10 +64560,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 65610, + "commentStart": 0, "end": 0, "name": { - "commentStart": 65610, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -64573,7 +64573,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 65610, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -64585,18 +64585,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 65695, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 65701, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 65711, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -64607,7 +64607,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 65710, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64615,7 +64615,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 65738, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -64636,10 +64636,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 65690, + "commentStart": 0, "end": 0, "name": { - "commentStart": 65690, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -64649,7 +64649,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 65690, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -64661,18 +64661,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 65775, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 65781, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 65791, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -64683,7 +64683,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 65790, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64692,7 +64692,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 65819, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -64703,7 +64703,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 65818, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64720,10 +64720,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 65770, + "commentStart": 0, "end": 0, "name": { - "commentStart": 65770, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -64733,7 +64733,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 65770, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -64745,17 +64745,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 65857, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 65863, + "commentStart": 0, "elements": [ { - "commentStart": 65872, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -64767,7 +64767,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 65900, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -64788,10 +64788,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 65852, + "commentStart": 0, "end": 0, "name": { - "commentStart": 65852, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -64801,7 +64801,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 65852, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -64813,17 +64813,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 65938, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 65944, + "commentStart": 0, "elements": [ { - "commentStart": 65953, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -64835,7 +64835,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 65981, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -64856,10 +64856,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 65933, + "commentStart": 0, "end": 0, "name": { - "commentStart": 65933, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -64869,7 +64869,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 65933, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -64881,18 +64881,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 66019, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 66025, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 66035, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -64903,7 +64903,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 66034, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64911,7 +64911,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 66063, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -64932,10 +64932,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 66014, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66014, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -64945,7 +64945,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 66014, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -64957,18 +64957,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 66100, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 66106, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 66116, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -64979,7 +64979,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 66115, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -64988,7 +64988,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 66145, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -64999,7 +64999,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 66144, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -65016,10 +65016,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 66095, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66095, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -65029,7 +65029,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 66095, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -65041,17 +65041,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 66183, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 66189, + "commentStart": 0, "elements": [ { - "commentStart": 66198, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -65064,7 +65064,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 66226, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -65075,7 +65075,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 66225, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -65092,10 +65092,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 66178, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66178, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -65105,7 +65105,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 66178, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -65117,17 +65117,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 66264, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 66270, + "commentStart": 0, "elements": [ { - "commentStart": 66279, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -65140,7 +65140,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 66310, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -65151,7 +65151,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 66309, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -65168,10 +65168,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 66259, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66259, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -65181,7 +65181,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 66259, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -65193,17 +65193,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 66347, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 66353, + "commentStart": 0, "elements": [ { - "commentStart": 66362, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -65216,7 +65216,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 66390, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -65227,7 +65227,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 66389, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -65244,10 +65244,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 66342, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66342, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -65257,7 +65257,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 66342, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -65269,18 +65269,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 66427, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 66433, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 66443, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -65291,7 +65291,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 66442, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -65299,7 +65299,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 66470, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -65320,10 +65320,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 66422, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66422, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -65333,7 +65333,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 66422, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -65345,17 +65345,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 66507, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 66513, + "commentStart": 0, "elements": [ { - "commentStart": 66514, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -65367,7 +65367,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 66534, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -65388,10 +65388,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 66502, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66502, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -65401,7 +65401,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 66502, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -65413,18 +65413,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 66565, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 66571, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 66581, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -65435,7 +65435,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 66580, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -65443,7 +65443,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 66609, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -65464,10 +65464,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 66560, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66560, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -65477,7 +65477,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 66560, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -65489,18 +65489,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 66648, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 66654, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 66664, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -65511,7 +65511,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 66663, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -65520,7 +65520,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 66692, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -65531,7 +65531,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 66691, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -65548,10 +65548,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 66643, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66643, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -65561,7 +65561,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 66643, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -65573,18 +65573,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 66730, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 66736, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 66746, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -65595,7 +65595,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 66745, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -65604,7 +65604,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 66774, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -65615,7 +65615,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 66773, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -65632,10 +65632,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 66725, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66725, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -65645,7 +65645,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 66725, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -65657,17 +65657,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 66812, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 66818, + "commentStart": 0, "elements": [ { - "commentStart": 66819, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -65679,7 +65679,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 66838, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -65700,10 +65700,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 66807, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66807, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -65713,7 +65713,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 66807, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -65725,17 +65725,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 66869, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 66875, + "commentStart": 0, "elements": [ { - "commentStart": 66884, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -65748,7 +65748,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 66913, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -65759,7 +65759,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 66912, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -65776,10 +65776,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 66864, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66864, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -65789,7 +65789,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 66864, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -65801,17 +65801,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 66951, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 66957, + "commentStart": 0, "elements": [ { - "commentStart": 66958, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -65823,7 +65823,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 66978, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -65844,10 +65844,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 66946, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66946, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -65857,7 +65857,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 66946, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -65869,17 +65869,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 67008, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 67014, + "commentStart": 0, "elements": [ { - "commentStart": 67023, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -65892,7 +65892,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 67052, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -65903,7 +65903,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 67051, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -65920,10 +65920,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 67003, + "commentStart": 0, "end": 0, "name": { - "commentStart": 67003, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -65933,7 +65933,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 67003, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -65945,17 +65945,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 67089, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 67095, + "commentStart": 0, "elements": [ { - "commentStart": 67096, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -65967,7 +65967,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 67116, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -65988,10 +65988,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 67084, + "commentStart": 0, "end": 0, "name": { - "commentStart": 67084, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -66001,7 +66001,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 67084, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -66013,17 +66013,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 67147, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 67153, + "commentStart": 0, "elements": [ { - "commentStart": 67162, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -66035,7 +66035,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 67189, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -66056,10 +66056,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 67142, + "commentStart": 0, "end": 0, "name": { - "commentStart": 67142, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -66069,7 +66069,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 67142, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -66081,17 +66081,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 67227, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 67233, + "commentStart": 0, "elements": [ { - "commentStart": 67234, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -66103,7 +66103,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 67254, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -66124,10 +66124,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 67222, + "commentStart": 0, "end": 0, "name": { - "commentStart": 67222, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -66137,7 +66137,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 67222, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -66149,18 +66149,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 67285, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 67291, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 67301, + "commentStart": 0, "end": 0, "raw": "0.3670208139314082", "start": 0, @@ -66171,7 +66171,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 67300, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -66179,7 +66179,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 67328, + "commentStart": 0, "end": 0, "raw": "0.21201331909674526", "start": 0, @@ -66200,10 +66200,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 67280, + "commentStart": 0, "end": 0, "name": { - "commentStart": 67280, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -66213,7 +66213,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 67280, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -66225,18 +66225,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 67366, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 67372, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 67382, + "commentStart": 0, "end": 0, "raw": "0.4707511307971115", "start": 0, @@ -66247,7 +66247,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 67381, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -66255,7 +66255,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 67409, + "commentStart": 0, "end": 0, "raw": "0.4905279615419764", "start": 0, @@ -66276,10 +66276,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 67361, + "commentStart": 0, "end": 0, "name": { - "commentStart": 67361, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -66289,7 +66289,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 67361, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -66301,18 +66301,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 67446, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 67452, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 67462, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -66323,7 +66323,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 67461, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -66331,7 +66331,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 67489, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -66352,10 +66352,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 67441, + "commentStart": 0, "end": 0, "name": { - "commentStart": 67441, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -66365,7 +66365,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 67441, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -66377,18 +66377,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 67526, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 67532, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 67542, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -66399,7 +66399,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 67541, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -66408,7 +66408,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 67570, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -66419,7 +66419,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 67569, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -66436,10 +66436,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 67521, + "commentStart": 0, "end": 0, "name": { - "commentStart": 67521, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -66449,7 +66449,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 67521, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -66461,17 +66461,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 67608, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 67614, + "commentStart": 0, "elements": [ { - "commentStart": 67623, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -66483,7 +66483,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 67651, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -66504,10 +66504,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 67603, + "commentStart": 0, "end": 0, "name": { - "commentStart": 67603, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -66517,7 +66517,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 67603, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -66529,17 +66529,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 67689, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 67695, + "commentStart": 0, "elements": [ { - "commentStart": 67704, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -66551,7 +66551,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 67732, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -66572,10 +66572,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 67684, + "commentStart": 0, "end": 0, "name": { - "commentStart": 67684, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -66585,7 +66585,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 67684, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -66597,18 +66597,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 67770, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 67776, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 67786, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -66619,7 +66619,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 67785, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -66627,7 +66627,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 67814, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -66648,10 +66648,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 67765, + "commentStart": 0, "end": 0, "name": { - "commentStart": 67765, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -66661,7 +66661,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 67765, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -66673,18 +66673,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 67851, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 67857, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 67867, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -66695,7 +66695,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 67866, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -66704,7 +66704,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 67896, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -66715,7 +66715,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 67895, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -66732,10 +66732,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 67846, + "commentStart": 0, "end": 0, "name": { - "commentStart": 67846, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -66745,7 +66745,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 67846, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -66757,17 +66757,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 67934, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 67940, + "commentStart": 0, "elements": [ { - "commentStart": 67949, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -66780,7 +66780,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 67977, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -66791,7 +66791,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 67976, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -66808,10 +66808,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 67929, + "commentStart": 0, "end": 0, "name": { - "commentStart": 67929, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -66821,7 +66821,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 67929, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -66833,17 +66833,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 68015, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 68021, + "commentStart": 0, "elements": [ { - "commentStart": 68030, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -66856,7 +66856,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 68061, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -66867,7 +66867,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 68060, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -66884,10 +66884,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 68010, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68010, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -66897,7 +66897,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 68010, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -66909,17 +66909,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 68098, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 68104, + "commentStart": 0, "elements": [ { - "commentStart": 68113, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -66932,7 +66932,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 68141, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -66943,7 +66943,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 68140, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -66960,10 +66960,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 68093, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68093, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -66973,7 +66973,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 68093, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -66985,18 +66985,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 68178, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 68184, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 68194, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -67007,7 +67007,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 68193, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -67015,7 +67015,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 68221, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -67036,10 +67036,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 68173, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68173, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -67049,7 +67049,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 68173, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -67061,17 +67061,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 68258, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 68264, + "commentStart": 0, "elements": [ { - "commentStart": 68265, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -67083,7 +67083,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 68285, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -67104,10 +67104,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 68253, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68253, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -67117,7 +67117,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 68253, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -67129,18 +67129,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 68316, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 68322, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 68332, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -67151,7 +67151,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 68331, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -67159,7 +67159,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 68360, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -67180,10 +67180,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 68311, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68311, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -67193,7 +67193,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 68311, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -67205,18 +67205,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 68399, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 68405, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 68415, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -67227,7 +67227,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 68414, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -67236,7 +67236,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 68443, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -67247,7 +67247,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 68442, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -67264,10 +67264,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 68394, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68394, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -67277,7 +67277,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 68394, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -67289,18 +67289,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 68481, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 68487, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 68497, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -67311,7 +67311,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 68496, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -67320,7 +67320,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 68525, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -67331,7 +67331,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 68524, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -67348,10 +67348,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 68476, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68476, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -67361,7 +67361,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 68476, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -67373,17 +67373,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 68563, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 68569, + "commentStart": 0, "elements": [ { - "commentStart": 68570, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -67395,7 +67395,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 68589, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -67416,10 +67416,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 68558, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68558, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -67429,7 +67429,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 68558, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -67441,17 +67441,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 68620, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 68626, + "commentStart": 0, "elements": [ { - "commentStart": 68635, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -67464,7 +67464,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 68664, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -67475,7 +67475,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 68663, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -67492,10 +67492,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 68615, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68615, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -67505,7 +67505,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 68615, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -67517,17 +67517,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 68702, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 68708, + "commentStart": 0, "elements": [ { - "commentStart": 68709, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -67539,7 +67539,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 68729, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -67560,10 +67560,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 68697, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68697, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -67573,7 +67573,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 68697, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -67585,17 +67585,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 68759, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 68765, + "commentStart": 0, "elements": [ { - "commentStart": 68774, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -67608,7 +67608,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 68803, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -67619,7 +67619,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 68802, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -67636,10 +67636,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 68754, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68754, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -67649,7 +67649,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 68754, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -67661,17 +67661,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 68840, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 68846, + "commentStart": 0, "elements": [ { - "commentStart": 68847, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -67683,7 +67683,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 68867, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -67704,10 +67704,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 68835, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68835, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -67717,7 +67717,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 68835, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -67729,17 +67729,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 68898, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 68904, + "commentStart": 0, "elements": [ { - "commentStart": 68913, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -67751,7 +67751,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 68940, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -67772,10 +67772,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 68893, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68893, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -67785,7 +67785,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 68893, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -67797,17 +67797,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 68978, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 68984, + "commentStart": 0, "elements": [ { - "commentStart": 68985, + "commentStart": 0, "end": 0, "raw": "0.8830488380766681", "start": 0, @@ -67819,7 +67819,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 69005, + "commentStart": 0, "end": 0, "raw": "0.6996724408425232", "start": 0, @@ -67840,10 +67840,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 68973, + "commentStart": 0, "end": 0, "name": { - "commentStart": 68973, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -67853,7 +67853,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 68973, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -67865,18 +67865,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 69036, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 69042, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 69052, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -67887,7 +67887,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 69051, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -67896,7 +67896,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 69081, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -67907,7 +67907,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 69080, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -67924,10 +67924,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 69031, + "commentStart": 0, "end": 0, "name": { - "commentStart": 69031, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -67937,7 +67937,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 69031, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -67949,17 +67949,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 69118, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 69124, + "commentStart": 0, "elements": [ { - "commentStart": 69133, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -67972,7 +67972,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 69161, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -67983,7 +67983,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 69160, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -68000,10 +68000,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 69113, + "commentStart": 0, "end": 0, "name": { - "commentStart": 69113, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -68013,7 +68013,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 69113, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -68025,18 +68025,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 69198, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 69204, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 69214, + "commentStart": 0, "end": 0, "raw": "0.6716353749059765", "start": 0, @@ -68047,7 +68047,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 69213, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -68056,7 +68056,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 69242, + "commentStart": 0, "end": 0, "raw": "0.9605576808879026", "start": 0, @@ -68067,7 +68067,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 69241, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -68084,10 +68084,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 69193, + "commentStart": 0, "end": 0, "name": { - "commentStart": 69193, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -68097,7 +68097,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 69193, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -68109,17 +68109,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 69279, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 69285, + "commentStart": 0, "elements": [ { - "commentStart": 69294, + "commentStart": 0, "end": 0, "raw": "0.010280170930300203", "start": 0, @@ -68132,7 +68132,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 69324, + "commentStart": 0, "end": 0, "raw": "0.37344123662342166", "start": 0, @@ -68143,7 +68143,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 69323, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -68160,10 +68160,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 69274, + "commentStart": 0, "end": 0, "name": { - "commentStart": 69274, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -68173,7 +68173,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 69274, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -68185,17 +68185,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 69362, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 69368, + "commentStart": 0, "elements": [ { - "commentStart": 69377, + "commentStart": 0, "end": 0, "raw": "0.10357375682791004", "start": 0, @@ -68208,7 +68208,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 69406, + "commentStart": 0, "end": 0, "raw": "0.42294321030821425", "start": 0, @@ -68219,7 +68219,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 69405, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -68236,10 +68236,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 69357, + "commentStart": 0, "end": 0, "name": { - "commentStart": 69357, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -68249,7 +68249,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 69357, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -68261,17 +68261,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 69444, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 69450, + "commentStart": 0, "elements": [ { - "commentStart": 69459, + "commentStart": 0, "end": 0, "raw": "0.4520311575096987", "start": 0, @@ -68284,7 +68284,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 69487, + "commentStart": 0, "end": 0, "raw": "0.11232675307600548", "start": 0, @@ -68295,7 +68295,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 69486, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -68312,10 +68312,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 69439, + "commentStart": 0, "end": 0, "name": { - "commentStart": 69439, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -68325,7 +68325,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 69439, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -68337,18 +68337,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 69525, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 69531, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 69541, + "commentStart": 0, "end": 0, "raw": "0.8821185914380845", "start": 0, @@ -68359,7 +68359,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 69540, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -68368,7 +68368,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 69569, + "commentStart": 0, "end": 0, "raw": "0.7155147434939819", "start": 0, @@ -68379,7 +68379,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 69568, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -68396,10 +68396,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 69520, + "commentStart": 0, "end": 0, "name": { - "commentStart": 69520, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -68409,7 +68409,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 69520, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -68421,17 +68421,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 69606, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 69612, + "commentStart": 0, "elements": [ { - "commentStart": 69613, + "commentStart": 0, "end": 0, "raw": "0.9195487101690416", "start": 0, @@ -68443,7 +68443,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 69633, + "commentStart": 0, "end": 0, "raw": "0.2691627465297364", "start": 0, @@ -68464,10 +68464,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 69601, + "commentStart": 0, "end": 0, "name": { - "commentStart": 69601, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -68477,7 +68477,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 69601, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -68489,17 +68489,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 69664, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 69670, + "commentStart": 0, "elements": [ { - "commentStart": 69679, + "commentStart": 0, "end": 0, "raw": "0.7098978191546745", "start": 0, @@ -68511,7 +68511,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 69706, + "commentStart": 0, "end": 0, "raw": "0.11710004169385968", "start": 0, @@ -68532,10 +68532,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 69659, + "commentStart": 0, "end": 0, "name": { - "commentStart": 69659, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -68545,7 +68545,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 69659, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -68557,18 +68557,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 69744, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 69750, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 69760, + "commentStart": 0, "end": 0, "raw": "0.37876368560819995", "start": 0, @@ -68579,7 +68579,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 69759, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -68587,7 +68587,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 69788, + "commentStart": 0, "end": 0, "raw": "0.7106729314759084", "start": 0, @@ -68608,10 +68608,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 69739, + "commentStart": 0, "end": 0, "name": { - "commentStart": 69739, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -68621,7 +68621,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 69739, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -68633,18 +68633,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 69825, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 69831, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 69841, + "commentStart": 0, "end": 0, "raw": "0.29728126898353335", "start": 0, @@ -68655,7 +68655,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 69840, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -68664,7 +68664,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 69870, + "commentStart": 0, "end": 0, "raw": "0.06649734568328003", "start": 0, @@ -68675,7 +68675,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 69869, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -68692,10 +68692,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 69820, + "commentStart": 0, "end": 0, "name": { - "commentStart": 69820, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -68705,7 +68705,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 69820, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -68717,17 +68717,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 69908, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 69914, + "commentStart": 0, "elements": [ { - "commentStart": 69923, + "commentStart": 0, "end": 0, "raw": "0.22965781558352072", "start": 0, @@ -68740,7 +68740,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 69952, + "commentStart": 0, "end": 0, "raw": "0.7601866432836641", "start": 0, @@ -68751,7 +68751,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 69951, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -68768,10 +68768,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 69903, + "commentStart": 0, "end": 0, "name": { - "commentStart": 69903, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -68781,7 +68781,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 69903, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -68793,18 +68793,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 69989, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 69995, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 70005, + "commentStart": 0, "end": 0, "raw": "0.6356501074317229", "start": 0, @@ -68815,7 +68815,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 70004, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -68823,7 +68823,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 70032, + "commentStart": 0, "end": 0, "raw": "0.19458425399338064", "start": 0, @@ -68844,10 +68844,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 69984, + "commentStart": 0, "end": 0, "name": { - "commentStart": 69984, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -68857,7 +68857,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 69984, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -68869,17 +68869,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 70070, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 70076, + "commentStart": 0, "elements": [ { - "commentStart": 70077, + "commentStart": 0, "end": 0, "raw": "0.5721251777404546", "start": 0, @@ -68891,7 +68891,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 70097, + "commentStart": 0, "end": 0, "raw": "0.2888584097921527", "start": 0, @@ -68912,10 +68912,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 70065, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70065, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -68925,7 +68925,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 70065, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -68937,18 +68937,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 70128, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 70134, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 70144, + "commentStart": 0, "end": 0, "raw": "0.9580409549552311", "start": 0, @@ -68959,7 +68959,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 70143, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -68968,7 +68968,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 70172, + "commentStart": 0, "end": 0, "raw": "0.02243818192078395", "start": 0, @@ -68979,7 +68979,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 70171, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -68996,10 +68996,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 70123, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70123, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -69009,7 +69009,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 70123, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -69021,17 +69021,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 70210, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 70216, + "commentStart": 0, "elements": [ { - "commentStart": 70225, + "commentStart": 0, "end": 0, "raw": "0.3299184618602866", "start": 0, @@ -69044,7 +69044,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 70253, + "commentStart": 0, "end": 0, "raw": "0.8353726942369875", "start": 0, @@ -69055,7 +69055,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 70252, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -69072,10 +69072,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 70205, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70205, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -69085,7 +69085,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 70205, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -69097,17 +69097,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 70290, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 70296, + "commentStart": 0, "elements": [ { - "commentStart": 70305, + "commentStart": 0, "end": 0, "raw": "0.7434639386755209", "start": 0, @@ -69120,7 +69120,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 70333, + "commentStart": 0, "end": 0, "raw": "0.7919648864138378", "start": 0, @@ -69131,7 +69131,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 70332, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -69148,10 +69148,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 70285, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70285, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -69161,7 +69161,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 70285, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -69173,17 +69173,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 70370, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 70376, + "commentStart": 0, "elements": [ { - "commentStart": 70377, + "commentStart": 0, "end": 0, "raw": "0.9935751011164615", "start": 0, @@ -69195,7 +69195,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 70397, + "commentStart": 0, "end": 0, "raw": "0.9042566468497608", "start": 0, @@ -69216,10 +69216,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 70365, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70365, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -69229,7 +69229,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 70365, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -69241,18 +69241,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 70428, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 70434, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 70444, + "commentStart": 0, "end": 0, "raw": "0.5035812884687294", "start": 0, @@ -69263,7 +69263,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 70443, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -69271,7 +69271,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 70471, + "commentStart": 0, "end": 0, "raw": "0.5150967434989442", "start": 0, @@ -69292,10 +69292,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 70423, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70423, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -69305,7 +69305,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 70423, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -69317,17 +69317,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 70508, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 70514, + "commentStart": 0, "elements": [ { - "commentStart": 70515, + "commentStart": 0, "end": 0, "raw": "0.5526227215900215", "start": 0, @@ -69339,7 +69339,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 70535, + "commentStart": 0, "end": 0, "raw": "0.7612604137272441", "start": 0, @@ -69360,10 +69360,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 70503, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70503, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -69373,7 +69373,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 70503, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -69385,17 +69385,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 70566, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 70572, + "commentStart": 0, "elements": [ { - "commentStart": 70581, + "commentStart": 0, "end": 0, "raw": "0.8593271349126876", "start": 0, @@ -69407,7 +69407,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 70608, + "commentStart": 0, "end": 0, "raw": "0.08414894953725849", "start": 0, @@ -69428,10 +69428,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 70561, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70561, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -69441,7 +69441,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 70561, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -69453,18 +69453,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 70646, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 70652, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 70662, + "commentStart": 0, "end": 0, "raw": "0.8181049219192864", "start": 0, @@ -69475,7 +69475,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 70661, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -69484,7 +69484,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 70690, + "commentStart": 0, "end": 0, "raw": "0.903548131323352", "start": 0, @@ -69495,7 +69495,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 70689, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -69512,10 +69512,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 70641, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70641, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -69525,7 +69525,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 70641, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -69537,17 +69537,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 70726, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 70732, + "commentStart": 0, "elements": [ { - "commentStart": 70741, + "commentStart": 0, "end": 0, "raw": "0.3165782044458305", "start": 0, @@ -69560,7 +69560,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 70769, + "commentStart": 0, "end": 0, "raw": "0.24189274252014914", "start": 0, @@ -69571,7 +69571,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 70768, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -69588,10 +69588,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 70721, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70721, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -69601,7 +69601,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 70721, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -69613,18 +69613,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 70807, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 70813, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 70823, + "commentStart": 0, "end": 0, "raw": "0.44390956414045135", "start": 0, @@ -69635,7 +69635,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 70822, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -69644,7 +69644,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 70852, + "commentStart": 0, "end": 0, "raw": "0.25912591535126905", "start": 0, @@ -69655,7 +69655,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 70851, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -69672,10 +69672,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 70802, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70802, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -69685,7 +69685,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 70802, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -69697,18 +69697,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 70890, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 70896, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 70906, + "commentStart": 0, "end": 0, "raw": "0.6605165911891009", "start": 0, @@ -69719,7 +69719,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 70905, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -69728,7 +69728,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 70934, + "commentStart": 0, "end": 0, "raw": "0.40355115288839194", "start": 0, @@ -69739,7 +69739,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 70933, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -69756,10 +69756,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 70885, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70885, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -69769,7 +69769,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 70885, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -69781,18 +69781,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 70972, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 70978, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 70988, + "commentStart": 0, "end": 0, "raw": "0.7170489950180006", "start": 0, @@ -69803,7 +69803,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 70987, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -69811,7 +69811,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 71015, + "commentStart": 0, "end": 0, "raw": "0.23454356079651384", "start": 0, @@ -69832,10 +69832,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 70967, + "commentStart": 0, "end": 0, "name": { - "commentStart": 70967, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -69845,7 +69845,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 70967, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -69857,18 +69857,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 71053, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 71059, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 71069, + "commentStart": 0, "end": 0, "raw": "0.2568187045379722", "start": 0, @@ -69879,7 +69879,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 71068, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -69888,7 +69888,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 71097, + "commentStart": 0, "end": 0, "raw": "0.45031188717601367", "start": 0, @@ -69899,7 +69899,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 71096, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -69916,10 +69916,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 71048, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71048, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -69929,7 +69929,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 71048, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -69941,17 +69941,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 71135, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 71141, + "commentStart": 0, "elements": [ { - "commentStart": 71150, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -69964,7 +69964,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 71178, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -69975,7 +69975,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 71177, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -69992,10 +69992,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 71130, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71130, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -70005,7 +70005,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 71130, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -70017,18 +70017,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 71215, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 71221, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 71231, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -70039,7 +70039,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 71230, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -70047,7 +70047,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 71258, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -70068,10 +70068,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 71210, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71210, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -70081,7 +70081,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 71210, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -70093,18 +70093,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 71295, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 71301, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 71311, + "commentStart": 0, "end": 0, "raw": "0.8328324229085962", "start": 0, @@ -70115,7 +70115,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 71310, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -70123,7 +70123,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 71338, + "commentStart": 0, "end": 0, "raw": "0.4677492878818803", "start": 0, @@ -70144,10 +70144,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 71290, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71290, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -70157,7 +70157,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 71290, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -70169,18 +70169,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 71375, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 71381, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 71391, + "commentStart": 0, "end": 0, "raw": "0.8111463382182231", "start": 0, @@ -70191,7 +70191,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 71390, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -70200,7 +70200,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 71419, + "commentStart": 0, "end": 0, "raw": "0.41814807547140576", "start": 0, @@ -70211,7 +70211,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 71418, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -70228,10 +70228,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 71370, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71370, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -70241,7 +70241,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 71370, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -70253,17 +70253,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 71457, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 71463, + "commentStart": 0, "elements": [ { - "commentStart": 71472, + "commentStart": 0, "end": 0, "raw": "0.03807684940941125", "start": 0, @@ -70275,7 +70275,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 71500, + "commentStart": 0, "end": 0, "raw": "0.25664826686353326", "start": 0, @@ -70296,10 +70296,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 71452, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71452, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -70309,7 +70309,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 71452, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -70321,17 +70321,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 71538, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 71544, + "commentStart": 0, "elements": [ { - "commentStart": 71553, + "commentStart": 0, "end": 0, "raw": "0.23950083339596384", "start": 0, @@ -70343,7 +70343,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 71581, + "commentStart": 0, "end": 0, "raw": "0.43693196301855575", "start": 0, @@ -70364,10 +70364,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 71533, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71533, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -70377,7 +70377,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 71533, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -70389,18 +70389,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 71619, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 71625, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 71635, + "commentStart": 0, "end": 0, "raw": "0.16279444820904887", "start": 0, @@ -70411,7 +70411,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 71634, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -70419,7 +70419,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 71663, + "commentStart": 0, "end": 0, "raw": "0.8064475707664818", "start": 0, @@ -70440,10 +70440,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 71614, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71614, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -70453,7 +70453,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 71614, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -70465,18 +70465,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 71700, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 71706, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 71716, + "commentStart": 0, "end": 0, "raw": "0.08972872009232558", "start": 0, @@ -70487,7 +70487,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 71715, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -70496,7 +70496,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 71745, + "commentStart": 0, "end": 0, "raw": "0.08887625823751266", "start": 0, @@ -70507,7 +70507,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 71744, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -70524,10 +70524,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 71695, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71695, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -70537,7 +70537,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 71695, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -70549,17 +70549,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 71783, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 71789, + "commentStart": 0, "elements": [ { - "commentStart": 71798, + "commentStart": 0, "end": 0, "raw": "0.9203433427102556", "start": 0, @@ -70572,7 +70572,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 71826, + "commentStart": 0, "end": 0, "raw": "0.17343459369697545", "start": 0, @@ -70583,7 +70583,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 71825, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -70600,10 +70600,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 71778, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71778, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -70613,7 +70613,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 71778, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -70625,17 +70625,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 71864, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 71870, + "commentStart": 0, "elements": [ { - "commentStart": 71879, + "commentStart": 0, "end": 0, "raw": "0.0017496234414517975", "start": 0, @@ -70648,7 +70648,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 71910, + "commentStart": 0, "end": 0, "raw": "0.5178508316168335", "start": 0, @@ -70659,7 +70659,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 71909, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -70676,10 +70676,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 71859, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71859, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -70689,7 +70689,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 71859, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -70701,17 +70701,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 71947, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 71953, + "commentStart": 0, "elements": [ { - "commentStart": 71962, + "commentStart": 0, "end": 0, "raw": "0.6206263405732759", "start": 0, @@ -70724,7 +70724,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 71990, + "commentStart": 0, "end": 0, "raw": "0.8733399468665124", "start": 0, @@ -70735,7 +70735,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 71989, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -70752,10 +70752,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 71942, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71942, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -70765,7 +70765,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 71942, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -70777,18 +70777,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 72027, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 72033, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 72043, + "commentStart": 0, "end": 0, "raw": "0.7776386664456383", "start": 0, @@ -70799,7 +70799,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 72042, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -70807,7 +70807,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 72070, + "commentStart": 0, "end": 0, "raw": "0.7602780485384968", "start": 0, @@ -70828,10 +70828,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 72022, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72022, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -70841,7 +70841,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 72022, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -70853,17 +70853,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 72107, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 72113, + "commentStart": 0, "elements": [ { - "commentStart": 72114, + "commentStart": 0, "end": 0, "raw": "0.5439379760788592", "start": 0, @@ -70875,7 +70875,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 72134, + "commentStart": 0, "end": 0, "raw": "0.8449177589350552", "start": 0, @@ -70896,10 +70896,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 72102, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72102, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -70909,7 +70909,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 72102, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -70921,18 +70921,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 72165, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 72171, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 72181, + "commentStart": 0, "end": 0, "raw": "0.13036646025917076", "start": 0, @@ -70943,7 +70943,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 72180, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -70951,7 +70951,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 72209, + "commentStart": 0, "end": 0, "raw": "0.012051713627069693", "start": 0, @@ -70972,10 +70972,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 72160, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72160, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -70985,7 +70985,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 72160, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -70997,18 +70997,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 72248, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 72254, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 72264, + "commentStart": 0, "end": 0, "raw": "0.1656465612645519", "start": 0, @@ -71019,7 +71019,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 72263, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -71028,7 +71028,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 72292, + "commentStart": 0, "end": 0, "raw": "0.20775229173765486", "start": 0, @@ -71039,7 +71039,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 72291, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -71056,10 +71056,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 72243, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72243, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -71069,7 +71069,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 72243, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -71081,18 +71081,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 72330, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 72336, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 72346, + "commentStart": 0, "end": 0, "raw": "0.0962723255929061", "start": 0, @@ -71103,7 +71103,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 72345, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -71112,7 +71112,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 72374, + "commentStart": 0, "end": 0, "raw": "0.05417797659066137", "start": 0, @@ -71123,7 +71123,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 72373, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -71140,10 +71140,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 72325, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72325, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -71153,7 +71153,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 72325, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -71165,17 +71165,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 72412, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 72418, + "commentStart": 0, "elements": [ { - "commentStart": 72419, + "commentStart": 0, "end": 0, "raw": "0.902108945498191", "start": 0, @@ -71187,7 +71187,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 72438, + "commentStart": 0, "end": 0, "raw": "0.3958978534964961", "start": 0, @@ -71208,10 +71208,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 72407, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72407, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -71221,7 +71221,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 72407, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -71233,17 +71233,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 72469, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 72475, + "commentStart": 0, "elements": [ { - "commentStart": 72484, + "commentStart": 0, "end": 0, "raw": "0.27997950083139167", "start": 0, @@ -71256,7 +71256,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 72513, + "commentStart": 0, "end": 0, "raw": "0.17778188444008958", "start": 0, @@ -71267,7 +71267,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 72512, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -71284,10 +71284,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 72464, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72464, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -71297,7 +71297,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 72464, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -71309,17 +71309,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 72551, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 72557, + "commentStart": 0, "elements": [ { - "commentStart": 72558, + "commentStart": 0, "end": 0, "raw": "0.5235806061589545", "start": 0, @@ -71331,7 +71331,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 72578, + "commentStart": 0, "end": 0, "raw": "0.694318985642328", "start": 0, @@ -71352,10 +71352,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 72546, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72546, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -71365,7 +71365,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 72546, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -71377,17 +71377,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 72608, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 72614, + "commentStart": 0, "elements": [ { - "commentStart": 72623, + "commentStart": 0, "end": 0, "raw": "0.39140760219992154", "start": 0, @@ -71400,7 +71400,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 72652, + "commentStart": 0, "end": 0, "raw": "0.7839795272576484", "start": 0, @@ -71411,7 +71411,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 72651, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -71428,10 +71428,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 72603, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72603, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -71441,7 +71441,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 72603, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -71453,17 +71453,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 72689, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 72695, + "commentStart": 0, "elements": [ { - "commentStart": 72696, + "commentStart": 0, "end": 0, "raw": "0.8414243527073519", "start": 0, @@ -71475,7 +71475,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 72716, + "commentStart": 0, "end": 0, "raw": "0.5395591528940082", "start": 0, @@ -71496,10 +71496,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 72684, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72684, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -71509,7 +71509,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 72684, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -71521,17 +71521,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 72747, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 72753, + "commentStart": 0, "elements": [ { - "commentStart": 72762, + "commentStart": 0, "end": 0, "raw": "0.6137667704875602", "start": 0, @@ -71543,7 +71543,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 72789, + "commentStart": 0, "end": 0, "raw": "0.22119647516722085", "start": 0, @@ -71564,10 +71564,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 72742, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72742, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -71577,7 +71577,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 72742, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -71589,18 +71589,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 72827, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 72833, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 72843, + "commentStart": 0, "end": 0, "raw": "0.09582414374469184", "start": 0, @@ -71611,7 +71611,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 72842, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -71620,7 +71620,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 72872, + "commentStart": 0, "end": 0, "raw": "0.7533839681212353", "start": 0, @@ -71631,7 +71631,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 72871, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -71648,10 +71648,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 72822, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72822, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -71661,7 +71661,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 72822, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -71673,18 +71673,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 72909, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 72915, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 72925, + "commentStart": 0, "end": 0, "raw": "0.17254116580051848", "start": 0, @@ -71695,7 +71695,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 72924, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -71704,7 +71704,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 72954, + "commentStart": 0, "end": 0, "raw": "0.7669113400341137", "start": 0, @@ -71715,7 +71715,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 72953, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -71732,10 +71732,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 72904, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72904, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -71745,7 +71745,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 72904, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -71757,17 +71757,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 72991, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 72997, + "commentStart": 0, "elements": [ { - "commentStart": 72998, + "commentStart": 0, "end": 0, "raw": "0.8944730032887609", "start": 0, @@ -71779,7 +71779,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 73018, + "commentStart": 0, "end": 0, "raw": "0.6093318694741408", "start": 0, @@ -71800,10 +71800,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 72986, + "commentStart": 0, "end": 0, "name": { - "commentStart": 72986, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -71813,7 +71813,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 72986, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -71825,18 +71825,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 73049, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 73055, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 73065, + "commentStart": 0, "end": 0, "raw": "0.41290485754343953", "start": 0, @@ -71847,7 +71847,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73064, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -71856,7 +71856,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 73094, + "commentStart": 0, "end": 0, "raw": "0.4152647361760933", "start": 0, @@ -71867,7 +71867,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73093, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -71884,10 +71884,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 73044, + "commentStart": 0, "end": 0, "name": { - "commentStart": 73044, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -71897,7 +71897,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 73044, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -71909,17 +71909,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 73131, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 73137, + "commentStart": 0, "elements": [ { - "commentStart": 73146, + "commentStart": 0, "end": 0, "raw": "0.5169538755575687", "start": 0, @@ -71932,7 +71932,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 73174, + "commentStart": 0, "end": 0, "raw": "0.9085567867302617", "start": 0, @@ -71943,7 +71943,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73173, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -71960,10 +71960,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 73126, + "commentStart": 0, "end": 0, "name": { - "commentStart": 73126, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -71973,7 +71973,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 73126, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -71985,17 +71985,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 73211, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 73217, + "commentStart": 0, "elements": [ { - "commentStart": 73226, + "commentStart": 0, "end": 0, "raw": "0.6751951211858687", "start": 0, @@ -72008,7 +72008,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 73254, + "commentStart": 0, "end": 0, "raw": "0.9709424233465593", "start": 0, @@ -72019,7 +72019,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73253, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -72036,10 +72036,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 73206, + "commentStart": 0, "end": 0, "name": { - "commentStart": 73206, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -72049,7 +72049,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 73206, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -72061,18 +72061,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 73291, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 73297, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 73307, + "commentStart": 0, "end": 0, "raw": "0.5689619842972184", "start": 0, @@ -72083,7 +72083,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73306, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -72091,7 +72091,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 73334, + "commentStart": 0, "end": 0, "raw": "0.5918969913790362", "start": 0, @@ -72112,10 +72112,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 73286, + "commentStart": 0, "end": 0, "name": { - "commentStart": 73286, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -72125,7 +72125,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 73286, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -72137,17 +72137,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 73371, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 73377, + "commentStart": 0, "elements": [ { - "commentStart": 73386, + "commentStart": 0, "end": 0, "raw": "0.9464450621708211", "start": 0, @@ -72160,7 +72160,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 73414, + "commentStart": 0, "end": 0, "raw": "0.2684908127803667", "start": 0, @@ -72171,7 +72171,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73413, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -72188,10 +72188,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 73366, + "commentStart": 0, "end": 0, "name": { - "commentStart": 73366, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -72201,7 +72201,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 73366, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -72213,17 +72213,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 73451, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 73457, + "commentStart": 0, "elements": [ { - "commentStart": 73458, + "commentStart": 0, "end": 0, "raw": "0.5241732366617591", "start": 0, @@ -72235,7 +72235,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 73478, + "commentStart": 0, "end": 0, "raw": "0.9011437416408563", "start": 0, @@ -72256,10 +72256,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 73446, + "commentStart": 0, "end": 0, "name": { - "commentStart": 73446, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -72269,7 +72269,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 73446, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -72281,18 +72281,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 73509, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 73515, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 73525, + "commentStart": 0, "end": 0, "raw": "0.14255393713960607", "start": 0, @@ -72303,7 +72303,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73524, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -72312,7 +72312,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 73554, + "commentStart": 0, "end": 0, "raw": "0.5194262624564814", "start": 0, @@ -72323,7 +72323,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73553, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -72340,10 +72340,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 73504, + "commentStart": 0, "end": 0, "name": { - "commentStart": 73504, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -72353,7 +72353,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 73504, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -72365,18 +72365,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 73591, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 73597, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 73607, + "commentStart": 0, "end": 0, "raw": "0.4287123231350338", "start": 0, @@ -72387,7 +72387,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73606, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -72396,7 +72396,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 73635, + "commentStart": 0, "end": 0, "raw": "0.4223564528725028", "start": 0, @@ -72407,7 +72407,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73634, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -72424,10 +72424,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 73586, + "commentStart": 0, "end": 0, "name": { - "commentStart": 73586, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -72437,7 +72437,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 73586, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -72449,18 +72449,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 73672, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 73678, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 73688, + "commentStart": 0, "end": 0, "raw": "0.09316367294024519", "start": 0, @@ -72471,7 +72471,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73687, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -72480,7 +72480,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 73717, + "commentStart": 0, "end": 0, "raw": "0.9063127021008246", "start": 0, @@ -72491,7 +72491,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73716, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -72508,10 +72508,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 73667, + "commentStart": 0, "end": 0, "name": { - "commentStart": 73667, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -72521,7 +72521,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 73667, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -72533,18 +72533,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 73754, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 73760, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 73770, + "commentStart": 0, "end": 0, "raw": "0.2767766535558669", "start": 0, @@ -72555,7 +72555,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73769, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -72563,7 +72563,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 73797, + "commentStart": 0, "end": 0, "raw": "0.6816248114129131", "start": 0, @@ -72584,10 +72584,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 73749, + "commentStart": 0, "end": 0, "name": { - "commentStart": 73749, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -72597,7 +72597,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 73749, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -72609,17 +72609,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 73834, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 73840, + "commentStart": 0, "elements": [ { - "commentStart": 73849, + "commentStart": 0, "end": 0, "raw": "0.9796762495562534", "start": 0, @@ -72632,7 +72632,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 73877, + "commentStart": 0, "end": 0, "raw": "0.0822145668330625", "start": 0, @@ -72643,7 +72643,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73876, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -72660,10 +72660,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 73829, + "commentStart": 0, "end": 0, "name": { - "commentStart": 73829, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -72673,7 +72673,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 73829, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -72685,18 +72685,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 73914, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 73920, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 73930, + "commentStart": 0, "end": 0, "raw": "0.8666513070867441", "start": 0, @@ -72707,7 +72707,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73929, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -72716,7 +72716,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 73958, + "commentStart": 0, "end": 0, "raw": "0.301053160242023", "start": 0, @@ -72727,7 +72727,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 73957, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -72744,10 +72744,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 73909, + "commentStart": 0, "end": 0, "name": { - "commentStart": 73909, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -72757,7 +72757,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 73909, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -72769,17 +72769,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 73994, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 74000, + "commentStart": 0, "elements": [ { - "commentStart": 74009, + "commentStart": 0, "end": 0, "raw": "0.537415656028112", "start": 0, @@ -72791,7 +72791,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 74035, + "commentStart": 0, "end": 0, "raw": "0.020272692875002774", "start": 0, @@ -72812,10 +72812,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 73989, + "commentStart": 0, "end": 0, "name": { - "commentStart": 73989, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -72825,7 +72825,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 73989, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -72837,17 +72837,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 74074, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 74080, + "commentStart": 0, "elements": [ { - "commentStart": 74089, + "commentStart": 0, "end": 0, "raw": "0.9332396256457531", "start": 0, @@ -72860,7 +72860,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 74117, + "commentStart": 0, "end": 0, "raw": "0.6228175690649898", "start": 0, @@ -72871,7 +72871,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 74116, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -72888,10 +72888,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 74069, + "commentStart": 0, "end": 0, "name": { - "commentStart": 74069, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -72901,7 +72901,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 74069, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -72913,17 +72913,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 74154, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 74160, + "commentStart": 0, "elements": [ { - "commentStart": 74169, + "commentStart": 0, "end": 0, "raw": "0.18052415837320734", "start": 0, @@ -72936,7 +72936,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 74198, + "commentStart": 0, "end": 0, "raw": "0.36894384647296197", "start": 0, @@ -72947,7 +72947,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 74197, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -72964,10 +72964,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 74149, + "commentStart": 0, "end": 0, "name": { - "commentStart": 74149, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -72977,7 +72977,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 74149, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -72989,17 +72989,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 74236, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 74242, + "commentStart": 0, "elements": [ { - "commentStart": 74243, + "commentStart": 0, "end": 0, "raw": "0.5384372634075449", "start": 0, @@ -73011,7 +73011,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 74263, + "commentStart": 0, "end": 0, "raw": "0.2377565050887107", "start": 0, @@ -73032,10 +73032,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 74231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 74231, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -73045,7 +73045,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 74231, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -73057,17 +73057,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 74294, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 74300, + "commentStart": 0, "elements": [ { - "commentStart": 74309, + "commentStart": 0, "end": 0, "raw": "0.39043436929278874", "start": 0, @@ -73079,7 +73079,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 74337, + "commentStart": 0, "end": 0, "raw": "0.14273182483160451", "start": 0, @@ -73100,10 +73100,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 74289, + "commentStart": 0, "end": 0, "name": { - "commentStart": 74289, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -73113,7 +73113,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 74289, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -73125,17 +73125,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 74375, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 74381, + "commentStart": 0, "elements": [ { - "commentStart": 74390, + "commentStart": 0, "end": 0, "raw": "0.09782890412897283", "start": 0, @@ -73147,7 +73147,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 74418, + "commentStart": 0, "end": 0, "raw": "0.9907667536909659", "start": 0, @@ -73168,10 +73168,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 74370, + "commentStart": 0, "end": 0, "name": { - "commentStart": 74370, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -73181,7 +73181,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 74370, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -73193,17 +73193,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 74455, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 74461, + "commentStart": 0, "elements": [ { - "commentStart": 74470, + "commentStart": 0, "end": 0, "raw": "0.5286610085921146", "start": 0, @@ -73216,7 +73216,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 74498, + "commentStart": 0, "end": 0, "raw": "0.7924508308419256", "start": 0, @@ -73227,7 +73227,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 74497, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -73244,10 +73244,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 74450, + "commentStart": 0, "end": 0, "name": { - "commentStart": 74450, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -73257,7 +73257,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 74450, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -73269,17 +73269,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 74535, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 74541, + "commentStart": 0, "elements": [ { - "commentStart": 74550, + "commentStart": 0, "end": 0, "raw": "0.3789978184503342", "start": 0, @@ -73291,7 +73291,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 74577, + "commentStart": 0, "end": 0, "raw": "0.12396120576838676", "start": 0, @@ -73312,10 +73312,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 74530, + "commentStart": 0, "end": 0, "name": { - "commentStart": 74530, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -73325,7 +73325,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 74530, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -73337,18 +73337,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 74615, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 74621, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 74631, + "commentStart": 0, "end": 0, "raw": "0.9484912744890612", "start": 0, @@ -73359,7 +73359,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 74630, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -73367,7 +73367,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 74658, + "commentStart": 0, "end": 0, "raw": "0.6729649846476855", "start": 0, @@ -73388,10 +73388,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 74610, + "commentStart": 0, "end": 0, "name": { - "commentStart": 74610, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -73401,7 +73401,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 74610, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -73413,17 +73413,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 74695, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 74701, + "commentStart": 0, "elements": [ { - "commentStart": 74710, + "commentStart": 0, "end": 0, "raw": "0.7451758753425153", "start": 0, @@ -73436,7 +73436,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 74738, + "commentStart": 0, "end": 0, "raw": "0.21318737562458967", "start": 0, @@ -73447,7 +73447,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 74737, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -73464,10 +73464,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 74690, + "commentStart": 0, "end": 0, "name": { - "commentStart": 74690, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -73477,7 +73477,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 74690, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -73489,17 +73489,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 74776, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 74782, + "commentStart": 0, "elements": [ { - "commentStart": 74791, + "commentStart": 0, "end": 0, "raw": "0.1873200727251887", "start": 0, @@ -73512,7 +73512,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 74819, + "commentStart": 0, "end": 0, "raw": "0.15961374297992448", "start": 0, @@ -73523,7 +73523,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 74818, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -73540,10 +73540,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 74771, + "commentStart": 0, "end": 0, "name": { - "commentStart": 74771, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -73553,7 +73553,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 74771, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -73565,18 +73565,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 74857, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 74863, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 74873, + "commentStart": 0, "end": 0, "raw": "0.05729464924537564", "start": 0, @@ -73587,7 +73587,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 74872, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -73596,7 +73596,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 74902, + "commentStart": 0, "end": 0, "raw": "0.5436345558508746", "start": 0, @@ -73607,7 +73607,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 74901, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -73624,10 +73624,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 74852, + "commentStart": 0, "end": 0, "name": { - "commentStart": 74852, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -73637,7 +73637,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 74852, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -73649,18 +73649,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 74939, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 74945, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 74955, + "commentStart": 0, "end": 0, "raw": "0.09582414374469184", "start": 0, @@ -73671,7 +73671,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 74954, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -73680,7 +73680,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 74984, + "commentStart": 0, "end": 0, "raw": "0.7533839681212353", "start": 0, @@ -73691,7 +73691,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 74983, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -73708,10 +73708,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 74934, + "commentStart": 0, "end": 0, "name": { - "commentStart": 74934, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -73721,7 +73721,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 74934, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -73733,18 +73733,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 75021, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 75027, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 75037, + "commentStart": 0, "end": 0, "raw": "0.17254116580051848", "start": 0, @@ -73755,7 +73755,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 75036, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -73764,7 +73764,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 75066, + "commentStart": 0, "end": 0, "raw": "0.7669113400341137", "start": 0, @@ -73775,7 +73775,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 75065, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -73792,10 +73792,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 75016, + "commentStart": 0, "end": 0, "name": { - "commentStart": 75016, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -73805,7 +73805,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 75016, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -73817,17 +73817,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 75103, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 75109, + "commentStart": 0, "elements": [ { - "commentStart": 75110, + "commentStart": 0, "end": 0, "raw": "0.8944730032887609", "start": 0, @@ -73839,7 +73839,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 75130, + "commentStart": 0, "end": 0, "raw": "0.6093318694741408", "start": 0, @@ -73860,10 +73860,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 75098, + "commentStart": 0, "end": 0, "name": { - "commentStart": 75098, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -73873,7 +73873,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 75098, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -73885,18 +73885,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 75161, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 75167, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 75177, + "commentStart": 0, "end": 0, "raw": "0.6238548626325471", "start": 0, @@ -73907,7 +73907,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 75176, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -73915,7 +73915,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 75204, + "commentStart": 0, "end": 0, "raw": "0.4053626746020169", "start": 0, @@ -73936,10 +73936,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 75156, + "commentStart": 0, "end": 0, "name": { - "commentStart": 75156, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -73949,7 +73949,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 75156, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -73961,17 +73961,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 75241, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 75247, + "commentStart": 0, "elements": [ { - "commentStart": 75256, + "commentStart": 0, "end": 0, "raw": "0.1379445992766417", "start": 0, @@ -73984,7 +73984,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 75284, + "commentStart": 0, "end": 0, "raw": "0.47871087958516045", "start": 0, @@ -73995,7 +73995,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 75283, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -74012,10 +74012,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 75236, + "commentStart": 0, "end": 0, "name": { - "commentStart": 75236, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -74025,7 +74025,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 75236, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -74037,18 +74037,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 75322, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 75328, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 75338, + "commentStart": 0, "end": 0, "raw": "0.9516767113283946", "start": 0, @@ -74059,7 +74059,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 75337, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -74067,7 +74067,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 75365, + "commentStart": 0, "end": 0, "raw": "0.8619900618578948", "start": 0, @@ -74088,10 +74088,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 75317, + "commentStart": 0, "end": 0, "name": { - "commentStart": 75317, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -74101,7 +74101,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 75317, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -74113,17 +74113,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 75402, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 75408, + "commentStart": 0, "elements": [ { - "commentStart": 75409, + "commentStart": 0, "end": 0, "raw": "0.9398732950992088", "start": 0, @@ -74135,7 +74135,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 75429, + "commentStart": 0, "end": 0, "raw": "0.6326239915683629", "start": 0, @@ -74156,10 +74156,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 75397, + "commentStart": 0, "end": 0, "name": { - "commentStart": 75397, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -74169,7 +74169,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 75397, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -74181,18 +74181,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 75460, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 75466, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 75476, + "commentStart": 0, "end": 0, "raw": "0.8631974445502164", "start": 0, @@ -74203,7 +74203,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 75475, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -74211,7 +74211,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 75503, + "commentStart": 0, "end": 0, "raw": "0.016153555523963137", "start": 0, @@ -74232,10 +74232,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 75455, + "commentStart": 0, "end": 0, "name": { - "commentStart": 75455, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -74245,7 +74245,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 75455, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -74257,17 +74257,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 75542, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 75548, + "commentStart": 0, "elements": [ { - "commentStart": 75557, + "commentStart": 0, "end": 0, "raw": "0.19167797120152907", "start": 0, @@ -74280,7 +74280,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 75586, + "commentStart": 0, "end": 0, "raw": "0.4916414381703984", "start": 0, @@ -74291,7 +74291,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 75585, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -74308,10 +74308,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 75537, + "commentStart": 0, "end": 0, "name": { - "commentStart": 75537, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -74321,7 +74321,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 75537, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -74333,18 +74333,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 75623, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 75629, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 75639, + "commentStart": 0, "end": 0, "raw": "0.8644261221501586", "start": 0, @@ -74355,7 +74355,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 75638, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -74364,7 +74364,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 75667, + "commentStart": 0, "end": 0, "raw": "0.11434763886359756", "start": 0, @@ -74375,7 +74375,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 75666, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -74392,10 +74392,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 75618, + "commentStart": 0, "end": 0, "name": { - "commentStart": 75618, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -74405,7 +74405,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 75618, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -74417,18 +74417,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 75705, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 75711, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 75721, + "commentStart": 0, "end": 0, "raw": "0.029081958413378572", "start": 0, @@ -74439,7 +74439,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 75720, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -74448,7 +74448,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 75751, + "commentStart": 0, "end": 0, "raw": "0.5214138808318329", "start": 0, @@ -74459,7 +74459,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 75750, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -74476,10 +74476,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 75700, + "commentStart": 0, "end": 0, "name": { - "commentStart": 75700, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -74489,7 +74489,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 75700, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -74501,18 +74501,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 75788, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 75794, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 75804, + "commentStart": 0, "end": 0, "raw": "0.8713091851579695", "start": 0, @@ -74523,7 +74523,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 75803, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -74531,7 +74531,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 75831, + "commentStart": 0, "end": 0, "raw": "0.7866284950967315", "start": 0, @@ -74552,10 +74552,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 75783, + "commentStart": 0, "end": 0, "name": { - "commentStart": 75783, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -74565,7 +74565,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 75783, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -74577,17 +74577,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 75868, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 75874, + "commentStart": 0, "elements": [ { - "commentStart": 75875, + "commentStart": 0, "end": 0, "raw": "0.884342023093545", "start": 0, @@ -74600,7 +74600,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 75895, + "commentStart": 0, "end": 0, "raw": "0.1825407002568431", "start": 0, @@ -74611,7 +74611,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 75894, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -74628,10 +74628,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 75863, + "commentStart": 0, "end": 0, "name": { - "commentStart": 75863, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -74641,7 +74641,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 75863, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -74653,18 +74653,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 75926, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 75932, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 75942, + "commentStart": 0, "end": 0, "raw": "0.6978385295364686", "start": 0, @@ -74675,7 +74675,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 75941, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -74683,7 +74683,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 75969, + "commentStart": 0, "end": 0, "raw": "0.0440574328736949", "start": 0, @@ -74704,10 +74704,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 75921, + "commentStart": 0, "end": 0, "name": { - "commentStart": 75921, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -74717,7 +74717,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 75921, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -74729,18 +74729,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 76006, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 76012, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 76022, + "commentStart": 0, "end": 0, "raw": "0.48055049324331556", "start": 0, @@ -74751,7 +74751,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 76021, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -74760,7 +74760,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 76051, + "commentStart": 0, "end": 0, "raw": "0.028546347149214002", "start": 0, @@ -74771,7 +74771,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 76050, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -74788,10 +74788,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 76001, + "commentStart": 0, "end": 0, "name": { - "commentStart": 76001, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -74801,7 +74801,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 76001, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -74813,17 +74813,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 76090, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 76096, + "commentStart": 0, "elements": [ { - "commentStart": 76105, + "commentStart": 0, "end": 0, "raw": "0.41283517382864776", "start": 0, @@ -74836,7 +74836,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 76134, + "commentStart": 0, "end": 0, "raw": "0.44938038251347323", "start": 0, @@ -74847,7 +74847,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 76133, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -74864,10 +74864,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 76085, + "commentStart": 0, "end": 0, "name": { - "commentStart": 76085, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -74877,7 +74877,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 76085, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -74889,17 +74889,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 76172, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 76178, + "commentStart": 0, "elements": [ { - "commentStart": 76179, + "commentStart": 0, "end": 0, "raw": "0.7911399832501751", "start": 0, @@ -74911,7 +74911,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 76199, + "commentStart": 0, "end": 0, "raw": "0.893446368526005", "start": 0, @@ -74932,10 +74932,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 76167, + "commentStart": 0, "end": 0, "name": { - "commentStart": 76167, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -74945,7 +74945,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 76167, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -74957,17 +74957,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 76229, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 76235, + "commentStart": 0, "elements": [ { - "commentStart": 76244, + "commentStart": 0, "end": 0, "raw": "0.6507434699009087", "start": 0, @@ -74980,7 +74980,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 76272, + "commentStart": 0, "end": 0, "raw": "0.6890023920962012", "start": 0, @@ -74991,7 +74991,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 76271, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -75008,10 +75008,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 76224, + "commentStart": 0, "end": 0, "name": { - "commentStart": 76224, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -75021,7 +75021,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 76224, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -75033,17 +75033,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 76309, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 76315, + "commentStart": 0, "elements": [ { - "commentStart": 76324, + "commentStart": 0, "end": 0, "raw": "0.10489019777253028", "start": 0, @@ -75056,7 +75056,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 76353, + "commentStart": 0, "end": 0, "raw": "0.5467450997193952", "start": 0, @@ -75067,7 +75067,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 76352, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -75084,10 +75084,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 76304, + "commentStart": 0, "end": 0, "name": { - "commentStart": 76304, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -75097,7 +75097,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 76304, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -75109,18 +75109,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 76390, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 76396, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 76406, + "commentStart": 0, "end": 0, "raw": "0.5760905289992633", "start": 0, @@ -75131,7 +75131,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 76405, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -75140,7 +75140,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 76434, + "commentStart": 0, "end": 0, "raw": "0.2639900702114173", "start": 0, @@ -75151,7 +75151,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 76433, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -75168,10 +75168,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 76385, + "commentStart": 0, "end": 0, "name": { - "commentStart": 76385, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -75181,7 +75181,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 76385, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -75193,17 +75193,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 76471, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 76477, + "commentStart": 0, "elements": [ { - "commentStart": 76486, + "commentStart": 0, "end": 0, "raw": "0.39828861790105297", "start": 0, @@ -75215,7 +75215,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 76514, + "commentStart": 0, "end": 0, "raw": "0.8036624129416385", "start": 0, @@ -75236,10 +75236,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 76466, + "commentStart": 0, "end": 0, "name": { - "commentStart": 76466, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -75249,7 +75249,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 76466, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -75261,18 +75261,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 76551, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 76557, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 76559, + "commentStart": 0, "end": 0, "raw": "0.673848991328553", "start": 0, @@ -75283,7 +75283,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 76558, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -75292,7 +75292,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 76579, + "commentStart": 0, "end": 0, "raw": "0.918443329270668", "start": 0, @@ -75303,7 +75303,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 76578, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -75320,10 +75320,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 76546, + "commentStart": 0, "end": 0, "name": { - "commentStart": 76546, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -75333,7 +75333,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 76546, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -75345,18 +75345,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 76609, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 76615, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 76625, + "commentStart": 0, "end": 0, "raw": "0.8599152936179257", "start": 0, @@ -75367,7 +75367,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 76624, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -75376,7 +75376,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 76653, + "commentStart": 0, "end": 0, "raw": "0.9499371022680787", "start": 0, @@ -75387,7 +75387,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 76652, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -75404,10 +75404,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 76604, + "commentStart": 0, "end": 0, "name": { - "commentStart": 76604, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -75417,7 +75417,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 76604, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -75429,17 +75429,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 76690, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 76696, + "commentStart": 0, "elements": [ { - "commentStart": 76705, + "commentStart": 0, "end": 0, "raw": "0.6285243831393765", "start": 0, @@ -75452,7 +75452,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 76733, + "commentStart": 0, "end": 0, "raw": "0.5186557636566307", "start": 0, @@ -75463,7 +75463,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 76732, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -75480,10 +75480,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 76685, + "commentStart": 0, "end": 0, "name": { - "commentStart": 76685, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -75493,7 +75493,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 76685, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -75505,17 +75505,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 76770, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 76776, + "commentStart": 0, "elements": [ { - "commentStart": 76785, + "commentStart": 0, "end": 0, "raw": "0.3222412784832269", "start": 0, @@ -75527,7 +75527,7 @@ description: Result of parsing mike_stress_test.kcl } }, { - "commentStart": 76812, + "commentStart": 0, "end": 0, "raw": "0.24621192679727177", "start": 0, @@ -75548,10 +75548,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 76765, + "commentStart": 0, "end": 0, "name": { - "commentStart": 76765, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -75561,7 +75561,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 76765, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -75573,17 +75573,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 76850, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 76856, + "commentStart": 0, "elements": [ { - "commentStart": 76865, + "commentStart": 0, "end": 0, "raw": "0.19754357911311016", "start": 0, @@ -75596,7 +75596,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 76894, + "commentStart": 0, "end": 0, "raw": "0.7529246632397206", "start": 0, @@ -75607,7 +75607,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 76893, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -75624,10 +75624,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 76845, + "commentStart": 0, "end": 0, "name": { - "commentStart": 76845, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -75637,7 +75637,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 76845, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -75649,18 +75649,18 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 76931, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 76937, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 76947, + "commentStart": 0, "end": 0, "raw": "0.43181570545865555", "start": 0, @@ -75671,7 +75671,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 76946, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -75679,7 +75679,7 @@ description: Result of parsing mike_stress_test.kcl "type": "UnaryExpression" }, { - "commentStart": 76975, + "commentStart": 0, "end": 0, "raw": "0.18945437402201537", "start": 0, @@ -75700,10 +75700,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 76926, + "commentStart": 0, "end": 0, "name": { - "commentStart": 76926, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -75713,7 +75713,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 76926, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -75725,17 +75725,17 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 77013, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 77019, + "commentStart": 0, "elements": [ { - "commentStart": 77028, + "commentStart": 0, "end": 0, "raw": "0.8714511090241797", "start": 0, @@ -75748,7 +75748,7 @@ description: Result of parsing mike_stress_test.kcl }, { "argument": { - "commentStart": 77056, + "commentStart": 0, "end": 0, "raw": "0.7215844196844685", "start": 0, @@ -75759,7 +75759,7 @@ description: Result of parsing mike_stress_test.kcl "suffix": "None" } }, - "commentStart": 77055, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -75776,10 +75776,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 77008, + "commentStart": 0, "end": 0, "name": { - "commentStart": 77008, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -75789,7 +75789,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 77008, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -75799,7 +75799,7 @@ description: Result of parsing mike_stress_test.kcl { "arguments": [ { - "commentStart": 77094, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -75808,10 +75808,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 77088, + "commentStart": 0, "end": 0, "name": { - "commentStart": 77088, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -75821,7 +75821,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 77088, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -75832,14 +75832,14 @@ description: Result of parsing mike_stress_test.kcl { "type": "LabeledArg", "label": { - "commentStart": 77110, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 77119, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -75854,10 +75854,10 @@ description: Result of parsing mike_stress_test.kcl ], "callee": { "abs_path": false, - "commentStart": 77102, + "commentStart": 0, "end": 0, "name": { - "commentStart": 77102, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -75867,7 +75867,7 @@ description: Result of parsing mike_stress_test.kcl "start": 0, "type": "Name" }, - "commentStart": 77102, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -75875,7 +75875,7 @@ description: Result of parsing mike_stress_test.kcl "unlabeled": null } ], - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/mike_stress_test/ops.snap b/rust/kcl-lib/tests/mike_stress_test/ops.snap index 2121fe4e6..87309a4b6 100644 --- a/rust/kcl-lib/tests/mike_stress_test/ops.snap +++ b/rust/kcl-lib/tests/mike_stress_test/ops.snap @@ -5,7 +5,7 @@ description: Operations executed mike_stress_test.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/mike_stress_test/program_memory.snap b/rust/kcl-lib/tests/mike_stress_test/program_memory.snap index cf2776f15..ba25b9013 100644 --- a/rust/kcl-lib/tests/mike_stress_test/program_memory.snap +++ b/rust/kcl-lib/tests/mike_stress_test/program_memory.snap @@ -26050,22 +26050,34 @@ description: Variables in memory after executing mike_stress_test.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/multi_transform/artifact_commands.snap b/rust/kcl-lib/tests/multi_transform/artifact_commands.snap index a42d8a434..532df1bf0 100644 --- a/rust/kcl-lib/tests/multi_transform/artifact_commands.snap +++ b/rust/kcl-lib/tests/multi_transform/artifact_commands.snap @@ -239,7 +239,8 @@ description: Artifact commands multi_transform.kcl "type": "extrude", "target": "[uuid]", "distance": 4.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/multi_transform/ast.snap b/rust/kcl-lib/tests/multi_transform/ast.snap index 64f25a573..838f9c37b 100644 --- a/rust/kcl-lib/tests/multi_transform/ast.snap +++ b/rust/kcl-lib/tests/multi_transform/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing multi_transform.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "transform", "start": 0, @@ -22,17 +22,17 @@ description: Result of parsing multi_transform.kcl "body": [ { "argument": { - "commentStart": 27, + "commentStart": 0, "elements": [ { - "commentStart": 33, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 35, + "commentStart": 0, "end": 0, "key": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -41,13 +41,13 @@ description: Result of parsing multi_transform.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 47, + "commentStart": 0, "elements": [ { - "commentStart": 48, + "commentStart": 0, "end": 0, "left": { - "commentStart": 48, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -61,10 +61,10 @@ description: Result of parsing multi_transform.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 53, + "commentStart": 0, "end": 0, "name": { - "commentStart": 53, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -80,7 +80,7 @@ description: Result of parsing multi_transform.kcl "type": "BinaryExpression" }, { - "commentStart": 56, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -92,7 +92,7 @@ description: Result of parsing multi_transform.kcl } }, { - "commentStart": 59, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -116,14 +116,14 @@ description: Result of parsing multi_transform.kcl "type": "ObjectExpression" }, { - "commentStart": 69, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 71, + "commentStart": 0, "end": 0, "key": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "rotation", "start": 0, @@ -132,14 +132,14 @@ description: Result of parsing multi_transform.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 82, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 84, + "commentStart": 0, "end": 0, "key": { - "commentStart": 84, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, @@ -148,10 +148,10 @@ description: Result of parsing multi_transform.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 92, + "commentStart": 0, "end": 0, "left": { - "commentStart": 92, + "commentStart": 0, "end": 0, "raw": "45", "start": 0, @@ -165,10 +165,10 @@ description: Result of parsing multi_transform.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 97, + "commentStart": 0, "end": 0, "name": { - "commentStart": 97, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -201,24 +201,24 @@ description: Result of parsing multi_transform.kcl "type": "ArrayExpression", "type": "ArrayExpression" }, - "commentStart": 20, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 16, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 12, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 13, + "commentStart": 0, "end": 0, "name": "i", "start": 0, @@ -240,7 +240,7 @@ description: Result of parsing multi_transform.kcl "type": "VariableDeclaration" }, { - "commentStart": 109, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -248,10 +248,10 @@ description: Result of parsing multi_transform.kcl "arguments": [ { "abs_path": false, - "commentStart": 123, + "commentStart": 0, "end": 0, "name": { - "commentStart": 123, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -265,10 +265,10 @@ description: Result of parsing multi_transform.kcl ], "callee": { "abs_path": false, - "commentStart": 109, + "commentStart": 0, "end": 0, "name": { - "commentStart": 109, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -278,7 +278,7 @@ description: Result of parsing multi_transform.kcl "start": 0, "type": "Name" }, - "commentStart": 109, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -287,10 +287,10 @@ description: Result of parsing multi_transform.kcl { "arguments": [ { - "commentStart": 147, + "commentStart": 0, "elements": [ { - "commentStart": 148, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -302,7 +302,7 @@ description: Result of parsing multi_transform.kcl } }, { - "commentStart": 151, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -320,7 +320,7 @@ description: Result of parsing multi_transform.kcl "type": "ArrayExpression" }, { - "commentStart": 155, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -329,10 +329,10 @@ description: Result of parsing multi_transform.kcl ], "callee": { "abs_path": false, - "commentStart": 132, + "commentStart": 0, "end": 0, "name": { - "commentStart": 132, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -342,7 +342,7 @@ description: Result of parsing multi_transform.kcl "start": 0, "type": "Name" }, - "commentStart": 132, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -351,14 +351,14 @@ description: Result of parsing multi_transform.kcl { "arguments": [ { - "commentStart": 171, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 180, + "commentStart": 0, "end": 0, "key": { - "commentStart": 180, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -367,7 +367,7 @@ description: Result of parsing multi_transform.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 189, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -380,10 +380,10 @@ description: Result of parsing multi_transform.kcl } }, { - "commentStart": 200, + "commentStart": 0, "end": 0, "key": { - "commentStart": 200, + "commentStart": 0, "end": 0, "name": "numSides", "start": 0, @@ -392,7 +392,7 @@ description: Result of parsing multi_transform.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 211, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -405,10 +405,10 @@ description: Result of parsing multi_transform.kcl } }, { - "commentStart": 221, + "commentStart": 0, "end": 0, "key": { - "commentStart": 221, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -417,10 +417,10 @@ description: Result of parsing multi_transform.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 230, + "commentStart": 0, "elements": [ { - "commentStart": 231, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -432,7 +432,7 @@ description: Result of parsing multi_transform.kcl } }, { - "commentStart": 234, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -451,10 +451,10 @@ description: Result of parsing multi_transform.kcl } }, { - "commentStart": 245, + "commentStart": 0, "end": 0, "key": { - "commentStart": 245, + "commentStart": 0, "end": 0, "name": "inscribed", "start": 0, @@ -463,7 +463,7 @@ description: Result of parsing multi_transform.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 257, + "commentStart": 0, "end": 0, "raw": "false", "start": 0, @@ -478,7 +478,7 @@ description: Result of parsing multi_transform.kcl "type": "ObjectExpression" }, { - "commentStart": 271, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -487,10 +487,10 @@ description: Result of parsing multi_transform.kcl ], "callee": { "abs_path": false, - "commentStart": 163, + "commentStart": 0, "end": 0, "name": { - "commentStart": 163, + "commentStart": 0, "end": 0, "name": "polygon", "start": 0, @@ -500,7 +500,7 @@ description: Result of parsing multi_transform.kcl "start": 0, "type": "Name" }, - "commentStart": 163, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -511,14 +511,14 @@ description: Result of parsing multi_transform.kcl { "type": "LabeledArg", "label": { - "commentStart": 287, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 296, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -533,10 +533,10 @@ description: Result of parsing multi_transform.kcl ], "callee": { "abs_path": false, - "commentStart": 279, + "commentStart": 0, "end": 0, "name": { - "commentStart": 279, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -546,7 +546,7 @@ description: Result of parsing multi_transform.kcl "start": 0, "type": "Name" }, - "commentStart": 279, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -558,14 +558,14 @@ description: Result of parsing multi_transform.kcl { "type": "LabeledArg", "label": { - "commentStart": 321, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 333, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, @@ -580,7 +580,7 @@ description: Result of parsing multi_transform.kcl { "type": "LabeledArg", "label": { - "commentStart": 336, + "commentStart": 0, "end": 0, "name": "transform", "start": 0, @@ -588,10 +588,10 @@ description: Result of parsing multi_transform.kcl }, "arg": { "abs_path": false, - "commentStart": 348, + "commentStart": 0, "end": 0, "name": { - "commentStart": 348, + "commentStart": 0, "end": 0, "name": "transform", "start": 0, @@ -606,10 +606,10 @@ description: Result of parsing multi_transform.kcl ], "callee": { "abs_path": false, - "commentStart": 304, + "commentStart": 0, "end": 0, "name": { - "commentStart": 304, + "commentStart": 0, "end": 0, "name": "patternTransform", "start": 0, @@ -619,7 +619,7 @@ description: Result of parsing multi_transform.kcl "start": 0, "type": "Name" }, - "commentStart": 304, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -627,7 +627,7 @@ description: Result of parsing multi_transform.kcl "unlabeled": null } ], - "commentStart": 109, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/multi_transform/ops.snap b/rust/kcl-lib/tests/multi_transform/ops.snap index 7757e0ccd..6485f5753 100644 --- a/rust/kcl-lib/tests/multi_transform/ops.snap +++ b/rust/kcl-lib/tests/multi_transform/ops.snap @@ -5,7 +5,7 @@ description: Operations executed multi_transform.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/neg_xz_plane/artifact_commands.snap b/rust/kcl-lib/tests/neg_xz_plane/artifact_commands.snap index f76b9f0d4..7c4beeb27 100644 --- a/rust/kcl-lib/tests/neg_xz_plane/artifact_commands.snap +++ b/rust/kcl-lib/tests/neg_xz_plane/artifact_commands.snap @@ -162,7 +162,8 @@ description: Artifact commands neg_xz_plane.kcl "type": "extrude", "target": "[uuid]", "distance": 12.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/neg_xz_plane/ast.snap b/rust/kcl-lib/tests/neg_xz_plane/ast.snap index 6341dfc6c..a5e958a03 100644 --- a/rust/kcl-lib/tests/neg_xz_plane/ast.snap +++ b/rust/kcl-lib/tests/neg_xz_plane/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing neg_xz_plane.kcl { "arguments": [ { - "commentStart": 24, + "commentStart": 0, "end": 0, "raw": "'-XZ'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing neg_xz_plane.kcl ], "callee": { "abs_path": false, - "commentStart": 10, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing neg_xz_plane.kcl "start": 0, "type": "Name" }, - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing neg_xz_plane.kcl { "arguments": [ { - "commentStart": 51, + "commentStart": 0, "elements": [ { - "commentStart": 52, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing neg_xz_plane.kcl } }, { - "commentStart": 55, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing neg_xz_plane.kcl "type": "ArrayExpression" }, { - "commentStart": 59, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing neg_xz_plane.kcl ], "callee": { "abs_path": false, - "commentStart": 36, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing neg_xz_plane.kcl "start": 0, "type": "Name" }, - "commentStart": 36, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +121,17 @@ description: Result of parsing neg_xz_plane.kcl { "type": "LabeledArg", "label": { - "commentStart": 72, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 86, + "commentStart": 0, "elements": [ { - "commentStart": 87, + "commentStart": 0, "end": 0, "raw": "100", "start": 0, @@ -143,7 +143,7 @@ description: Result of parsing neg_xz_plane.kcl } }, { - "commentStart": 92, + "commentStart": 0, "end": 0, "raw": "100", "start": 0, @@ -164,10 +164,10 @@ description: Result of parsing neg_xz_plane.kcl ], "callee": { "abs_path": false, - "commentStart": 67, + "commentStart": 0, "end": 0, "name": { - "commentStart": 67, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -177,7 +177,7 @@ description: Result of parsing neg_xz_plane.kcl "start": 0, "type": "Name" }, - "commentStart": 67, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -189,17 +189,17 @@ description: Result of parsing neg_xz_plane.kcl { "type": "LabeledArg", "label": { - "commentStart": 108, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 122, + "commentStart": 0, "elements": [ { - "commentStart": 123, + "commentStart": 0, "end": 0, "raw": "100", "start": 0, @@ -211,7 +211,7 @@ description: Result of parsing neg_xz_plane.kcl } }, { - "commentStart": 128, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -232,10 +232,10 @@ description: Result of parsing neg_xz_plane.kcl ], "callee": { "abs_path": false, - "commentStart": 103, + "commentStart": 0, "end": 0, "name": { - "commentStart": 103, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -245,7 +245,7 @@ description: Result of parsing neg_xz_plane.kcl "start": 0, "type": "Name" }, - "commentStart": 103, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -255,7 +255,7 @@ description: Result of parsing neg_xz_plane.kcl { "arguments": [ { - "commentStart": 143, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -264,10 +264,10 @@ description: Result of parsing neg_xz_plane.kcl ], "callee": { "abs_path": false, - "commentStart": 137, + "commentStart": 0, "end": 0, "name": { - "commentStart": 137, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -277,7 +277,7 @@ description: Result of parsing neg_xz_plane.kcl "start": 0, "type": "Name" }, - "commentStart": 137, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -288,17 +288,17 @@ description: Result of parsing neg_xz_plane.kcl { "type": "LabeledArg", "label": { - "commentStart": 159, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 168, + "commentStart": 0, "end": 0, "left": { - "commentStart": 168, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -311,7 +311,7 @@ description: Result of parsing neg_xz_plane.kcl }, "operator": "+", "right": { - "commentStart": 172, + "commentStart": 0, "end": 0, "raw": "7", "start": 0, @@ -330,10 +330,10 @@ description: Result of parsing neg_xz_plane.kcl ], "callee": { "abs_path": false, - "commentStart": 151, + "commentStart": 0, "end": 0, "name": { - "commentStart": 151, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -343,7 +343,7 @@ description: Result of parsing neg_xz_plane.kcl "start": 0, "type": "Name" }, - "commentStart": 151, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -351,7 +351,7 @@ description: Result of parsing neg_xz_plane.kcl "unlabeled": null } ], - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/neg_xz_plane/ops.snap b/rust/kcl-lib/tests/neg_xz_plane/ops.snap index 79dcc98a1..c1baa4c64 100644 --- a/rust/kcl-lib/tests/neg_xz_plane/ops.snap +++ b/rust/kcl-lib/tests/neg_xz_plane/ops.snap @@ -5,7 +5,7 @@ description: Operations executed neg_xz_plane.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "-XZ" diff --git a/rust/kcl-lib/tests/neg_xz_plane/program_memory.snap b/rust/kcl-lib/tests/neg_xz_plane/program_memory.snap index 92b3aed91..4369f0d8a 100644 --- a/rust/kcl-lib/tests/neg_xz_plane/program_memory.snap +++ b/rust/kcl-lib/tests/neg_xz_plane/program_memory.snap @@ -102,22 +102,34 @@ description: Variables in memory after executing neg_xz_plane.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/non_string_key_of_object/ast.snap b/rust/kcl-lib/tests/non_string_key_of_object/ast.snap index b0755cfc0..47171c1d3 100644 --- a/rust/kcl-lib/tests/non_string_key_of_object/ast.snap +++ b/rust/kcl-lib/tests/non_string_key_of_object/ast.snap @@ -18,14 +18,14 @@ description: Result of parsing non_string_key_of_object.kcl "type": "Identifier" }, "init": { - "commentStart": 6, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 8, + "commentStart": 0, "end": 0, "key": { - "commentStart": 8, + "commentStart": 0, "end": 0, "name": "key", "start": 0, @@ -34,7 +34,7 @@ description: Result of parsing non_string_key_of_object.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 14, + "commentStart": 0, "end": 0, "raw": "123", "start": 0, @@ -61,23 +61,23 @@ description: Result of parsing non_string_key_of_object.kcl "type": "VariableDeclaration" }, { - "commentStart": 20, + "commentStart": 0, "declaration": { - "commentStart": 20, + "commentStart": 0, "end": 0, "id": { - "commentStart": 20, + "commentStart": 0, "end": 0, "name": "num", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 26, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 26, + "commentStart": 0, "end": 0, "name": "obj", "start": 0, @@ -85,7 +85,7 @@ description: Result of parsing non_string_key_of_object.kcl "type": "Identifier" }, "property": { - "commentStart": 30, + "commentStart": 0, "end": 0, "raw": "3", "start": 0, diff --git a/rust/kcl-lib/tests/object_prop_not_found/ast.snap b/rust/kcl-lib/tests/object_prop_not_found/ast.snap index 2c4b887e8..50f9d4e59 100644 --- a/rust/kcl-lib/tests/object_prop_not_found/ast.snap +++ b/rust/kcl-lib/tests/object_prop_not_found/ast.snap @@ -18,7 +18,7 @@ description: Result of parsing object_prop_not_found.kcl "type": "Identifier" }, "init": { - "commentStart": 6, + "commentStart": 0, "end": 0, "properties": [], "start": 0, @@ -35,23 +35,23 @@ description: Result of parsing object_prop_not_found.kcl "type": "VariableDeclaration" }, { - "commentStart": 11, + "commentStart": 0, "declaration": { - "commentStart": 11, + "commentStart": 0, "end": 0, "id": { - "commentStart": 11, + "commentStart": 0, "end": 0, "name": "k", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 15, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 15, + "commentStart": 0, "end": 0, "name": "obj", "start": 0, @@ -59,7 +59,7 @@ description: Result of parsing object_prop_not_found.kcl "type": "Identifier" }, "property": { - "commentStart": 19, + "commentStart": 0, "end": 0, "raw": "\"age\"", "start": 0, diff --git a/rust/kcl-lib/tests/out_of_band_sketches/artifact_commands.snap b/rust/kcl-lib/tests/out_of_band_sketches/artifact_commands.snap index f73f2f84a..20a0de845 100644 --- a/rust/kcl-lib/tests/out_of_band_sketches/artifact_commands.snap +++ b/rust/kcl-lib/tests/out_of_band_sketches/artifact_commands.snap @@ -306,7 +306,8 @@ description: Artifact commands out_of_band_sketches.kcl "type": "extrude", "target": "[uuid]", "distance": 10.14, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -436,7 +437,8 @@ description: Artifact commands out_of_band_sketches.kcl "type": "extrude", "target": "[uuid]", "distance": 10.14, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/out_of_band_sketches/ast.snap b/rust/kcl-lib/tests/out_of_band_sketches/ast.snap index 40f343ac7..9a12d38b1 100644 --- a/rust/kcl-lib/tests/out_of_band_sketches/ast.snap +++ b/rust/kcl-lib/tests/out_of_band_sketches/ast.snap @@ -20,7 +20,7 @@ description: Result of parsing out_of_band_sketches.kcl "init": { "arguments": [ { - "commentStart": 26, + "commentStart": 0, "end": 0, "raw": "'XZ'", "start": 0, @@ -31,10 +31,10 @@ description: Result of parsing out_of_band_sketches.kcl ], "callee": { "abs_path": false, - "commentStart": 12, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -44,7 +44,7 @@ description: Result of parsing out_of_band_sketches.kcl "start": 0, "type": "Name" }, - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -60,12 +60,12 @@ description: Result of parsing out_of_band_sketches.kcl "type": "VariableDeclaration" }, { - "commentStart": 32, + "commentStart": 0, "declaration": { - "commentStart": 32, + "commentStart": 0, "end": 0, "id": { - "commentStart": 32, + "commentStart": 0, "end": 0, "name": "profile001", "start": 0, @@ -76,10 +76,10 @@ description: Result of parsing out_of_band_sketches.kcl { "arguments": [ { - "commentStart": 60, + "commentStart": 0, "elements": [ { - "commentStart": 61, + "commentStart": 0, "end": 0, "raw": "27.67", "start": 0, @@ -91,7 +91,7 @@ description: Result of parsing out_of_band_sketches.kcl } }, { - "commentStart": 68, + "commentStart": 0, "end": 0, "raw": "239.34", "start": 0, @@ -110,10 +110,10 @@ description: Result of parsing out_of_band_sketches.kcl }, { "abs_path": false, - "commentStart": 77, + "commentStart": 0, "end": 0, "name": { - "commentStart": 77, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -127,10 +127,10 @@ description: Result of parsing out_of_band_sketches.kcl ], "callee": { "abs_path": false, - "commentStart": 45, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -140,7 +140,7 @@ description: Result of parsing out_of_band_sketches.kcl "start": 0, "type": "Name" }, - "commentStart": 45, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -151,17 +151,17 @@ description: Result of parsing out_of_band_sketches.kcl { "type": "LabeledArg", "label": { - "commentStart": 169, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 175, + "commentStart": 0, "elements": [ { - "commentStart": 176, + "commentStart": 0, "end": 0, "raw": "414.61", "start": 0, @@ -173,7 +173,7 @@ description: Result of parsing out_of_band_sketches.kcl } }, { - "commentStart": 184, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -194,10 +194,10 @@ description: Result of parsing out_of_band_sketches.kcl ], "callee": { "abs_path": false, - "commentStart": 164, + "commentStart": 0, "end": 0, "name": { - "commentStart": 164, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -207,7 +207,7 @@ description: Result of parsing out_of_band_sketches.kcl "start": 0, "type": "Name" }, - "commentStart": 164, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -219,17 +219,17 @@ description: Result of parsing out_of_band_sketches.kcl { "type": "LabeledArg", "label": { - "commentStart": 213, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 219, + "commentStart": 0, "elements": [ { - "commentStart": 220, + "commentStart": 0, "end": 0, "raw": "33.98", "start": 0, @@ -242,7 +242,7 @@ description: Result of parsing out_of_band_sketches.kcl }, { "argument": { - "commentStart": 228, + "commentStart": 0, "end": 0, "raw": "389.36", "start": 0, @@ -253,7 +253,7 @@ description: Result of parsing out_of_band_sketches.kcl "suffix": "None" } }, - "commentStart": 227, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -270,10 +270,10 @@ description: Result of parsing out_of_band_sketches.kcl ], "callee": { "abs_path": false, - "commentStart": 208, + "commentStart": 0, "end": 0, "name": { - "commentStart": 208, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -283,7 +283,7 @@ description: Result of parsing out_of_band_sketches.kcl "start": 0, "type": "Name" }, - "commentStart": 208, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -291,13 +291,13 @@ description: Result of parsing out_of_band_sketches.kcl "unlabeled": null } ], - "commentStart": 45, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "0": [ { - "commentStart": 90, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -310,7 +310,7 @@ description: Result of parsing out_of_band_sketches.kcl ], "1": [ { - "commentStart": 187, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -323,7 +323,7 @@ description: Result of parsing out_of_band_sketches.kcl ], "2": [ { - "commentStart": 236, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -351,12 +351,12 @@ description: Result of parsing out_of_band_sketches.kcl "type": "VariableDeclaration" }, { - "commentStart": 251, + "commentStart": 0, "declaration": { - "commentStart": 253, + "commentStart": 0, "end": 0, "id": { - "commentStart": 253, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -365,7 +365,7 @@ description: Result of parsing out_of_band_sketches.kcl "init": { "arguments": [ { - "commentStart": 279, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -376,10 +376,10 @@ description: Result of parsing out_of_band_sketches.kcl ], "callee": { "abs_path": false, - "commentStart": 265, + "commentStart": 0, "end": 0, "name": { - "commentStart": 265, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -389,7 +389,7 @@ description: Result of parsing out_of_band_sketches.kcl "start": 0, "type": "Name" }, - "commentStart": 265, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -405,12 +405,12 @@ description: Result of parsing out_of_band_sketches.kcl "type": "VariableDeclaration" }, { - "commentStart": 285, + "commentStart": 0, "declaration": { - "commentStart": 285, + "commentStart": 0, "end": 0, "id": { - "commentStart": 285, + "commentStart": 0, "end": 0, "name": "profile002", "start": 0, @@ -421,10 +421,10 @@ description: Result of parsing out_of_band_sketches.kcl { "arguments": [ { - "commentStart": 313, + "commentStart": 0, "elements": [ { - "commentStart": 314, + "commentStart": 0, "end": 0, "raw": "67.04", "start": 0, @@ -437,7 +437,7 @@ description: Result of parsing out_of_band_sketches.kcl }, { "argument": { - "commentStart": 322, + "commentStart": 0, "end": 0, "raw": "63.5", "start": 0, @@ -448,7 +448,7 @@ description: Result of parsing out_of_band_sketches.kcl "suffix": "None" } }, - "commentStart": 321, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -463,10 +463,10 @@ description: Result of parsing out_of_band_sketches.kcl }, { "abs_path": false, - "commentStart": 329, + "commentStart": 0, "end": 0, "name": { - "commentStart": 329, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -480,10 +480,10 @@ description: Result of parsing out_of_band_sketches.kcl ], "callee": { "abs_path": false, - "commentStart": 298, + "commentStart": 0, "end": 0, "name": { - "commentStart": 298, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -493,7 +493,7 @@ description: Result of parsing out_of_band_sketches.kcl "start": 0, "type": "Name" }, - "commentStart": 298, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -504,17 +504,17 @@ description: Result of parsing out_of_band_sketches.kcl { "type": "LabeledArg", "label": { - "commentStart": 421, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 427, + "commentStart": 0, "elements": [ { - "commentStart": 428, + "commentStart": 0, "end": 0, "raw": "282.37", "start": 0, @@ -526,7 +526,7 @@ description: Result of parsing out_of_band_sketches.kcl } }, { - "commentStart": 436, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -547,10 +547,10 @@ description: Result of parsing out_of_band_sketches.kcl ], "callee": { "abs_path": false, - "commentStart": 416, + "commentStart": 0, "end": 0, "name": { - "commentStart": 416, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -560,7 +560,7 @@ description: Result of parsing out_of_band_sketches.kcl "start": 0, "type": "Name" }, - "commentStart": 416, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -572,18 +572,18 @@ description: Result of parsing out_of_band_sketches.kcl { "type": "LabeledArg", "label": { - "commentStart": 465, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 471, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 473, + "commentStart": 0, "end": 0, "raw": "12.77", "start": 0, @@ -594,7 +594,7 @@ description: Result of parsing out_of_band_sketches.kcl "suffix": "None" } }, - "commentStart": 472, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -603,7 +603,7 @@ description: Result of parsing out_of_band_sketches.kcl }, { "argument": { - "commentStart": 481, + "commentStart": 0, "end": 0, "raw": "178.07", "start": 0, @@ -614,7 +614,7 @@ description: Result of parsing out_of_band_sketches.kcl "suffix": "None" } }, - "commentStart": 480, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -631,10 +631,10 @@ description: Result of parsing out_of_band_sketches.kcl ], "callee": { "abs_path": false, - "commentStart": 460, + "commentStart": 0, "end": 0, "name": { - "commentStart": 460, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -644,7 +644,7 @@ description: Result of parsing out_of_band_sketches.kcl "start": 0, "type": "Name" }, - "commentStart": 460, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -652,13 +652,13 @@ description: Result of parsing out_of_band_sketches.kcl "unlabeled": null } ], - "commentStart": 298, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "0": [ { - "commentStart": 342, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -671,7 +671,7 @@ description: Result of parsing out_of_band_sketches.kcl ], "1": [ { - "commentStart": 439, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -684,7 +684,7 @@ description: Result of parsing out_of_band_sketches.kcl ], "2": [ { - "commentStart": 489, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -712,12 +712,12 @@ description: Result of parsing out_of_band_sketches.kcl "type": "VariableDeclaration" }, { - "commentStart": 504, + "commentStart": 0, "declaration": { - "commentStart": 506, + "commentStart": 0, "end": 0, "id": { - "commentStart": 506, + "commentStart": 0, "end": 0, "name": "profile001extended", "start": 0, @@ -727,10 +727,10 @@ description: Result of parsing out_of_band_sketches.kcl "body": [ { "abs_path": false, - "commentStart": 527, + "commentStart": 0, "end": 0, "name": { - "commentStart": 527, + "commentStart": 0, "end": 0, "name": "profile001", "start": 0, @@ -746,18 +746,18 @@ description: Result of parsing out_of_band_sketches.kcl { "type": "LabeledArg", "label": { - "commentStart": 548, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 554, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 556, + "commentStart": 0, "end": 0, "raw": "455.38", "start": 0, @@ -768,7 +768,7 @@ description: Result of parsing out_of_band_sketches.kcl "suffix": "None" } }, - "commentStart": 555, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -776,7 +776,7 @@ description: Result of parsing out_of_band_sketches.kcl "type": "UnaryExpression" }, { - "commentStart": 564, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -797,10 +797,10 @@ description: Result of parsing out_of_band_sketches.kcl ], "callee": { "abs_path": false, - "commentStart": 543, + "commentStart": 0, "end": 0, "name": { - "commentStart": 543, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -810,7 +810,7 @@ description: Result of parsing out_of_band_sketches.kcl "start": 0, "type": "Name" }, - "commentStart": 543, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -821,10 +821,10 @@ description: Result of parsing out_of_band_sketches.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 588, + "commentStart": 0, "end": 0, "name": { - "commentStart": 588, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -834,20 +834,20 @@ description: Result of parsing out_of_band_sketches.kcl "start": 0, "type": "Name" }, - "commentStart": 588, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 527, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 567, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -860,7 +860,7 @@ description: Result of parsing out_of_band_sketches.kcl ], "2": [ { - "commentStart": 595, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -888,12 +888,12 @@ description: Result of parsing out_of_band_sketches.kcl "type": "VariableDeclaration" }, { - "commentStart": 604, + "commentStart": 0, "declaration": { - "commentStart": 606, + "commentStart": 0, "end": 0, "id": { - "commentStart": 606, + "commentStart": 0, "end": 0, "name": "profile002extended", "start": 0, @@ -903,10 +903,10 @@ description: Result of parsing out_of_band_sketches.kcl "body": [ { "abs_path": false, - "commentStart": 627, + "commentStart": 0, "end": 0, "name": { - "commentStart": 627, + "commentStart": 0, "end": 0, "name": "profile002", "start": 0, @@ -922,18 +922,18 @@ description: Result of parsing out_of_band_sketches.kcl { "type": "LabeledArg", "label": { - "commentStart": 648, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 654, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 656, + "commentStart": 0, "end": 0, "raw": "299.39", "start": 0, @@ -944,7 +944,7 @@ description: Result of parsing out_of_band_sketches.kcl "suffix": "None" } }, - "commentStart": 655, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -952,7 +952,7 @@ description: Result of parsing out_of_band_sketches.kcl "type": "UnaryExpression" }, { - "commentStart": 664, + "commentStart": 0, "end": 0, "raw": "21.28", "start": 0, @@ -973,10 +973,10 @@ description: Result of parsing out_of_band_sketches.kcl ], "callee": { "abs_path": false, - "commentStart": 643, + "commentStart": 0, "end": 0, "name": { - "commentStart": 643, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -986,7 +986,7 @@ description: Result of parsing out_of_band_sketches.kcl "start": 0, "type": "Name" }, - "commentStart": 643, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -997,10 +997,10 @@ description: Result of parsing out_of_band_sketches.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 692, + "commentStart": 0, "end": 0, "name": { - "commentStart": 692, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1010,20 +1010,20 @@ description: Result of parsing out_of_band_sketches.kcl "start": 0, "type": "Name" }, - "commentStart": 692, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 627, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 671, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1036,7 +1036,7 @@ description: Result of parsing out_of_band_sketches.kcl ], "2": [ { - "commentStart": 699, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1064,21 +1064,21 @@ description: Result of parsing out_of_band_sketches.kcl "type": "VariableDeclaration" }, { - "commentStart": 708, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 760, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 769, + "commentStart": 0, "end": 0, "raw": "10.14", "start": 0, @@ -1093,10 +1093,10 @@ description: Result of parsing out_of_band_sketches.kcl ], "callee": { "abs_path": false, - "commentStart": 710, + "commentStart": 0, "end": 0, "name": { - "commentStart": 710, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1106,20 +1106,20 @@ description: Result of parsing out_of_band_sketches.kcl "start": 0, "type": "Name" }, - "commentStart": 710, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 718, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 719, + "commentStart": 0, "end": 0, "name": { - "commentStart": 719, + "commentStart": 0, "end": 0, "name": "profile001extended", "start": 0, @@ -1132,10 +1132,10 @@ description: Result of parsing out_of_band_sketches.kcl }, { "abs_path": false, - "commentStart": 739, + "commentStart": 0, "end": 0, "name": { - "commentStart": 739, + "commentStart": 0, "end": 0, "name": "profile002extended", "start": 0, @@ -1164,7 +1164,7 @@ description: Result of parsing out_of_band_sketches.kcl "nonCodeNodes": { "1": [ { - "commentStart": 251, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1175,7 +1175,7 @@ description: Result of parsing out_of_band_sketches.kcl ], "3": [ { - "commentStart": 504, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1186,7 +1186,7 @@ description: Result of parsing out_of_band_sketches.kcl ], "4": [ { - "commentStart": 604, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1197,7 +1197,7 @@ description: Result of parsing out_of_band_sketches.kcl ], "5": [ { - "commentStart": 708, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1208,7 +1208,7 @@ description: Result of parsing out_of_band_sketches.kcl ], "6": [ { - "commentStart": 775, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/out_of_band_sketches/ops.snap b/rust/kcl-lib/tests/out_of_band_sketches/ops.snap index e314bbd5d..748f99646 100644 --- a/rust/kcl-lib/tests/out_of_band_sketches/ops.snap +++ b/rust/kcl-lib/tests/out_of_band_sketches/ops.snap @@ -5,7 +5,7 @@ description: Operations executed out_of_band_sketches.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XZ" @@ -20,7 +20,7 @@ description: Operations executed out_of_band_sketches.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/out_of_band_sketches/program_memory.snap b/rust/kcl-lib/tests/out_of_band_sketches/program_memory.snap index 7bfaf0e6c..b63b95ffb 100644 --- a/rust/kcl-lib/tests/out_of_band_sketches/program_memory.snap +++ b/rust/kcl-lib/tests/out_of_band_sketches/program_memory.snap @@ -56,22 +56,34 @@ description: Variables in memory after executing out_of_band_sketches.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -193,22 +205,34 @@ description: Variables in memory after executing out_of_band_sketches.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -292,22 +316,34 @@ description: Variables in memory after executing out_of_band_sketches.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -429,22 +465,34 @@ description: Variables in memory after executing out_of_band_sketches.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -484,22 +532,34 @@ description: Variables in memory after executing out_of_band_sketches.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -515,22 +575,34 @@ description: Variables in memory after executing out_of_band_sketches.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_appearance8.png b/rust/kcl-lib/tests/outputs/serial_test_example_appearance8.png index 175cd8c1e..e323ea65d 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_appearance8.png and b/rust/kcl-lib/tests/outputs/serial_test_example_appearance8.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_extrude2.png b/rust/kcl-lib/tests/outputs/serial_test_example_extrude2.png new file mode 100644 index 000000000..eb64eac64 Binary files /dev/null and b/rust/kcl-lib/tests/outputs/serial_test_example_extrude2.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_extrude3.png b/rust/kcl-lib/tests/outputs/serial_test_example_extrude3.png new file mode 100644 index 000000000..bcbfba784 Binary files /dev/null and b/rust/kcl-lib/tests/outputs/serial_test_example_extrude3.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_cm0.png b/rust/kcl-lib/tests/outputs/serial_test_example_from_cm0.png similarity index 100% rename from rust/kcl-lib/tests/outputs/serial_test_example_cm0.png rename to rust/kcl-lib/tests/outputs/serial_test_example_from_cm0.png diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_ft0.png b/rust/kcl-lib/tests/outputs/serial_test_example_from_ft0.png similarity index 100% rename from rust/kcl-lib/tests/outputs/serial_test_example_ft0.png rename to rust/kcl-lib/tests/outputs/serial_test_example_from_ft0.png diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_inch0.png b/rust/kcl-lib/tests/outputs/serial_test_example_from_inches0.png similarity index 100% rename from rust/kcl-lib/tests/outputs/serial_test_example_inch0.png rename to rust/kcl-lib/tests/outputs/serial_test_example_from_inches0.png diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_m0.png b/rust/kcl-lib/tests/outputs/serial_test_example_from_m0.png similarity index 100% rename from rust/kcl-lib/tests/outputs/serial_test_example_m0.png rename to rust/kcl-lib/tests/outputs/serial_test_example_from_m0.png diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_mm0.png b/rust/kcl-lib/tests/outputs/serial_test_example_from_mm0.png similarity index 100% rename from rust/kcl-lib/tests/outputs/serial_test_example_mm0.png rename to rust/kcl-lib/tests/outputs/serial_test_example_from_mm0.png diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_yd0.png b/rust/kcl-lib/tests/outputs/serial_test_example_from_yd0.png similarity index 100% rename from rust/kcl-lib/tests/outputs/serial_test_example_yd0.png rename to rust/kcl-lib/tests/outputs/serial_test_example_from_yd0.png diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_intersect0.png b/rust/kcl-lib/tests/outputs/serial_test_example_intersect0.png index d565d034a..21d9ba09d 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_intersect0.png and b/rust/kcl-lib/tests/outputs/serial_test_example_intersect0.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_intersect1.png b/rust/kcl-lib/tests/outputs/serial_test_example_intersect1.png index d565d034a..21d9ba09d 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_intersect1.png and b/rust/kcl-lib/tests/outputs/serial_test_example_intersect1.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_involute_circular0.png b/rust/kcl-lib/tests/outputs/serial_test_example_involute_circular0.png new file mode 100644 index 000000000..67872408b Binary files /dev/null and b/rust/kcl-lib/tests/outputs/serial_test_example_involute_circular0.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_rotate0.png b/rust/kcl-lib/tests/outputs/serial_test_example_rotate0.png index 10e799951..93e522f86 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_rotate0.png and b/rust/kcl-lib/tests/outputs/serial_test_example_rotate0.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_rotate1.png b/rust/kcl-lib/tests/outputs/serial_test_example_rotate1.png index 64c4474e5..c73566d81 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_rotate1.png and b/rust/kcl-lib/tests/outputs/serial_test_example_rotate1.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_rotate2.png b/rust/kcl-lib/tests/outputs/serial_test_example_rotate2.png index de53f57c7..811a782bb 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_rotate2.png and b/rust/kcl-lib/tests/outputs/serial_test_example_rotate2.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_rotate4.png b/rust/kcl-lib/tests/outputs/serial_test_example_rotate4.png index 55bf29097..f6cb609dd 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_rotate4.png and b/rust/kcl-lib/tests/outputs/serial_test_example_rotate4.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_scale0.png b/rust/kcl-lib/tests/outputs/serial_test_example_scale0.png index 08351c797..8aba022e5 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_scale0.png and b/rust/kcl-lib/tests/outputs/serial_test_example_scale0.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_scale2.png b/rust/kcl-lib/tests/outputs/serial_test_example_scale2.png index 949760597..bc39d57ac 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_scale2.png and b/rust/kcl-lib/tests/outputs/serial_test_example_scale2.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_polar0.png b/rust/kcl-lib/tests/outputs/serial_test_example_std-math-polar0.png similarity index 100% rename from rust/kcl-lib/tests/outputs/serial_test_example_polar0.png rename to rust/kcl-lib/tests/outputs/serial_test_example_std-math-polar0.png diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-sin0.png b/rust/kcl-lib/tests/outputs/serial_test_example_std-math-sin0.png index 61d468c2f..cc39c2753 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_std-math-sin0.png and b/rust/kcl-lib/tests/outputs/serial_test_example_std-math-sin0.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve11.png b/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve11.png new file mode 100644 index 000000000..595857be0 Binary files /dev/null and b/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve11.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve12.png b/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve12.png new file mode 100644 index 000000000..c4868e420 Binary files /dev/null and b/rust/kcl-lib/tests/outputs/serial_test_example_std-revolve12.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_subtract0.png b/rust/kcl-lib/tests/outputs/serial_test_example_subtract0.png index 368339b2d..2b61de7bd 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_subtract0.png and b/rust/kcl-lib/tests/outputs/serial_test_example_subtract0.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_subtract1.png b/rust/kcl-lib/tests/outputs/serial_test_example_subtract1.png index 368339b2d..2b61de7bd 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_subtract1.png and b/rust/kcl-lib/tests/outputs/serial_test_example_subtract1.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_sweep0.png b/rust/kcl-lib/tests/outputs/serial_test_example_sweep0.png index 743c6a996..d29e3924b 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_sweep0.png and b/rust/kcl-lib/tests/outputs/serial_test_example_sweep0.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_sweep2.png b/rust/kcl-lib/tests/outputs/serial_test_example_sweep2.png index 744b826f1..fc7c9df14 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_sweep2.png and b/rust/kcl-lib/tests/outputs/serial_test_example_sweep2.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_sweep3.png b/rust/kcl-lib/tests/outputs/serial_test_example_sweep3.png index 193a5d01b..689126ca3 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_sweep3.png and b/rust/kcl-lib/tests/outputs/serial_test_example_sweep3.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_tangential_arc0.png b/rust/kcl-lib/tests/outputs/serial_test_example_tangential_arc0.png index f569cb166..f73ecd755 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_tangential_arc0.png and b/rust/kcl-lib/tests/outputs/serial_test_example_tangential_arc0.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_tangential_arc_to0.png b/rust/kcl-lib/tests/outputs/serial_test_example_tangential_arc1.png similarity index 100% rename from rust/kcl-lib/tests/outputs/serial_test_example_tangential_arc_to0.png rename to rust/kcl-lib/tests/outputs/serial_test_example_tangential_arc1.png diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_tangential_arc2.png b/rust/kcl-lib/tests/outputs/serial_test_example_tangential_arc2.png new file mode 100644 index 000000000..f569cb166 Binary files /dev/null and b/rust/kcl-lib/tests/outputs/serial_test_example_tangential_arc2.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_tangential_arc_to_relative0.png b/rust/kcl-lib/tests/outputs/serial_test_example_tangential_arc_to_relative0.png deleted file mode 100644 index f73ecd755..000000000 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_tangential_arc_to_relative0.png and /dev/null differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_translate0.png b/rust/kcl-lib/tests/outputs/serial_test_example_translate0.png index 9d0cf9670..c144dd386 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_translate0.png and b/rust/kcl-lib/tests/outputs/serial_test_example_translate0.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_translate2.png b/rust/kcl-lib/tests/outputs/serial_test_example_translate2.png index 6bad1ffa4..4e9c75522 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_translate2.png and b/rust/kcl-lib/tests/outputs/serial_test_example_translate2.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_union0.png b/rust/kcl-lib/tests/outputs/serial_test_example_union0.png index 8ba68ea02..8e4e7e512 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_union0.png and b/rust/kcl-lib/tests/outputs/serial_test_example_union0.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_union1.png b/rust/kcl-lib/tests/outputs/serial_test_example_union1.png index 8ba68ea02..8e4e7e512 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_union1.png and b/rust/kcl-lib/tests/outputs/serial_test_example_union1.png differ diff --git a/rust/kcl-lib/tests/outputs/serial_test_example_union2.png b/rust/kcl-lib/tests/outputs/serial_test_example_union2.png index 8ba68ea02..8e4e7e512 100644 Binary files a/rust/kcl-lib/tests/outputs/serial_test_example_union2.png and b/rust/kcl-lib/tests/outputs/serial_test_example_union2.png differ diff --git a/rust/kcl-lib/tests/parametric/artifact_commands.snap b/rust/kcl-lib/tests/parametric/artifact_commands.snap index 964e9c8ad..7704a8f82 100644 --- a/rust/kcl-lib/tests/parametric/artifact_commands.snap +++ b/rust/kcl-lib/tests/parametric/artifact_commands.snap @@ -213,7 +213,8 @@ description: Artifact commands parametric.kcl "type": "extrude", "target": "[uuid]", "distance": 9.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/parametric/ast.snap b/rust/kcl-lib/tests/parametric/ast.snap index 256df57d4..2cda057c8 100644 --- a/rust/kcl-lib/tests/parametric/ast.snap +++ b/rust/kcl-lib/tests/parametric/ast.snap @@ -18,7 +18,7 @@ description: Result of parsing parametric.kcl "type": "Identifier" }, "init": { - "commentStart": 13, + "commentStart": 0, "end": 0, "raw": "35000", "start": 0, @@ -39,19 +39,19 @@ description: Result of parsing parametric.kcl "type": "VariableDeclaration" }, { - "commentStart": 18, + "commentStart": 0, "declaration": { - "commentStart": 26, + "commentStart": 0, "end": 0, "id": { - "commentStart": 26, + "commentStart": 0, "end": 0, "name": "width", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 34, + "commentStart": 0, "end": 0, "raw": "9", "start": 0, @@ -72,19 +72,19 @@ description: Result of parsing parametric.kcl "type": "VariableDeclaration" }, { - "commentStart": 35, + "commentStart": 0, "declaration": { - "commentStart": 44, + "commentStart": 0, "end": 0, "id": { - "commentStart": 44, + "commentStart": 0, "end": 0, "name": "p", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 48, + "commentStart": 0, "end": 0, "raw": "150", "start": 0, @@ -105,19 +105,19 @@ description: Result of parsing parametric.kcl "type": "VariableDeclaration" }, { - "commentStart": 51, + "commentStart": 0, "declaration": { - "commentStart": 76, + "commentStart": 0, "end": 0, "id": { - "commentStart": 76, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 87, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -138,19 +138,19 @@ description: Result of parsing parametric.kcl "type": "VariableDeclaration" }, { - "commentStart": 88, + "commentStart": 0, "declaration": { - "commentStart": 99, + "commentStart": 0, "end": 0, "id": { - "commentStart": 99, + "commentStart": 0, "end": 0, "name": "FOS", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 105, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -171,19 +171,19 @@ description: Result of parsing parametric.kcl "type": "VariableDeclaration" }, { - "commentStart": 106, + "commentStart": 0, "declaration": { - "commentStart": 108, + "commentStart": 0, "end": 0, "id": { - "commentStart": 108, + "commentStart": 0, "end": 0, "name": "leg1", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 115, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -204,19 +204,19 @@ description: Result of parsing parametric.kcl "type": "VariableDeclaration" }, { - "commentStart": 116, + "commentStart": 0, "declaration": { - "commentStart": 127, + "commentStart": 0, "end": 0, "id": { - "commentStart": 127, + "commentStart": 0, "end": 0, "name": "leg2", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 134, + "commentStart": 0, "end": 0, "raw": "8", "start": 0, @@ -237,12 +237,12 @@ description: Result of parsing parametric.kcl "type": "VariableDeclaration" }, { - "commentStart": 135, + "commentStart": 0, "declaration": { - "commentStart": 146, + "commentStart": 0, "end": 0, "id": { - "commentStart": 146, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -251,26 +251,26 @@ description: Result of parsing parametric.kcl "init": { "arguments": [ { - "commentStart": 163, + "commentStart": 0, "end": 0, "left": { - "commentStart": 163, + "commentStart": 0, "end": 0, "left": { - "commentStart": 163, + "commentStart": 0, "end": 0, "left": { - "commentStart": 163, + "commentStart": 0, "end": 0, "left": { - "commentStart": 163, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 163, + "commentStart": 0, "end": 0, "name": { - "commentStart": 163, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -284,10 +284,10 @@ description: Result of parsing parametric.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 174, + "commentStart": 0, "end": 0, "name": { - "commentStart": 174, + "commentStart": 0, "end": 0, "name": "p", "start": 0, @@ -305,10 +305,10 @@ description: Result of parsing parametric.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 178, + "commentStart": 0, "end": 0, "name": { - "commentStart": 178, + "commentStart": 0, "end": 0, "name": "FOS", "start": 0, @@ -325,7 +325,7 @@ description: Result of parsing parametric.kcl }, "operator": "*", "right": { - "commentStart": 184, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -343,10 +343,10 @@ description: Result of parsing parametric.kcl "operator": "/", "right": { "abs_path": false, - "commentStart": 188, + "commentStart": 0, "end": 0, "name": { - "commentStart": 188, + "commentStart": 0, "end": 0, "name": "sigmaAllow", "start": 0, @@ -364,10 +364,10 @@ description: Result of parsing parametric.kcl "operator": "/", "right": { "abs_path": false, - "commentStart": 201, + "commentStart": 0, "end": 0, "name": { - "commentStart": 201, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -385,10 +385,10 @@ description: Result of parsing parametric.kcl ], "callee": { "abs_path": false, - "commentStart": 158, + "commentStart": 0, "end": 0, "name": { - "commentStart": 158, + "commentStart": 0, "end": 0, "name": "sqrt", "start": 0, @@ -398,7 +398,7 @@ description: Result of parsing parametric.kcl "start": 0, "type": "Name" }, - "commentStart": 158, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -414,12 +414,12 @@ description: Result of parsing parametric.kcl "type": "VariableDeclaration" }, { - "commentStart": 207, + "commentStart": 0, "declaration": { - "commentStart": 218, + "commentStart": 0, "end": 0, "id": { - "commentStart": 218, + "commentStart": 0, "end": 0, "name": "bracket", "start": 0, @@ -430,7 +430,7 @@ description: Result of parsing parametric.kcl { "arguments": [ { - "commentStart": 242, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -441,10 +441,10 @@ description: Result of parsing parametric.kcl ], "callee": { "abs_path": false, - "commentStart": 228, + "commentStart": 0, "end": 0, "name": { - "commentStart": 228, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -454,7 +454,7 @@ description: Result of parsing parametric.kcl "start": 0, "type": "Name" }, - "commentStart": 228, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -463,10 +463,10 @@ description: Result of parsing parametric.kcl { "arguments": [ { - "commentStart": 268, + "commentStart": 0, "elements": [ { - "commentStart": 269, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -478,7 +478,7 @@ description: Result of parsing parametric.kcl } }, { - "commentStart": 272, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -496,7 +496,7 @@ description: Result of parsing parametric.kcl "type": "ArrayExpression" }, { - "commentStart": 276, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -505,10 +505,10 @@ description: Result of parsing parametric.kcl ], "callee": { "abs_path": false, - "commentStart": 253, + "commentStart": 0, "end": 0, "name": { - "commentStart": 253, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -518,7 +518,7 @@ description: Result of parsing parametric.kcl "start": 0, "type": "Name" }, - "commentStart": 253, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -529,17 +529,17 @@ description: Result of parsing parametric.kcl { "type": "LabeledArg", "label": { - "commentStart": 289, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 295, + "commentStart": 0, "elements": [ { - "commentStart": 296, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -552,10 +552,10 @@ description: Result of parsing parametric.kcl }, { "abs_path": false, - "commentStart": 299, + "commentStart": 0, "end": 0, "name": { - "commentStart": 299, + "commentStart": 0, "end": 0, "name": "leg1", "start": 0, @@ -576,10 +576,10 @@ description: Result of parsing parametric.kcl ], "callee": { "abs_path": false, - "commentStart": 284, + "commentStart": 0, "end": 0, "name": { - "commentStart": 284, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -589,7 +589,7 @@ description: Result of parsing parametric.kcl "start": 0, "type": "Name" }, - "commentStart": 284, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -601,21 +601,21 @@ description: Result of parsing parametric.kcl { "type": "LabeledArg", "label": { - "commentStart": 316, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 322, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 323, + "commentStart": 0, "end": 0, "name": { - "commentStart": 323, + "commentStart": 0, "end": 0, "name": "leg2", "start": 0, @@ -627,7 +627,7 @@ description: Result of parsing parametric.kcl "type": "Name" }, { - "commentStart": 329, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -648,10 +648,10 @@ description: Result of parsing parametric.kcl ], "callee": { "abs_path": false, - "commentStart": 311, + "commentStart": 0, "end": 0, "name": { - "commentStart": 311, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -661,7 +661,7 @@ description: Result of parsing parametric.kcl "start": 0, "type": "Name" }, - "commentStart": 311, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -673,17 +673,17 @@ description: Result of parsing parametric.kcl { "type": "LabeledArg", "label": { - "commentStart": 343, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 349, + "commentStart": 0, "elements": [ { - "commentStart": 350, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -697,10 +697,10 @@ description: Result of parsing parametric.kcl { "argument": { "abs_path": false, - "commentStart": 354, + "commentStart": 0, "end": 0, "name": { - "commentStart": 354, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -711,7 +711,7 @@ description: Result of parsing parametric.kcl "type": "Name", "type": "Name" }, - "commentStart": 353, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -728,10 +728,10 @@ description: Result of parsing parametric.kcl ], "callee": { "abs_path": false, - "commentStart": 338, + "commentStart": 0, "end": 0, "name": { - "commentStart": 338, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -741,7 +741,7 @@ description: Result of parsing parametric.kcl "start": 0, "type": "Name" }, - "commentStart": 338, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -753,25 +753,25 @@ description: Result of parsing parametric.kcl { "type": "LabeledArg", "label": { - "commentStart": 376, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 382, + "commentStart": 0, "elements": [ { - "commentStart": 383, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 384, + "commentStart": 0, "end": 0, "name": { - "commentStart": 384, + "commentStart": 0, "end": 0, "name": "leg2", "start": 0, @@ -782,7 +782,7 @@ description: Result of parsing parametric.kcl "type": "Name", "type": "Name" }, - "commentStart": 383, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -792,10 +792,10 @@ description: Result of parsing parametric.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 391, + "commentStart": 0, "end": 0, "name": { - "commentStart": 391, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -811,7 +811,7 @@ description: Result of parsing parametric.kcl "type": "BinaryExpression" }, { - "commentStart": 402, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -832,10 +832,10 @@ description: Result of parsing parametric.kcl ], "callee": { "abs_path": false, - "commentStart": 371, + "commentStart": 0, "end": 0, "name": { - "commentStart": 371, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -845,7 +845,7 @@ description: Result of parsing parametric.kcl "start": 0, "type": "Name" }, - "commentStart": 371, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -857,17 +857,17 @@ description: Result of parsing parametric.kcl { "type": "LabeledArg", "label": { - "commentStart": 416, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 422, + "commentStart": 0, "elements": [ { - "commentStart": 423, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -879,15 +879,15 @@ description: Result of parsing parametric.kcl } }, { - "commentStart": 426, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 427, + "commentStart": 0, "end": 0, "name": { - "commentStart": 427, + "commentStart": 0, "end": 0, "name": "leg1", "start": 0, @@ -898,7 +898,7 @@ description: Result of parsing parametric.kcl "type": "Name", "type": "Name" }, - "commentStart": 426, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -908,10 +908,10 @@ description: Result of parsing parametric.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 434, + "commentStart": 0, "end": 0, "name": { - "commentStart": 434, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -936,10 +936,10 @@ description: Result of parsing parametric.kcl ], "callee": { "abs_path": false, - "commentStart": 411, + "commentStart": 0, "end": 0, "name": { - "commentStart": 411, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -949,7 +949,7 @@ description: Result of parsing parametric.kcl "start": 0, "type": "Name" }, - "commentStart": 411, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -959,7 +959,7 @@ description: Result of parsing parametric.kcl { "arguments": [ { - "commentStart": 457, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -968,10 +968,10 @@ description: Result of parsing parametric.kcl ], "callee": { "abs_path": false, - "commentStart": 451, + "commentStart": 0, "end": 0, "name": { - "commentStart": 451, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -981,7 +981,7 @@ description: Result of parsing parametric.kcl "start": 0, "type": "Name" }, - "commentStart": 451, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -992,7 +992,7 @@ description: Result of parsing parametric.kcl { "type": "LabeledArg", "label": { - "commentStart": 473, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1000,10 +1000,10 @@ description: Result of parsing parametric.kcl }, "arg": { "abs_path": false, - "commentStart": 482, + "commentStart": 0, "end": 0, "name": { - "commentStart": 482, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -1018,10 +1018,10 @@ description: Result of parsing parametric.kcl ], "callee": { "abs_path": false, - "commentStart": 465, + "commentStart": 0, "end": 0, "name": { - "commentStart": 465, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1031,7 +1031,7 @@ description: Result of parsing parametric.kcl "start": 0, "type": "Name" }, - "commentStart": 465, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1039,7 +1039,7 @@ description: Result of parsing parametric.kcl "unlabeled": null } ], - "commentStart": 228, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1061,7 +1061,7 @@ description: Result of parsing parametric.kcl "nonCodeNodes": { "0": [ { - "commentStart": 18, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1074,7 +1074,7 @@ description: Result of parsing parametric.kcl ], "1": [ { - "commentStart": 35, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1087,7 +1087,7 @@ description: Result of parsing parametric.kcl ], "2": [ { - "commentStart": 51, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1100,7 +1100,7 @@ description: Result of parsing parametric.kcl ], "3": [ { - "commentStart": 88, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1113,7 +1113,7 @@ description: Result of parsing parametric.kcl ], "4": [ { - "commentStart": 106, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1124,7 +1124,7 @@ description: Result of parsing parametric.kcl ], "5": [ { - "commentStart": 116, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1137,7 +1137,7 @@ description: Result of parsing parametric.kcl ], "6": [ { - "commentStart": 135, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1150,7 +1150,7 @@ description: Result of parsing parametric.kcl ], "7": [ { - "commentStart": 207, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/parametric/ops.snap b/rust/kcl-lib/tests/parametric/ops.snap index 291df6e66..ff5e3ed62 100644 --- a/rust/kcl-lib/tests/parametric/ops.snap +++ b/rust/kcl-lib/tests/parametric/ops.snap @@ -5,7 +5,7 @@ description: Operations executed parametric.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/parametric/program_memory.snap b/rust/kcl-lib/tests/parametric/program_memory.snap index 21086085b..3eeeb6f62 100644 --- a/rust/kcl-lib/tests/parametric/program_memory.snap +++ b/rust/kcl-lib/tests/parametric/program_memory.snap @@ -193,22 +193,34 @@ description: Variables in memory after executing parametric.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -315,7 +327,13 @@ description: Variables in memory after executing parametric.kcl "type": "Number", "value": 0.1852, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "width": { diff --git a/rust/kcl-lib/tests/parametric_with_tan_arc/artifact_commands.snap b/rust/kcl-lib/tests/parametric_with_tan_arc/artifact_commands.snap index f7be42358..18eba6099 100644 --- a/rust/kcl-lib/tests/parametric_with_tan_arc/artifact_commands.snap +++ b/rust/kcl-lib/tests/parametric_with_tan_arc/artifact_commands.snap @@ -245,7 +245,8 @@ description: Artifact commands parametric_with_tan_arc.kcl "type": "extrude", "target": "[uuid]", "distance": 11.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/parametric_with_tan_arc/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/parametric_with_tan_arc/artifact_graph_flowchart.snap.md index f45177055..a16afa7ac 100644 --- a/rust/kcl-lib/tests/parametric_with_tan_arc/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/parametric_with_tan_arc/artifact_graph_flowchart.snap.md @@ -3,17 +3,17 @@ flowchart LR subgraph path2 [Path] 2["Path
[262, 287, 0]"] 3["Segment
[293, 320, 0]"] - 4["Segment
[326, 377, 0]"] - 5["Segment
[383, 412, 0]"] - 6["Segment
[418, 445, 0]"] - 7["Segment
[451, 479, 0]"] - 8["Segment
[485, 568, 0]"] - 9["Segment
[574, 602, 0]"] - 10["Segment
[608, 616, 0]"] + 4["Segment
[326, 369, 0]"] + 5["Segment
[375, 404, 0]"] + 6["Segment
[410, 437, 0]"] + 7["Segment
[443, 471, 0]"] + 8["Segment
[477, 533, 0]"] + 9["Segment
[539, 567, 0]"] + 10["Segment
[573, 581, 0]"] 11[Solid2d] end 1["Plane
[239, 256, 0]"] - 12["Sweep Extrusion
[622, 645, 0]"] + 12["Sweep Extrusion
[587, 610, 0]"] 13[Wall] 14[Wall] 15[Wall] diff --git a/rust/kcl-lib/tests/parametric_with_tan_arc/ast.snap b/rust/kcl-lib/tests/parametric_with_tan_arc/ast.snap index dc7108a9c..8cf62c5cd 100644 --- a/rust/kcl-lib/tests/parametric_with_tan_arc/ast.snap +++ b/rust/kcl-lib/tests/parametric_with_tan_arc/ast.snap @@ -18,7 +18,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "Identifier" }, "init": { - "commentStart": 13, + "commentStart": 0, "end": 0, "raw": "15000", "start": 0, @@ -39,19 +39,19 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "VariableDeclaration" }, { - "commentStart": 18, + "commentStart": 0, "declaration": { - "commentStart": 26, + "commentStart": 0, "end": 0, "id": { - "commentStart": 26, + "commentStart": 0, "end": 0, "name": "width", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 34, + "commentStart": 0, "end": 0, "raw": "11", "start": 0, @@ -72,19 +72,19 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "VariableDeclaration" }, { - "commentStart": 36, + "commentStart": 0, "declaration": { - "commentStart": 45, + "commentStart": 0, "end": 0, "id": { - "commentStart": 45, + "commentStart": 0, "end": 0, "name": "p", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 49, + "commentStart": 0, "end": 0, "raw": "150", "start": 0, @@ -105,19 +105,19 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "VariableDeclaration" }, { - "commentStart": 52, + "commentStart": 0, "declaration": { - "commentStart": 77, + "commentStart": 0, "end": 0, "id": { - "commentStart": 77, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 88, + "commentStart": 0, "end": 0, "raw": "12", "start": 0, @@ -138,19 +138,19 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "VariableDeclaration" }, { - "commentStart": 90, + "commentStart": 0, "declaration": { - "commentStart": 101, + "commentStart": 0, "end": 0, "id": { - "commentStart": 101, + "commentStart": 0, "end": 0, "name": "FOS", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 107, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -171,12 +171,12 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "VariableDeclaration" }, { - "commentStart": 109, + "commentStart": 0, "declaration": { - "commentStart": 109, + "commentStart": 0, "end": 0, "id": { - "commentStart": 109, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -185,23 +185,23 @@ description: Result of parsing parametric_with_tan_arc.kcl "init": { "arguments": [ { - "commentStart": 126, + "commentStart": 0, "end": 0, "left": { - "commentStart": 126, + "commentStart": 0, "end": 0, "left": { - "commentStart": 126, + "commentStart": 0, "end": 0, "left": { - "commentStart": 126, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 126, + "commentStart": 0, "end": 0, "name": { - "commentStart": 126, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, @@ -215,10 +215,10 @@ description: Result of parsing parametric_with_tan_arc.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 137, + "commentStart": 0, "end": 0, "name": { - "commentStart": 137, + "commentStart": 0, "end": 0, "name": "p", "start": 0, @@ -236,10 +236,10 @@ description: Result of parsing parametric_with_tan_arc.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 141, + "commentStart": 0, "end": 0, "name": { - "commentStart": 141, + "commentStart": 0, "end": 0, "name": "FOS", "start": 0, @@ -256,7 +256,7 @@ description: Result of parsing parametric_with_tan_arc.kcl }, "operator": "*", "right": { - "commentStart": 147, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -273,14 +273,14 @@ description: Result of parsing parametric_with_tan_arc.kcl }, "operator": "/", "right": { - "commentStart": 152, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 152, + "commentStart": 0, "end": 0, "name": { - "commentStart": 152, + "commentStart": 0, "end": 0, "name": "sigmaAllow", "start": 0, @@ -294,10 +294,10 @@ description: Result of parsing parametric_with_tan_arc.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 165, + "commentStart": 0, "end": 0, "name": { - "commentStart": 165, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -319,10 +319,10 @@ description: Result of parsing parametric_with_tan_arc.kcl ], "callee": { "abs_path": false, - "commentStart": 121, + "commentStart": 0, "end": 0, "name": { - "commentStart": 121, + "commentStart": 0, "end": 0, "name": "sqrt", "start": 0, @@ -332,7 +332,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 121, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -348,26 +348,26 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "VariableDeclaration" }, { - "commentStart": 173, + "commentStart": 0, "declaration": { - "commentStart": 173, + "commentStart": 0, "end": 0, "id": { - "commentStart": 173, + "commentStart": 0, "end": 0, "name": "filletR", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 183, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 183, + "commentStart": 0, "end": 0, "name": { - "commentStart": 183, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -380,7 +380,7 @@ description: Result of parsing parametric_with_tan_arc.kcl }, "operator": "*", "right": { - "commentStart": 195, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -405,19 +405,19 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "VariableDeclaration" }, { - "commentStart": 197, + "commentStart": 0, "declaration": { - "commentStart": 197, + "commentStart": 0, "end": 0, "id": { - "commentStart": 197, + "commentStart": 0, "end": 0, "name": "shelfMountL", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 211, + "commentStart": 0, "end": 0, "raw": "9", "start": 0, @@ -438,19 +438,19 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "VariableDeclaration" }, { - "commentStart": 213, + "commentStart": 0, "declaration": { - "commentStart": 213, + "commentStart": 0, "end": 0, "id": { - "commentStart": 213, + "commentStart": 0, "end": 0, "name": "wallMountL", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 226, + "commentStart": 0, "end": 0, "raw": "8", "start": 0, @@ -471,12 +471,12 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "VariableDeclaration" }, { - "commentStart": 227, + "commentStart": 0, "declaration": { - "commentStart": 229, + "commentStart": 0, "end": 0, "id": { - "commentStart": 229, + "commentStart": 0, "end": 0, "name": "bracket", "start": 0, @@ -488,10 +488,10 @@ description: Result of parsing parametric_with_tan_arc.kcl "arguments": [ { "abs_path": false, - "commentStart": 253, + "commentStart": 0, "end": 0, "name": { - "commentStart": 253, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -505,10 +505,10 @@ description: Result of parsing parametric_with_tan_arc.kcl ], "callee": { "abs_path": false, - "commentStart": 239, + "commentStart": 0, "end": 0, "name": { - "commentStart": 239, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -518,7 +518,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 239, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -527,10 +527,10 @@ description: Result of parsing parametric_with_tan_arc.kcl { "arguments": [ { - "commentStart": 277, + "commentStart": 0, "elements": [ { - "commentStart": 278, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -542,7 +542,7 @@ description: Result of parsing parametric_with_tan_arc.kcl } }, { - "commentStart": 281, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -560,7 +560,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "ArrayExpression" }, { - "commentStart": 285, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -569,10 +569,10 @@ description: Result of parsing parametric_with_tan_arc.kcl ], "callee": { "abs_path": false, - "commentStart": 262, + "commentStart": 0, "end": 0, "name": { - "commentStart": 262, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -582,7 +582,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 262, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -593,17 +593,17 @@ description: Result of parsing parametric_with_tan_arc.kcl { "type": "LabeledArg", "label": { - "commentStart": 298, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 304, + "commentStart": 0, "elements": [ { - "commentStart": 305, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -616,10 +616,10 @@ description: Result of parsing parametric_with_tan_arc.kcl }, { "abs_path": false, - "commentStart": 308, + "commentStart": 0, "end": 0, "name": { - "commentStart": 308, + "commentStart": 0, "end": 0, "name": "wallMountL", "start": 0, @@ -640,10 +640,10 @@ description: Result of parsing parametric_with_tan_arc.kcl ], "callee": { "abs_path": false, - "commentStart": 293, + "commentStart": 0, "end": 0, "name": { - "commentStart": 293, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -653,7 +653,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 293, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -663,82 +663,60 @@ description: Result of parsing parametric_with_tan_arc.kcl { "arguments": [ { - "commentStart": 340, - "end": 0, - "properties": [ - { - "commentStart": 342, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 342, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, + "name": "filletR", "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 351, - "end": 0, - "name": { - "commentStart": 351, - "end": 0, - "name": "filletR", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "Identifier" }, - { - "commentStart": 360, - "end": 0, - "key": { - "commentStart": 360, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 369, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 375, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "90", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + } } ], "callee": { "abs_path": false, - "commentStart": 326, + "commentStart": 0, "end": 0, "name": { - "commentStart": 326, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -748,33 +726,34 @@ description: Result of parsing parametric_with_tan_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 326, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 388, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 394, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 396, + "commentStart": 0, "end": 0, "name": { - "commentStart": 396, + "commentStart": 0, "end": 0, "name": "shelfMountL", "start": 0, @@ -785,7 +764,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "Name", "type": "Name" }, - "commentStart": 395, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -793,7 +772,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "UnaryExpression" }, { - "commentStart": 409, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -814,10 +793,10 @@ description: Result of parsing parametric_with_tan_arc.kcl ], "callee": { "abs_path": false, - "commentStart": 383, + "commentStart": 0, "end": 0, "name": { - "commentStart": 383, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -827,7 +806,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 383, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -839,17 +818,17 @@ description: Result of parsing parametric_with_tan_arc.kcl { "type": "LabeledArg", "label": { - "commentStart": 423, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 429, + "commentStart": 0, "elements": [ { - "commentStart": 430, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -863,10 +842,10 @@ description: Result of parsing parametric_with_tan_arc.kcl { "argument": { "abs_path": false, - "commentStart": 434, + "commentStart": 0, "end": 0, "name": { - "commentStart": 434, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -877,7 +856,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "Name", "type": "Name" }, - "commentStart": 433, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -894,10 +873,10 @@ description: Result of parsing parametric_with_tan_arc.kcl ], "callee": { "abs_path": false, - "commentStart": 418, + "commentStart": 0, "end": 0, "name": { - "commentStart": 418, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -907,7 +886,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 418, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -919,21 +898,21 @@ description: Result of parsing parametric_with_tan_arc.kcl { "type": "LabeledArg", "label": { - "commentStart": 456, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 462, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 463, + "commentStart": 0, "end": 0, "name": { - "commentStart": 463, + "commentStart": 0, "end": 0, "name": "shelfMountL", "start": 0, @@ -945,7 +924,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "Name" }, { - "commentStart": 476, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -966,10 +945,10 @@ description: Result of parsing parametric_with_tan_arc.kcl ], "callee": { "abs_path": false, - "commentStart": 451, + "commentStart": 0, "end": 0, "name": { - "commentStart": 451, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -979,7 +958,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 451, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -989,114 +968,92 @@ description: Result of parsing parametric_with_tan_arc.kcl { "arguments": [ { - "commentStart": 499, - "end": 0, - "properties": [ - { - "commentStart": 508, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 508, + "name": { + "commentStart": 0, "end": 0, - "name": "radius", + "name": "filletR", "start": 0, "type": "Identifier" }, + "path": [], "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 517, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 517, - "end": 0, - "name": { - "commentStart": 517, - "end": 0, - "name": "filletR", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "-", - "right": { - "abs_path": false, - "commentStart": 527, - "end": 0, - "name": { - "commentStart": 527, - "end": 0, - "name": "thickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } + "type": "Name", + "type": "Name" }, - { - "commentStart": 545, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, "end": 0, - "key": { - "commentStart": 545, + "name": { + "commentStart": 0, "end": 0, - "name": "offset", + "name": "thickness", "start": 0, "type": "Identifier" }, + "path": [], "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "commentStart": 555, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "commentStart": 554, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 566, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "90", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 485, + "commentStart": 0, "end": 0, "name": { - "commentStart": 485, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -1106,28 +1063,29 @@ description: Result of parsing parametric_with_tan_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 485, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 579, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 585, + "commentStart": 0, "elements": [ { - "commentStart": 586, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1141,10 +1099,10 @@ description: Result of parsing parametric_with_tan_arc.kcl { "argument": { "abs_path": false, - "commentStart": 590, + "commentStart": 0, "end": 0, "name": { - "commentStart": 590, + "commentStart": 0, "end": 0, "name": "wallMountL", "start": 0, @@ -1155,7 +1113,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "type": "Name", "type": "Name" }, - "commentStart": 589, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1172,10 +1130,10 @@ description: Result of parsing parametric_with_tan_arc.kcl ], "callee": { "abs_path": false, - "commentStart": 574, + "commentStart": 0, "end": 0, "name": { - "commentStart": 574, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1185,7 +1143,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 574, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1195,7 +1153,7 @@ description: Result of parsing parametric_with_tan_arc.kcl { "arguments": [ { - "commentStart": 614, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1204,10 +1162,10 @@ description: Result of parsing parametric_with_tan_arc.kcl ], "callee": { "abs_path": false, - "commentStart": 608, + "commentStart": 0, "end": 0, "name": { - "commentStart": 608, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1217,7 +1175,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 608, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1228,7 +1186,7 @@ description: Result of parsing parametric_with_tan_arc.kcl { "type": "LabeledArg", "label": { - "commentStart": 630, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1236,10 +1194,10 @@ description: Result of parsing parametric_with_tan_arc.kcl }, "arg": { "abs_path": false, - "commentStart": 639, + "commentStart": 0, "end": 0, "name": { - "commentStart": 639, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -1254,10 +1212,10 @@ description: Result of parsing parametric_with_tan_arc.kcl ], "callee": { "abs_path": false, - "commentStart": 622, + "commentStart": 0, "end": 0, "name": { - "commentStart": 622, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1267,7 +1225,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 622, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1275,7 +1233,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "unlabeled": null } ], - "commentStart": 239, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1297,7 +1255,7 @@ description: Result of parsing parametric_with_tan_arc.kcl "nonCodeNodes": { "0": [ { - "commentStart": 18, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1310,7 +1268,7 @@ description: Result of parsing parametric_with_tan_arc.kcl ], "1": [ { - "commentStart": 36, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1323,7 +1281,7 @@ description: Result of parsing parametric_with_tan_arc.kcl ], "2": [ { - "commentStart": 52, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1336,7 +1294,7 @@ description: Result of parsing parametric_with_tan_arc.kcl ], "3": [ { - "commentStart": 90, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1349,7 +1307,7 @@ description: Result of parsing parametric_with_tan_arc.kcl ], "8": [ { - "commentStart": 227, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/parametric_with_tan_arc/input.kcl b/rust/kcl-lib/tests/parametric_with_tan_arc/input.kcl index 411257836..73c238f1a 100644 --- a/rust/kcl-lib/tests/parametric_with_tan_arc/input.kcl +++ b/rust/kcl-lib/tests/parametric_with_tan_arc/input.kcl @@ -11,14 +11,11 @@ wallMountL = 8 bracket = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line(end = [0, wallMountL]) - |> tangentialArc({ radius = filletR, offset = 90 }, %) + |> tangentialArc(radius = filletR, angle = 90) |> line(end = [-shelfMountL, 0]) |> line(end = [0, -thickness]) |> line(end = [shelfMountL, 0]) - |> tangentialArc({ - radius = filletR - thickness, - offset = -90 - }, %) + |> tangentialArc(radius = filletR - thickness, angle = -90) |> line(end = [0, -wallMountL]) |> close(%) |> extrude(length = width) diff --git a/rust/kcl-lib/tests/parametric_with_tan_arc/ops.snap b/rust/kcl-lib/tests/parametric_with_tan_arc/ops.snap index 358477221..5be457cdf 100644 --- a/rust/kcl-lib/tests/parametric_with_tan_arc/ops.snap +++ b/rust/kcl-lib/tests/parametric_with_tan_arc/ops.snap @@ -5,7 +5,7 @@ description: Operations executed parametric_with_tan_arc.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/parametric_with_tan_arc/program_memory.snap b/rust/kcl-lib/tests/parametric_with_tan_arc/program_memory.snap index a014e87ba..2989ccc15 100644 --- a/rust/kcl-lib/tests/parametric_with_tan_arc/program_memory.snap +++ b/rust/kcl-lib/tests/parametric_with_tan_arc/program_memory.snap @@ -255,22 +255,34 @@ description: Variables in memory after executing parametric_with_tan_arc.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -325,7 +337,13 @@ description: Variables in memory after executing parametric_with_tan_arc.kcl "type": "Number", "value": 0.7236, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "p": { @@ -371,7 +389,13 @@ description: Variables in memory after executing parametric_with_tan_arc.kcl "type": "Number", "value": 0.3618, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "wallMountL": { diff --git a/rust/kcl-lib/tests/parametric_with_tan_arc/unparsed.snap b/rust/kcl-lib/tests/parametric_with_tan_arc/unparsed.snap index 821f3e487..0377fd103 100644 --- a/rust/kcl-lib/tests/parametric_with_tan_arc/unparsed.snap +++ b/rust/kcl-lib/tests/parametric_with_tan_arc/unparsed.snap @@ -15,14 +15,11 @@ wallMountL = 8 bracket = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line(end = [0, wallMountL]) - |> tangentialArc({ radius = filletR, offset = 90 }, %) + |> tangentialArc(radius = filletR, angle = 90) |> line(end = [-shelfMountL, 0]) |> line(end = [0, -thickness]) |> line(end = [shelfMountL, 0]) - |> tangentialArc({ - radius = filletR - thickness, - offset = -90 - }, %) + |> tangentialArc(radius = filletR - thickness, angle = -90) |> line(end = [0, -wallMountL]) |> close(%) |> extrude(length = width) diff --git a/rust/kcl-lib/tests/pattern_circular_in_module/artifact_commands.snap b/rust/kcl-lib/tests/pattern_circular_in_module/artifact_commands.snap index 94a381555..a21be9145 100644 --- a/rust/kcl-lib/tests/pattern_circular_in_module/artifact_commands.snap +++ b/rust/kcl-lib/tests/pattern_circular_in_module/artifact_commands.snap @@ -200,7 +200,8 @@ description: Artifact commands pattern_circular_in_module.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -330,7 +331,8 @@ description: Artifact commands pattern_circular_in_module.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -460,7 +462,8 @@ description: Artifact commands pattern_circular_in_module.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -590,7 +593,8 @@ description: Artifact commands pattern_circular_in_module.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/pattern_circular_in_module/ast.snap b/rust/kcl-lib/tests/pattern_circular_in_module/ast.snap index c51772b1a..5109c6649 100644 --- a/rust/kcl-lib/tests/pattern_circular_in_module/ast.snap +++ b/rust/kcl-lib/tests/pattern_circular_in_module/ast.snap @@ -17,10 +17,10 @@ description: Result of parsing pattern_circular_in_module.kcl "items": [ { "alias": null, - "commentStart": 7, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7, + "commentStart": 0, "end": 0, "name": "thing", "start": 0, @@ -36,16 +36,16 @@ description: Result of parsing pattern_circular_in_module.kcl "type": "ImportStatement" }, { - "commentStart": 29, + "commentStart": 0, "end": 0, "expression": { "arguments": [], "callee": { "abs_path": false, - "commentStart": 31, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31, + "commentStart": 0, "end": 0, "name": "thing", "start": 0, @@ -55,7 +55,7 @@ description: Result of parsing pattern_circular_in_module.kcl "start": 0, "type": "Name" }, - "commentStart": 31, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -72,7 +72,7 @@ description: Result of parsing pattern_circular_in_module.kcl "nonCodeNodes": { "0": [ { - "commentStart": 29, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/pattern_circular_in_module/ops.snap b/rust/kcl-lib/tests/pattern_circular_in_module/ops.snap index fe886e3d7..fbcb3fbc0 100644 --- a/rust/kcl-lib/tests/pattern_circular_in_module/ops.snap +++ b/rust/kcl-lib/tests/pattern_circular_in_module/ops.snap @@ -20,7 +20,7 @@ description: Operations executed pattern_circular_in_module.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/pattern_into_union/artifact_commands.snap b/rust/kcl-lib/tests/pattern_into_union/artifact_commands.snap new file mode 100644 index 000000000..5d90000e3 --- /dev/null +++ b/rust/kcl-lib/tests/pattern_into_union/artifact_commands.snap @@ -0,0 +1,2212 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Artifact commands pattern_into_union.kcl +--- +[ + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "edge_lines_visible", + "hidden": false + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "make_plane", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "x_axis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "y_axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "size": 60.0, + "clobber": false, + "hide": true + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "start_path" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "move_path_pen", + "path": "[uuid]", + "to": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 11.525, + "y": 0.0, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 11.525, + "y": 1.25, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": -0.5, + "y": 0.0, + "z": 0.0 + }, + "relative": true + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 11.025, + "y": 0.25, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 0.5, + "y": 0.25, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 0.5, + "y": 1.25, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 0.0, + "y": 1.25, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "close_path", + "path_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -3.28740157480315, + "faces": null, + "opposite": "None" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "make_plane", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "x_axis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "y_axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "size": 60.0, + "clobber": false, + "hide": true + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "start_path" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "move_path_pen", + "path": "[uuid]", + "to": { + "x": 0.5, + "y": 0.25, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 2.5, + "y": 0.25, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 1.5, + "y": 1.25, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 0.5, + "y": 1.25, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "close_path", + "path_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -0.1, + "faces": null, + "opposite": "None" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_fillet_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "radius": 0.1, + "tolerance": 0.0000001, + "cut_type": "fillet" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "entity_linear_pattern_transform", + "entity_id": "[uuid]", + "transform": [], + "transforms": [ + [ + { + "translate": { + "x": 0.0, + "y": 0.1593700787401575, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 0.318740157480315, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 0.47811023622047244, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 0.63748031496063, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 0.7968503937007875, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 0.9562204724409449, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 1.1155905511811024, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 1.27496062992126, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 1.4343307086614174, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 1.593700787401575, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 1.7530708661417325, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 1.9124409448818898, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 2.0718110236220473, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 2.231181102362205, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 2.3905511811023623, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 2.54992125984252, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 2.7092913385826773, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 2.868661417322835, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 3.0280314960629924, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 3.18740157480315, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ] + ] + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "make_plane", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "x_axis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "y_axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "size": 60.0, + "clobber": false, + "hide": true + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "start_path" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "move_path_pen", + "path": "[uuid]", + "to": { + "x": 11.025, + "y": 0.25, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 9.525, + "y": 0.25, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 10.525, + "y": 1.25, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 11.025, + "y": 1.25, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "close_path", + "path_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": { + "x": 0.0, + "y": -1.0, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": -0.1, + "faces": null, + "opposite": "None" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_fillet_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "radius": 0.1, + "tolerance": 0.0000001, + "cut_type": "fillet" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "entity_linear_pattern_transform", + "entity_id": "[uuid]", + "transform": [], + "transforms": [ + [ + { + "translate": { + "x": 0.0, + "y": 0.1593700787401575, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 0.318740157480315, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 0.47811023622047244, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 0.63748031496063, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 0.7968503937007875, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 0.9562204724409449, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 1.1155905511811024, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 1.27496062992126, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 1.4343307086614174, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 1.593700787401575, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 1.7530708661417325, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 1.9124409448818898, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 2.0718110236220473, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 2.231181102362205, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 2.3905511811023623, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 2.54992125984252, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 2.7092913385826773, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 2.868661417322835, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 3.0280314960629924, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ], + [ + { + "translate": { + "x": 0.0, + "y": 3.18740157480315, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "rotation": { + "axis": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "angle": { + "unit": "degrees", + "value": 0.0 + }, + "origin": { + "type": "local" + } + }, + "replicate": true + } + ] + ] + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "boolean_union", + "solid_ids": [ + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]", + "[uuid]" + ], + "tolerance": 0.0000001 + } + } +] diff --git a/rust/kcl-lib/tests/pattern_into_union/artifact_graph_flowchart.snap b/rust/kcl-lib/tests/pattern_into_union/artifact_graph_flowchart.snap new file mode 100644 index 000000000..704685321 --- /dev/null +++ b/rust/kcl-lib/tests/pattern_into_union/artifact_graph_flowchart.snap @@ -0,0 +1,6 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Artifact graph flowchart pattern_into_union.kcl +extension: md +snapshot_kind: binary +--- diff --git a/rust/kcl-lib/tests/pattern_into_union/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/pattern_into_union/artifact_graph_flowchart.snap.md new file mode 100644 index 000000000..cb6caa4b8 --- /dev/null +++ b/rust/kcl-lib/tests/pattern_into_union/artifact_graph_flowchart.snap.md @@ -0,0 +1,218 @@ +```mermaid +flowchart LR + subgraph path2 [Path] + 2["Path
[412, 437, 0]"] + 3["Segment
[443, 484, 0]"] + 4["Segment
[490, 536, 0]"] + 5["Segment
[542, 567, 0]"] + 6["Segment
[573, 604, 0]"] + 7["Segment
[610, 639, 0]"] + 8["Segment
[645, 691, 0]"] + 9["Segment
[697, 732, 0]"] + 10["Segment
[738, 745, 0]"] + 11[Solid2d] + end + subgraph path40 [Path] + 40["Path
[810, 851, 0]"] + 41["Segment
[857, 900, 0]"] + 42["Segment
[906, 1006, 0]"] + 43["Segment
[1012, 1041, 0]"] + 44["Segment
[1047, 1054, 0]"] + 45[Solid2d] + end + subgraph path62 [Path] + 62["Path
[1384, 1433, 0]"] + 63["Segment
[1439, 1479, 0]"] + 64["Segment
[1485, 1585, 0]"] + 65["Segment
[1591, 1628, 0]"] + 66["Segment
[1634, 1641, 0]"] + 67[Solid2d] + end + 1["Plane
[389, 406, 0]"] + 12["Sweep Extrusion
[751, 775, 0]"] + 13[Wall] + 14[Wall] + 15[Wall] + 16[Wall] + 17[Wall] + 18[Wall] + 19[Wall] + 20[Wall] + 21["Cap Start"] + 22["Cap End"] + 23["SweepEdge Opposite"] + 24["SweepEdge Adjacent"] + 25["SweepEdge Opposite"] + 26["SweepEdge Adjacent"] + 27["SweepEdge Opposite"] + 28["SweepEdge Adjacent"] + 29["SweepEdge Opposite"] + 30["SweepEdge Adjacent"] + 31["SweepEdge Opposite"] + 32["SweepEdge Adjacent"] + 33["SweepEdge Opposite"] + 34["SweepEdge Adjacent"] + 35["SweepEdge Opposite"] + 36["SweepEdge Adjacent"] + 37["SweepEdge Opposite"] + 38["SweepEdge Adjacent"] + 39["Plane
[787, 804, 0]"] + 46["Sweep Extrusion
[1060, 1098, 0]"] + 47[Wall] + 48[Wall] + 49[Wall] + 50[Wall] + 51["Cap Start"] + 52["Cap End"] + 53["SweepEdge Opposite"] + 54["SweepEdge Adjacent"] + 55["SweepEdge Opposite"] + 56["SweepEdge Adjacent"] + 57["SweepEdge Opposite"] + 58["SweepEdge Adjacent"] + 59["SweepEdge Opposite"] + 60["SweepEdge Adjacent"] + 61["Plane
[1361, 1378, 0]"] + 68["Sweep Extrusion
[1647, 1685, 0]"] + 69[Wall] + 70[Wall] + 71[Wall] + 72[Wall] + 73["Cap Start"] + 74["Cap End"] + 75["SweepEdge Opposite"] + 76["SweepEdge Adjacent"] + 77["SweepEdge Opposite"] + 78["SweepEdge Adjacent"] + 79["SweepEdge Opposite"] + 80["SweepEdge Adjacent"] + 81["SweepEdge Opposite"] + 82["SweepEdge Adjacent"] + 1 --- 2 + 2 --- 3 + 2 --- 4 + 2 --- 5 + 2 --- 6 + 2 --- 7 + 2 --- 8 + 2 --- 9 + 2 --- 10 + 2 ---- 12 + 2 --- 11 + 3 --- 13 + 3 --- 23 + 3 --- 24 + 4 --- 14 + 4 --- 25 + 4 --- 26 + 5 --- 15 + 5 --- 27 + 5 --- 28 + 6 --- 16 + 6 --- 29 + 6 --- 30 + 7 --- 17 + 7 --- 31 + 7 --- 32 + 8 --- 18 + 8 --- 33 + 8 --- 34 + 9 --- 19 + 9 --- 35 + 9 --- 36 + 10 --- 20 + 10 --- 37 + 10 --- 38 + 12 --- 13 + 12 --- 14 + 12 --- 15 + 12 --- 16 + 12 --- 17 + 12 --- 18 + 12 --- 19 + 12 --- 20 + 12 --- 21 + 12 --- 22 + 12 --- 23 + 12 --- 24 + 12 --- 25 + 12 --- 26 + 12 --- 27 + 12 --- 28 + 12 --- 29 + 12 --- 30 + 12 --- 31 + 12 --- 32 + 12 --- 33 + 12 --- 34 + 12 --- 35 + 12 --- 36 + 12 --- 37 + 12 --- 38 + 39 --- 40 + 40 --- 41 + 40 --- 42 + 40 --- 43 + 40 --- 44 + 40 ---- 46 + 40 --- 45 + 41 --- 47 + 41 --- 53 + 41 --- 54 + 42 --- 48 + 42 --- 55 + 42 --- 56 + 43 --- 49 + 43 --- 57 + 43 --- 58 + 44 --- 50 + 44 --- 59 + 44 --- 60 + 46 --- 47 + 46 --- 48 + 46 --- 49 + 46 --- 50 + 46 --- 51 + 46 --- 52 + 46 --- 53 + 46 --- 54 + 46 --- 55 + 46 --- 56 + 46 --- 57 + 46 --- 58 + 46 --- 59 + 46 --- 60 + 61 --- 62 + 62 --- 63 + 62 --- 64 + 62 --- 65 + 62 --- 66 + 62 ---- 68 + 62 --- 67 + 63 --- 72 + 63 --- 81 + 63 --- 82 + 64 --- 71 + 64 --- 79 + 64 --- 80 + 65 --- 70 + 65 --- 77 + 65 --- 78 + 66 --- 69 + 66 --- 75 + 66 --- 76 + 68 --- 69 + 68 --- 70 + 68 --- 71 + 68 --- 72 + 68 --- 73 + 68 --- 74 + 68 --- 75 + 68 --- 76 + 68 --- 77 + 68 --- 78 + 68 --- 79 + 68 --- 80 + 68 --- 81 + 68 --- 82 +``` diff --git a/rust/kcl-lib/tests/pattern_into_union/ast.snap b/rust/kcl-lib/tests/pattern_into_union/ast.snap new file mode 100644 index 000000000..88c229340 --- /dev/null +++ b/rust/kcl-lib/tests/pattern_into_union/ast.snap @@ -0,0 +1,3046 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Result of parsing pattern_into_union.kcl +--- +{ + "Ok": { + "body": [ + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "nPlates", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "raw": "20", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 20.0, + "suffix": "None" + } + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "buildPlateThickness", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "25.4", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 25.4, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "buildPlateWidth", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "raw": "10.125", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 10.125, + "suffix": "None" + } + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "widthTolerance", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "raw": "0.2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.2, + "suffix": "None" + } + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "thicknessTolerance", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "raw": "0.020", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.02, + "suffix": "None" + } + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "endWidth", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "raw": "0.5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.5, + "suffix": "None" + } + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "endTabWidth", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "endTabHeight", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "endTabThickness", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "raw": "0.1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.1, + "suffix": "None" + } + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "buildPlateWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "widthTolerance", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "depth", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "nPlates", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "*", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "buildPlateThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "thicknessTolerance", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "nPlates", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endTabThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "baseHeight", + "start": 0, + "type": "Identifier" + }, + "init": { + "commentStart": 0, + "end": 0, + "raw": "0.25", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.25, + "suffix": "None" + } + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "base", + "start": 0, + "type": "Identifier" + }, + "init": { + "body": [ + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "XZ", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "startSketchOn", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "startProfileAt", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "seg01" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "xLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "baseHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endTabHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "yLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "xLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "baseHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "yLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "xLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "baseHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endTabHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "yLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "seg02" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "xLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "close", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "depth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + } + ], + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "endTabs", + "start": 0, + "type": "Identifier" + }, + "init": { + "body": [ + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "XZ", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "startSketchOn", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "commentStart": 0, + "elements": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "baseHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "startProfileAt", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endTabWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "xLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "135", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 135.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "baseHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endTabHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "toFillet" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "xLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "close", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endTabThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0.1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.1, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tags", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "toFillet", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "getNextAdjacentEdge", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "fillet", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "axis", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "distance", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "buildPlateThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "thicknessTolerance", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endTabThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "instances", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "nPlates", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "patternLinear3d", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + } + ], + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "endTabs2", + "start": 0, + "type": "Identifier" + }, + "init": { + "body": [ + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "XZ", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "startSketchOn", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "baseHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "startProfileAt", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endTabWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "xLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "45", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 45.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "baseHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endTabHeight", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "toFillet2" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endWidth", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "xLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "close", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "argument": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endTabThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0.1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.1, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tags", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "toFillet2", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "getNextAdjacentEdge", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "fillet", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "axis", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "distance", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "buildPlateThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "thicknessTolerance", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endTabThickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "instances", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "nPlates", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "patternLinear3d", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + } + ], + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "arguments": [ + { + "commentStart": 0, + "elements": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "base", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "endTabs", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "union", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + } + ], + "commentStart": 0, + "end": 0, + "nonCodeMeta": { + "nonCodeNodes": { + "1": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "inlineComment", + "value": "1mm w/ two stickers", + "style": "line" + } + } + ], + "11": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLine" + } + } + ], + "12": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLine" + } + } + ], + "13": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLine" + } + } + ], + "14": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLine" + } + } + ] + }, + "startNodes": [] + }, + "start": 0 + } +} diff --git a/rust/kcl-lib/tests/pattern_into_union/execution_error.snap b/rust/kcl-lib/tests/pattern_into_union/execution_error.snap new file mode 100644 index 000000000..2f023136a --- /dev/null +++ b/rust/kcl-lib/tests/pattern_into_union/execution_error.snap @@ -0,0 +1,14 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Error from executing pattern_into_union.kcl +--- +KCL Engine error + + × engine: Modeling command failed: [ApiError { error_code: InternalEngine, + │ message: "More than 2 solids were passed to the low-level CSG method" }] + ╭─[67:1] + 66 │ + 67 │ union([base,endTabs]) + · ──────────┬────────── + · ╰── tests/pattern_into_union/input.kcl + ╰──── diff --git a/rust/kcl-lib/tests/pattern_into_union/input.kcl b/rust/kcl-lib/tests/pattern_into_union/input.kcl new file mode 100644 index 000000000..7d0ecab72 --- /dev/null +++ b/rust/kcl-lib/tests/pattern_into_union/input.kcl @@ -0,0 +1,67 @@ +nPlates = 20 +buildPlateThickness = 1 / 25.4 // 1mm w/ two stickers +buildPlateWidth = 10.125 +widthTolerance = 0.2 +thicknessTolerance = 0.020 +endWidth = 0.5 +endTabWidth = 2 +endTabHeight = 1 +endTabThickness = 0.1 +width = buildPlateWidth + 2 * (widthTolerance + endWidth) +depth = nPlates * (buildPlateThickness + thicknessTolerance) + (nPlates + 1) * endTabThickness +baseHeight = 0.25 + +base = startSketchOn(XZ) + |> startProfileAt([0, 0], %) + |> xLine(endAbsolute = width, tag = $seg01) + |> yLine(endAbsolute = baseHeight + endTabHeight) + |> xLine(length = -endWidth) + |> yLine(endAbsolute = baseHeight) + |> xLine(endAbsolute = endWidth) + |> yLine(endAbsolute = baseHeight + endTabHeight) + |> xLine(endAbsolute = 0,tag = $seg02) + |> close() + |> extrude(length = -depth) + +endTabs = startSketchOn(XZ) + |> startProfileAt([endWidth, baseHeight], %) + |> xLine(endAbsolute = endWidth + endTabWidth) + |> angledLine( + angle = 135, + endAbsoluteY = baseHeight + endTabHeight + ,tag=$toFillet) + |> xLine(endAbsolute = endWidth) + |> close() + |> extrude(length = -1 * endTabThickness) + |> fillet( + radius = 0.1, + tags = [getNextAdjacentEdge(toFillet)] + ) + |> patternLinear3d( + axis = [0, 1, 0], + distance = buildPlateThickness + thicknessTolerance + endTabThickness, + instances = nPlates + 1 + ) + +endTabs2 = startSketchOn(XZ) + |> startProfileAt([width - endWidth, baseHeight], %) + |> xLine(endAbsolute = width - endTabWidth) + |> angledLine( + angle = 45, + endAbsoluteY = baseHeight + endTabHeight + ,tag=$toFillet2) + |> xLine(endAbsolute = width - endWidth) + |> close() + |> extrude(length = -1 * endTabThickness) + |> fillet( + radius = 0.1, + tags = [getNextAdjacentEdge(toFillet2)] + ) + |> patternLinear3d( + axis = [0, 1, 0], + distance = buildPlateThickness + thicknessTolerance + endTabThickness, + instances = nPlates + 1 + ) + + +union([base,endTabs]) diff --git a/rust/kcl-lib/tests/pattern_into_union/ops.snap b/rust/kcl-lib/tests/pattern_into_union/ops.snap new file mode 100644 index 000000000..e52121424 --- /dev/null +++ b/rust/kcl-lib/tests/pattern_into_union/ops.snap @@ -0,0 +1,579 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Operations executed pattern_into_union.kcl +--- +[ + { + "labeledArgs": { + "planeOrSolid": { + "value": { + "type": "Plane", + "artifact_id": "[uuid]" + }, + "sourceRange": [] + } + }, + "name": "startSketchOn", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": null + }, + { + "labeledArgs": { + "length": { + "value": { + "type": "Number", + "value": -3.28740157480315, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + } + }, + "name": "extrude", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Sketch", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, + { + "labeledArgs": { + "planeOrSolid": { + "value": { + "type": "Plane", + "artifact_id": "[uuid]" + }, + "sourceRange": [] + } + }, + "name": "startSketchOn", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": null + }, + { + "labeledArgs": { + "length": { + "value": { + "type": "Number", + "value": -0.1, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + } + }, + "name": "extrude", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Sketch", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, + { + "labeledArgs": { + "radius": { + "value": { + "type": "Number", + "value": 0.1, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + }, + "tags": { + "value": { + "type": "Array", + "value": [ + { + "type": "Uuid", + "value": "[uuid]" + } + ] + }, + "sourceRange": [] + } + }, + "name": "fillet", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, + { + "labeledArgs": { + "axis": { + "value": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "sourceRange": [] + }, + "distance": { + "value": { + "type": "Number", + "value": 0.1593700787401575, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + }, + "instances": { + "value": { + "type": "Number", + "value": 21.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + } + }, + "name": "patternLinear3d", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, + { + "labeledArgs": { + "planeOrSolid": { + "value": { + "type": "Plane", + "artifact_id": "[uuid]" + }, + "sourceRange": [] + } + }, + "name": "startSketchOn", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": null + }, + { + "labeledArgs": { + "length": { + "value": { + "type": "Number", + "value": -0.1, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + } + }, + "name": "extrude", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Sketch", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, + { + "labeledArgs": { + "radius": { + "value": { + "type": "Number", + "value": 0.1, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + }, + "tags": { + "value": { + "type": "Array", + "value": [ + { + "type": "Uuid", + "value": "[uuid]" + } + ] + }, + "sourceRange": [] + } + }, + "name": "fillet", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, + { + "labeledArgs": { + "axis": { + "value": { + "type": "Array", + "value": [ + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 1.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + { + "type": "Number", + "value": 0.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + } + ] + }, + "sourceRange": [] + }, + "distance": { + "value": { + "type": "Number", + "value": 0.1593700787401575, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + }, + "instances": { + "value": { + "type": "Number", + "value": 21.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + } + }, + "name": "patternLinear3d", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, + { + "isError": true, + "labeledArgs": { + "solids": { + "value": { + "type": "Array", + "value": [ + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Array", + "value": [ + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + } + ] + } + ] + }, + "sourceRange": [] + } + }, + "name": "union", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": null + } +] diff --git a/rust/kcl-lib/tests/pattern_into_union/unparsed.snap b/rust/kcl-lib/tests/pattern_into_union/unparsed.snap new file mode 100644 index 000000000..3efba27d5 --- /dev/null +++ b/rust/kcl-lib/tests/pattern_into_union/unparsed.snap @@ -0,0 +1,50 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Result of unparsing pattern_into_union.kcl +--- +nPlates = 20 +buildPlateThickness = 1 / 25.4 // 1mm w/ two stickers +buildPlateWidth = 10.125 +widthTolerance = 0.2 +thicknessTolerance = 0.020 +endWidth = 0.5 +endTabWidth = 2 +endTabHeight = 1 +endTabThickness = 0.1 +width = buildPlateWidth + 2 * (widthTolerance + endWidth) +depth = nPlates * (buildPlateThickness + thicknessTolerance) + (nPlates + 1) * endTabThickness +baseHeight = 0.25 + +base = startSketchOn(XZ) + |> startProfileAt([0, 0], %) + |> xLine(endAbsolute = width, tag = $seg01) + |> yLine(endAbsolute = baseHeight + endTabHeight) + |> xLine(length = -endWidth) + |> yLine(endAbsolute = baseHeight) + |> xLine(endAbsolute = endWidth) + |> yLine(endAbsolute = baseHeight + endTabHeight) + |> xLine(endAbsolute = 0, tag = $seg02) + |> close() + |> extrude(length = -depth) + +endTabs = startSketchOn(XZ) + |> startProfileAt([endWidth, baseHeight], %) + |> xLine(endAbsolute = endWidth + endTabWidth) + |> angledLine(angle = 135, endAbsoluteY = baseHeight + endTabHeight, tag = $toFillet) + |> xLine(endAbsolute = endWidth) + |> close() + |> extrude(length = -1 * endTabThickness) + |> fillet(radius = 0.1, tags = [getNextAdjacentEdge(toFillet)]) + |> patternLinear3d(axis = [0, 1, 0], distance = buildPlateThickness + thicknessTolerance + endTabThickness, instances = nPlates + 1) + +endTabs2 = startSketchOn(XZ) + |> startProfileAt([width - endWidth, baseHeight], %) + |> xLine(endAbsolute = width - endTabWidth) + |> angledLine(angle = 45, endAbsoluteY = baseHeight + endTabHeight, tag = $toFillet2) + |> xLine(endAbsolute = width - endWidth) + |> close() + |> extrude(length = -1 * endTabThickness) + |> fillet(radius = 0.1, tags = [getNextAdjacentEdge(toFillet2)]) + |> patternLinear3d(axis = [0, 1, 0], distance = buildPlateThickness + thicknessTolerance + endTabThickness, instances = nPlates + 1) + +union([base, endTabs]) diff --git a/rust/kcl-lib/tests/pattern_linear_in_module/artifact_commands.snap b/rust/kcl-lib/tests/pattern_linear_in_module/artifact_commands.snap index d3c89da73..b552ecaaf 100644 --- a/rust/kcl-lib/tests/pattern_linear_in_module/artifact_commands.snap +++ b/rust/kcl-lib/tests/pattern_linear_in_module/artifact_commands.snap @@ -338,7 +338,8 @@ description: Artifact commands pattern_linear_in_module.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -408,7 +409,8 @@ description: Artifact commands pattern_linear_in_module.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -478,7 +480,8 @@ description: Artifact commands pattern_linear_in_module.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -548,7 +551,8 @@ description: Artifact commands pattern_linear_in_module.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -618,7 +622,8 @@ description: Artifact commands pattern_linear_in_module.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -688,7 +693,8 @@ description: Artifact commands pattern_linear_in_module.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -758,7 +764,8 @@ description: Artifact commands pattern_linear_in_module.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/pattern_linear_in_module/ast.snap b/rust/kcl-lib/tests/pattern_linear_in_module/ast.snap index b9fcea5c2..22e6a7e6d 100644 --- a/rust/kcl-lib/tests/pattern_linear_in_module/ast.snap +++ b/rust/kcl-lib/tests/pattern_linear_in_module/ast.snap @@ -17,10 +17,10 @@ description: Result of parsing pattern_linear_in_module.kcl "items": [ { "alias": null, - "commentStart": 7, + "commentStart": 0, "end": 0, "name": { - "commentStart": 7, + "commentStart": 0, "end": 0, "name": "thing", "start": 0, @@ -36,16 +36,16 @@ description: Result of parsing pattern_linear_in_module.kcl "type": "ImportStatement" }, { - "commentStart": 29, + "commentStart": 0, "end": 0, "expression": { "arguments": [], "callee": { "abs_path": false, - "commentStart": 31, + "commentStart": 0, "end": 0, "name": { - "commentStart": 31, + "commentStart": 0, "end": 0, "name": "thing", "start": 0, @@ -55,7 +55,7 @@ description: Result of parsing pattern_linear_in_module.kcl "start": 0, "type": "Name" }, - "commentStart": 31, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -72,7 +72,7 @@ description: Result of parsing pattern_linear_in_module.kcl "nonCodeNodes": { "0": [ { - "commentStart": 29, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/pattern_linear_in_module/ops.snap b/rust/kcl-lib/tests/pattern_linear_in_module/ops.snap index 8cb2fb9ea..3a3cc55aa 100644 --- a/rust/kcl-lib/tests/pattern_linear_in_module/ops.snap +++ b/rust/kcl-lib/tests/pattern_linear_in_module/ops.snap @@ -20,7 +20,7 @@ description: Operations executed pattern_linear_in_module.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/pentagon_fillet_sugar/artifact_commands.snap b/rust/kcl-lib/tests/pentagon_fillet_sugar/artifact_commands.snap index add89aa8d..251786167 100644 --- a/rust/kcl-lib/tests/pentagon_fillet_sugar/artifact_commands.snap +++ b/rust/kcl-lib/tests/pentagon_fillet_sugar/artifact_commands.snap @@ -171,7 +171,8 @@ description: Artifact commands pentagon_fillet_sugar.kcl "type": "extrude", "target": "[uuid]", "distance": 200.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -349,7 +350,8 @@ description: Artifact commands pentagon_fillet_sugar.kcl "type": "extrude", "target": "[uuid]", "distance": 100.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -521,7 +523,8 @@ description: Artifact commands pentagon_fillet_sugar.kcl "type": "extrude", "target": "[uuid]", "distance": 100.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/pentagon_fillet_sugar/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/pentagon_fillet_sugar/artifact_graph_flowchart.snap.md index ac15494f3..7f6041800 100644 --- a/rust/kcl-lib/tests/pentagon_fillet_sugar/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/pentagon_fillet_sugar/artifact_graph_flowchart.snap.md @@ -1,25 +1,25 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[163, 188, 0]"] - 3["Segment
[194, 249, 0]"] - 4["Segment
[255, 311, 0]"] - 5["Segment
[317, 373, 0]"] + 2["Path
[161, 186, 0]"] + 3["Segment
[192, 246, 0]"] + 4["Segment
[252, 307, 0]"] + 5["Segment
[313, 368, 0]"] end subgraph path18 [Path] - 18["Path
[472, 523, 0]"] - 19["Segment
[531, 553, 0]"] - 20["Segment
[561, 569, 0]"] + 18["Path
[474, 525, 0]"] + 19["Segment
[533, 555, 0]"] + 20["Segment
[563, 571, 0]"] 21[Solid2d] end subgraph path29 [Path] - 29["Path
[472, 523, 0]"] - 30["Segment
[531, 553, 0]"] - 31["Segment
[561, 569, 0]"] + 29["Path
[474, 525, 0]"] + 30["Segment
[533, 555, 0]"] + 31["Segment
[563, 571, 0]"] 32[Solid2d] end - 1["Plane
[138, 157, 0]"] - 6["Sweep Extrusion
[379, 411, 0]"] + 1["Plane
[138, 155, 0]"] + 6["Sweep Extrusion
[374, 406, 0]"] 7[Wall] 8[Wall] 9[Wall] @@ -31,22 +31,22 @@ flowchart LR 15["SweepEdge Adjacent"] 16["SweepEdge Opposite"] 17["SweepEdge Adjacent"] - 22["Sweep Extrusion
[612, 640, 0]"] + 22["Sweep Extrusion
[614, 642, 0]"] 23[Wall] 24["Cap End"] 25["SweepEdge Opposite"] 26["SweepEdge Adjacent"] - 27["EdgeCut Fillet
[646, 773, 0]"] - 28["EdgeCut Fillet
[646, 773, 0]"] - 33["Sweep Extrusion
[812, 840, 0]"] + 27["EdgeCut Fillet
[648, 775, 0]"] + 28["EdgeCut Fillet
[648, 775, 0]"] + 33["Sweep Extrusion
[814, 842, 0]"] 34[Wall] 35["Cap End"] 36["SweepEdge Opposite"] 37["SweepEdge Adjacent"] - 38["EdgeCut Fillet
[846, 973, 0]"] - 39["EdgeCut Fillet
[846, 973, 0]"] - 40["StartSketchOnFace
[442, 464, 0]"] - 41["StartSketchOnFace
[442, 464, 0]"] + 38["EdgeCut Fillet
[848, 975, 0]"] + 39["EdgeCut Fillet
[848, 975, 0]"] + 40["StartSketchOnFace
[437, 466, 0]"] + 41["StartSketchOnFace
[437, 466, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/pentagon_fillet_sugar/ast.snap b/rust/kcl-lib/tests/pentagon_fillet_sugar/ast.snap index 8a8f3fecf..52b9b2a81 100644 --- a/rust/kcl-lib/tests/pentagon_fillet_sugar/ast.snap +++ b/rust/kcl-lib/tests/pentagon_fillet_sugar/ast.snap @@ -18,7 +18,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "Identifier" }, "init": { - "commentStart": 17, + "commentStart": 0, "end": 0, "raw": "200", "start": 0, @@ -39,19 +39,19 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "VariableDeclaration" }, { - "commentStart": 21, + "commentStart": 0, "declaration": { - "commentStart": 21, + "commentStart": 0, "end": 0, "id": { - "commentStart": 21, + "commentStart": 0, "end": 0, "name": "plumbusLen", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 34, + "commentStart": 0, "end": 0, "raw": "100", "start": 0, @@ -72,19 +72,19 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "VariableDeclaration" }, { - "commentStart": 38, + "commentStart": 0, "declaration": { - "commentStart": 38, + "commentStart": 0, "end": 0, "id": { - "commentStart": 38, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 47, + "commentStart": 0, "end": 0, "raw": "80", "start": 0, @@ -105,26 +105,26 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "VariableDeclaration" }, { - "commentStart": 50, + "commentStart": 0, "declaration": { - "commentStart": 50, + "commentStart": 0, "end": 0, "id": { - "commentStart": 50, + "commentStart": 0, "end": 0, "name": "circ", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 57, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 61, + "commentStart": 0, "end": 0, "key": { - "commentStart": 61, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, @@ -133,7 +133,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 74, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -146,10 +146,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl } }, { - "commentStart": 79, + "commentStart": 0, "end": 0, "key": { - "commentStart": 79, + "commentStart": 0, "end": 0, "name": "angleEnd", "start": 0, @@ -158,7 +158,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 90, + "commentStart": 0, "end": 0, "raw": "360", "start": 0, @@ -171,10 +171,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl } }, { - "commentStart": 97, + "commentStart": 0, "end": 0, "key": { - "commentStart": 97, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -184,10 +184,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 106, + "commentStart": 0, "end": 0, "name": { - "commentStart": 106, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -214,19 +214,19 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "VariableDeclaration" }, { - "commentStart": 114, + "commentStart": 0, "declaration": { - "commentStart": 116, + "commentStart": 0, "end": 0, "id": { - "commentStart": 116, + "commentStart": 0, "end": 0, "name": "triangleLen", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 130, + "commentStart": 0, "end": 0, "raw": "500", "start": 0, @@ -247,12 +247,12 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "VariableDeclaration" }, { - "commentStart": 134, + "commentStart": 0, "declaration": { - "commentStart": 134, + "commentStart": 0, "end": 0, "id": { - "commentStart": 134, + "commentStart": 0, "end": 0, "name": "p", "start": 0, @@ -263,21 +263,28 @@ description: Result of parsing pentagon_fillet_sugar.kcl { "arguments": [ { - "commentStart": 152, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'XY'", + "name": { + "commentStart": 0, + "end": 0, + "name": "XY", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "XY" + "type": "Name", + "type": "Name" } ], "callee": { "abs_path": false, - "commentStart": 138, + "commentStart": 0, "end": 0, "name": { - "commentStart": 138, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -287,7 +294,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "Name" }, - "commentStart": 138, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -296,10 +303,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl { "arguments": [ { - "commentStart": 178, + "commentStart": 0, "elements": [ { - "commentStart": 179, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -311,7 +318,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl } }, { - "commentStart": 182, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -329,7 +336,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "ArrayExpression" }, { - "commentStart": 186, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -338,10 +345,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl ], "callee": { "abs_path": false, - "commentStart": 163, + "commentStart": 0, "end": 0, "name": { - "commentStart": 163, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -351,313 +358,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "Name" }, - "commentStart": 163, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 205, - "end": 0, - "properties": [ - { - "commentStart": 207, - "end": 0, - "key": { - "commentStart": 207, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 215, - "end": 0, - "raw": "60", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 60.0, - "suffix": "None" - } - } - }, - { - "commentStart": 219, - "end": 0, - "key": { - "commentStart": 219, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 228, - "end": 0, - "name": { - "commentStart": 228, - "end": 0, - "name": "triangleLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 243, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 246, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "a" - } - ], - "callee": { - "abs_path": false, - "commentStart": 194, - "end": 0, - "name": { - "commentStart": 194, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 194, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 266, - "end": 0, - "properties": [ - { - "commentStart": 268, - "end": 0, - "key": { - "commentStart": 268, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 276, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - } - }, - { - "commentStart": 281, - "end": 0, - "key": { - "commentStart": 281, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 290, - "end": 0, - "name": { - "commentStart": 290, - "end": 0, - "name": "triangleLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 305, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 308, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "b" - } - ], - "callee": { - "abs_path": false, - "commentStart": 255, - "end": 0, - "name": { - "commentStart": 255, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 255, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 328, - "end": 0, - "properties": [ - { - "commentStart": 330, - "end": 0, - "key": { - "commentStart": 330, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 338, - "end": 0, - "raw": "300", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 300.0, - "suffix": "None" - } - } - }, - { - "commentStart": 343, - "end": 0, - "key": { - "commentStart": 343, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 352, - "end": 0, - "name": { - "commentStart": 352, - "end": 0, - "name": "triangleLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 367, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 370, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "c" - } - ], - "callee": { - "abs_path": false, - "commentStart": 317, - "end": 0, - "name": { - "commentStart": 317, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 317, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -668,7 +369,29 @@ description: Result of parsing pentagon_fillet_sugar.kcl { "type": "LabeledArg", "label": { - "commentStart": 387, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "60", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 60.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -676,10 +399,261 @@ description: Result of parsing pentagon_fillet_sugar.kcl }, "arg": { "abs_path": false, - "commentStart": 396, + "commentStart": 0, "end": 0, "name": { - "commentStart": 396, + "commentStart": 0, + "end": 0, + "name": "triangleLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "a" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "180", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 180.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "triangleLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "b" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "300", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 300.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "triangleLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "c" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, "end": 0, "name": "triangleHeight", "start": 0, @@ -694,10 +668,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl ], "callee": { "abs_path": false, - "commentStart": 379, + "commentStart": 0, "end": 0, "name": { - "commentStart": 379, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -707,7 +681,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "Name" }, - "commentStart": 379, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -715,7 +689,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "unlabeled": null } ], - "commentStart": 138, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -731,12 +705,12 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "VariableDeclaration" }, { - "commentStart": 411, + "commentStart": 0, "declaration": { - "commentStart": 416, + "commentStart": 0, "end": 0, "id": { - "commentStart": 416, + "commentStart": 0, "end": 0, "name": "circl", "start": 0, @@ -751,44 +725,38 @@ description: Result of parsing pentagon_fillet_sugar.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 456, - "end": 0, - "name": { - "commentStart": 456, - "end": 0, - "name": "p", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 459, - "end": 0, - "name": { - "commentStart": 459, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "face", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 442, + "commentStart": 0, "end": 0, "name": { - "commentStart": 442, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -798,26 +766,42 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "Name" }, - "commentStart": 442, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "p", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 487, + "commentStart": 0, "elements": [ { - "commentStart": 488, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 488, + "commentStart": 0, "end": 0, "name": { - "commentStart": 488, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -831,10 +815,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 492, + "commentStart": 0, "end": 0, "name": { - "commentStart": 492, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -850,14 +834,14 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "BinaryExpression" }, { - "commentStart": 500, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 500, + "commentStart": 0, "end": 0, "name": { - "commentStart": 500, + "commentStart": 0, "end": 0, "name": "triangleHeight", "start": 0, @@ -870,7 +854,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl }, "operator": "/", "right": { - "commentStart": 517, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -892,7 +876,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "ArrayExpression" }, { - "commentStart": 521, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -901,10 +885,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl ], "callee": { "abs_path": false, - "commentStart": 472, + "commentStart": 0, "end": 0, "name": { - "commentStart": 472, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -914,7 +898,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "Name" }, - "commentStart": 472, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -924,10 +908,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl "arguments": [ { "abs_path": false, - "commentStart": 535, + "commentStart": 0, "end": 0, "name": { - "commentStart": 535, + "commentStart": 0, "end": 0, "name": "circ", "start": 0, @@ -939,14 +923,14 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "Name" }, { - "commentStart": 541, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", "type": "PipeSubstitution" }, { - "commentStart": 544, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -956,10 +940,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl ], "callee": { "abs_path": false, - "commentStart": 531, + "commentStart": 0, "end": 0, "name": { - "commentStart": 531, + "commentStart": 0, "end": 0, "name": "arc", "start": 0, @@ -969,7 +953,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "Name" }, - "commentStart": 531, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -978,7 +962,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl { "arguments": [ { - "commentStart": 567, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -987,10 +971,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl ], "callee": { "abs_path": false, - "commentStart": 561, + "commentStart": 0, "end": 0, "name": { - "commentStart": 561, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1000,37 +984,37 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "Name" }, - "commentStart": 561, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 442, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, - "commentStart": 435, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 431, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 421, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 422, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -1040,7 +1024,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl { "type": "Parameter", "identifier": { - "commentStart": 425, + "commentStart": 0, "end": 0, "name": "face", "start": 0, @@ -1062,12 +1046,12 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "VariableDeclaration" }, { - "commentStart": 571, + "commentStart": 0, "declaration": { - "commentStart": 573, + "commentStart": 0, "end": 0, "id": { - "commentStart": 573, + "commentStart": 0, "end": 0, "name": "c1", "start": 0, @@ -1077,7 +1061,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "arguments": [ { "argument": { - "commentStart": 585, + "commentStart": 0, "end": 0, "raw": "200", "start": 0, @@ -1088,7 +1072,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "suffix": "None" } }, - "commentStart": 584, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1097,10 +1081,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl }, { "abs_path": false, - "commentStart": 590, + "commentStart": 0, "end": 0, "name": { - "commentStart": 590, + "commentStart": 0, "end": 0, "name": "c", "start": 0, @@ -1114,10 +1098,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl ], "callee": { "abs_path": false, - "commentStart": 578, + "commentStart": 0, "end": 0, "name": { - "commentStart": 578, + "commentStart": 0, "end": 0, "name": "circl", "start": 0, @@ -1127,7 +1111,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "Name" }, - "commentStart": 578, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1143,12 +1127,12 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "VariableDeclaration" }, { - "commentStart": 593, + "commentStart": 0, "declaration": { - "commentStart": 593, + "commentStart": 0, "end": 0, "id": { - "commentStart": 593, + "commentStart": 0, "end": 0, "name": "plumbus1", "start": 0, @@ -1158,10 +1142,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl "body": [ { "abs_path": false, - "commentStart": 604, + "commentStart": 0, "end": 0, "name": { - "commentStart": 604, + "commentStart": 0, "end": 0, "name": "c1", "start": 0, @@ -1177,7 +1161,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl { "type": "LabeledArg", "label": { - "commentStart": 620, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1185,10 +1169,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl }, "arg": { "abs_path": false, - "commentStart": 629, + "commentStart": 0, "end": 0, "name": { - "commentStart": 629, + "commentStart": 0, "end": 0, "name": "plumbusLen", "start": 0, @@ -1203,10 +1187,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl ], "callee": { "abs_path": false, - "commentStart": 612, + "commentStart": 0, "end": 0, "name": { - "commentStart": 612, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1216,7 +1200,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "Name" }, - "commentStart": 612, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1228,14 +1212,14 @@ description: Result of parsing pentagon_fillet_sugar.kcl { "type": "LabeledArg", "label": { - "commentStart": 661, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 670, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -1250,25 +1234,25 @@ description: Result of parsing pentagon_fillet_sugar.kcl { "type": "LabeledArg", "label": { - "commentStart": 680, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 687, + "commentStart": 0, "elements": [ { - "commentStart": 698, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 698, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 698, + "commentStart": 0, "end": 0, "name": "c1", "start": 0, @@ -1276,7 +1260,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "Identifier" }, "property": { - "commentStart": 701, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -1288,7 +1272,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "MemberExpression" }, "property": { - "commentStart": 706, + "commentStart": 0, "end": 0, "name": "arc_tag", "start": 0, @@ -1302,15 +1286,15 @@ description: Result of parsing pentagon_fillet_sugar.kcl { "arguments": [ { - "commentStart": 740, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 740, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 740, + "commentStart": 0, "end": 0, "name": "c1", "start": 0, @@ -1318,7 +1302,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "Identifier" }, "property": { - "commentStart": 743, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -1330,7 +1314,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "MemberExpression" }, "property": { - "commentStart": 748, + "commentStart": 0, "end": 0, "name": "arc_tag", "start": 0, @@ -1344,10 +1328,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl ], "callee": { "abs_path": false, - "commentStart": 724, + "commentStart": 0, "end": 0, "name": { - "commentStart": 724, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -1357,7 +1341,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "Name" }, - "commentStart": 724, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1373,10 +1357,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl ], "callee": { "abs_path": false, - "commentStart": 646, + "commentStart": 0, "end": 0, "name": { - "commentStart": 646, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -1386,7 +1370,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "Name" }, - "commentStart": 646, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1394,7 +1378,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "unlabeled": null } ], - "commentStart": 604, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1410,12 +1394,12 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "VariableDeclaration" }, { - "commentStart": 774, + "commentStart": 0, "declaration": { - "commentStart": 774, + "commentStart": 0, "end": 0, "id": { - "commentStart": 774, + "commentStart": 0, "end": 0, "name": "c2", "start": 0, @@ -1424,7 +1408,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "init": { "arguments": [ { - "commentStart": 785, + "commentStart": 0, "end": 0, "raw": "200", "start": 0, @@ -1437,10 +1421,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl }, { "abs_path": false, - "commentStart": 790, + "commentStart": 0, "end": 0, "name": { - "commentStart": 790, + "commentStart": 0, "end": 0, "name": "a", "start": 0, @@ -1454,10 +1438,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl ], "callee": { "abs_path": false, - "commentStart": 779, + "commentStart": 0, "end": 0, "name": { - "commentStart": 779, + "commentStart": 0, "end": 0, "name": "circl", "start": 0, @@ -1467,7 +1451,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "Name" }, - "commentStart": 779, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1483,12 +1467,12 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "VariableDeclaration" }, { - "commentStart": 793, + "commentStart": 0, "declaration": { - "commentStart": 793, + "commentStart": 0, "end": 0, "id": { - "commentStart": 793, + "commentStart": 0, "end": 0, "name": "plumbus0", "start": 0, @@ -1498,10 +1482,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl "body": [ { "abs_path": false, - "commentStart": 804, + "commentStart": 0, "end": 0, "name": { - "commentStart": 804, + "commentStart": 0, "end": 0, "name": "c2", "start": 0, @@ -1517,7 +1501,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl { "type": "LabeledArg", "label": { - "commentStart": 820, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1525,10 +1509,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl }, "arg": { "abs_path": false, - "commentStart": 829, + "commentStart": 0, "end": 0, "name": { - "commentStart": 829, + "commentStart": 0, "end": 0, "name": "plumbusLen", "start": 0, @@ -1543,10 +1527,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl ], "callee": { "abs_path": false, - "commentStart": 812, + "commentStart": 0, "end": 0, "name": { - "commentStart": 812, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1556,7 +1540,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "Name" }, - "commentStart": 812, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1568,14 +1552,14 @@ description: Result of parsing pentagon_fillet_sugar.kcl { "type": "LabeledArg", "label": { - "commentStart": 861, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 870, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -1590,25 +1574,25 @@ description: Result of parsing pentagon_fillet_sugar.kcl { "type": "LabeledArg", "label": { - "commentStart": 880, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 887, + "commentStart": 0, "elements": [ { - "commentStart": 898, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 898, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 898, + "commentStart": 0, "end": 0, "name": "c2", "start": 0, @@ -1616,7 +1600,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "Identifier" }, "property": { - "commentStart": 901, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -1628,7 +1612,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "MemberExpression" }, "property": { - "commentStart": 906, + "commentStart": 0, "end": 0, "name": "arc_tag", "start": 0, @@ -1642,15 +1626,15 @@ description: Result of parsing pentagon_fillet_sugar.kcl { "arguments": [ { - "commentStart": 940, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 940, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 940, + "commentStart": 0, "end": 0, "name": "c2", "start": 0, @@ -1658,7 +1642,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "Identifier" }, "property": { - "commentStart": 943, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, @@ -1670,7 +1654,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "type": "MemberExpression" }, "property": { - "commentStart": 948, + "commentStart": 0, "end": 0, "name": "arc_tag", "start": 0, @@ -1684,10 +1668,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl ], "callee": { "abs_path": false, - "commentStart": 924, + "commentStart": 0, "end": 0, "name": { - "commentStart": 924, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -1697,7 +1681,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "Name" }, - "commentStart": 924, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1713,10 +1697,10 @@ description: Result of parsing pentagon_fillet_sugar.kcl ], "callee": { "abs_path": false, - "commentStart": 846, + "commentStart": 0, "end": 0, "name": { - "commentStart": 846, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -1726,7 +1710,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "start": 0, "type": "Name" }, - "commentStart": 846, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1734,7 +1718,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "unlabeled": null } ], - "commentStart": 804, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1756,7 +1740,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl "nonCodeNodes": { "3": [ { - "commentStart": 114, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1767,7 +1751,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl ], "5": [ { - "commentStart": 411, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1778,7 +1762,7 @@ description: Result of parsing pentagon_fillet_sugar.kcl ], "6": [ { - "commentStart": 571, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/pentagon_fillet_sugar/input.kcl b/rust/kcl-lib/tests/pentagon_fillet_sugar/input.kcl index c7c432cf9..9f3e304f6 100644 --- a/rust/kcl-lib/tests/pentagon_fillet_sugar/input.kcl +++ b/rust/kcl-lib/tests/pentagon_fillet_sugar/input.kcl @@ -8,15 +8,15 @@ circ = { } triangleLen = 500 -p = startSketchOn('XY') +p = startSketchOn(XY) |> startProfileAt([0, 0], %) - |> angledLine({ angle = 60, length = triangleLen }, %, $a) - |> angledLine({ angle = 180, length = triangleLen }, %, $b) - |> angledLine({ angle = 300, length = triangleLen }, %, $c) + |> angledLine(angle = 60, length = triangleLen, tag = $a) + |> angledLine(angle = 180, length = triangleLen, tag = $b) + |> angledLine(angle = 300, length = triangleLen, tag = $c) |> extrude(length = triangleHeight) fn circl(x, face) { - return startSketchOn(p, face) + return startSketchOn(p, face = face) |> startProfileAt([x + radius, triangleHeight / 2], %) |> arc(circ, %, $arc_tag) |> close(%) diff --git a/rust/kcl-lib/tests/pentagon_fillet_sugar/ops.snap b/rust/kcl-lib/tests/pentagon_fillet_sugar/ops.snap index 7d235a270..3be272b64 100644 --- a/rust/kcl-lib/tests/pentagon_fillet_sugar/ops.snap +++ b/rust/kcl-lib/tests/pentagon_fillet_sugar/ops.snap @@ -5,10 +5,10 @@ description: Operations executed pentagon_fillet_sugar.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { - "type": "String", - "value": "XY" + "type": "Plane", + "artifact_id": "[uuid]" }, "sourceRange": [] } @@ -56,8 +56,8 @@ description: Operations executed pentagon_fillet_sugar.kcl "type": "FunctionCall", "name": "circl", "functionSourceRange": [ - 421, - 571, + 416, + 573, 0 ], "unlabeledArg": null, @@ -67,16 +67,7 @@ description: Operations executed pentagon_fillet_sugar.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "c", @@ -88,7 +79,15 @@ description: Operations executed pentagon_fillet_sugar.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupEnd" @@ -180,8 +179,8 @@ description: Operations executed pentagon_fillet_sugar.kcl "type": "FunctionCall", "name": "circl", "functionSourceRange": [ - 421, - 571, + 416, + 573, 0 ], "unlabeledArg": null, @@ -191,16 +190,7 @@ description: Operations executed pentagon_fillet_sugar.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "a", @@ -212,7 +202,15 @@ description: Operations executed pentagon_fillet_sugar.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "type": "GroupEnd" diff --git a/rust/kcl-lib/tests/pentagon_fillet_sugar/program_memory.snap b/rust/kcl-lib/tests/pentagon_fillet_sugar/program_memory.snap index 811883c76..658bffbf6 100644 --- a/rust/kcl-lib/tests/pentagon_fillet_sugar/program_memory.snap +++ b/rust/kcl-lib/tests/pentagon_fillet_sugar/program_memory.snap @@ -45,9 +45,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl ], "radius": 80.0, "tag": { - "commentStart": 544, - "end": 552, - "start": 544, + "commentStart": 546, + "end": 554, + "start": 546, "type": "TagDeclarator", "value": "arc_tag" }, @@ -88,17 +88,26 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -110,9 +119,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 246, - "end": 248, - "start": 246, + "commentStart": 243, + "end": 245, + "start": 243, "type": "TagDeclarator", "value": "a" }, @@ -123,9 +132,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 308, - "end": 310, - "start": 308, + "commentStart": 304, + "end": 306, + "start": 304, "type": "TagDeclarator", "value": "b" }, @@ -136,9 +145,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 370, - "end": 372, - "start": 370, + "commentStart": 365, + "end": 367, + "start": 365, "type": "TagDeclarator", "value": "c" }, @@ -159,9 +168,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl 0.0 ], "tag": { - "commentStart": 246, - "end": 248, - "start": 246, + "commentStart": 243, + "end": 245, + "start": 243, "type": "TagDeclarator", "value": "a" }, @@ -184,9 +193,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl 433.0127 ], "tag": { - "commentStart": 308, - "end": 310, - "start": 308, + "commentStart": 304, + "end": 306, + "start": 304, "type": "TagDeclarator", "value": "b" }, @@ -209,9 +218,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl 433.0127 ], "tag": { - "commentStart": 370, - "end": 372, - "start": 370, + "commentStart": 365, + "end": 367, + "start": 365, "type": "TagDeclarator", "value": "c" }, @@ -233,22 +242,34 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -356,9 +377,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl ], "radius": 80.0, "tag": { - "commentStart": 544, - "end": 552, - "start": 544, + "commentStart": 546, + "end": 554, + "start": 546, "type": "TagDeclarator", "value": "arc_tag" }, @@ -399,17 +420,26 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -421,9 +451,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 246, - "end": 248, - "start": 246, + "commentStart": 243, + "end": 245, + "start": 243, "type": "TagDeclarator", "value": "a" }, @@ -434,9 +464,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 308, - "end": 310, - "start": 308, + "commentStart": 304, + "end": 306, + "start": 304, "type": "TagDeclarator", "value": "b" }, @@ -447,9 +477,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 370, - "end": 372, - "start": 370, + "commentStart": 365, + "end": 367, + "start": 365, "type": "TagDeclarator", "value": "c" }, @@ -470,9 +500,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl 0.0 ], "tag": { - "commentStart": 246, - "end": 248, - "start": 246, + "commentStart": 243, + "end": 245, + "start": 243, "type": "TagDeclarator", "value": "a" }, @@ -495,9 +525,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl 433.0127 ], "tag": { - "commentStart": 308, - "end": 310, - "start": 308, + "commentStart": 304, + "end": 306, + "start": 304, "type": "TagDeclarator", "value": "b" }, @@ -520,9 +550,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl 433.0127 ], "tag": { - "commentStart": 370, - "end": 372, - "start": 370, + "commentStart": 365, + "end": 367, + "start": 365, "type": "TagDeclarator", "value": "c" }, @@ -544,22 +574,34 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -704,9 +746,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 246, - "end": 248, - "start": 246, + "commentStart": 243, + "end": 245, + "start": 243, "type": "TagDeclarator", "value": "a" }, @@ -717,9 +759,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 308, - "end": 310, - "start": 308, + "commentStart": 304, + "end": 306, + "start": 304, "type": "TagDeclarator", "value": "b" }, @@ -730,9 +772,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 370, - "end": 372, - "start": 370, + "commentStart": 365, + "end": 367, + "start": 365, "type": "TagDeclarator", "value": "c" }, @@ -753,9 +795,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl 0.0 ], "tag": { - "commentStart": 246, - "end": 248, - "start": 246, + "commentStart": 243, + "end": 245, + "start": 243, "type": "TagDeclarator", "value": "a" }, @@ -778,9 +820,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl 433.0127 ], "tag": { - "commentStart": 308, - "end": 310, - "start": 308, + "commentStart": 304, + "end": 306, + "start": 304, "type": "TagDeclarator", "value": "b" }, @@ -803,9 +845,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl 433.0127 ], "tag": { - "commentStart": 370, - "end": 372, - "start": 370, + "commentStart": 365, + "end": 367, + "start": 365, "type": "TagDeclarator", "value": "c" }, @@ -827,22 +869,34 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -906,9 +960,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 544, - "end": 552, - "start": 544, + "commentStart": 546, + "end": 554, + "start": 546, "type": "TagDeclarator", "value": "arc_tag" }, @@ -935,9 +989,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl ], "radius": 80.0, "tag": { - "commentStart": 544, - "end": 552, - "start": 544, + "commentStart": 546, + "end": 554, + "start": 546, "type": "TagDeclarator", "value": "arc_tag" }, @@ -978,17 +1032,26 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1000,9 +1063,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 246, - "end": 248, - "start": 246, + "commentStart": 243, + "end": 245, + "start": 243, "type": "TagDeclarator", "value": "a" }, @@ -1013,9 +1076,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 308, - "end": 310, - "start": 308, + "commentStart": 304, + "end": 306, + "start": 304, "type": "TagDeclarator", "value": "b" }, @@ -1026,9 +1089,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 370, - "end": 372, - "start": 370, + "commentStart": 365, + "end": 367, + "start": 365, "type": "TagDeclarator", "value": "c" }, @@ -1049,9 +1112,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl 0.0 ], "tag": { - "commentStart": 246, - "end": 248, - "start": 246, + "commentStart": 243, + "end": 245, + "start": 243, "type": "TagDeclarator", "value": "a" }, @@ -1074,9 +1137,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl 433.0127 ], "tag": { - "commentStart": 308, - "end": 310, - "start": 308, + "commentStart": 304, + "end": 306, + "start": 304, "type": "TagDeclarator", "value": "b" }, @@ -1099,9 +1162,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl 433.0127 ], "tag": { - "commentStart": 370, - "end": 372, - "start": 370, + "commentStart": 365, + "end": 367, + "start": 365, "type": "TagDeclarator", "value": "c" }, @@ -1123,22 +1186,34 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1230,14 +1305,36 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl { "type": "fillet", "id": "[uuid]", - "radius": 5.0, + "radius": { + "n": 5.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 5.0, + "radius": { + "n": 5.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -1259,9 +1356,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 544, - "end": 552, - "start": 544, + "commentStart": 546, + "end": 554, + "start": 546, "type": "TagDeclarator", "value": "arc_tag" }, @@ -1288,9 +1385,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl ], "radius": 80.0, "tag": { - "commentStart": 544, - "end": 552, - "start": 544, + "commentStart": 546, + "end": 554, + "start": 546, "type": "TagDeclarator", "value": "arc_tag" }, @@ -1331,17 +1428,26 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1353,9 +1459,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 246, - "end": 248, - "start": 246, + "commentStart": 243, + "end": 245, + "start": 243, "type": "TagDeclarator", "value": "a" }, @@ -1366,9 +1472,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 308, - "end": 310, - "start": 308, + "commentStart": 304, + "end": 306, + "start": 304, "type": "TagDeclarator", "value": "b" }, @@ -1379,9 +1485,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 370, - "end": 372, - "start": 370, + "commentStart": 365, + "end": 367, + "start": 365, "type": "TagDeclarator", "value": "c" }, @@ -1402,9 +1508,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl 0.0 ], "tag": { - "commentStart": 246, - "end": 248, - "start": 246, + "commentStart": 243, + "end": 245, + "start": 243, "type": "TagDeclarator", "value": "a" }, @@ -1427,9 +1533,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl 433.0127 ], "tag": { - "commentStart": 308, - "end": 310, - "start": 308, + "commentStart": 304, + "end": 306, + "start": 304, "type": "TagDeclarator", "value": "b" }, @@ -1452,9 +1558,9 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl 433.0127 ], "tag": { - "commentStart": 370, - "end": 372, - "start": 370, + "commentStart": 365, + "end": 367, + "start": 365, "type": "TagDeclarator", "value": "c" }, @@ -1476,22 +1582,34 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1583,14 +1701,36 @@ description: Variables in memory after executing pentagon_fillet_sugar.kcl { "type": "fillet", "id": "[uuid]", - "radius": 5.0, + "radius": { + "n": 5.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 5.0, + "radius": { + "n": 5.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } diff --git a/rust/kcl-lib/tests/pentagon_fillet_sugar/unparsed.snap b/rust/kcl-lib/tests/pentagon_fillet_sugar/unparsed.snap index aa45e4c96..d20d9a206 100644 --- a/rust/kcl-lib/tests/pentagon_fillet_sugar/unparsed.snap +++ b/rust/kcl-lib/tests/pentagon_fillet_sugar/unparsed.snap @@ -14,13 +14,13 @@ circ = { triangleLen = 500 p = startSketchOn(XY) |> startProfileAt([0, 0], %) - |> angledLine({ angle = 60, length = triangleLen }, %, $a) - |> angledLine({ angle = 180, length = triangleLen }, %, $b) - |> angledLine({ angle = 300, length = triangleLen }, %, $c) + |> angledLine(angle = 60, length = triangleLen, tag = $a) + |> angledLine(angle = 180, length = triangleLen, tag = $b) + |> angledLine(angle = 300, length = triangleLen, tag = $c) |> extrude(length = triangleHeight) fn circl(x, face) { - return startSketchOn(p, face) + return startSketchOn(p, face = face) |> startProfileAt([x + radius, triangleHeight / 2], %) |> arc(circ, %, $arc_tag) |> close(%) diff --git a/rust/kcl-lib/tests/pipe_as_arg/artifact_commands.snap b/rust/kcl-lib/tests/pipe_as_arg/artifact_commands.snap index 9b440bdd0..8031aa681 100644 --- a/rust/kcl-lib/tests/pipe_as_arg/artifact_commands.snap +++ b/rust/kcl-lib/tests/pipe_as_arg/artifact_commands.snap @@ -196,7 +196,8 @@ description: Artifact commands pipe_as_arg.kcl "type": "extrude", "target": "[uuid]", "distance": 400.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/pipe_as_arg/ast.snap b/rust/kcl-lib/tests/pipe_as_arg/ast.snap index ce6c70cc1..3fd097b8d 100644 --- a/rust/kcl-lib/tests/pipe_as_arg/ast.snap +++ b/rust/kcl-lib/tests/pipe_as_arg/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing pipe_as_arg.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -21,26 +21,26 @@ description: Result of parsing pipe_as_arg.kcl "body": { "body": [ { - "commentStart": 28, + "commentStart": 0, "declaration": { - "commentStart": 28, + "commentStart": 0, "end": 0, "id": { - "commentStart": 28, + "commentStart": 0, "end": 0, "name": "l", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 32, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 32, + "commentStart": 0, "end": 0, "name": { - "commentStart": 32, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -53,7 +53,7 @@ description: Result of parsing pipe_as_arg.kcl }, "operator": "/", "right": { - "commentStart": 41, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -78,23 +78,23 @@ description: Result of parsing pipe_as_arg.kcl "type": "VariableDeclaration" }, { - "commentStart": 45, + "commentStart": 0, "declaration": { - "commentStart": 45, + "commentStart": 0, "end": 0, "id": { - "commentStart": 45, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 49, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 49, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -102,7 +102,7 @@ description: Result of parsing pipe_as_arg.kcl "type": "Identifier" }, "property": { - "commentStart": 56, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -127,23 +127,23 @@ description: Result of parsing pipe_as_arg.kcl "type": "VariableDeclaration" }, { - "commentStart": 61, + "commentStart": 0, "declaration": { - "commentStart": 61, + "commentStart": 0, "end": 0, "id": { - "commentStart": 61, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 65, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 65, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -151,7 +151,7 @@ description: Result of parsing pipe_as_arg.kcl "type": "Identifier" }, "property": { - "commentStart": 72, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -176,30 +176,30 @@ description: Result of parsing pipe_as_arg.kcl "type": "VariableDeclaration" }, { - "commentStart": 77, + "commentStart": 0, "declaration": { - "commentStart": 77, + "commentStart": 0, "end": 0, "id": { - "commentStart": 77, + "commentStart": 0, "end": 0, "name": "p0", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 82, + "commentStart": 0, "elements": [ { - "commentStart": 83, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 84, + "commentStart": 0, "end": 0, "name": { - "commentStart": 84, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -210,7 +210,7 @@ description: Result of parsing pipe_as_arg.kcl "type": "Name", "type": "Name" }, - "commentStart": 83, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -220,10 +220,10 @@ description: Result of parsing pipe_as_arg.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 88, + "commentStart": 0, "end": 0, "name": { - "commentStart": 88, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -239,15 +239,15 @@ description: Result of parsing pipe_as_arg.kcl "type": "BinaryExpression" }, { - "commentStart": 91, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 92, + "commentStart": 0, "end": 0, "name": { - "commentStart": 92, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -258,7 +258,7 @@ description: Result of parsing pipe_as_arg.kcl "type": "Name", "type": "Name" }, - "commentStart": 91, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -268,10 +268,10 @@ description: Result of parsing pipe_as_arg.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 96, + "commentStart": 0, "end": 0, "name": { - "commentStart": 96, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -302,30 +302,30 @@ description: Result of parsing pipe_as_arg.kcl "type": "VariableDeclaration" }, { - "commentStart": 101, + "commentStart": 0, "declaration": { - "commentStart": 101, + "commentStart": 0, "end": 0, "id": { - "commentStart": 101, + "commentStart": 0, "end": 0, "name": "p1", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 106, + "commentStart": 0, "elements": [ { - "commentStart": 107, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 108, + "commentStart": 0, "end": 0, "name": { - "commentStart": 108, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -336,7 +336,7 @@ description: Result of parsing pipe_as_arg.kcl "type": "Name", "type": "Name" }, - "commentStart": 107, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -346,10 +346,10 @@ description: Result of parsing pipe_as_arg.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 112, + "commentStart": 0, "end": 0, "name": { - "commentStart": 112, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -365,14 +365,14 @@ description: Result of parsing pipe_as_arg.kcl "type": "BinaryExpression" }, { - "commentStart": 115, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 115, + "commentStart": 0, "end": 0, "name": { - "commentStart": 115, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -386,10 +386,10 @@ description: Result of parsing pipe_as_arg.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 119, + "commentStart": 0, "end": 0, "name": { - "commentStart": 119, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -420,29 +420,29 @@ description: Result of parsing pipe_as_arg.kcl "type": "VariableDeclaration" }, { - "commentStart": 124, + "commentStart": 0, "declaration": { - "commentStart": 124, + "commentStart": 0, "end": 0, "id": { - "commentStart": 124, + "commentStart": 0, "end": 0, "name": "p2", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 129, + "commentStart": 0, "elements": [ { - "commentStart": 130, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 130, + "commentStart": 0, "end": 0, "name": { - "commentStart": 130, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -456,10 +456,10 @@ description: Result of parsing pipe_as_arg.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 134, + "commentStart": 0, "end": 0, "name": { - "commentStart": 134, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -475,14 +475,14 @@ description: Result of parsing pipe_as_arg.kcl "type": "BinaryExpression" }, { - "commentStart": 137, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 137, + "commentStart": 0, "end": 0, "name": { - "commentStart": 137, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -496,10 +496,10 @@ description: Result of parsing pipe_as_arg.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 141, + "commentStart": 0, "end": 0, "name": { - "commentStart": 141, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -530,29 +530,29 @@ description: Result of parsing pipe_as_arg.kcl "type": "VariableDeclaration" }, { - "commentStart": 146, + "commentStart": 0, "declaration": { - "commentStart": 146, + "commentStart": 0, "end": 0, "id": { - "commentStart": 146, + "commentStart": 0, "end": 0, "name": "p3", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 151, + "commentStart": 0, "elements": [ { - "commentStart": 152, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 152, + "commentStart": 0, "end": 0, "name": { - "commentStart": 152, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -566,10 +566,10 @@ description: Result of parsing pipe_as_arg.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 156, + "commentStart": 0, "end": 0, "name": { - "commentStart": 156, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -585,15 +585,15 @@ description: Result of parsing pipe_as_arg.kcl "type": "BinaryExpression" }, { - "commentStart": 159, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 160, + "commentStart": 0, "end": 0, "name": { - "commentStart": 160, + "commentStart": 0, "end": 0, "name": "l", "start": 0, @@ -604,7 +604,7 @@ description: Result of parsing pipe_as_arg.kcl "type": "Name", "type": "Name" }, - "commentStart": 159, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -614,10 +614,10 @@ description: Result of parsing pipe_as_arg.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 164, + "commentStart": 0, "end": 0, "name": { - "commentStart": 164, + "commentStart": 0, "end": 0, "name": "y", "start": 0, @@ -654,10 +654,10 @@ description: Result of parsing pipe_as_arg.kcl "arguments": [ { "abs_path": false, - "commentStart": 191, + "commentStart": 0, "end": 0, "name": { - "commentStart": 191, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -671,10 +671,10 @@ description: Result of parsing pipe_as_arg.kcl ], "callee": { "abs_path": false, - "commentStart": 177, + "commentStart": 0, "end": 0, "name": { - "commentStart": 177, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -684,7 +684,7 @@ description: Result of parsing pipe_as_arg.kcl "start": 0, "type": "Name" }, - "commentStart": 177, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -694,10 +694,10 @@ description: Result of parsing pipe_as_arg.kcl "arguments": [ { "abs_path": false, - "commentStart": 217, + "commentStart": 0, "end": 0, "name": { - "commentStart": 217, + "commentStart": 0, "end": 0, "name": "p0", "start": 0, @@ -709,7 +709,7 @@ description: Result of parsing pipe_as_arg.kcl "type": "Name" }, { - "commentStart": 221, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -718,10 +718,10 @@ description: Result of parsing pipe_as_arg.kcl ], "callee": { "abs_path": false, - "commentStart": 202, + "commentStart": 0, "end": 0, "name": { - "commentStart": 202, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -731,7 +731,7 @@ description: Result of parsing pipe_as_arg.kcl "start": 0, "type": "Name" }, - "commentStart": 202, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -742,7 +742,7 @@ description: Result of parsing pipe_as_arg.kcl { "type": "LabeledArg", "label": { - "commentStart": 236, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -750,10 +750,10 @@ description: Result of parsing pipe_as_arg.kcl }, "arg": { "abs_path": false, - "commentStart": 250, + "commentStart": 0, "end": 0, "name": { - "commentStart": 250, + "commentStart": 0, "end": 0, "name": "p1", "start": 0, @@ -768,10 +768,10 @@ description: Result of parsing pipe_as_arg.kcl ], "callee": { "abs_path": false, - "commentStart": 231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 231, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -781,7 +781,7 @@ description: Result of parsing pipe_as_arg.kcl "start": 0, "type": "Name" }, - "commentStart": 231, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -793,7 +793,7 @@ description: Result of parsing pipe_as_arg.kcl { "type": "LabeledArg", "label": { - "commentStart": 266, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -801,10 +801,10 @@ description: Result of parsing pipe_as_arg.kcl }, "arg": { "abs_path": false, - "commentStart": 280, + "commentStart": 0, "end": 0, "name": { - "commentStart": 280, + "commentStart": 0, "end": 0, "name": "p2", "start": 0, @@ -819,10 +819,10 @@ description: Result of parsing pipe_as_arg.kcl ], "callee": { "abs_path": false, - "commentStart": 261, + "commentStart": 0, "end": 0, "name": { - "commentStart": 261, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -832,7 +832,7 @@ description: Result of parsing pipe_as_arg.kcl "start": 0, "type": "Name" }, - "commentStart": 261, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -844,7 +844,7 @@ description: Result of parsing pipe_as_arg.kcl { "type": "LabeledArg", "label": { - "commentStart": 296, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -852,10 +852,10 @@ description: Result of parsing pipe_as_arg.kcl }, "arg": { "abs_path": false, - "commentStart": 310, + "commentStart": 0, "end": 0, "name": { - "commentStart": 310, + "commentStart": 0, "end": 0, "name": "p3", "start": 0, @@ -870,10 +870,10 @@ description: Result of parsing pipe_as_arg.kcl ], "callee": { "abs_path": false, - "commentStart": 291, + "commentStart": 0, "end": 0, "name": { - "commentStart": 291, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -883,7 +883,7 @@ description: Result of parsing pipe_as_arg.kcl "start": 0, "type": "Name" }, - "commentStart": 291, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -895,7 +895,7 @@ description: Result of parsing pipe_as_arg.kcl { "type": "LabeledArg", "label": { - "commentStart": 326, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -903,10 +903,10 @@ description: Result of parsing pipe_as_arg.kcl }, "arg": { "abs_path": false, - "commentStart": 340, + "commentStart": 0, "end": 0, "name": { - "commentStart": 340, + "commentStart": 0, "end": 0, "name": "p0", "start": 0, @@ -921,10 +921,10 @@ description: Result of parsing pipe_as_arg.kcl ], "callee": { "abs_path": false, - "commentStart": 321, + "commentStart": 0, "end": 0, "name": { - "commentStart": 321, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -934,7 +934,7 @@ description: Result of parsing pipe_as_arg.kcl "start": 0, "type": "Name" }, - "commentStart": 321, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -944,7 +944,7 @@ description: Result of parsing pipe_as_arg.kcl { "arguments": [ { - "commentStart": 357, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -953,10 +953,10 @@ description: Result of parsing pipe_as_arg.kcl ], "callee": { "abs_path": false, - "commentStart": 351, + "commentStart": 0, "end": 0, "name": { - "commentStart": 351, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -966,7 +966,7 @@ description: Result of parsing pipe_as_arg.kcl "start": 0, "type": "Name" }, - "commentStart": 351, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -977,7 +977,7 @@ description: Result of parsing pipe_as_arg.kcl { "type": "LabeledArg", "label": { - "commentStart": 375, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -985,10 +985,10 @@ description: Result of parsing pipe_as_arg.kcl }, "arg": { "abs_path": false, - "commentStart": 384, + "commentStart": 0, "end": 0, "name": { - "commentStart": 384, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1003,10 +1003,10 @@ description: Result of parsing pipe_as_arg.kcl ], "callee": { "abs_path": false, - "commentStart": 367, + "commentStart": 0, "end": 0, "name": { - "commentStart": 367, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1016,7 +1016,7 @@ description: Result of parsing pipe_as_arg.kcl "start": 0, "type": "Name" }, - "commentStart": 367, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1024,26 +1024,26 @@ description: Result of parsing pipe_as_arg.kcl "unlabeled": null } ], - "commentStart": 177, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, - "commentStart": 166, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 24, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "6": [ { - "commentStart": 166, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1057,13 +1057,13 @@ description: Result of parsing pipe_as_arg.kcl }, "start": 0 }, - "commentStart": 7, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 8, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1073,7 +1073,7 @@ description: Result of parsing pipe_as_arg.kcl { "type": "Parameter", "identifier": { - "commentStart": 16, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -1095,12 +1095,12 @@ description: Result of parsing pipe_as_arg.kcl "type": "VariableDeclaration" }, { - "commentStart": 393, + "commentStart": 0, "declaration": { - "commentStart": 398, + "commentStart": 0, "end": 0, "id": { - "commentStart": 398, + "commentStart": 0, "end": 0, "name": "double", "start": 0, @@ -1111,14 +1111,14 @@ description: Result of parsing pipe_as_arg.kcl "body": [ { "argument": { - "commentStart": 419, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 419, + "commentStart": 0, "end": 0, "name": { - "commentStart": 419, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -1131,7 +1131,7 @@ description: Result of parsing pipe_as_arg.kcl }, "operator": "*", "right": { - "commentStart": 423, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1146,24 +1146,24 @@ description: Result of parsing pipe_as_arg.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 412, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 408, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 404, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 405, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -1185,12 +1185,12 @@ description: Result of parsing pipe_as_arg.kcl "type": "VariableDeclaration" }, { - "commentStart": 427, + "commentStart": 0, "declaration": { - "commentStart": 430, + "commentStart": 0, "end": 0, "id": { - "commentStart": 430, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -1201,7 +1201,7 @@ description: Result of parsing pipe_as_arg.kcl "body": [ { "argument": { - "commentStart": 449, + "commentStart": 0, "end": 0, "raw": "200", "start": 0, @@ -1212,18 +1212,18 @@ description: Result of parsing pipe_as_arg.kcl "suffix": "None" } }, - "commentStart": 442, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 438, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 435, + "commentStart": 0, "end": 0, "params": [], "start": 0, @@ -1240,12 +1240,12 @@ description: Result of parsing pipe_as_arg.kcl "type": "VariableDeclaration" }, { - "commentStart": 454, + "commentStart": 0, "declaration": { - "commentStart": 456, + "commentStart": 0, "end": 0, "id": { - "commentStart": 456, + "commentStart": 0, "end": 0, "name": "myCube", "start": 0, @@ -1256,7 +1256,7 @@ description: Result of parsing pipe_as_arg.kcl { "body": [ { - "commentStart": 470, + "commentStart": 0, "end": 0, "raw": "200", "start": 0, @@ -1270,7 +1270,7 @@ description: Result of parsing pipe_as_arg.kcl { "arguments": [ { - "commentStart": 486, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1279,10 +1279,10 @@ description: Result of parsing pipe_as_arg.kcl ], "callee": { "abs_path": false, - "commentStart": 479, + "commentStart": 0, "end": 0, "name": { - "commentStart": 479, + "commentStart": 0, "end": 0, "name": "double", "start": 0, @@ -1292,24 +1292,24 @@ description: Result of parsing pipe_as_arg.kcl "start": 0, "type": "Name" }, - "commentStart": 479, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 470, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, { - "commentStart": 490, + "commentStart": 0, "elements": [ { - "commentStart": 491, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1321,7 +1321,7 @@ description: Result of parsing pipe_as_arg.kcl } }, { - "commentStart": 494, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1341,10 +1341,10 @@ description: Result of parsing pipe_as_arg.kcl ], "callee": { "abs_path": false, - "commentStart": 465, + "commentStart": 0, "end": 0, "name": { - "commentStart": 465, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -1354,7 +1354,7 @@ description: Result of parsing pipe_as_arg.kcl "start": 0, "type": "Name" }, - "commentStart": 465, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1376,7 +1376,7 @@ description: Result of parsing pipe_as_arg.kcl "nonCodeNodes": { "0": [ { - "commentStart": 393, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1387,7 +1387,7 @@ description: Result of parsing pipe_as_arg.kcl ], "2": [ { - "commentStart": 454, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/pipe_as_arg/ops.snap b/rust/kcl-lib/tests/pipe_as_arg/ops.snap index cafb268a6..fe7aeadd2 100644 --- a/rust/kcl-lib/tests/pipe_as_arg/ops.snap +++ b/rust/kcl-lib/tests/pipe_as_arg/ops.snap @@ -38,7 +38,7 @@ description: Operations executed pipe_as_arg.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -58,7 +58,13 @@ description: Operations executed pipe_as_arg.kcl "type": "Number", "value": 400.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] diff --git a/rust/kcl-lib/tests/pipe_as_arg/program_memory.snap b/rust/kcl-lib/tests/pipe_as_arg/program_memory.snap index ad063dc3a..43a3ebba9 100644 --- a/rust/kcl-lib/tests/pipe_as_arg/program_memory.snap +++ b/rust/kcl-lib/tests/pipe_as_arg/program_memory.snap @@ -153,22 +153,34 @@ description: Variables in memory after executing pipe_as_arg.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/ast.snap b/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/ast.snap index 963899d9c..dc6339e0d 100644 --- a/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/ast.snap +++ b/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing pipe_substitution_inside_function_called_from_pip { "commentStart": 0, "declaration": { - "commentStart": 64, + "commentStart": 0, "end": 0, "id": { - "commentStart": 64, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -22,30 +22,30 @@ description: Result of parsing pipe_substitution_inside_function_called_from_pip "body": [ { "argument": { - "commentStart": 86, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", "type": "PipeSubstitution" }, - "commentStart": 79, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 75, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 65, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 66, + "commentStart": 0, "end": 0, "name": "ignored", "start": 0, @@ -70,12 +70,12 @@ description: Result of parsing pipe_substitution_inside_function_called_from_pip "type": "VariableDeclaration" }, { - "commentStart": 89, + "commentStart": 0, "declaration": { - "commentStart": 91, + "commentStart": 0, "end": 0, "id": { - "commentStart": 91, + "commentStart": 0, "end": 0, "name": "answer", "start": 0, @@ -84,7 +84,7 @@ description: Result of parsing pipe_substitution_inside_function_called_from_pip "init": { "body": [ { - "commentStart": 100, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -93,7 +93,7 @@ description: Result of parsing pipe_substitution_inside_function_called_from_pip { "arguments": [ { - "commentStart": 109, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -102,10 +102,10 @@ description: Result of parsing pipe_substitution_inside_function_called_from_pip ], "callee": { "abs_path": false, - "commentStart": 107, + "commentStart": 0, "end": 0, "name": { - "commentStart": 107, + "commentStart": 0, "end": 0, "name": "f", "start": 0, @@ -115,14 +115,14 @@ description: Result of parsing pipe_substitution_inside_function_called_from_pip "start": 0, "type": "Name" }, - "commentStart": 107, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 100, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -144,7 +144,7 @@ description: Result of parsing pipe_substitution_inside_function_called_from_pip "nonCodeNodes": { "0": [ { - "commentStart": 89, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/execution_error.snap b/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/execution_error.snap index f3b904e14..57d4f33ce 100644 --- a/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/execution_error.snap +++ b/rust/kcl-lib/tests/pipe_substitution_inside_function_called_from_pipeline/execution_error.snap @@ -1,5 +1,5 @@ --- -source: kcl/src/simulation_tests.rs +source: kcl-lib/src/simulation_tests.rs description: Error from executing pipe_substitution_inside_function_called_from_pipeline.kcl --- KCL Semantic error diff --git a/rust/kcl-lib/tests/poop_chute/artifact_commands.snap b/rust/kcl-lib/tests/poop_chute/artifact_commands.snap index 020bc0418..cfbc1d0b5 100644 --- a/rust/kcl-lib/tests/poop_chute/artifact_commands.snap +++ b/rust/kcl-lib/tests/poop_chute/artifact_commands.snap @@ -330,7 +330,8 @@ description: Artifact commands poop_chute.kcl "unit": "degrees", "value": 90.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { @@ -913,7 +914,8 @@ description: Artifact commands poop_chute.kcl "type": "extrude", "target": "[uuid]", "distance": 1.5, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/poop_chute/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/poop_chute/artifact_graph_flowchart.snap.md index a4d34775e..40a9759a9 100644 --- a/rust/kcl-lib/tests/poop_chute/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/poop_chute/artifact_graph_flowchart.snap.md @@ -3,39 +3,39 @@ flowchart LR subgraph path2 [Path] 2["Path
[206, 250, 0]"] 3["Segment
[256, 290, 0]"] - 4["Segment
[296, 359, 0]"] - 5["Segment
[365, 392, 0]"] - 6["Segment
[398, 429, 0]"] - 7["Segment
[435, 470, 0]"] - 8["Segment
[476, 575, 0]"] - 9["Segment
[581, 612, 0]"] - 10["Segment
[618, 696, 0]"] - 11["Segment
[702, 729, 0]"] - 12["Segment
[735, 757, 0]"] - 13["Segment
[763, 798, 0]"] - 14["Segment
[804, 850, 0]"] - 15["Segment
[856, 864, 0]"] + 4["Segment
[296, 365, 0]"] + 5["Segment
[371, 398, 0]"] + 6["Segment
[404, 435, 0]"] + 7["Segment
[441, 476, 0]"] + 8["Segment
[482, 562, 0]"] + 9["Segment
[568, 599, 0]"] + 10["Segment
[605, 664, 0]"] + 11["Segment
[670, 697, 0]"] + 12["Segment
[703, 725, 0]"] + 13["Segment
[731, 766, 0]"] + 14["Segment
[772, 818, 0]"] + 15["Segment
[824, 832, 0]"] 16[Solid2d] end subgraph path60 [Path] - 60["Path
[1032, 1076, 0]"] - 61["Segment
[1082, 1116, 0]"] - 62["Segment
[1122, 1185, 0]"] - 63["Segment
[1191, 1218, 0]"] - 64["Segment
[1224, 1255, 0]"] - 65["Segment
[1261, 1296, 0]"] - 66["Segment
[1302, 1401, 0]"] - 67["Segment
[1407, 1438, 0]"] - 68["Segment
[1444, 1522, 0]"] - 69["Segment
[1528, 1555, 0]"] - 70["Segment
[1561, 1583, 0]"] - 71["Segment
[1589, 1624, 0]"] - 72["Segment
[1630, 1676, 0]"] - 73["Segment
[1682, 1690, 0]"] + 60["Path
[1000, 1044, 0]"] + 61["Segment
[1050, 1084, 0]"] + 62["Segment
[1090, 1159, 0]"] + 63["Segment
[1165, 1192, 0]"] + 64["Segment
[1198, 1229, 0]"] + 65["Segment
[1235, 1270, 0]"] + 66["Segment
[1276, 1356, 0]"] + 67["Segment
[1362, 1393, 0]"] + 68["Segment
[1399, 1458, 0]"] + 69["Segment
[1464, 1491, 0]"] + 70["Segment
[1497, 1519, 0]"] + 71["Segment
[1525, 1560, 0]"] + 72["Segment
[1566, 1612, 0]"] + 73["Segment
[1618, 1626, 0]"] 74[Solid2d] end 1["Plane
[182, 200, 0]"] - 17["Sweep Revolve
[875, 994, 0]"] + 17["Sweep Revolve
[843, 962, 0]"] 18[Wall] 19[Wall] 20[Wall] @@ -77,8 +77,8 @@ flowchart LR 56["SweepEdge Adjacent"] 57["SweepEdge Opposite"] 58["SweepEdge Adjacent"] - 59["Plane
[1008, 1026, 0]"] - 75["Sweep Extrusion
[1696, 1734, 0]"] + 59["Plane
[976, 994, 0]"] + 75["Sweep Extrusion
[1632, 1670, 0]"] 76[Wall] 77[Wall] 78[Wall] diff --git a/rust/kcl-lib/tests/poop_chute/ast.snap b/rust/kcl-lib/tests/poop_chute/ast.snap index e06f50b74..e476696ad 100644 --- a/rust/kcl-lib/tests/poop_chute/ast.snap +++ b/rust/kcl-lib/tests/poop_chute/ast.snap @@ -18,7 +18,7 @@ description: Result of parsing poop_chute.kcl "type": "Identifier" }, "init": { - "commentStart": 17, + "commentStart": 0, "end": 0, "raw": "0.125", "start": 0, @@ -39,19 +39,19 @@ description: Result of parsing poop_chute.kcl "type": "VariableDeclaration" }, { - "commentStart": 23, + "commentStart": 0, "declaration": { - "commentStart": 23, + "commentStart": 0, "end": 0, "id": { - "commentStart": 23, + "commentStart": 0, "end": 0, "name": "back_walls_width", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 42, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -72,19 +72,19 @@ description: Result of parsing poop_chute.kcl "type": "VariableDeclaration" }, { - "commentStart": 44, + "commentStart": 0, "declaration": { - "commentStart": 44, + "commentStart": 0, "end": 0, "id": { - "commentStart": 44, + "commentStart": 0, "end": 0, "name": "front_walls_width", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 64, + "commentStart": 0, "end": 0, "raw": "2.5", "start": 0, @@ -105,19 +105,19 @@ description: Result of parsing poop_chute.kcl "type": "VariableDeclaration" }, { - "commentStart": 68, + "commentStart": 0, "declaration": { - "commentStart": 68, + "commentStart": 0, "end": 0, "id": { - "commentStart": 68, + "commentStart": 0, "end": 0, "name": "height", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 77, + "commentStart": 0, "end": 0, "raw": "5.5", "start": 0, @@ -138,19 +138,19 @@ description: Result of parsing poop_chute.kcl "type": "VariableDeclaration" }, { - "commentStart": 81, + "commentStart": 0, "declaration": { - "commentStart": 81, + "commentStart": 0, "end": 0, "id": { - "commentStart": 81, + "commentStart": 0, "end": 0, "name": "filletRadius", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 96, + "commentStart": 0, "end": 0, "raw": "0.050", "start": 0, @@ -171,19 +171,19 @@ description: Result of parsing poop_chute.kcl "type": "VariableDeclaration" }, { - "commentStart": 102, + "commentStart": 0, "declaration": { - "commentStart": 102, + "commentStart": 0, "end": 0, "id": { - "commentStart": 102, + "commentStart": 0, "end": 0, "name": "back_length", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 116, + "commentStart": 0, "end": 0, "raw": "7", "start": 0, @@ -204,19 +204,19 @@ description: Result of parsing poop_chute.kcl "type": "VariableDeclaration" }, { - "commentStart": 118, + "commentStart": 0, "declaration": { - "commentStart": 118, + "commentStart": 0, "end": 0, "id": { - "commentStart": 118, + "commentStart": 0, "end": 0, "name": "exit_height", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 132, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -237,19 +237,19 @@ description: Result of parsing poop_chute.kcl "type": "VariableDeclaration" }, { - "commentStart": 134, + "commentStart": 0, "declaration": { - "commentStart": 134, + "commentStart": 0, "end": 0, "id": { - "commentStart": 134, + "commentStart": 0, "end": 0, "name": "front_length", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 149, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -270,19 +270,19 @@ description: Result of parsing poop_chute.kcl "type": "VariableDeclaration" }, { - "commentStart": 151, + "commentStart": 0, "declaration": { - "commentStart": 151, + "commentStart": 0, "end": 0, "id": { - "commentStart": 151, + "commentStart": 0, "end": 0, "name": "Fx", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 156, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -303,19 +303,19 @@ description: Result of parsing poop_chute.kcl "type": "VariableDeclaration" }, { - "commentStart": 160, + "commentStart": 0, "declaration": { - "commentStart": 160, + "commentStart": 0, "end": 0, "id": { - "commentStart": 160, + "commentStart": 0, "end": 0, "name": "Fy", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 165, + "commentStart": 0, "end": 0, "raw": "0.5", "start": 0, @@ -336,12 +336,12 @@ description: Result of parsing poop_chute.kcl "type": "VariableDeclaration" }, { - "commentStart": 168, + "commentStart": 0, "declaration": { - "commentStart": 170, + "commentStart": 0, "end": 0, "id": { - "commentStart": 170, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -354,10 +354,10 @@ description: Result of parsing poop_chute.kcl { "argument": { "abs_path": false, - "commentStart": 197, + "commentStart": 0, "end": 0, "name": { - "commentStart": 197, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -368,7 +368,7 @@ description: Result of parsing poop_chute.kcl "type": "Name", "type": "Name" }, - "commentStart": 196, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -378,10 +378,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 182, + "commentStart": 0, "end": 0, "name": { - "commentStart": 182, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -391,7 +391,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 182, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -400,17 +400,17 @@ description: Result of parsing poop_chute.kcl { "arguments": [ { - "commentStart": 221, + "commentStart": 0, "elements": [ { - "commentStart": 222, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 222, + "commentStart": 0, "end": 0, "name": { - "commentStart": 222, + "commentStart": 0, "end": 0, "name": "back_walls_width", "start": 0, @@ -423,7 +423,7 @@ description: Result of parsing poop_chute.kcl }, "operator": "/", "right": { - "commentStart": 241, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -439,7 +439,7 @@ description: Result of parsing poop_chute.kcl "type": "BinaryExpression" }, { - "commentStart": 244, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -457,7 +457,7 @@ description: Result of parsing poop_chute.kcl "type": "ArrayExpression" }, { - "commentStart": 248, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -466,10 +466,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 206, + "commentStart": 0, "end": 0, "name": { - "commentStart": 206, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -479,7 +479,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 206, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -490,21 +490,21 @@ description: Result of parsing poop_chute.kcl { "type": "LabeledArg", "label": { - "commentStart": 262, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 271, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 271, + "commentStart": 0, "end": 0, "name": { - "commentStart": 271, + "commentStart": 0, "end": 0, "name": "wall_thickness", "start": 0, @@ -517,7 +517,7 @@ description: Result of parsing poop_chute.kcl }, "operator": "/", "right": { - "commentStart": 288, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -536,10 +536,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 256, + "commentStart": 0, "end": 0, "name": { - "commentStart": 256, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -549,7 +549,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 256, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -559,92 +559,80 @@ description: Result of parsing poop_chute.kcl { "arguments": [ { - "commentStart": 310, - "end": 0, - "properties": [ - { - "commentStart": 312, - "end": 0, - "key": { - "commentStart": 312, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 320, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - } - }, - { - "commentStart": 324, - "end": 0, - "key": { - "commentStart": 324, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 329, - "end": 0, - "name": { - "commentStart": 329, - "end": 0, - "name": "back_walls_width", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "45", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 45.0, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 349, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "back_walls_width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 352, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "seg01" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "seg01" + } } ], "callee": { "abs_path": false, - "commentStart": 296, + "commentStart": 0, "end": 0, "name": { - "commentStart": 296, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -652,18 +640,19 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 296, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 371, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -671,10 +660,10 @@ description: Result of parsing poop_chute.kcl }, "arg": { "abs_path": false, - "commentStart": 385, + "commentStart": 0, "end": 0, "name": { - "commentStart": 385, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -689,10 +678,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 365, + "commentStart": 0, "end": 0, "name": { - "commentStart": 365, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -702,7 +691,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 365, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -714,7 +703,7 @@ description: Result of parsing poop_chute.kcl { "type": "LabeledArg", "label": { - "commentStart": 404, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -723,10 +712,10 @@ description: Result of parsing poop_chute.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 414, + "commentStart": 0, "end": 0, "name": { - "commentStart": 414, + "commentStart": 0, "end": 0, "name": "wall_thickness", "start": 0, @@ -737,7 +726,7 @@ description: Result of parsing poop_chute.kcl "type": "Name", "type": "Name" }, - "commentStart": 413, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -748,10 +737,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 398, + "commentStart": 0, "end": 0, "name": { - "commentStart": 398, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -761,7 +750,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 398, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -773,7 +762,7 @@ description: Result of parsing poop_chute.kcl { "type": "LabeledArg", "label": { - "commentStart": 441, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -783,10 +772,10 @@ description: Result of parsing poop_chute.kcl "arguments": [ { "abs_path": false, - "commentStart": 463, + "commentStart": 0, "end": 0, "name": { - "commentStart": 463, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -800,10 +789,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 455, + "commentStart": 0, "end": 0, "name": { - "commentStart": 455, + "commentStart": 0, "end": 0, "name": "segEndY", "start": 0, @@ -813,7 +802,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 455, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -823,10 +812,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 435, + "commentStart": 0, "end": 0, "name": { - "commentStart": 435, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -836,7 +825,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 435, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -846,148 +835,126 @@ description: Result of parsing poop_chute.kcl { "arguments": [ { - "commentStart": 490, - "end": 0, - "properties": [ - { - "commentStart": 499, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "45", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 45.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 499, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "angle", + "name": { + "commentStart": 0, + "end": 0, + "name": "back_walls_width", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 507, + "operator": "/", + "right": { + "commentStart": 0, "end": 0, - "raw": "45", + "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 45.0, + "value": 2.0, "suffix": "None" } - } - }, - { - "commentStart": 518, - "end": 0, - "key": { - "commentStart": 518, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" }, "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 523, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "left": { - "commentStart": 523, + "name": { + "commentStart": 0, "end": 0, - "left": { - "abs_path": false, - "commentStart": 523, - "end": 0, - "name": { - "commentStart": 523, - "end": 0, - "name": "back_walls_width", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "/", - "right": { - "commentStart": 542, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, + "name": "wall_thickness", "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "commentStart": 546, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 546, - "end": 0, - "name": { - "commentStart": 546, - "end": 0, - "name": "wall_thickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "/", - "right": { - "commentStart": 563, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "Identifier" }, + "path": [], "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 573, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "Name", + "type": "Name" + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 476, + "commentStart": 0, "end": 0, "name": { - "commentStart": 476, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -995,18 +962,19 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 476, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 587, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1015,10 +983,10 @@ description: Result of parsing poop_chute.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 597, + "commentStart": 0, "end": 0, "name": { - "commentStart": 597, + "commentStart": 0, "end": 0, "name": "wall_thickness", "start": 0, @@ -1029,7 +997,7 @@ description: Result of parsing poop_chute.kcl "type": "Name", "type": "Name" }, - "commentStart": 596, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1040,10 +1008,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 581, + "commentStart": 0, "end": 0, "name": { - "commentStart": 581, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1053,7 +1021,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 581, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1063,104 +1031,82 @@ description: Result of parsing poop_chute.kcl { "arguments": [ { - "commentStart": 632, - "end": 0, - "properties": [ - { - "commentStart": 641, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 641, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "180", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 649, - "end": 0, - "left": { - "commentStart": 649, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, - "operator": "-", - "right": { - "commentStart": 655, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "value": 180.0, + "suffix": "None" } }, - { - "commentStart": 666, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 666, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, + "raw": "45", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "abs_path": false, - "commentStart": 671, - "end": 0, - "name": { - "commentStart": 671, - "end": 0, - "name": "wall_thickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "value": 45.0, + "suffix": "None" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 694, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wall_thickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 618, + "commentStart": 0, "end": 0, "name": { - "commentStart": 618, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -1168,18 +1114,19 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 618, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 708, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -1187,10 +1134,10 @@ description: Result of parsing poop_chute.kcl }, "arg": { "abs_path": false, - "commentStart": 722, + "commentStart": 0, "end": 0, "name": { - "commentStart": 722, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -1205,10 +1152,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 702, + "commentStart": 0, "end": 0, "name": { - "commentStart": 702, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1218,7 +1165,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 702, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1230,14 +1177,14 @@ description: Result of parsing poop_chute.kcl { "type": "LabeledArg", "label": { - "commentStart": 741, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 755, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1252,10 +1199,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 735, + "commentStart": 0, "end": 0, "name": { - "commentStart": 735, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1265,7 +1212,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 735, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1277,7 +1224,7 @@ description: Result of parsing poop_chute.kcl { "type": "LabeledArg", "label": { - "commentStart": 769, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -1287,10 +1234,10 @@ description: Result of parsing poop_chute.kcl "arguments": [ { "abs_path": false, - "commentStart": 791, + "commentStart": 0, "end": 0, "name": { - "commentStart": 791, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -1304,10 +1251,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 783, + "commentStart": 0, "end": 0, "name": { - "commentStart": 783, + "commentStart": 0, "end": 0, "name": "segEndY", "start": 0, @@ -1317,7 +1264,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 783, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1327,10 +1274,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 763, + "commentStart": 0, "end": 0, "name": { - "commentStart": 763, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -1340,7 +1287,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 763, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1350,100 +1297,78 @@ description: Result of parsing poop_chute.kcl { "arguments": [ { - "commentStart": 818, - "end": 0, - "properties": [ - { - "commentStart": 820, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 820, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "180", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 828, - "end": 0, - "left": { - "commentStart": 828, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, - "operator": "-", - "right": { - "commentStart": 834, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "value": 180.0, + "suffix": "None" } }, - { - "commentStart": 838, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 838, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, + "raw": "45", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 843, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } + "value": 45.0, + "suffix": "None" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 848, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } } ], "callee": { "abs_path": false, - "commentStart": 804, + "commentStart": 0, "end": 0, "name": { - "commentStart": 804, + "commentStart": 0, "end": 0, - "name": "angledLineToY", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -1451,16 +1376,17 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 804, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 862, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1469,10 +1395,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 856, + "commentStart": 0, "end": 0, "name": { - "commentStart": 856, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1482,14 +1408,14 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 856, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 182, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1505,12 +1431,12 @@ description: Result of parsing poop_chute.kcl "type": "VariableDeclaration" }, { - "commentStart": 865, + "commentStart": 0, "declaration": { - "commentStart": 865, + "commentStart": 0, "end": 0, "id": { - "commentStart": 865, + "commentStart": 0, "end": 0, "name": "part001", "start": 0, @@ -1521,14 +1447,14 @@ description: Result of parsing poop_chute.kcl { "type": "LabeledArg", "label": { - "commentStart": 899, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 907, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1543,21 +1469,21 @@ description: Result of parsing poop_chute.kcl { "type": "LabeledArg", "label": { - "commentStart": 913, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 920, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 926, + "commentStart": 0, "end": 0, "key": { - "commentStart": 926, + "commentStart": 0, "end": 0, "name": "direction", "start": 0, @@ -1566,10 +1492,10 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 938, + "commentStart": 0, "elements": [ { - "commentStart": 939, + "commentStart": 0, "end": 0, "raw": "1.0", "start": 0, @@ -1581,7 +1507,7 @@ description: Result of parsing poop_chute.kcl } }, { - "commentStart": 944, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -1600,10 +1526,10 @@ description: Result of parsing poop_chute.kcl } }, { - "commentStart": 954, + "commentStart": 0, "end": 0, "key": { - "commentStart": 954, + "commentStart": 0, "end": 0, "name": "origin", "start": 0, @@ -1612,10 +1538,10 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 963, + "commentStart": 0, "elements": [ { - "commentStart": 964, + "commentStart": 0, "end": 0, "raw": "0.0", "start": 0, @@ -1627,14 +1553,14 @@ description: Result of parsing poop_chute.kcl } }, { - "commentStart": 969, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 969, + "commentStart": 0, "end": 0, "name": { - "commentStart": 969, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -1647,7 +1573,7 @@ description: Result of parsing poop_chute.kcl }, "operator": "+", "right": { - "commentStart": 978, + "commentStart": 0, "end": 0, "raw": ".0000001", "start": 0, @@ -1678,10 +1604,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 875, + "commentStart": 0, "end": 0, "name": { - "commentStart": 875, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -1691,17 +1617,17 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 875, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 886, + "commentStart": 0, "end": 0, "name": { - "commentStart": 886, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -1723,12 +1649,12 @@ description: Result of parsing poop_chute.kcl "type": "VariableDeclaration" }, { - "commentStart": 994, + "commentStart": 0, "declaration": { - "commentStart": 996, + "commentStart": 0, "end": 0, "id": { - "commentStart": 996, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -1741,10 +1667,10 @@ description: Result of parsing poop_chute.kcl { "argument": { "abs_path": false, - "commentStart": 1023, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1023, + "commentStart": 0, "end": 0, "name": "YZ", "start": 0, @@ -1755,7 +1681,7 @@ description: Result of parsing poop_chute.kcl "type": "Name", "type": "Name" }, - "commentStart": 1022, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1765,10 +1691,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 1008, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1008, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1778,7 +1704,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1008, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1787,17 +1713,17 @@ description: Result of parsing poop_chute.kcl { "arguments": [ { - "commentStart": 1047, + "commentStart": 0, "elements": [ { - "commentStart": 1048, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1048, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1048, + "commentStart": 0, "end": 0, "name": "back_walls_width", "start": 0, @@ -1810,7 +1736,7 @@ description: Result of parsing poop_chute.kcl }, "operator": "/", "right": { - "commentStart": 1067, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1826,7 +1752,7 @@ description: Result of parsing poop_chute.kcl "type": "BinaryExpression" }, { - "commentStart": 1070, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1844,7 +1770,7 @@ description: Result of parsing poop_chute.kcl "type": "ArrayExpression" }, { - "commentStart": 1074, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1853,10 +1779,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 1032, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1032, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1866,7 +1792,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1032, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1877,21 +1803,21 @@ description: Result of parsing poop_chute.kcl { "type": "LabeledArg", "label": { - "commentStart": 1088, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1097, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1097, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1097, + "commentStart": 0, "end": 0, "name": "wall_thickness", "start": 0, @@ -1904,7 +1830,7 @@ description: Result of parsing poop_chute.kcl }, "operator": "/", "right": { - "commentStart": 1114, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1923,10 +1849,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 1082, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1082, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -1936,7 +1862,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1082, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1946,92 +1872,80 @@ description: Result of parsing poop_chute.kcl { "arguments": [ { - "commentStart": 1136, - "end": 0, - "properties": [ - { - "commentStart": 1138, - "end": 0, - "key": { - "commentStart": 1138, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1146, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1150, - "end": 0, - "key": { - "commentStart": 1150, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1155, - "end": 0, - "name": { - "commentStart": 1155, - "end": 0, - "name": "back_walls_width", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "45", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 45.0, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 1175, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "back_walls_width", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { - "commentStart": 1178, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "seg02" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "seg02" + } } ], "callee": { "abs_path": false, - "commentStart": 1122, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1122, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -2039,18 +1953,19 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1122, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1197, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -2058,10 +1973,10 @@ description: Result of parsing poop_chute.kcl }, "arg": { "abs_path": false, - "commentStart": 1211, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1211, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -2076,10 +1991,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 1191, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1191, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2089,7 +2004,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1191, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2101,7 +2016,7 @@ description: Result of parsing poop_chute.kcl { "type": "LabeledArg", "label": { - "commentStart": 1230, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2110,10 +2025,10 @@ description: Result of parsing poop_chute.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 1240, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1240, + "commentStart": 0, "end": 0, "name": "wall_thickness", "start": 0, @@ -2124,7 +2039,7 @@ description: Result of parsing poop_chute.kcl "type": "Name", "type": "Name" }, - "commentStart": 1239, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2135,10 +2050,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 1224, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1224, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2148,7 +2063,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1224, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2160,7 +2075,7 @@ description: Result of parsing poop_chute.kcl { "type": "LabeledArg", "label": { - "commentStart": 1267, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -2170,10 +2085,10 @@ description: Result of parsing poop_chute.kcl "arguments": [ { "abs_path": false, - "commentStart": 1289, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1289, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -2187,10 +2102,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 1281, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1281, + "commentStart": 0, "end": 0, "name": "segEndY", "start": 0, @@ -2200,7 +2115,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1281, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2210,10 +2125,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 1261, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1261, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2223,7 +2138,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1261, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2233,148 +2148,126 @@ description: Result of parsing poop_chute.kcl { "arguments": [ { - "commentStart": 1316, - "end": 0, - "properties": [ - { - "commentStart": 1325, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "45", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 45.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1325, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "angle", + "name": { + "commentStart": 0, + "end": 0, + "name": "back_walls_width", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" + "type": "Name", + "type": "Name" }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1333, + "operator": "/", + "right": { + "commentStart": 0, "end": 0, - "raw": "45", + "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 45.0, + "value": 2.0, "suffix": "None" } - } - }, - { - "commentStart": 1344, - "end": 0, - "key": { - "commentStart": 1344, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" }, "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1349, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "+", + "right": { + "commentStart": 0, + "end": 0, + "left": { + "abs_path": false, + "commentStart": 0, "end": 0, - "left": { - "commentStart": 1349, + "name": { + "commentStart": 0, "end": 0, - "left": { - "abs_path": false, - "commentStart": 1349, - "end": 0, - "name": { - "commentStart": 1349, - "end": 0, - "name": "back_walls_width", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "/", - "right": { - "commentStart": 1368, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, + "name": "wall_thickness", "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - "operator": "+", - "right": { - "commentStart": 1372, - "end": 0, - "left": { - "abs_path": false, - "commentStart": 1372, - "end": 0, - "name": { - "commentStart": 1372, - "end": 0, - "name": "wall_thickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "operator": "/", - "right": { - "commentStart": 1389, - "end": 0, - "raw": "2", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 2.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "type": "Identifier" }, + "path": [], "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1399, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "Name", + "type": "Name" + }, + "operator": "/", + "right": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 1302, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1302, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -2382,18 +2275,19 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1302, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1413, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -2402,10 +2296,10 @@ description: Result of parsing poop_chute.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 1423, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1423, + "commentStart": 0, "end": 0, "name": "wall_thickness", "start": 0, @@ -2416,7 +2310,7 @@ description: Result of parsing poop_chute.kcl "type": "Name", "type": "Name" }, - "commentStart": 1422, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -2427,10 +2321,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 1407, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1407, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2440,7 +2334,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1407, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2450,104 +2344,82 @@ description: Result of parsing poop_chute.kcl { "arguments": [ { - "commentStart": 1458, - "end": 0, - "properties": [ - { - "commentStart": 1467, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1467, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "180", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1475, - "end": 0, - "left": { - "commentStart": 1475, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, - "operator": "-", - "right": { - "commentStart": 1481, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "value": 180.0, + "suffix": "None" } }, - { - "commentStart": 1492, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1492, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, + "raw": "45", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "abs_path": false, - "commentStart": 1497, - "end": 0, - "name": { - "commentStart": 1497, - "end": 0, - "name": "wall_thickness", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "value": 45.0, + "suffix": "None" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 1520, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteX", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "wall_thickness", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1444, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1444, + "commentStart": 0, "end": 0, - "name": "angledLineToX", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -2555,18 +2427,19 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1444, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1534, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -2574,10 +2447,10 @@ description: Result of parsing poop_chute.kcl }, "arg": { "abs_path": false, - "commentStart": 1548, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1548, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -2592,10 +2465,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 1528, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1528, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2605,7 +2478,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1528, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2617,14 +2490,14 @@ description: Result of parsing poop_chute.kcl { "type": "LabeledArg", "label": { - "commentStart": 1567, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1581, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2639,10 +2512,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 1561, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1561, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -2652,7 +2525,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1561, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2664,7 +2537,7 @@ description: Result of parsing poop_chute.kcl { "type": "LabeledArg", "label": { - "commentStart": 1595, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, @@ -2674,10 +2547,10 @@ description: Result of parsing poop_chute.kcl "arguments": [ { "abs_path": false, - "commentStart": 1617, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1617, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -2691,10 +2564,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 1609, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1609, + "commentStart": 0, "end": 0, "name": "segEndY", "start": 0, @@ -2704,7 +2577,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1609, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2714,10 +2587,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 1589, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1589, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -2727,7 +2600,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1589, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2737,100 +2610,78 @@ description: Result of parsing poop_chute.kcl { "arguments": [ { - "commentStart": 1644, - "end": 0, - "properties": [ - { - "commentStart": 1646, + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1646, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, + "raw": "180", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1654, - "end": 0, - "left": { - "commentStart": 1654, - "end": 0, - "raw": "180", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 180.0, - "suffix": "None" - } - }, - "operator": "-", - "right": { - "commentStart": 1660, - "end": 0, - "raw": "45", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 45.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" + "value": 180.0, + "suffix": "None" } }, - { - "commentStart": 1664, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "key": { - "commentStart": 1664, - "end": 0, - "name": "to", - "start": 0, - "type": "Identifier" - }, + "raw": "45", "start": 0, - "type": "ObjectProperty", + "type": "Literal", + "type": "Literal", "value": { - "commentStart": 1669, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } + "value": 45.0, + "suffix": "None" } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 1674, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsoluteY", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } } ], "callee": { "abs_path": false, - "commentStart": 1630, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1630, + "commentStart": 0, "end": 0, - "name": "angledLineToY", + "name": "angledLine", "start": 0, "type": "Identifier" }, @@ -2838,16 +2689,17 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1630, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1688, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2856,10 +2708,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 1682, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1682, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2869,7 +2721,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1682, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2880,21 +2732,21 @@ description: Result of parsing poop_chute.kcl { "type": "LabeledArg", "label": { - "commentStart": 1704, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1713, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1713, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1713, + "commentStart": 0, "end": 0, "name": "back_length", "start": 0, @@ -2908,10 +2760,10 @@ description: Result of parsing poop_chute.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1727, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1727, + "commentStart": 0, "end": 0, "name": "height", "start": 0, @@ -2930,10 +2782,10 @@ description: Result of parsing poop_chute.kcl ], "callee": { "abs_path": false, - "commentStart": 1696, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1696, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2943,7 +2795,7 @@ description: Result of parsing poop_chute.kcl "start": 0, "type": "Name" }, - "commentStart": 1696, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2951,7 +2803,7 @@ description: Result of parsing poop_chute.kcl "unlabeled": null } ], - "commentStart": 1008, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2973,7 +2825,7 @@ description: Result of parsing poop_chute.kcl "nonCodeNodes": { "9": [ { - "commentStart": 168, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2984,7 +2836,7 @@ description: Result of parsing poop_chute.kcl ], "11": [ { - "commentStart": 994, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/poop_chute/input.kcl b/rust/kcl-lib/tests/poop_chute/input.kcl index 26147b4c5..5a5e13b1d 100644 --- a/rust/kcl-lib/tests/poop_chute/input.kcl +++ b/rust/kcl-lib/tests/poop_chute/input.kcl @@ -12,23 +12,17 @@ Fy = 0.5 sketch001 = startSketchOn(-YZ) |> startProfileAt([back_walls_width / 2, 0], %) |> xLine(length = wall_thickness / 2) - |> angledLineToX({ angle = 45, to = back_walls_width }, %, $seg01) + |> angledLine(angle = 45, endAbsoluteX = back_walls_width, tag = $seg01) |> yLine(endAbsolute = height) |> xLine(length = -wall_thickness) |> yLine(endAbsolute = segEndY(seg01)) - |> angledLineToX({ - angle = 45, - to = back_walls_width / 2 + wall_thickness / 2 - }, %) + |> angledLine(angle = 45, endAbsoluteX = back_walls_width / 2 + wall_thickness / 2) |> xLine(length = -wall_thickness) - |> angledLineToX({ - angle = 180 - 45, - to = wall_thickness - }, %) + |> angledLine(angle = 180 - 45, endAbsoluteX = wall_thickness) |> yLine(endAbsolute = height) |> xLine(endAbsolute = 0) |> yLine(endAbsolute = segEndY(seg01)) - |> angledLineToY({ angle = 180 - 45, to = 0 }, %) + |> angledLine(angle = 180 - 45, endAbsoluteY = 0) |> close(%) part001 = revolve( sketch001, @@ -42,22 +36,16 @@ part001 = revolve( sketch002 = startSketchOn(-YZ) |> startProfileAt([back_walls_width / 2, 0], %) |> xLine(length = wall_thickness / 2) - |> angledLineToX({ angle = 45, to = back_walls_width }, %, $seg02) + |> angledLine(angle = 45, endAbsoluteX = back_walls_width, tag = $seg02) |> yLine(endAbsolute = height) |> xLine(length = -wall_thickness) |> yLine(endAbsolute = segEndY(seg01)) - |> angledLineToX({ - angle = 45, - to = back_walls_width / 2 + wall_thickness / 2 - }, %) + |> angledLine(angle = 45, endAbsoluteX = back_walls_width / 2 + wall_thickness / 2) |> xLine(length = -wall_thickness) - |> angledLineToX({ - angle = 180 - 45, - to = wall_thickness - }, %) + |> angledLine(angle = 180 - 45, endAbsoluteX = wall_thickness) |> yLine(endAbsolute = height) |> xLine(endAbsolute = 0) |> yLine(endAbsolute = segEndY(seg02)) - |> angledLineToY({ angle = 180 - 45, to = 0 }, %) + |> angledLine(angle = 180 - 45, endAbsoluteY = 0) |> close(%) |> extrude(length = back_length - height) diff --git a/rust/kcl-lib/tests/poop_chute/ops.snap b/rust/kcl-lib/tests/poop_chute/ops.snap index 71ba40277..e85084311 100644 --- a/rust/kcl-lib/tests/poop_chute/ops.snap +++ b/rust/kcl-lib/tests/poop_chute/ops.snap @@ -5,7 +5,7 @@ description: Operations executed poop_chute.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -127,7 +127,7 @@ description: Operations executed poop_chute.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/poop_chute/program_memory.snap b/rust/kcl-lib/tests/poop_chute/program_memory.snap index 5808da8eb..1628af01f 100644 --- a/rust/kcl-lib/tests/poop_chute/program_memory.snap +++ b/rust/kcl-lib/tests/poop_chute/program_memory.snap @@ -139,9 +139,9 @@ description: Variables in memory after executing poop_chute.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 352, - "end": 358, - "start": 352, + "commentStart": 358, + "end": 364, + "start": 358, "type": "TagDeclarator", "value": "seg01" }, @@ -258,9 +258,9 @@ description: Variables in memory after executing poop_chute.kcl 0.0 ], "tag": { - "commentStart": 352, - "end": 358, - "start": 352, + "commentStart": 358, + "end": 364, + "start": 358, "type": "TagDeclarator", "value": "seg01" }, @@ -491,22 +491,34 @@ description: Variables in memory after executing poop_chute.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -595,9 +607,9 @@ description: Variables in memory after executing poop_chute.kcl 0.0 ], "tag": { - "commentStart": 352, - "end": 358, - "start": 352, + "commentStart": 358, + "end": 364, + "start": 358, "type": "TagDeclarator", "value": "seg01" }, @@ -828,22 +840,34 @@ description: Variables in memory after executing poop_chute.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -899,9 +923,9 @@ description: Variables in memory after executing poop_chute.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1178, - "end": 1184, - "start": 1178, + "commentStart": 1152, + "end": 1158, + "start": 1152, "type": "TagDeclarator", "value": "seg02" }, @@ -1018,9 +1042,9 @@ description: Variables in memory after executing poop_chute.kcl 0.0 ], "tag": { - "commentStart": 1178, - "end": 1184, - "start": 1178, + "commentStart": 1152, + "end": 1158, + "start": 1152, "type": "TagDeclarator", "value": "seg02" }, @@ -1251,22 +1275,34 @@ description: Variables in memory after executing poop_chute.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": -1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/poop_chute/unparsed.snap b/rust/kcl-lib/tests/poop_chute/unparsed.snap index 1d817d7e5..e0b2d1c8a 100644 --- a/rust/kcl-lib/tests/poop_chute/unparsed.snap +++ b/rust/kcl-lib/tests/poop_chute/unparsed.snap @@ -16,23 +16,17 @@ Fy = 0.5 sketch001 = startSketchOn(-YZ) |> startProfileAt([back_walls_width / 2, 0], %) |> xLine(length = wall_thickness / 2) - |> angledLineToX({ angle = 45, to = back_walls_width }, %, $seg01) + |> angledLine(angle = 45, endAbsoluteX = back_walls_width, tag = $seg01) |> yLine(endAbsolute = height) |> xLine(length = -wall_thickness) |> yLine(endAbsolute = segEndY(seg01)) - |> angledLineToX({ - angle = 45, - to = back_walls_width / 2 + wall_thickness / 2 - }, %) + |> angledLine(angle = 45, endAbsoluteX = back_walls_width / 2 + wall_thickness / 2) |> xLine(length = -wall_thickness) - |> angledLineToX({ - angle = 180 - 45, - to = wall_thickness - }, %) + |> angledLine(angle = 180 - 45, endAbsoluteX = wall_thickness) |> yLine(endAbsolute = height) |> xLine(endAbsolute = 0) |> yLine(endAbsolute = segEndY(seg01)) - |> angledLineToY({ angle = 180 - 45, to = 0 }, %) + |> angledLine(angle = 180 - 45, endAbsoluteY = 0) |> close(%) part001 = revolve( sketch001, @@ -46,22 +40,16 @@ part001 = revolve( sketch002 = startSketchOn(-YZ) |> startProfileAt([back_walls_width / 2, 0], %) |> xLine(length = wall_thickness / 2) - |> angledLineToX({ angle = 45, to = back_walls_width }, %, $seg02) + |> angledLine(angle = 45, endAbsoluteX = back_walls_width, tag = $seg02) |> yLine(endAbsolute = height) |> xLine(length = -wall_thickness) |> yLine(endAbsolute = segEndY(seg01)) - |> angledLineToX({ - angle = 45, - to = back_walls_width / 2 + wall_thickness / 2 - }, %) + |> angledLine(angle = 45, endAbsoluteX = back_walls_width / 2 + wall_thickness / 2) |> xLine(length = -wall_thickness) - |> angledLineToX({ - angle = 180 - 45, - to = wall_thickness - }, %) + |> angledLine(angle = 180 - 45, endAbsoluteX = wall_thickness) |> yLine(endAbsolute = height) |> xLine(endAbsolute = 0) |> yLine(endAbsolute = segEndY(seg02)) - |> angledLineToY({ angle = 180 - 45, to = 0 }, %) + |> angledLine(angle = 180 - 45, endAbsoluteY = 0) |> close(%) |> extrude(length = back_length - height) diff --git a/rust/kcl-lib/tests/property_of_object/ast.snap b/rust/kcl-lib/tests/property_of_object/ast.snap index 6fd0cef5b..6b958759f 100644 --- a/rust/kcl-lib/tests/property_of_object/ast.snap +++ b/rust/kcl-lib/tests/property_of_object/ast.snap @@ -8,24 +8,24 @@ description: Result of parsing property_of_object.kcl { "commentStart": 0, "declaration": { - "commentStart": 50, + "commentStart": 0, "end": 0, "id": { - "commentStart": 50, + "commentStart": 0, "end": 0, "name": "obj", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 56, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 58, + "commentStart": 0, "end": 0, "key": { - "commentStart": 58, + "commentStart": 0, "end": 0, "name": "foo", "start": 0, @@ -34,7 +34,7 @@ description: Result of parsing property_of_object.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 64, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -47,10 +47,10 @@ description: Result of parsing property_of_object.kcl } }, { - "commentStart": 67, + "commentStart": 0, "end": 0, "key": { - "commentStart": 67, + "commentStart": 0, "end": 0, "name": "bar", "start": 0, @@ -59,7 +59,7 @@ description: Result of parsing property_of_object.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 73, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -86,23 +86,23 @@ description: Result of parsing property_of_object.kcl "type": "VariableDeclaration" }, { - "commentStart": 76, + "commentStart": 0, "declaration": { - "commentStart": 116, + "commentStart": 0, "end": 0, "id": { - "commentStart": 116, + "commentStart": 0, "end": 0, "name": "one_a", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 124, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 124, + "commentStart": 0, "end": 0, "name": "obj", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing property_of_object.kcl "type": "Identifier" }, "property": { - "commentStart": 128, + "commentStart": 0, "end": 0, "raw": "\"foo\"", "start": 0, @@ -132,16 +132,16 @@ description: Result of parsing property_of_object.kcl "type": "VariableDeclaration" }, { - "commentStart": 134, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 155, + "commentStart": 0, "end": 0, "name": { - "commentStart": 155, + "commentStart": 0, "end": 0, "name": "one_a", "start": 0, @@ -153,7 +153,7 @@ description: Result of parsing property_of_object.kcl "type": "Name" }, { - "commentStart": 162, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -165,7 +165,7 @@ description: Result of parsing property_of_object.kcl } }, { - "commentStart": 165, + "commentStart": 0, "end": 0, "raw": "\"Literal property lookup\"", "start": 0, @@ -176,10 +176,10 @@ description: Result of parsing property_of_object.kcl ], "callee": { "abs_path": false, - "commentStart": 136, + "commentStart": 0, "end": 0, "name": { - "commentStart": 136, + "commentStart": 0, "end": 0, "name": "assertLessThanOrEq", "start": 0, @@ -189,7 +189,7 @@ description: Result of parsing property_of_object.kcl "start": 0, "type": "Name" }, - "commentStart": 136, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -200,16 +200,16 @@ description: Result of parsing property_of_object.kcl "type": "ExpressionStatement" }, { - "commentStart": 192, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 214, + "commentStart": 0, "end": 0, "name": { - "commentStart": 214, + "commentStart": 0, "end": 0, "name": "one_a", "start": 0, @@ -221,7 +221,7 @@ description: Result of parsing property_of_object.kcl "type": "Name" }, { - "commentStart": 221, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -233,7 +233,7 @@ description: Result of parsing property_of_object.kcl } }, { - "commentStart": 224, + "commentStart": 0, "end": 0, "raw": "\"Literal property lookup\"", "start": 0, @@ -244,10 +244,10 @@ description: Result of parsing property_of_object.kcl ], "callee": { "abs_path": false, - "commentStart": 192, + "commentStart": 0, "end": 0, "name": { - "commentStart": 192, + "commentStart": 0, "end": 0, "name": "assertGreaterThanOrEq", "start": 0, @@ -257,7 +257,7 @@ description: Result of parsing property_of_object.kcl "start": 0, "type": "Name" }, - "commentStart": 192, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -268,19 +268,19 @@ description: Result of parsing property_of_object.kcl "type": "ExpressionStatement" }, { - "commentStart": 250, + "commentStart": 0, "declaration": { - "commentStart": 340, + "commentStart": 0, "end": 0, "id": { - "commentStart": 340, + "commentStart": 0, "end": 0, "name": "p", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 344, + "commentStart": 0, "end": 0, "raw": "\"foo\"", "start": 0, @@ -298,23 +298,23 @@ description: Result of parsing property_of_object.kcl "type": "VariableDeclaration" }, { - "commentStart": 350, + "commentStart": 0, "declaration": { - "commentStart": 350, + "commentStart": 0, "end": 0, "id": { - "commentStart": 350, + "commentStart": 0, "end": 0, "name": "one_b", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 358, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 358, + "commentStart": 0, "end": 0, "name": "obj", "start": 0, @@ -322,7 +322,7 @@ description: Result of parsing property_of_object.kcl "type": "Identifier" }, "property": { - "commentStart": 362, + "commentStart": 0, "end": 0, "name": "p", "start": 0, @@ -343,16 +343,16 @@ description: Result of parsing property_of_object.kcl "type": "VariableDeclaration" }, { - "commentStart": 364, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 385, + "commentStart": 0, "end": 0, "name": { - "commentStart": 385, + "commentStart": 0, "end": 0, "name": "one_b", "start": 0, @@ -364,7 +364,7 @@ description: Result of parsing property_of_object.kcl "type": "Name" }, { - "commentStart": 392, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -376,7 +376,7 @@ description: Result of parsing property_of_object.kcl } }, { - "commentStart": 395, + "commentStart": 0, "end": 0, "raw": "\"Computed property lookup\"", "start": 0, @@ -387,10 +387,10 @@ description: Result of parsing property_of_object.kcl ], "callee": { "abs_path": false, - "commentStart": 366, + "commentStart": 0, "end": 0, "name": { - "commentStart": 366, + "commentStart": 0, "end": 0, "name": "assertLessThanOrEq", "start": 0, @@ -400,7 +400,7 @@ description: Result of parsing property_of_object.kcl "start": 0, "type": "Name" }, - "commentStart": 366, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -411,16 +411,16 @@ description: Result of parsing property_of_object.kcl "type": "ExpressionStatement" }, { - "commentStart": 423, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 445, + "commentStart": 0, "end": 0, "name": { - "commentStart": 445, + "commentStart": 0, "end": 0, "name": "one_b", "start": 0, @@ -432,7 +432,7 @@ description: Result of parsing property_of_object.kcl "type": "Name" }, { - "commentStart": 452, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -444,7 +444,7 @@ description: Result of parsing property_of_object.kcl } }, { - "commentStart": 455, + "commentStart": 0, "end": 0, "raw": "\"Computed property lookup\"", "start": 0, @@ -455,10 +455,10 @@ description: Result of parsing property_of_object.kcl ], "callee": { "abs_path": false, - "commentStart": 423, + "commentStart": 0, "end": 0, "name": { - "commentStart": 423, + "commentStart": 0, "end": 0, "name": "assertGreaterThanOrEq", "start": 0, @@ -468,7 +468,7 @@ description: Result of parsing property_of_object.kcl "start": 0, "type": "Name" }, - "commentStart": 423, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -479,26 +479,26 @@ description: Result of parsing property_of_object.kcl "type": "ExpressionStatement" }, { - "commentStart": 482, + "commentStart": 0, "declaration": { - "commentStart": 524, + "commentStart": 0, "end": 0, "id": { - "commentStart": 524, + "commentStart": 0, "end": 0, "name": "obj2", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 531, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 533, + "commentStart": 0, "end": 0, "key": { - "commentStart": 533, + "commentStart": 0, "end": 0, "name": "inner", "start": 0, @@ -508,10 +508,10 @@ description: Result of parsing property_of_object.kcl "type": "ObjectProperty", "value": { "abs_path": false, - "commentStart": 541, + "commentStart": 0, "end": 0, "name": { - "commentStart": 541, + "commentStart": 0, "end": 0, "name": "obj", "start": 0, @@ -538,27 +538,27 @@ description: Result of parsing property_of_object.kcl "type": "VariableDeclaration" }, { - "commentStart": 546, + "commentStart": 0, "declaration": { - "commentStart": 548, + "commentStart": 0, "end": 0, "id": { - "commentStart": 548, + "commentStart": 0, "end": 0, "name": "one_c", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 556, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 556, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 556, + "commentStart": 0, "end": 0, "name": "obj2", "start": 0, @@ -566,7 +566,7 @@ description: Result of parsing property_of_object.kcl "type": "Identifier" }, "property": { - "commentStart": 561, + "commentStart": 0, "end": 0, "name": "inner", "start": 0, @@ -578,7 +578,7 @@ description: Result of parsing property_of_object.kcl "type": "MemberExpression" }, "property": { - "commentStart": 567, + "commentStart": 0, "end": 0, "raw": "\"foo\"", "start": 0, @@ -600,16 +600,16 @@ description: Result of parsing property_of_object.kcl "type": "VariableDeclaration" }, { - "commentStart": 573, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 594, + "commentStart": 0, "end": 0, "name": { - "commentStart": 594, + "commentStart": 0, "end": 0, "name": "one_c", "start": 0, @@ -621,7 +621,7 @@ description: Result of parsing property_of_object.kcl "type": "Name" }, { - "commentStart": 601, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -633,7 +633,7 @@ description: Result of parsing property_of_object.kcl } }, { - "commentStart": 604, + "commentStart": 0, "end": 0, "raw": "\"Literal property lookup\"", "start": 0, @@ -644,10 +644,10 @@ description: Result of parsing property_of_object.kcl ], "callee": { "abs_path": false, - "commentStart": 575, + "commentStart": 0, "end": 0, "name": { - "commentStart": 575, + "commentStart": 0, "end": 0, "name": "assertLessThanOrEq", "start": 0, @@ -657,7 +657,7 @@ description: Result of parsing property_of_object.kcl "start": 0, "type": "Name" }, - "commentStart": 575, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -668,16 +668,16 @@ description: Result of parsing property_of_object.kcl "type": "ExpressionStatement" }, { - "commentStart": 631, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 653, + "commentStart": 0, "end": 0, "name": { - "commentStart": 653, + "commentStart": 0, "end": 0, "name": "one_c", "start": 0, @@ -689,7 +689,7 @@ description: Result of parsing property_of_object.kcl "type": "Name" }, { - "commentStart": 660, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -701,7 +701,7 @@ description: Result of parsing property_of_object.kcl } }, { - "commentStart": 663, + "commentStart": 0, "end": 0, "raw": "\"Literal property lookup\"", "start": 0, @@ -712,10 +712,10 @@ description: Result of parsing property_of_object.kcl ], "callee": { "abs_path": false, - "commentStart": 631, + "commentStart": 0, "end": 0, "name": { - "commentStart": 631, + "commentStart": 0, "end": 0, "name": "assertGreaterThanOrEq", "start": 0, @@ -725,7 +725,7 @@ description: Result of parsing property_of_object.kcl "start": 0, "type": "Name" }, - "commentStart": 631, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -736,27 +736,27 @@ description: Result of parsing property_of_object.kcl "type": "ExpressionStatement" }, { - "commentStart": 689, + "commentStart": 0, "declaration": { - "commentStart": 752, + "commentStart": 0, "end": 0, "id": { - "commentStart": 752, + "commentStart": 0, "end": 0, "name": "one_d", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 760, + "commentStart": 0, "computed": true, "end": 0, "object": { - "commentStart": 760, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 760, + "commentStart": 0, "end": 0, "name": "obj2", "start": 0, @@ -764,7 +764,7 @@ description: Result of parsing property_of_object.kcl "type": "Identifier" }, "property": { - "commentStart": 765, + "commentStart": 0, "end": 0, "name": "inner", "start": 0, @@ -776,7 +776,7 @@ description: Result of parsing property_of_object.kcl "type": "MemberExpression" }, "property": { - "commentStart": 771, + "commentStart": 0, "end": 0, "name": "p", "start": 0, @@ -797,16 +797,16 @@ description: Result of parsing property_of_object.kcl "type": "VariableDeclaration" }, { - "commentStart": 773, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 794, + "commentStart": 0, "end": 0, "name": { - "commentStart": 794, + "commentStart": 0, "end": 0, "name": "one_d", "start": 0, @@ -818,7 +818,7 @@ description: Result of parsing property_of_object.kcl "type": "Name" }, { - "commentStart": 801, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -830,7 +830,7 @@ description: Result of parsing property_of_object.kcl } }, { - "commentStart": 804, + "commentStart": 0, "end": 0, "raw": "\"Computed property lookup\"", "start": 0, @@ -841,10 +841,10 @@ description: Result of parsing property_of_object.kcl ], "callee": { "abs_path": false, - "commentStart": 775, + "commentStart": 0, "end": 0, "name": { - "commentStart": 775, + "commentStart": 0, "end": 0, "name": "assertLessThanOrEq", "start": 0, @@ -854,7 +854,7 @@ description: Result of parsing property_of_object.kcl "start": 0, "type": "Name" }, - "commentStart": 775, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -865,16 +865,16 @@ description: Result of parsing property_of_object.kcl "type": "ExpressionStatement" }, { - "commentStart": 832, + "commentStart": 0, "end": 0, "expression": { "arguments": [ { "abs_path": false, - "commentStart": 854, + "commentStart": 0, "end": 0, "name": { - "commentStart": 854, + "commentStart": 0, "end": 0, "name": "one_d", "start": 0, @@ -886,7 +886,7 @@ description: Result of parsing property_of_object.kcl "type": "Name" }, { - "commentStart": 861, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -898,7 +898,7 @@ description: Result of parsing property_of_object.kcl } }, { - "commentStart": 864, + "commentStart": 0, "end": 0, "raw": "\"Computed property lookup\"", "start": 0, @@ -909,10 +909,10 @@ description: Result of parsing property_of_object.kcl ], "callee": { "abs_path": false, - "commentStart": 832, + "commentStart": 0, "end": 0, "name": { - "commentStart": 832, + "commentStart": 0, "end": 0, "name": "assertGreaterThanOrEq", "start": 0, @@ -922,7 +922,7 @@ description: Result of parsing property_of_object.kcl "start": 0, "type": "Name" }, - "commentStart": 832, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -939,7 +939,7 @@ description: Result of parsing property_of_object.kcl "nonCodeNodes": { "0": [ { - "commentStart": 76, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -950,7 +950,7 @@ description: Result of parsing property_of_object.kcl } }, { - "commentStart": 113, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -961,7 +961,7 @@ description: Result of parsing property_of_object.kcl ], "1": [ { - "commentStart": 134, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -972,7 +972,7 @@ description: Result of parsing property_of_object.kcl ], "3": [ { - "commentStart": 250, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -983,7 +983,7 @@ description: Result of parsing property_of_object.kcl } }, { - "commentStart": 289, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -994,7 +994,7 @@ description: Result of parsing property_of_object.kcl } }, { - "commentStart": 337, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1005,7 +1005,7 @@ description: Result of parsing property_of_object.kcl ], "5": [ { - "commentStart": 364, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1016,7 +1016,7 @@ description: Result of parsing property_of_object.kcl ], "7": [ { - "commentStart": 482, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1027,7 +1027,7 @@ description: Result of parsing property_of_object.kcl } }, { - "commentStart": 521, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1038,7 +1038,7 @@ description: Result of parsing property_of_object.kcl ], "8": [ { - "commentStart": 546, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1049,7 +1049,7 @@ description: Result of parsing property_of_object.kcl ], "9": [ { - "commentStart": 573, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1060,7 +1060,7 @@ description: Result of parsing property_of_object.kcl ], "11": [ { - "commentStart": 689, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1071,7 +1071,7 @@ description: Result of parsing property_of_object.kcl } }, { - "commentStart": 749, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1082,7 +1082,7 @@ description: Result of parsing property_of_object.kcl ], "12": [ { - "commentStart": 773, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1105,7 +1105,7 @@ description: Result of parsing property_of_object.kcl } }, { - "commentStart": 47, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/revolve_about_edge/artifact_commands.snap b/rust/kcl-lib/tests/revolve_about_edge/artifact_commands.snap index e5d3120b8..b185b24a1 100644 --- a/rust/kcl-lib/tests/revolve_about_edge/artifact_commands.snap +++ b/rust/kcl-lib/tests/revolve_about_edge/artifact_commands.snap @@ -226,7 +226,8 @@ description: Artifact commands revolve_about_edge.kcl "unit": "degrees", "value": 90.0 }, - "tolerance": 0.0000001 + "tolerance": 0.0000001, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/revolve_about_edge/ast.snap b/rust/kcl-lib/tests/revolve_about_edge/ast.snap index 747ddee2f..ccec32795 100644 --- a/rust/kcl-lib/tests/revolve_about_edge/ast.snap +++ b/rust/kcl-lib/tests/revolve_about_edge/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing revolve_about_edge.kcl { "arguments": [ { - "commentStart": 26, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing revolve_about_edge.kcl ], "callee": { "abs_path": false, - "commentStart": 12, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing revolve_about_edge.kcl "start": 0, "type": "Name" }, - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,11 +55,11 @@ description: Result of parsing revolve_about_edge.kcl { "arguments": [ { - "commentStart": 52, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 54, + "commentStart": 0, "end": 0, "raw": "25", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing revolve_about_edge.kcl "suffix": "None" } }, - "commentStart": 53, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -78,7 +78,7 @@ description: Result of parsing revolve_about_edge.kcl "type": "UnaryExpression" }, { - "commentStart": 58, + "commentStart": 0, "end": 0, "raw": "25", "start": 0, @@ -96,7 +96,7 @@ description: Result of parsing revolve_about_edge.kcl "type": "ArrayExpression" }, { - "commentStart": 63, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -105,10 +105,10 @@ description: Result of parsing revolve_about_edge.kcl ], "callee": { "abs_path": false, - "commentStart": 37, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -118,7 +118,7 @@ description: Result of parsing revolve_about_edge.kcl "start": 0, "type": "Name" }, - "commentStart": 37, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -129,7 +129,7 @@ description: Result of parsing revolve_about_edge.kcl { "type": "LabeledArg", "label": { - "commentStart": 77, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -137,7 +137,7 @@ description: Result of parsing revolve_about_edge.kcl }, "arg": { "argument": { - "commentStart": 87, + "commentStart": 0, "end": 0, "raw": "50", "start": 0, @@ -148,7 +148,7 @@ description: Result of parsing revolve_about_edge.kcl "suffix": "None" } }, - "commentStart": 86, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -159,14 +159,14 @@ description: Result of parsing revolve_about_edge.kcl { "type": "LabeledArg", "label": { - "commentStart": 91, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 97, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -177,10 +177,10 @@ description: Result of parsing revolve_about_edge.kcl ], "callee": { "abs_path": false, - "commentStart": 71, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -190,7 +190,7 @@ description: Result of parsing revolve_about_edge.kcl "start": 0, "type": "Name" }, - "commentStart": 71, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -198,7 +198,7 @@ description: Result of parsing revolve_about_edge.kcl "unlabeled": null } ], - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -214,12 +214,12 @@ description: Result of parsing revolve_about_edge.kcl "type": "VariableDeclaration" }, { - "commentStart": 120, + "commentStart": 0, "declaration": { - "commentStart": 120, + "commentStart": 0, "end": 0, "id": { - "commentStart": 120, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -230,7 +230,7 @@ description: Result of parsing revolve_about_edge.kcl { "arguments": [ { - "commentStart": 146, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -241,10 +241,10 @@ description: Result of parsing revolve_about_edge.kcl ], "callee": { "abs_path": false, - "commentStart": 132, + "commentStart": 0, "end": 0, "name": { - "commentStart": 132, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -254,7 +254,7 @@ description: Result of parsing revolve_about_edge.kcl "start": 0, "type": "Name" }, - "commentStart": 132, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -265,18 +265,18 @@ description: Result of parsing revolve_about_edge.kcl { "type": "LabeledArg", "label": { - "commentStart": 164, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 173, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 175, + "commentStart": 0, "end": 0, "raw": "50", "start": 0, @@ -287,7 +287,7 @@ description: Result of parsing revolve_about_edge.kcl "suffix": "None" } }, - "commentStart": 174, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -295,7 +295,7 @@ description: Result of parsing revolve_about_edge.kcl "type": "UnaryExpression" }, { - "commentStart": 179, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -316,14 +316,14 @@ description: Result of parsing revolve_about_edge.kcl { "type": "LabeledArg", "label": { - "commentStart": 183, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 192, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -338,10 +338,10 @@ description: Result of parsing revolve_about_edge.kcl ], "callee": { "abs_path": false, - "commentStart": 157, + "commentStart": 0, "end": 0, "name": { - "commentStart": 157, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -351,7 +351,7 @@ description: Result of parsing revolve_about_edge.kcl "start": 0, "type": "Name" }, - "commentStart": 157, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -363,14 +363,14 @@ description: Result of parsing revolve_about_edge.kcl { "type": "LabeledArg", "label": { - "commentStart": 209, + "commentStart": 0, "end": 0, "name": "angle", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 217, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -385,7 +385,7 @@ description: Result of parsing revolve_about_edge.kcl { "type": "LabeledArg", "label": { - "commentStart": 221, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, @@ -393,10 +393,10 @@ description: Result of parsing revolve_about_edge.kcl }, "arg": { "abs_path": false, - "commentStart": 228, + "commentStart": 0, "end": 0, "name": { - "commentStart": 228, + "commentStart": 0, "end": 0, "name": "rectangleSegmentB001", "start": 0, @@ -411,10 +411,10 @@ description: Result of parsing revolve_about_edge.kcl ], "callee": { "abs_path": false, - "commentStart": 201, + "commentStart": 0, "end": 0, "name": { - "commentStart": 201, + "commentStart": 0, "end": 0, "name": "revolve", "start": 0, @@ -424,7 +424,7 @@ description: Result of parsing revolve_about_edge.kcl "start": 0, "type": "Name" }, - "commentStart": 201, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -432,7 +432,7 @@ description: Result of parsing revolve_about_edge.kcl "unlabeled": null } ], - "commentStart": 132, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/revolve_about_edge/ops.snap b/rust/kcl-lib/tests/revolve_about_edge/ops.snap index bbc004ccc..d764efd56 100644 --- a/rust/kcl-lib/tests/revolve_about_edge/ops.snap +++ b/rust/kcl-lib/tests/revolve_about_edge/ops.snap @@ -5,7 +5,7 @@ description: Operations executed revolve_about_edge.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" @@ -20,7 +20,7 @@ description: Operations executed revolve_about_edge.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/revolve_about_edge/program_memory.snap b/rust/kcl-lib/tests/revolve_about_edge/program_memory.snap index aa22243d0..2b18be91a 100644 --- a/rust/kcl-lib/tests/revolve_about_edge/program_memory.snap +++ b/rust/kcl-lib/tests/revolve_about_edge/program_memory.snap @@ -48,22 +48,34 @@ description: Variables in memory after executing revolve_about_edge.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -153,22 +165,34 @@ description: Variables in memory after executing revolve_about_edge.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/riddle_small/artifact_commands.snap b/rust/kcl-lib/tests/riddle_small/artifact_commands.snap index 222b2b5f7..c7fa1f79d 100644 --- a/rust/kcl-lib/tests/riddle_small/artifact_commands.snap +++ b/rust/kcl-lib/tests/riddle_small/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands riddle_small.kcl "type": "extrude", "target": "[uuid]", "distance": 1.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/riddle_small/ast.snap b/rust/kcl-lib/tests/riddle_small/ast.snap index 880ac35e4..fb93376d9 100644 --- a/rust/kcl-lib/tests/riddle_small/ast.snap +++ b/rust/kcl-lib/tests/riddle_small/ast.snap @@ -18,7 +18,7 @@ description: Result of parsing riddle_small.kcl "type": "Identifier" }, "init": { - "commentStart": 9, + "commentStart": 0, "end": 0, "raw": "41803", "start": 0, @@ -39,12 +39,12 @@ description: Result of parsing riddle_small.kcl "type": "VariableDeclaration" }, { - "commentStart": 14, + "commentStart": 0, "declaration": { - "commentStart": 19, + "commentStart": 0, "end": 0, "id": { - "commentStart": 19, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -55,20 +55,20 @@ description: Result of parsing riddle_small.kcl "body": [ { "argument": { - "commentStart": 36, + "commentStart": 0, "end": 0, "left": { - "commentStart": 36, + "commentStart": 0, "end": 0, "left": { - "commentStart": 36, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 36, + "commentStart": 0, "end": 0, "name": { - "commentStart": 36, + "commentStart": 0, "end": 0, "name": "ANSWER", "start": 0, @@ -82,10 +82,10 @@ description: Result of parsing riddle_small.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 45, + "commentStart": 0, "end": 0, "name": { - "commentStart": 45, + "commentStart": 0, "end": 0, "name": "s", "start": 0, @@ -102,7 +102,7 @@ description: Result of parsing riddle_small.kcl }, "operator": "+", "right": { - "commentStart": 49, + "commentStart": 0, "end": 0, "raw": "12345", "start": 0, @@ -119,7 +119,7 @@ description: Result of parsing riddle_small.kcl }, "operator": "%", "right": { - "commentStart": 58, + "commentStart": 0, "end": 0, "raw": "214748", "start": 0, @@ -134,24 +134,24 @@ description: Result of parsing riddle_small.kcl "type": "BinaryExpression", "type": "BinaryExpression" }, - "commentStart": 28, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 24, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 20, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 21, + "commentStart": 0, "end": 0, "name": "s", "start": 0, @@ -173,19 +173,19 @@ description: Result of parsing riddle_small.kcl "type": "VariableDeclaration" }, { - "commentStart": 66, + "commentStart": 0, "declaration": { - "commentStart": 68, + "commentStart": 0, "end": 0, "id": { - "commentStart": 68, + "commentStart": 0, "end": 0, "name": "xs", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 73, + "commentStart": 0, "end": 0, "raw": "205804", "start": 0, @@ -206,19 +206,19 @@ description: Result of parsing riddle_small.kcl "type": "VariableDeclaration" }, { - "commentStart": 80, + "commentStart": 0, "declaration": { - "commentStart": 80, + "commentStart": 0, "end": 0, "id": { - "commentStart": 80, + "commentStart": 0, "end": 0, "name": "ys", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 85, + "commentStart": 0, "end": 0, "raw": "71816", "start": 0, @@ -239,22 +239,22 @@ description: Result of parsing riddle_small.kcl "type": "VariableDeclaration" }, { - "commentStart": 91, + "commentStart": 0, "declaration": { - "commentStart": 91, + "commentStart": 0, "end": 0, "id": { - "commentStart": 91, + "commentStart": 0, "end": 0, "name": "ox", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 96, + "commentStart": 0, "end": 0, "left": { - "commentStart": 96, + "commentStart": 0, "end": 0, "raw": "35", "start": 0, @@ -267,16 +267,16 @@ description: Result of parsing riddle_small.kcl }, "operator": "-", "right": { - "commentStart": 102, + "commentStart": 0, "end": 0, "left": { "arguments": [ { "abs_path": false, - "commentStart": 104, + "commentStart": 0, "end": 0, "name": { - "commentStart": 104, + "commentStart": 0, "end": 0, "name": "xs", "start": 0, @@ -290,10 +290,10 @@ description: Result of parsing riddle_small.kcl ], "callee": { "abs_path": false, - "commentStart": 102, + "commentStart": 0, "end": 0, "name": { - "commentStart": 102, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -303,7 +303,7 @@ description: Result of parsing riddle_small.kcl "start": 0, "type": "Name" }, - "commentStart": 102, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -311,7 +311,7 @@ description: Result of parsing riddle_small.kcl }, "operator": "%", "right": { - "commentStart": 110, + "commentStart": 0, "end": 0, "raw": "70", "start": 0, @@ -340,22 +340,22 @@ description: Result of parsing riddle_small.kcl "type": "VariableDeclaration" }, { - "commentStart": 114, + "commentStart": 0, "declaration": { - "commentStart": 114, + "commentStart": 0, "end": 0, "id": { - "commentStart": 114, + "commentStart": 0, "end": 0, "name": "oy", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 119, + "commentStart": 0, "end": 0, "left": { - "commentStart": 119, + "commentStart": 0, "end": 0, "raw": "35", "start": 0, @@ -368,16 +368,16 @@ description: Result of parsing riddle_small.kcl }, "operator": "-", "right": { - "commentStart": 125, + "commentStart": 0, "end": 0, "left": { "arguments": [ { "abs_path": false, - "commentStart": 127, + "commentStart": 0, "end": 0, "name": { - "commentStart": 127, + "commentStart": 0, "end": 0, "name": "ys", "start": 0, @@ -391,10 +391,10 @@ description: Result of parsing riddle_small.kcl ], "callee": { "abs_path": false, - "commentStart": 125, + "commentStart": 0, "end": 0, "name": { - "commentStart": 125, + "commentStart": 0, "end": 0, "name": "t", "start": 0, @@ -404,7 +404,7 @@ description: Result of parsing riddle_small.kcl "start": 0, "type": "Name" }, - "commentStart": 125, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -412,7 +412,7 @@ description: Result of parsing riddle_small.kcl }, "operator": "%", "right": { - "commentStart": 133, + "commentStart": 0, "end": 0, "raw": "70", "start": 0, @@ -441,12 +441,12 @@ description: Result of parsing riddle_small.kcl "type": "VariableDeclaration" }, { - "commentStart": 137, + "commentStart": 0, "declaration": { - "commentStart": 137, + "commentStart": 0, "end": 0, "id": { - "commentStart": 137, + "commentStart": 0, "end": 0, "name": "r", "start": 0, @@ -457,7 +457,7 @@ description: Result of parsing riddle_small.kcl { "arguments": [ { - "commentStart": 155, + "commentStart": 0, "end": 0, "raw": "'XZ'", "start": 0, @@ -468,10 +468,10 @@ description: Result of parsing riddle_small.kcl ], "callee": { "abs_path": false, - "commentStart": 141, + "commentStart": 0, "end": 0, "name": { - "commentStart": 141, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -481,7 +481,7 @@ description: Result of parsing riddle_small.kcl "start": 0, "type": "Name" }, - "commentStart": 141, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -490,14 +490,14 @@ description: Result of parsing riddle_small.kcl { "arguments": [ { - "commentStart": 181, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 182, + "commentStart": 0, "end": 0, "name": { - "commentStart": 182, + "commentStart": 0, "end": 0, "name": "ox", "start": 0, @@ -510,10 +510,10 @@ description: Result of parsing riddle_small.kcl }, { "abs_path": false, - "commentStart": 186, + "commentStart": 0, "end": 0, "name": { - "commentStart": 186, + "commentStart": 0, "end": 0, "name": "oy", "start": 0, @@ -531,7 +531,7 @@ description: Result of parsing riddle_small.kcl "type": "ArrayExpression" }, { - "commentStart": 191, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -540,10 +540,10 @@ description: Result of parsing riddle_small.kcl ], "callee": { "abs_path": false, - "commentStart": 166, + "commentStart": 0, "end": 0, "name": { - "commentStart": 166, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -553,7 +553,7 @@ description: Result of parsing riddle_small.kcl "start": 0, "type": "Name" }, - "commentStart": 166, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -564,17 +564,17 @@ description: Result of parsing riddle_small.kcl { "type": "LabeledArg", "label": { - "commentStart": 204, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 210, + "commentStart": 0, "elements": [ { - "commentStart": 211, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -586,7 +586,7 @@ description: Result of parsing riddle_small.kcl } }, { - "commentStart": 214, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -607,10 +607,10 @@ description: Result of parsing riddle_small.kcl ], "callee": { "abs_path": false, - "commentStart": 199, + "commentStart": 0, "end": 0, "name": { - "commentStart": 199, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -620,7 +620,7 @@ description: Result of parsing riddle_small.kcl "start": 0, "type": "Name" }, - "commentStart": 199, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -632,17 +632,17 @@ description: Result of parsing riddle_small.kcl { "type": "LabeledArg", "label": { - "commentStart": 228, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 234, + "commentStart": 0, "elements": [ { - "commentStart": 235, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -655,7 +655,7 @@ description: Result of parsing riddle_small.kcl }, { "argument": { - "commentStart": 239, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -666,7 +666,7 @@ description: Result of parsing riddle_small.kcl "suffix": "None" } }, - "commentStart": 238, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -683,10 +683,10 @@ description: Result of parsing riddle_small.kcl ], "callee": { "abs_path": false, - "commentStart": 223, + "commentStart": 0, "end": 0, "name": { - "commentStart": 223, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -696,7 +696,7 @@ description: Result of parsing riddle_small.kcl "start": 0, "type": "Name" }, - "commentStart": 223, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -708,18 +708,18 @@ description: Result of parsing riddle_small.kcl { "type": "LabeledArg", "label": { - "commentStart": 253, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 259, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 261, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -730,7 +730,7 @@ description: Result of parsing riddle_small.kcl "suffix": "None" } }, - "commentStart": 260, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -738,7 +738,7 @@ description: Result of parsing riddle_small.kcl "type": "UnaryExpression" }, { - "commentStart": 264, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -759,10 +759,10 @@ description: Result of parsing riddle_small.kcl ], "callee": { "abs_path": false, - "commentStart": 248, + "commentStart": 0, "end": 0, "name": { - "commentStart": 248, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -772,7 +772,7 @@ description: Result of parsing riddle_small.kcl "start": 0, "type": "Name" }, - "commentStart": 248, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -782,7 +782,7 @@ description: Result of parsing riddle_small.kcl { "arguments": [ { - "commentStart": 279, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -791,10 +791,10 @@ description: Result of parsing riddle_small.kcl ], "callee": { "abs_path": false, - "commentStart": 273, + "commentStart": 0, "end": 0, "name": { - "commentStart": 273, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -804,7 +804,7 @@ description: Result of parsing riddle_small.kcl "start": 0, "type": "Name" }, - "commentStart": 273, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -815,14 +815,14 @@ description: Result of parsing riddle_small.kcl { "type": "LabeledArg", "label": { - "commentStart": 295, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 304, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -837,10 +837,10 @@ description: Result of parsing riddle_small.kcl ], "callee": { "abs_path": false, - "commentStart": 287, + "commentStart": 0, "end": 0, "name": { - "commentStart": 287, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -850,7 +850,7 @@ description: Result of parsing riddle_small.kcl "start": 0, "type": "Name" }, - "commentStart": 287, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -858,7 +858,7 @@ description: Result of parsing riddle_small.kcl "unlabeled": null } ], - "commentStart": 141, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -880,7 +880,7 @@ description: Result of parsing riddle_small.kcl "nonCodeNodes": { "0": [ { - "commentStart": 14, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -891,7 +891,7 @@ description: Result of parsing riddle_small.kcl ], "1": [ { - "commentStart": 66, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/riddle_small/ops.snap b/rust/kcl-lib/tests/riddle_small/ops.snap index 0c34850a5..40301406d 100644 --- a/rust/kcl-lib/tests/riddle_small/ops.snap +++ b/rust/kcl-lib/tests/riddle_small/ops.snap @@ -41,7 +41,7 @@ description: Operations executed riddle_small.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XZ" diff --git a/rust/kcl-lib/tests/riddle_small/program_memory.snap b/rust/kcl-lib/tests/riddle_small/program_memory.snap index 50f9a8680..b32fcb564 100644 --- a/rust/kcl-lib/tests/riddle_small/program_memory.snap +++ b/rust/kcl-lib/tests/riddle_small/program_memory.snap @@ -20,14 +20,26 @@ description: Variables in memory after executing riddle_small.kcl "type": "Number", "value": -26.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "oy": { "type": "Number", "value": 34.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "r": { @@ -155,22 +167,34 @@ description: Variables in memory after executing riddle_small.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/rotate_after_fillet/artifact_commands.snap b/rust/kcl-lib/tests/rotate_after_fillet/artifact_commands.snap index 8c18be435..b730640a7 100644 --- a/rust/kcl-lib/tests/rotate_after_fillet/artifact_commands.snap +++ b/rust/kcl-lib/tests/rotate_after_fillet/artifact_commands.snap @@ -153,7 +153,8 @@ description: Artifact commands rotate_after_fillet.kcl "type": "extrude", "target": "[uuid]", "distance": -0.625, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -385,7 +386,8 @@ description: Artifact commands rotate_after_fillet.kcl "type": "extrude", "target": "[uuid]", "distance": -0.46875, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -623,7 +625,8 @@ description: Artifact commands rotate_after_fillet.kcl "type": "extrude", "target": "[uuid]", "distance": 2.5, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/rotate_after_fillet/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/rotate_after_fillet/artifact_graph_flowchart.snap.md index 264c6b7a7..e4b679728 100644 --- a/rust/kcl-lib/tests/rotate_after_fillet/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/rotate_after_fillet/artifact_graph_flowchart.snap.md @@ -1,35 +1,35 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[347, 417, 0]"] - 3["Segment
[347, 417, 0]"] + 2["Path
[345, 415, 0]"] + 3["Segment
[345, 415, 0]"] 4[Solid2d] end subgraph path13 [Path] - 13["Path
[655, 742, 0]"] - 14["Segment
[750, 833, 0]"] - 15["Segment
[841, 924, 0]"] - 16["Segment
[932, 1015, 0]"] - 17["Segment
[1023, 1105, 0]"] - 18["Segment
[1113, 1195, 0]"] - 19["Segment
[1203, 1210, 0]"] + 13["Path
[660, 747, 0]"] + 14["Segment
[755, 834, 0]"] + 15["Segment
[842, 921, 0]"] + 16["Segment
[929, 1008, 0]"] + 17["Segment
[1016, 1094, 0]"] + 18["Segment
[1102, 1180, 0]"] + 19["Segment
[1188, 1195, 0]"] 20[Solid2d] end subgraph path41 [Path] - 41["Path
[1311, 1380, 0]"] - 42["Segment
[1311, 1380, 0]"] + 41["Path
[1303, 1372, 0]"] + 42["Segment
[1303, 1372, 0]"] 43[Solid2d] end - 1["Plane
[320, 339, 0]"] - 5["Sweep Extrusion
[425, 458, 0]"] + 1["Plane
[320, 337, 0]"] + 5["Sweep Extrusion
[423, 456, 0]"] 6[Wall] 7["Cap Start"] 8["Cap End"] 9["SweepEdge Opposite"] 10["SweepEdge Adjacent"] - 11["EdgeCut Fillet
[466, 532, 0]"] - 12["EdgeCut Fillet
[466, 532, 0]"] - 21["Sweep Extrusion
[1218, 1258, 0]"] + 11["EdgeCut Fillet
[464, 530, 0]"] + 12["EdgeCut Fillet
[464, 530, 0]"] + 21["Sweep Extrusion
[1203, 1243, 0]"] 22[Wall] 23[Wall] 24[Wall] @@ -49,14 +49,14 @@ flowchart LR 38["SweepEdge Adjacent"] 39["SweepEdge Opposite"] 40["SweepEdge Adjacent"] - 44["Sweep Extrusion
[1388, 1416, 0]"] + 44["Sweep Extrusion
[1380, 1408, 0]"] 45[Wall] 46["Cap End"] 47["SweepEdge Opposite"] 48["SweepEdge Adjacent"] - 49["EdgeCut Fillet
[1424, 1483, 0]"] - 50["StartSketchOnFace
[615, 647, 0]"] - 51["StartSketchOnFace
[1273, 1303, 0]"] + 49["EdgeCut Fillet
[1416, 1475, 0]"] + 50["StartSketchOnFace
[613, 652, 0]"] + 51["StartSketchOnFace
[1258, 1295, 0]"] 1 --- 2 2 --- 3 2 ---- 5 diff --git a/rust/kcl-lib/tests/rotate_after_fillet/ast.snap b/rust/kcl-lib/tests/rotate_after_fillet/ast.snap index 0a37337b0..359cb9cd2 100644 --- a/rust/kcl-lib/tests/rotate_after_fillet/ast.snap +++ b/rust/kcl-lib/tests/rotate_after_fillet/ast.snap @@ -8,17 +8,17 @@ description: Result of parsing rotate_after_fillet.kcl { "commentStart": 0, "declaration": { - "commentStart": 7, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7, + "commentStart": 0, "end": 0, "name": "boltDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 22, + "commentStart": 0, "end": 0, "raw": "0.625", "start": 0, @@ -40,19 +40,19 @@ description: Result of parsing rotate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 28, + "commentStart": 0, "declaration": { - "commentStart": 35, + "commentStart": 0, "end": 0, "id": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "boltLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 48, + "commentStart": 0, "end": 0, "raw": "2.500", "start": 0, @@ -74,12 +74,12 @@ description: Result of parsing rotate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 54, + "commentStart": 0, "declaration": { - "commentStart": 61, + "commentStart": 0, "end": 0, "id": { - "commentStart": 61, + "commentStart": 0, "end": 0, "name": "boltHeadLength", "start": 0, @@ -87,10 +87,10 @@ description: Result of parsing rotate_after_fillet.kcl }, "init": { "abs_path": false, - "commentStart": 78, + "commentStart": 0, "end": 0, "name": { - "commentStart": 78, + "commentStart": 0, "end": 0, "name": "boltDiameter", "start": 0, @@ -112,19 +112,19 @@ description: Result of parsing rotate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 91, + "commentStart": 0, "declaration": { - "commentStart": 98, + "commentStart": 0, "end": 0, "id": { - "commentStart": 98, + "commentStart": 0, "end": 0, "name": "boltHeadDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 117, + "commentStart": 0, "end": 0, "raw": "0.938", "start": 0, @@ -146,22 +146,22 @@ description: Result of parsing rotate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 123, + "commentStart": 0, "declaration": { - "commentStart": 130, + "commentStart": 0, "end": 0, "id": { - "commentStart": 130, + "commentStart": 0, "end": 0, "name": "boltHexDrive", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 145, + "commentStart": 0, "end": 0, "left": { - "commentStart": 145, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -174,7 +174,7 @@ description: Result of parsing rotate_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 149, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -200,26 +200,26 @@ description: Result of parsing rotate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 151, + "commentStart": 0, "declaration": { - "commentStart": 158, + "commentStart": 0, "end": 0, "id": { - "commentStart": 158, + "commentStart": 0, "end": 0, "name": "boltHexFlatLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 178, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 178, + "commentStart": 0, "end": 0, "name": { - "commentStart": 178, + "commentStart": 0, "end": 0, "name": "boltHexDrive", "start": 0, @@ -232,10 +232,10 @@ description: Result of parsing rotate_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 194, + "commentStart": 0, "end": 0, "left": { - "commentStart": 194, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -252,7 +252,7 @@ description: Result of parsing rotate_after_fillet.kcl { "arguments": [ { - "commentStart": 212, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -266,10 +266,10 @@ description: Result of parsing rotate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 202, + "commentStart": 0, "end": 0, "name": { - "commentStart": 202, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -279,7 +279,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 202, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -288,10 +288,10 @@ description: Result of parsing rotate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 198, + "commentStart": 0, "end": 0, "name": { - "commentStart": 198, + "commentStart": 0, "end": 0, "name": "cos", "start": 0, @@ -301,7 +301,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 198, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -326,19 +326,19 @@ description: Result of parsing rotate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 218, + "commentStart": 0, "declaration": { - "commentStart": 225, + "commentStart": 0, "end": 0, "id": { - "commentStart": 225, + "commentStart": 0, "end": 0, "name": "boltThreadLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 244, + "commentStart": 0, "end": 0, "raw": "1.75", "start": 0, @@ -360,12 +360,12 @@ description: Result of parsing rotate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 248, + "commentStart": 0, "declaration": { - "commentStart": 260, + "commentStart": 0, "end": 0, "id": { - "commentStart": 260, + "commentStart": 0, "end": 0, "name": "bolt", "start": 0, @@ -375,12 +375,12 @@ description: Result of parsing rotate_after_fillet.kcl "body": { "body": [ { - "commentStart": 268, + "commentStart": 0, "declaration": { - "commentStart": 309, + "commentStart": 0, "end": 0, "id": { - "commentStart": 309, + "commentStart": 0, "end": 0, "name": "boltHead", "start": 0, @@ -391,21 +391,28 @@ description: Result of parsing rotate_after_fillet.kcl { "arguments": [ { - "commentStart": 334, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'XZ'", + "name": { + "commentStart": 0, + "end": 0, + "name": "XZ", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "XZ" + "type": "Name", + "type": "Name" } ], "callee": { "abs_path": false, - "commentStart": 320, + "commentStart": 0, "end": 0, "name": { - "commentStart": 320, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -415,7 +422,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 320, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -426,17 +433,17 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 354, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 363, + "commentStart": 0, "elements": [ { - "commentStart": 364, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -448,7 +455,7 @@ description: Result of parsing rotate_after_fillet.kcl } }, { - "commentStart": 367, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -469,21 +476,21 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 371, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 380, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 380, + "commentStart": 0, "end": 0, "name": { - "commentStart": 380, + "commentStart": 0, "end": 0, "name": "boltHeadDiameter", "start": 0, @@ -496,7 +503,7 @@ description: Result of parsing rotate_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 399, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -515,14 +522,14 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 402, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 408, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -533,10 +540,10 @@ description: Result of parsing rotate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 347, + "commentStart": 0, "end": 0, "name": { - "commentStart": 347, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -546,7 +553,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 347, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -558,7 +565,7 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 433, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -567,10 +574,10 @@ description: Result of parsing rotate_after_fillet.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 443, + "commentStart": 0, "end": 0, "name": { - "commentStart": 443, + "commentStart": 0, "end": 0, "name": "boltHeadLength", "start": 0, @@ -581,7 +588,7 @@ description: Result of parsing rotate_after_fillet.kcl "type": "Name", "type": "Name" }, - "commentStart": 442, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -592,10 +599,10 @@ description: Result of parsing rotate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 425, + "commentStart": 0, "end": 0, "name": { - "commentStart": 425, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -605,7 +612,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 425, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -617,14 +624,14 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 473, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 482, + "commentStart": 0, "end": 0, "raw": "0.020", "start": 0, @@ -639,21 +646,21 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 489, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 496, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 497, + "commentStart": 0, "end": 0, "name": { - "commentStart": 497, + "commentStart": 0, "end": 0, "name": "topEdge", "start": 0, @@ -668,10 +675,10 @@ description: Result of parsing rotate_after_fillet.kcl "arguments": [ { "abs_path": false, - "commentStart": 522, + "commentStart": 0, "end": 0, "name": { - "commentStart": 522, + "commentStart": 0, "end": 0, "name": "topEdge", "start": 0, @@ -685,10 +692,10 @@ description: Result of parsing rotate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 506, + "commentStart": 0, "end": 0, "name": { - "commentStart": 506, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -698,7 +705,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 506, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -714,10 +721,10 @@ description: Result of parsing rotate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 466, + "commentStart": 0, "end": 0, "name": { - "commentStart": 466, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -727,7 +734,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 466, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -735,13 +742,13 @@ description: Result of parsing rotate_after_fillet.kcl "unlabeled": null } ], - "commentStart": 320, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "3": [ { - "commentStart": 534, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -772,12 +779,12 @@ description: Result of parsing rotate_after_fillet.kcl "type": "VariableDeclaration" }, { - "commentStart": 596, + "commentStart": 0, "declaration": { - "commentStart": 596, + "commentStart": 0, "end": 0, "id": { - "commentStart": 596, + "commentStart": 0, "end": 0, "name": "hexPatternSketch", "start": 0, @@ -788,37 +795,31 @@ description: Result of parsing rotate_after_fillet.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 629, - "end": 0, - "name": { - "commentStart": 629, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "boltHead", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 639, - "end": 0, - "raw": "'start'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "start" + "arg": { + "commentStart": 0, + "end": 0, + "raw": "'start'", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "start" + } } ], "callee": { "abs_path": false, - "commentStart": 615, + "commentStart": 0, "end": 0, "name": { - "commentStart": 615, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -828,26 +829,42 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 615, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHead", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 670, + "commentStart": 0, "elements": [ { - "commentStart": 681, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 681, + "commentStart": 0, "end": 0, "name": { - "commentStart": 681, + "commentStart": 0, "end": 0, "name": "boltHexDrive", "start": 0, @@ -860,7 +877,7 @@ description: Result of parsing rotate_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 696, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -876,14 +893,14 @@ description: Result of parsing rotate_after_fillet.kcl "type": "BinaryExpression" }, { - "commentStart": 708, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 708, + "commentStart": 0, "end": 0, "name": { - "commentStart": 708, + "commentStart": 0, "end": 0, "name": "boltHexFlatLength", "start": 0, @@ -896,7 +913,7 @@ description: Result of parsing rotate_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 728, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -918,7 +935,7 @@ description: Result of parsing rotate_after_fillet.kcl "type": "ArrayExpression" }, { - "commentStart": 740, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -927,10 +944,10 @@ description: Result of parsing rotate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 655, + "commentStart": 0, "end": 0, "name": { - "commentStart": 655, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -940,500 +957,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 655, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 761, - "end": 0, - "properties": [ - { - "commentStart": 772, - "end": 0, - "key": { - "commentStart": 772, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 780, - "end": 0, - "raw": "270", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 270.0, - "suffix": "None" - } - } - }, - { - "commentStart": 794, - "end": 0, - "key": { - "commentStart": 794, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 803, - "end": 0, - "name": { - "commentStart": 803, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 831, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 750, - "end": 0, - "name": { - "commentStart": 750, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 750, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 852, - "end": 0, - "properties": [ - { - "commentStart": 863, - "end": 0, - "key": { - "commentStart": 863, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 871, - "end": 0, - "raw": "210", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 210.0, - "suffix": "None" - } - } - }, - { - "commentStart": 885, - "end": 0, - "key": { - "commentStart": 885, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 894, - "end": 0, - "name": { - "commentStart": 894, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 922, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 841, - "end": 0, - "name": { - "commentStart": 841, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 841, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 943, - "end": 0, - "properties": [ - { - "commentStart": 954, - "end": 0, - "key": { - "commentStart": 954, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 962, - "end": 0, - "raw": "150", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 150.0, - "suffix": "None" - } - } - }, - { - "commentStart": 976, - "end": 0, - "key": { - "commentStart": 976, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 985, - "end": 0, - "name": { - "commentStart": 985, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1013, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 932, - "end": 0, - "name": { - "commentStart": 932, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 932, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1034, - "end": 0, - "properties": [ - { - "commentStart": 1045, - "end": 0, - "key": { - "commentStart": 1045, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1053, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1066, - "end": 0, - "key": { - "commentStart": 1066, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1075, - "end": 0, - "name": { - "commentStart": 1075, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1103, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1023, - "end": 0, - "name": { - "commentStart": 1023, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1023, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1124, - "end": 0, - "properties": [ - { - "commentStart": 1135, - "end": 0, - "key": { - "commentStart": 1135, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1143, - "end": 0, - "raw": "30", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 30.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1156, - "end": 0, - "key": { - "commentStart": 1156, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1165, - "end": 0, - "name": { - "commentStart": 1165, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1193, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1113, - "end": 0, - "name": { - "commentStart": 1113, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1113, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [], - "callee": { - "abs_path": false, - "commentStart": 1203, - "end": 0, - "name": { - "commentStart": 1203, - "end": 0, - "name": "close", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1203, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1444,22 +968,410 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1226, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "270", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 270.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1235, + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "210", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 210.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "150", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 150.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "90", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "30", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 30.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "close", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1236, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1236, + "commentStart": 0, "end": 0, "name": "boltHeadLength", "start": 0, @@ -1470,7 +1382,7 @@ description: Result of parsing rotate_after_fillet.kcl "type": "Name", "type": "Name" }, - "commentStart": 1235, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1479,7 +1391,7 @@ description: Result of parsing rotate_after_fillet.kcl }, "operator": "*", "right": { - "commentStart": 1253, + "commentStart": 0, "end": 0, "raw": "0.75", "start": 0, @@ -1498,10 +1410,10 @@ description: Result of parsing rotate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1218, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1218, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1511,7 +1423,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1218, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1519,7 +1431,7 @@ description: Result of parsing rotate_after_fillet.kcl "unlabeled": null } ], - "commentStart": 615, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1535,12 +1447,12 @@ description: Result of parsing rotate_after_fillet.kcl "type": "VariableDeclaration" }, { - "commentStart": 1258, + "commentStart": 0, "declaration": { - "commentStart": 1262, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1262, + "commentStart": 0, "end": 0, "name": "boltBody", "start": 0, @@ -1551,37 +1463,31 @@ description: Result of parsing rotate_after_fillet.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1287, - "end": 0, - "name": { - "commentStart": 1287, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "boltHead", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 1297, - "end": 0, - "raw": "'end'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "end" + "arg": { + "commentStart": 0, + "end": 0, + "raw": "'end'", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "end" + } } ], "callee": { "abs_path": false, - "commentStart": 1273, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1273, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1591,28 +1497,44 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1273, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHead", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1318, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1327, + "commentStart": 0, "elements": [ { - "commentStart": 1328, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1624,7 +1546,7 @@ description: Result of parsing rotate_after_fillet.kcl } }, { - "commentStart": 1331, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1645,21 +1567,21 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1335, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1344, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1344, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1344, + "commentStart": 0, "end": 0, "name": "boltDiameter", "start": 0, @@ -1672,7 +1594,7 @@ description: Result of parsing rotate_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 1359, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1691,14 +1613,14 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1362, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1368, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1709,10 +1631,10 @@ description: Result of parsing rotate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1311, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1311, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1722,7 +1644,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1311, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1734,7 +1656,7 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1396, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1742,10 +1664,10 @@ description: Result of parsing rotate_after_fillet.kcl }, "arg": { "abs_path": false, - "commentStart": 1405, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1405, + "commentStart": 0, "end": 0, "name": "boltLength", "start": 0, @@ -1760,10 +1682,10 @@ description: Result of parsing rotate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1388, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1388, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1773,7 +1695,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1388, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1785,14 +1707,14 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1431, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1440, + "commentStart": 0, "end": 0, "raw": ".020", "start": 0, @@ -1807,23 +1729,23 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1446, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1453, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 1470, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1470, + "commentStart": 0, "end": 0, "name": "filletEdge", "start": 0, @@ -1837,10 +1759,10 @@ description: Result of parsing rotate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1454, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1454, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -1850,7 +1772,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1454, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1866,10 +1788,10 @@ description: Result of parsing rotate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1424, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1424, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -1879,7 +1801,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1424, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1891,14 +1813,14 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1502, + "commentStart": 0, "end": 0, "name": "color", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1510, + "commentStart": 0, "end": 0, "raw": "\"#4dd043\"", "start": 0, @@ -1910,14 +1832,14 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1521, + "commentStart": 0, "end": 0, "name": "metalness", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1533, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1932,14 +1854,14 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1537, + "commentStart": 0, "end": 0, "name": "roughness", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1549, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1954,10 +1876,10 @@ description: Result of parsing rotate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1491, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1491, + "commentStart": 0, "end": 0, "name": "appearance", "start": 0, @@ -1967,7 +1889,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1491, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1975,7 +1897,7 @@ description: Result of parsing rotate_after_fillet.kcl "unlabeled": null } ], - "commentStart": 1273, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1993,10 +1915,10 @@ description: Result of parsing rotate_after_fillet.kcl { "argument": { "abs_path": false, - "commentStart": 1563, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1563, + "commentStart": 0, "end": 0, "name": "boltBody", "start": 0, @@ -2007,20 +1929,20 @@ description: Result of parsing rotate_after_fillet.kcl "type": "Name", "type": "Name" }, - "commentStart": 1552, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 268, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 1258, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2031,7 +1953,7 @@ description: Result of parsing rotate_after_fillet.kcl ], "2": [ { - "commentStart": 1552, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2045,7 +1967,7 @@ description: Result of parsing rotate_after_fillet.kcl }, "start": 0 }, - "commentStart": 264, + "commentStart": 0, "end": 0, "params": [], "start": 0, @@ -2063,7 +1985,7 @@ description: Result of parsing rotate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 1573, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -2071,10 +1993,10 @@ description: Result of parsing rotate_after_fillet.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1575, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1575, + "commentStart": 0, "end": 0, "name": "bolt", "start": 0, @@ -2084,7 +2006,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1575, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2095,14 +2017,14 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1594, + "commentStart": 0, "end": 0, "name": "roll", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1601, + "commentStart": 0, "end": 0, "raw": "3.14", "start": 0, @@ -2117,14 +2039,14 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1607, + "commentStart": 0, "end": 0, "name": "pitch", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1615, + "commentStart": 0, "end": 0, "raw": "3.14", "start": 0, @@ -2139,14 +2061,14 @@ description: Result of parsing rotate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1621, + "commentStart": 0, "end": 0, "name": "yaw", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1627, + "commentStart": 0, "end": 0, "raw": "3.14", "start": 0, @@ -2161,10 +2083,10 @@ description: Result of parsing rotate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1587, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1587, + "commentStart": 0, "end": 0, "name": "rotate", "start": 0, @@ -2174,7 +2096,7 @@ description: Result of parsing rotate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1587, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2182,13 +2104,13 @@ description: Result of parsing rotate_after_fillet.kcl "unlabeled": null } ], - "commentStart": 1575, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 1632, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2217,7 +2139,7 @@ description: Result of parsing rotate_after_fillet.kcl "nonCodeNodes": { "6": [ { - "commentStart": 248, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2228,7 +2150,7 @@ description: Result of parsing rotate_after_fillet.kcl ], "7": [ { - "commentStart": 1573, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/rotate_after_fillet/input.kcl b/rust/kcl-lib/tests/rotate_after_fillet/input.kcl index 873f155cb..a9e3e3a76 100644 --- a/rust/kcl-lib/tests/rotate_after_fillet/input.kcl +++ b/rust/kcl-lib/tests/rotate_after_fillet/input.kcl @@ -8,41 +8,41 @@ export boltThreadLength = 1.75 export fn bolt() { // Create the head of the cap screw - boltHead = startSketchOn('XZ') + boltHead = startSketchOn(XZ) |> circle(center = [0, 0], radius = boltHeadDiameter / 2, tag = $topEdge) |> extrude(length = -boltHeadLength) |> fillet(radius = 0.020, tags = [topEdge, getOppositeEdge(topEdge)]) // Define the sketch of the hex pattern on the screw head - hexPatternSketch = startSketchOn(boltHead, 'start') + hexPatternSketch = startSketchOn(boltHead, face = 'start') |> startProfileAt([ boltHexDrive / 2, boltHexFlatLength / 2 ], %) - |> angledLine({ + |> angledLine( angle = 270, - length = boltHexFlatLength - }, %) - |> angledLine({ + length = boltHexFlatLength, + ) + |> angledLine( angle = 210, - length = boltHexFlatLength - }, %) - |> angledLine({ + length = boltHexFlatLength, + ) + |> angledLine( angle = 150, - length = boltHexFlatLength - }, %) - |> angledLine({ + length = boltHexFlatLength, + ) + |> angledLine( angle = 90, - length = boltHexFlatLength - }, %) - |> angledLine({ + length = boltHexFlatLength, + ) + |> angledLine( angle = 30, - length = boltHexFlatLength - }, %) + length = boltHexFlatLength, + ) |> close() |> extrude(length = -boltHeadLength * 0.75) - boltBody = startSketchOn(boltHead, 'end') + boltBody = startSketchOn(boltHead, face = 'end') |> circle(center = [0, 0], radius = boltDiameter / 2, tag = $filletEdge) |> extrude(length = boltLength) |> fillet(radius = .020, tags = [getOppositeEdge(filletEdge)]) diff --git a/rust/kcl-lib/tests/rotate_after_fillet/ops.snap b/rust/kcl-lib/tests/rotate_after_fillet/ops.snap index e4505fdc1..cea782a16 100644 --- a/rust/kcl-lib/tests/rotate_after_fillet/ops.snap +++ b/rust/kcl-lib/tests/rotate_after_fillet/ops.snap @@ -28,7 +28,7 @@ description: Operations executed rotate_after_fillet.kcl "name": "bolt", "functionSourceRange": [ 264, - 1573, + 1565, 0 ], "unlabeledArg": null, @@ -38,10 +38,10 @@ description: Operations executed rotate_after_fillet.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { - "type": "String", - "value": "XZ" + "type": "Plane", + "artifact_id": "[uuid]" }, "sourceRange": [] } @@ -134,16 +134,7 @@ description: Operations executed rotate_after_fillet.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -154,7 +145,15 @@ description: Operations executed rotate_after_fillet.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -163,7 +162,13 @@ description: Operations executed rotate_after_fillet.kcl "type": "Number", "value": -0.46875, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -184,16 +189,7 @@ description: Operations executed rotate_after_fillet.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -204,7 +200,15 @@ description: Operations executed rotate_after_fillet.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/rotate_after_fillet/program_memory.snap b/rust/kcl-lib/tests/rotate_after_fillet/program_memory.snap index 0f5a92bef..8176dc7b8 100644 --- a/rust/kcl-lib/tests/rotate_after_fillet/program_memory.snap +++ b/rust/kcl-lib/tests/rotate_after_fillet/program_memory.snap @@ -49,14 +49,26 @@ description: Variables in memory after executing rotate_after_fillet.kcl "type": "Number", "value": 0.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "boltHexFlatLength": { "type": "Number", "value": 0.2887, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "boltLength": { diff --git a/rust/kcl-lib/tests/rotate_after_fillet/unparsed.snap b/rust/kcl-lib/tests/rotate_after_fillet/unparsed.snap index 95ee065b1..ca53ee9ef 100644 --- a/rust/kcl-lib/tests/rotate_after_fillet/unparsed.snap +++ b/rust/kcl-lib/tests/rotate_after_fillet/unparsed.snap @@ -18,35 +18,20 @@ export fn bolt() { |> fillet(radius = 0.020, tags = [topEdge, getOppositeEdge(topEdge)]) // Define the sketch of the hex pattern on the screw head - hexPatternSketch = startSketchOn(boltHead, 'start') + hexPatternSketch = startSketchOn(boltHead, face = START) |> startProfileAt([ boltHexDrive / 2, boltHexFlatLength / 2 ], %) - |> angledLine({ - angle = 270, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 210, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 150, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 90, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 30, - length = boltHexFlatLength - }, %) + |> angledLine(angle = 270, length = boltHexFlatLength) + |> angledLine(angle = 210, length = boltHexFlatLength) + |> angledLine(angle = 150, length = boltHexFlatLength) + |> angledLine(angle = 90, length = boltHexFlatLength) + |> angledLine(angle = 30, length = boltHexFlatLength) |> close() |> extrude(length = -boltHeadLength * 0.75) - boltBody = startSketchOn(boltHead, 'end') + boltBody = startSketchOn(boltHead, face = END) |> circle(center = [0, 0], radius = boltDiameter / 2, tag = $filletEdge) |> extrude(length = boltLength) |> fillet(radius = .020, tags = [getOppositeEdge(filletEdge)]) diff --git a/rust/kcl-lib/tests/scale_after_fillet/artifact_commands.snap b/rust/kcl-lib/tests/scale_after_fillet/artifact_commands.snap index 6e1139869..9114fc57f 100644 --- a/rust/kcl-lib/tests/scale_after_fillet/artifact_commands.snap +++ b/rust/kcl-lib/tests/scale_after_fillet/artifact_commands.snap @@ -153,7 +153,8 @@ description: Artifact commands scale_after_fillet.kcl "type": "extrude", "target": "[uuid]", "distance": -0.625, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -385,7 +386,8 @@ description: Artifact commands scale_after_fillet.kcl "type": "extrude", "target": "[uuid]", "distance": -0.46875, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -623,7 +625,8 @@ description: Artifact commands scale_after_fillet.kcl "type": "extrude", "target": "[uuid]", "distance": 2.5, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/scale_after_fillet/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/scale_after_fillet/artifact_graph_flowchart.snap.md index 264c6b7a7..e4b679728 100644 --- a/rust/kcl-lib/tests/scale_after_fillet/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/scale_after_fillet/artifact_graph_flowchart.snap.md @@ -1,35 +1,35 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[347, 417, 0]"] - 3["Segment
[347, 417, 0]"] + 2["Path
[345, 415, 0]"] + 3["Segment
[345, 415, 0]"] 4[Solid2d] end subgraph path13 [Path] - 13["Path
[655, 742, 0]"] - 14["Segment
[750, 833, 0]"] - 15["Segment
[841, 924, 0]"] - 16["Segment
[932, 1015, 0]"] - 17["Segment
[1023, 1105, 0]"] - 18["Segment
[1113, 1195, 0]"] - 19["Segment
[1203, 1210, 0]"] + 13["Path
[660, 747, 0]"] + 14["Segment
[755, 834, 0]"] + 15["Segment
[842, 921, 0]"] + 16["Segment
[929, 1008, 0]"] + 17["Segment
[1016, 1094, 0]"] + 18["Segment
[1102, 1180, 0]"] + 19["Segment
[1188, 1195, 0]"] 20[Solid2d] end subgraph path41 [Path] - 41["Path
[1311, 1380, 0]"] - 42["Segment
[1311, 1380, 0]"] + 41["Path
[1303, 1372, 0]"] + 42["Segment
[1303, 1372, 0]"] 43[Solid2d] end - 1["Plane
[320, 339, 0]"] - 5["Sweep Extrusion
[425, 458, 0]"] + 1["Plane
[320, 337, 0]"] + 5["Sweep Extrusion
[423, 456, 0]"] 6[Wall] 7["Cap Start"] 8["Cap End"] 9["SweepEdge Opposite"] 10["SweepEdge Adjacent"] - 11["EdgeCut Fillet
[466, 532, 0]"] - 12["EdgeCut Fillet
[466, 532, 0]"] - 21["Sweep Extrusion
[1218, 1258, 0]"] + 11["EdgeCut Fillet
[464, 530, 0]"] + 12["EdgeCut Fillet
[464, 530, 0]"] + 21["Sweep Extrusion
[1203, 1243, 0]"] 22[Wall] 23[Wall] 24[Wall] @@ -49,14 +49,14 @@ flowchart LR 38["SweepEdge Adjacent"] 39["SweepEdge Opposite"] 40["SweepEdge Adjacent"] - 44["Sweep Extrusion
[1388, 1416, 0]"] + 44["Sweep Extrusion
[1380, 1408, 0]"] 45[Wall] 46["Cap End"] 47["SweepEdge Opposite"] 48["SweepEdge Adjacent"] - 49["EdgeCut Fillet
[1424, 1483, 0]"] - 50["StartSketchOnFace
[615, 647, 0]"] - 51["StartSketchOnFace
[1273, 1303, 0]"] + 49["EdgeCut Fillet
[1416, 1475, 0]"] + 50["StartSketchOnFace
[613, 652, 0]"] + 51["StartSketchOnFace
[1258, 1295, 0]"] 1 --- 2 2 --- 3 2 ---- 5 diff --git a/rust/kcl-lib/tests/scale_after_fillet/ast.snap b/rust/kcl-lib/tests/scale_after_fillet/ast.snap index 61ed95ce4..aeb7091fa 100644 --- a/rust/kcl-lib/tests/scale_after_fillet/ast.snap +++ b/rust/kcl-lib/tests/scale_after_fillet/ast.snap @@ -8,17 +8,17 @@ description: Result of parsing scale_after_fillet.kcl { "commentStart": 0, "declaration": { - "commentStart": 7, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7, + "commentStart": 0, "end": 0, "name": "boltDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 22, + "commentStart": 0, "end": 0, "raw": "0.625", "start": 0, @@ -40,19 +40,19 @@ description: Result of parsing scale_after_fillet.kcl "visibility": "export" }, { - "commentStart": 28, + "commentStart": 0, "declaration": { - "commentStart": 35, + "commentStart": 0, "end": 0, "id": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "boltLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 48, + "commentStart": 0, "end": 0, "raw": "2.500", "start": 0, @@ -74,12 +74,12 @@ description: Result of parsing scale_after_fillet.kcl "visibility": "export" }, { - "commentStart": 54, + "commentStart": 0, "declaration": { - "commentStart": 61, + "commentStart": 0, "end": 0, "id": { - "commentStart": 61, + "commentStart": 0, "end": 0, "name": "boltHeadLength", "start": 0, @@ -87,10 +87,10 @@ description: Result of parsing scale_after_fillet.kcl }, "init": { "abs_path": false, - "commentStart": 78, + "commentStart": 0, "end": 0, "name": { - "commentStart": 78, + "commentStart": 0, "end": 0, "name": "boltDiameter", "start": 0, @@ -112,19 +112,19 @@ description: Result of parsing scale_after_fillet.kcl "visibility": "export" }, { - "commentStart": 91, + "commentStart": 0, "declaration": { - "commentStart": 98, + "commentStart": 0, "end": 0, "id": { - "commentStart": 98, + "commentStart": 0, "end": 0, "name": "boltHeadDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 117, + "commentStart": 0, "end": 0, "raw": "0.938", "start": 0, @@ -146,22 +146,22 @@ description: Result of parsing scale_after_fillet.kcl "visibility": "export" }, { - "commentStart": 123, + "commentStart": 0, "declaration": { - "commentStart": 130, + "commentStart": 0, "end": 0, "id": { - "commentStart": 130, + "commentStart": 0, "end": 0, "name": "boltHexDrive", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 145, + "commentStart": 0, "end": 0, "left": { - "commentStart": 145, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -174,7 +174,7 @@ description: Result of parsing scale_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 149, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -200,26 +200,26 @@ description: Result of parsing scale_after_fillet.kcl "visibility": "export" }, { - "commentStart": 151, + "commentStart": 0, "declaration": { - "commentStart": 158, + "commentStart": 0, "end": 0, "id": { - "commentStart": 158, + "commentStart": 0, "end": 0, "name": "boltHexFlatLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 178, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 178, + "commentStart": 0, "end": 0, "name": { - "commentStart": 178, + "commentStart": 0, "end": 0, "name": "boltHexDrive", "start": 0, @@ -232,10 +232,10 @@ description: Result of parsing scale_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 194, + "commentStart": 0, "end": 0, "left": { - "commentStart": 194, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -252,7 +252,7 @@ description: Result of parsing scale_after_fillet.kcl { "arguments": [ { - "commentStart": 212, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -266,10 +266,10 @@ description: Result of parsing scale_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 202, + "commentStart": 0, "end": 0, "name": { - "commentStart": 202, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -279,7 +279,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 202, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -288,10 +288,10 @@ description: Result of parsing scale_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 198, + "commentStart": 0, "end": 0, "name": { - "commentStart": 198, + "commentStart": 0, "end": 0, "name": "cos", "start": 0, @@ -301,7 +301,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 198, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -326,19 +326,19 @@ description: Result of parsing scale_after_fillet.kcl "visibility": "export" }, { - "commentStart": 218, + "commentStart": 0, "declaration": { - "commentStart": 225, + "commentStart": 0, "end": 0, "id": { - "commentStart": 225, + "commentStart": 0, "end": 0, "name": "boltThreadLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 244, + "commentStart": 0, "end": 0, "raw": "1.75", "start": 0, @@ -360,12 +360,12 @@ description: Result of parsing scale_after_fillet.kcl "visibility": "export" }, { - "commentStart": 248, + "commentStart": 0, "declaration": { - "commentStart": 260, + "commentStart": 0, "end": 0, "id": { - "commentStart": 260, + "commentStart": 0, "end": 0, "name": "bolt", "start": 0, @@ -375,12 +375,12 @@ description: Result of parsing scale_after_fillet.kcl "body": { "body": [ { - "commentStart": 268, + "commentStart": 0, "declaration": { - "commentStart": 309, + "commentStart": 0, "end": 0, "id": { - "commentStart": 309, + "commentStart": 0, "end": 0, "name": "boltHead", "start": 0, @@ -391,21 +391,28 @@ description: Result of parsing scale_after_fillet.kcl { "arguments": [ { - "commentStart": 334, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'XZ'", + "name": { + "commentStart": 0, + "end": 0, + "name": "XZ", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "XZ" + "type": "Name", + "type": "Name" } ], "callee": { "abs_path": false, - "commentStart": 320, + "commentStart": 0, "end": 0, "name": { - "commentStart": 320, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -415,7 +422,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 320, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -426,17 +433,17 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 354, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 363, + "commentStart": 0, "elements": [ { - "commentStart": 364, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -448,7 +455,7 @@ description: Result of parsing scale_after_fillet.kcl } }, { - "commentStart": 367, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -469,21 +476,21 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 371, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 380, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 380, + "commentStart": 0, "end": 0, "name": { - "commentStart": 380, + "commentStart": 0, "end": 0, "name": "boltHeadDiameter", "start": 0, @@ -496,7 +503,7 @@ description: Result of parsing scale_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 399, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -515,14 +522,14 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 402, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 408, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -533,10 +540,10 @@ description: Result of parsing scale_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 347, + "commentStart": 0, "end": 0, "name": { - "commentStart": 347, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -546,7 +553,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 347, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -558,7 +565,7 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 433, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -567,10 +574,10 @@ description: Result of parsing scale_after_fillet.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 443, + "commentStart": 0, "end": 0, "name": { - "commentStart": 443, + "commentStart": 0, "end": 0, "name": "boltHeadLength", "start": 0, @@ -581,7 +588,7 @@ description: Result of parsing scale_after_fillet.kcl "type": "Name", "type": "Name" }, - "commentStart": 442, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -592,10 +599,10 @@ description: Result of parsing scale_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 425, + "commentStart": 0, "end": 0, "name": { - "commentStart": 425, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -605,7 +612,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 425, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -617,14 +624,14 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 473, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 482, + "commentStart": 0, "end": 0, "raw": "0.020", "start": 0, @@ -639,21 +646,21 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 489, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 496, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 497, + "commentStart": 0, "end": 0, "name": { - "commentStart": 497, + "commentStart": 0, "end": 0, "name": "topEdge", "start": 0, @@ -668,10 +675,10 @@ description: Result of parsing scale_after_fillet.kcl "arguments": [ { "abs_path": false, - "commentStart": 522, + "commentStart": 0, "end": 0, "name": { - "commentStart": 522, + "commentStart": 0, "end": 0, "name": "topEdge", "start": 0, @@ -685,10 +692,10 @@ description: Result of parsing scale_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 506, + "commentStart": 0, "end": 0, "name": { - "commentStart": 506, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -698,7 +705,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 506, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -714,10 +721,10 @@ description: Result of parsing scale_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 466, + "commentStart": 0, "end": 0, "name": { - "commentStart": 466, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -727,7 +734,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 466, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -735,13 +742,13 @@ description: Result of parsing scale_after_fillet.kcl "unlabeled": null } ], - "commentStart": 320, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "3": [ { - "commentStart": 534, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -772,12 +779,12 @@ description: Result of parsing scale_after_fillet.kcl "type": "VariableDeclaration" }, { - "commentStart": 596, + "commentStart": 0, "declaration": { - "commentStart": 596, + "commentStart": 0, "end": 0, "id": { - "commentStart": 596, + "commentStart": 0, "end": 0, "name": "hexPatternSketch", "start": 0, @@ -788,37 +795,31 @@ description: Result of parsing scale_after_fillet.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 629, - "end": 0, - "name": { - "commentStart": 629, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "boltHead", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 639, - "end": 0, - "raw": "'start'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "start" + "arg": { + "commentStart": 0, + "end": 0, + "raw": "'start'", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "start" + } } ], "callee": { "abs_path": false, - "commentStart": 615, + "commentStart": 0, "end": 0, "name": { - "commentStart": 615, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -828,26 +829,42 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 615, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHead", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 670, + "commentStart": 0, "elements": [ { - "commentStart": 681, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 681, + "commentStart": 0, "end": 0, "name": { - "commentStart": 681, + "commentStart": 0, "end": 0, "name": "boltHexDrive", "start": 0, @@ -860,7 +877,7 @@ description: Result of parsing scale_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 696, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -876,14 +893,14 @@ description: Result of parsing scale_after_fillet.kcl "type": "BinaryExpression" }, { - "commentStart": 708, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 708, + "commentStart": 0, "end": 0, "name": { - "commentStart": 708, + "commentStart": 0, "end": 0, "name": "boltHexFlatLength", "start": 0, @@ -896,7 +913,7 @@ description: Result of parsing scale_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 728, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -918,7 +935,7 @@ description: Result of parsing scale_after_fillet.kcl "type": "ArrayExpression" }, { - "commentStart": 740, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -927,10 +944,10 @@ description: Result of parsing scale_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 655, + "commentStart": 0, "end": 0, "name": { - "commentStart": 655, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -940,500 +957,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 655, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 761, - "end": 0, - "properties": [ - { - "commentStart": 772, - "end": 0, - "key": { - "commentStart": 772, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 780, - "end": 0, - "raw": "270", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 270.0, - "suffix": "None" - } - } - }, - { - "commentStart": 794, - "end": 0, - "key": { - "commentStart": 794, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 803, - "end": 0, - "name": { - "commentStart": 803, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 831, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 750, - "end": 0, - "name": { - "commentStart": 750, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 750, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 852, - "end": 0, - "properties": [ - { - "commentStart": 863, - "end": 0, - "key": { - "commentStart": 863, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 871, - "end": 0, - "raw": "210", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 210.0, - "suffix": "None" - } - } - }, - { - "commentStart": 885, - "end": 0, - "key": { - "commentStart": 885, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 894, - "end": 0, - "name": { - "commentStart": 894, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 922, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 841, - "end": 0, - "name": { - "commentStart": 841, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 841, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 943, - "end": 0, - "properties": [ - { - "commentStart": 954, - "end": 0, - "key": { - "commentStart": 954, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 962, - "end": 0, - "raw": "150", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 150.0, - "suffix": "None" - } - } - }, - { - "commentStart": 976, - "end": 0, - "key": { - "commentStart": 976, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 985, - "end": 0, - "name": { - "commentStart": 985, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1013, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 932, - "end": 0, - "name": { - "commentStart": 932, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 932, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1034, - "end": 0, - "properties": [ - { - "commentStart": 1045, - "end": 0, - "key": { - "commentStart": 1045, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1053, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1066, - "end": 0, - "key": { - "commentStart": 1066, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1075, - "end": 0, - "name": { - "commentStart": 1075, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1103, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1023, - "end": 0, - "name": { - "commentStart": 1023, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1023, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1124, - "end": 0, - "properties": [ - { - "commentStart": 1135, - "end": 0, - "key": { - "commentStart": 1135, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1143, - "end": 0, - "raw": "30", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 30.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1156, - "end": 0, - "key": { - "commentStart": 1156, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1165, - "end": 0, - "name": { - "commentStart": 1165, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1193, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1113, - "end": 0, - "name": { - "commentStart": 1113, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1113, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [], - "callee": { - "abs_path": false, - "commentStart": 1203, - "end": 0, - "name": { - "commentStart": 1203, - "end": 0, - "name": "close", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1203, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1444,22 +968,410 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1226, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "270", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 270.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1235, + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "210", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 210.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "150", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 150.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "90", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "30", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 30.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "close", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1236, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1236, + "commentStart": 0, "end": 0, "name": "boltHeadLength", "start": 0, @@ -1470,7 +1382,7 @@ description: Result of parsing scale_after_fillet.kcl "type": "Name", "type": "Name" }, - "commentStart": 1235, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1479,7 +1391,7 @@ description: Result of parsing scale_after_fillet.kcl }, "operator": "*", "right": { - "commentStart": 1253, + "commentStart": 0, "end": 0, "raw": "0.75", "start": 0, @@ -1498,10 +1410,10 @@ description: Result of parsing scale_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1218, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1218, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1511,7 +1423,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1218, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1519,7 +1431,7 @@ description: Result of parsing scale_after_fillet.kcl "unlabeled": null } ], - "commentStart": 615, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1535,12 +1447,12 @@ description: Result of parsing scale_after_fillet.kcl "type": "VariableDeclaration" }, { - "commentStart": 1258, + "commentStart": 0, "declaration": { - "commentStart": 1262, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1262, + "commentStart": 0, "end": 0, "name": "boltBody", "start": 0, @@ -1551,37 +1463,31 @@ description: Result of parsing scale_after_fillet.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1287, - "end": 0, - "name": { - "commentStart": 1287, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "boltHead", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 1297, - "end": 0, - "raw": "'end'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "end" + "arg": { + "commentStart": 0, + "end": 0, + "raw": "'end'", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "end" + } } ], "callee": { "abs_path": false, - "commentStart": 1273, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1273, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1591,28 +1497,44 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1273, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHead", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1318, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1327, + "commentStart": 0, "elements": [ { - "commentStart": 1328, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1624,7 +1546,7 @@ description: Result of parsing scale_after_fillet.kcl } }, { - "commentStart": 1331, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1645,21 +1567,21 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1335, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1344, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1344, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1344, + "commentStart": 0, "end": 0, "name": "boltDiameter", "start": 0, @@ -1672,7 +1594,7 @@ description: Result of parsing scale_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 1359, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1691,14 +1613,14 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1362, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1368, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1709,10 +1631,10 @@ description: Result of parsing scale_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1311, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1311, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1722,7 +1644,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1311, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1734,7 +1656,7 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1396, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1742,10 +1664,10 @@ description: Result of parsing scale_after_fillet.kcl }, "arg": { "abs_path": false, - "commentStart": 1405, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1405, + "commentStart": 0, "end": 0, "name": "boltLength", "start": 0, @@ -1760,10 +1682,10 @@ description: Result of parsing scale_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1388, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1388, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1773,7 +1695,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1388, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1785,14 +1707,14 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1431, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1440, + "commentStart": 0, "end": 0, "raw": ".020", "start": 0, @@ -1807,23 +1729,23 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1446, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1453, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 1470, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1470, + "commentStart": 0, "end": 0, "name": "filletEdge", "start": 0, @@ -1837,10 +1759,10 @@ description: Result of parsing scale_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1454, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1454, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -1850,7 +1772,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1454, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1866,10 +1788,10 @@ description: Result of parsing scale_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1424, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1424, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -1879,7 +1801,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1424, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1891,14 +1813,14 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1502, + "commentStart": 0, "end": 0, "name": "color", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1510, + "commentStart": 0, "end": 0, "raw": "\"#4dd043\"", "start": 0, @@ -1910,14 +1832,14 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1521, + "commentStart": 0, "end": 0, "name": "metalness", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1533, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1932,14 +1854,14 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1537, + "commentStart": 0, "end": 0, "name": "roughness", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1549, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1954,10 +1876,10 @@ description: Result of parsing scale_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1491, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1491, + "commentStart": 0, "end": 0, "name": "appearance", "start": 0, @@ -1967,7 +1889,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1491, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1975,7 +1897,7 @@ description: Result of parsing scale_after_fillet.kcl "unlabeled": null } ], - "commentStart": 1273, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1993,10 +1915,10 @@ description: Result of parsing scale_after_fillet.kcl { "argument": { "abs_path": false, - "commentStart": 1563, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1563, + "commentStart": 0, "end": 0, "name": "boltBody", "start": 0, @@ -2007,20 +1929,20 @@ description: Result of parsing scale_after_fillet.kcl "type": "Name", "type": "Name" }, - "commentStart": 1552, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 268, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 1258, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2031,7 +1953,7 @@ description: Result of parsing scale_after_fillet.kcl ], "2": [ { - "commentStart": 1552, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2045,7 +1967,7 @@ description: Result of parsing scale_after_fillet.kcl }, "start": 0 }, - "commentStart": 264, + "commentStart": 0, "end": 0, "params": [], "start": 0, @@ -2063,7 +1985,7 @@ description: Result of parsing scale_after_fillet.kcl "visibility": "export" }, { - "commentStart": 1573, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -2071,10 +1993,10 @@ description: Result of parsing scale_after_fillet.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1575, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1575, + "commentStart": 0, "end": 0, "name": "bolt", "start": 0, @@ -2084,7 +2006,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1575, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2095,14 +2017,14 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1593, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1597, + "commentStart": 0, "end": 0, "raw": "3.14", "start": 0, @@ -2117,14 +2039,14 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1603, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1607, + "commentStart": 0, "end": 0, "raw": "3.14", "start": 0, @@ -2139,14 +2061,14 @@ description: Result of parsing scale_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1613, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1617, + "commentStart": 0, "end": 0, "raw": "3.14", "start": 0, @@ -2161,10 +2083,10 @@ description: Result of parsing scale_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1587, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1587, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -2174,7 +2096,7 @@ description: Result of parsing scale_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1587, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2182,13 +2104,13 @@ description: Result of parsing scale_after_fillet.kcl "unlabeled": null } ], - "commentStart": 1575, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 1622, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2217,7 +2139,7 @@ description: Result of parsing scale_after_fillet.kcl "nonCodeNodes": { "6": [ { - "commentStart": 248, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2228,7 +2150,7 @@ description: Result of parsing scale_after_fillet.kcl ], "7": [ { - "commentStart": 1573, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/scale_after_fillet/input.kcl b/rust/kcl-lib/tests/scale_after_fillet/input.kcl index df0fa29ab..ba0ab767a 100644 --- a/rust/kcl-lib/tests/scale_after_fillet/input.kcl +++ b/rust/kcl-lib/tests/scale_after_fillet/input.kcl @@ -8,41 +8,41 @@ export boltThreadLength = 1.75 export fn bolt() { // Create the head of the cap screw - boltHead = startSketchOn('XZ') + boltHead = startSketchOn(XZ) |> circle(center = [0, 0], radius = boltHeadDiameter / 2, tag = $topEdge) |> extrude(length = -boltHeadLength) |> fillet(radius = 0.020, tags = [topEdge, getOppositeEdge(topEdge)]) // Define the sketch of the hex pattern on the screw head - hexPatternSketch = startSketchOn(boltHead, 'start') + hexPatternSketch = startSketchOn(boltHead, face = 'start') |> startProfileAt([ boltHexDrive / 2, boltHexFlatLength / 2 ], %) - |> angledLine({ + |> angledLine( angle = 270, - length = boltHexFlatLength - }, %) - |> angledLine({ + length = boltHexFlatLength, + ) + |> angledLine( angle = 210, - length = boltHexFlatLength - }, %) - |> angledLine({ + length = boltHexFlatLength, + ) + |> angledLine( angle = 150, - length = boltHexFlatLength - }, %) - |> angledLine({ + length = boltHexFlatLength, + ) + |> angledLine( angle = 90, - length = boltHexFlatLength - }, %) - |> angledLine({ + length = boltHexFlatLength, + ) + |> angledLine( angle = 30, - length = boltHexFlatLength - }, %) + length = boltHexFlatLength, + ) |> close() |> extrude(length = -boltHeadLength * 0.75) - boltBody = startSketchOn(boltHead, 'end') + boltBody = startSketchOn(boltHead, face = 'end') |> circle(center = [0, 0], radius = boltDiameter / 2, tag = $filletEdge) |> extrude(length = boltLength) |> fillet(radius = .020, tags = [getOppositeEdge(filletEdge)]) diff --git a/rust/kcl-lib/tests/scale_after_fillet/ops.snap b/rust/kcl-lib/tests/scale_after_fillet/ops.snap index 1226d612d..07f2c1b46 100644 --- a/rust/kcl-lib/tests/scale_after_fillet/ops.snap +++ b/rust/kcl-lib/tests/scale_after_fillet/ops.snap @@ -28,7 +28,7 @@ description: Operations executed scale_after_fillet.kcl "name": "bolt", "functionSourceRange": [ 264, - 1573, + 1565, 0 ], "unlabeledArg": null, @@ -38,10 +38,10 @@ description: Operations executed scale_after_fillet.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { - "type": "String", - "value": "XZ" + "type": "Plane", + "artifact_id": "[uuid]" }, "sourceRange": [] } @@ -134,16 +134,7 @@ description: Operations executed scale_after_fillet.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -154,7 +145,15 @@ description: Operations executed scale_after_fillet.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -163,7 +162,13 @@ description: Operations executed scale_after_fillet.kcl "type": "Number", "value": -0.46875, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -184,16 +189,7 @@ description: Operations executed scale_after_fillet.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -204,7 +200,15 @@ description: Operations executed scale_after_fillet.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/scale_after_fillet/program_memory.snap b/rust/kcl-lib/tests/scale_after_fillet/program_memory.snap index 6eb34d222..faefbe5f1 100644 --- a/rust/kcl-lib/tests/scale_after_fillet/program_memory.snap +++ b/rust/kcl-lib/tests/scale_after_fillet/program_memory.snap @@ -49,14 +49,26 @@ description: Variables in memory after executing scale_after_fillet.kcl "type": "Number", "value": 0.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "boltHexFlatLength": { "type": "Number", "value": 0.2887, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "boltLength": { diff --git a/rust/kcl-lib/tests/scale_after_fillet/unparsed.snap b/rust/kcl-lib/tests/scale_after_fillet/unparsed.snap index 412227e5a..e8ec73b38 100644 --- a/rust/kcl-lib/tests/scale_after_fillet/unparsed.snap +++ b/rust/kcl-lib/tests/scale_after_fillet/unparsed.snap @@ -18,35 +18,20 @@ export fn bolt() { |> fillet(radius = 0.020, tags = [topEdge, getOppositeEdge(topEdge)]) // Define the sketch of the hex pattern on the screw head - hexPatternSketch = startSketchOn(boltHead, 'start') + hexPatternSketch = startSketchOn(boltHead, face = START) |> startProfileAt([ boltHexDrive / 2, boltHexFlatLength / 2 ], %) - |> angledLine({ - angle = 270, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 210, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 150, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 90, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 30, - length = boltHexFlatLength - }, %) + |> angledLine(angle = 270, length = boltHexFlatLength) + |> angledLine(angle = 210, length = boltHexFlatLength) + |> angledLine(angle = 150, length = boltHexFlatLength) + |> angledLine(angle = 90, length = boltHexFlatLength) + |> angledLine(angle = 30, length = boltHexFlatLength) |> close() |> extrude(length = -boltHeadLength * 0.75) - boltBody = startSketchOn(boltHead, 'end') + boltBody = startSketchOn(boltHead, face = END) |> circle(center = [0, 0], radius = boltDiameter / 2, tag = $filletEdge) |> extrude(length = boltLength) |> fillet(radius = .020, tags = [getOppositeEdge(filletEdge)]) diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/artifact_commands.snap b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/artifact_commands.snap index 7b02e81ed..c8cd850b5 100644 --- a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/artifact_commands.snap +++ b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/artifact_commands.snap @@ -196,7 +196,8 @@ description: Artifact commands sketch-on-chamfer-two-times-different-order.kcl "type": "extrude", "target": "[uuid]", "distance": 100.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -598,7 +599,8 @@ description: Artifact commands sketch-on-chamfer-two-times-different-order.kcl "type": "extrude", "target": "[uuid]", "distance": 50.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/artifact_graph_flowchart.snap.md index f223df8b4..baa3b210b 100644 --- a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/artifact_graph_flowchart.snap.md @@ -1,34 +1,34 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[37, 69, 0]"] - 3["Segment
[105, 154, 0]"] - 4["Segment
[160, 247, 0]"] - 5["Segment
[253, 350, 0]"] - 6["Segment
[356, 426, 0]"] - 7["Segment
[432, 440, 0]"] + 2["Path
[35, 67, 0]"] + 3["Segment
[103, 170, 0]"] + 4["Segment
[176, 260, 0]"] + 5["Segment
[266, 354, 0]"] + 6["Segment
[360, 430, 0]"] + 7["Segment
[436, 443, 0]"] 8[Solid2d] end subgraph path27 [Path] - 27["Path
[708, 742, 0]"] - 28["Segment
[748, 796, 0]"] - 29["Segment
[802, 903, 0]"] - 30["Segment
[909, 1029, 0]"] - 31["Segment
[1035, 1091, 0]"] - 32["Segment
[1097, 1105, 0]"] + 27["Path
[718, 752, 0]"] + 28["Segment
[758, 824, 0]"] + 29["Segment
[830, 928, 0]"] + 30["Segment
[934, 1051, 0]"] + 31["Segment
[1057, 1113, 0]"] + 32["Segment
[1119, 1126, 0]"] 33[Solid2d] end subgraph path34 [Path] - 34["Path
[1156, 1191, 0]"] - 35["Segment
[1197, 1245, 0]"] - 36["Segment
[1251, 1353, 0]"] - 37["Segment
[1359, 1479, 0]"] - 38["Segment
[1485, 1541, 0]"] - 39["Segment
[1547, 1555, 0]"] + 34["Path
[1184, 1219, 0]"] + 35["Segment
[1225, 1291, 0]"] + 36["Segment
[1297, 1396, 0]"] + 37["Segment
[1402, 1519, 0]"] + 38["Segment
[1525, 1581, 0]"] + 39["Segment
[1587, 1594, 0]"] 40[Solid2d] end - 1["Plane
[12, 31, 0]"] - 9["Sweep Extrusion
[454, 486, 0]"] + 1["Plane
[12, 29, 0]"] + 9["Sweep Extrusion
[457, 489, 0]"] 10[Wall] 11[Wall] 12[Wall] @@ -43,10 +43,10 @@ flowchart LR 21["SweepEdge Adjacent"] 22["SweepEdge Opposite"] 23["SweepEdge Adjacent"] - 24["EdgeCut Fillet
[492, 527, 0]"] - 25["Plane
[1156, 1191, 0]"] - 26["Plane
[708, 742, 0]"] - 41["Sweep Extrusion
[1569, 1600, 0]"] + 24["EdgeCut Fillet
[495, 530, 0]"] + 25["Plane
[1184, 1219, 0]"] + 26["Plane
[718, 752, 0]"] + 41["Sweep Extrusion
[1608, 1639, 0]"] 42[Wall] 43[Wall] 44[Wall] @@ -60,8 +60,8 @@ flowchart LR 52["SweepEdge Adjacent"] 53["SweepEdge Opposite"] 54["SweepEdge Adjacent"] - 55["StartSketchOnFace
[670, 702, 0]"] - 56["StartSketchOnFace
[1118, 1150, 0]"] + 55["StartSketchOnFace
[673, 712, 0]"] + 56["StartSketchOnFace
[1139, 1178, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/ast.snap b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/ast.snap index cea56fbb9..a9d4c56bd 100644 --- a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/ast.snap +++ b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/ast.snap @@ -22,21 +22,28 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "arguments": [ { - "commentStart": 26, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'XZ'", + "name": { + "commentStart": 0, + "end": 0, + "name": "XZ", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "XZ" + "type": "Name", + "type": "Name" } ], "callee": { "abs_path": false, - "commentStart": 12, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +53,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +62,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "arguments": [ { - "commentStart": 52, + "commentStart": 0, "elements": [ { - "commentStart": 53, + "commentStart": 0, "end": 0, "raw": "75.8", "start": 0, @@ -70,7 +77,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl } }, { - "commentStart": 59, + "commentStart": 0, "end": 0, "raw": "317.2", "start": 0, @@ -88,7 +95,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "type": "ArrayExpression" }, { - "commentStart": 67, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +104,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 37, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +117,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 37, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -119,60 +126,74 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "arguments": [ { - "commentStart": 116, - "elements": [ - { - "commentStart": 117, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 120, - "end": 0, - "raw": "268.43", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 268.43, - "suffix": "None" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 129, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "268.43", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 268.43, + "suffix": "None" + } + } }, { - "commentStart": 132, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA001" + } } ], "callee": { "abs_path": false, - "commentStart": 105, + "commentStart": 0, "end": 0, "name": { - "commentStart": 105, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -182,145 +203,35 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 105, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 171, - "elements": [ - { - "commentStart": 180, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 187, - "end": 0, - "name": { - "commentStart": 187, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 180, - "end": 0, - "name": { - "commentStart": 180, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 180, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 211, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "commentStart": 222, - "end": 0, - "raw": "217.26", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 217.26, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 237, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 240, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "seg01" - } - ], - "callee": { - "abs_path": false, - "commentStart": 160, - "end": 0, - "name": { - "commentStart": 160, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 160, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 264, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 280, + "commentStart": 0, "end": 0, "name": { - "commentStart": 280, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA001", "start": 0, @@ -334,10 +245,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 273, + "commentStart": 0, "end": 0, "name": { - "commentStart": 273, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -347,80 +258,77 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 273, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 318, - "end": 0, - "name": { - "commentStart": 318, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 311, - "end": 0, - "name": { - "commentStart": 311, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 311, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 310, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 348, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "217.26", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 217.26, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "seg01" + } } ], "callee": { "abs_path": false, - "commentStart": 253, + "commentStart": 0, "end": 0, "name": { - "commentStart": 253, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -430,30 +338,164 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 253, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 361, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 375, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 390, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -462,10 +504,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 376, + "commentStart": 0, "end": 0, "name": { - "commentStart": 376, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -475,7 +517,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 376, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -484,7 +526,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "arguments": [ { - "commentStart": 408, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -493,10 +535,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 394, + "commentStart": 0, "end": 0, "name": { - "commentStart": 394, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -506,7 +548,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 394, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -522,14 +564,14 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "type": "LabeledArg", "label": { - "commentStart": 413, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 419, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -540,10 +582,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 356, + "commentStart": 0, "end": 0, "name": { - "commentStart": 356, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -553,7 +595,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 356, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -561,21 +603,13 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "unlabeled": null }, { - "arguments": [ - { - "commentStart": 438, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], + "arguments": [], "callee": { "abs_path": false, - "commentStart": 432, + "commentStart": 0, "end": 0, "name": { - "commentStart": 432, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -585,20 +619,20 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 432, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 12, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 69, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -626,12 +660,12 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "type": "VariableDeclaration" }, { - "commentStart": 441, + "commentStart": 0, "declaration": { - "commentStart": 441, + "commentStart": 0, "end": 0, "id": { - "commentStart": 441, + "commentStart": 0, "end": 0, "name": "extrude001", "start": 0, @@ -644,14 +678,14 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "type": "LabeledArg", "label": { - "commentStart": 473, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 482, + "commentStart": 0, "end": 0, "raw": "100", "start": 0, @@ -666,10 +700,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 454, + "commentStart": 0, "end": 0, "name": { - "commentStart": 454, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -679,17 +713,17 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 454, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 462, + "commentStart": 0, "end": 0, "name": { - "commentStart": 462, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -706,14 +740,14 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "type": "LabeledArg", "label": { - "commentStart": 499, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 508, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -728,21 +762,21 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "type": "LabeledArg", "label": { - "commentStart": 512, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 519, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 520, + "commentStart": 0, "end": 0, "name": { - "commentStart": 520, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -763,10 +797,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 492, + "commentStart": 0, "end": 0, "name": { - "commentStart": 492, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -776,7 +810,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 492, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -788,14 +822,14 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "type": "LabeledArg", "label": { - "commentStart": 541, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 550, + "commentStart": 0, "end": 0, "raw": "50", "start": 0, @@ -810,23 +844,23 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "type": "LabeledArg", "label": { - "commentStart": 554, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 561, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 578, + "commentStart": 0, "end": 0, "name": { - "commentStart": 578, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -840,10 +874,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 562, + "commentStart": 0, "end": 0, "name": { - "commentStart": 562, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -853,7 +887,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 562, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -869,14 +903,14 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "type": "LabeledArg", "label": { - "commentStart": 587, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 593, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -887,10 +921,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 533, + "commentStart": 0, "end": 0, "name": { - "commentStart": 533, + "commentStart": 0, "end": 0, "name": "chamfer", "start": 0, @@ -900,7 +934,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 533, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -912,14 +946,14 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "type": "LabeledArg", "label": { - "commentStart": 614, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 623, + "commentStart": 0, "end": 0, "raw": "50", "start": 0, @@ -934,21 +968,21 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "type": "LabeledArg", "label": { - "commentStart": 627, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 634, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 635, + "commentStart": 0, "end": 0, "name": { - "commentStart": 635, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -969,14 +1003,14 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "type": "LabeledArg", "label": { - "commentStart": 643, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 649, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -987,10 +1021,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 606, + "commentStart": 0, "end": 0, "name": { - "commentStart": 606, + "commentStart": 0, "end": 0, "name": "chamfer", "start": 0, @@ -1000,7 +1034,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 606, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1008,7 +1042,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "unlabeled": null } ], - "commentStart": 454, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1024,12 +1058,12 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "type": "VariableDeclaration" }, { - "commentStart": 656, + "commentStart": 0, "declaration": { - "commentStart": 658, + "commentStart": 0, "end": 0, "id": { - "commentStart": 658, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -1040,44 +1074,38 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 684, - "end": 0, - "name": { - "commentStart": 684, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 696, - "end": 0, - "name": { - "commentStart": 696, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg04", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg04", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 670, + "commentStart": 0, "end": 0, "name": { - "commentStart": 670, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1087,20 +1115,36 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 670, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 723, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 725, + "commentStart": 0, "end": 0, "raw": "69.1", "start": 0, @@ -1111,7 +1155,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "suffix": "None" } }, - "commentStart": 724, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1119,7 +1163,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "type": "UnaryExpression" }, { - "commentStart": 731, + "commentStart": 0, "end": 0, "raw": "277.34", "start": 0, @@ -1137,7 +1181,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "type": "ArrayExpression" }, { - "commentStart": 740, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1146,10 +1190,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 708, + "commentStart": 0, "end": 0, "name": { - "commentStart": 708, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1159,7 +1203,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 708, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1168,60 +1212,74 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "arguments": [ { - "commentStart": 759, - "elements": [ - { - "commentStart": 760, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 763, - "end": 0, - "raw": "41.48", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 41.48, - "suffix": "None" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 771, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "41.48", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 41.48, + "suffix": "None" + } + } }, { - "commentStart": 774, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA003" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA003" + } } ], "callee": { "abs_path": false, - "commentStart": 748, + "commentStart": 0, "end": 0, "name": { - "commentStart": 748, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -1231,145 +1289,35 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 748, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 813, - "elements": [ - { - "commentStart": 822, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 829, - "end": 0, - "name": { - "commentStart": 829, - "end": 0, - "name": "rectangleSegmentA003", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 822, - "end": 0, - "name": { - "commentStart": 822, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 822, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 853, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "commentStart": 864, - "end": 0, - "raw": "104.8", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 104.8, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 878, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 881, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentB002" - } - ], - "callee": { - "abs_path": false, - "commentStart": 802, - "end": 0, - "name": { - "commentStart": 802, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 802, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 920, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 936, + "commentStart": 0, "end": 0, "name": { - "commentStart": 936, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA003", "start": 0, @@ -1383,10 +1331,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 929, + "commentStart": 0, "end": 0, "name": { - "commentStart": 929, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -1396,88 +1344,77 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 929, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 974, - "end": 0, - "name": { - "commentStart": 974, - "end": 0, - "name": "rectangleSegmentA003", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 967, - "end": 0, - "name": { - "commentStart": 967, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 967, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 966, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "104.8", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 104.8, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 1004, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1007, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentC002" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentB002" + } } ], "callee": { "abs_path": false, - "commentStart": 909, + "commentStart": 0, "end": 0, "name": { - "commentStart": 909, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -1487,30 +1424,182 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 909, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1040, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA003", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA003", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentC002" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1054, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1069, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1519,10 +1608,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 1055, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1055, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -1532,7 +1621,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 1055, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1541,7 +1630,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "arguments": [ { - "commentStart": 1087, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1550,10 +1639,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 1073, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1073, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -1563,7 +1652,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 1073, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1579,10 +1668,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 1035, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1035, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1592,7 +1681,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 1035, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1600,21 +1689,13 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "unlabeled": null }, { - "arguments": [ - { - "commentStart": 1103, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], + "arguments": [], "callee": { "abs_path": false, - "commentStart": 1097, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1097, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1624,14 +1705,14 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 1097, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 670, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1647,12 +1728,12 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "type": "VariableDeclaration" }, { - "commentStart": 1106, + "commentStart": 0, "declaration": { - "commentStart": 1106, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1106, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -1663,44 +1744,38 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1132, - "end": 0, - "name": { - "commentStart": 1132, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 1144, - "end": 0, - "name": { - "commentStart": 1144, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg03", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg03", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1118, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1118, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1710,19 +1785,35 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 1118, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 1171, + "commentStart": 0, "elements": [ { - "commentStart": 1172, + "commentStart": 0, "end": 0, "raw": "159.25", "start": 0, @@ -1734,7 +1825,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl } }, { - "commentStart": 1180, + "commentStart": 0, "end": 0, "raw": "278.35", "start": 0, @@ -1752,7 +1843,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "type": "ArrayExpression" }, { - "commentStart": 1189, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1761,10 +1852,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 1156, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1156, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1774,7 +1865,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 1156, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1783,60 +1874,74 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "arguments": [ { - "commentStart": 1208, - "elements": [ - { - "commentStart": 1209, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 1212, - "end": 0, - "raw": "40.82", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 40.82, - "suffix": "None" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 1220, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "40.82", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 40.82, + "suffix": "None" + } + } }, { - "commentStart": 1223, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA002" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA002" + } } ], "callee": { "abs_path": false, - "commentStart": 1197, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1197, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -1846,145 +1951,35 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 1197, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1262, - "elements": [ - { - "commentStart": 1271, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 1278, - "end": 0, - "name": { - "commentStart": 1278, - "end": 0, - "name": "rectangleSegmentA002", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1271, - "end": 0, - "name": { - "commentStart": 1271, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1271, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 1302, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "commentStart": 1313, - "end": 0, - "raw": "132.27", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 132.27, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1328, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1331, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentB001" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1251, - "end": 0, - "name": { - "commentStart": 1251, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1251, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1370, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 1386, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1386, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA002", "start": 0, @@ -1998,10 +1993,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 1379, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1379, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -2011,88 +2006,77 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 1379, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 1424, - "end": 0, - "name": { - "commentStart": 1424, - "end": 0, - "name": "rectangleSegmentA002", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1417, - "end": 0, - "name": { - "commentStart": 1417, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1417, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 1416, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "132.27", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 132.27, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 1454, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1457, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentC001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentB001" + } } ], "callee": { "abs_path": false, - "commentStart": 1359, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1359, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -2102,30 +2086,182 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 1359, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1490, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA002", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA002", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentC001" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1504, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1519, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2134,10 +2270,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 1505, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1505, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -2147,7 +2283,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 1505, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2156,7 +2292,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "arguments": [ { - "commentStart": 1537, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2165,10 +2301,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 1523, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1523, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -2178,7 +2314,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 1523, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2194,10 +2330,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 1485, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1485, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2207,7 +2343,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 1485, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2215,21 +2351,13 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "unlabeled": null }, { - "arguments": [ - { - "commentStart": 1553, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], + "arguments": [], "callee": { "abs_path": false, - "commentStart": 1547, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1547, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2239,14 +2367,14 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 1547, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1118, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2262,12 +2390,12 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "type": "VariableDeclaration" }, { - "commentStart": 1556, + "commentStart": 0, "declaration": { - "commentStart": 1556, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1556, + "commentStart": 0, "end": 0, "name": "extrude002", "start": 0, @@ -2278,14 +2406,14 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl { "type": "LabeledArg", "label": { - "commentStart": 1588, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1597, + "commentStart": 0, "end": 0, "raw": "50", "start": 0, @@ -2300,10 +2428,10 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl ], "callee": { "abs_path": false, - "commentStart": 1569, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1569, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2313,17 +2441,17 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "start": 0, "type": "Name" }, - "commentStart": 1569, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1577, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1577, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -2351,7 +2479,7 @@ description: Result of parsing sketch-on-chamfer-two-times-different-order.kcl "nonCodeNodes": { "1": [ { - "commentStart": 656, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/input.kcl b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/input.kcl index 90af40aeb..e0f64e0f9 100644 --- a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/input.kcl +++ b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/input.kcl @@ -1,45 +1,27 @@ -sketch001 = startSketchOn('XZ') +sketch001 = startSketchOn(XZ) |> startProfileAt([75.8, 317.2], %) // [$startCapTag, $EndCapTag] - |> angledLine([0, 268.43], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 217.26 - ], %, $seg01) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) - |> close(%) + |> close() extrude001 = extrude(sketch001, length = 100) |> fillet(radius = 20, tags = [seg01]) |> chamfer(length = 50, tags = [getOppositeEdge(seg01)], tag = $seg03) |> chamfer(length = 50, tags = [seg02], tag = $seg04) -sketch003 = startSketchOn(extrude001, seg04) +sketch003 = startSketchOn(extrude001, face = seg04) |> startProfileAt([-69.1, 277.34], %) - |> angledLine([0, 41.48], %, $rectangleSegmentA003) - |> angledLine([ - segAng(rectangleSegmentA003) - 90, - 104.8 - ], %, $rectangleSegmentB002) - |> angledLine([ - segAng(rectangleSegmentA003), - -segLen(rectangleSegmentA003) - ], %, $rectangleSegmentC002) + |> angledLine(angle = 0, length = 41.48, tag = $rectangleSegmentA003) + |> angledLine(angle = segAng(rectangleSegmentA003) - 90, length = 104.8, tag = $rectangleSegmentB002) + |> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003), tag = $rectangleSegmentC002) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) - |> close(%) -sketch002 = startSketchOn(extrude001, seg03) + |> close() +sketch002 = startSketchOn(extrude001, face = seg03) |> startProfileAt([159.25, 278.35], %) - |> angledLine([0, 40.82], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 132.27 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = 40.82, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 132.27, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) - |> close(%) + |> close() extrude002 = extrude(sketch002, length = 50) diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/ops.snap b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/ops.snap index 68ada9588..84abe0c9d 100644 --- a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/ops.snap +++ b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/ops.snap @@ -5,10 +5,10 @@ description: Operations executed sketch-on-chamfer-two-times-different-order.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { - "type": "String", - "value": "XZ" + "type": "Plane", + "artifact_id": "[uuid]" }, "sourceRange": [] } @@ -200,16 +200,7 @@ description: Operations executed sketch-on-chamfer-two-times-different-order.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg04", @@ -221,20 +212,19 @@ description: Operations executed sketch-on-chamfer-two-times-different-order.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg03", @@ -246,7 +236,15 @@ description: Operations executed sketch-on-chamfer-two-times-different-order.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/program_memory.snap b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/program_memory.snap index 56971c5a0..497929215 100644 --- a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/program_memory.snap +++ b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/program_memory.snap @@ -15,9 +15,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 148, + "end": 169, + "start": 148, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -28,9 +28,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 253, + "end": 259, + "start": 253, "type": "TagDeclarator", "value": "seg01" }, @@ -48,9 +48,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 423, + "end": 429, + "start": 423, "type": "TagDeclarator", "value": "seg02" }, @@ -61,9 +61,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 593, - "end": 599, - "start": 593, + "commentStart": 596, + "end": 602, + "start": 596, "type": "TagDeclarator", "value": "seg03" }, @@ -74,9 +74,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 652, + "end": 658, + "start": 652, "type": "TagDeclarator", "value": "seg04" }, @@ -97,9 +97,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 317.2 ], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 148, + "end": 169, + "start": 148, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -122,9 +122,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 317.2 ], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 253, + "end": 259, + "start": 253, "type": "TagDeclarator", "value": "seg01" }, @@ -166,9 +166,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 99.94 ], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 423, + "end": 429, + "start": 423, "type": "TagDeclarator", "value": "seg02" }, @@ -209,22 +209,34 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -283,19 +295,41 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif { "type": "fillet", "id": "[uuid]", - "radius": 20.0, + "radius": { + "n": 20.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 593, - "end": 599, - "start": 593, + "commentStart": 596, + "end": 602, + "start": 596, "type": "TagDeclarator", "value": "seg03" } @@ -303,12 +337,23 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 652, + "end": 658, + "start": 652, "type": "TagDeclarator", "value": "seg04" } @@ -331,9 +376,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1223, - "end": 1244, - "start": 1223, + "commentStart": 1269, + "end": 1290, + "start": 1269, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -344,9 +389,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1331, - "end": 1352, - "start": 1331, + "commentStart": 1374, + "end": 1395, + "start": 1374, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -357,9 +402,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1457, - "end": 1478, - "start": 1457, + "commentStart": 1497, + "end": 1518, + "start": 1497, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -387,9 +432,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 278.35 ], "tag": { - "commentStart": 1223, - "end": 1244, - "start": 1223, + "commentStart": 1269, + "end": 1290, + "start": 1269, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -412,9 +457,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 278.35 ], "tag": { - "commentStart": 1331, - "end": 1352, - "start": 1331, + "commentStart": 1374, + "end": 1395, + "start": 1374, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -437,9 +482,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 146.08 ], "tag": { - "commentStart": 1457, - "end": 1478, - "start": 1457, + "commentStart": 1497, + "end": 1518, + "start": 1497, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -499,17 +544,26 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -521,9 +575,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 148, + "end": 169, + "start": 148, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -534,9 +588,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 253, + "end": 259, + "start": 253, "type": "TagDeclarator", "value": "seg01" }, @@ -554,9 +608,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 423, + "end": 429, + "start": 423, "type": "TagDeclarator", "value": "seg02" }, @@ -567,9 +621,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 593, - "end": 599, - "start": 593, + "commentStart": 596, + "end": 602, + "start": 596, "type": "TagDeclarator", "value": "seg03" }, @@ -580,9 +634,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 652, + "end": 658, + "start": 652, "type": "TagDeclarator", "value": "seg04" }, @@ -603,9 +657,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 317.2 ], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 148, + "end": 169, + "start": 148, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -628,9 +682,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 317.2 ], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 253, + "end": 259, + "start": 253, "type": "TagDeclarator", "value": "seg01" }, @@ -672,9 +726,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 99.94 ], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 423, + "end": 429, + "start": 423, "type": "TagDeclarator", "value": "seg02" }, @@ -715,22 +769,34 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -789,19 +855,41 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif { "type": "fillet", "id": "[uuid]", - "radius": 20.0, + "radius": { + "n": 20.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 593, - "end": 599, - "start": 593, + "commentStart": 596, + "end": 602, + "start": 596, "type": "TagDeclarator", "value": "seg03" } @@ -809,12 +897,23 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 652, + "end": 658, + "start": 652, "type": "TagDeclarator", "value": "seg04" } @@ -945,9 +1044,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 317.2 ], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 148, + "end": 169, + "start": 148, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -970,9 +1069,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 317.2 ], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 253, + "end": 259, + "start": 253, "type": "TagDeclarator", "value": "seg01" }, @@ -1014,9 +1113,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 99.94 ], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 423, + "end": 429, + "start": 423, "type": "TagDeclarator", "value": "seg02" }, @@ -1057,22 +1156,34 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1141,9 +1252,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 278.35 ], "tag": { - "commentStart": 1223, - "end": 1244, - "start": 1223, + "commentStart": 1269, + "end": 1290, + "start": 1269, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -1166,9 +1277,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 278.35 ], "tag": { - "commentStart": 1331, - "end": 1352, - "start": 1331, + "commentStart": 1374, + "end": 1395, + "start": 1374, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -1191,9 +1302,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 146.08 ], "tag": { - "commentStart": 1457, - "end": 1478, - "start": 1457, + "commentStart": 1497, + "end": 1518, + "start": 1497, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -1253,17 +1364,26 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1275,9 +1395,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 148, + "end": 169, + "start": 148, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -1288,9 +1408,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 253, + "end": 259, + "start": 253, "type": "TagDeclarator", "value": "seg01" }, @@ -1308,9 +1428,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 423, + "end": 429, + "start": 423, "type": "TagDeclarator", "value": "seg02" }, @@ -1321,9 +1441,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 593, - "end": 599, - "start": 593, + "commentStart": 596, + "end": 602, + "start": 596, "type": "TagDeclarator", "value": "seg03" }, @@ -1334,9 +1454,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 652, + "end": 658, + "start": 652, "type": "TagDeclarator", "value": "seg04" }, @@ -1357,9 +1477,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 317.2 ], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 148, + "end": 169, + "start": 148, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -1382,9 +1502,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 317.2 ], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 253, + "end": 259, + "start": 253, "type": "TagDeclarator", "value": "seg01" }, @@ -1426,9 +1546,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 99.94 ], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 423, + "end": 429, + "start": 423, "type": "TagDeclarator", "value": "seg02" }, @@ -1469,22 +1589,34 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1543,19 +1675,41 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif { "type": "fillet", "id": "[uuid]", - "radius": 20.0, + "radius": { + "n": 20.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 593, - "end": 599, - "start": 593, + "commentStart": 596, + "end": 602, + "start": 596, "type": "TagDeclarator", "value": "seg03" } @@ -1563,12 +1717,23 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 652, + "end": 658, + "start": 652, "type": "TagDeclarator", "value": "seg04" } @@ -1637,9 +1802,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 277.34 ], "tag": { - "commentStart": 774, - "end": 795, - "start": 774, + "commentStart": 802, + "end": 823, + "start": 802, "type": "TagDeclarator", "value": "rectangleSegmentA003" }, @@ -1662,9 +1827,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 277.34 ], "tag": { - "commentStart": 881, - "end": 902, - "start": 881, + "commentStart": 906, + "end": 927, + "start": 906, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -1687,9 +1852,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 172.54 ], "tag": { - "commentStart": 1007, - "end": 1028, - "start": 1007, + "commentStart": 1029, + "end": 1050, + "start": 1029, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -1749,17 +1914,26 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1771,9 +1945,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 148, + "end": 169, + "start": 148, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -1784,9 +1958,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 253, + "end": 259, + "start": 253, "type": "TagDeclarator", "value": "seg01" }, @@ -1804,9 +1978,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 423, + "end": 429, + "start": 423, "type": "TagDeclarator", "value": "seg02" }, @@ -1817,9 +1991,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 593, - "end": 599, - "start": 593, + "commentStart": 596, + "end": 602, + "start": 596, "type": "TagDeclarator", "value": "seg03" }, @@ -1830,9 +2004,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 652, + "end": 658, + "start": 652, "type": "TagDeclarator", "value": "seg04" }, @@ -1853,9 +2027,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 317.2 ], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 148, + "end": 169, + "start": 148, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -1878,9 +2052,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 317.2 ], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 253, + "end": 259, + "start": 253, "type": "TagDeclarator", "value": "seg01" }, @@ -1922,9 +2096,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif 99.94 ], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 423, + "end": 429, + "start": 423, "type": "TagDeclarator", "value": "seg02" }, @@ -1965,22 +2139,34 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2039,19 +2225,41 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif { "type": "fillet", "id": "[uuid]", - "radius": 20.0, + "radius": { + "n": 20.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 593, - "end": 599, - "start": 593, + "commentStart": 596, + "end": 602, + "start": 596, "type": "TagDeclarator", "value": "seg03" } @@ -2059,12 +2267,23 @@ description: Variables in memory after executing sketch-on-chamfer-two-times-dif { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 652, + "end": 658, + "start": 652, "type": "TagDeclarator", "value": "seg04" } diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/unparsed.snap b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/unparsed.snap index 5180e23e8..c60ce4618 100644 --- a/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/unparsed.snap +++ b/rust/kcl-lib/tests/sketch-on-chamfer-two-times-different-order/unparsed.snap @@ -4,46 +4,28 @@ description: Result of unparsing sketch-on-chamfer-two-times-different-order.kcl --- sketch001 = startSketchOn(XZ) |> startProfileAt([75.8, 317.2], %) // [$startCapTag, $EndCapTag] - |> angledLine([0, 268.43], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 217.26 - ], %, $seg01) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) - |> close(%) + |> close() extrude001 = extrude(sketch001, length = 100) |> fillet(radius = 20, tags = [seg01]) |> chamfer(length = 50, tags = [getOppositeEdge(seg01)], tag = $seg03) |> chamfer(length = 50, tags = [seg02], tag = $seg04) -sketch003 = startSketchOn(extrude001, seg04) +sketch003 = startSketchOn(extrude001, face = seg04) |> startProfileAt([-69.1, 277.34], %) - |> angledLine([0, 41.48], %, $rectangleSegmentA003) - |> angledLine([ - segAng(rectangleSegmentA003) - 90, - 104.8 - ], %, $rectangleSegmentB002) - |> angledLine([ - segAng(rectangleSegmentA003), - -segLen(rectangleSegmentA003) - ], %, $rectangleSegmentC002) + |> angledLine(angle = 0, length = 41.48, tag = $rectangleSegmentA003) + |> angledLine(angle = segAng(rectangleSegmentA003) - 90, length = 104.8, tag = $rectangleSegmentB002) + |> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003), tag = $rectangleSegmentC002) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) - |> close(%) -sketch002 = startSketchOn(extrude001, seg03) + |> close() +sketch002 = startSketchOn(extrude001, face = seg03) |> startProfileAt([159.25, 278.35], %) - |> angledLine([0, 40.82], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 132.27 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = 40.82, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 132.27, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) - |> close(%) + |> close() extrude002 = extrude(sketch002, length = 50) diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/artifact_commands.snap b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/artifact_commands.snap index 0d3adf5aa..3a5f2d45f 100644 --- a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/artifact_commands.snap +++ b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/artifact_commands.snap @@ -196,7 +196,8 @@ description: Artifact commands sketch-on-chamfer-two-times.kcl "type": "extrude", "target": "[uuid]", "distance": 100.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -598,7 +599,8 @@ description: Artifact commands sketch-on-chamfer-two-times.kcl "type": "extrude", "target": "[uuid]", "distance": 50.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/artifact_graph_flowchart.snap.md index 20ac57e44..f3faf2140 100644 --- a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/artifact_graph_flowchart.snap.md @@ -2,33 +2,33 @@ flowchart LR subgraph path2 [Path] 2["Path
[37, 69, 0]"] - 3["Segment
[105, 154, 0]"] - 4["Segment
[160, 247, 0]"] - 5["Segment
[253, 350, 0]"] - 6["Segment
[356, 426, 0]"] - 7["Segment
[432, 440, 0]"] + 3["Segment
[105, 172, 0]"] + 4["Segment
[178, 262, 0]"] + 5["Segment
[268, 356, 0]"] + 6["Segment
[362, 432, 0]"] + 7["Segment
[438, 446, 0]"] 8[Solid2d] end subgraph path27 [Path] - 27["Path
[708, 742, 0]"] - 28["Segment
[748, 796, 0]"] - 29["Segment
[802, 903, 0]"] - 30["Segment
[909, 1029, 0]"] - 31["Segment
[1035, 1091, 0]"] - 32["Segment
[1097, 1105, 0]"] + 27["Path
[721, 755, 0]"] + 28["Segment
[761, 827, 0]"] + 29["Segment
[833, 931, 0]"] + 30["Segment
[937, 1054, 0]"] + 31["Segment
[1060, 1116, 0]"] + 32["Segment
[1122, 1130, 0]"] 33[Solid2d] end subgraph path34 [Path] - 34["Path
[1156, 1191, 0]"] - 35["Segment
[1197, 1245, 0]"] - 36["Segment
[1251, 1353, 0]"] - 37["Segment
[1359, 1479, 0]"] - 38["Segment
[1485, 1541, 0]"] - 39["Segment
[1547, 1555, 0]"] + 34["Path
[1188, 1223, 0]"] + 35["Segment
[1229, 1295, 0]"] + 36["Segment
[1301, 1400, 0]"] + 37["Segment
[1406, 1523, 0]"] + 38["Segment
[1529, 1585, 0]"] + 39["Segment
[1591, 1599, 0]"] 40[Solid2d] end 1["Plane
[12, 31, 0]"] - 9["Sweep Extrusion
[454, 486, 0]"] + 9["Sweep Extrusion
[460, 492, 0]"] 10[Wall] 11[Wall] 12[Wall] @@ -43,10 +43,10 @@ flowchart LR 21["SweepEdge Adjacent"] 22["SweepEdge Opposite"] 23["SweepEdge Adjacent"] - 24["EdgeCut Fillet
[492, 527, 0]"] - 25["Plane
[708, 742, 0]"] - 26["Plane
[1156, 1191, 0]"] - 41["Sweep Extrusion
[1569, 1600, 0]"] + 24["EdgeCut Fillet
[498, 533, 0]"] + 25["Plane
[721, 755, 0]"] + 26["Plane
[1188, 1223, 0]"] + 41["Sweep Extrusion
[1613, 1644, 0]"] 42[Wall] 43[Wall] 44[Wall] @@ -60,8 +60,8 @@ flowchart LR 52["SweepEdge Adjacent"] 53["SweepEdge Opposite"] 54["SweepEdge Adjacent"] - 55["StartSketchOnFace
[670, 702, 0]"] - 56["StartSketchOnFace
[1118, 1150, 0]"] + 55["StartSketchOnFace
[676, 715, 0]"] + 56["StartSketchOnFace
[1143, 1182, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/ast.snap b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/ast.snap index 01b51ba8e..900918343 100644 --- a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/ast.snap +++ b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "arguments": [ { - "commentStart": 26, + "commentStart": 0, "end": 0, "raw": "'XZ'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 12, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "arguments": [ { - "commentStart": 52, + "commentStart": 0, "elements": [ { - "commentStart": 53, + "commentStart": 0, "end": 0, "raw": "75.8", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl } }, { - "commentStart": 59, + "commentStart": 0, "end": 0, "raw": "317.2", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "type": "ArrayExpression" }, { - "commentStart": 67, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 37, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 37, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -119,60 +119,74 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "arguments": [ { - "commentStart": 116, - "elements": [ - { - "commentStart": 117, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 120, - "end": 0, - "raw": "268.43", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 268.43, - "suffix": "None" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 129, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "268.43", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 268.43, + "suffix": "None" + } + } }, { - "commentStart": 132, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA001" + } } ], "callee": { "abs_path": false, - "commentStart": 105, + "commentStart": 0, "end": 0, "name": { - "commentStart": 105, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -182,145 +196,35 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 105, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 171, - "elements": [ - { - "commentStart": 180, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 187, - "end": 0, - "name": { - "commentStart": 187, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 180, - "end": 0, - "name": { - "commentStart": 180, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 180, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 211, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "commentStart": 222, - "end": 0, - "raw": "217.26", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 217.26, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 237, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 240, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "seg01" - } - ], - "callee": { - "abs_path": false, - "commentStart": 160, - "end": 0, - "name": { - "commentStart": 160, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 160, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 264, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 280, + "commentStart": 0, "end": 0, "name": { - "commentStart": 280, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA001", "start": 0, @@ -334,10 +238,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 273, + "commentStart": 0, "end": 0, "name": { - "commentStart": 273, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -347,80 +251,77 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 273, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 318, - "end": 0, - "name": { - "commentStart": 318, - "end": 0, - "name": "rectangleSegmentA001", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 311, - "end": 0, - "name": { - "commentStart": 311, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 311, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 310, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } }, { - "commentStart": 348, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "217.26", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 217.26, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "seg01" + } } ], "callee": { "abs_path": false, - "commentStart": 253, + "commentStart": 0, "end": 0, "name": { - "commentStart": 253, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -430,30 +331,164 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 253, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 361, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 375, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 390, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -462,10 +497,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 376, + "commentStart": 0, "end": 0, "name": { - "commentStart": 376, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -475,7 +510,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 376, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -484,7 +519,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "arguments": [ { - "commentStart": 408, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -493,10 +528,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 394, + "commentStart": 0, "end": 0, "name": { - "commentStart": 394, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -506,7 +541,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 394, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -522,14 +557,14 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "type": "LabeledArg", "label": { - "commentStart": 413, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 419, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -540,10 +575,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 356, + "commentStart": 0, "end": 0, "name": { - "commentStart": 356, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -553,7 +588,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 356, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -563,7 +598,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "arguments": [ { - "commentStart": 438, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -572,10 +607,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 432, + "commentStart": 0, "end": 0, "name": { - "commentStart": 432, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -585,20 +620,20 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 432, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 12, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 69, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -626,12 +661,12 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "type": "VariableDeclaration" }, { - "commentStart": 441, + "commentStart": 0, "declaration": { - "commentStart": 441, + "commentStart": 0, "end": 0, "id": { - "commentStart": 441, + "commentStart": 0, "end": 0, "name": "extrude001", "start": 0, @@ -644,14 +679,14 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "type": "LabeledArg", "label": { - "commentStart": 473, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 482, + "commentStart": 0, "end": 0, "raw": "100", "start": 0, @@ -666,10 +701,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 454, + "commentStart": 0, "end": 0, "name": { - "commentStart": 454, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -679,17 +714,17 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 454, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 462, + "commentStart": 0, "end": 0, "name": { - "commentStart": 462, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -706,14 +741,14 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "type": "LabeledArg", "label": { - "commentStart": 499, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 508, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -728,21 +763,21 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "type": "LabeledArg", "label": { - "commentStart": 512, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 519, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 520, + "commentStart": 0, "end": 0, "name": { - "commentStart": 520, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -763,10 +798,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 492, + "commentStart": 0, "end": 0, "name": { - "commentStart": 492, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -776,7 +811,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 492, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -788,14 +823,14 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "type": "LabeledArg", "label": { - "commentStart": 541, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 550, + "commentStart": 0, "end": 0, "raw": "50", "start": 0, @@ -810,21 +845,21 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "type": "LabeledArg", "label": { - "commentStart": 554, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 561, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 562, + "commentStart": 0, "end": 0, "name": { - "commentStart": 562, + "commentStart": 0, "end": 0, "name": "seg02", "start": 0, @@ -845,14 +880,14 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "type": "LabeledArg", "label": { - "commentStart": 570, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 576, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -863,10 +898,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 533, + "commentStart": 0, "end": 0, "name": { - "commentStart": 533, + "commentStart": 0, "end": 0, "name": "chamfer", "start": 0, @@ -876,7 +911,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 533, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -888,14 +923,14 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "type": "LabeledArg", "label": { - "commentStart": 597, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 606, + "commentStart": 0, "end": 0, "raw": "50", "start": 0, @@ -910,23 +945,23 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "type": "LabeledArg", "label": { - "commentStart": 610, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 617, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 634, + "commentStart": 0, "end": 0, "name": { - "commentStart": 634, + "commentStart": 0, "end": 0, "name": "seg01", "start": 0, @@ -940,10 +975,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 618, + "commentStart": 0, "end": 0, "name": { - "commentStart": 618, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -953,7 +988,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 618, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -969,14 +1004,14 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "type": "LabeledArg", "label": { - "commentStart": 643, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 649, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -987,10 +1022,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 589, + "commentStart": 0, "end": 0, "name": { - "commentStart": 589, + "commentStart": 0, "end": 0, "name": "chamfer", "start": 0, @@ -1000,7 +1035,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 589, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1008,7 +1043,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "unlabeled": null } ], - "commentStart": 454, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1024,12 +1059,12 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "type": "VariableDeclaration" }, { - "commentStart": 656, + "commentStart": 0, "declaration": { - "commentStart": 658, + "commentStart": 0, "end": 0, "id": { - "commentStart": 658, + "commentStart": 0, "end": 0, "name": "sketch003", "start": 0, @@ -1040,44 +1075,38 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 684, - "end": 0, - "name": { - "commentStart": 684, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 696, - "end": 0, - "name": { - "commentStart": 696, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg04", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg04", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 670, + "commentStart": 0, "end": 0, "name": { - "commentStart": 670, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1087,20 +1116,36 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 670, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 723, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 725, + "commentStart": 0, "end": 0, "raw": "69.1", "start": 0, @@ -1111,7 +1156,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "suffix": "None" } }, - "commentStart": 724, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1119,7 +1164,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "type": "UnaryExpression" }, { - "commentStart": 731, + "commentStart": 0, "end": 0, "raw": "277.34", "start": 0, @@ -1137,7 +1182,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "type": "ArrayExpression" }, { - "commentStart": 740, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1146,10 +1191,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 708, + "commentStart": 0, "end": 0, "name": { - "commentStart": 708, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1159,7 +1204,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 708, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1168,60 +1213,74 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "arguments": [ { - "commentStart": 759, - "elements": [ - { - "commentStart": 760, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 763, - "end": 0, - "raw": "41.48", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 41.48, - "suffix": "None" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 771, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "41.48", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 41.48, + "suffix": "None" + } + } }, { - "commentStart": 774, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA003" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA003" + } } ], "callee": { "abs_path": false, - "commentStart": 748, + "commentStart": 0, "end": 0, "name": { - "commentStart": 748, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -1231,145 +1290,35 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 748, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 813, - "elements": [ - { - "commentStart": 822, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 829, - "end": 0, - "name": { - "commentStart": 829, - "end": 0, - "name": "rectangleSegmentA003", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 822, - "end": 0, - "name": { - "commentStart": 822, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 822, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 853, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "commentStart": 864, - "end": 0, - "raw": "104.8", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 104.8, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 878, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 881, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentB002" - } - ], - "callee": { - "abs_path": false, - "commentStart": 802, - "end": 0, - "name": { - "commentStart": 802, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 802, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 920, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 936, + "commentStart": 0, "end": 0, "name": { - "commentStart": 936, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA003", "start": 0, @@ -1383,10 +1332,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 929, + "commentStart": 0, "end": 0, "name": { - "commentStart": 929, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -1396,88 +1345,77 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 929, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 974, - "end": 0, - "name": { - "commentStart": 974, - "end": 0, - "name": "rectangleSegmentA003", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 967, - "end": 0, - "name": { - "commentStart": 967, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 967, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 966, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "104.8", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 104.8, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 1004, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1007, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentC002" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentB002" + } } ], "callee": { "abs_path": false, - "commentStart": 909, + "commentStart": 0, "end": 0, "name": { - "commentStart": 909, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -1487,30 +1425,182 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 909, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1040, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA003", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA003", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentC002" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1054, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1069, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1519,10 +1609,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 1055, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1055, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -1532,7 +1622,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 1055, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1541,7 +1631,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "arguments": [ { - "commentStart": 1087, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1550,10 +1640,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 1073, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1073, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -1563,7 +1653,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 1073, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1579,10 +1669,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 1035, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1035, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1592,7 +1682,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 1035, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1602,7 +1692,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "arguments": [ { - "commentStart": 1103, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1611,10 +1701,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 1097, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1097, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1624,14 +1714,14 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 1097, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 670, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1647,12 +1737,12 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "type": "VariableDeclaration" }, { - "commentStart": 1106, + "commentStart": 0, "declaration": { - "commentStart": 1106, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1106, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -1663,44 +1753,38 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1132, - "end": 0, - "name": { - "commentStart": 1132, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 1144, - "end": 0, - "name": { - "commentStart": 1144, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg03", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg03", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1118, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1118, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1710,19 +1794,35 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 1118, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 1171, + "commentStart": 0, "elements": [ { - "commentStart": 1172, + "commentStart": 0, "end": 0, "raw": "159.25", "start": 0, @@ -1734,7 +1834,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl } }, { - "commentStart": 1180, + "commentStart": 0, "end": 0, "raw": "278.35", "start": 0, @@ -1752,7 +1852,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "type": "ArrayExpression" }, { - "commentStart": 1189, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1761,10 +1861,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 1156, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1156, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1774,7 +1874,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 1156, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1783,60 +1883,74 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "arguments": [ { - "commentStart": 1208, - "elements": [ - { - "commentStart": 1209, - "end": 0, - "raw": "0", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.0, - "suffix": "None" - } - }, - { - "commentStart": 1212, - "end": 0, - "raw": "40.82", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 40.82, - "suffix": "None" - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 1220, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "40.82", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 40.82, + "suffix": "None" + } + } }, { - "commentStart": 1223, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentA002" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentA002" + } } ], "callee": { "abs_path": false, - "commentStart": 1197, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1197, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -1846,145 +1960,35 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 1197, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { - "commentStart": 1262, - "elements": [ - { - "commentStart": 1271, - "end": 0, - "left": { - "arguments": [ - { - "abs_path": false, - "commentStart": 1278, - "end": 0, - "name": { - "commentStart": 1278, - "end": 0, - "name": "rectangleSegmentA002", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1271, - "end": 0, - "name": { - "commentStart": 1271, - "end": 0, - "name": "segAng", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1271, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "operator": "-", - "right": { - "commentStart": 1302, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - }, - { - "commentStart": 1313, - "end": 0, - "raw": "132.27", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 132.27, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 1328, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1331, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentB001" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1251, - "end": 0, - "name": { - "commentStart": 1251, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1251, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1370, - "elements": [ - { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { "arguments": [ { "abs_path": false, - "commentStart": 1386, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1386, + "commentStart": 0, "end": 0, "name": "rectangleSegmentA002", "start": 0, @@ -1998,10 +2002,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 1379, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1379, + "commentStart": 0, "end": 0, "name": "segAng", "start": 0, @@ -2011,88 +2015,77 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 1379, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, - { - "argument": { - "arguments": [ - { - "abs_path": false, - "commentStart": 1424, - "end": 0, - "name": { - "commentStart": 1424, - "end": 0, - "name": "rectangleSegmentA002", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1417, - "end": 0, - "name": { - "commentStart": 1417, - "end": 0, - "name": "segLen", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1417, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - "commentStart": 1416, + "operator": "-", + "right": { + "commentStart": 0, "end": 0, - "operator": "-", + "raw": "90", "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "132.27", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 132.27, + "suffix": "None" } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + } }, { - "commentStart": 1454, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 1457, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "rectangleSegmentC001" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentB001" + } } ], "callee": { "abs_path": false, - "commentStart": 1359, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1359, + "commentStart": 0, "end": 0, "name": "angledLine", "start": 0, @@ -2102,30 +2095,182 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 1359, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1490, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA002", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segAng", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "rectangleSegmentA002", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "segLen", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "rectangleSegmentC001" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1504, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1519, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2134,10 +2279,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 1505, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1505, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -2147,7 +2292,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 1505, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2156,7 +2301,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "arguments": [ { - "commentStart": 1537, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2165,10 +2310,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 1523, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1523, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -2178,7 +2323,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 1523, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2194,10 +2339,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 1485, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1485, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -2207,7 +2352,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 1485, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2217,7 +2362,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "arguments": [ { - "commentStart": 1553, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -2226,10 +2371,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 1547, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1547, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -2239,14 +2384,14 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 1547, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 1118, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2262,12 +2407,12 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "type": "VariableDeclaration" }, { - "commentStart": 1556, + "commentStart": 0, "declaration": { - "commentStart": 1556, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1556, + "commentStart": 0, "end": 0, "name": "extrude002", "start": 0, @@ -2278,14 +2423,14 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl { "type": "LabeledArg", "label": { - "commentStart": 1588, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1597, + "commentStart": 0, "end": 0, "raw": "50", "start": 0, @@ -2300,10 +2445,10 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl ], "callee": { "abs_path": false, - "commentStart": 1569, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1569, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2313,17 +2458,17 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "start": 0, "type": "Name" }, - "commentStart": 1569, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 1577, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1577, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -2351,7 +2496,7 @@ description: Result of parsing sketch-on-chamfer-two-times.kcl "nonCodeNodes": { "1": [ { - "commentStart": 656, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/input.kcl b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/input.kcl index 013c53287..edd8f56b3 100644 --- a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/input.kcl +++ b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/input.kcl @@ -1,14 +1,8 @@ sketch001 = startSketchOn('XZ') |> startProfileAt([75.8, 317.2], %) // [$startCapTag, $EndCapTag] - |> angledLine([0, 268.43], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 217.26 - ], %, $seg01) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) |> close(%) extrude001 = extrude(sketch001, length = 100) @@ -16,30 +10,18 @@ extrude001 = extrude(sketch001, length = 100) |> chamfer(length = 50, tags = [seg02], tag = $seg04) |> chamfer(length = 50, tags = [getOppositeEdge(seg01)], tag = $seg03) -sketch003 = startSketchOn(extrude001, seg04) +sketch003 = startSketchOn(extrude001, face = seg04) |> startProfileAt([-69.1, 277.34], %) - |> angledLine([0, 41.48], %, $rectangleSegmentA003) - |> angledLine([ - segAng(rectangleSegmentA003) - 90, - 104.8 - ], %, $rectangleSegmentB002) - |> angledLine([ - segAng(rectangleSegmentA003), - -segLen(rectangleSegmentA003) - ], %, $rectangleSegmentC002) + |> angledLine(angle = 0, length = 41.48, tag = $rectangleSegmentA003) + |> angledLine(angle = segAng(rectangleSegmentA003) - 90, length = 104.8, tag = $rectangleSegmentB002) + |> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003), tag = $rectangleSegmentC002) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close(%) -sketch002 = startSketchOn(extrude001, seg03) +sketch002 = startSketchOn(extrude001, face = seg03) |> startProfileAt([159.25, 278.35], %) - |> angledLine([0, 40.82], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 132.27 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = 40.82, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 132.27, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close(%) extrude002 = extrude(sketch002, length = 50) diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/ops.snap b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/ops.snap index 5e3cabf1c..4c66ae168 100644 --- a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/ops.snap +++ b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/ops.snap @@ -5,7 +5,7 @@ description: Operations executed sketch-on-chamfer-two-times.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XZ" @@ -200,16 +200,7 @@ description: Operations executed sketch-on-chamfer-two-times.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg04", @@ -221,20 +212,19 @@ description: Operations executed sketch-on-chamfer-two-times.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg03", @@ -246,7 +236,15 @@ description: Operations executed sketch-on-chamfer-two-times.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/program_memory.snap b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/program_memory.snap index 2c2cca306..9c8638a8b 100644 --- a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/program_memory.snap +++ b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/program_memory.snap @@ -15,9 +15,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 150, + "end": 171, + "start": 150, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -28,9 +28,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 255, + "end": 261, + "start": 255, "type": "TagDeclarator", "value": "seg01" }, @@ -48,9 +48,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 425, + "end": 431, + "start": 425, "type": "TagDeclarator", "value": "seg02" }, @@ -61,9 +61,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 576, - "end": 582, - "start": 576, + "commentStart": 582, + "end": 588, + "start": 582, "type": "TagDeclarator", "value": "seg04" }, @@ -74,9 +74,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 655, + "end": 661, + "start": 655, "type": "TagDeclarator", "value": "seg03" }, @@ -97,9 +97,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 317.2 ], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 150, + "end": 171, + "start": 150, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -122,9 +122,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 317.2 ], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 255, + "end": 261, + "start": 255, "type": "TagDeclarator", "value": "seg01" }, @@ -166,9 +166,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 99.94 ], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 425, + "end": 431, + "start": 425, "type": "TagDeclarator", "value": "seg02" }, @@ -209,22 +209,34 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -283,19 +295,41 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl { "type": "fillet", "id": "[uuid]", - "radius": 20.0, + "radius": { + "n": 20.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 576, - "end": 582, - "start": 576, + "commentStart": 582, + "end": 588, + "start": 582, "type": "TagDeclarator", "value": "seg04" } @@ -303,12 +337,23 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 655, + "end": 661, + "start": 655, "type": "TagDeclarator", "value": "seg03" } @@ -331,9 +376,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1223, - "end": 1244, - "start": 1223, + "commentStart": 1273, + "end": 1294, + "start": 1273, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -344,9 +389,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1331, - "end": 1352, - "start": 1331, + "commentStart": 1378, + "end": 1399, + "start": 1378, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -357,9 +402,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1457, - "end": 1478, - "start": 1457, + "commentStart": 1501, + "end": 1522, + "start": 1501, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -387,9 +432,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 278.35 ], "tag": { - "commentStart": 1223, - "end": 1244, - "start": 1223, + "commentStart": 1273, + "end": 1294, + "start": 1273, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -412,9 +457,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 278.35 ], "tag": { - "commentStart": 1331, - "end": 1352, - "start": 1331, + "commentStart": 1378, + "end": 1399, + "start": 1378, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -437,9 +482,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 146.08 ], "tag": { - "commentStart": 1457, - "end": 1478, - "start": 1457, + "commentStart": 1501, + "end": 1522, + "start": 1501, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -499,17 +544,26 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -521,9 +575,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 150, + "end": 171, + "start": 150, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -534,9 +588,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 255, + "end": 261, + "start": 255, "type": "TagDeclarator", "value": "seg01" }, @@ -554,9 +608,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 425, + "end": 431, + "start": 425, "type": "TagDeclarator", "value": "seg02" }, @@ -567,9 +621,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 576, - "end": 582, - "start": 576, + "commentStart": 582, + "end": 588, + "start": 582, "type": "TagDeclarator", "value": "seg04" }, @@ -580,9 +634,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 655, + "end": 661, + "start": 655, "type": "TagDeclarator", "value": "seg03" }, @@ -603,9 +657,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 317.2 ], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 150, + "end": 171, + "start": 150, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -628,9 +682,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 317.2 ], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 255, + "end": 261, + "start": 255, "type": "TagDeclarator", "value": "seg01" }, @@ -672,9 +726,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 99.94 ], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 425, + "end": 431, + "start": 425, "type": "TagDeclarator", "value": "seg02" }, @@ -715,22 +769,34 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -789,19 +855,41 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl { "type": "fillet", "id": "[uuid]", - "radius": 20.0, + "radius": { + "n": 20.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 576, - "end": 582, - "start": 576, + "commentStart": 582, + "end": 588, + "start": 582, "type": "TagDeclarator", "value": "seg04" } @@ -809,12 +897,23 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 655, + "end": 661, + "start": 655, "type": "TagDeclarator", "value": "seg03" } @@ -945,9 +1044,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 317.2 ], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 150, + "end": 171, + "start": 150, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -970,9 +1069,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 317.2 ], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 255, + "end": 261, + "start": 255, "type": "TagDeclarator", "value": "seg01" }, @@ -1014,9 +1113,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 99.94 ], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 425, + "end": 431, + "start": 425, "type": "TagDeclarator", "value": "seg02" }, @@ -1057,22 +1156,34 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1141,9 +1252,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 278.35 ], "tag": { - "commentStart": 1223, - "end": 1244, - "start": 1223, + "commentStart": 1273, + "end": 1294, + "start": 1273, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -1166,9 +1277,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 278.35 ], "tag": { - "commentStart": 1331, - "end": 1352, - "start": 1331, + "commentStart": 1378, + "end": 1399, + "start": 1378, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -1191,9 +1302,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 146.08 ], "tag": { - "commentStart": 1457, - "end": 1478, - "start": 1457, + "commentStart": 1501, + "end": 1522, + "start": 1501, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -1253,17 +1364,26 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1275,9 +1395,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 150, + "end": 171, + "start": 150, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -1288,9 +1408,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 255, + "end": 261, + "start": 255, "type": "TagDeclarator", "value": "seg01" }, @@ -1308,9 +1428,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 425, + "end": 431, + "start": 425, "type": "TagDeclarator", "value": "seg02" }, @@ -1321,9 +1441,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 576, - "end": 582, - "start": 576, + "commentStart": 582, + "end": 588, + "start": 582, "type": "TagDeclarator", "value": "seg04" }, @@ -1334,9 +1454,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 655, + "end": 661, + "start": 655, "type": "TagDeclarator", "value": "seg03" }, @@ -1357,9 +1477,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 317.2 ], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 150, + "end": 171, + "start": 150, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -1382,9 +1502,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 317.2 ], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 255, + "end": 261, + "start": 255, "type": "TagDeclarator", "value": "seg01" }, @@ -1426,9 +1546,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 99.94 ], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 425, + "end": 431, + "start": 425, "type": "TagDeclarator", "value": "seg02" }, @@ -1469,22 +1589,34 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1543,19 +1675,41 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl { "type": "fillet", "id": "[uuid]", - "radius": 20.0, + "radius": { + "n": 20.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 576, - "end": 582, - "start": 576, + "commentStart": 582, + "end": 588, + "start": 582, "type": "TagDeclarator", "value": "seg04" } @@ -1563,12 +1717,23 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 655, + "end": 661, + "start": 655, "type": "TagDeclarator", "value": "seg03" } @@ -1637,9 +1802,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 277.34 ], "tag": { - "commentStart": 774, - "end": 795, - "start": 774, + "commentStart": 805, + "end": 826, + "start": 805, "type": "TagDeclarator", "value": "rectangleSegmentA003" }, @@ -1662,9 +1827,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 277.34 ], "tag": { - "commentStart": 881, - "end": 902, - "start": 881, + "commentStart": 909, + "end": 930, + "start": 909, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -1687,9 +1852,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 172.54 ], "tag": { - "commentStart": 1007, - "end": 1028, - "start": 1007, + "commentStart": 1032, + "end": 1053, + "start": 1032, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -1749,17 +1914,26 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1771,9 +1945,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 150, + "end": 171, + "start": 150, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -1784,9 +1958,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 255, + "end": 261, + "start": 255, "type": "TagDeclarator", "value": "seg01" }, @@ -1804,9 +1978,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 425, + "end": 431, + "start": 425, "type": "TagDeclarator", "value": "seg02" }, @@ -1817,9 +1991,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 576, - "end": 582, - "start": 576, + "commentStart": 582, + "end": 588, + "start": 582, "type": "TagDeclarator", "value": "seg04" }, @@ -1830,9 +2004,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 655, + "end": 661, + "start": 655, "type": "TagDeclarator", "value": "seg03" }, @@ -1853,9 +2027,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 317.2 ], "tag": { - "commentStart": 132, - "end": 153, - "start": 132, + "commentStart": 150, + "end": 171, + "start": 150, "type": "TagDeclarator", "value": "rectangleSegmentA001" }, @@ -1878,9 +2052,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 317.2 ], "tag": { - "commentStart": 240, - "end": 246, - "start": 240, + "commentStart": 255, + "end": 261, + "start": 255, "type": "TagDeclarator", "value": "seg01" }, @@ -1922,9 +2096,9 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl 99.94 ], "tag": { - "commentStart": 419, - "end": 425, - "start": 419, + "commentStart": 425, + "end": 431, + "start": 425, "type": "TagDeclarator", "value": "seg02" }, @@ -1965,22 +2139,34 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2039,19 +2225,41 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl { "type": "fillet", "id": "[uuid]", - "radius": 20.0, + "radius": { + "n": 20.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 576, - "end": 582, - "start": 576, + "commentStart": 582, + "end": 588, + "start": 582, "type": "TagDeclarator", "value": "seg04" } @@ -2059,12 +2267,23 @@ description: Variables in memory after executing sketch-on-chamfer-two-times.kcl { "type": "chamfer", "id": "[uuid]", - "length": 50.0, + "length": { + "n": 50.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": { - "commentStart": 649, - "end": 655, - "start": 649, + "commentStart": 655, + "end": 661, + "start": 655, "type": "TagDeclarator", "value": "seg03" } diff --git a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/unparsed.snap b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/unparsed.snap index 5d89888de..46e6aca48 100644 --- a/rust/kcl-lib/tests/sketch-on-chamfer-two-times/unparsed.snap +++ b/rust/kcl-lib/tests/sketch-on-chamfer-two-times/unparsed.snap @@ -4,15 +4,9 @@ description: Result of unparsing sketch-on-chamfer-two-times.kcl --- sketch001 = startSketchOn(XZ) |> startProfileAt([75.8, 317.2], %) // [$startCapTag, $EndCapTag] - |> angledLine([0, 268.43], %, $rectangleSegmentA001) - |> angledLine([ - segAng(rectangleSegmentA001) - 90, - 217.26 - ], %, $seg01) - |> angledLine([ - segAng(rectangleSegmentA001), - -segLen(rectangleSegmentA001) - ], %) + |> angledLine(angle = 0, length = 268.43, tag = $rectangleSegmentA001) + |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 217.26, tag = $seg01) + |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001)) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg02) |> close(%) extrude001 = extrude(sketch001, length = 100) @@ -20,30 +14,18 @@ extrude001 = extrude(sketch001, length = 100) |> chamfer(length = 50, tags = [seg02], tag = $seg04) |> chamfer(length = 50, tags = [getOppositeEdge(seg01)], tag = $seg03) -sketch003 = startSketchOn(extrude001, seg04) +sketch003 = startSketchOn(extrude001, face = seg04) |> startProfileAt([-69.1, 277.34], %) - |> angledLine([0, 41.48], %, $rectangleSegmentA003) - |> angledLine([ - segAng(rectangleSegmentA003) - 90, - 104.8 - ], %, $rectangleSegmentB002) - |> angledLine([ - segAng(rectangleSegmentA003), - -segLen(rectangleSegmentA003) - ], %, $rectangleSegmentC002) + |> angledLine(angle = 0, length = 41.48, tag = $rectangleSegmentA003) + |> angledLine(angle = segAng(rectangleSegmentA003) - 90, length = 104.8, tag = $rectangleSegmentB002) + |> angledLine(angle = segAng(rectangleSegmentA003), length = -segLen(rectangleSegmentA003), tag = $rectangleSegmentC002) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close(%) -sketch002 = startSketchOn(extrude001, seg03) +sketch002 = startSketchOn(extrude001, face = seg03) |> startProfileAt([159.25, 278.35], %) - |> angledLine([0, 40.82], %, $rectangleSegmentA002) - |> angledLine([ - segAng(rectangleSegmentA002) - 90, - 132.27 - ], %, $rectangleSegmentB001) - |> angledLine([ - segAng(rectangleSegmentA002), - -segLen(rectangleSegmentA002) - ], %, $rectangleSegmentC001) + |> angledLine(angle = 0, length = 40.82, tag = $rectangleSegmentA002) + |> angledLine(angle = segAng(rectangleSegmentA002) - 90, length = 132.27, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA002), length = -segLen(rectangleSegmentA002), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)]) |> close(%) extrude002 = extrude(sketch002, length = 50) diff --git a/rust/kcl-lib/tests/sketch_in_object/artifact_commands.snap b/rust/kcl-lib/tests/sketch_in_object/artifact_commands.snap index c260a3a0d..798a890a8 100644 --- a/rust/kcl-lib/tests/sketch_in_object/artifact_commands.snap +++ b/rust/kcl-lib/tests/sketch_in_object/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands sketch_in_object.kcl "type": "extrude", "target": "[uuid]", "distance": -10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -436,7 +437,8 @@ description: Artifact commands sketch_in_object.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/sketch_in_object/ast.snap b/rust/kcl-lib/tests/sketch_in_object/ast.snap index b5a5b33e8..e396105e4 100644 --- a/rust/kcl-lib/tests/sketch_in_object/ast.snap +++ b/rust/kcl-lib/tests/sketch_in_object/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing sketch_in_object.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "test", "start": 0, @@ -26,7 +26,7 @@ description: Result of parsing sketch_in_object.kcl { "arguments": [ { - "commentStart": 35, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -37,10 +37,10 @@ description: Result of parsing sketch_in_object.kcl ], "callee": { "abs_path": false, - "commentStart": 21, + "commentStart": 0, "end": 0, "name": { - "commentStart": 21, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -50,7 +50,7 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 21, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -59,10 +59,10 @@ description: Result of parsing sketch_in_object.kcl { "arguments": [ { - "commentStart": 63, + "commentStart": 0, "elements": [ { - "commentStart": 64, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -74,7 +74,7 @@ description: Result of parsing sketch_in_object.kcl } }, { - "commentStart": 67, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -92,7 +92,7 @@ description: Result of parsing sketch_in_object.kcl "type": "ArrayExpression" }, { - "commentStart": 71, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -101,10 +101,10 @@ description: Result of parsing sketch_in_object.kcl ], "callee": { "abs_path": false, - "commentStart": 48, + "commentStart": 0, "end": 0, "name": { - "commentStart": 48, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -114,7 +114,7 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 48, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -125,17 +125,17 @@ description: Result of parsing sketch_in_object.kcl { "type": "LabeledArg", "label": { - "commentStart": 86, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 92, + "commentStart": 0, "elements": [ { - "commentStart": 93, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -147,7 +147,7 @@ description: Result of parsing sketch_in_object.kcl } }, { - "commentStart": 96, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -168,10 +168,10 @@ description: Result of parsing sketch_in_object.kcl ], "callee": { "abs_path": false, - "commentStart": 81, + "commentStart": 0, "end": 0, "name": { - "commentStart": 81, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -181,7 +181,7 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 81, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -193,17 +193,17 @@ description: Result of parsing sketch_in_object.kcl { "type": "LabeledArg", "label": { - "commentStart": 112, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 118, + "commentStart": 0, "elements": [ { - "commentStart": 119, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -215,7 +215,7 @@ description: Result of parsing sketch_in_object.kcl } }, { - "commentStart": 122, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -236,10 +236,10 @@ description: Result of parsing sketch_in_object.kcl ], "callee": { "abs_path": false, - "commentStart": 107, + "commentStart": 0, "end": 0, "name": { - "commentStart": 107, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -249,7 +249,7 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 107, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -261,17 +261,17 @@ description: Result of parsing sketch_in_object.kcl { "type": "LabeledArg", "label": { - "commentStart": 138, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 144, + "commentStart": 0, "elements": [ { - "commentStart": 145, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -284,7 +284,7 @@ description: Result of parsing sketch_in_object.kcl }, { "argument": { - "commentStart": 149, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -295,7 +295,7 @@ description: Result of parsing sketch_in_object.kcl "suffix": "None" } }, - "commentStart": 148, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -312,10 +312,10 @@ description: Result of parsing sketch_in_object.kcl ], "callee": { "abs_path": false, - "commentStart": 133, + "commentStart": 0, "end": 0, "name": { - "commentStart": 133, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -325,7 +325,7 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 133, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -335,7 +335,7 @@ description: Result of parsing sketch_in_object.kcl { "arguments": [ { - "commentStart": 166, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -344,10 +344,10 @@ description: Result of parsing sketch_in_object.kcl ], "callee": { "abs_path": false, - "commentStart": 160, + "commentStart": 0, "end": 0, "name": { - "commentStart": 160, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -357,31 +357,31 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 160, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 21, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, - "commentStart": 14, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 7, + "commentStart": 0, "end": 0, "params": [], "start": 0, @@ -398,12 +398,12 @@ description: Result of parsing sketch_in_object.kcl "type": "VariableDeclaration" }, { - "commentStart": 170, + "commentStart": 0, "declaration": { - "commentStart": 175, + "commentStart": 0, "end": 0, "id": { - "commentStart": 175, + "commentStart": 0, "end": 0, "name": "test2", "start": 0, @@ -414,14 +414,14 @@ description: Result of parsing sketch_in_object.kcl "body": [ { "argument": { - "commentStart": 194, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 200, + "commentStart": 0, "end": 0, "key": { - "commentStart": 200, + "commentStart": 0, "end": 0, "name": "thing1", "start": 0, @@ -430,14 +430,14 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "ObjectProperty", "value": { - "commentStart": 209, + "commentStart": 0, "end": 0, "properties": [ { - "commentStart": 217, + "commentStart": 0, "end": 0, "key": { - "commentStart": 217, + "commentStart": 0, "end": 0, "name": "thing2", "start": 0, @@ -450,7 +450,7 @@ description: Result of parsing sketch_in_object.kcl { "arguments": [ { - "commentStart": 240, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -461,10 +461,10 @@ description: Result of parsing sketch_in_object.kcl ], "callee": { "abs_path": false, - "commentStart": 226, + "commentStart": 0, "end": 0, "name": { - "commentStart": 226, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -474,7 +474,7 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 226, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -483,10 +483,10 @@ description: Result of parsing sketch_in_object.kcl { "arguments": [ { - "commentStart": 272, + "commentStart": 0, "elements": [ { - "commentStart": 273, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -498,7 +498,7 @@ description: Result of parsing sketch_in_object.kcl } }, { - "commentStart": 276, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -516,7 +516,7 @@ description: Result of parsing sketch_in_object.kcl "type": "ArrayExpression" }, { - "commentStart": 280, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -525,10 +525,10 @@ description: Result of parsing sketch_in_object.kcl ], "callee": { "abs_path": false, - "commentStart": 257, + "commentStart": 0, "end": 0, "name": { - "commentStart": 257, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -538,7 +538,7 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 257, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -549,17 +549,17 @@ description: Result of parsing sketch_in_object.kcl { "type": "LabeledArg", "label": { - "commentStart": 299, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 305, + "commentStart": 0, "elements": [ { - "commentStart": 306, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -571,7 +571,7 @@ description: Result of parsing sketch_in_object.kcl } }, { - "commentStart": 309, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -592,10 +592,10 @@ description: Result of parsing sketch_in_object.kcl ], "callee": { "abs_path": false, - "commentStart": 294, + "commentStart": 0, "end": 0, "name": { - "commentStart": 294, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -605,7 +605,7 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 294, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -617,17 +617,17 @@ description: Result of parsing sketch_in_object.kcl { "type": "LabeledArg", "label": { - "commentStart": 329, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 335, + "commentStart": 0, "elements": [ { - "commentStart": 336, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -639,7 +639,7 @@ description: Result of parsing sketch_in_object.kcl } }, { - "commentStart": 339, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -660,10 +660,10 @@ description: Result of parsing sketch_in_object.kcl ], "callee": { "abs_path": false, - "commentStart": 324, + "commentStart": 0, "end": 0, "name": { - "commentStart": 324, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -673,7 +673,7 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 324, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -685,17 +685,17 @@ description: Result of parsing sketch_in_object.kcl { "type": "LabeledArg", "label": { - "commentStart": 359, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 365, + "commentStart": 0, "elements": [ { - "commentStart": 366, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -708,7 +708,7 @@ description: Result of parsing sketch_in_object.kcl }, { "argument": { - "commentStart": 370, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -719,7 +719,7 @@ description: Result of parsing sketch_in_object.kcl "suffix": "None" } }, - "commentStart": 369, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -736,10 +736,10 @@ description: Result of parsing sketch_in_object.kcl ], "callee": { "abs_path": false, - "commentStart": 354, + "commentStart": 0, "end": 0, "name": { - "commentStart": 354, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -749,7 +749,7 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 354, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -759,7 +759,7 @@ description: Result of parsing sketch_in_object.kcl { "arguments": [ { - "commentStart": 391, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -768,10 +768,10 @@ description: Result of parsing sketch_in_object.kcl ], "callee": { "abs_path": false, - "commentStart": 385, + "commentStart": 0, "end": 0, "name": { - "commentStart": 385, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -781,14 +781,14 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 385, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 226, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -806,18 +806,18 @@ description: Result of parsing sketch_in_object.kcl "type": "ObjectExpression", "type": "ObjectExpression" }, - "commentStart": 187, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 183, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 180, + "commentStart": 0, "end": 0, "params": [], "start": 0, @@ -834,12 +834,12 @@ description: Result of parsing sketch_in_object.kcl "type": "VariableDeclaration" }, { - "commentStart": 405, + "commentStart": 0, "declaration": { - "commentStart": 407, + "commentStart": 0, "end": 0, "id": { - "commentStart": 407, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -849,10 +849,10 @@ description: Result of parsing sketch_in_object.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 411, + "commentStart": 0, "end": 0, "name": { - "commentStart": 411, + "commentStart": 0, "end": 0, "name": "test", "start": 0, @@ -862,7 +862,7 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 411, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -878,16 +878,16 @@ description: Result of parsing sketch_in_object.kcl "type": "VariableDeclaration" }, { - "commentStart": 418, + "commentStart": 0, "end": 0, "expression": { "body": [ { "abs_path": false, - "commentStart": 418, + "commentStart": 0, "end": 0, "name": { - "commentStart": 418, + "commentStart": 0, "end": 0, "name": "x", "start": 0, @@ -903,7 +903,7 @@ description: Result of parsing sketch_in_object.kcl { "type": "LabeledArg", "label": { - "commentStart": 433, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -911,7 +911,7 @@ description: Result of parsing sketch_in_object.kcl }, "arg": { "argument": { - "commentStart": 443, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -922,7 +922,7 @@ description: Result of parsing sketch_in_object.kcl "suffix": "None" } }, - "commentStart": 442, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -933,10 +933,10 @@ description: Result of parsing sketch_in_object.kcl ], "callee": { "abs_path": false, - "commentStart": 425, + "commentStart": 0, "end": 0, "name": { - "commentStart": 425, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -946,7 +946,7 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 425, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -954,7 +954,7 @@ description: Result of parsing sketch_in_object.kcl "unlabeled": null } ], - "commentStart": 418, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -965,12 +965,12 @@ description: Result of parsing sketch_in_object.kcl "type": "ExpressionStatement" }, { - "commentStart": 446, + "commentStart": 0, "declaration": { - "commentStart": 448, + "commentStart": 0, "end": 0, "id": { - "commentStart": 448, + "commentStart": 0, "end": 0, "name": "x2", "start": 0, @@ -980,10 +980,10 @@ description: Result of parsing sketch_in_object.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 453, + "commentStart": 0, "end": 0, "name": { - "commentStart": 453, + "commentStart": 0, "end": 0, "name": "test2", "start": 0, @@ -993,7 +993,7 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 453, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1009,20 +1009,20 @@ description: Result of parsing sketch_in_object.kcl "type": "VariableDeclaration" }, { - "commentStart": 461, + "commentStart": 0, "end": 0, "expression": { "body": [ { - "commentStart": 461, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 461, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 461, + "commentStart": 0, "end": 0, "name": "x2", "start": 0, @@ -1030,7 +1030,7 @@ description: Result of parsing sketch_in_object.kcl "type": "Identifier" }, "property": { - "commentStart": 464, + "commentStart": 0, "end": 0, "name": "thing1", "start": 0, @@ -1042,7 +1042,7 @@ description: Result of parsing sketch_in_object.kcl "type": "MemberExpression" }, "property": { - "commentStart": 471, + "commentStart": 0, "end": 0, "name": "thing2", "start": 0, @@ -1058,14 +1058,14 @@ description: Result of parsing sketch_in_object.kcl { "type": "LabeledArg", "label": { - "commentStart": 491, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 500, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -1080,10 +1080,10 @@ description: Result of parsing sketch_in_object.kcl ], "callee": { "abs_path": false, - "commentStart": 483, + "commentStart": 0, "end": 0, "name": { - "commentStart": 483, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1093,7 +1093,7 @@ description: Result of parsing sketch_in_object.kcl "start": 0, "type": "Name" }, - "commentStart": 483, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1101,7 +1101,7 @@ description: Result of parsing sketch_in_object.kcl "unlabeled": null } ], - "commentStart": 461, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1118,7 +1118,7 @@ description: Result of parsing sketch_in_object.kcl "nonCodeNodes": { "0": [ { - "commentStart": 170, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1129,7 +1129,7 @@ description: Result of parsing sketch_in_object.kcl ], "1": [ { - "commentStart": 405, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1140,7 +1140,7 @@ description: Result of parsing sketch_in_object.kcl ], "3": [ { - "commentStart": 446, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/sketch_in_object/ops.snap b/rust/kcl-lib/tests/sketch_in_object/ops.snap index 92988bbe3..c17be92d9 100644 --- a/rust/kcl-lib/tests/sketch_in_object/ops.snap +++ b/rust/kcl-lib/tests/sketch_in_object/ops.snap @@ -20,7 +20,7 @@ description: Operations executed sketch_in_object.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" @@ -85,7 +85,7 @@ description: Operations executed sketch_in_object.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/sketch_in_object/program_memory.snap b/rust/kcl-lib/tests/sketch_in_object/program_memory.snap index f9e1f8095..2681dd03a 100644 --- a/rust/kcl-lib/tests/sketch_in_object/program_memory.snap +++ b/rust/kcl-lib/tests/sketch_in_object/program_memory.snap @@ -100,22 +100,34 @@ description: Variables in memory after executing sketch_in_object.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -243,22 +255,34 @@ description: Variables in memory after executing sketch_in_object.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/sketch_on_face/artifact_commands.snap b/rust/kcl-lib/tests/sketch_on_face/artifact_commands.snap index f37c2234b..6ad934c09 100644 --- a/rust/kcl-lib/tests/sketch_on_face/artifact_commands.snap +++ b/rust/kcl-lib/tests/sketch_on_face/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands sketch_on_face.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -403,7 +404,8 @@ description: Artifact commands sketch_on_face.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/sketch_on_face/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/sketch_on_face/artifact_graph_flowchart.snap.md index 46364e066..fb9410054 100644 --- a/rust/kcl-lib/tests/sketch_on_face/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/sketch_on_face/artifact_graph_flowchart.snap.md @@ -1,23 +1,23 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[35, 68, 0]"] - 3["Segment
[74, 114, 0]"] - 4["Segment
[120, 147, 0]"] - 5["Segment
[153, 180, 0]"] - 6["Segment
[186, 194, 0]"] + 2["Path
[33, 66, 0]"] + 3["Segment
[72, 112, 0]"] + 4["Segment
[118, 145, 0]"] + 5["Segment
[151, 178, 0]"] + 6["Segment
[184, 192, 0]"] 7[Solid2d] end subgraph path23 [Path] - 23["Path
[265, 290, 0]"] - 24["Segment
[296, 315, 0]"] - 25["Segment
[321, 340, 0]"] - 26["Segment
[346, 366, 0]"] - 27["Segment
[372, 380, 0]"] + 23["Path
[270, 295, 0]"] + 24["Segment
[301, 320, 0]"] + 25["Segment
[326, 345, 0]"] + 26["Segment
[351, 371, 0]"] + 27["Segment
[377, 385, 0]"] 28[Solid2d] end - 1["Plane
[10, 29, 0]"] - 8["Sweep Extrusion
[200, 219, 0]"] + 1["Plane
[10, 27, 0]"] + 8["Sweep Extrusion
[198, 217, 0]"] 9[Wall] 10[Wall] 11[Wall] @@ -32,7 +32,7 @@ flowchart LR 20["SweepEdge Adjacent"] 21["SweepEdge Opposite"] 22["SweepEdge Adjacent"] - 29["Sweep Extrusion
[386, 405, 0]"] + 29["Sweep Extrusion
[391, 410, 0]"] 30[Wall] 31[Wall] 32[Wall] @@ -47,7 +47,7 @@ flowchart LR 41["SweepEdge Adjacent"] 42["SweepEdge Opposite"] 43["SweepEdge Adjacent"] - 44["StartSketchOnFace
[231, 259, 0]"] + 44["StartSketchOnFace
[229, 264, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/sketch_on_face/ast.snap b/rust/kcl-lib/tests/sketch_on_face/ast.snap index 4a4c03d94..9d2561461 100644 --- a/rust/kcl-lib/tests/sketch_on_face/ast.snap +++ b/rust/kcl-lib/tests/sketch_on_face/ast.snap @@ -22,21 +22,28 @@ description: Result of parsing sketch_on_face.kcl { "arguments": [ { - "commentStart": 24, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'XY'", + "name": { + "commentStart": 0, + "end": 0, + "name": "XY", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "XY" + "type": "Name", + "type": "Name" } ], "callee": { "abs_path": false, - "commentStart": 10, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +53,7 @@ description: Result of parsing sketch_on_face.kcl "start": 0, "type": "Name" }, - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +62,10 @@ description: Result of parsing sketch_on_face.kcl { "arguments": [ { - "commentStart": 50, + "commentStart": 0, "elements": [ { - "commentStart": 51, + "commentStart": 0, "end": 0, "raw": "11.19", "start": 0, @@ -70,7 +77,7 @@ description: Result of parsing sketch_on_face.kcl } }, { - "commentStart": 58, + "commentStart": 0, "end": 0, "raw": "28.35", "start": 0, @@ -88,7 +95,7 @@ description: Result of parsing sketch_on_face.kcl "type": "ArrayExpression" }, { - "commentStart": 66, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +104,10 @@ description: Result of parsing sketch_on_face.kcl ], "callee": { "abs_path": false, - "commentStart": 35, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +117,7 @@ description: Result of parsing sketch_on_face.kcl "start": 0, "type": "Name" }, - "commentStart": 35, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +128,17 @@ description: Result of parsing sketch_on_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 79, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 85, + "commentStart": 0, "elements": [ { - "commentStart": 86, + "commentStart": 0, "end": 0, "raw": "28.67", "start": 0, @@ -144,7 +151,7 @@ description: Result of parsing sketch_on_face.kcl }, { "argument": { - "commentStart": 94, + "commentStart": 0, "end": 0, "raw": "13.25", "start": 0, @@ -155,7 +162,7 @@ description: Result of parsing sketch_on_face.kcl "suffix": "None" } }, - "commentStart": 93, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -172,14 +179,14 @@ description: Result of parsing sketch_on_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 102, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 108, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -190,10 +197,10 @@ description: Result of parsing sketch_on_face.kcl ], "callee": { "abs_path": false, - "commentStart": 74, + "commentStart": 0, "end": 0, "name": { - "commentStart": 74, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -203,7 +210,7 @@ description: Result of parsing sketch_on_face.kcl "start": 0, "type": "Name" }, - "commentStart": 74, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -215,18 +222,18 @@ description: Result of parsing sketch_on_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 125, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 131, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 133, + "commentStart": 0, "end": 0, "raw": "4.12", "start": 0, @@ -237,7 +244,7 @@ description: Result of parsing sketch_on_face.kcl "suffix": "None" } }, - "commentStart": 132, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -246,7 +253,7 @@ description: Result of parsing sketch_on_face.kcl }, { "argument": { - "commentStart": 140, + "commentStart": 0, "end": 0, "raw": "22.81", "start": 0, @@ -257,7 +264,7 @@ description: Result of parsing sketch_on_face.kcl "suffix": "None" } }, - "commentStart": 139, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -274,10 +281,10 @@ description: Result of parsing sketch_on_face.kcl ], "callee": { "abs_path": false, - "commentStart": 120, + "commentStart": 0, "end": 0, "name": { - "commentStart": 120, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -287,7 +294,7 @@ description: Result of parsing sketch_on_face.kcl "start": 0, "type": "Name" }, - "commentStart": 120, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -299,18 +306,18 @@ description: Result of parsing sketch_on_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 158, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 164, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 166, + "commentStart": 0, "end": 0, "raw": "33.24", "start": 0, @@ -321,7 +328,7 @@ description: Result of parsing sketch_on_face.kcl "suffix": "None" } }, - "commentStart": 165, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -329,7 +336,7 @@ description: Result of parsing sketch_on_face.kcl "type": "UnaryExpression" }, { - "commentStart": 173, + "commentStart": 0, "end": 0, "raw": "14.55", "start": 0, @@ -350,10 +357,10 @@ description: Result of parsing sketch_on_face.kcl ], "callee": { "abs_path": false, - "commentStart": 153, + "commentStart": 0, "end": 0, "name": { - "commentStart": 153, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -363,7 +370,7 @@ description: Result of parsing sketch_on_face.kcl "start": 0, "type": "Name" }, - "commentStart": 153, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -373,7 +380,7 @@ description: Result of parsing sketch_on_face.kcl { "arguments": [ { - "commentStart": 192, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -382,10 +389,10 @@ description: Result of parsing sketch_on_face.kcl ], "callee": { "abs_path": false, - "commentStart": 186, + "commentStart": 0, "end": 0, "name": { - "commentStart": 186, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -395,7 +402,7 @@ description: Result of parsing sketch_on_face.kcl "start": 0, "type": "Name" }, - "commentStart": 186, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -406,14 +413,14 @@ description: Result of parsing sketch_on_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 208, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 217, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -428,10 +435,10 @@ description: Result of parsing sketch_on_face.kcl ], "callee": { "abs_path": false, - "commentStart": 200, + "commentStart": 0, "end": 0, "name": { - "commentStart": 200, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -441,7 +448,7 @@ description: Result of parsing sketch_on_face.kcl "start": 0, "type": "Name" }, - "commentStart": 200, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -449,7 +456,7 @@ description: Result of parsing sketch_on_face.kcl "unlabeled": null } ], - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -465,12 +472,12 @@ description: Result of parsing sketch_on_face.kcl "type": "VariableDeclaration" }, { - "commentStart": 219, + "commentStart": 0, "declaration": { - "commentStart": 221, + "commentStart": 0, "end": 0, "id": { - "commentStart": 221, + "commentStart": 0, "end": 0, "name": "part002", "start": 0, @@ -481,44 +488,38 @@ description: Result of parsing sketch_on_face.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 245, - "end": 0, - "name": { - "commentStart": 245, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "part001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 254, - "end": 0, - "name": { - "commentStart": 254, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "here", + "name": { + "commentStart": 0, + "end": 0, + "name": "here", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 231, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -528,19 +529,35 @@ description: Result of parsing sketch_on_face.kcl "start": 0, "type": "Name" }, - "commentStart": 231, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "part001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 280, + "commentStart": 0, "elements": [ { - "commentStart": 281, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -552,7 +569,7 @@ description: Result of parsing sketch_on_face.kcl } }, { - "commentStart": 284, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -570,7 +587,7 @@ description: Result of parsing sketch_on_face.kcl "type": "ArrayExpression" }, { - "commentStart": 288, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -579,10 +596,10 @@ description: Result of parsing sketch_on_face.kcl ], "callee": { "abs_path": false, - "commentStart": 265, + "commentStart": 0, "end": 0, "name": { - "commentStart": 265, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -592,7 +609,7 @@ description: Result of parsing sketch_on_face.kcl "start": 0, "type": "Name" }, - "commentStart": 265, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -603,17 +620,17 @@ description: Result of parsing sketch_on_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 301, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 307, + "commentStart": 0, "elements": [ { - "commentStart": 308, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -625,7 +642,7 @@ description: Result of parsing sketch_on_face.kcl } }, { - "commentStart": 311, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -646,10 +663,10 @@ description: Result of parsing sketch_on_face.kcl ], "callee": { "abs_path": false, - "commentStart": 296, + "commentStart": 0, "end": 0, "name": { - "commentStart": 296, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -659,7 +676,7 @@ description: Result of parsing sketch_on_face.kcl "start": 0, "type": "Name" }, - "commentStart": 296, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -671,17 +688,17 @@ description: Result of parsing sketch_on_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 326, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 332, + "commentStart": 0, "elements": [ { - "commentStart": 333, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -693,7 +710,7 @@ description: Result of parsing sketch_on_face.kcl } }, { - "commentStart": 337, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -714,10 +731,10 @@ description: Result of parsing sketch_on_face.kcl ], "callee": { "abs_path": false, - "commentStart": 321, + "commentStart": 0, "end": 0, "name": { - "commentStart": 321, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -727,7 +744,7 @@ description: Result of parsing sketch_on_face.kcl "start": 0, "type": "Name" }, - "commentStart": 321, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -739,17 +756,17 @@ description: Result of parsing sketch_on_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 351, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 357, + "commentStart": 0, "elements": [ { - "commentStart": 358, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -762,7 +779,7 @@ description: Result of parsing sketch_on_face.kcl }, { "argument": { - "commentStart": 362, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -773,7 +790,7 @@ description: Result of parsing sketch_on_face.kcl "suffix": "None" } }, - "commentStart": 361, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -790,10 +807,10 @@ description: Result of parsing sketch_on_face.kcl ], "callee": { "abs_path": false, - "commentStart": 346, + "commentStart": 0, "end": 0, "name": { - "commentStart": 346, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -803,7 +820,7 @@ description: Result of parsing sketch_on_face.kcl "start": 0, "type": "Name" }, - "commentStart": 346, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -813,7 +830,7 @@ description: Result of parsing sketch_on_face.kcl { "arguments": [ { - "commentStart": 378, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -822,10 +839,10 @@ description: Result of parsing sketch_on_face.kcl ], "callee": { "abs_path": false, - "commentStart": 372, + "commentStart": 0, "end": 0, "name": { - "commentStart": 372, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -835,7 +852,7 @@ description: Result of parsing sketch_on_face.kcl "start": 0, "type": "Name" }, - "commentStart": 372, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -846,14 +863,14 @@ description: Result of parsing sketch_on_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 394, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 403, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -868,10 +885,10 @@ description: Result of parsing sketch_on_face.kcl ], "callee": { "abs_path": false, - "commentStart": 386, + "commentStart": 0, "end": 0, "name": { - "commentStart": 386, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -881,7 +898,7 @@ description: Result of parsing sketch_on_face.kcl "start": 0, "type": "Name" }, - "commentStart": 386, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -889,7 +906,7 @@ description: Result of parsing sketch_on_face.kcl "unlabeled": null } ], - "commentStart": 231, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -911,7 +928,7 @@ description: Result of parsing sketch_on_face.kcl "nonCodeNodes": { "0": [ { - "commentStart": 219, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/sketch_on_face/input.kcl b/rust/kcl-lib/tests/sketch_on_face/input.kcl index 0502a4a02..a11057668 100644 --- a/rust/kcl-lib/tests/sketch_on_face/input.kcl +++ b/rust/kcl-lib/tests/sketch_on_face/input.kcl @@ -1,4 +1,4 @@ -part001 = startSketchOn('XY') +part001 = startSketchOn(XY) |> startProfileAt([11.19, 28.35], %) |> line(end = [28.67, -13.25], tag = $here) |> line(end = [-4.12, -22.81]) @@ -6,7 +6,7 @@ part001 = startSketchOn('XY') |> close(%) |> extrude(length = 5) -part002 = startSketchOn(part001, here) +part002 = startSketchOn(part001, face = here) |> startProfileAt([0, 0], %) |> line(end = [0, 10]) |> line(end = [10, 0]) diff --git a/rust/kcl-lib/tests/sketch_on_face/ops.snap b/rust/kcl-lib/tests/sketch_on_face/ops.snap index 9bc535e05..450ac01f6 100644 --- a/rust/kcl-lib/tests/sketch_on_face/ops.snap +++ b/rust/kcl-lib/tests/sketch_on_face/ops.snap @@ -5,66 +5,9 @@ description: Operations executed sketch_on_face.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { - "type": "String", - "value": "XY" - }, - "sourceRange": [] - } - }, - "name": "startSketchOn", - "sourceRange": [], - "type": "StdLibCall", - "unlabeledArg": null - }, - { - "labeledArgs": { - "length": { - "value": { - "type": "Number", - "value": 5.0, - "ty": { - "type": "Default", - "len": { - "type": "Mm" - }, - "angle": { - "type": "Degrees" - } - } - }, - "sourceRange": [] - } - }, - "name": "extrude", - "sourceRange": [], - "type": "StdLibCall", - "unlabeledArg": { - "value": { - "type": "Sketch", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - } - }, - { - "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { - "value": { - "type": "TagIdentifier", - "value": "here", + "type": "Plane", "artifact_id": "[uuid]" }, "sourceRange": [] @@ -75,6 +18,62 @@ description: Operations executed sketch_on_face.kcl "type": "StdLibCall", "unlabeledArg": null }, + { + "labeledArgs": { + "length": { + "value": { + "type": "Number", + "value": 5.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + } + }, + "name": "extrude", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Sketch", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, + { + "labeledArgs": { + "face": { + "value": { + "type": "TagIdentifier", + "value": "here", + "artifact_id": "[uuid]" + }, + "sourceRange": [] + } + }, + "name": "startSketchOn", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, { "labeledArgs": { "length": { diff --git a/rust/kcl-lib/tests/sketch_on_face/program_memory.snap b/rust/kcl-lib/tests/sketch_on_face/program_memory.snap index 7f19d90b6..4a4d2f2db 100644 --- a/rust/kcl-lib/tests/sketch_on_face/program_memory.snap +++ b/rust/kcl-lib/tests/sketch_on_face/program_memory.snap @@ -20,9 +20,9 @@ description: Variables in memory after executing sketch_on_face.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 108, - "end": 113, - "start": 108, + "commentStart": 106, + "end": 111, + "start": 106, "type": "TagDeclarator", "value": "here" }, @@ -64,9 +64,9 @@ description: Variables in memory after executing sketch_on_face.kcl 28.35 ], "tag": { - "commentStart": 108, - "end": 113, - "start": 108, + "commentStart": 106, + "end": 111, + "start": 106, "type": "TagDeclarator", "value": "here" }, @@ -145,22 +145,34 @@ description: Variables in memory after executing sketch_on_face.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -329,17 +341,26 @@ description: Variables in memory after executing sketch_on_face.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -351,9 +372,9 @@ description: Variables in memory after executing sketch_on_face.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 108, - "end": 113, - "start": 108, + "commentStart": 106, + "end": 111, + "start": 106, "type": "TagDeclarator", "value": "here" }, @@ -395,9 +416,9 @@ description: Variables in memory after executing sketch_on_face.kcl 28.35 ], "tag": { - "commentStart": 108, - "end": 113, - "start": 108, + "commentStart": 106, + "end": 111, + "start": 106, "type": "TagDeclarator", "value": "here" }, @@ -476,22 +497,34 @@ description: Variables in memory after executing sketch_on_face.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/sketch_on_face/unparsed.snap b/rust/kcl-lib/tests/sketch_on_face/unparsed.snap index 7e33de2b2..59c3c0ee2 100644 --- a/rust/kcl-lib/tests/sketch_on_face/unparsed.snap +++ b/rust/kcl-lib/tests/sketch_on_face/unparsed.snap @@ -10,7 +10,7 @@ part001 = startSketchOn(XY) |> close(%) |> extrude(length = 5) -part002 = startSketchOn(part001, here) +part002 = startSketchOn(part001, face = here) |> startProfileAt([0, 0], %) |> line(end = [0, 10]) |> line(end = [10, 0]) diff --git a/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/artifact_commands.snap b/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/artifact_commands.snap index f171056e3..9576a7a04 100644 --- a/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/artifact_commands.snap +++ b/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/artifact_commands.snap @@ -213,7 +213,8 @@ description: Artifact commands sketch_on_face_after_fillets_referencing_face.kcl "type": "extrude", "target": "[uuid]", "distance": 6.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -538,7 +539,8 @@ description: Artifact commands sketch_on_face_after_fillets_referencing_face.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/artifact_graph_flowchart.snap.md index fc5b87035..84866b6dd 100644 --- a/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/artifact_graph_flowchart.snap.md @@ -1,26 +1,26 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[1016, 1041, 0]"] - 3["Segment
[1047, 1092, 0]"] - 4["Segment
[1098, 1141, 0]"] - 5["Segment
[1147, 1174, 0]"] - 6["Segment
[1180, 1238, 0]"] - 7["Segment
[1244, 1284, 0]"] - 8["Segment
[1290, 1298, 0]"] + 2["Path
[1014, 1039, 0]"] + 3["Segment
[1045, 1090, 0]"] + 4["Segment
[1096, 1139, 0]"] + 5["Segment
[1145, 1172, 0]"] + 6["Segment
[1178, 1236, 0]"] + 7["Segment
[1242, 1282, 0]"] + 8["Segment
[1288, 1296, 0]"] 9[Solid2d] end subgraph path33 [Path] - 33["Path
[1530, 1561, 0]"] - 34["Segment
[1567, 1592, 0]"] - 35["Segment
[1598, 1623, 0]"] - 36["Segment
[1629, 1654, 0]"] - 37["Segment
[1660, 1716, 0]"] - 38["Segment
[1722, 1730, 0]"] + 33["Path
[1535, 1566, 0]"] + 34["Segment
[1572, 1597, 0]"] + 35["Segment
[1603, 1628, 0]"] + 36["Segment
[1634, 1659, 0]"] + 37["Segment
[1665, 1721, 0]"] + 38["Segment
[1727, 1735, 0]"] 39[Solid2d] end - 1["Plane
[991, 1010, 0]"] - 10["Sweep Extrusion
[1304, 1327, 0]"] + 1["Plane
[991, 1008, 0]"] + 10["Sweep Extrusion
[1302, 1325, 0]"] 11[Wall] 12[Wall] 13[Wall] @@ -41,9 +41,9 @@ flowchart LR 28["SweepEdge Adjacent"] 29["SweepEdge Opposite"] 30["SweepEdge Adjacent"] - 31["EdgeCut Fillet
[1333, 1398, 0]"] - 32["EdgeCut Fillet
[1404, 1481, 0]"] - 40["Sweep Extrusion
[1736, 1756, 0]"] + 31["EdgeCut Fillet
[1331, 1396, 0]"] + 32["EdgeCut Fillet
[1402, 1479, 0]"] + 40["Sweep Extrusion
[1741, 1761, 0]"] 41[Wall] 42[Wall] 43[Wall] @@ -57,7 +57,7 @@ flowchart LR 51["SweepEdge Adjacent"] 52["SweepEdge Opposite"] 53["SweepEdge Adjacent"] - 54["StartSketchOnFace
[1495, 1524, 0]"] + 54["StartSketchOnFace
[1493, 1529, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/ast.snap b/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/ast.snap index 5bf059c1e..34788d3c9 100644 --- a/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/ast.snap +++ b/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/ast.snap @@ -8,17 +8,17 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "commentStart": 0, "declaration": { - "commentStart": 353, + "commentStart": 0, "end": 0, "id": { - "commentStart": 353, + "commentStart": 0, "end": 0, "name": "shelfMountL", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 367, + "commentStart": 0, "end": 0, "raw": "8", "start": 0, @@ -46,19 +46,19 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "VariableDeclaration" }, { - "commentStart": 368, + "commentStart": 0, "declaration": { - "commentStart": 431, + "commentStart": 0, "end": 0, "id": { - "commentStart": 431, + "commentStart": 0, "end": 0, "name": "wallMountL", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 444, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -79,19 +79,19 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "VariableDeclaration" }, { - "commentStart": 445, + "commentStart": 0, "declaration": { - "commentStart": 559, + "commentStart": 0, "end": 0, "id": { - "commentStart": 559, + "commentStart": 0, "end": 0, "name": "sigmaAllow", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 572, + "commentStart": 0, "end": 0, "raw": "35000", "start": 0, @@ -115,19 +115,19 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "VariableDeclaration" }, { - "commentStart": 577, + "commentStart": 0, "declaration": { - "commentStart": 585, + "commentStart": 0, "end": 0, "id": { - "commentStart": 585, + "commentStart": 0, "end": 0, "name": "width", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 593, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -148,19 +148,19 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "VariableDeclaration" }, { - "commentStart": 594, + "commentStart": 0, "declaration": { - "commentStart": 603, + "commentStart": 0, "end": 0, "id": { - "commentStart": 603, + "commentStart": 0, "end": 0, "name": "p", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 607, + "commentStart": 0, "end": 0, "raw": "300", "start": 0, @@ -181,19 +181,19 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "VariableDeclaration" }, { - "commentStart": 610, + "commentStart": 0, "declaration": { - "commentStart": 635, + "commentStart": 0, "end": 0, "id": { - "commentStart": 635, + "commentStart": 0, "end": 0, "name": "L", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 639, + "commentStart": 0, "end": 0, "raw": "12", "start": 0, @@ -214,29 +214,29 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "VariableDeclaration" }, { - "commentStart": 641, + "commentStart": 0, "declaration": { - "commentStart": 652, + "commentStart": 0, "end": 0, "id": { - "commentStart": 652, + "commentStart": 0, "end": 0, "name": "M", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 656, + "commentStart": 0, "end": 0, "left": { - "commentStart": 656, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 656, + "commentStart": 0, "end": 0, "name": { - "commentStart": 656, + "commentStart": 0, "end": 0, "name": "L", "start": 0, @@ -250,10 +250,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 660, + "commentStart": 0, "end": 0, "name": { - "commentStart": 660, + "commentStart": 0, "end": 0, "name": "p", "start": 0, @@ -270,7 +270,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl }, "operator": "/", "right": { - "commentStart": 664, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -295,19 +295,19 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "VariableDeclaration" }, { - "commentStart": 665, + "commentStart": 0, "declaration": { - "commentStart": 712, + "commentStart": 0, "end": 0, "id": { - "commentStart": 712, + "commentStart": 0, "end": 0, "name": "FOS", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 718, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -328,12 +328,12 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "VariableDeclaration" }, { - "commentStart": 719, + "commentStart": 0, "declaration": { - "commentStart": 837, + "commentStart": 0, "end": 0, "id": { - "commentStart": 837, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -342,16 +342,16 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "init": { "arguments": [ { - "commentStart": 854, + "commentStart": 0, "end": 0, "left": { - "commentStart": 854, + "commentStart": 0, "end": 0, "left": { - "commentStart": 854, + "commentStart": 0, "end": 0, "left": { - "commentStart": 854, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -365,10 +365,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 858, + "commentStart": 0, "end": 0, "name": { - "commentStart": 858, + "commentStart": 0, "end": 0, "name": "M", "start": 0, @@ -386,10 +386,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 862, + "commentStart": 0, "end": 0, "name": { - "commentStart": 862, + "commentStart": 0, "end": 0, "name": "FOS", "start": 0, @@ -406,14 +406,14 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl }, "operator": "/", "right": { - "commentStart": 869, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 869, + "commentStart": 0, "end": 0, "name": { - "commentStart": 869, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -427,10 +427,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "operator": "*", "right": { "abs_path": false, - "commentStart": 877, + "commentStart": 0, "end": 0, "name": { - "commentStart": 877, + "commentStart": 0, "end": 0, "name": "sigmaAllow", "start": 0, @@ -452,10 +452,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 849, + "commentStart": 0, "end": 0, "name": { - "commentStart": 849, + "commentStart": 0, "end": 0, "name": "sqrt", "start": 0, @@ -465,7 +465,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 849, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -484,19 +484,19 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "VariableDeclaration" }, { - "commentStart": 889, + "commentStart": 0, "declaration": { - "commentStart": 918, + "commentStart": 0, "end": 0, "id": { - "commentStart": 918, + "commentStart": 0, "end": 0, "name": "filletR", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 928, + "commentStart": 0, "end": 0, "raw": "0.25", "start": 0, @@ -522,12 +522,12 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "VariableDeclaration" }, { - "commentStart": 932, + "commentStart": 0, "declaration": { - "commentStart": 981, + "commentStart": 0, "end": 0, "id": { - "commentStart": 981, + "commentStart": 0, "end": 0, "name": "bracket", "start": 0, @@ -538,21 +538,28 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "arguments": [ { - "commentStart": 1005, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'XY'", + "name": { + "commentStart": 0, + "end": 0, + "name": "XY", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "XY" + "type": "Name", + "type": "Name" } ], "callee": { "abs_path": false, - "commentStart": 991, + "commentStart": 0, "end": 0, "name": { - "commentStart": 991, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -562,7 +569,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 991, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -571,10 +578,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "arguments": [ { - "commentStart": 1031, + "commentStart": 0, "elements": [ { - "commentStart": 1032, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -586,7 +593,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl } }, { - "commentStart": 1035, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -604,7 +611,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "ArrayExpression" }, { - "commentStart": 1039, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -613,10 +620,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1016, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1016, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -626,7 +633,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1016, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -637,17 +644,17 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1052, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1058, + "commentStart": 0, "elements": [ { - "commentStart": 1059, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -660,10 +667,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl }, { "abs_path": false, - "commentStart": 1062, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1062, + "commentStart": 0, "end": 0, "name": "wallMountL", "start": 0, @@ -684,14 +691,14 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1075, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1081, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -702,10 +709,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1047, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1047, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -715,7 +722,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1047, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -727,22 +734,22 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1103, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1109, + "commentStart": 0, "elements": [ { "argument": { "abs_path": false, - "commentStart": 1111, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1111, + "commentStart": 0, "end": 0, "name": "shelfMountL", "start": 0, @@ -753,7 +760,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "Name", "type": "Name" }, - "commentStart": 1110, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -761,7 +768,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "UnaryExpression" }, { - "commentStart": 1124, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -782,14 +789,14 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1128, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1134, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -800,10 +807,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1098, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1098, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -813,7 +820,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1098, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -825,17 +832,17 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1152, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1158, + "commentStart": 0, "elements": [ { - "commentStart": 1159, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -849,10 +856,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "argument": { "abs_path": false, - "commentStart": 1163, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1163, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -863,7 +870,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "Name", "type": "Name" }, - "commentStart": 1162, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -880,10 +887,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1147, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1147, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -893,7 +900,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1147, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -905,24 +912,24 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1185, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1191, + "commentStart": 0, "elements": [ { - "commentStart": 1192, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1192, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1192, + "commentStart": 0, "end": 0, "name": "shelfMountL", "start": 0, @@ -936,10 +943,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "operator": "-", "right": { "abs_path": false, - "commentStart": 1206, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1206, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -955,7 +962,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "BinaryExpression" }, { - "commentStart": 1217, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -976,14 +983,14 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1221, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1227, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -994,10 +1001,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1180, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1180, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1007,7 +1014,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1180, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1019,17 +1026,17 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1249, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1255, + "commentStart": 0, "elements": [ { - "commentStart": 1256, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1041,15 +1048,15 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl } }, { - "commentStart": 1259, + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1260, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1260, + "commentStart": 0, "end": 0, "name": "wallMountL", "start": 0, @@ -1060,7 +1067,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "Name", "type": "Name" }, - "commentStart": 1259, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1070,10 +1077,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1273, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1273, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -1098,10 +1105,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1244, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1244, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1111,7 +1118,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1244, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1121,7 +1128,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "arguments": [ { - "commentStart": 1296, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1130,10 +1137,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1290, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1290, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1143,7 +1150,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1290, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1154,7 +1161,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1312, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1162,10 +1169,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl }, "arg": { "abs_path": false, - "commentStart": 1321, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1321, + "commentStart": 0, "end": 0, "name": "width", "start": 0, @@ -1180,10 +1187,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1304, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1304, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1193,7 +1200,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1304, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1205,7 +1212,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1340, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, @@ -1213,10 +1220,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl }, "arg": { "abs_path": false, - "commentStart": 1349, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1349, + "commentStart": 0, "end": 0, "name": "filletR", "start": 0, @@ -1231,23 +1238,23 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1358, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1365, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 1386, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1386, + "commentStart": 0, "end": 0, "name": "innerEdge", "start": 0, @@ -1261,10 +1268,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1366, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1366, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -1274,7 +1281,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1366, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1290,10 +1297,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1333, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1333, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -1303,7 +1310,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1333, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1315,21 +1322,21 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1411, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1420, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1420, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1420, + "commentStart": 0, "end": 0, "name": "filletR", "start": 0, @@ -1343,10 +1350,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "operator": "+", "right": { "abs_path": false, - "commentStart": 1430, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1430, + "commentStart": 0, "end": 0, "name": "thickness", "start": 0, @@ -1365,23 +1372,23 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1441, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1448, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 1469, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1469, + "commentStart": 0, "end": 0, "name": "outerEdge", "start": 0, @@ -1395,10 +1402,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1449, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1449, + "commentStart": 0, "end": 0, "name": "getNextAdjacentEdge", "start": 0, @@ -1408,7 +1415,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1449, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1424,10 +1431,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1404, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1404, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -1437,7 +1444,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1404, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1445,7 +1452,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "unlabeled": null } ], - "commentStart": 991, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1466,12 +1473,12 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "VariableDeclaration" }, { - "commentStart": 1481, + "commentStart": 0, "declaration": { - "commentStart": 1483, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1483, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -1482,44 +1489,38 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1509, - "end": 0, - "name": { - "commentStart": 1509, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "bracket", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 1518, - "end": 0, - "name": { - "commentStart": 1518, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg01", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg01", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 1495, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1495, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1529,19 +1530,35 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1495, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bracket", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 1545, + "commentStart": 0, "elements": [ { - "commentStart": 1546, + "commentStart": 0, "end": 0, "raw": "4.28", "start": 0, @@ -1553,7 +1570,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl } }, { - "commentStart": 1552, + "commentStart": 0, "end": 0, "raw": "3.83", "start": 0, @@ -1571,7 +1588,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "ArrayExpression" }, { - "commentStart": 1559, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1580,10 +1597,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1530, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1530, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -1593,7 +1610,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1530, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1604,17 +1621,17 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1572, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1578, + "commentStart": 0, "elements": [ { - "commentStart": 1579, + "commentStart": 0, "end": 0, "raw": "2.17", "start": 0, @@ -1627,7 +1644,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl }, { "argument": { - "commentStart": 1586, + "commentStart": 0, "end": 0, "raw": "0.03", "start": 0, @@ -1638,7 +1655,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "suffix": "None" } }, - "commentStart": 1585, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1655,10 +1672,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1567, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1567, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1668,7 +1685,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1567, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1680,18 +1697,18 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1603, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1609, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1611, + "commentStart": 0, "end": 0, "raw": "0.07", "start": 0, @@ -1702,7 +1719,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "suffix": "None" } }, - "commentStart": 1610, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1711,7 +1728,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl }, { "argument": { - "commentStart": 1618, + "commentStart": 0, "end": 0, "raw": "1.8", "start": 0, @@ -1722,7 +1739,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "suffix": "None" } }, - "commentStart": 1617, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1739,10 +1756,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1598, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1598, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1752,7 +1769,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1598, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1764,18 +1781,18 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1634, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1640, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 1642, + "commentStart": 0, "end": 0, "raw": "2.07", "start": 0, @@ -1786,7 +1803,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "suffix": "None" } }, - "commentStart": 1641, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1794,7 +1811,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "type": "UnaryExpression" }, { - "commentStart": 1648, + "commentStart": 0, "end": 0, "raw": "0.05", "start": 0, @@ -1815,10 +1832,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1629, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1629, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1828,7 +1845,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1629, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1840,19 +1857,19 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1665, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1679, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 1694, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1861,10 +1878,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1680, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1680, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -1874,7 +1891,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1680, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1883,7 +1900,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "arguments": [ { - "commentStart": 1712, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1892,10 +1909,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1698, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1698, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -1905,7 +1922,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1698, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1921,10 +1938,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1660, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1660, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -1934,7 +1951,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1660, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1944,7 +1961,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "arguments": [ { - "commentStart": 1728, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -1953,10 +1970,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1722, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1722, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -1966,7 +1983,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1722, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1977,14 +1994,14 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl { "type": "LabeledArg", "label": { - "commentStart": 1744, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1753, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -1999,10 +2016,10 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "callee": { "abs_path": false, - "commentStart": 1736, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1736, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -2012,7 +2029,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "start": 0, "type": "Name" }, - "commentStart": 1736, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2020,7 +2037,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "unlabeled": null } ], - "commentStart": 1495, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -2042,7 +2059,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl "nonCodeNodes": { "0": [ { - "commentStart": 368, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2055,7 +2072,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "1": [ { - "commentStart": 445, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2066,7 +2083,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl } }, { - "commentStart": 474, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2077,7 +2094,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "2": [ { - "commentStart": 577, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2090,7 +2107,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "3": [ { - "commentStart": 594, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2103,7 +2120,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "4": [ { - "commentStart": 610, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2116,7 +2133,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "5": [ { - "commentStart": 641, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2129,7 +2146,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "6": [ { - "commentStart": 665, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2142,7 +2159,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "7": [ { - "commentStart": 719, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2153,7 +2170,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl } }, { - "commentStart": 763, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2164,7 +2181,7 @@ description: Result of parsing sketch_on_face_after_fillets_referencing_face.kcl ], "10": [ { - "commentStart": 1481, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/input.kcl b/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/input.kcl index 803c8f605..2cd53685b 100644 --- a/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/input.kcl +++ b/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/input.kcl @@ -22,7 +22,7 @@ thickness = sqrt(6 * M * FOS / (width * sigmaAllow)) filletR = 0.25 // Sketch the bracket and extrude with fillets -bracket = startSketchOn('XY') +bracket = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line(end = [0, wallMountL], tag = $outerEdge) |> line(end = [-shelfMountL, 0], tag = $seg01) @@ -34,7 +34,7 @@ bracket = startSketchOn('XY') |> fillet(radius = filletR, tags = [getNextAdjacentEdge(innerEdge)]) |> fillet(radius = filletR + thickness, tags = [getNextAdjacentEdge(outerEdge)]) -sketch001 = startSketchOn(bracket, seg01) +sketch001 = startSketchOn(bracket, face = seg01) |> startProfileAt([4.28, 3.83], %) |> line(end = [2.17, -0.03]) |> line(end = [-0.07, -1.8]) diff --git a/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/ops.snap b/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/ops.snap index 6ac462fc4..18725f3a2 100644 --- a/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/ops.snap +++ b/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/ops.snap @@ -5,10 +5,10 @@ description: Operations executed sketch_on_face_after_fillets_referencing_face.k [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { - "type": "String", - "value": "XY" + "type": "Plane", + "artifact_id": "[uuid]" }, "sourceRange": [] } @@ -101,7 +101,13 @@ description: Operations executed sketch_on_face_after_fillets_referencing_face.k "type": "Number", "value": 0.5707134902949093, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -134,16 +140,7 @@ description: Operations executed sketch_on_face_after_fillets_referencing_face.k }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg01", @@ -155,7 +152,15 @@ description: Operations executed sketch_on_face_after_fillets_referencing_face.k "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/program_memory.snap b/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/program_memory.snap index cd85c05db..bedc4a2d3 100644 --- a/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/program_memory.snap +++ b/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/program_memory.snap @@ -33,7 +33,13 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "type": "Number", "value": 1800.0, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "bracket": { @@ -48,9 +54,9 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1081, - "end": 1091, - "start": 1081, + "commentStart": 1079, + "end": 1089, + "start": 1079, "type": "TagDeclarator", "value": "outerEdge" }, @@ -61,9 +67,9 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1134, - "end": 1140, - "start": 1134, + "commentStart": 1132, + "end": 1138, + "start": 1132, "type": "TagDeclarator", "value": "seg01" }, @@ -81,9 +87,9 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1227, - "end": 1237, - "start": 1227, + "commentStart": 1225, + "end": 1235, + "start": 1225, "type": "TagDeclarator", "value": "innerEdge" }, @@ -118,9 +124,9 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re 0.0 ], "tag": { - "commentStart": 1081, - "end": 1091, - "start": 1081, + "commentStart": 1079, + "end": 1089, + "start": 1079, "type": "TagDeclarator", "value": "outerEdge" }, @@ -143,9 +149,9 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re 6.0 ], "tag": { - "commentStart": 1134, - "end": 1140, - "start": 1134, + "commentStart": 1132, + "end": 1138, + "start": 1132, "type": "TagDeclarator", "value": "seg01" }, @@ -187,9 +193,9 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re 5.6793 ], "tag": { - "commentStart": 1227, - "end": 1237, - "start": 1227, + "commentStart": 1225, + "end": 1235, + "start": 1225, "type": "TagDeclarator", "value": "innerEdge" }, @@ -249,22 +255,34 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -315,14 +333,36 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re { "type": "fillet", "id": "[uuid]", - "radius": 0.25, + "radius": { + "n": 0.25, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5707134902949093, + "radius": { + "n": 0.5707134902949093, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -543,17 +583,26 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -565,9 +614,9 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1081, - "end": 1091, - "start": 1081, + "commentStart": 1079, + "end": 1089, + "start": 1079, "type": "TagDeclarator", "value": "outerEdge" }, @@ -578,9 +627,9 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1134, - "end": 1140, - "start": 1134, + "commentStart": 1132, + "end": 1138, + "start": 1132, "type": "TagDeclarator", "value": "seg01" }, @@ -598,9 +647,9 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 1227, - "end": 1237, - "start": 1227, + "commentStart": 1225, + "end": 1235, + "start": 1225, "type": "TagDeclarator", "value": "innerEdge" }, @@ -635,9 +684,9 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re 0.0 ], "tag": { - "commentStart": 1081, - "end": 1091, - "start": 1081, + "commentStart": 1079, + "end": 1089, + "start": 1079, "type": "TagDeclarator", "value": "outerEdge" }, @@ -660,9 +709,9 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re 6.0 ], "tag": { - "commentStart": 1134, - "end": 1140, - "start": 1134, + "commentStart": 1132, + "end": 1138, + "start": 1132, "type": "TagDeclarator", "value": "seg01" }, @@ -704,9 +753,9 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re 5.6793 ], "tag": { - "commentStart": 1227, - "end": 1237, - "start": 1227, + "commentStart": 1225, + "end": 1235, + "start": 1225, "type": "TagDeclarator", "value": "innerEdge" }, @@ -766,22 +815,34 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -832,14 +893,36 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re { "type": "fillet", "id": "[uuid]", - "radius": 0.25, + "radius": { + "n": 0.25, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null }, { "type": "fillet", "id": "[uuid]", - "radius": 0.5707134902949093, + "radius": { + "n": 0.5707134902949093, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, "edgeId": "[uuid]", "tag": null } @@ -888,7 +971,13 @@ description: Variables in memory after executing sketch_on_face_after_fillets_re "type": "Number", "value": 0.3207, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "wallMountL": { diff --git a/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/unparsed.snap b/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/unparsed.snap index ab9101f90..d10f473a5 100644 --- a/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/unparsed.snap +++ b/rust/kcl-lib/tests/sketch_on_face_after_fillets_referencing_face/unparsed.snap @@ -38,7 +38,7 @@ bracket = startSketchOn(XY) |> fillet(radius = filletR, tags = [getNextAdjacentEdge(innerEdge)]) |> fillet(radius = filletR + thickness, tags = [getNextAdjacentEdge(outerEdge)]) -sketch001 = startSketchOn(bracket, seg01) +sketch001 = startSketchOn(bracket, face = seg01) |> startProfileAt([4.28, 3.83], %) |> line(end = [2.17, -0.03]) |> line(end = [-0.07, -1.8]) diff --git a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/artifact_commands.snap b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/artifact_commands.snap index 75da18b40..53f1f530e 100644 --- a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/artifact_commands.snap +++ b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands sketch_on_face_circle_tagged.kcl "type": "extrude", "target": "[uuid]", "distance": 20.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -377,7 +378,8 @@ description: Artifact commands sketch_on_face_circle_tagged.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/artifact_graph_flowchart.snap.md index 4c36a063c..b56ebc39d 100644 --- a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/artifact_graph_flowchart.snap.md @@ -9,8 +9,8 @@ flowchart LR 7[Solid2d] end subgraph path23 [Path] - 23["Path
[298, 350, 0]"] - 24["Segment
[298, 350, 0]"] + 23["Path
[305, 357, 0]"] + 24["Segment
[305, 357, 0]"] 25[Solid2d] end 1["Plane
[29, 48, 0]"] @@ -29,13 +29,13 @@ flowchart LR 20["SweepEdge Adjacent"] 21["SweepEdge Opposite"] 22["SweepEdge Adjacent"] - 26["Sweep Extrusion
[356, 375, 0]"] + 26["Sweep Extrusion
[363, 382, 0]"] 27[Wall] 28["Cap Start"] 29["Cap End"] 30["SweepEdge Opposite"] 31["SweepEdge Adjacent"] - 32["StartSketchOnFace
[263, 292, 0]"] + 32["StartSketchOnFace
[263, 299, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ast.snap b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ast.snap index 7b2bc13ad..bd1ef93ae 100644 --- a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ast.snap +++ b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -21,12 +21,12 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "body": { "body": [ { - "commentStart": 24, + "commentStart": 0, "declaration": { - "commentStart": 24, + "commentStart": 0, "end": 0, "id": { - "commentStart": 24, + "commentStart": 0, "end": 0, "name": "sg", "start": 0, @@ -37,7 +37,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl { "arguments": [ { - "commentStart": 43, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -48,10 +48,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl ], "callee": { "abs_path": false, - "commentStart": 29, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -61,7 +61,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "start": 0, "type": "Name" }, - "commentStart": 29, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -71,10 +71,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "arguments": [ { "abs_path": false, - "commentStart": 71, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -86,7 +86,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "type": "Name" }, { - "commentStart": 76, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -95,10 +95,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl ], "callee": { "abs_path": false, - "commentStart": 56, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -108,7 +108,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "start": 0, "type": "Name" }, - "commentStart": 56, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -119,17 +119,17 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl { "type": "LabeledArg", "label": { - "commentStart": 91, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 97, + "commentStart": 0, "elements": [ { - "commentStart": 98, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -142,10 +142,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl }, { "abs_path": false, - "commentStart": 101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 101, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -166,10 +166,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl ], "callee": { "abs_path": false, - "commentStart": 86, + "commentStart": 0, "end": 0, "name": { - "commentStart": 86, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -179,7 +179,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "start": 0, "type": "Name" }, - "commentStart": 86, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -191,21 +191,21 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl { "type": "LabeledArg", "label": { - "commentStart": 121, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 127, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 128, + "commentStart": 0, "end": 0, "name": { - "commentStart": 128, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -217,7 +217,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "type": "Name" }, { - "commentStart": 135, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -238,10 +238,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl ], "callee": { "abs_path": false, - "commentStart": 116, + "commentStart": 0, "end": 0, "name": { - "commentStart": 116, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -251,7 +251,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "start": 0, "type": "Name" }, - "commentStart": 116, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -263,17 +263,17 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl { "type": "LabeledArg", "label": { - "commentStart": 151, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 157, + "commentStart": 0, "elements": [ { - "commentStart": 158, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -287,10 +287,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl { "argument": { "abs_path": false, - "commentStart": 162, + "commentStart": 0, "end": 0, "name": { - "commentStart": 162, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -301,7 +301,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "type": "Name", "type": "Name" }, - "commentStart": 161, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -318,10 +318,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl ], "callee": { "abs_path": false, - "commentStart": 146, + "commentStart": 0, "end": 0, "name": { - "commentStart": 146, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -331,7 +331,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "start": 0, "type": "Name" }, - "commentStart": 146, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -339,7 +339,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "unlabeled": null } ], - "commentStart": 29, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -357,10 +357,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl { "argument": { "abs_path": false, - "commentStart": 180, + "commentStart": 0, "end": 0, "name": { - "commentStart": 180, + "commentStart": 0, "end": 0, "name": "sg", "start": 0, @@ -371,20 +371,20 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "type": "Name", "type": "Name" }, - "commentStart": 169, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 20, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "0": [ { - "commentStart": 169, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -398,13 +398,13 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl }, "start": 0 }, - "commentStart": 7, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 8, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -414,7 +414,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl { "type": "Parameter", "identifier": { - "commentStart": 13, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -436,12 +436,12 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "type": "VariableDeclaration" }, { - "commentStart": 185, + "commentStart": 0, "declaration": { - "commentStart": 185, + "commentStart": 0, "end": 0, "id": { - "commentStart": 185, + "commentStart": 0, "end": 0, "name": "part001", "start": 0, @@ -452,10 +452,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl { "arguments": [ { - "commentStart": 200, + "commentStart": 0, "elements": [ { - "commentStart": 201, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -467,7 +467,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl } }, { - "commentStart": 204, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -485,7 +485,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "type": "ArrayExpression" }, { - "commentStart": 208, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -499,10 +499,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl ], "callee": { "abs_path": false, - "commentStart": 195, + "commentStart": 0, "end": 0, "name": { - "commentStart": 195, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -512,7 +512,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "start": 0, "type": "Name" }, - "commentStart": 195, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -521,7 +521,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl { "arguments": [ { - "commentStart": 223, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -530,10 +530,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl ], "callee": { "abs_path": false, - "commentStart": 217, + "commentStart": 0, "end": 0, "name": { - "commentStart": 217, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -543,7 +543,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "start": 0, "type": "Name" }, - "commentStart": 217, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -554,14 +554,14 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl { "type": "LabeledArg", "label": { - "commentStart": 239, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 248, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -576,10 +576,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl ], "callee": { "abs_path": false, - "commentStart": 231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 231, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -589,7 +589,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "start": 0, "type": "Name" }, - "commentStart": 231, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -597,7 +597,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "unlabeled": null } ], - "commentStart": 195, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -613,12 +613,12 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "type": "VariableDeclaration" }, { - "commentStart": 251, + "commentStart": 0, "declaration": { - "commentStart": 253, + "commentStart": 0, "end": 0, "id": { - "commentStart": 253, + "commentStart": 0, "end": 0, "name": "part002", "start": 0, @@ -629,37 +629,31 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 277, - "end": 0, - "name": { - "commentStart": 277, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "part001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 286, - "end": 0, - "raw": "\"end\"", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "end" + "arg": { + "commentStart": 0, + "end": 0, + "raw": "\"end\"", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "end" + } } ], "callee": { "abs_path": false, - "commentStart": 263, + "commentStart": 0, "end": 0, "name": { - "commentStart": 263, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -669,28 +663,44 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "start": 0, "type": "Name" }, - "commentStart": 263, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "part001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 305, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 314, + "commentStart": 0, "elements": [ { - "commentStart": 315, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -702,7 +712,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl } }, { - "commentStart": 318, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -723,14 +733,14 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl { "type": "LabeledArg", "label": { - "commentStart": 322, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 331, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -745,14 +755,14 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl { "type": "LabeledArg", "label": { - "commentStart": 334, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 340, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -763,10 +773,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl ], "callee": { "abs_path": false, - "commentStart": 298, + "commentStart": 0, "end": 0, "name": { - "commentStart": 298, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -776,7 +786,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "start": 0, "type": "Name" }, - "commentStart": 298, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -788,14 +798,14 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl { "type": "LabeledArg", "label": { - "commentStart": 364, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 373, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -810,10 +820,10 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl ], "callee": { "abs_path": false, - "commentStart": 356, + "commentStart": 0, "end": 0, "name": { - "commentStart": 356, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -823,7 +833,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "start": 0, "type": "Name" }, - "commentStart": 356, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -831,7 +841,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "unlabeled": null } ], - "commentStart": 263, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -853,7 +863,7 @@ description: Result of parsing sketch_on_face_circle_tagged.kcl "nonCodeNodes": { "1": [ { - "commentStart": 251, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/input.kcl b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/input.kcl index dd7e1427d..8f77a5568 100644 --- a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/input.kcl +++ b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/input.kcl @@ -11,6 +11,6 @@ part001 = cube([0, 0], 20) |> close(%) |> extrude(length = 20) -part002 = startSketchOn(part001, "end") +part002 = startSketchOn(part001, face = "end") |> circle(center = [0, 0], radius = 5, tag = $myCircle) |> extrude(length = 5) diff --git a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ops.snap b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ops.snap index 34022b5d4..cccd1da51 100644 --- a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ops.snap +++ b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/ops.snap @@ -20,7 +20,7 @@ description: Operations executed sketch_on_face_circle_tagged.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" @@ -70,16 +70,7 @@ description: Operations executed sketch_on_face_circle_tagged.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -90,7 +81,15 @@ description: Operations executed sketch_on_face_circle_tagged.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/program_memory.snap b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/program_memory.snap index e8cb422f6..bb4b9031d 100644 --- a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/program_memory.snap +++ b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/program_memory.snap @@ -136,22 +136,34 @@ description: Variables in memory after executing sketch_on_face_circle_tagged.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -201,9 +213,9 @@ description: Variables in memory after executing sketch_on_face_circle_tagged.kc "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 340, - "end": 349, - "start": 340, + "commentStart": 347, + "end": 356, + "start": 347, "type": "TagDeclarator", "value": "myCircle" }, @@ -230,9 +242,9 @@ description: Variables in memory after executing sketch_on_face_circle_tagged.kc ], "radius": 5.0, "tag": { - "commentStart": 340, - "end": 349, - "start": 340, + "commentStart": 347, + "end": 356, + "start": 347, "type": "TagDeclarator", "value": "myCircle" }, @@ -254,17 +266,26 @@ description: Variables in memory after executing sketch_on_face_circle_tagged.kc "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -389,22 +410,34 @@ description: Variables in memory after executing sketch_on_face_circle_tagged.kc "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/unparsed.snap b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/unparsed.snap index 681d35e42..07abe35a5 100644 --- a/rust/kcl-lib/tests/sketch_on_face_circle_tagged/unparsed.snap +++ b/rust/kcl-lib/tests/sketch_on_face_circle_tagged/unparsed.snap @@ -15,6 +15,6 @@ part001 = cube([0, 0], 20) |> close(%) |> extrude(length = 20) -part002 = startSketchOn(part001, "end") +part002 = startSketchOn(part001, face = END) |> circle(center = [0, 0], radius = 5, tag = $myCircle) |> extrude(length = 5) diff --git a/rust/kcl-lib/tests/sketch_on_face_end/artifact_commands.snap b/rust/kcl-lib/tests/sketch_on_face_end/artifact_commands.snap index a86e87380..9a79bca8a 100644 --- a/rust/kcl-lib/tests/sketch_on_face_end/artifact_commands.snap +++ b/rust/kcl-lib/tests/sketch_on_face_end/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands sketch_on_face_end.kcl "type": "extrude", "target": "[uuid]", "distance": 20.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -403,7 +404,8 @@ description: Artifact commands sketch_on_face_end.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/sketch_on_face_end/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/sketch_on_face_end/artifact_graph_flowchart.snap.md index 980c800db..d804536af 100644 --- a/rust/kcl-lib/tests/sketch_on_face_end/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/sketch_on_face_end/artifact_graph_flowchart.snap.md @@ -9,11 +9,11 @@ flowchart LR 7[Solid2d] end subgraph path23 [Path] - 23["Path
[298, 323, 0]"] - 24["Segment
[329, 348, 0]"] - 25["Segment
[354, 373, 0]"] - 26["Segment
[379, 399, 0]"] - 27["Segment
[405, 413, 0]"] + 23["Path
[305, 330, 0]"] + 24["Segment
[336, 355, 0]"] + 25["Segment
[361, 380, 0]"] + 26["Segment
[386, 406, 0]"] + 27["Segment
[412, 420, 0]"] 28[Solid2d] end 1["Plane
[29, 48, 0]"] @@ -32,7 +32,7 @@ flowchart LR 20["SweepEdge Adjacent"] 21["SweepEdge Opposite"] 22["SweepEdge Adjacent"] - 29["Sweep Extrusion
[419, 438, 0]"] + 29["Sweep Extrusion
[426, 445, 0]"] 30[Wall] 31[Wall] 32[Wall] @@ -47,7 +47,7 @@ flowchart LR 41["SweepEdge Adjacent"] 42["SweepEdge Opposite"] 43["SweepEdge Adjacent"] - 44["StartSketchOnFace
[263, 292, 0]"] + 44["StartSketchOnFace
[263, 299, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/sketch_on_face_end/ast.snap b/rust/kcl-lib/tests/sketch_on_face_end/ast.snap index 85153c80c..b8cef3cbc 100644 --- a/rust/kcl-lib/tests/sketch_on_face_end/ast.snap +++ b/rust/kcl-lib/tests/sketch_on_face_end/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing sketch_on_face_end.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -21,12 +21,12 @@ description: Result of parsing sketch_on_face_end.kcl "body": { "body": [ { - "commentStart": 24, + "commentStart": 0, "declaration": { - "commentStart": 24, + "commentStart": 0, "end": 0, "id": { - "commentStart": 24, + "commentStart": 0, "end": 0, "name": "sg", "start": 0, @@ -37,7 +37,7 @@ description: Result of parsing sketch_on_face_end.kcl { "arguments": [ { - "commentStart": 43, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -48,10 +48,10 @@ description: Result of parsing sketch_on_face_end.kcl ], "callee": { "abs_path": false, - "commentStart": 29, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -61,7 +61,7 @@ description: Result of parsing sketch_on_face_end.kcl "start": 0, "type": "Name" }, - "commentStart": 29, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -71,10 +71,10 @@ description: Result of parsing sketch_on_face_end.kcl "arguments": [ { "abs_path": false, - "commentStart": 71, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -86,7 +86,7 @@ description: Result of parsing sketch_on_face_end.kcl "type": "Name" }, { - "commentStart": 76, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -95,10 +95,10 @@ description: Result of parsing sketch_on_face_end.kcl ], "callee": { "abs_path": false, - "commentStart": 56, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -108,7 +108,7 @@ description: Result of parsing sketch_on_face_end.kcl "start": 0, "type": "Name" }, - "commentStart": 56, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -119,17 +119,17 @@ description: Result of parsing sketch_on_face_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 91, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 97, + "commentStart": 0, "elements": [ { - "commentStart": 98, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -142,10 +142,10 @@ description: Result of parsing sketch_on_face_end.kcl }, { "abs_path": false, - "commentStart": 101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 101, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -166,10 +166,10 @@ description: Result of parsing sketch_on_face_end.kcl ], "callee": { "abs_path": false, - "commentStart": 86, + "commentStart": 0, "end": 0, "name": { - "commentStart": 86, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -179,7 +179,7 @@ description: Result of parsing sketch_on_face_end.kcl "start": 0, "type": "Name" }, - "commentStart": 86, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -191,21 +191,21 @@ description: Result of parsing sketch_on_face_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 121, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 127, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 128, + "commentStart": 0, "end": 0, "name": { - "commentStart": 128, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -217,7 +217,7 @@ description: Result of parsing sketch_on_face_end.kcl "type": "Name" }, { - "commentStart": 135, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -238,10 +238,10 @@ description: Result of parsing sketch_on_face_end.kcl ], "callee": { "abs_path": false, - "commentStart": 116, + "commentStart": 0, "end": 0, "name": { - "commentStart": 116, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -251,7 +251,7 @@ description: Result of parsing sketch_on_face_end.kcl "start": 0, "type": "Name" }, - "commentStart": 116, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -263,17 +263,17 @@ description: Result of parsing sketch_on_face_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 151, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 157, + "commentStart": 0, "elements": [ { - "commentStart": 158, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -287,10 +287,10 @@ description: Result of parsing sketch_on_face_end.kcl { "argument": { "abs_path": false, - "commentStart": 162, + "commentStart": 0, "end": 0, "name": { - "commentStart": 162, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -301,7 +301,7 @@ description: Result of parsing sketch_on_face_end.kcl "type": "Name", "type": "Name" }, - "commentStart": 161, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -318,10 +318,10 @@ description: Result of parsing sketch_on_face_end.kcl ], "callee": { "abs_path": false, - "commentStart": 146, + "commentStart": 0, "end": 0, "name": { - "commentStart": 146, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -331,7 +331,7 @@ description: Result of parsing sketch_on_face_end.kcl "start": 0, "type": "Name" }, - "commentStart": 146, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -339,7 +339,7 @@ description: Result of parsing sketch_on_face_end.kcl "unlabeled": null } ], - "commentStart": 29, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -357,10 +357,10 @@ description: Result of parsing sketch_on_face_end.kcl { "argument": { "abs_path": false, - "commentStart": 180, + "commentStart": 0, "end": 0, "name": { - "commentStart": 180, + "commentStart": 0, "end": 0, "name": "sg", "start": 0, @@ -371,20 +371,20 @@ description: Result of parsing sketch_on_face_end.kcl "type": "Name", "type": "Name" }, - "commentStart": 169, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 20, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "0": [ { - "commentStart": 169, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -398,13 +398,13 @@ description: Result of parsing sketch_on_face_end.kcl }, "start": 0 }, - "commentStart": 7, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 8, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -414,7 +414,7 @@ description: Result of parsing sketch_on_face_end.kcl { "type": "Parameter", "identifier": { - "commentStart": 13, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -436,12 +436,12 @@ description: Result of parsing sketch_on_face_end.kcl "type": "VariableDeclaration" }, { - "commentStart": 185, + "commentStart": 0, "declaration": { - "commentStart": 185, + "commentStart": 0, "end": 0, "id": { - "commentStart": 185, + "commentStart": 0, "end": 0, "name": "part001", "start": 0, @@ -452,10 +452,10 @@ description: Result of parsing sketch_on_face_end.kcl { "arguments": [ { - "commentStart": 200, + "commentStart": 0, "elements": [ { - "commentStart": 201, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -467,7 +467,7 @@ description: Result of parsing sketch_on_face_end.kcl } }, { - "commentStart": 204, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -485,7 +485,7 @@ description: Result of parsing sketch_on_face_end.kcl "type": "ArrayExpression" }, { - "commentStart": 208, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -499,10 +499,10 @@ description: Result of parsing sketch_on_face_end.kcl ], "callee": { "abs_path": false, - "commentStart": 195, + "commentStart": 0, "end": 0, "name": { - "commentStart": 195, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -512,7 +512,7 @@ description: Result of parsing sketch_on_face_end.kcl "start": 0, "type": "Name" }, - "commentStart": 195, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -521,7 +521,7 @@ description: Result of parsing sketch_on_face_end.kcl { "arguments": [ { - "commentStart": 223, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -530,10 +530,10 @@ description: Result of parsing sketch_on_face_end.kcl ], "callee": { "abs_path": false, - "commentStart": 217, + "commentStart": 0, "end": 0, "name": { - "commentStart": 217, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -543,7 +543,7 @@ description: Result of parsing sketch_on_face_end.kcl "start": 0, "type": "Name" }, - "commentStart": 217, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -554,14 +554,14 @@ description: Result of parsing sketch_on_face_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 239, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 248, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -576,10 +576,10 @@ description: Result of parsing sketch_on_face_end.kcl ], "callee": { "abs_path": false, - "commentStart": 231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 231, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -589,7 +589,7 @@ description: Result of parsing sketch_on_face_end.kcl "start": 0, "type": "Name" }, - "commentStart": 231, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -597,7 +597,7 @@ description: Result of parsing sketch_on_face_end.kcl "unlabeled": null } ], - "commentStart": 195, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -613,12 +613,12 @@ description: Result of parsing sketch_on_face_end.kcl "type": "VariableDeclaration" }, { - "commentStart": 251, + "commentStart": 0, "declaration": { - "commentStart": 253, + "commentStart": 0, "end": 0, "id": { - "commentStart": 253, + "commentStart": 0, "end": 0, "name": "part002", "start": 0, @@ -629,37 +629,31 @@ description: Result of parsing sketch_on_face_end.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 277, - "end": 0, - "name": { - "commentStart": 277, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "part001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 286, - "end": 0, - "raw": "\"END\"", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "arg": { + "commentStart": 0, + "end": 0, + "raw": "\"END\"", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "END" + } } ], "callee": { "abs_path": false, - "commentStart": 263, + "commentStart": 0, "end": 0, "name": { - "commentStart": 263, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -669,19 +663,35 @@ description: Result of parsing sketch_on_face_end.kcl "start": 0, "type": "Name" }, - "commentStart": 263, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "part001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 313, + "commentStart": 0, "elements": [ { - "commentStart": 314, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -693,7 +703,7 @@ description: Result of parsing sketch_on_face_end.kcl } }, { - "commentStart": 317, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -711,7 +721,7 @@ description: Result of parsing sketch_on_face_end.kcl "type": "ArrayExpression" }, { - "commentStart": 321, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -720,10 +730,10 @@ description: Result of parsing sketch_on_face_end.kcl ], "callee": { "abs_path": false, - "commentStart": 298, + "commentStart": 0, "end": 0, "name": { - "commentStart": 298, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -733,7 +743,7 @@ description: Result of parsing sketch_on_face_end.kcl "start": 0, "type": "Name" }, - "commentStart": 298, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -744,17 +754,17 @@ description: Result of parsing sketch_on_face_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 334, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 340, + "commentStart": 0, "elements": [ { - "commentStart": 341, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -766,7 +776,7 @@ description: Result of parsing sketch_on_face_end.kcl } }, { - "commentStart": 344, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -787,10 +797,10 @@ description: Result of parsing sketch_on_face_end.kcl ], "callee": { "abs_path": false, - "commentStart": 329, + "commentStart": 0, "end": 0, "name": { - "commentStart": 329, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -800,7 +810,7 @@ description: Result of parsing sketch_on_face_end.kcl "start": 0, "type": "Name" }, - "commentStart": 329, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -812,17 +822,17 @@ description: Result of parsing sketch_on_face_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 359, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 365, + "commentStart": 0, "elements": [ { - "commentStart": 366, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -834,7 +844,7 @@ description: Result of parsing sketch_on_face_end.kcl } }, { - "commentStart": 370, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -855,10 +865,10 @@ description: Result of parsing sketch_on_face_end.kcl ], "callee": { "abs_path": false, - "commentStart": 354, + "commentStart": 0, "end": 0, "name": { - "commentStart": 354, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -868,7 +878,7 @@ description: Result of parsing sketch_on_face_end.kcl "start": 0, "type": "Name" }, - "commentStart": 354, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -880,17 +890,17 @@ description: Result of parsing sketch_on_face_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 384, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 390, + "commentStart": 0, "elements": [ { - "commentStart": 391, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -903,7 +913,7 @@ description: Result of parsing sketch_on_face_end.kcl }, { "argument": { - "commentStart": 395, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -914,7 +924,7 @@ description: Result of parsing sketch_on_face_end.kcl "suffix": "None" } }, - "commentStart": 394, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -931,10 +941,10 @@ description: Result of parsing sketch_on_face_end.kcl ], "callee": { "abs_path": false, - "commentStart": 379, + "commentStart": 0, "end": 0, "name": { - "commentStart": 379, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -944,7 +954,7 @@ description: Result of parsing sketch_on_face_end.kcl "start": 0, "type": "Name" }, - "commentStart": 379, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -954,7 +964,7 @@ description: Result of parsing sketch_on_face_end.kcl { "arguments": [ { - "commentStart": 411, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -963,10 +973,10 @@ description: Result of parsing sketch_on_face_end.kcl ], "callee": { "abs_path": false, - "commentStart": 405, + "commentStart": 0, "end": 0, "name": { - "commentStart": 405, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -976,7 +986,7 @@ description: Result of parsing sketch_on_face_end.kcl "start": 0, "type": "Name" }, - "commentStart": 405, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -987,14 +997,14 @@ description: Result of parsing sketch_on_face_end.kcl { "type": "LabeledArg", "label": { - "commentStart": 427, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 436, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -1009,10 +1019,10 @@ description: Result of parsing sketch_on_face_end.kcl ], "callee": { "abs_path": false, - "commentStart": 419, + "commentStart": 0, "end": 0, "name": { - "commentStart": 419, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1022,7 +1032,7 @@ description: Result of parsing sketch_on_face_end.kcl "start": 0, "type": "Name" }, - "commentStart": 419, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1030,7 +1040,7 @@ description: Result of parsing sketch_on_face_end.kcl "unlabeled": null } ], - "commentStart": 263, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1052,7 +1062,7 @@ description: Result of parsing sketch_on_face_end.kcl "nonCodeNodes": { "1": [ { - "commentStart": 251, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/sketch_on_face_end/input.kcl b/rust/kcl-lib/tests/sketch_on_face_end/input.kcl index 8cac5eb0c..3b0b6add6 100644 --- a/rust/kcl-lib/tests/sketch_on_face_end/input.kcl +++ b/rust/kcl-lib/tests/sketch_on_face_end/input.kcl @@ -11,7 +11,7 @@ part001 = cube([0, 0], 20) |> close(%) |> extrude(length = 20) -part002 = startSketchOn(part001, "END") +part002 = startSketchOn(part001, face = "END") |> startProfileAt([0, 0], %) |> line(end = [0, 10]) |> line(end = [10, 0]) diff --git a/rust/kcl-lib/tests/sketch_on_face_end/ops.snap b/rust/kcl-lib/tests/sketch_on_face_end/ops.snap index 861df19a9..cd0a9684e 100644 --- a/rust/kcl-lib/tests/sketch_on_face_end/ops.snap +++ b/rust/kcl-lib/tests/sketch_on_face_end/ops.snap @@ -20,7 +20,7 @@ description: Operations executed sketch_on_face_end.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" @@ -70,16 +70,7 @@ description: Operations executed sketch_on_face_end.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "END" @@ -90,7 +81,15 @@ description: Operations executed sketch_on_face_end.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/sketch_on_face_end/program_memory.snap b/rust/kcl-lib/tests/sketch_on_face_end/program_memory.snap index 98e0df61b..496c49ee5 100644 --- a/rust/kcl-lib/tests/sketch_on_face_end/program_memory.snap +++ b/rust/kcl-lib/tests/sketch_on_face_end/program_memory.snap @@ -131,22 +131,34 @@ description: Variables in memory after executing sketch_on_face_end.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -309,17 +321,26 @@ description: Variables in memory after executing sketch_on_face_end.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -444,22 +465,34 @@ description: Variables in memory after executing sketch_on_face_end.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/sketch_on_face_end/unparsed.snap b/rust/kcl-lib/tests/sketch_on_face_end/unparsed.snap index d5f655826..181740683 100644 --- a/rust/kcl-lib/tests/sketch_on_face_end/unparsed.snap +++ b/rust/kcl-lib/tests/sketch_on_face_end/unparsed.snap @@ -15,7 +15,7 @@ part001 = cube([0, 0], 20) |> close(%) |> extrude(length = 20) -part002 = startSketchOn(part001, "END") +part002 = startSketchOn(part001, face = END) |> startProfileAt([0, 0], %) |> line(end = [0, 10]) |> line(end = [10, 0]) diff --git a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/artifact_commands.snap b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/artifact_commands.snap index 9832f6e82..713f73b59 100644 --- a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/artifact_commands.snap +++ b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands sketch_on_face_end_negative_extrude.kcl "type": "extrude", "target": "[uuid]", "distance": 20.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -403,7 +404,8 @@ description: Artifact commands sketch_on_face_end_negative_extrude.kcl "type": "extrude", "target": "[uuid]", "distance": -5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/artifact_graph_flowchart.snap.md index 6edf4c78a..93c97330d 100644 --- a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/artifact_graph_flowchart.snap.md @@ -9,11 +9,11 @@ flowchart LR 7[Solid2d] end subgraph path23 [Path] - 23["Path
[298, 323, 0]"] - 24["Segment
[329, 348, 0]"] - 25["Segment
[354, 373, 0]"] - 26["Segment
[379, 399, 0]"] - 27["Segment
[405, 413, 0]"] + 23["Path
[305, 330, 0]"] + 24["Segment
[336, 355, 0]"] + 25["Segment
[361, 380, 0]"] + 26["Segment
[386, 406, 0]"] + 27["Segment
[412, 420, 0]"] 28[Solid2d] end 1["Plane
[29, 48, 0]"] @@ -32,7 +32,7 @@ flowchart LR 20["SweepEdge Adjacent"] 21["SweepEdge Opposite"] 22["SweepEdge Adjacent"] - 29["Sweep Extrusion
[419, 439, 0]"] + 29["Sweep Extrusion
[426, 446, 0]"] 30[Wall] 31[Wall] 32[Wall] @@ -47,7 +47,7 @@ flowchart LR 41["SweepEdge Adjacent"] 42["SweepEdge Opposite"] 43["SweepEdge Adjacent"] - 44["StartSketchOnFace
[263, 292, 0]"] + 44["StartSketchOnFace
[263, 299, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ast.snap b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ast.snap index 7d16d3f87..a7ee9184a 100644 --- a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ast.snap +++ b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -21,12 +21,12 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "body": { "body": [ { - "commentStart": 24, + "commentStart": 0, "declaration": { - "commentStart": 24, + "commentStart": 0, "end": 0, "id": { - "commentStart": 24, + "commentStart": 0, "end": 0, "name": "sg", "start": 0, @@ -37,7 +37,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "arguments": [ { - "commentStart": 43, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -48,10 +48,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl ], "callee": { "abs_path": false, - "commentStart": 29, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -61,7 +61,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "start": 0, "type": "Name" }, - "commentStart": 29, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -71,10 +71,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "arguments": [ { "abs_path": false, - "commentStart": 71, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -86,7 +86,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "type": "Name" }, { - "commentStart": 76, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -95,10 +95,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl ], "callee": { "abs_path": false, - "commentStart": 56, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -108,7 +108,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "start": 0, "type": "Name" }, - "commentStart": 56, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -119,17 +119,17 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "type": "LabeledArg", "label": { - "commentStart": 91, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 97, + "commentStart": 0, "elements": [ { - "commentStart": 98, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -142,10 +142,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl }, { "abs_path": false, - "commentStart": 101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 101, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -166,10 +166,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl ], "callee": { "abs_path": false, - "commentStart": 86, + "commentStart": 0, "end": 0, "name": { - "commentStart": 86, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -179,7 +179,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "start": 0, "type": "Name" }, - "commentStart": 86, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -191,21 +191,21 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "type": "LabeledArg", "label": { - "commentStart": 121, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 127, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 128, + "commentStart": 0, "end": 0, "name": { - "commentStart": 128, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -217,7 +217,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "type": "Name" }, { - "commentStart": 135, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -238,10 +238,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl ], "callee": { "abs_path": false, - "commentStart": 116, + "commentStart": 0, "end": 0, "name": { - "commentStart": 116, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -251,7 +251,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "start": 0, "type": "Name" }, - "commentStart": 116, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -263,17 +263,17 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "type": "LabeledArg", "label": { - "commentStart": 151, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 157, + "commentStart": 0, "elements": [ { - "commentStart": 158, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -287,10 +287,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "argument": { "abs_path": false, - "commentStart": 162, + "commentStart": 0, "end": 0, "name": { - "commentStart": 162, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -301,7 +301,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "type": "Name", "type": "Name" }, - "commentStart": 161, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -318,10 +318,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl ], "callee": { "abs_path": false, - "commentStart": 146, + "commentStart": 0, "end": 0, "name": { - "commentStart": 146, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -331,7 +331,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "start": 0, "type": "Name" }, - "commentStart": 146, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -339,7 +339,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "unlabeled": null } ], - "commentStart": 29, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -357,10 +357,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "argument": { "abs_path": false, - "commentStart": 180, + "commentStart": 0, "end": 0, "name": { - "commentStart": 180, + "commentStart": 0, "end": 0, "name": "sg", "start": 0, @@ -371,20 +371,20 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "type": "Name", "type": "Name" }, - "commentStart": 169, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 20, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "0": [ { - "commentStart": 169, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -398,13 +398,13 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl }, "start": 0 }, - "commentStart": 7, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 8, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -414,7 +414,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "type": "Parameter", "identifier": { - "commentStart": 13, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -436,12 +436,12 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "type": "VariableDeclaration" }, { - "commentStart": 185, + "commentStart": 0, "declaration": { - "commentStart": 185, + "commentStart": 0, "end": 0, "id": { - "commentStart": 185, + "commentStart": 0, "end": 0, "name": "part001", "start": 0, @@ -452,10 +452,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "arguments": [ { - "commentStart": 200, + "commentStart": 0, "elements": [ { - "commentStart": 201, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -467,7 +467,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl } }, { - "commentStart": 204, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -485,7 +485,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "type": "ArrayExpression" }, { - "commentStart": 208, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -499,10 +499,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl ], "callee": { "abs_path": false, - "commentStart": 195, + "commentStart": 0, "end": 0, "name": { - "commentStart": 195, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -512,7 +512,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "start": 0, "type": "Name" }, - "commentStart": 195, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -521,7 +521,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "arguments": [ { - "commentStart": 223, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -530,10 +530,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl ], "callee": { "abs_path": false, - "commentStart": 217, + "commentStart": 0, "end": 0, "name": { - "commentStart": 217, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -543,7 +543,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "start": 0, "type": "Name" }, - "commentStart": 217, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -554,14 +554,14 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "type": "LabeledArg", "label": { - "commentStart": 239, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 248, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -576,10 +576,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl ], "callee": { "abs_path": false, - "commentStart": 231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 231, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -589,7 +589,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "start": 0, "type": "Name" }, - "commentStart": 231, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -597,7 +597,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "unlabeled": null } ], - "commentStart": 195, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -613,12 +613,12 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "type": "VariableDeclaration" }, { - "commentStart": 251, + "commentStart": 0, "declaration": { - "commentStart": 253, + "commentStart": 0, "end": 0, "id": { - "commentStart": 253, + "commentStart": 0, "end": 0, "name": "part002", "start": 0, @@ -629,37 +629,31 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 277, - "end": 0, - "name": { - "commentStart": 277, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "part001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 286, - "end": 0, - "raw": "\"END\"", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "END" + "arg": { + "commentStart": 0, + "end": 0, + "raw": "\"END\"", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "END" + } } ], "callee": { "abs_path": false, - "commentStart": 263, + "commentStart": 0, "end": 0, "name": { - "commentStart": 263, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -669,19 +663,35 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "start": 0, "type": "Name" }, - "commentStart": 263, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "part001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 313, + "commentStart": 0, "elements": [ { - "commentStart": 314, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -693,7 +703,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl } }, { - "commentStart": 317, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -711,7 +721,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "type": "ArrayExpression" }, { - "commentStart": 321, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -720,10 +730,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl ], "callee": { "abs_path": false, - "commentStart": 298, + "commentStart": 0, "end": 0, "name": { - "commentStart": 298, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -733,7 +743,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "start": 0, "type": "Name" }, - "commentStart": 298, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -744,17 +754,17 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "type": "LabeledArg", "label": { - "commentStart": 334, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 340, + "commentStart": 0, "elements": [ { - "commentStart": 341, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -766,7 +776,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl } }, { - "commentStart": 344, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -787,10 +797,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl ], "callee": { "abs_path": false, - "commentStart": 329, + "commentStart": 0, "end": 0, "name": { - "commentStart": 329, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -800,7 +810,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "start": 0, "type": "Name" }, - "commentStart": 329, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -812,17 +822,17 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "type": "LabeledArg", "label": { - "commentStart": 359, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 365, + "commentStart": 0, "elements": [ { - "commentStart": 366, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -834,7 +844,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl } }, { - "commentStart": 370, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -855,10 +865,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl ], "callee": { "abs_path": false, - "commentStart": 354, + "commentStart": 0, "end": 0, "name": { - "commentStart": 354, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -868,7 +878,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "start": 0, "type": "Name" }, - "commentStart": 354, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -880,17 +890,17 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "type": "LabeledArg", "label": { - "commentStart": 384, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 390, + "commentStart": 0, "elements": [ { - "commentStart": 391, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -903,7 +913,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl }, { "argument": { - "commentStart": 395, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -914,7 +924,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "suffix": "None" } }, - "commentStart": 394, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -931,10 +941,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl ], "callee": { "abs_path": false, - "commentStart": 379, + "commentStart": 0, "end": 0, "name": { - "commentStart": 379, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -944,7 +954,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "start": 0, "type": "Name" }, - "commentStart": 379, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -954,7 +964,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "arguments": [ { - "commentStart": 411, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -963,10 +973,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl ], "callee": { "abs_path": false, - "commentStart": 405, + "commentStart": 0, "end": 0, "name": { - "commentStart": 405, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -976,7 +986,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "start": 0, "type": "Name" }, - "commentStart": 405, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -987,7 +997,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl { "type": "LabeledArg", "label": { - "commentStart": 427, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -995,7 +1005,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl }, "arg": { "argument": { - "commentStart": 437, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -1006,7 +1016,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "suffix": "None" } }, - "commentStart": 436, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1017,10 +1027,10 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl ], "callee": { "abs_path": false, - "commentStart": 419, + "commentStart": 0, "end": 0, "name": { - "commentStart": 419, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1030,7 +1040,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "start": 0, "type": "Name" }, - "commentStart": 419, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1038,7 +1048,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "unlabeled": null } ], - "commentStart": 263, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1060,7 +1070,7 @@ description: Result of parsing sketch_on_face_end_negative_extrude.kcl "nonCodeNodes": { "1": [ { - "commentStart": 251, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/input.kcl b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/input.kcl index 210f81f22..9d0ca7f69 100644 --- a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/input.kcl +++ b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/input.kcl @@ -11,7 +11,7 @@ part001 = cube([0, 0], 20) |> close(%) |> extrude(length = 20) -part002 = startSketchOn(part001, "END") +part002 = startSketchOn(part001, face = "END") |> startProfileAt([0, 0], %) |> line(end = [0, 10]) |> line(end = [10, 0]) diff --git a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ops.snap b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ops.snap index c22cd7de5..c177f9906 100644 --- a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ops.snap +++ b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/ops.snap @@ -20,7 +20,7 @@ description: Operations executed sketch_on_face_end_negative_extrude.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" @@ -70,16 +70,7 @@ description: Operations executed sketch_on_face_end_negative_extrude.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "END" @@ -90,7 +81,15 @@ description: Operations executed sketch_on_face_end_negative_extrude.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/program_memory.snap b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/program_memory.snap index 5b066daf8..2d6f8c8df 100644 --- a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/program_memory.snap +++ b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/program_memory.snap @@ -131,22 +131,34 @@ description: Variables in memory after executing sketch_on_face_end_negative_ext "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -309,17 +321,26 @@ description: Variables in memory after executing sketch_on_face_end_negative_ext "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -444,22 +465,34 @@ description: Variables in memory after executing sketch_on_face_end_negative_ext "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/unparsed.snap b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/unparsed.snap index c92c89d30..e6a4bb093 100644 --- a/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/unparsed.snap +++ b/rust/kcl-lib/tests/sketch_on_face_end_negative_extrude/unparsed.snap @@ -15,7 +15,7 @@ part001 = cube([0, 0], 20) |> close(%) |> extrude(length = 20) -part002 = startSketchOn(part001, "END") +part002 = startSketchOn(part001, face = END) |> startProfileAt([0, 0], %) |> line(end = [0, 10]) |> line(end = [10, 0]) diff --git a/rust/kcl-lib/tests/sketch_on_face_start/artifact_commands.snap b/rust/kcl-lib/tests/sketch_on_face_start/artifact_commands.snap index ba5108432..ef6b0bf75 100644 --- a/rust/kcl-lib/tests/sketch_on_face_start/artifact_commands.snap +++ b/rust/kcl-lib/tests/sketch_on_face_start/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands sketch_on_face_start.kcl "type": "extrude", "target": "[uuid]", "distance": 20.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -403,7 +404,8 @@ description: Artifact commands sketch_on_face_start.kcl "type": "extrude", "target": "[uuid]", "distance": 5.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/sketch_on_face_start/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/sketch_on_face_start/artifact_graph_flowchart.snap.md index 4f7d16174..9a2d230e9 100644 --- a/rust/kcl-lib/tests/sketch_on_face_start/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/sketch_on_face_start/artifact_graph_flowchart.snap.md @@ -1,23 +1,23 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[56, 78, 0]"] - 3["Segment
[86, 108, 0]"] - 4["Segment
[116, 138, 0]"] - 5["Segment
[146, 169, 0]"] - 6["Segment
[217, 225, 0]"] + 2["Path
[54, 76, 0]"] + 3["Segment
[84, 106, 0]"] + 4["Segment
[114, 136, 0]"] + 5["Segment
[144, 167, 0]"] + 6["Segment
[215, 223, 0]"] 7[Solid2d] end subgraph path23 [Path] - 23["Path
[303, 328, 0]"] - 24["Segment
[334, 353, 0]"] - 25["Segment
[359, 378, 0]"] - 26["Segment
[384, 404, 0]"] - 27["Segment
[410, 418, 0]"] + 23["Path
[308, 333, 0]"] + 24["Segment
[339, 358, 0]"] + 25["Segment
[364, 383, 0]"] + 26["Segment
[389, 409, 0]"] + 27["Segment
[415, 423, 0]"] 28[Solid2d] end - 1["Plane
[29, 48, 0]"] - 8["Sweep Extrusion
[231, 251, 0]"] + 1["Plane
[29, 46, 0]"] + 8["Sweep Extrusion
[229, 249, 0]"] 9[Wall] 10[Wall] 11[Wall] @@ -32,7 +32,7 @@ flowchart LR 20["SweepEdge Adjacent"] 21["SweepEdge Opposite"] 22["SweepEdge Adjacent"] - 29["Sweep Extrusion
[424, 443, 0]"] + 29["Sweep Extrusion
[429, 448, 0]"] 30[Wall] 31[Wall] 32[Wall] @@ -47,7 +47,7 @@ flowchart LR 41["SweepEdge Adjacent"] 42["SweepEdge Opposite"] 43["SweepEdge Adjacent"] - 44["StartSketchOnFace
[270, 297, 0]"] + 44["StartSketchOnFace
[268, 302, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/sketch_on_face_start/ast.snap b/rust/kcl-lib/tests/sketch_on_face_start/ast.snap index 667daa7b1..38b368fa0 100644 --- a/rust/kcl-lib/tests/sketch_on_face_start/ast.snap +++ b/rust/kcl-lib/tests/sketch_on_face_start/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing sketch_on_face_start.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -21,12 +21,12 @@ description: Result of parsing sketch_on_face_start.kcl "body": { "body": [ { - "commentStart": 24, + "commentStart": 0, "declaration": { - "commentStart": 24, + "commentStart": 0, "end": 0, "id": { - "commentStart": 24, + "commentStart": 0, "end": 0, "name": "sg", "start": 0, @@ -37,21 +37,28 @@ description: Result of parsing sketch_on_face_start.kcl { "arguments": [ { - "commentStart": 43, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'XY'", + "name": { + "commentStart": 0, + "end": 0, + "name": "XY", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "XY" + "type": "Name", + "type": "Name" } ], "callee": { "abs_path": false, - "commentStart": 29, + "commentStart": 0, "end": 0, "name": { - "commentStart": 29, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -61,7 +68,7 @@ description: Result of parsing sketch_on_face_start.kcl "start": 0, "type": "Name" }, - "commentStart": 29, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -71,10 +78,10 @@ description: Result of parsing sketch_on_face_start.kcl "arguments": [ { "abs_path": false, - "commentStart": 71, + "commentStart": 0, "end": 0, "name": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -86,7 +93,7 @@ description: Result of parsing sketch_on_face_start.kcl "type": "Name" }, { - "commentStart": 76, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -95,10 +102,10 @@ description: Result of parsing sketch_on_face_start.kcl ], "callee": { "abs_path": false, - "commentStart": 56, + "commentStart": 0, "end": 0, "name": { - "commentStart": 56, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -108,7 +115,7 @@ description: Result of parsing sketch_on_face_start.kcl "start": 0, "type": "Name" }, - "commentStart": 56, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -119,17 +126,17 @@ description: Result of parsing sketch_on_face_start.kcl { "type": "LabeledArg", "label": { - "commentStart": 91, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 97, + "commentStart": 0, "elements": [ { - "commentStart": 98, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -142,10 +149,10 @@ description: Result of parsing sketch_on_face_start.kcl }, { "abs_path": false, - "commentStart": 101, + "commentStart": 0, "end": 0, "name": { - "commentStart": 101, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -166,10 +173,10 @@ description: Result of parsing sketch_on_face_start.kcl ], "callee": { "abs_path": false, - "commentStart": 86, + "commentStart": 0, "end": 0, "name": { - "commentStart": 86, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -179,7 +186,7 @@ description: Result of parsing sketch_on_face_start.kcl "start": 0, "type": "Name" }, - "commentStart": 86, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -191,21 +198,21 @@ description: Result of parsing sketch_on_face_start.kcl { "type": "LabeledArg", "label": { - "commentStart": 121, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 127, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 128, + "commentStart": 0, "end": 0, "name": { - "commentStart": 128, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -217,7 +224,7 @@ description: Result of parsing sketch_on_face_start.kcl "type": "Name" }, { - "commentStart": 135, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -238,10 +245,10 @@ description: Result of parsing sketch_on_face_start.kcl ], "callee": { "abs_path": false, - "commentStart": 116, + "commentStart": 0, "end": 0, "name": { - "commentStart": 116, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -251,7 +258,7 @@ description: Result of parsing sketch_on_face_start.kcl "start": 0, "type": "Name" }, - "commentStart": 116, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -263,17 +270,17 @@ description: Result of parsing sketch_on_face_start.kcl { "type": "LabeledArg", "label": { - "commentStart": 151, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 157, + "commentStart": 0, "elements": [ { - "commentStart": 158, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -287,10 +294,10 @@ description: Result of parsing sketch_on_face_start.kcl { "argument": { "abs_path": false, - "commentStart": 162, + "commentStart": 0, "end": 0, "name": { - "commentStart": 162, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -301,7 +308,7 @@ description: Result of parsing sketch_on_face_start.kcl "type": "Name", "type": "Name" }, - "commentStart": 161, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -318,10 +325,10 @@ description: Result of parsing sketch_on_face_start.kcl ], "callee": { "abs_path": false, - "commentStart": 146, + "commentStart": 0, "end": 0, "name": { - "commentStart": 146, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -331,7 +338,7 @@ description: Result of parsing sketch_on_face_start.kcl "start": 0, "type": "Name" }, - "commentStart": 146, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -339,7 +346,7 @@ description: Result of parsing sketch_on_face_start.kcl "unlabeled": null } ], - "commentStart": 29, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -357,10 +364,10 @@ description: Result of parsing sketch_on_face_start.kcl { "argument": { "abs_path": false, - "commentStart": 180, + "commentStart": 0, "end": 0, "name": { - "commentStart": 180, + "commentStart": 0, "end": 0, "name": "sg", "start": 0, @@ -371,20 +378,20 @@ description: Result of parsing sketch_on_face_start.kcl "type": "Name", "type": "Name" }, - "commentStart": 169, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 20, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "0": [ { - "commentStart": 169, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -398,13 +405,13 @@ description: Result of parsing sketch_on_face_start.kcl }, "start": 0 }, - "commentStart": 7, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 8, + "commentStart": 0, "end": 0, "name": "pos", "start": 0, @@ -414,7 +421,7 @@ description: Result of parsing sketch_on_face_start.kcl { "type": "Parameter", "identifier": { - "commentStart": 13, + "commentStart": 0, "end": 0, "name": "scale", "start": 0, @@ -436,12 +443,12 @@ description: Result of parsing sketch_on_face_start.kcl "type": "VariableDeclaration" }, { - "commentStart": 185, + "commentStart": 0, "declaration": { - "commentStart": 185, + "commentStart": 0, "end": 0, "id": { - "commentStart": 185, + "commentStart": 0, "end": 0, "name": "part001", "start": 0, @@ -452,10 +459,10 @@ description: Result of parsing sketch_on_face_start.kcl { "arguments": [ { - "commentStart": 200, + "commentStart": 0, "elements": [ { - "commentStart": 201, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -467,7 +474,7 @@ description: Result of parsing sketch_on_face_start.kcl } }, { - "commentStart": 204, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -485,7 +492,7 @@ description: Result of parsing sketch_on_face_start.kcl "type": "ArrayExpression" }, { - "commentStart": 208, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -499,10 +506,10 @@ description: Result of parsing sketch_on_face_start.kcl ], "callee": { "abs_path": false, - "commentStart": 195, + "commentStart": 0, "end": 0, "name": { - "commentStart": 195, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -512,7 +519,7 @@ description: Result of parsing sketch_on_face_start.kcl "start": 0, "type": "Name" }, - "commentStart": 195, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -521,7 +528,7 @@ description: Result of parsing sketch_on_face_start.kcl { "arguments": [ { - "commentStart": 223, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -530,10 +537,10 @@ description: Result of parsing sketch_on_face_start.kcl ], "callee": { "abs_path": false, - "commentStart": 217, + "commentStart": 0, "end": 0, "name": { - "commentStart": 217, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -543,28 +550,28 @@ description: Result of parsing sketch_on_face_start.kcl "start": 0, "type": "Name" }, - "commentStart": 217, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" }, { - "commentStart": 231, + "commentStart": 0, "end": 0, "expr": { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 239, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 248, + "commentStart": 0, "end": 0, "raw": "20", "start": 0, @@ -579,10 +586,10 @@ description: Result of parsing sketch_on_face_start.kcl ], "callee": { "abs_path": false, - "commentStart": 231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 231, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -592,7 +599,7 @@ description: Result of parsing sketch_on_face_start.kcl "start": 0, "type": "Name" }, - "commentStart": 231, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -600,7 +607,7 @@ description: Result of parsing sketch_on_face_start.kcl "unlabeled": null }, "label": { - "commentStart": 255, + "commentStart": 0, "end": 0, "name": "foo", "start": 0, @@ -611,7 +618,7 @@ description: Result of parsing sketch_on_face_start.kcl "type": "LabelledExpression" } ], - "commentStart": 195, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -627,12 +634,12 @@ description: Result of parsing sketch_on_face_start.kcl "type": "VariableDeclaration" }, { - "commentStart": 258, + "commentStart": 0, "declaration": { - "commentStart": 260, + "commentStart": 0, "end": 0, "id": { - "commentStart": 260, + "commentStart": 0, "end": 0, "name": "part002", "start": 0, @@ -643,37 +650,31 @@ description: Result of parsing sketch_on_face_start.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 284, - "end": 0, - "name": { - "commentStart": 284, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "foo", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 289, - "end": 0, - "raw": "\"start\"", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "start" + "arg": { + "commentStart": 0, + "end": 0, + "raw": "\"start\"", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "start" + } } ], "callee": { "abs_path": false, - "commentStart": 270, + "commentStart": 0, "end": 0, "name": { - "commentStart": 270, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -683,19 +684,35 @@ description: Result of parsing sketch_on_face_start.kcl "start": 0, "type": "Name" }, - "commentStart": 270, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "foo", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 318, + "commentStart": 0, "elements": [ { - "commentStart": 319, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -707,7 +724,7 @@ description: Result of parsing sketch_on_face_start.kcl } }, { - "commentStart": 322, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -725,7 +742,7 @@ description: Result of parsing sketch_on_face_start.kcl "type": "ArrayExpression" }, { - "commentStart": 326, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -734,10 +751,10 @@ description: Result of parsing sketch_on_face_start.kcl ], "callee": { "abs_path": false, - "commentStart": 303, + "commentStart": 0, "end": 0, "name": { - "commentStart": 303, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -747,7 +764,7 @@ description: Result of parsing sketch_on_face_start.kcl "start": 0, "type": "Name" }, - "commentStart": 303, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -758,17 +775,17 @@ description: Result of parsing sketch_on_face_start.kcl { "type": "LabeledArg", "label": { - "commentStart": 339, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 345, + "commentStart": 0, "elements": [ { - "commentStart": 346, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -780,7 +797,7 @@ description: Result of parsing sketch_on_face_start.kcl } }, { - "commentStart": 349, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -801,10 +818,10 @@ description: Result of parsing sketch_on_face_start.kcl ], "callee": { "abs_path": false, - "commentStart": 334, + "commentStart": 0, "end": 0, "name": { - "commentStart": 334, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -814,7 +831,7 @@ description: Result of parsing sketch_on_face_start.kcl "start": 0, "type": "Name" }, - "commentStart": 334, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -826,17 +843,17 @@ description: Result of parsing sketch_on_face_start.kcl { "type": "LabeledArg", "label": { - "commentStart": 364, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 370, + "commentStart": 0, "elements": [ { - "commentStart": 371, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -848,7 +865,7 @@ description: Result of parsing sketch_on_face_start.kcl } }, { - "commentStart": 375, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -869,10 +886,10 @@ description: Result of parsing sketch_on_face_start.kcl ], "callee": { "abs_path": false, - "commentStart": 359, + "commentStart": 0, "end": 0, "name": { - "commentStart": 359, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -882,7 +899,7 @@ description: Result of parsing sketch_on_face_start.kcl "start": 0, "type": "Name" }, - "commentStart": 359, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -894,17 +911,17 @@ description: Result of parsing sketch_on_face_start.kcl { "type": "LabeledArg", "label": { - "commentStart": 389, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 395, + "commentStart": 0, "elements": [ { - "commentStart": 396, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -917,7 +934,7 @@ description: Result of parsing sketch_on_face_start.kcl }, { "argument": { - "commentStart": 400, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -928,7 +945,7 @@ description: Result of parsing sketch_on_face_start.kcl "suffix": "None" } }, - "commentStart": 399, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -945,10 +962,10 @@ description: Result of parsing sketch_on_face_start.kcl ], "callee": { "abs_path": false, - "commentStart": 384, + "commentStart": 0, "end": 0, "name": { - "commentStart": 384, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -958,7 +975,7 @@ description: Result of parsing sketch_on_face_start.kcl "start": 0, "type": "Name" }, - "commentStart": 384, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -968,7 +985,7 @@ description: Result of parsing sketch_on_face_start.kcl { "arguments": [ { - "commentStart": 416, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -977,10 +994,10 @@ description: Result of parsing sketch_on_face_start.kcl ], "callee": { "abs_path": false, - "commentStart": 410, + "commentStart": 0, "end": 0, "name": { - "commentStart": 410, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -990,7 +1007,7 @@ description: Result of parsing sketch_on_face_start.kcl "start": 0, "type": "Name" }, - "commentStart": 410, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1001,14 +1018,14 @@ description: Result of parsing sketch_on_face_start.kcl { "type": "LabeledArg", "label": { - "commentStart": 432, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 441, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -1023,10 +1040,10 @@ description: Result of parsing sketch_on_face_start.kcl ], "callee": { "abs_path": false, - "commentStart": 424, + "commentStart": 0, "end": 0, "name": { - "commentStart": 424, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1036,7 +1053,7 @@ description: Result of parsing sketch_on_face_start.kcl "start": 0, "type": "Name" }, - "commentStart": 424, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1044,7 +1061,7 @@ description: Result of parsing sketch_on_face_start.kcl "unlabeled": null } ], - "commentStart": 270, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1066,7 +1083,7 @@ description: Result of parsing sketch_on_face_start.kcl "nonCodeNodes": { "1": [ { - "commentStart": 258, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/sketch_on_face_start/input.kcl b/rust/kcl-lib/tests/sketch_on_face_start/input.kcl index 27997b240..6023775e9 100644 --- a/rust/kcl-lib/tests/sketch_on_face_start/input.kcl +++ b/rust/kcl-lib/tests/sketch_on_face_start/input.kcl @@ -1,5 +1,5 @@ fn cube(pos, scale) { - sg = startSketchOn('XY') + sg = startSketchOn(XY) |> startProfileAt(pos, %) |> line(end = [0, scale]) |> line(end = [scale, 0]) @@ -11,7 +11,7 @@ part001 = cube([0, 0], 20) |> close(%) |> extrude(length = 20) as foo -part002 = startSketchOn(foo, "start") +part002 = startSketchOn(foo, face = "start") |> startProfileAt([0, 0], %) |> line(end = [0, 10]) |> line(end = [10, 0]) diff --git a/rust/kcl-lib/tests/sketch_on_face_start/ops.snap b/rust/kcl-lib/tests/sketch_on_face_start/ops.snap index d36a28eb9..f8965773c 100644 --- a/rust/kcl-lib/tests/sketch_on_face_start/ops.snap +++ b/rust/kcl-lib/tests/sketch_on_face_start/ops.snap @@ -10,7 +10,7 @@ description: Operations executed sketch_on_face_start.kcl "name": "cube", "functionSourceRange": [ 7, - 184, + 182, 0 ], "unlabeledArg": null, @@ -20,10 +20,10 @@ description: Operations executed sketch_on_face_start.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { - "type": "String", - "value": "XY" + "type": "Plane", + "artifact_id": "[uuid]" }, "sourceRange": [] } @@ -70,16 +70,7 @@ description: Operations executed sketch_on_face_start.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -90,7 +81,15 @@ description: Operations executed sketch_on_face_start.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/sketch_on_face_start/program_memory.snap b/rust/kcl-lib/tests/sketch_on_face_start/program_memory.snap index 2ee2dea7d..2630b017b 100644 --- a/rust/kcl-lib/tests/sketch_on_face_start/program_memory.snap +++ b/rust/kcl-lib/tests/sketch_on_face_start/program_memory.snap @@ -131,22 +131,34 @@ description: Variables in memory after executing sketch_on_face_start.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -309,22 +321,34 @@ description: Variables in memory after executing sketch_on_face_start.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -487,17 +511,26 @@ description: Variables in memory after executing sketch_on_face_start.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -622,22 +655,34 @@ description: Variables in memory after executing sketch_on_face_start.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/sketch_on_face_start/unparsed.snap b/rust/kcl-lib/tests/sketch_on_face_start/unparsed.snap index c08390a4f..40c68d3b9 100644 --- a/rust/kcl-lib/tests/sketch_on_face_start/unparsed.snap +++ b/rust/kcl-lib/tests/sketch_on_face_start/unparsed.snap @@ -15,7 +15,7 @@ part001 = cube([0, 0], 20) |> close(%) |> extrude(length = 20) as foo -part002 = startSketchOn(foo, "start") +part002 = startSketchOn(foo, face = START) |> startProfileAt([0, 0], %) |> line(end = [0, 10]) |> line(end = [10, 0]) diff --git a/rust/kcl-lib/tests/ssi_pattern/artifact_commands.snap b/rust/kcl-lib/tests/ssi_pattern/artifact_commands.snap index 4d3ca26ce..810e4d72b 100644 --- a/rust/kcl-lib/tests/ssi_pattern/artifact_commands.snap +++ b/rust/kcl-lib/tests/ssi_pattern/artifact_commands.snap @@ -213,7 +213,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": 50.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1338,7 +1339,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1404,7 +1406,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1470,7 +1473,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1536,7 +1540,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1602,7 +1607,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1668,7 +1674,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1734,7 +1741,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1800,7 +1808,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1866,7 +1875,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1932,7 +1942,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -1998,7 +2009,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2064,7 +2076,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2130,7 +2143,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2196,7 +2210,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2262,7 +2277,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2328,7 +2344,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2394,7 +2411,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2460,7 +2478,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2526,7 +2545,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2592,7 +2612,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2658,7 +2679,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2724,7 +2746,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2790,7 +2813,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2856,7 +2880,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2922,7 +2947,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -2988,7 +3014,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3054,7 +3081,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3120,7 +3148,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3186,7 +3215,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -3252,7 +3282,8 @@ description: Artifact commands ssi_pattern.kcl "type": "extrude", "target": "[uuid]", "distance": -40.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/ssi_pattern/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/ssi_pattern/artifact_graph_flowchart.snap.md index 2512c43fd..f47536ba6 100644 --- a/rust/kcl-lib/tests/ssi_pattern/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/ssi_pattern/artifact_graph_flowchart.snap.md @@ -4,19 +4,19 @@ flowchart LR 2["Path
[37, 71, 0]"] 3["Segment
[77, 97, 0]"] 4["Segment
[103, 128, 0]"] - 5["Segment
[134, 167, 0]"] - 6["Segment
[173, 195, 0]"] - 7["Segment
[201, 271, 0]"] - 8["Segment
[277, 284, 0]"] + 5["Segment
[134, 176, 0]"] + 6["Segment
[182, 204, 0]"] + 7["Segment
[210, 280, 0]"] + 8["Segment
[286, 293, 0]"] 9[Solid2d] end subgraph path28 [Path] - 28["Path
[382, 426, 0]"] - 29["Segment
[382, 426, 0]"] + 28["Path
[398, 442, 0]"] + 29["Segment
[398, 442, 0]"] 30[Solid2d] end 1["Plane
[12, 31, 0]"] - 10["Sweep Extrusion
[299, 330, 0]"] + 10["Sweep Extrusion
[308, 339, 0]"] 11[Wall] 12[Wall] 13[Wall] @@ -34,40 +34,40 @@ flowchart LR 25["SweepEdge Adjacent"] 26["SweepEdge Opposite"] 27["SweepEdge Adjacent"] - 31["Sweep Extrusion
[616, 637, 0]"] + 31["Sweep Extrusion
[632, 653, 0]"] 32[Wall] 33["SweepEdge Opposite"] 34["SweepEdge Adjacent"] - 35["Sweep Extrusion
[616, 637, 0]"] - 36["Sweep Extrusion
[616, 637, 0]"] - 37["Sweep Extrusion
[616, 637, 0]"] - 38["Sweep Extrusion
[616, 637, 0]"] - 39["Sweep Extrusion
[616, 637, 0]"] - 40["Sweep Extrusion
[616, 637, 0]"] - 41["Sweep Extrusion
[616, 637, 0]"] - 42["Sweep Extrusion
[616, 637, 0]"] - 43["Sweep Extrusion
[616, 637, 0]"] - 44["Sweep Extrusion
[616, 637, 0]"] - 45["Sweep Extrusion
[616, 637, 0]"] - 46["Sweep Extrusion
[616, 637, 0]"] - 47["Sweep Extrusion
[616, 637, 0]"] - 48["Sweep Extrusion
[616, 637, 0]"] - 49["Sweep Extrusion
[616, 637, 0]"] - 50["Sweep Extrusion
[616, 637, 0]"] - 51["Sweep Extrusion
[616, 637, 0]"] - 52["Sweep Extrusion
[616, 637, 0]"] - 53["Sweep Extrusion
[616, 637, 0]"] - 54["Sweep Extrusion
[616, 637, 0]"] - 55["Sweep Extrusion
[616, 637, 0]"] - 56["Sweep Extrusion
[616, 637, 0]"] - 57["Sweep Extrusion
[616, 637, 0]"] - 58["Sweep Extrusion
[616, 637, 0]"] - 59["Sweep Extrusion
[616, 637, 0]"] - 60["Sweep Extrusion
[616, 637, 0]"] - 61["Sweep Extrusion
[616, 637, 0]"] - 62["Sweep Extrusion
[616, 637, 0]"] - 63["Sweep Extrusion
[616, 637, 0]"] - 64["StartSketchOnFace
[344, 376, 0]"] + 35["Sweep Extrusion
[632, 653, 0]"] + 36["Sweep Extrusion
[632, 653, 0]"] + 37["Sweep Extrusion
[632, 653, 0]"] + 38["Sweep Extrusion
[632, 653, 0]"] + 39["Sweep Extrusion
[632, 653, 0]"] + 40["Sweep Extrusion
[632, 653, 0]"] + 41["Sweep Extrusion
[632, 653, 0]"] + 42["Sweep Extrusion
[632, 653, 0]"] + 43["Sweep Extrusion
[632, 653, 0]"] + 44["Sweep Extrusion
[632, 653, 0]"] + 45["Sweep Extrusion
[632, 653, 0]"] + 46["Sweep Extrusion
[632, 653, 0]"] + 47["Sweep Extrusion
[632, 653, 0]"] + 48["Sweep Extrusion
[632, 653, 0]"] + 49["Sweep Extrusion
[632, 653, 0]"] + 50["Sweep Extrusion
[632, 653, 0]"] + 51["Sweep Extrusion
[632, 653, 0]"] + 52["Sweep Extrusion
[632, 653, 0]"] + 53["Sweep Extrusion
[632, 653, 0]"] + 54["Sweep Extrusion
[632, 653, 0]"] + 55["Sweep Extrusion
[632, 653, 0]"] + 56["Sweep Extrusion
[632, 653, 0]"] + 57["Sweep Extrusion
[632, 653, 0]"] + 58["Sweep Extrusion
[632, 653, 0]"] + 59["Sweep Extrusion
[632, 653, 0]"] + 60["Sweep Extrusion
[632, 653, 0]"] + 61["Sweep Extrusion
[632, 653, 0]"] + 62["Sweep Extrusion
[632, 653, 0]"] + 63["Sweep Extrusion
[632, 653, 0]"] + 64["StartSketchOnFace
[353, 392, 0]"] 1 --- 2 2 --- 3 2 --- 4 diff --git a/rust/kcl-lib/tests/ssi_pattern/ast.snap b/rust/kcl-lib/tests/ssi_pattern/ast.snap index 42e585f58..cc8789a3f 100644 --- a/rust/kcl-lib/tests/ssi_pattern/ast.snap +++ b/rust/kcl-lib/tests/ssi_pattern/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing ssi_pattern.kcl { "arguments": [ { - "commentStart": 26, + "commentStart": 0, "end": 0, "raw": "'XZ'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing ssi_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 12, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,11 +55,11 @@ description: Result of parsing ssi_pattern.kcl { "arguments": [ { - "commentStart": 52, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 54, + "commentStart": 0, "end": 0, "raw": "4.35", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing ssi_pattern.kcl "suffix": "None" } }, - "commentStart": 53, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -79,7 +79,7 @@ description: Result of parsing ssi_pattern.kcl }, { "argument": { - "commentStart": 61, + "commentStart": 0, "end": 0, "raw": "12.26", "start": 0, @@ -90,7 +90,7 @@ description: Result of parsing ssi_pattern.kcl "suffix": "None" } }, - "commentStart": 60, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -104,7 +104,7 @@ description: Result of parsing ssi_pattern.kcl "type": "ArrayExpression" }, { - "commentStart": 69, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -113,10 +113,10 @@ description: Result of parsing ssi_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 37, + "commentStart": 0, "end": 0, "name": { - "commentStart": 37, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -126,7 +126,7 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 37, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -137,14 +137,14 @@ description: Result of parsing ssi_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 83, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 92, + "commentStart": 0, "end": 0, "raw": "10.2", "start": 0, @@ -159,10 +159,10 @@ description: Result of parsing ssi_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 77, + "commentStart": 0, "end": 0, "name": { - "commentStart": 77, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -172,7 +172,7 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 77, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -184,17 +184,17 @@ description: Result of parsing ssi_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 108, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 114, + "commentStart": 0, "elements": [ { - "commentStart": 115, + "commentStart": 0, "end": 0, "raw": "0.54", "start": 0, @@ -207,7 +207,7 @@ description: Result of parsing ssi_pattern.kcl }, { "argument": { - "commentStart": 122, + "commentStart": 0, "end": 0, "raw": "0.03", "start": 0, @@ -218,7 +218,7 @@ description: Result of parsing ssi_pattern.kcl "suffix": "None" } }, - "commentStart": 121, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -235,10 +235,10 @@ description: Result of parsing ssi_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 103, + "commentStart": 0, "end": 0, "name": { - "commentStart": 103, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -248,7 +248,7 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 103, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -258,54 +258,57 @@ description: Result of parsing ssi_pattern.kcl { "arguments": [ { - "commentStart": 150, - "elements": [ - { - "commentStart": 151, - "end": 0, - "raw": "20.4", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 20.4, - "suffix": "None" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "20.4", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 20.4, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "14.61", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 14.61, + "suffix": "None" + } } - }, - { - "commentStart": 157, - "end": 0, - "raw": "14.61", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 14.61, - "suffix": "None" - } - } - ], - "end": 0, - "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" - }, - { - "commentStart": 165, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } } ], "callee": { "abs_path": false, - "commentStart": 134, + "commentStart": 0, "end": 0, "name": { - "commentStart": 134, + "commentStart": 0, "end": 0, - "name": "tangentialArcTo", + "name": "tangentialArc", "start": 0, "type": "Identifier" }, @@ -313,18 +316,19 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 134, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 179, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -332,7 +336,7 @@ description: Result of parsing ssi_pattern.kcl }, "arg": { "argument": { - "commentStart": 189, + "commentStart": 0, "end": 0, "raw": "26.76", "start": 0, @@ -343,7 +347,7 @@ description: Result of parsing ssi_pattern.kcl "suffix": "None" } }, - "commentStart": 188, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -354,10 +358,10 @@ description: Result of parsing ssi_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 173, + "commentStart": 0, "end": 0, "name": { - "commentStart": 173, + "commentStart": 0, "end": 0, "name": "yLine", "start": 0, @@ -367,7 +371,7 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 173, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -379,19 +383,19 @@ description: Result of parsing ssi_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 206, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 220, + "commentStart": 0, "elements": [ { "arguments": [ { - "commentStart": 235, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -400,10 +404,10 @@ description: Result of parsing ssi_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 221, + "commentStart": 0, "end": 0, "name": { - "commentStart": 221, + "commentStart": 0, "end": 0, "name": "profileStartX", "start": 0, @@ -413,7 +417,7 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 221, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -422,7 +426,7 @@ description: Result of parsing ssi_pattern.kcl { "arguments": [ { - "commentStart": 253, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -431,10 +435,10 @@ description: Result of parsing ssi_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 239, + "commentStart": 0, "end": 0, "name": { - "commentStart": 239, + "commentStart": 0, "end": 0, "name": "profileStartY", "start": 0, @@ -444,7 +448,7 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 239, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -460,14 +464,14 @@ description: Result of parsing ssi_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 258, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 264, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -478,10 +482,10 @@ description: Result of parsing ssi_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 201, + "commentStart": 0, "end": 0, "name": { - "commentStart": 201, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -491,7 +495,7 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 201, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -502,10 +506,10 @@ description: Result of parsing ssi_pattern.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 277, + "commentStart": 0, "end": 0, "name": { - "commentStart": 277, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -515,14 +519,14 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 277, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", "type": "CallExpression" } ], - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -538,12 +542,12 @@ description: Result of parsing ssi_pattern.kcl "type": "VariableDeclaration" }, { - "commentStart": 284, + "commentStart": 0, "declaration": { - "commentStart": 286, + "commentStart": 0, "end": 0, "id": { - "commentStart": 286, + "commentStart": 0, "end": 0, "name": "extrude001", "start": 0, @@ -554,14 +558,14 @@ description: Result of parsing ssi_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 318, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 327, + "commentStart": 0, "end": 0, "raw": "50", "start": 0, @@ -576,10 +580,10 @@ description: Result of parsing ssi_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 299, + "commentStart": 0, "end": 0, "name": { - "commentStart": 299, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -589,17 +593,17 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 299, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "abs_path": false, - "commentStart": 307, + "commentStart": 0, "end": 0, "name": { - "commentStart": 307, + "commentStart": 0, "end": 0, "name": "sketch001", "start": 0, @@ -621,12 +625,12 @@ description: Result of parsing ssi_pattern.kcl "type": "VariableDeclaration" }, { - "commentStart": 330, + "commentStart": 0, "declaration": { - "commentStart": 332, + "commentStart": 0, "end": 0, "id": { - "commentStart": 332, + "commentStart": 0, "end": 0, "name": "sketch002", "start": 0, @@ -637,44 +641,38 @@ description: Result of parsing ssi_pattern.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 358, - "end": 0, - "name": { - "commentStart": 358, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "extrude001", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "abs_path": false, - "commentStart": 370, - "end": 0, - "name": { - "commentStart": 370, + "arg": { + "abs_path": false, + "commentStart": 0, "end": 0, - "name": "seg01", + "name": { + "commentStart": 0, + "end": 0, + "name": "seg01", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" + "type": "Name", + "type": "Name" + } } ], "callee": { "abs_path": false, - "commentStart": 344, + "commentStart": 0, "end": 0, "name": { - "commentStart": 344, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -684,29 +682,45 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 344, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 389, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 398, + "commentStart": 0, "elements": [ { "argument": { - "commentStart": 400, + "commentStart": 0, "end": 0, "raw": "2.08", "start": 0, @@ -717,7 +731,7 @@ description: Result of parsing ssi_pattern.kcl "suffix": "None" } }, - "commentStart": 399, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -725,7 +739,7 @@ description: Result of parsing ssi_pattern.kcl "type": "UnaryExpression" }, { - "commentStart": 406, + "commentStart": 0, "end": 0, "raw": "47.7", "start": 0, @@ -746,14 +760,14 @@ description: Result of parsing ssi_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 413, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 422, + "commentStart": 0, "end": 0, "raw": "1.4", "start": 0, @@ -768,10 +782,10 @@ description: Result of parsing ssi_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 382, + "commentStart": 0, "end": 0, "name": { - "commentStart": 382, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -781,7 +795,7 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 382, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -793,14 +807,14 @@ description: Result of parsing ssi_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 448, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 460, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -815,14 +829,14 @@ description: Result of parsing ssi_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 463, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 474, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -837,17 +851,17 @@ description: Result of parsing ssi_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 477, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 484, + "commentStart": 0, "elements": [ { - "commentStart": 485, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -859,7 +873,7 @@ description: Result of parsing ssi_pattern.kcl } }, { - "commentStart": 488, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -880,10 +894,10 @@ description: Result of parsing ssi_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 432, + "commentStart": 0, "end": 0, "name": { - "commentStart": 432, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -893,7 +907,7 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 432, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -905,14 +919,14 @@ description: Result of parsing ssi_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 566, + "commentStart": 0, "end": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 578, + "commentStart": 0, "end": 0, "raw": "6", "start": 0, @@ -927,14 +941,14 @@ description: Result of parsing ssi_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 581, + "commentStart": 0, "end": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 592, + "commentStart": 0, "end": 0, "raw": "4", "start": 0, @@ -949,17 +963,17 @@ description: Result of parsing ssi_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 595, + "commentStart": 0, "end": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 602, + "commentStart": 0, "elements": [ { - "commentStart": 603, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -972,7 +986,7 @@ description: Result of parsing ssi_pattern.kcl }, { "argument": { - "commentStart": 607, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -983,7 +997,7 @@ description: Result of parsing ssi_pattern.kcl "suffix": "None" } }, - "commentStart": 606, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1000,10 +1014,10 @@ description: Result of parsing ssi_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 550, + "commentStart": 0, "end": 0, "name": { - "commentStart": 550, + "commentStart": 0, "end": 0, "name": "patternLinear2d", "start": 0, @@ -1013,7 +1027,7 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 550, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1025,7 +1039,7 @@ description: Result of parsing ssi_pattern.kcl { "type": "LabeledArg", "label": { - "commentStart": 624, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1033,7 +1047,7 @@ description: Result of parsing ssi_pattern.kcl }, "arg": { "argument": { - "commentStart": 634, + "commentStart": 0, "end": 0, "raw": "40", "start": 0, @@ -1044,7 +1058,7 @@ description: Result of parsing ssi_pattern.kcl "suffix": "None" } }, - "commentStart": 633, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1055,10 +1069,10 @@ description: Result of parsing ssi_pattern.kcl ], "callee": { "abs_path": false, - "commentStart": 616, + "commentStart": 0, "end": 0, "name": { - "commentStart": 616, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1068,7 +1082,7 @@ description: Result of parsing ssi_pattern.kcl "start": 0, "type": "Name" }, - "commentStart": 616, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1076,13 +1090,13 @@ description: Result of parsing ssi_pattern.kcl "unlabeled": null } ], - "commentStart": 344, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "commentStart": 493, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1116,7 +1130,7 @@ description: Result of parsing ssi_pattern.kcl "nonCodeNodes": { "0": [ { - "commentStart": 284, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1127,7 +1141,7 @@ description: Result of parsing ssi_pattern.kcl ], "1": [ { - "commentStart": 330, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/ssi_pattern/input.kcl b/rust/kcl-lib/tests/ssi_pattern/input.kcl index f03508c12..ee46ae9f4 100644 --- a/rust/kcl-lib/tests/ssi_pattern/input.kcl +++ b/rust/kcl-lib/tests/ssi_pattern/input.kcl @@ -2,14 +2,14 @@ sketch001 = startSketchOn('XZ') |> startProfileAt([-4.35, -12.26], %) |> yLine(length = 10.2) |> line(end = [0.54, -0.03]) - |> tangentialArcTo([20.4, 14.61], %) + |> tangentialArc(endAbsolute = [20.4, 14.61]) |> yLine(length = -26.76) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg01) |> close() extrude001 = extrude(sketch001, length = 50) -sketch002 = startSketchOn(extrude001, seg01) +sketch002 = startSketchOn(extrude001, face = seg01) |> circle(center = [-2.08, 47.7], radius = 1.4) |> patternLinear2d(instances = 5, distance = 5, axis = [1, 0]) // Instances was reduced from 12 to speed this up. diff --git a/rust/kcl-lib/tests/ssi_pattern/ops.snap b/rust/kcl-lib/tests/ssi_pattern/ops.snap index db8b4181a..083ec46d2 100644 --- a/rust/kcl-lib/tests/ssi_pattern/ops.snap +++ b/rust/kcl-lib/tests/ssi_pattern/ops.snap @@ -5,7 +5,7 @@ description: Operations executed ssi_pattern.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XZ" @@ -52,16 +52,7 @@ description: Operations executed ssi_pattern.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "TagIdentifier", "value": "seg01", @@ -73,7 +64,15 @@ description: Operations executed ssi_pattern.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/ssi_pattern/program_memory.snap b/rust/kcl-lib/tests/ssi_pattern/program_memory.snap index f388be277..eaa769487 100644 --- a/rust/kcl-lib/tests/ssi_pattern/program_memory.snap +++ b/rust/kcl-lib/tests/ssi_pattern/program_memory.snap @@ -43,9 +43,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -147,9 +147,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -190,22 +190,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -351,9 +363,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -394,22 +406,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -502,17 +526,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -552,9 +585,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -656,9 +689,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -699,22 +732,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -846,17 +891,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -896,9 +950,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -1000,9 +1054,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -1043,22 +1097,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1190,17 +1256,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1240,9 +1315,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -1344,9 +1419,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -1387,22 +1462,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1534,17 +1621,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1584,9 +1680,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -1688,9 +1784,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -1731,22 +1827,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -1878,17 +1986,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -1928,9 +2045,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -2032,9 +2149,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -2075,22 +2192,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2222,17 +2351,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2272,9 +2410,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -2376,9 +2514,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -2419,22 +2557,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2566,17 +2716,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2616,9 +2775,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -2720,9 +2879,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -2763,22 +2922,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -2910,17 +3081,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -2960,9 +3140,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -3064,9 +3244,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -3107,22 +3287,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3254,17 +3446,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3304,9 +3505,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -3408,9 +3609,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -3451,22 +3652,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3598,17 +3811,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3648,9 +3870,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -3752,9 +3974,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -3795,22 +4017,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -3942,17 +4176,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -3992,9 +4235,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -4096,9 +4339,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -4139,22 +4382,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4286,17 +4541,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -4336,9 +4600,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -4440,9 +4704,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -4483,22 +4747,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4630,17 +4906,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -4680,9 +4965,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -4784,9 +5069,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -4827,22 +5112,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -4974,17 +5271,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -5024,9 +5330,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -5128,9 +5434,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -5171,22 +5477,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5318,17 +5636,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -5368,9 +5695,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -5472,9 +5799,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -5515,22 +5842,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -5662,17 +6001,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -5712,9 +6060,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -5816,9 +6164,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -5859,22 +6207,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6006,17 +6366,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -6056,9 +6425,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -6160,9 +6529,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -6203,22 +6572,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6350,17 +6731,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -6400,9 +6790,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -6504,9 +6894,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -6547,22 +6937,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -6694,17 +7096,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -6744,9 +7155,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -6848,9 +7259,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -6891,22 +7302,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7038,17 +7461,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -7088,9 +7520,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -7192,9 +7624,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -7235,22 +7667,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7382,17 +7826,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -7432,9 +7885,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -7536,9 +7989,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -7579,22 +8032,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -7726,17 +8191,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -7776,9 +8250,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -7880,9 +8354,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -7923,22 +8397,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8070,17 +8556,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -8120,9 +8615,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -8224,9 +8719,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -8267,22 +8762,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8414,17 +8921,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -8464,9 +8980,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -8568,9 +9084,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -8611,22 +9127,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -8758,17 +9286,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -8808,9 +9345,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -8912,9 +9449,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -8955,22 +9492,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9102,17 +9651,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -9152,9 +9710,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -9256,9 +9814,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -9299,22 +9857,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9446,17 +10016,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -9496,9 +10075,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -9600,9 +10179,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -9643,22 +10222,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -9790,17 +10381,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -9840,9 +10440,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -9944,9 +10544,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -9987,22 +10587,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10134,17 +10746,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -10184,9 +10805,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -10288,9 +10909,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -10331,22 +10952,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -10478,17 +11111,26 @@ description: Variables in memory after executing ssi_pattern.kcl "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "solid": { "type": "Solid", @@ -10528,9 +11170,9 @@ description: Variables in memory after executing ssi_pattern.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -10632,9 +11274,9 @@ description: Variables in memory after executing ssi_pattern.kcl -12.15 ], "tag": { - "commentStart": 264, - "end": 270, - "start": 264, + "commentStart": 273, + "end": 279, + "start": 273, "type": "TagDeclarator", "value": "seg01" }, @@ -10675,22 +11317,34 @@ description: Variables in memory after executing ssi_pattern.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/ssi_pattern/unparsed.snap b/rust/kcl-lib/tests/ssi_pattern/unparsed.snap index e3384349a..137fd5dc4 100644 --- a/rust/kcl-lib/tests/ssi_pattern/unparsed.snap +++ b/rust/kcl-lib/tests/ssi_pattern/unparsed.snap @@ -6,14 +6,14 @@ sketch001 = startSketchOn(XZ) |> startProfileAt([-4.35, -12.26], %) |> yLine(length = 10.2) |> line(end = [0.54, -0.03]) - |> tangentialArcTo([20.4, 14.61], %) + |> tangentialArc(endAbsolute = [20.4, 14.61]) |> yLine(length = -26.76) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg01) |> close() extrude001 = extrude(sketch001, length = 50) -sketch002 = startSketchOn(extrude001, seg01) +sketch002 = startSketchOn(extrude001, face = seg01) |> circle(center = [-2.08, 47.7], radius = 1.4) |> patternLinear2d(instances = 5, distance = 5, axis = [1, 0]) // Instances was reduced from 12 to speed this up. diff --git a/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_commands.snap b/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_commands.snap index 86815f4f1..92b6e18cb 100644 --- a/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_commands.snap +++ b/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_commands.snap @@ -179,7 +179,8 @@ description: Artifact commands subtract_cylinder_from_cube.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -341,8 +342,8 @@ description: Artifact commands subtract_cylinder_from_cube.kcl "type": "move_path_pen", "path": "[uuid]", "to": { - "x": 2.0, - "y": 0.0, + "x": 4.0, + "y": 2.0, "z": 0.0 } } @@ -363,8 +364,8 @@ description: Artifact commands subtract_cylinder_from_cube.kcl "segment": { "type": "arc", "center": { - "x": 0.0, - "y": 0.0 + "x": 2.0, + "y": 2.0 }, "radius": 2.0, "start": { @@ -409,8 +410,9 @@ description: Artifact commands subtract_cylinder_from_cube.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": 10.0, - "faces": null + "distance": 5.0, + "faces": null, + "opposite": "None" } }, { @@ -456,5 +458,19 @@ description: Artifact commands subtract_cylinder_from_cube.kcl "edge_id": "[uuid]", "face_id": "[uuid]" } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "boolean_subtract", + "target_ids": [ + "[uuid]" + ], + "tool_ids": [ + "[uuid]" + ], + "tolerance": 0.0000001 + } } ] diff --git a/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_graph_flowchart.snap.md index aa72e4dfc..2ca151fde 100644 --- a/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/subtract_cylinder_from_cube/artifact_graph_flowchart.snap.md @@ -30,7 +30,7 @@ flowchart LR 21["SweepEdge Opposite"] 22["SweepEdge Adjacent"] 23["Plane
[363, 382, 0]"] - 27["Sweep Extrusion
[429, 449, 0]"] + 27["Sweep Extrusion
[429, 448, 0]"] 28[Wall] 29["Cap Start"] 30["Cap End"] diff --git a/rust/kcl-lib/tests/subtract_cylinder_from_cube/ast.snap b/rust/kcl-lib/tests/subtract_cylinder_from_cube/ast.snap index 676f5d799..91d3262ad 100644 --- a/rust/kcl-lib/tests/subtract_cylinder_from_cube/ast.snap +++ b/rust/kcl-lib/tests/subtract_cylinder_from_cube/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing subtract_cylinder_from_cube.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -27,10 +27,10 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "arguments": [ { "abs_path": false, - "commentStart": 41, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -44,10 +44,10 @@ description: Result of parsing subtract_cylinder_from_cube.kcl ], "callee": { "abs_path": false, - "commentStart": 27, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -57,7 +57,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "start": 0, "type": "Name" }, - "commentStart": 27, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -66,17 +66,17 @@ description: Result of parsing subtract_cylinder_from_cube.kcl { "arguments": [ { - "commentStart": 67, + "commentStart": 0, "elements": [ { - "commentStart": 68, + "commentStart": 0, "end": 0, "left": { - "commentStart": 68, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 68, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -84,7 +84,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "Identifier" }, "property": { - "commentStart": 75, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -101,7 +101,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl }, "operator": "-", "right": { - "commentStart": 80, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -117,14 +117,14 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "BinaryExpression" }, { - "commentStart": 84, + "commentStart": 0, "end": 0, "left": { - "commentStart": 84, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 84, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -132,7 +132,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "Identifier" }, "property": { - "commentStart": 91, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -149,7 +149,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl }, "operator": "-", "right": { - "commentStart": 96, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -171,7 +171,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "ArrayExpression" }, { - "commentStart": 101, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -180,10 +180,10 @@ description: Result of parsing subtract_cylinder_from_cube.kcl ], "callee": { "abs_path": false, - "commentStart": 52, + "commentStart": 0, "end": 0, "name": { - "commentStart": 52, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -193,7 +193,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "start": 0, "type": "Name" }, - "commentStart": 52, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -204,24 +204,24 @@ description: Result of parsing subtract_cylinder_from_cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 116, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 130, + "commentStart": 0, "elements": [ { - "commentStart": 131, + "commentStart": 0, "end": 0, "left": { - "commentStart": 131, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 131, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -229,7 +229,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "Identifier" }, "property": { - "commentStart": 138, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -246,7 +246,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl }, "operator": "+", "right": { - "commentStart": 143, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -262,14 +262,14 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "BinaryExpression" }, { - "commentStart": 147, + "commentStart": 0, "end": 0, "left": { - "commentStart": 147, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 147, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -277,7 +277,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "Identifier" }, "property": { - "commentStart": 154, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -294,7 +294,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl }, "operator": "-", "right": { - "commentStart": 159, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -319,10 +319,10 @@ description: Result of parsing subtract_cylinder_from_cube.kcl ], "callee": { "abs_path": false, - "commentStart": 111, + "commentStart": 0, "end": 0, "name": { - "commentStart": 111, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -332,7 +332,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "start": 0, "type": "Name" }, - "commentStart": 111, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -344,24 +344,24 @@ description: Result of parsing subtract_cylinder_from_cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 176, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 190, + "commentStart": 0, "elements": [ { - "commentStart": 191, + "commentStart": 0, "end": 0, "left": { - "commentStart": 191, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 191, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -369,7 +369,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "Identifier" }, "property": { - "commentStart": 198, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -386,7 +386,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl }, "operator": "+", "right": { - "commentStart": 203, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -402,14 +402,14 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "BinaryExpression" }, { - "commentStart": 207, + "commentStart": 0, "end": 0, "left": { - "commentStart": 207, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 207, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -417,7 +417,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "Identifier" }, "property": { - "commentStart": 214, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -434,7 +434,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl }, "operator": "+", "right": { - "commentStart": 219, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -459,10 +459,10 @@ description: Result of parsing subtract_cylinder_from_cube.kcl ], "callee": { "abs_path": false, - "commentStart": 171, + "commentStart": 0, "end": 0, "name": { - "commentStart": 171, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -472,7 +472,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "start": 0, "type": "Name" }, - "commentStart": 171, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -484,24 +484,24 @@ description: Result of parsing subtract_cylinder_from_cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 236, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 250, + "commentStart": 0, "elements": [ { - "commentStart": 251, + "commentStart": 0, "end": 0, "left": { - "commentStart": 251, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 251, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -509,7 +509,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "Identifier" }, "property": { - "commentStart": 258, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -526,7 +526,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl }, "operator": "-", "right": { - "commentStart": 263, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -542,14 +542,14 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "BinaryExpression" }, { - "commentStart": 267, + "commentStart": 0, "end": 0, "left": { - "commentStart": 267, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 267, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -557,7 +557,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "Identifier" }, "property": { - "commentStart": 274, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -574,7 +574,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl }, "operator": "+", "right": { - "commentStart": 279, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -599,10 +599,10 @@ description: Result of parsing subtract_cylinder_from_cube.kcl ], "callee": { "abs_path": false, - "commentStart": 231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 231, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -612,7 +612,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "start": 0, "type": "Name" }, - "commentStart": 231, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -623,10 +623,10 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 291, + "commentStart": 0, "end": 0, "name": { - "commentStart": 291, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -636,7 +636,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "start": 0, "type": "Name" }, - "commentStart": 291, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -647,14 +647,14 @@ description: Result of parsing subtract_cylinder_from_cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 314, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 323, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -669,10 +669,10 @@ description: Result of parsing subtract_cylinder_from_cube.kcl ], "callee": { "abs_path": false, - "commentStart": 306, + "commentStart": 0, "end": 0, "name": { - "commentStart": 306, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -682,7 +682,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "start": 0, "type": "Name" }, - "commentStart": 306, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -690,30 +690,30 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "unlabeled": null } ], - "commentStart": 27, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, - "commentStart": 20, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 16, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 7, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 8, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -735,12 +735,12 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 328, + "commentStart": 0, "declaration": { - "commentStart": 330, + "commentStart": 0, "end": 0, "id": { - "commentStart": 330, + "commentStart": 0, "end": 0, "name": "part001", "start": 0, @@ -749,10 +749,10 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "init": { "arguments": [ { - "commentStart": 345, + "commentStart": 0, "elements": [ { - "commentStart": 346, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -764,7 +764,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl } }, { - "commentStart": 349, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -784,10 +784,10 @@ description: Result of parsing subtract_cylinder_from_cube.kcl ], "callee": { "abs_path": false, - "commentStart": 340, + "commentStart": 0, "end": 0, "name": { - "commentStart": 340, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -797,7 +797,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "start": 0, "type": "Name" }, - "commentStart": 340, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -813,12 +813,12 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 353, + "commentStart": 0, "declaration": { - "commentStart": 353, + "commentStart": 0, "end": 0, "id": { - "commentStart": 353, + "commentStart": 0, "end": 0, "name": "part002", "start": 0, @@ -829,7 +829,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl { "arguments": [ { - "commentStart": 377, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -840,10 +840,10 @@ description: Result of parsing subtract_cylinder_from_cube.kcl ], "callee": { "abs_path": false, - "commentStart": 363, + "commentStart": 0, "end": 0, "name": { - "commentStart": 363, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -853,7 +853,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "start": 0, "type": "Name" }, - "commentStart": 363, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -864,36 +864,36 @@ description: Result of parsing subtract_cylinder_from_cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 395, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 404, + "commentStart": 0, "elements": [ { - "commentStart": 405, + "commentStart": 0, "end": 0, - "raw": "0", + "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 0.0, + "value": 2.0, "suffix": "None" } }, { - "commentStart": 408, + "commentStart": 0, "end": 0, - "raw": "0", + "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 0.0, + "value": 2.0, "suffix": "None" } } @@ -907,14 +907,14 @@ description: Result of parsing subtract_cylinder_from_cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 412, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 421, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -929,10 +929,10 @@ description: Result of parsing subtract_cylinder_from_cube.kcl ], "callee": { "abs_path": false, - "commentStart": 388, + "commentStart": 0, "end": 0, "name": { - "commentStart": 388, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -942,7 +942,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "start": 0, "type": "Name" }, - "commentStart": 388, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -954,21 +954,21 @@ description: Result of parsing subtract_cylinder_from_cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 437, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 446, + "commentStart": 0, "end": 0, - "raw": "10", + "raw": "5", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 10.0, + "value": 5.0, "suffix": "None" } } @@ -976,10 +976,10 @@ description: Result of parsing subtract_cylinder_from_cube.kcl ], "callee": { "abs_path": false, - "commentStart": 429, + "commentStart": 0, "end": 0, "name": { - "commentStart": 429, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -989,7 +989,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "start": 0, "type": "Name" }, - "commentStart": 429, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -997,7 +997,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "unlabeled": null } ], - "commentStart": 363, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1013,12 +1013,12 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "type": "VariableDeclaration" }, { - "commentStart": 449, + "commentStart": 0, "declaration": { - "commentStart": 451, + "commentStart": 0, "end": 0, "id": { - "commentStart": 451, + "commentStart": 0, "end": 0, "name": "fullPart", "start": 0, @@ -1029,21 +1029,21 @@ description: Result of parsing subtract_cylinder_from_cube.kcl { "type": "LabeledArg", "label": { - "commentStart": 482, + "commentStart": 0, "end": 0, "name": "tools", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 488, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 489, + "commentStart": 0, "end": 0, "name": { - "commentStart": 489, + "commentStart": 0, "end": 0, "name": "part002", "start": 0, @@ -1064,10 +1064,10 @@ description: Result of parsing subtract_cylinder_from_cube.kcl ], "callee": { "abs_path": false, - "commentStart": 462, + "commentStart": 0, "end": 0, "name": { - "commentStart": 462, + "commentStart": 0, "end": 0, "name": "subtract", "start": 0, @@ -1077,20 +1077,20 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "start": 0, "type": "Name" }, - "commentStart": 462, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { - "commentStart": 471, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 472, + "commentStart": 0, "end": 0, "name": { - "commentStart": 472, + "commentStart": 0, "end": 0, "name": "part001", "start": 0, @@ -1124,7 +1124,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl "nonCodeNodes": { "0": [ { - "commentStart": 328, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -1135,7 +1135,7 @@ description: Result of parsing subtract_cylinder_from_cube.kcl ], "2": [ { - "commentStart": 449, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/subtract_cylinder_from_cube/input.kcl b/rust/kcl-lib/tests/subtract_cylinder_from_cube/input.kcl index 4b1d8f196..d4cc93b07 100644 --- a/rust/kcl-lib/tests/subtract_cylinder_from_cube/input.kcl +++ b/rust/kcl-lib/tests/subtract_cylinder_from_cube/input.kcl @@ -10,7 +10,7 @@ fn cube(center) { part001 = cube([0, 0]) part002 = startSketchOn('XY') - |> circle(center = [0, 0], radius = 2) - |> extrude(length = 10) + |> circle(center = [2, 2], radius = 2) + |> extrude(length = 5) fullPart = subtract([part001], tools=[part002]) diff --git a/rust/kcl-lib/tests/subtract_cylinder_from_cube/ops.snap b/rust/kcl-lib/tests/subtract_cylinder_from_cube/ops.snap index 9284735bf..f74160b0f 100644 --- a/rust/kcl-lib/tests/subtract_cylinder_from_cube/ops.snap +++ b/rust/kcl-lib/tests/subtract_cylinder_from_cube/ops.snap @@ -20,7 +20,7 @@ description: Operations executed subtract_cylinder_from_cube.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -70,7 +70,7 @@ description: Operations executed subtract_cylinder_from_cube.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" @@ -88,7 +88,7 @@ description: Operations executed subtract_cylinder_from_cube.kcl "length": { "value": { "type": "Number", - "value": 10.0, + "value": 5.0, "ty": { "type": "Default", "len": { diff --git a/rust/kcl-lib/tests/subtract_cylinder_from_cube/program_memory.snap b/rust/kcl-lib/tests/subtract_cylinder_from_cube/program_memory.snap index b3b34a0f5..d13da0f48 100644 --- a/rust/kcl-lib/tests/subtract_cylinder_from_cube/program_memory.snap +++ b/rust/kcl-lib/tests/subtract_cylinder_from_cube/program_memory.snap @@ -131,22 +131,34 @@ description: Variables in memory after executing subtract_cylinder_from_cube.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -309,22 +321,34 @@ description: Variables in memory after executing subtract_cylinder_from_cube.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -388,18 +412,18 @@ description: Variables in memory after executing subtract_cylinder_from_cube.kcl }, "ccw": true, "center": [ - 0.0, - 0.0 + 2.0, + 2.0 ], "from": [ - 2.0, - 0.0 + 4.0, + 2.0 ], "radius": 2.0, "tag": null, "to": [ - 2.0, - 0.0 + 4.0, + 2.0 ], "type": "Circle", "units": { @@ -415,22 +439,34 @@ description: Variables in memory after executing subtract_cylinder_from_cube.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -438,12 +474,12 @@ description: Variables in memory after executing subtract_cylinder_from_cube.kcl }, "start": { "from": [ - 2.0, - 0.0 + 4.0, + 2.0 ], "to": [ - 2.0, - 0.0 + 4.0, + 2.0 ], "units": { "type": "Mm" @@ -460,7 +496,7 @@ description: Variables in memory after executing subtract_cylinder_from_cube.kcl "type": "Mm" } }, - "height": 10.0, + "height": 5.0, "startCapId": "[uuid]", "endCapId": "[uuid]", "units": { diff --git a/rust/kcl-lib/tests/subtract_cylinder_from_cube/rendered_model.png b/rust/kcl-lib/tests/subtract_cylinder_from_cube/rendered_model.png index 368339b2d..65736ccfa 100644 Binary files a/rust/kcl-lib/tests/subtract_cylinder_from_cube/rendered_model.png and b/rust/kcl-lib/tests/subtract_cylinder_from_cube/rendered_model.png differ diff --git a/rust/kcl-lib/tests/subtract_cylinder_from_cube/unparsed.snap b/rust/kcl-lib/tests/subtract_cylinder_from_cube/unparsed.snap index e8a240ed5..035e6ab4e 100644 --- a/rust/kcl-lib/tests/subtract_cylinder_from_cube/unparsed.snap +++ b/rust/kcl-lib/tests/subtract_cylinder_from_cube/unparsed.snap @@ -14,7 +14,7 @@ fn cube(center) { part001 = cube([0, 0]) part002 = startSketchOn(XY) - |> circle(center = [0, 0], radius = 2) - |> extrude(length = 10) + |> circle(center = [2, 2], radius = 2) + |> extrude(length = 5) fullPart = subtract([part001], tools = [part002]) diff --git a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_commands.snap b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_commands.snap new file mode 100644 index 000000000..ff544648c --- /dev/null +++ b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_commands.snap @@ -0,0 +1,586 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Artifact commands subtract_doesnt_need_brackets.kcl +--- +[ + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "edge_lines_visible", + "hidden": false + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "make_plane", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "x_axis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "y_axis": { + "x": 0.0, + "y": 1.0, + "z": 0.0 + }, + "size": 60.0, + "clobber": false, + "hide": true + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "start_path" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "move_path_pen", + "path": "[uuid]", + "to": { + "x": -10.0, + "y": -10.0, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 10.0, + "y": -10.0, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 10.0, + "y": 10.0, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": -10.0, + "y": 10.0, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "close_path", + "path_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": 10.0, + "faces": null, + "opposite": "None" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "make_plane", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "x_axis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "y_axis": { + "x": 0.0, + "y": 1.0, + "z": 0.0 + }, + "size": 60.0, + "clobber": false, + "hide": true + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "start_path" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "move_path_pen", + "path": "[uuid]", + "to": { + "x": 2.0, + "y": -2.0, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 12.0, + "y": -2.0, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 12.0, + "y": 8.0, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "line", + "end": { + "x": 2.0, + "y": 8.0, + "z": 0.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "close_path", + "path_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extrude", + "target": "[uuid]", + "distance": 10.0, + "faces": null, + "opposite": "None" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_opposite_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_next_adjacent_edge", + "object_id": "[uuid]", + "edge_id": "[uuid]", + "face_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "set_object_transform", + "object_id": "[uuid]", + "transforms": [ + { + "translate": { + "property": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "set": false, + "is_local": true + }, + "rotate_rpy": null, + "rotate_angle_axis": null, + "scale": null + } + ] + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "boolean_subtract", + "target_ids": [ + "[uuid]" + ], + "tool_ids": [ + "[uuid]" + ], + "tolerance": 0.0000001 + } + } +] diff --git a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_graph_flowchart.snap b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_graph_flowchart.snap new file mode 100644 index 000000000..71d69815c --- /dev/null +++ b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_graph_flowchart.snap @@ -0,0 +1,6 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Artifact graph flowchart subtract_doesnt_need_brackets.kcl +extension: md +snapshot_kind: binary +--- diff --git a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_graph_flowchart.snap.md new file mode 100644 index 000000000..f04581fb3 --- /dev/null +++ b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/artifact_graph_flowchart.snap.md @@ -0,0 +1,117 @@ +```mermaid +flowchart LR + subgraph path2 [Path] + 2["Path
[58, 113, 0]"] + 3["Segment
[121, 177, 0]"] + 4["Segment
[185, 241, 0]"] + 5["Segment
[249, 305, 0]"] + 6["Segment
[313, 320, 0]"] + 7[Solid2d] + end + subgraph path24 [Path] + 24["Path
[58, 113, 0]"] + 25["Segment
[121, 177, 0]"] + 26["Segment
[185, 241, 0]"] + 27["Segment
[249, 305, 0]"] + 28["Segment
[313, 320, 0]"] + 29[Solid2d] + end + 1["Plane
[33, 50, 0]"] + 8["Sweep Extrusion
[328, 348, 0]"] + 9[Wall] + 10[Wall] + 11[Wall] + 12[Wall] + 13["Cap Start"] + 14["Cap End"] + 15["SweepEdge Opposite"] + 16["SweepEdge Adjacent"] + 17["SweepEdge Opposite"] + 18["SweepEdge Adjacent"] + 19["SweepEdge Opposite"] + 20["SweepEdge Adjacent"] + 21["SweepEdge Opposite"] + 22["SweepEdge Adjacent"] + 23["Plane
[33, 50, 0]"] + 30["Sweep Extrusion
[328, 348, 0]"] + 31[Wall] + 32[Wall] + 33[Wall] + 34[Wall] + 35["Cap Start"] + 36["Cap End"] + 37["SweepEdge Opposite"] + 38["SweepEdge Adjacent"] + 39["SweepEdge Opposite"] + 40["SweepEdge Adjacent"] + 41["SweepEdge Opposite"] + 42["SweepEdge Adjacent"] + 43["SweepEdge Opposite"] + 44["SweepEdge Adjacent"] + 1 --- 2 + 2 --- 3 + 2 --- 4 + 2 --- 5 + 2 --- 6 + 2 ---- 8 + 2 --- 7 + 3 --- 9 + 3 --- 15 + 3 --- 16 + 4 --- 10 + 4 --- 17 + 4 --- 18 + 5 --- 11 + 5 --- 19 + 5 --- 20 + 6 --- 12 + 6 --- 21 + 6 --- 22 + 8 --- 9 + 8 --- 10 + 8 --- 11 + 8 --- 12 + 8 --- 13 + 8 --- 14 + 8 --- 15 + 8 --- 16 + 8 --- 17 + 8 --- 18 + 8 --- 19 + 8 --- 20 + 8 --- 21 + 8 --- 22 + 23 --- 24 + 24 --- 25 + 24 --- 26 + 24 --- 27 + 24 --- 28 + 24 ---- 30 + 24 --- 29 + 25 --- 31 + 25 --- 37 + 25 --- 38 + 26 --- 32 + 26 --- 39 + 26 --- 40 + 27 --- 33 + 27 --- 41 + 27 --- 42 + 28 --- 34 + 28 --- 43 + 28 --- 44 + 30 --- 31 + 30 --- 32 + 30 --- 33 + 30 --- 34 + 30 --- 35 + 30 --- 36 + 30 --- 37 + 30 --- 38 + 30 --- 39 + 30 --- 40 + 30 --- 41 + 30 --- 42 + 30 --- 43 + 30 --- 44 +``` diff --git a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/ast.snap b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/ast.snap new file mode 100644 index 000000000..ceb223118 --- /dev/null +++ b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/ast.snap @@ -0,0 +1,1134 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Result of parsing subtract_doesnt_need_brackets.kcl +--- +{ + "Ok": { + "body": [ + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "cube", + "start": 0, + "type": "Identifier" + }, + "init": { + "body": { + "body": [ + { + "argument": { + "body": [ + { + "arguments": [ + { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "XY", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "startSketchOn", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "center", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "center", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeSubstitution", + "type": "PipeSubstitution" + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "startProfileAt", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "center", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "center", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "line", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "center", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "center", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "line", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "endAbsolute", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "center", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "operator": "-", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "computed": false, + "end": 0, + "object": { + "commentStart": 0, + "end": 0, + "name": "center", + "start": 0, + "type": "Identifier", + "type": "Identifier" + }, + "property": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + }, + "start": 0, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "operator": "+", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "line", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "close", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "10", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 10.0, + "suffix": "None" + } + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "extrude", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + } + ], + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "ReturnStatement", + "type": "ReturnStatement" + } + ], + "commentStart": 0, + "end": 0, + "start": 0 + }, + "commentStart": 0, + "end": 0, + "params": [ + { + "type": "Parameter", + "identifier": { + "commentStart": 0, + "end": 0, + "name": "center", + "start": 0, + "type": "Identifier" + } + }, + { + "type": "Parameter", + "identifier": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + } + } + ], + "start": 0, + "type": "FunctionExpression", + "type": "FunctionExpression" + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "fn", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "part001", + "start": 0, + "type": "Identifier" + }, + "init": { + "arguments": [ + { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "0", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "10", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 10.0, + "suffix": "None" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "cube", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "part002", + "start": 0, + "type": "Identifier" + }, + "init": { + "body": [ + { + "arguments": [ + { + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "7", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 7.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "3", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 3.0, + "suffix": "None" + } + } + ], + "end": 0, + "start": 0, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 5.0, + "suffix": "None" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "cube", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "translate", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + } + ], + "commentStart": 0, + "end": 0, + "start": 0, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "commentStart": 0, + "declaration": { + "commentStart": 0, + "end": 0, + "id": { + "commentStart": 0, + "end": 0, + "name": "subtractedPart", + "start": 0, + "type": "Identifier" + }, + "init": { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tools", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "part002", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "subtract", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "part001", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + "start": 0, + "type": "VariableDeclarator" + }, + "end": 0, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + } + ], + "commentStart": 0, + "end": 0, + "nonCodeMeta": { + "nonCodeNodes": { + "0": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLine" + } + } + ], + "2": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLine" + } + } + ] + }, + "startNodes": [] + }, + "start": 0 + } +} diff --git a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/input.kcl b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/input.kcl new file mode 100644 index 000000000..2753bb6f3 --- /dev/null +++ b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/input.kcl @@ -0,0 +1,15 @@ +fn cube(center, size) { + return startSketchOn(XY) + |> startProfileAt([center[0] - size, center[1] - size], %) + |> line(endAbsolute = [center[0] + size, center[1] - size]) + |> line(endAbsolute = [center[0] + size, center[1] + size]) + |> line(endAbsolute = [center[0] - size, center[1] + size]) + |> close() + |> extrude(length = 10) +} + +part001 = cube([0, 0], 10) +part002 = cube([7, 3], 5) + |> translate(z = 1) + +subtractedPart = subtract(part001, tools = part002) diff --git a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/ops.snap b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/ops.snap new file mode 100644 index 000000000..d9bb321c6 --- /dev/null +++ b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/ops.snap @@ -0,0 +1,161 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Operations executed subtract_doesnt_need_brackets.kcl +--- +[ + { + "type": "GroupBegin", + "group": { + "type": "FunctionCall", + "name": "cube", + "functionSourceRange": [ + 7, + 350, + 0 + ], + "unlabeledArg": null, + "labeledArgs": {} + }, + "sourceRange": [] + }, + { + "labeledArgs": { + "planeOrSolid": { + "value": { + "type": "Plane", + "artifact_id": "[uuid]" + }, + "sourceRange": [] + } + }, + "name": "startSketchOn", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": null + }, + { + "labeledArgs": { + "length": { + "value": { + "type": "Number", + "value": 10.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + } + }, + "name": "extrude", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Sketch", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, + { + "type": "GroupEnd" + }, + { + "type": "GroupBegin", + "group": { + "type": "FunctionCall", + "name": "cube", + "functionSourceRange": [ + 7, + 350, + 0 + ], + "unlabeledArg": null, + "labeledArgs": {} + }, + "sourceRange": [] + }, + { + "labeledArgs": { + "planeOrSolid": { + "value": { + "type": "Plane", + "artifact_id": "[uuid]" + }, + "sourceRange": [] + } + }, + "name": "startSketchOn", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": null + }, + { + "labeledArgs": { + "length": { + "value": { + "type": "Number", + "value": 10.0, + "ty": { + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } + } + }, + "sourceRange": [] + } + }, + "name": "extrude", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Sketch", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, + { + "type": "GroupEnd" + }, + { + "labeledArgs": { + "tools": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + }, + "name": "subtract", + "sourceRange": [], + "type": "StdLibCall", + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } + } +] diff --git a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/program_memory.snap b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/program_memory.snap new file mode 100644 index 000000000..5fcc127ed --- /dev/null +++ b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/program_memory.snap @@ -0,0 +1,579 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Variables in memory after executing subtract_doesnt_need_brackets.kcl +--- +{ + "cube": { + "type": "Function" + }, + "part001": { + "type": "Solid", + "value": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -10.0, + -10.0 + ], + "tag": null, + "to": [ + 10.0, + -10.0 + ], + "type": "ToPoint", + "units": { + "type": "Mm" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 10.0, + -10.0 + ], + "tag": null, + "to": [ + 10.0, + 10.0 + ], + "type": "ToPoint", + "units": { + "type": "Mm" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 10.0, + 10.0 + ], + "tag": null, + "to": [ + -10.0, + 10.0 + ], + "type": "ToPoint", + "units": { + "type": "Mm" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -10.0, + 10.0 + ], + "tag": null, + "to": [ + -10.0, + -10.0 + ], + "type": "ToPoint", + "units": { + "type": "Mm" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XY", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "units": { + "type": "Mm" + } + }, + "start": { + "from": [ + -10.0, + -10.0 + ], + "to": [ + -10.0, + -10.0 + ], + "units": { + "type": "Mm" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + } + }, + "height": 10.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + } + } + }, + "part002": { + "type": "Solid", + "value": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 2.0, + -2.0 + ], + "tag": null, + "to": [ + 12.0, + -2.0 + ], + "type": "ToPoint", + "units": { + "type": "Mm" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 12.0, + -2.0 + ], + "tag": null, + "to": [ + 12.0, + 8.0 + ], + "type": "ToPoint", + "units": { + "type": "Mm" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 12.0, + 8.0 + ], + "tag": null, + "to": [ + 2.0, + 8.0 + ], + "type": "ToPoint", + "units": { + "type": "Mm" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 2.0, + 8.0 + ], + "tag": null, + "to": [ + 2.0, + -2.0 + ], + "type": "ToPoint", + "units": { + "type": "Mm" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XY", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "units": { + "type": "Mm" + } + }, + "start": { + "from": [ + 2.0, + -2.0 + ], + "to": [ + 2.0, + -2.0 + ], + "units": { + "type": "Mm" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + } + }, + "height": 10.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + } + } + }, + "subtractedPart": { + "type": "Solid", + "value": { + "type": "Solid", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": [ + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudePlane" + }, + { + "faceId": "[uuid]", + "id": "[uuid]", + "sourceRange": [], + "tag": null, + "type": "extrudePlane" + } + ], + "sketch": { + "type": "Sketch", + "id": "[uuid]", + "paths": [ + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -10.0, + -10.0 + ], + "tag": null, + "to": [ + 10.0, + -10.0 + ], + "type": "ToPoint", + "units": { + "type": "Mm" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 10.0, + -10.0 + ], + "tag": null, + "to": [ + 10.0, + 10.0 + ], + "type": "ToPoint", + "units": { + "type": "Mm" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + 10.0, + 10.0 + ], + "tag": null, + "to": [ + -10.0, + 10.0 + ], + "type": "ToPoint", + "units": { + "type": "Mm" + } + }, + { + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + }, + "from": [ + -10.0, + 10.0 + ], + "tag": null, + "to": [ + -10.0, + -10.0 + ], + "type": "ToPoint", + "units": { + "type": "Mm" + } + } + ], + "on": { + "type": "plane", + "id": "[uuid]", + "artifactId": "[uuid]", + "value": "XY", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "xAxis": { + "x": 1.0, + "y": 0.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "yAxis": { + "x": 0.0, + "y": 1.0, + "z": 0.0, + "units": { + "type": "Mm" + } + }, + "zAxis": { + "x": 0.0, + "y": 0.0, + "z": 1.0, + "units": { + "type": "Mm" + } + }, + "units": { + "type": "Mm" + } + }, + "start": { + "from": [ + -10.0, + -10.0 + ], + "to": [ + -10.0, + -10.0 + ], + "units": { + "type": "Mm" + }, + "tag": null, + "__geoMeta": { + "id": "[uuid]", + "sourceRange": [] + } + }, + "artifactId": "[uuid]", + "originalId": "[uuid]", + "units": { + "type": "Mm" + } + }, + "height": 10.0, + "startCapId": "[uuid]", + "endCapId": "[uuid]", + "units": { + "type": "Mm" + } + } + } +} diff --git a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/rendered_model.png b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/rendered_model.png new file mode 100644 index 000000000..2b61de7bd Binary files /dev/null and b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/rendered_model.png differ diff --git a/rust/kcl-lib/tests/subtract_doesnt_need_brackets/unparsed.snap b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/unparsed.snap new file mode 100644 index 000000000..766d1f90d --- /dev/null +++ b/rust/kcl-lib/tests/subtract_doesnt_need_brackets/unparsed.snap @@ -0,0 +1,19 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Result of unparsing subtract_doesnt_need_brackets.kcl +--- +fn cube(center, size) { + return startSketchOn(XY) + |> startProfileAt([center[0] - size, center[1] - size], %) + |> line(endAbsolute = [center[0] + size, center[1] - size]) + |> line(endAbsolute = [center[0] + size, center[1] + size]) + |> line(endAbsolute = [center[0] - size, center[1] + size]) + |> close() + |> extrude(length = 10) +} + +part001 = cube([0, 0], 10) +part002 = cube([7, 3], 5) + |> translate(z = 1) + +subtractedPart = subtract(part001, tools = part002) diff --git a/rust/kcl-lib/tests/tan_arc_x_line/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/tan_arc_x_line/artifact_graph_flowchart.snap.md index 36b293e2d..dec0874ad 100644 --- a/rust/kcl-lib/tests/tan_arc_x_line/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/tan_arc_x_line/artifact_graph_flowchart.snap.md @@ -2,11 +2,11 @@ flowchart LR subgraph path2 [Path] 2["Path
[89, 124, 0]"] - 3["Segment
[130, 185, 0]"] - 4["Segment
[191, 252, 0]"] - 5["Segment
[258, 344, 0]"] - 6["Segment
[350, 437, 0]"] - 7["Segment
[443, 465, 0]"] + 3["Segment
[130, 178, 0]"] + 4["Segment
[184, 243, 0]"] + 5["Segment
[249, 314, 0]"] + 6["Segment
[320, 386, 0]"] + 7["Segment
[392, 414, 0]"] end 1["Plane
[64, 83, 0]"] 1 --- 2 diff --git a/rust/kcl-lib/tests/tan_arc_x_line/ast.snap b/rust/kcl-lib/tests/tan_arc_x_line/ast.snap index 3816f0a17..b4ee48d1e 100644 --- a/rust/kcl-lib/tests/tan_arc_x_line/ast.snap +++ b/rust/kcl-lib/tests/tan_arc_x_line/ast.snap @@ -18,7 +18,7 @@ description: Result of parsing tan_arc_x_line.kcl "type": "Identifier" }, "init": { - "commentStart": 9, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -39,19 +39,19 @@ description: Result of parsing tan_arc_x_line.kcl "type": "VariableDeclaration" }, { - "commentStart": 11, + "commentStart": 0, "declaration": { - "commentStart": 11, + "commentStart": 0, "end": 0, "id": { - "commentStart": 11, + "commentStart": 0, "end": 0, "name": "startY", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 20, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -72,19 +72,19 @@ description: Result of parsing tan_arc_x_line.kcl "type": "VariableDeclaration" }, { - "commentStart": 22, + "commentStart": 0, "declaration": { - "commentStart": 22, + "commentStart": 0, "end": 0, "id": { - "commentStart": 22, + "commentStart": 0, "end": 0, "name": "angleOffset", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 36, + "commentStart": 0, "end": 0, "raw": "135", "start": 0, @@ -105,19 +105,19 @@ description: Result of parsing tan_arc_x_line.kcl "type": "VariableDeclaration" }, { - "commentStart": 40, + "commentStart": 0, "declaration": { - "commentStart": 40, + "commentStart": 0, "end": 0, "id": { - "commentStart": 40, + "commentStart": 0, "end": 0, "name": "r", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 44, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -138,19 +138,19 @@ description: Result of parsing tan_arc_x_line.kcl "type": "VariableDeclaration" }, { - "commentStart": 46, + "commentStart": 0, "declaration": { - "commentStart": 46, + "commentStart": 0, "end": 0, "id": { - "commentStart": 46, + "commentStart": 0, "end": 0, "name": "angleStart", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 59, + "commentStart": 0, "end": 0, "raw": "110", "start": 0, @@ -171,14 +171,14 @@ description: Result of parsing tan_arc_x_line.kcl "type": "VariableDeclaration" }, { - "commentStart": 62, + "commentStart": 0, "end": 0, "expression": { "body": [ { "arguments": [ { - "commentStart": 78, + "commentStart": 0, "end": 0, "raw": "'XY'", "start": 0, @@ -189,10 +189,10 @@ description: Result of parsing tan_arc_x_line.kcl ], "callee": { "abs_path": false, - "commentStart": 64, + "commentStart": 0, "end": 0, "name": { - "commentStart": 64, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -202,7 +202,7 @@ description: Result of parsing tan_arc_x_line.kcl "start": 0, "type": "Name" }, - "commentStart": 64, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -211,14 +211,14 @@ description: Result of parsing tan_arc_x_line.kcl { "arguments": [ { - "commentStart": 104, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 105, + "commentStart": 0, "end": 0, "name": { - "commentStart": 105, + "commentStart": 0, "end": 0, "name": "startX", "start": 0, @@ -231,10 +231,10 @@ description: Result of parsing tan_arc_x_line.kcl }, { "abs_path": false, - "commentStart": 113, + "commentStart": 0, "end": 0, "name": { - "commentStart": 113, + "commentStart": 0, "end": 0, "name": "startY", "start": 0, @@ -252,7 +252,7 @@ description: Result of parsing tan_arc_x_line.kcl "type": "ArrayExpression" }, { - "commentStart": 122, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -261,10 +261,10 @@ description: Result of parsing tan_arc_x_line.kcl ], "callee": { "abs_path": false, - "commentStart": 89, + "commentStart": 0, "end": 0, "name": { - "commentStart": 89, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -274,467 +274,7 @@ description: Result of parsing tan_arc_x_line.kcl "start": 0, "type": "Name" }, - "commentStart": 89, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 141, - "end": 0, - "properties": [ - { - "commentStart": 143, - "end": 0, - "key": { - "commentStart": 143, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 151, - "end": 0, - "name": { - "commentStart": 151, - "end": 0, - "name": "angleStart", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - }, - { - "commentStart": 163, - "end": 0, - "key": { - "commentStart": 163, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 172, - "end": 0, - "raw": ".000001", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.000001, - "suffix": "None" - } - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 183, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 130, - "end": 0, - "name": { - "commentStart": 130, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 130, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 205, - "end": 0, - "properties": [ - { - "commentStart": 207, - "end": 0, - "key": { - "commentStart": 207, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 216, - "end": 0, - "name": { - "commentStart": 216, - "end": 0, - "name": "angleOffset", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - }, - { - "commentStart": 229, - "end": 0, - "key": { - "commentStart": 229, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 238, - "end": 0, - "name": { - "commentStart": 238, - "end": 0, - "name": "r", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 243, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 246, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "arc1" - } - ], - "callee": { - "abs_path": false, - "commentStart": 191, - "end": 0, - "name": { - "commentStart": 191, - "end": 0, - "name": "tangentialArc", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 191, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 272, - "end": 0, - "properties": [ - { - "commentStart": 281, - "end": 0, - "key": { - "commentStart": 281, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 290, - "end": 0, - "name": { - "commentStart": 290, - "end": 0, - "name": "angleOffset", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - }, - { - "commentStart": 310, - "end": 0, - "key": { - "commentStart": 310, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 319, - "end": 0, - "left": { - "commentStart": 319, - "end": 0, - "raw": "0.5", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.5, - "suffix": "None" - } - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 325, - "end": 0, - "name": { - "commentStart": 325, - "end": 0, - "name": "r", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 335, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 338, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "arc2" - } - ], - "callee": { - "abs_path": false, - "commentStart": 258, - "end": 0, - "name": { - "commentStart": 258, - "end": 0, - "name": "tangentialArc", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 258, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 364, - "end": 0, - "properties": [ - { - "commentStart": 373, - "end": 0, - "key": { - "commentStart": 373, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "argument": { - "abs_path": false, - "commentStart": 383, - "end": 0, - "name": { - "commentStart": 383, - "end": 0, - "name": "angleOffset", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "commentStart": 382, - "end": 0, - "operator": "-", - "start": 0, - "type": "UnaryExpression", - "type": "UnaryExpression" - } - }, - { - "commentStart": 403, - "end": 0, - "key": { - "commentStart": 403, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 412, - "end": 0, - "left": { - "commentStart": 412, - "end": 0, - "raw": "0.5", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 0.5, - "suffix": "None" - } - }, - "operator": "*", - "right": { - "abs_path": false, - "commentStart": 418, - "end": 0, - "name": { - "commentStart": 418, - "end": 0, - "name": "r", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - "start": 0, - "type": "BinaryExpression", - "type": "BinaryExpression" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 428, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - }, - { - "commentStart": 431, - "end": 0, - "start": 0, - "type": "TagDeclarator", - "type": "TagDeclarator", - "value": "arc3" - } - ], - "callee": { - "abs_path": false, - "commentStart": 350, - "end": 0, - "name": { - "commentStart": 350, - "end": 0, - "name": "tangentialArc", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 350, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -745,14 +285,420 @@ description: Result of parsing tan_arc_x_line.kcl { "type": "LabeledArg", "label": { - "commentStart": 449, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angleStart", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": ".000001", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.000001, + "suffix": "None" + } + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angleOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "r", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "arc1" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angleOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "raw": "0.5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.5, + "suffix": "None" + } + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "r", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "arc2" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "argument": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angleOffset", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "operator": "-", + "start": 0, + "type": "UnaryExpression", + "type": "UnaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "left": { + "commentStart": 0, + "end": 0, + "raw": "0.5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 0.5, + "suffix": "None" + } + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "r", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "tag", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "TagDeclarator", + "type": "TagDeclarator", + "value": "arc3" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "tangentialArc", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 463, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -767,10 +713,10 @@ description: Result of parsing tan_arc_x_line.kcl ], "callee": { "abs_path": false, - "commentStart": 443, + "commentStart": 0, "end": 0, "name": { - "commentStart": 443, + "commentStart": 0, "end": 0, "name": "xLine", "start": 0, @@ -780,7 +726,7 @@ description: Result of parsing tan_arc_x_line.kcl "start": 0, "type": "Name" }, - "commentStart": 443, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -788,7 +734,7 @@ description: Result of parsing tan_arc_x_line.kcl "unlabeled": null } ], - "commentStart": 64, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -805,7 +751,7 @@ description: Result of parsing tan_arc_x_line.kcl "nonCodeNodes": { "4": [ { - "commentStart": 62, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/tan_arc_x_line/input.kcl b/rust/kcl-lib/tests/tan_arc_x_line/input.kcl index c5fd144a4..4ac9156f4 100644 --- a/rust/kcl-lib/tests/tan_arc_x_line/input.kcl +++ b/rust/kcl-lib/tests/tan_arc_x_line/input.kcl @@ -6,14 +6,8 @@ angleStart = 110 startSketchOn('XY') |> startProfileAt([startX, startY], %) - |> angledLine({ angle = angleStart, length = .000001 }, %) - |> tangentialArc({ offset = angleOffset, radius = r }, %, $arc1) - |> tangentialArc({ - offset = angleOffset, - radius = 0.5 * r - }, %, $arc2) - |> tangentialArc({ - offset = -angleOffset, - radius = 0.5 * r - }, %, $arc3) + |> angledLine(angle = angleStart, length = .000001) + |> tangentialArc(angle = angleOffset, radius = r, tag = $arc1) + |> tangentialArc(angle = angleOffset, radius = 0.5 * r, tag = $arc2) + |> tangentialArc(angle = -angleOffset, radius = 0.5 * r, tag = $arc3) |> xLine(endAbsolute = 1) diff --git a/rust/kcl-lib/tests/tan_arc_x_line/ops.snap b/rust/kcl-lib/tests/tan_arc_x_line/ops.snap index 1cf7c08d6..e528f214f 100644 --- a/rust/kcl-lib/tests/tan_arc_x_line/ops.snap +++ b/rust/kcl-lib/tests/tan_arc_x_line/ops.snap @@ -5,7 +5,7 @@ description: Operations executed tan_arc_x_line.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XY" diff --git a/rust/kcl-lib/tests/tan_arc_x_line/unparsed.snap b/rust/kcl-lib/tests/tan_arc_x_line/unparsed.snap index 201586091..492dbea93 100644 --- a/rust/kcl-lib/tests/tan_arc_x_line/unparsed.snap +++ b/rust/kcl-lib/tests/tan_arc_x_line/unparsed.snap @@ -10,14 +10,8 @@ angleStart = 110 startSketchOn(XY) |> startProfileAt([startX, startY], %) - |> angledLine({ angle = angleStart, length = .000001 }, %) - |> tangentialArc({ offset = angleOffset, radius = r }, %, $arc1) - |> tangentialArc({ - offset = angleOffset, - radius = 0.5 * r - }, %, $arc2) - |> tangentialArc({ - offset = -angleOffset, - radius = 0.5 * r - }, %, $arc3) + |> angledLine(angle = angleStart, length = .000001) + |> tangentialArc(angle = angleOffset, radius = r, tag = $arc1) + |> tangentialArc(angle = angleOffset, radius = 0.5 * r, tag = $arc2) + |> tangentialArc(angle = -angleOffset, radius = 0.5 * r, tag = $arc3) |> xLine(endAbsolute = 1) diff --git a/rust/kcl-lib/tests/tangential_arc/artifact_commands.snap b/rust/kcl-lib/tests/tangential_arc/artifact_commands.snap index 01e609007..d076e0fd2 100644 --- a/rust/kcl-lib/tests/tangential_arc/artifact_commands.snap +++ b/rust/kcl-lib/tests/tangential_arc/artifact_commands.snap @@ -170,7 +170,8 @@ description: Artifact commands tangential_arc.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/tangential_arc/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/tangential_arc/artifact_graph_flowchart.snap.md index 687524d86..5d1b4055d 100644 --- a/rust/kcl-lib/tests/tangential_arc/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/tangential_arc/artifact_graph_flowchart.snap.md @@ -3,11 +3,11 @@ flowchart LR subgraph path2 [Path] 2["Path
[35, 60, 0]"] 3["Segment
[66, 85, 0]"] - 4["Segment
[91, 136, 0]"] - 5["Segment
[142, 162, 0]"] + 4["Segment
[91, 128, 0]"] + 5["Segment
[134, 154, 0]"] end 1["Plane
[12, 29, 0]"] - 6["Sweep Extrusion
[168, 188, 0]"] + 6["Sweep Extrusion
[160, 180, 0]"] 7[Wall] 8[Wall] 9[Wall] diff --git a/rust/kcl-lib/tests/tangential_arc/ast.snap b/rust/kcl-lib/tests/tangential_arc/ast.snap index c28c77226..262f44ded 100644 --- a/rust/kcl-lib/tests/tangential_arc/ast.snap +++ b/rust/kcl-lib/tests/tangential_arc/ast.snap @@ -23,10 +23,10 @@ description: Result of parsing tangential_arc.kcl "arguments": [ { "abs_path": false, - "commentStart": 26, + "commentStart": 0, "end": 0, "name": { - "commentStart": 26, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -40,10 +40,10 @@ description: Result of parsing tangential_arc.kcl ], "callee": { "abs_path": false, - "commentStart": 12, + "commentStart": 0, "end": 0, "name": { - "commentStart": 12, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -53,7 +53,7 @@ description: Result of parsing tangential_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -62,10 +62,10 @@ description: Result of parsing tangential_arc.kcl { "arguments": [ { - "commentStart": 50, + "commentStart": 0, "elements": [ { - "commentStart": 51, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -77,7 +77,7 @@ description: Result of parsing tangential_arc.kcl } }, { - "commentStart": 54, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -95,7 +95,7 @@ description: Result of parsing tangential_arc.kcl "type": "ArrayExpression" }, { - "commentStart": 58, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -104,10 +104,10 @@ description: Result of parsing tangential_arc.kcl ], "callee": { "abs_path": false, - "commentStart": 35, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -117,7 +117,7 @@ description: Result of parsing tangential_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 35, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -128,17 +128,17 @@ description: Result of parsing tangential_arc.kcl { "type": "LabeledArg", "label": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 77, + "commentStart": 0, "elements": [ { - "commentStart": 78, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -150,7 +150,7 @@ description: Result of parsing tangential_arc.kcl } }, { - "commentStart": 81, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -171,10 +171,10 @@ description: Result of parsing tangential_arc.kcl ], "callee": { "abs_path": false, - "commentStart": 66, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -184,7 +184,7 @@ description: Result of parsing tangential_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 66, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -194,78 +194,56 @@ description: Result of parsing tangential_arc.kcl { "arguments": [ { - "commentStart": 105, - "end": 0, - "properties": [ - { - "commentStart": 107, - "end": 0, - "key": { - "commentStart": 107, - "end": 0, - "name": "radius", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 116, - "end": 0, - "raw": "5", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 5.0, - "suffix": "None" - } - } - }, - { - "commentStart": 119, - "end": 0, - "key": { - "commentStart": 119, - "end": 0, - "name": "offset", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 128, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - } + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "radius", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 5.0, + "suffix": "None" } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" + } }, { - "commentStart": 134, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "90", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + } } ], "callee": { "abs_path": false, - "commentStart": 91, + "commentStart": 0, "end": 0, "name": { - "commentStart": 91, + "commentStart": 0, "end": 0, "name": "tangentialArc", "start": 0, @@ -275,28 +253,29 @@ description: Result of parsing tangential_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 91, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 147, + "commentStart": 0, "end": 0, "name": "end", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 153, + "commentStart": 0, "elements": [ { - "commentStart": 154, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -309,7 +288,7 @@ description: Result of parsing tangential_arc.kcl }, { "argument": { - "commentStart": 158, + "commentStart": 0, "end": 0, "raw": "15", "start": 0, @@ -320,7 +299,7 @@ description: Result of parsing tangential_arc.kcl "suffix": "None" } }, - "commentStart": 157, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -337,10 +316,10 @@ description: Result of parsing tangential_arc.kcl ], "callee": { "abs_path": false, - "commentStart": 142, + "commentStart": 0, "end": 0, "name": { - "commentStart": 142, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -350,7 +329,7 @@ description: Result of parsing tangential_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 142, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -362,14 +341,14 @@ description: Result of parsing tangential_arc.kcl { "type": "LabeledArg", "label": { - "commentStart": 176, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 185, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -384,10 +363,10 @@ description: Result of parsing tangential_arc.kcl ], "callee": { "abs_path": false, - "commentStart": 168, + "commentStart": 0, "end": 0, "name": { - "commentStart": 168, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -397,7 +376,7 @@ description: Result of parsing tangential_arc.kcl "start": 0, "type": "Name" }, - "commentStart": 168, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -405,7 +384,7 @@ description: Result of parsing tangential_arc.kcl "unlabeled": null } ], - "commentStart": 12, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/tangential_arc/input.kcl b/rust/kcl-lib/tests/tangential_arc/input.kcl index e441b1240..66b4c0090 100644 --- a/rust/kcl-lib/tests/tangential_arc/input.kcl +++ b/rust/kcl-lib/tests/tangential_arc/input.kcl @@ -1,6 +1,6 @@ boxSketch = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line(end = [0, 10]) - |> tangentialArc({ radius = 5, offset = 90 }, %) + |> tangentialArc(radius = 5, angle = 90) |> line(end = [5, -15]) |> extrude(length = 10) diff --git a/rust/kcl-lib/tests/tangential_arc/ops.snap b/rust/kcl-lib/tests/tangential_arc/ops.snap index f66ededd8..6957fafac 100644 --- a/rust/kcl-lib/tests/tangential_arc/ops.snap +++ b/rust/kcl-lib/tests/tangential_arc/ops.snap @@ -5,7 +5,7 @@ description: Operations executed tangential_arc.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/tangential_arc/program_memory.snap b/rust/kcl-lib/tests/tangential_arc/program_memory.snap index db039e8fe..dce5b27b5 100644 --- a/rust/kcl-lib/tests/tangential_arc/program_memory.snap +++ b/rust/kcl-lib/tests/tangential_arc/program_memory.snap @@ -107,22 +107,34 @@ description: Variables in memory after executing tangential_arc.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/tangential_arc/unparsed.snap b/rust/kcl-lib/tests/tangential_arc/unparsed.snap index 71a1a6cdd..f9cdd612a 100644 --- a/rust/kcl-lib/tests/tangential_arc/unparsed.snap +++ b/rust/kcl-lib/tests/tangential_arc/unparsed.snap @@ -5,6 +5,6 @@ description: Result of unparsing tangential_arc.kcl boxSketch = startSketchOn(XY) |> startProfileAt([0, 0], %) |> line(end = [0, 10]) - |> tangentialArc({ radius = 5, offset = 90 }, %) + |> tangentialArc(radius = 5, angle = 90) |> line(end = [5, -15]) |> extrude(length = 10) diff --git a/rust/kcl-lib/tests/translate_after_fillet/artifact_commands.snap b/rust/kcl-lib/tests/translate_after_fillet/artifact_commands.snap index 46afdef21..03ea5521b 100644 --- a/rust/kcl-lib/tests/translate_after_fillet/artifact_commands.snap +++ b/rust/kcl-lib/tests/translate_after_fillet/artifact_commands.snap @@ -153,7 +153,8 @@ description: Artifact commands translate_after_fillet.kcl "type": "extrude", "target": "[uuid]", "distance": -0.625, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -385,7 +386,8 @@ description: Artifact commands translate_after_fillet.kcl "type": "extrude", "target": "[uuid]", "distance": -0.46875, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -623,7 +625,8 @@ description: Artifact commands translate_after_fillet.kcl "type": "extrude", "target": "[uuid]", "distance": 2.5, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/translate_after_fillet/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/translate_after_fillet/artifact_graph_flowchart.snap.md index 264c6b7a7..e4b679728 100644 --- a/rust/kcl-lib/tests/translate_after_fillet/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/translate_after_fillet/artifact_graph_flowchart.snap.md @@ -1,35 +1,35 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[347, 417, 0]"] - 3["Segment
[347, 417, 0]"] + 2["Path
[345, 415, 0]"] + 3["Segment
[345, 415, 0]"] 4[Solid2d] end subgraph path13 [Path] - 13["Path
[655, 742, 0]"] - 14["Segment
[750, 833, 0]"] - 15["Segment
[841, 924, 0]"] - 16["Segment
[932, 1015, 0]"] - 17["Segment
[1023, 1105, 0]"] - 18["Segment
[1113, 1195, 0]"] - 19["Segment
[1203, 1210, 0]"] + 13["Path
[660, 747, 0]"] + 14["Segment
[755, 834, 0]"] + 15["Segment
[842, 921, 0]"] + 16["Segment
[929, 1008, 0]"] + 17["Segment
[1016, 1094, 0]"] + 18["Segment
[1102, 1180, 0]"] + 19["Segment
[1188, 1195, 0]"] 20[Solid2d] end subgraph path41 [Path] - 41["Path
[1311, 1380, 0]"] - 42["Segment
[1311, 1380, 0]"] + 41["Path
[1303, 1372, 0]"] + 42["Segment
[1303, 1372, 0]"] 43[Solid2d] end - 1["Plane
[320, 339, 0]"] - 5["Sweep Extrusion
[425, 458, 0]"] + 1["Plane
[320, 337, 0]"] + 5["Sweep Extrusion
[423, 456, 0]"] 6[Wall] 7["Cap Start"] 8["Cap End"] 9["SweepEdge Opposite"] 10["SweepEdge Adjacent"] - 11["EdgeCut Fillet
[466, 532, 0]"] - 12["EdgeCut Fillet
[466, 532, 0]"] - 21["Sweep Extrusion
[1218, 1258, 0]"] + 11["EdgeCut Fillet
[464, 530, 0]"] + 12["EdgeCut Fillet
[464, 530, 0]"] + 21["Sweep Extrusion
[1203, 1243, 0]"] 22[Wall] 23[Wall] 24[Wall] @@ -49,14 +49,14 @@ flowchart LR 38["SweepEdge Adjacent"] 39["SweepEdge Opposite"] 40["SweepEdge Adjacent"] - 44["Sweep Extrusion
[1388, 1416, 0]"] + 44["Sweep Extrusion
[1380, 1408, 0]"] 45[Wall] 46["Cap End"] 47["SweepEdge Opposite"] 48["SweepEdge Adjacent"] - 49["EdgeCut Fillet
[1424, 1483, 0]"] - 50["StartSketchOnFace
[615, 647, 0]"] - 51["StartSketchOnFace
[1273, 1303, 0]"] + 49["EdgeCut Fillet
[1416, 1475, 0]"] + 50["StartSketchOnFace
[613, 652, 0]"] + 51["StartSketchOnFace
[1258, 1295, 0]"] 1 --- 2 2 --- 3 2 ---- 5 diff --git a/rust/kcl-lib/tests/translate_after_fillet/ast.snap b/rust/kcl-lib/tests/translate_after_fillet/ast.snap index eeefb9b59..0f803c13a 100644 --- a/rust/kcl-lib/tests/translate_after_fillet/ast.snap +++ b/rust/kcl-lib/tests/translate_after_fillet/ast.snap @@ -8,17 +8,17 @@ description: Result of parsing translate_after_fillet.kcl { "commentStart": 0, "declaration": { - "commentStart": 7, + "commentStart": 0, "end": 0, "id": { - "commentStart": 7, + "commentStart": 0, "end": 0, "name": "boltDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 22, + "commentStart": 0, "end": 0, "raw": "0.625", "start": 0, @@ -40,19 +40,19 @@ description: Result of parsing translate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 28, + "commentStart": 0, "declaration": { - "commentStart": 35, + "commentStart": 0, "end": 0, "id": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "boltLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 48, + "commentStart": 0, "end": 0, "raw": "2.500", "start": 0, @@ -74,12 +74,12 @@ description: Result of parsing translate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 54, + "commentStart": 0, "declaration": { - "commentStart": 61, + "commentStart": 0, "end": 0, "id": { - "commentStart": 61, + "commentStart": 0, "end": 0, "name": "boltHeadLength", "start": 0, @@ -87,10 +87,10 @@ description: Result of parsing translate_after_fillet.kcl }, "init": { "abs_path": false, - "commentStart": 78, + "commentStart": 0, "end": 0, "name": { - "commentStart": 78, + "commentStart": 0, "end": 0, "name": "boltDiameter", "start": 0, @@ -112,19 +112,19 @@ description: Result of parsing translate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 91, + "commentStart": 0, "declaration": { - "commentStart": 98, + "commentStart": 0, "end": 0, "id": { - "commentStart": 98, + "commentStart": 0, "end": 0, "name": "boltHeadDiameter", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 117, + "commentStart": 0, "end": 0, "raw": "0.938", "start": 0, @@ -146,22 +146,22 @@ description: Result of parsing translate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 123, + "commentStart": 0, "declaration": { - "commentStart": 130, + "commentStart": 0, "end": 0, "id": { - "commentStart": 130, + "commentStart": 0, "end": 0, "name": "boltHexDrive", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 145, + "commentStart": 0, "end": 0, "left": { - "commentStart": 145, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -174,7 +174,7 @@ description: Result of parsing translate_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 149, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -200,26 +200,26 @@ description: Result of parsing translate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 151, + "commentStart": 0, "declaration": { - "commentStart": 158, + "commentStart": 0, "end": 0, "id": { - "commentStart": 158, + "commentStart": 0, "end": 0, "name": "boltHexFlatLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 178, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 178, + "commentStart": 0, "end": 0, "name": { - "commentStart": 178, + "commentStart": 0, "end": 0, "name": "boltHexDrive", "start": 0, @@ -232,10 +232,10 @@ description: Result of parsing translate_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 194, + "commentStart": 0, "end": 0, "left": { - "commentStart": 194, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -252,7 +252,7 @@ description: Result of parsing translate_after_fillet.kcl { "arguments": [ { - "commentStart": 212, + "commentStart": 0, "end": 0, "raw": "30", "start": 0, @@ -266,10 +266,10 @@ description: Result of parsing translate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 202, + "commentStart": 0, "end": 0, "name": { - "commentStart": 202, + "commentStart": 0, "end": 0, "name": "toRadians", "start": 0, @@ -279,7 +279,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 202, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -288,10 +288,10 @@ description: Result of parsing translate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 198, + "commentStart": 0, "end": 0, "name": { - "commentStart": 198, + "commentStart": 0, "end": 0, "name": "cos", "start": 0, @@ -301,7 +301,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 198, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -326,19 +326,19 @@ description: Result of parsing translate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 218, + "commentStart": 0, "declaration": { - "commentStart": 225, + "commentStart": 0, "end": 0, "id": { - "commentStart": 225, + "commentStart": 0, "end": 0, "name": "boltThreadLength", "start": 0, "type": "Identifier" }, "init": { - "commentStart": 244, + "commentStart": 0, "end": 0, "raw": "1.75", "start": 0, @@ -360,12 +360,12 @@ description: Result of parsing translate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 248, + "commentStart": 0, "declaration": { - "commentStart": 260, + "commentStart": 0, "end": 0, "id": { - "commentStart": 260, + "commentStart": 0, "end": 0, "name": "bolt", "start": 0, @@ -375,12 +375,12 @@ description: Result of parsing translate_after_fillet.kcl "body": { "body": [ { - "commentStart": 268, + "commentStart": 0, "declaration": { - "commentStart": 309, + "commentStart": 0, "end": 0, "id": { - "commentStart": 309, + "commentStart": 0, "end": 0, "name": "boltHead", "start": 0, @@ -391,21 +391,28 @@ description: Result of parsing translate_after_fillet.kcl { "arguments": [ { - "commentStart": 334, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "'XZ'", + "name": { + "commentStart": 0, + "end": 0, + "name": "XZ", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": "XZ" + "type": "Name", + "type": "Name" } ], "callee": { "abs_path": false, - "commentStart": 320, + "commentStart": 0, "end": 0, "name": { - "commentStart": 320, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -415,7 +422,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 320, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -426,17 +433,17 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 354, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 363, + "commentStart": 0, "elements": [ { - "commentStart": 364, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -448,7 +455,7 @@ description: Result of parsing translate_after_fillet.kcl } }, { - "commentStart": 367, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -469,21 +476,21 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 371, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 380, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 380, + "commentStart": 0, "end": 0, "name": { - "commentStart": 380, + "commentStart": 0, "end": 0, "name": "boltHeadDiameter", "start": 0, @@ -496,7 +503,7 @@ description: Result of parsing translate_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 399, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -515,14 +522,14 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 402, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 408, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -533,10 +540,10 @@ description: Result of parsing translate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 347, + "commentStart": 0, "end": 0, "name": { - "commentStart": 347, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -546,7 +553,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 347, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -558,7 +565,7 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 433, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -567,10 +574,10 @@ description: Result of parsing translate_after_fillet.kcl "arg": { "argument": { "abs_path": false, - "commentStart": 443, + "commentStart": 0, "end": 0, "name": { - "commentStart": 443, + "commentStart": 0, "end": 0, "name": "boltHeadLength", "start": 0, @@ -581,7 +588,7 @@ description: Result of parsing translate_after_fillet.kcl "type": "Name", "type": "Name" }, - "commentStart": 442, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -592,10 +599,10 @@ description: Result of parsing translate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 425, + "commentStart": 0, "end": 0, "name": { - "commentStart": 425, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -605,7 +612,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 425, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -617,14 +624,14 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 473, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 482, + "commentStart": 0, "end": 0, "raw": "0.020", "start": 0, @@ -639,21 +646,21 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 489, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 496, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 497, + "commentStart": 0, "end": 0, "name": { - "commentStart": 497, + "commentStart": 0, "end": 0, "name": "topEdge", "start": 0, @@ -668,10 +675,10 @@ description: Result of parsing translate_after_fillet.kcl "arguments": [ { "abs_path": false, - "commentStart": 522, + "commentStart": 0, "end": 0, "name": { - "commentStart": 522, + "commentStart": 0, "end": 0, "name": "topEdge", "start": 0, @@ -685,10 +692,10 @@ description: Result of parsing translate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 506, + "commentStart": 0, "end": 0, "name": { - "commentStart": 506, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -698,7 +705,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 506, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -714,10 +721,10 @@ description: Result of parsing translate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 466, + "commentStart": 0, "end": 0, "name": { - "commentStart": 466, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -727,7 +734,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 466, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -735,13 +742,13 @@ description: Result of parsing translate_after_fillet.kcl "unlabeled": null } ], - "commentStart": 320, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "3": [ { - "commentStart": 534, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -772,12 +779,12 @@ description: Result of parsing translate_after_fillet.kcl "type": "VariableDeclaration" }, { - "commentStart": 596, + "commentStart": 0, "declaration": { - "commentStart": 596, + "commentStart": 0, "end": 0, "id": { - "commentStart": 596, + "commentStart": 0, "end": 0, "name": "hexPatternSketch", "start": 0, @@ -788,37 +795,31 @@ description: Result of parsing translate_after_fillet.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 629, - "end": 0, - "name": { - "commentStart": 629, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "boltHead", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 639, - "end": 0, - "raw": "'start'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "start" + "arg": { + "commentStart": 0, + "end": 0, + "raw": "'start'", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "start" + } } ], "callee": { "abs_path": false, - "commentStart": 615, + "commentStart": 0, "end": 0, "name": { - "commentStart": 615, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -828,26 +829,42 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 615, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHead", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { - "commentStart": 670, + "commentStart": 0, "elements": [ { - "commentStart": 681, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 681, + "commentStart": 0, "end": 0, "name": { - "commentStart": 681, + "commentStart": 0, "end": 0, "name": "boltHexDrive", "start": 0, @@ -860,7 +877,7 @@ description: Result of parsing translate_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 696, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -876,14 +893,14 @@ description: Result of parsing translate_after_fillet.kcl "type": "BinaryExpression" }, { - "commentStart": 708, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 708, + "commentStart": 0, "end": 0, "name": { - "commentStart": 708, + "commentStart": 0, "end": 0, "name": "boltHexFlatLength", "start": 0, @@ -896,7 +913,7 @@ description: Result of parsing translate_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 728, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -918,7 +935,7 @@ description: Result of parsing translate_after_fillet.kcl "type": "ArrayExpression" }, { - "commentStart": 740, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -927,10 +944,10 @@ description: Result of parsing translate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 655, + "commentStart": 0, "end": 0, "name": { - "commentStart": 655, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -940,500 +957,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 655, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 761, - "end": 0, - "properties": [ - { - "commentStart": 772, - "end": 0, - "key": { - "commentStart": 772, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 780, - "end": 0, - "raw": "270", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 270.0, - "suffix": "None" - } - } - }, - { - "commentStart": 794, - "end": 0, - "key": { - "commentStart": 794, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 803, - "end": 0, - "name": { - "commentStart": 803, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 831, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 750, - "end": 0, - "name": { - "commentStart": 750, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 750, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 852, - "end": 0, - "properties": [ - { - "commentStart": 863, - "end": 0, - "key": { - "commentStart": 863, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 871, - "end": 0, - "raw": "210", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 210.0, - "suffix": "None" - } - } - }, - { - "commentStart": 885, - "end": 0, - "key": { - "commentStart": 885, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 894, - "end": 0, - "name": { - "commentStart": 894, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 922, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 841, - "end": 0, - "name": { - "commentStart": 841, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 841, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 943, - "end": 0, - "properties": [ - { - "commentStart": 954, - "end": 0, - "key": { - "commentStart": 954, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 962, - "end": 0, - "raw": "150", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 150.0, - "suffix": "None" - } - } - }, - { - "commentStart": 976, - "end": 0, - "key": { - "commentStart": 976, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 985, - "end": 0, - "name": { - "commentStart": 985, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1013, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 932, - "end": 0, - "name": { - "commentStart": 932, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 932, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1034, - "end": 0, - "properties": [ - { - "commentStart": 1045, - "end": 0, - "key": { - "commentStart": 1045, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1053, - "end": 0, - "raw": "90", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 90.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1066, - "end": 0, - "key": { - "commentStart": 1066, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1075, - "end": 0, - "name": { - "commentStart": 1075, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1103, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1023, - "end": 0, - "name": { - "commentStart": 1023, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1023, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [ - { - "commentStart": 1124, - "end": 0, - "properties": [ - { - "commentStart": 1135, - "end": 0, - "key": { - "commentStart": 1135, - "end": 0, - "name": "angle", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "commentStart": 1143, - "end": 0, - "raw": "30", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 30.0, - "suffix": "None" - } - } - }, - { - "commentStart": 1156, - "end": 0, - "key": { - "commentStart": 1156, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, - "start": 0, - "type": "ObjectProperty", - "value": { - "abs_path": false, - "commentStart": 1165, - "end": 0, - "name": { - "commentStart": 1165, - "end": 0, - "name": "boltHexFlatLength", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - } - } - ], - "start": 0, - "type": "ObjectExpression", - "type": "ObjectExpression" - }, - { - "commentStart": 1193, - "end": 0, - "start": 0, - "type": "PipeSubstitution", - "type": "PipeSubstitution" - } - ], - "callee": { - "abs_path": false, - "commentStart": 1113, - "end": 0, - "name": { - "commentStart": 1113, - "end": 0, - "name": "angledLine", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1113, - "end": 0, - "start": 0, - "type": "CallExpression", - "type": "CallExpression" - }, - { - "arguments": [], - "callee": { - "abs_path": false, - "commentStart": 1203, - "end": 0, - "name": { - "commentStart": 1203, - "end": 0, - "name": "close", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 1203, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1444,22 +968,410 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1226, + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "270", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 270.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1235, + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "210", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 210.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "150", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 150.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "90", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 90.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "angle", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "30", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 30.0, + "suffix": "None" + } + } + }, + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHexFlatLength", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "angledLine", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null + }, + { + "arguments": [], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "close", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "length", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, "end": 0, "left": { "argument": { "abs_path": false, - "commentStart": 1236, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1236, + "commentStart": 0, "end": 0, "name": "boltHeadLength", "start": 0, @@ -1470,7 +1382,7 @@ description: Result of parsing translate_after_fillet.kcl "type": "Name", "type": "Name" }, - "commentStart": 1235, + "commentStart": 0, "end": 0, "operator": "-", "start": 0, @@ -1479,7 +1391,7 @@ description: Result of parsing translate_after_fillet.kcl }, "operator": "*", "right": { - "commentStart": 1253, + "commentStart": 0, "end": 0, "raw": "0.75", "start": 0, @@ -1498,10 +1410,10 @@ description: Result of parsing translate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1218, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1218, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1511,7 +1423,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1218, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1519,7 +1431,7 @@ description: Result of parsing translate_after_fillet.kcl "unlabeled": null } ], - "commentStart": 615, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1535,12 +1447,12 @@ description: Result of parsing translate_after_fillet.kcl "type": "VariableDeclaration" }, { - "commentStart": 1258, + "commentStart": 0, "declaration": { - "commentStart": 1262, + "commentStart": 0, "end": 0, "id": { - "commentStart": 1262, + "commentStart": 0, "end": 0, "name": "boltBody", "start": 0, @@ -1551,37 +1463,31 @@ description: Result of parsing translate_after_fillet.kcl { "arguments": [ { - "abs_path": false, - "commentStart": 1287, - "end": 0, - "name": { - "commentStart": 1287, + "type": "LabeledArg", + "label": { + "commentStart": 0, "end": 0, - "name": "boltHead", + "name": "face", "start": 0, "type": "Identifier" }, - "path": [], - "start": 0, - "type": "Name", - "type": "Name" - }, - { - "commentStart": 1297, - "end": 0, - "raw": "'end'", - "start": 0, - "type": "Literal", - "type": "Literal", - "value": "end" + "arg": { + "commentStart": 0, + "end": 0, + "raw": "'end'", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": "end" + } } ], "callee": { "abs_path": false, - "commentStart": 1273, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1273, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -1591,28 +1497,44 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1273, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "boltHead", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + } }, { "arguments": [ { "type": "LabeledArg", "label": { - "commentStart": 1318, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1327, + "commentStart": 0, "elements": [ { - "commentStart": 1328, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1624,7 +1546,7 @@ description: Result of parsing translate_after_fillet.kcl } }, { - "commentStart": 1331, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -1645,21 +1567,21 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1335, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1344, + "commentStart": 0, "end": 0, "left": { "abs_path": false, - "commentStart": 1344, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1344, + "commentStart": 0, "end": 0, "name": "boltDiameter", "start": 0, @@ -1672,7 +1594,7 @@ description: Result of parsing translate_after_fillet.kcl }, "operator": "/", "right": { - "commentStart": 1359, + "commentStart": 0, "end": 0, "raw": "2", "start": 0, @@ -1691,14 +1613,14 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1362, + "commentStart": 0, "end": 0, "name": "tag", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1368, + "commentStart": 0, "end": 0, "start": 0, "type": "TagDeclarator", @@ -1709,10 +1631,10 @@ description: Result of parsing translate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1311, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1311, + "commentStart": 0, "end": 0, "name": "circle", "start": 0, @@ -1722,7 +1644,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1311, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1734,7 +1656,7 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1396, + "commentStart": 0, "end": 0, "name": "length", "start": 0, @@ -1742,10 +1664,10 @@ description: Result of parsing translate_after_fillet.kcl }, "arg": { "abs_path": false, - "commentStart": 1405, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1405, + "commentStart": 0, "end": 0, "name": "boltLength", "start": 0, @@ -1760,10 +1682,10 @@ description: Result of parsing translate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1388, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1388, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -1773,7 +1695,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1388, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1785,14 +1707,14 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1431, + "commentStart": 0, "end": 0, "name": "radius", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1440, + "commentStart": 0, "end": 0, "raw": ".020", "start": 0, @@ -1807,23 +1729,23 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1446, + "commentStart": 0, "end": 0, "name": "tags", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1453, + "commentStart": 0, "elements": [ { "arguments": [ { "abs_path": false, - "commentStart": 1470, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1470, + "commentStart": 0, "end": 0, "name": "filletEdge", "start": 0, @@ -1837,10 +1759,10 @@ description: Result of parsing translate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1454, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1454, + "commentStart": 0, "end": 0, "name": "getOppositeEdge", "start": 0, @@ -1850,7 +1772,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1454, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -1866,10 +1788,10 @@ description: Result of parsing translate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1424, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1424, + "commentStart": 0, "end": 0, "name": "fillet", "start": 0, @@ -1879,7 +1801,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1424, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1891,14 +1813,14 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1502, + "commentStart": 0, "end": 0, "name": "color", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1510, + "commentStart": 0, "end": 0, "raw": "\"#4dd043\"", "start": 0, @@ -1910,14 +1832,14 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1521, + "commentStart": 0, "end": 0, "name": "metalness", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1533, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1932,14 +1854,14 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1537, + "commentStart": 0, "end": 0, "name": "roughness", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1549, + "commentStart": 0, "end": 0, "raw": "90", "start": 0, @@ -1954,10 +1876,10 @@ description: Result of parsing translate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1491, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1491, + "commentStart": 0, "end": 0, "name": "appearance", "start": 0, @@ -1967,7 +1889,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1491, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -1975,7 +1897,7 @@ description: Result of parsing translate_after_fillet.kcl "unlabeled": null } ], - "commentStart": 1273, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", @@ -1993,10 +1915,10 @@ description: Result of parsing translate_after_fillet.kcl { "argument": { "abs_path": false, - "commentStart": 1563, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1563, + "commentStart": 0, "end": 0, "name": "boltBody", "start": 0, @@ -2007,20 +1929,20 @@ description: Result of parsing translate_after_fillet.kcl "type": "Name", "type": "Name" }, - "commentStart": 1552, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 268, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 1258, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2031,7 +1953,7 @@ description: Result of parsing translate_after_fillet.kcl ], "2": [ { - "commentStart": 1552, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2045,7 +1967,7 @@ description: Result of parsing translate_after_fillet.kcl }, "start": 0 }, - "commentStart": 264, + "commentStart": 0, "end": 0, "params": [], "start": 0, @@ -2063,7 +1985,7 @@ description: Result of parsing translate_after_fillet.kcl "visibility": "export" }, { - "commentStart": 1573, + "commentStart": 0, "end": 0, "expression": { "body": [ @@ -2071,10 +1993,10 @@ description: Result of parsing translate_after_fillet.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 1575, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1575, + "commentStart": 0, "end": 0, "name": "bolt", "start": 0, @@ -2084,7 +2006,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1575, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -2095,14 +2017,14 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1597, + "commentStart": 0, "end": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1601, + "commentStart": 0, "end": 0, "raw": "10", "start": 0, @@ -2117,14 +2039,14 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1605, + "commentStart": 0, "end": 0, "name": "y", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1609, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2139,14 +2061,14 @@ description: Result of parsing translate_after_fillet.kcl { "type": "LabeledArg", "label": { - "commentStart": 1612, + "commentStart": 0, "end": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 1616, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -2161,10 +2083,10 @@ description: Result of parsing translate_after_fillet.kcl ], "callee": { "abs_path": false, - "commentStart": 1587, + "commentStart": 0, "end": 0, "name": { - "commentStart": 1587, + "commentStart": 0, "end": 0, "name": "translate", "start": 0, @@ -2174,7 +2096,7 @@ description: Result of parsing translate_after_fillet.kcl "start": 0, "type": "Name" }, - "commentStart": 1587, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -2182,13 +2104,13 @@ description: Result of parsing translate_after_fillet.kcl "unlabeled": null } ], - "commentStart": 1575, + "commentStart": 0, "end": 0, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "commentStart": 1618, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2217,7 +2139,7 @@ description: Result of parsing translate_after_fillet.kcl "nonCodeNodes": { "6": [ { - "commentStart": 248, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -2228,7 +2150,7 @@ description: Result of parsing translate_after_fillet.kcl ], "7": [ { - "commentStart": 1573, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/translate_after_fillet/input.kcl b/rust/kcl-lib/tests/translate_after_fillet/input.kcl index a53c193c7..cec01967a 100644 --- a/rust/kcl-lib/tests/translate_after_fillet/input.kcl +++ b/rust/kcl-lib/tests/translate_after_fillet/input.kcl @@ -8,41 +8,41 @@ export boltThreadLength = 1.75 export fn bolt() { // Create the head of the cap screw - boltHead = startSketchOn('XZ') + boltHead = startSketchOn(XZ) |> circle(center = [0, 0], radius = boltHeadDiameter / 2, tag = $topEdge) |> extrude(length = -boltHeadLength) |> fillet(radius = 0.020, tags = [topEdge, getOppositeEdge(topEdge)]) // Define the sketch of the hex pattern on the screw head - hexPatternSketch = startSketchOn(boltHead, 'start') + hexPatternSketch = startSketchOn(boltHead, face = 'start') |> startProfileAt([ boltHexDrive / 2, boltHexFlatLength / 2 ], %) - |> angledLine({ + |> angledLine( angle = 270, - length = boltHexFlatLength - }, %) - |> angledLine({ + length = boltHexFlatLength, + ) + |> angledLine( angle = 210, - length = boltHexFlatLength - }, %) - |> angledLine({ + length = boltHexFlatLength, + ) + |> angledLine( angle = 150, - length = boltHexFlatLength - }, %) - |> angledLine({ + length = boltHexFlatLength, + ) + |> angledLine( angle = 90, - length = boltHexFlatLength - }, %) - |> angledLine({ + length = boltHexFlatLength, + ) + |> angledLine( angle = 30, - length = boltHexFlatLength - }, %) + length = boltHexFlatLength, + ) |> close() |> extrude(length = -boltHeadLength * 0.75) - boltBody = startSketchOn(boltHead, 'end') + boltBody = startSketchOn(boltHead, face = 'end') |> circle(center = [0, 0], radius = boltDiameter / 2, tag = $filletEdge) |> extrude(length = boltLength) |> fillet(radius = .020, tags = [getOppositeEdge(filletEdge)]) diff --git a/rust/kcl-lib/tests/translate_after_fillet/ops.snap b/rust/kcl-lib/tests/translate_after_fillet/ops.snap index 4e3cfdd41..5f8dba9b2 100644 --- a/rust/kcl-lib/tests/translate_after_fillet/ops.snap +++ b/rust/kcl-lib/tests/translate_after_fillet/ops.snap @@ -28,7 +28,7 @@ description: Operations executed translate_after_fillet.kcl "name": "bolt", "functionSourceRange": [ 264, - 1573, + 1565, 0 ], "unlabeledArg": null, @@ -38,10 +38,10 @@ description: Operations executed translate_after_fillet.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { - "type": "String", - "value": "XZ" + "type": "Plane", + "artifact_id": "[uuid]" }, "sourceRange": [] } @@ -134,16 +134,7 @@ description: Operations executed translate_after_fillet.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "start" @@ -154,7 +145,15 @@ description: Operations executed translate_after_fillet.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { @@ -163,7 +162,13 @@ description: Operations executed translate_after_fillet.kcl "type": "Number", "value": -0.46875, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "sourceRange": [] @@ -184,16 +189,7 @@ description: Operations executed translate_after_fillet.kcl }, { "labeledArgs": { - "data": { - "value": { - "type": "Solid", - "value": { - "artifactId": "[uuid]" - } - }, - "sourceRange": [] - }, - "tag": { + "face": { "value": { "type": "String", "value": "end" @@ -204,7 +200,15 @@ description: Operations executed translate_after_fillet.kcl "name": "startSketchOn", "sourceRange": [], "type": "StdLibCall", - "unlabeledArg": null + "unlabeledArg": { + "value": { + "type": "Solid", + "value": { + "artifactId": "[uuid]" + } + }, + "sourceRange": [] + } }, { "labeledArgs": { diff --git a/rust/kcl-lib/tests/translate_after_fillet/program_memory.snap b/rust/kcl-lib/tests/translate_after_fillet/program_memory.snap index 6235f73c5..4cf278276 100644 --- a/rust/kcl-lib/tests/translate_after_fillet/program_memory.snap +++ b/rust/kcl-lib/tests/translate_after_fillet/program_memory.snap @@ -49,14 +49,26 @@ description: Variables in memory after executing translate_after_fillet.kcl "type": "Number", "value": 0.5, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "boltHexFlatLength": { "type": "Number", "value": 0.2887, "ty": { - "type": "Unknown" + "type": "Default", + "len": { + "type": "Mm" + }, + "angle": { + "type": "Degrees" + } } }, "boltLength": { diff --git a/rust/kcl-lib/tests/translate_after_fillet/unparsed.snap b/rust/kcl-lib/tests/translate_after_fillet/unparsed.snap index c7233b53a..d2c29f75b 100644 --- a/rust/kcl-lib/tests/translate_after_fillet/unparsed.snap +++ b/rust/kcl-lib/tests/translate_after_fillet/unparsed.snap @@ -18,35 +18,20 @@ export fn bolt() { |> fillet(radius = 0.020, tags = [topEdge, getOppositeEdge(topEdge)]) // Define the sketch of the hex pattern on the screw head - hexPatternSketch = startSketchOn(boltHead, 'start') + hexPatternSketch = startSketchOn(boltHead, face = START) |> startProfileAt([ boltHexDrive / 2, boltHexFlatLength / 2 ], %) - |> angledLine({ - angle = 270, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 210, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 150, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 90, - length = boltHexFlatLength - }, %) - |> angledLine({ - angle = 30, - length = boltHexFlatLength - }, %) + |> angledLine(angle = 270, length = boltHexFlatLength) + |> angledLine(angle = 210, length = boltHexFlatLength) + |> angledLine(angle = 150, length = boltHexFlatLength) + |> angledLine(angle = 90, length = boltHexFlatLength) + |> angledLine(angle = 30, length = boltHexFlatLength) |> close() |> extrude(length = -boltHeadLength * 0.75) - boltBody = startSketchOn(boltHead, 'end') + boltBody = startSketchOn(boltHead, face = END) |> circle(center = [0, 0], radius = boltDiameter / 2, tag = $filletEdge) |> extrude(length = boltLength) |> fillet(radius = .020, tags = [getOppositeEdge(filletEdge)]) diff --git a/rust/kcl-lib/tests/union_cubes/artifact_commands.snap b/rust/kcl-lib/tests/union_cubes/artifact_commands.snap index 4a790e730..45f1dfbd9 100644 --- a/rust/kcl-lib/tests/union_cubes/artifact_commands.snap +++ b/rust/kcl-lib/tests/union_cubes/artifact_commands.snap @@ -178,8 +178,9 @@ description: Artifact commands union_cubes.kcl "command": { "type": "extrude", "target": "[uuid]", - "distance": 10.0, - "faces": null + "distance": 20.0, + "faces": null, + "opposite": "None" } }, { @@ -341,8 +342,8 @@ description: Artifact commands union_cubes.kcl "type": "move_path_pen", "path": "[uuid]", "to": { - "x": 10.0, - "y": 0.0, + "x": 2.0, + "y": -2.0, "z": 0.0 } } @@ -363,8 +364,8 @@ description: Artifact commands union_cubes.kcl "segment": { "type": "line", "end": { - "x": 30.0, - "y": 0.0, + "x": 12.0, + "y": -2.0, "z": 0.0 }, "relative": false @@ -380,8 +381,8 @@ description: Artifact commands union_cubes.kcl "segment": { "type": "line", "end": { - "x": 30.0, - "y": 20.0, + "x": 12.0, + "y": 8.0, "z": 0.0 }, "relative": false @@ -397,8 +398,8 @@ description: Artifact commands union_cubes.kcl "segment": { "type": "line", "end": { - "x": 10.0, - "y": 20.0, + "x": 2.0, + "y": 8.0, "z": 0.0 }, "relative": false @@ -436,7 +437,8 @@ description: Artifact commands union_cubes.kcl "type": "extrude", "target": "[uuid]", "distance": 10.0, - "faces": null + "faces": null, + "opposite": "None" } }, { @@ -542,5 +544,41 @@ description: Artifact commands union_cubes.kcl "edge_id": "[uuid]", "face_id": "[uuid]" } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "set_object_transform", + "object_id": "[uuid]", + "transforms": [ + { + "translate": { + "property": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + }, + "set": false, + "is_local": true + }, + "rotate_rpy": null, + "rotate_angle_axis": null, + "scale": null + } + ] + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "boolean_union", + "solid_ids": [ + "[uuid]", + "[uuid]" + ], + "tolerance": 0.0000001 + } } ] diff --git a/rust/kcl-lib/tests/union_cubes/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/union_cubes/artifact_graph_flowchart.snap.md index 0acf8a424..d94dcb7c6 100644 --- a/rust/kcl-lib/tests/union_cubes/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/union_cubes/artifact_graph_flowchart.snap.md @@ -1,23 +1,23 @@ ```mermaid flowchart LR subgraph path2 [Path] - 2["Path
[52, 103, 0]"] - 3["Segment
[111, 163, 0]"] - 4["Segment
[171, 223, 0]"] - 5["Segment
[231, 283, 0]"] - 6["Segment
[291, 298, 0]"] + 2["Path
[58, 113, 0]"] + 3["Segment
[121, 177, 0]"] + 4["Segment
[185, 241, 0]"] + 5["Segment
[249, 305, 0]"] + 6["Segment
[313, 320, 0]"] 7[Solid2d] end subgraph path24 [Path] - 24["Path
[52, 103, 0]"] - 25["Segment
[111, 163, 0]"] - 26["Segment
[171, 223, 0]"] - 27["Segment
[231, 283, 0]"] - 28["Segment
[291, 298, 0]"] + 24["Path
[58, 113, 0]"] + 25["Segment
[121, 177, 0]"] + 26["Segment
[185, 241, 0]"] + 27["Segment
[249, 305, 0]"] + 28["Segment
[313, 320, 0]"] 29[Solid2d] end - 1["Plane
[27, 44, 0]"] - 8["Sweep Extrusion
[306, 326, 0]"] + 1["Plane
[33, 50, 0]"] + 8["Sweep Extrusion
[328, 354, 0]"] 9[Wall] 10[Wall] 11[Wall] @@ -32,8 +32,8 @@ flowchart LR 20["SweepEdge Adjacent"] 21["SweepEdge Opposite"] 22["SweepEdge Adjacent"] - 23["Plane
[27, 44, 0]"] - 30["Sweep Extrusion
[306, 326, 0]"] + 23["Plane
[33, 50, 0]"] + 30["Sweep Extrusion
[328, 354, 0]"] 31[Wall] 32[Wall] 33[Wall] diff --git a/rust/kcl-lib/tests/union_cubes/ast.snap b/rust/kcl-lib/tests/union_cubes/ast.snap index a46b083a7..c25d7956f 100644 --- a/rust/kcl-lib/tests/union_cubes/ast.snap +++ b/rust/kcl-lib/tests/union_cubes/ast.snap @@ -8,10 +8,10 @@ description: Result of parsing union_cubes.kcl { "commentStart": 0, "declaration": { - "commentStart": 3, + "commentStart": 0, "end": 0, "id": { - "commentStart": 3, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -27,10 +27,10 @@ description: Result of parsing union_cubes.kcl "arguments": [ { "abs_path": false, - "commentStart": 41, + "commentStart": 0, "end": 0, "name": { - "commentStart": 41, + "commentStart": 0, "end": 0, "name": "XY", "start": 0, @@ -44,10 +44,10 @@ description: Result of parsing union_cubes.kcl ], "callee": { "abs_path": false, - "commentStart": 27, + "commentStart": 0, "end": 0, "name": { - "commentStart": 27, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -57,7 +57,7 @@ description: Result of parsing union_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 27, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -66,17 +66,17 @@ description: Result of parsing union_cubes.kcl { "arguments": [ { - "commentStart": 67, + "commentStart": 0, "elements": [ { - "commentStart": 68, + "commentStart": 0, "end": 0, "left": { - "commentStart": 68, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 68, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -84,7 +84,7 @@ description: Result of parsing union_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 75, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -101,30 +101,34 @@ description: Result of parsing union_cubes.kcl }, "operator": "-", "right": { - "commentStart": 80, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, { - "commentStart": 84, + "commentStart": 0, "end": 0, "left": { - "commentStart": 84, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 84, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -132,7 +136,7 @@ description: Result of parsing union_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 91, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -149,16 +153,20 @@ description: Result of parsing union_cubes.kcl }, "operator": "-", "right": { - "commentStart": 96, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", @@ -171,7 +179,7 @@ description: Result of parsing union_cubes.kcl "type": "ArrayExpression" }, { - "commentStart": 101, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -180,10 +188,10 @@ description: Result of parsing union_cubes.kcl ], "callee": { "abs_path": false, - "commentStart": 52, + "commentStart": 0, "end": 0, "name": { - "commentStart": 52, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -193,7 +201,7 @@ description: Result of parsing union_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 52, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -204,24 +212,24 @@ description: Result of parsing union_cubes.kcl { "type": "LabeledArg", "label": { - "commentStart": 116, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 130, + "commentStart": 0, "elements": [ { - "commentStart": 131, + "commentStart": 0, "end": 0, "left": { - "commentStart": 131, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 131, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -229,7 +237,7 @@ description: Result of parsing union_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 138, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -246,30 +254,34 @@ description: Result of parsing union_cubes.kcl }, "operator": "+", "right": { - "commentStart": 143, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, { - "commentStart": 147, + "commentStart": 0, "end": 0, "left": { - "commentStart": 147, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 147, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -277,7 +289,7 @@ description: Result of parsing union_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 154, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -294,16 +306,20 @@ description: Result of parsing union_cubes.kcl }, "operator": "-", "right": { - "commentStart": 159, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", @@ -319,10 +335,10 @@ description: Result of parsing union_cubes.kcl ], "callee": { "abs_path": false, - "commentStart": 111, + "commentStart": 0, "end": 0, "name": { - "commentStart": 111, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -332,7 +348,7 @@ description: Result of parsing union_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 111, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -344,24 +360,24 @@ description: Result of parsing union_cubes.kcl { "type": "LabeledArg", "label": { - "commentStart": 176, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 190, + "commentStart": 0, "elements": [ { - "commentStart": 191, + "commentStart": 0, "end": 0, "left": { - "commentStart": 191, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 191, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -369,7 +385,7 @@ description: Result of parsing union_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 198, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -386,30 +402,34 @@ description: Result of parsing union_cubes.kcl }, "operator": "+", "right": { - "commentStart": 203, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, { - "commentStart": 207, + "commentStart": 0, "end": 0, "left": { - "commentStart": 207, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 207, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -417,7 +437,7 @@ description: Result of parsing union_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 214, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -434,16 +454,20 @@ description: Result of parsing union_cubes.kcl }, "operator": "+", "right": { - "commentStart": 219, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", @@ -459,10 +483,10 @@ description: Result of parsing union_cubes.kcl ], "callee": { "abs_path": false, - "commentStart": 171, + "commentStart": 0, "end": 0, "name": { - "commentStart": 171, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -472,7 +496,7 @@ description: Result of parsing union_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 171, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -484,24 +508,24 @@ description: Result of parsing union_cubes.kcl { "type": "LabeledArg", "label": { - "commentStart": 236, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 250, + "commentStart": 0, "elements": [ { - "commentStart": 251, + "commentStart": 0, "end": 0, "left": { - "commentStart": 251, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 251, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -509,7 +533,7 @@ description: Result of parsing union_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 258, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -526,30 +550,34 @@ description: Result of parsing union_cubes.kcl }, "operator": "-", "right": { - "commentStart": 263, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, { - "commentStart": 267, + "commentStart": 0, "end": 0, "left": { - "commentStart": 267, + "commentStart": 0, "computed": false, "end": 0, "object": { - "commentStart": 267, + "commentStart": 0, "end": 0, "name": "center", "start": 0, @@ -557,7 +585,7 @@ description: Result of parsing union_cubes.kcl "type": "Identifier" }, "property": { - "commentStart": 274, + "commentStart": 0, "end": 0, "raw": "1", "start": 0, @@ -574,16 +602,20 @@ description: Result of parsing union_cubes.kcl }, "operator": "+", "right": { - "commentStart": 279, + "abs_path": false, + "commentStart": 0, "end": 0, - "raw": "10", + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "Name", + "type": "Name" }, "start": 0, "type": "BinaryExpression", @@ -599,10 +631,10 @@ description: Result of parsing union_cubes.kcl ], "callee": { "abs_path": false, - "commentStart": 231, + "commentStart": 0, "end": 0, "name": { - "commentStart": 231, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -612,7 +644,7 @@ description: Result of parsing union_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 231, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -623,10 +655,10 @@ description: Result of parsing union_cubes.kcl "arguments": [], "callee": { "abs_path": false, - "commentStart": 291, + "commentStart": 0, "end": 0, "name": { - "commentStart": 291, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -636,7 +668,7 @@ description: Result of parsing union_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 291, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -647,32 +679,56 @@ description: Result of parsing union_cubes.kcl { "type": "LabeledArg", "label": { - "commentStart": 314, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 323, + "commentStart": 0, "end": 0, - "raw": "10", + "left": { + "commentStart": 0, + "end": 0, + "raw": "2", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 2.0, + "suffix": "None" + } + }, + "operator": "*", + "right": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 10.0, - "suffix": "None" - } + "type": "BinaryExpression", + "type": "BinaryExpression" } } ], "callee": { "abs_path": false, - "commentStart": 306, + "commentStart": 0, "end": 0, "name": { - "commentStart": 306, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -682,7 +738,7 @@ description: Result of parsing union_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 306, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -690,35 +746,45 @@ description: Result of parsing union_cubes.kcl "unlabeled": null } ], - "commentStart": 27, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, - "commentStart": 20, + "commentStart": 0, "end": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], - "commentStart": 16, + "commentStart": 0, "end": 0, "start": 0 }, - "commentStart": 7, + "commentStart": 0, "end": 0, "params": [ { "type": "Parameter", "identifier": { - "commentStart": 8, + "commentStart": 0, "end": 0, "name": "center", "start": 0, "type": "Identifier" } + }, + { + "type": "Parameter", + "identifier": { + "commentStart": 0, + "end": 0, + "name": "size", + "start": 0, + "type": "Identifier" + } } ], "start": 0, @@ -735,12 +801,12 @@ description: Result of parsing union_cubes.kcl "type": "VariableDeclaration" }, { - "commentStart": 328, + "commentStart": 0, "declaration": { - "commentStart": 330, + "commentStart": 0, "end": 0, "id": { - "commentStart": 330, + "commentStart": 0, "end": 0, "name": "part001", "start": 0, @@ -749,10 +815,10 @@ description: Result of parsing union_cubes.kcl "init": { "arguments": [ { - "commentStart": 345, + "commentStart": 0, "elements": [ { - "commentStart": 346, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -764,7 +830,7 @@ description: Result of parsing union_cubes.kcl } }, { - "commentStart": 349, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -780,14 +846,26 @@ description: Result of parsing union_cubes.kcl "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" + }, + { + "commentStart": 0, + "end": 0, + "raw": "10", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 10.0, + "suffix": "None" + } } ], "callee": { "abs_path": false, - "commentStart": 340, + "commentStart": 0, "end": 0, "name": { - "commentStart": 340, + "commentStart": 0, "end": 0, "name": "cube", "start": 0, @@ -797,7 +875,7 @@ description: Result of parsing union_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 340, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -813,73 +891,141 @@ description: Result of parsing union_cubes.kcl "type": "VariableDeclaration" }, { - "commentStart": 353, + "commentStart": 0, "declaration": { - "commentStart": 353, + "commentStart": 0, "end": 0, "id": { - "commentStart": 353, + "commentStart": 0, "end": 0, "name": "part002", "start": 0, "type": "Identifier" }, "init": { - "arguments": [ + "body": [ { - "commentStart": 368, - "elements": [ + "arguments": [ { - "commentStart": 369, + "commentStart": 0, + "elements": [ + { + "commentStart": 0, + "end": 0, + "raw": "7", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 7.0, + "suffix": "None" + } + }, + { + "commentStart": 0, + "end": 0, + "raw": "3", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 3.0, + "suffix": "None" + } + } + ], "end": 0, - "raw": "20", "start": 0, - "type": "Literal", - "type": "Literal", - "value": { - "value": 20.0, - "suffix": "None" - } + "type": "ArrayExpression", + "type": "ArrayExpression" }, { - "commentStart": 373, + "commentStart": 0, "end": 0, - "raw": "10", + "raw": "5", "start": 0, "type": "Literal", "type": "Literal", "value": { - "value": 10.0, + "value": 5.0, "suffix": "None" } } ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "cube", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, "end": 0, "start": 0, - "type": "ArrayExpression", - "type": "ArrayExpression" + "type": "CallExpression", + "type": "CallExpression" + }, + { + "arguments": [ + { + "type": "LabeledArg", + "label": { + "commentStart": 0, + "end": 0, + "name": "z", + "start": 0, + "type": "Identifier" + }, + "arg": { + "commentStart": 0, + "end": 0, + "raw": "1", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": { + "value": 1.0, + "suffix": "None" + } + } + } + ], + "callee": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "translate", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name" + }, + "commentStart": 0, + "end": 0, + "start": 0, + "type": "CallExpressionKw", + "type": "CallExpressionKw", + "unlabeled": null } ], - "callee": { - "abs_path": false, - "commentStart": 363, - "end": 0, - "name": { - "commentStart": 363, - "end": 0, - "name": "cube", - "start": 0, - "type": "Identifier" - }, - "path": [], - "start": 0, - "type": "Name" - }, - "commentStart": 363, + "commentStart": 0, "end": 0, "start": 0, - "type": "CallExpression", - "type": "CallExpression" + "type": "PipeExpression", + "type": "PipeExpression" }, "start": 0, "type": "VariableDeclarator" @@ -891,12 +1037,12 @@ description: Result of parsing union_cubes.kcl "type": "VariableDeclaration" }, { - "commentStart": 377, + "commentStart": 0, "declaration": { - "commentStart": 379, + "commentStart": 0, "end": 0, "id": { - "commentStart": 379, + "commentStart": 0, "end": 0, "name": "fullPart", "start": 0, @@ -905,14 +1051,14 @@ description: Result of parsing union_cubes.kcl "init": { "arguments": [ { - "commentStart": 396, + "commentStart": 0, "elements": [ { "abs_path": false, - "commentStart": 397, + "commentStart": 0, "end": 0, "name": { - "commentStart": 397, + "commentStart": 0, "end": 0, "name": "part001", "start": 0, @@ -925,10 +1071,10 @@ description: Result of parsing union_cubes.kcl }, { "abs_path": false, - "commentStart": 406, + "commentStart": 0, "end": 0, "name": { - "commentStart": 406, + "commentStart": 0, "end": 0, "name": "part002", "start": 0, @@ -948,10 +1094,10 @@ description: Result of parsing union_cubes.kcl ], "callee": { "abs_path": false, - "commentStart": 390, + "commentStart": 0, "end": 0, "name": { - "commentStart": 390, + "commentStart": 0, "end": 0, "name": "union", "start": 0, @@ -961,7 +1107,7 @@ description: Result of parsing union_cubes.kcl "start": 0, "type": "Name" }, - "commentStart": 390, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -983,7 +1129,7 @@ description: Result of parsing union_cubes.kcl "nonCodeNodes": { "0": [ { - "commentStart": 328, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", @@ -994,7 +1140,7 @@ description: Result of parsing union_cubes.kcl ], "2": [ { - "commentStart": 377, + "commentStart": 0, "end": 0, "start": 0, "type": "NonCodeNode", diff --git a/rust/kcl-lib/tests/union_cubes/input.kcl b/rust/kcl-lib/tests/union_cubes/input.kcl index f2652c059..e79ab9fbf 100644 --- a/rust/kcl-lib/tests/union_cubes/input.kcl +++ b/rust/kcl-lib/tests/union_cubes/input.kcl @@ -1,14 +1,15 @@ -fn cube(center) { +fn cube(center, size) { return startSketchOn(XY) - |> startProfileAt([center[0] - 10, center[1] - 10], %) - |> line(endAbsolute = [center[0] + 10, center[1] - 10]) - |> line(endAbsolute = [center[0] + 10, center[1] + 10]) - |> line(endAbsolute = [center[0] - 10, center[1] + 10]) + |> startProfileAt([center[0] - size, center[1] - size], %) + |> line(endAbsolute = [center[0] + size, center[1] - size]) + |> line(endAbsolute = [center[0] + size, center[1] + size]) + |> line(endAbsolute = [center[0] - size, center[1] + size]) |> close() - |> extrude(length = 10) + |> extrude(length = 2 * size) } -part001 = cube([0, 0]) -part002 = cube([20, 10]) +part001 = cube([0, 0], 10) +part002 = cube([7, 3], 5) + |> translate(z = 1) fullPart = union([part001, part002]) diff --git a/rust/kcl-lib/tests/union_cubes/ops.snap b/rust/kcl-lib/tests/union_cubes/ops.snap index 2554b6bb9..8224d7b05 100644 --- a/rust/kcl-lib/tests/union_cubes/ops.snap +++ b/rust/kcl-lib/tests/union_cubes/ops.snap @@ -10,7 +10,7 @@ description: Operations executed union_cubes.kcl "name": "cube", "functionSourceRange": [ 7, - 328, + 356, 0 ], "unlabeledArg": null, @@ -20,7 +20,7 @@ description: Operations executed union_cubes.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" @@ -38,7 +38,7 @@ description: Operations executed union_cubes.kcl "length": { "value": { "type": "Number", - "value": 10.0, + "value": 20.0, "ty": { "type": "Default", "len": { @@ -75,7 +75,7 @@ description: Operations executed union_cubes.kcl "name": "cube", "functionSourceRange": [ 7, - 328, + 356, 0 ], "unlabeledArg": null, @@ -85,7 +85,7 @@ description: Operations executed union_cubes.kcl }, { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "Plane", "artifact_id": "[uuid]" diff --git a/rust/kcl-lib/tests/union_cubes/program_memory.snap b/rust/kcl-lib/tests/union_cubes/program_memory.snap index 6bc15c2d2..85076a203 100644 --- a/rust/kcl-lib/tests/union_cubes/program_memory.snap +++ b/rust/kcl-lib/tests/union_cubes/program_memory.snap @@ -131,22 +131,34 @@ description: Variables in memory after executing union_cubes.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -176,7 +188,7 @@ description: Variables in memory after executing union_cubes.kcl "type": "Mm" } }, - "height": 10.0, + "height": 20.0, "startCapId": "[uuid]", "endCapId": "[uuid]", "units": { @@ -309,22 +321,34 @@ description: Variables in memory after executing union_cubes.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -354,7 +378,7 @@ description: Variables in memory after executing union_cubes.kcl "type": "Mm" } }, - "height": 10.0, + "height": 20.0, "startCapId": "[uuid]", "endCapId": "[uuid]", "units": { @@ -408,13 +432,13 @@ description: Variables in memory after executing union_cubes.kcl "sourceRange": [] }, "from": [ - 10.0, - 0.0 + 2.0, + -2.0 ], "tag": null, "to": [ - 30.0, - 0.0 + 12.0, + -2.0 ], "type": "ToPoint", "units": { @@ -427,13 +451,13 @@ description: Variables in memory after executing union_cubes.kcl "sourceRange": [] }, "from": [ - 30.0, - 0.0 + 12.0, + -2.0 ], "tag": null, "to": [ - 30.0, - 20.0 + 12.0, + 8.0 ], "type": "ToPoint", "units": { @@ -446,13 +470,13 @@ description: Variables in memory after executing union_cubes.kcl "sourceRange": [] }, "from": [ - 30.0, - 20.0 + 12.0, + 8.0 ], "tag": null, "to": [ - 10.0, - 20.0 + 2.0, + 8.0 ], "type": "ToPoint", "units": { @@ -465,13 +489,13 @@ description: Variables in memory after executing union_cubes.kcl "sourceRange": [] }, "from": [ - 10.0, - 20.0 + 2.0, + 8.0 ], "tag": null, "to": [ - 10.0, - 0.0 + 2.0, + -2.0 ], "type": "ToPoint", "units": { @@ -487,22 +511,34 @@ description: Variables in memory after executing union_cubes.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" @@ -510,12 +546,12 @@ description: Variables in memory after executing union_cubes.kcl }, "start": { "from": [ - 10.0, - 0.0 + 2.0, + -2.0 ], "to": [ - 10.0, - 0.0 + 2.0, + -2.0 ], "units": { "type": "Mm" diff --git a/rust/kcl-lib/tests/union_cubes/rendered_model.png b/rust/kcl-lib/tests/union_cubes/rendered_model.png index 8ba68ea02..77132a6f3 100644 Binary files a/rust/kcl-lib/tests/union_cubes/rendered_model.png and b/rust/kcl-lib/tests/union_cubes/rendered_model.png differ diff --git a/rust/kcl-lib/tests/union_cubes/unparsed.snap b/rust/kcl-lib/tests/union_cubes/unparsed.snap index a8cd4385c..2a68bd834 100644 --- a/rust/kcl-lib/tests/union_cubes/unparsed.snap +++ b/rust/kcl-lib/tests/union_cubes/unparsed.snap @@ -2,17 +2,18 @@ source: kcl-lib/src/simulation_tests.rs description: Result of unparsing union_cubes.kcl --- -fn cube(center) { +fn cube(center, size) { return startSketchOn(XY) - |> startProfileAt([center[0] - 10, center[1] - 10], %) - |> line(endAbsolute = [center[0] + 10, center[1] - 10]) - |> line(endAbsolute = [center[0] + 10, center[1] + 10]) - |> line(endAbsolute = [center[0] - 10, center[1] + 10]) + |> startProfileAt([center[0] - size, center[1] - size], %) + |> line(endAbsolute = [center[0] + size, center[1] - size]) + |> line(endAbsolute = [center[0] + size, center[1] + size]) + |> line(endAbsolute = [center[0] - size, center[1] + size]) |> close() - |> extrude(length = 10) + |> extrude(length = 2 * size) } -part001 = cube([0, 0]) -part002 = cube([20, 10]) +part001 = cube([0, 0], 10) +part002 = cube([7, 3], 5) + |> translate(z = 1) fullPart = union([part001, part002]) diff --git a/rust/kcl-lib/tests/xz_plane/artifact_commands.snap b/rust/kcl-lib/tests/xz_plane/artifact_commands.snap index 7dc70cd21..3a1077f24 100644 --- a/rust/kcl-lib/tests/xz_plane/artifact_commands.snap +++ b/rust/kcl-lib/tests/xz_plane/artifact_commands.snap @@ -162,7 +162,8 @@ description: Artifact commands xz_plane.kcl "type": "extrude", "target": "[uuid]", "distance": 12.0, - "faces": null + "faces": null, + "opposite": "None" } }, { diff --git a/rust/kcl-lib/tests/xz_plane/ast.snap b/rust/kcl-lib/tests/xz_plane/ast.snap index bdb77a2b8..aa42c1930 100644 --- a/rust/kcl-lib/tests/xz_plane/ast.snap +++ b/rust/kcl-lib/tests/xz_plane/ast.snap @@ -22,7 +22,7 @@ description: Result of parsing xz_plane.kcl { "arguments": [ { - "commentStart": 24, + "commentStart": 0, "end": 0, "raw": "'XZ'", "start": 0, @@ -33,10 +33,10 @@ description: Result of parsing xz_plane.kcl ], "callee": { "abs_path": false, - "commentStart": 10, + "commentStart": 0, "end": 0, "name": { - "commentStart": 10, + "commentStart": 0, "end": 0, "name": "startSketchOn", "start": 0, @@ -46,7 +46,7 @@ description: Result of parsing xz_plane.kcl "start": 0, "type": "Name" }, - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -55,10 +55,10 @@ description: Result of parsing xz_plane.kcl { "arguments": [ { - "commentStart": 50, + "commentStart": 0, "elements": [ { - "commentStart": 51, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -70,7 +70,7 @@ description: Result of parsing xz_plane.kcl } }, { - "commentStart": 54, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -88,7 +88,7 @@ description: Result of parsing xz_plane.kcl "type": "ArrayExpression" }, { - "commentStart": 58, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -97,10 +97,10 @@ description: Result of parsing xz_plane.kcl ], "callee": { "abs_path": false, - "commentStart": 35, + "commentStart": 0, "end": 0, "name": { - "commentStart": 35, + "commentStart": 0, "end": 0, "name": "startProfileAt", "start": 0, @@ -110,7 +110,7 @@ description: Result of parsing xz_plane.kcl "start": 0, "type": "Name" }, - "commentStart": 35, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -121,17 +121,17 @@ description: Result of parsing xz_plane.kcl { "type": "LabeledArg", "label": { - "commentStart": 71, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 85, + "commentStart": 0, "elements": [ { - "commentStart": 86, + "commentStart": 0, "end": 0, "raw": "100", "start": 0, @@ -143,7 +143,7 @@ description: Result of parsing xz_plane.kcl } }, { - "commentStart": 91, + "commentStart": 0, "end": 0, "raw": "100", "start": 0, @@ -164,10 +164,10 @@ description: Result of parsing xz_plane.kcl ], "callee": { "abs_path": false, - "commentStart": 66, + "commentStart": 0, "end": 0, "name": { - "commentStart": 66, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -177,7 +177,7 @@ description: Result of parsing xz_plane.kcl "start": 0, "type": "Name" }, - "commentStart": 66, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -189,17 +189,17 @@ description: Result of parsing xz_plane.kcl { "type": "LabeledArg", "label": { - "commentStart": 107, + "commentStart": 0, "end": 0, "name": "endAbsolute", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 121, + "commentStart": 0, "elements": [ { - "commentStart": 122, + "commentStart": 0, "end": 0, "raw": "100", "start": 0, @@ -211,7 +211,7 @@ description: Result of parsing xz_plane.kcl } }, { - "commentStart": 127, + "commentStart": 0, "end": 0, "raw": "0", "start": 0, @@ -232,10 +232,10 @@ description: Result of parsing xz_plane.kcl ], "callee": { "abs_path": false, - "commentStart": 102, + "commentStart": 0, "end": 0, "name": { - "commentStart": 102, + "commentStart": 0, "end": 0, "name": "line", "start": 0, @@ -245,7 +245,7 @@ description: Result of parsing xz_plane.kcl "start": 0, "type": "Name" }, - "commentStart": 102, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -255,7 +255,7 @@ description: Result of parsing xz_plane.kcl { "arguments": [ { - "commentStart": 142, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeSubstitution", @@ -264,10 +264,10 @@ description: Result of parsing xz_plane.kcl ], "callee": { "abs_path": false, - "commentStart": 136, + "commentStart": 0, "end": 0, "name": { - "commentStart": 136, + "commentStart": 0, "end": 0, "name": "close", "start": 0, @@ -277,7 +277,7 @@ description: Result of parsing xz_plane.kcl "start": 0, "type": "Name" }, - "commentStart": 136, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpression", @@ -288,17 +288,17 @@ description: Result of parsing xz_plane.kcl { "type": "LabeledArg", "label": { - "commentStart": 158, + "commentStart": 0, "end": 0, "name": "length", "start": 0, "type": "Identifier" }, "arg": { - "commentStart": 167, + "commentStart": 0, "end": 0, "left": { - "commentStart": 167, + "commentStart": 0, "end": 0, "raw": "5", "start": 0, @@ -311,7 +311,7 @@ description: Result of parsing xz_plane.kcl }, "operator": "+", "right": { - "commentStart": 171, + "commentStart": 0, "end": 0, "raw": "7", "start": 0, @@ -330,10 +330,10 @@ description: Result of parsing xz_plane.kcl ], "callee": { "abs_path": false, - "commentStart": 150, + "commentStart": 0, "end": 0, "name": { - "commentStart": 150, + "commentStart": 0, "end": 0, "name": "extrude", "start": 0, @@ -343,7 +343,7 @@ description: Result of parsing xz_plane.kcl "start": 0, "type": "Name" }, - "commentStart": 150, + "commentStart": 0, "end": 0, "start": 0, "type": "CallExpressionKw", @@ -351,7 +351,7 @@ description: Result of parsing xz_plane.kcl "unlabeled": null } ], - "commentStart": 10, + "commentStart": 0, "end": 0, "start": 0, "type": "PipeExpression", diff --git a/rust/kcl-lib/tests/xz_plane/ops.snap b/rust/kcl-lib/tests/xz_plane/ops.snap index f003462e5..f33952b87 100644 --- a/rust/kcl-lib/tests/xz_plane/ops.snap +++ b/rust/kcl-lib/tests/xz_plane/ops.snap @@ -5,7 +5,7 @@ description: Operations executed xz_plane.kcl [ { "labeledArgs": { - "data": { + "planeOrSolid": { "value": { "type": "String", "value": "XZ" diff --git a/rust/kcl-lib/tests/xz_plane/program_memory.snap b/rust/kcl-lib/tests/xz_plane/program_memory.snap index c3b5ccc2d..286ec9b51 100644 --- a/rust/kcl-lib/tests/xz_plane/program_memory.snap +++ b/rust/kcl-lib/tests/xz_plane/program_memory.snap @@ -102,22 +102,34 @@ description: Variables in memory after executing xz_plane.kcl "origin": { "x": 0.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "xAxis": { "x": 1.0, "y": 0.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "yAxis": { "x": 0.0, "y": 0.0, - "z": 1.0 + "z": 1.0, + "units": { + "type": "Mm" + } }, "zAxis": { "x": 0.0, "y": -1.0, - "z": 0.0 + "z": 0.0, + "units": { + "type": "Mm" + } }, "units": { "type": "Mm" diff --git a/rust/kcl-python-bindings/Cargo.toml b/rust/kcl-python-bindings/Cargo.toml index 35fb3f9e1..f5d24cd03 100644 --- a/rust/kcl-python-bindings/Cargo.toml +++ b/rust/kcl-python-bindings/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "kcl-python-bindings" -version = "0.3.58" +version = "0.3.61" edition = "2021" repository = "https://github.com/kittycad/modeling-app" exclude = ["tests/*", "files/*", "venv/*"] diff --git a/rust/kcl-test-server/Cargo.toml b/rust/kcl-test-server/Cargo.toml index c8be0e7ff..55930932b 100644 --- a/rust/kcl-test-server/Cargo.toml +++ b/rust/kcl-test-server/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "kcl-test-server" description = "A test server for KCL" -version = "0.1.58" +version = "0.1.61" edition = "2021" license = "MIT" diff --git a/rust/kcl-to-core/Cargo.toml b/rust/kcl-to-core/Cargo.toml index 53b8cd51b..961789916 100644 --- a/rust/kcl-to-core/Cargo.toml +++ b/rust/kcl-to-core/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "kcl-to-core" description = "Utility methods to convert kcl to engine core executable tests" -version = "0.1.58" +version = "0.1.61" edition = "2021" license = "MIT" repository = "https://github.com/KittyCAD/modeling-app" diff --git a/rust/kcl-to-core/src/conn_mock_core.rs b/rust/kcl-to-core/src/conn_mock_core.rs index 9309c52fa..bbb9d217d 100644 --- a/rust/kcl-to-core/src/conn_mock_core.rs +++ b/rust/kcl-to-core/src/conn_mock_core.rs @@ -193,6 +193,7 @@ impl EngineConnection { distance, target, faces: _, // Engine team: start using this once the frontend and engine both use it. + opposite: _, }) => { format!( r#" @@ -208,6 +209,7 @@ impl EngineConnection { origin, target, tolerance, + opposite: _, }) => { let ox = origin.x.0; let oy = origin.y.0; diff --git a/rust/kcl-wasm-lib/Cargo.toml b/rust/kcl-wasm-lib/Cargo.toml index 66682b614..11bb1e80f 100644 --- a/rust/kcl-wasm-lib/Cargo.toml +++ b/rust/kcl-wasm-lib/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "kcl-wasm-lib" -version = "0.1.58" +version = "0.1.61" edition = "2021" repository = "https://github.com/KittyCAD/modeling-app" rust-version = "1.83" diff --git a/rust/kcl-wasm-lib/src/wasm.rs b/rust/kcl-wasm-lib/src/wasm.rs index eb15df6e2..78c5c19c4 100644 --- a/rust/kcl-wasm-lib/src/wasm.rs +++ b/rust/kcl-wasm-lib/src/wasm.rs @@ -1,7 +1,7 @@ //! Wasm bindings for `kcl`. use gloo_utils::format::JsValueSerdeExt; -use kcl_lib::{pretty::NumericSuffix, CoreDump, Point2d, Program}; +use kcl_lib::{pretty::NumericSuffix, CoreDump, Program}; use wasm_bindgen::prelude::*; // wasm_bindgen wrapper for execute @@ -234,15 +234,11 @@ pub struct WasmCircleParams { /// Calculate a circle from 3 points. #[wasm_bindgen] pub fn calculate_circle_from_3_points(ax: f64, ay: f64, bx: f64, by: f64, cx: f64, cy: f64) -> WasmCircleParams { - let result = kcl_lib::std::utils::calculate_circle_from_3_points([ - Point2d { x: ax, y: ay }, - Point2d { x: bx, y: by }, - Point2d { x: cx, y: cy }, - ]); + let result = kcl_lib::std::utils::calculate_circle_from_3_points([[ax, ay], [bx, by], [cx, cy]]); WasmCircleParams { - center_x: result.center.x, - center_y: result.center.y, + center_x: result.center[0], + center_y: result.center[1], radius: result.radius, } } @@ -292,3 +288,22 @@ pub fn get_kcl_version() -> String { kcl_lib::version().to_string() } + +/// Get the allowed import file extensions. +#[wasm_bindgen] +pub fn import_file_extensions() -> Result, String> { + console_error_panic_hook::set_once(); + + Ok(kcl_lib::IMPORT_FILE_EXTENSIONS.iter().map(|s| s.to_string()).collect()) +} + +/// Get the allowed relevant file extensions (imports + kcl). +#[wasm_bindgen] +pub fn relevant_file_extensions() -> Result, String> { + console_error_panic_hook::set_once(); + + Ok(kcl_lib::RELEVANT_FILE_EXTENSIONS + .iter() + .map(|s| s.to_string()) + .collect::>()) +} diff --git a/scripts/build-wasm-dev.ps1 b/scripts/build-wasm-dev.ps1 index ba23b86f6..24dd855fb 100644 --- a/scripts/build-wasm-dev.ps1 +++ b/scripts/build-wasm-dev.ps1 @@ -19,4 +19,4 @@ cargo test -p kcl-lib export_bindings cd .. copy rust\kcl-wasm-lib\pkg\kcl_wasm_lib_bg.wasm public -yarn fmt:generated +npm run fmt:generated diff --git a/scripts/build-wasm-dev.sh b/scripts/build-wasm-dev.sh index 01c12b097..68a104b2a 100755 --- a/scripts/build-wasm-dev.sh +++ b/scripts/build-wasm-dev.sh @@ -13,4 +13,4 @@ cargo test -p kcl-lib export_bindings cd .. cp rust/kcl-wasm-lib/pkg/kcl_wasm_lib_bg.wasm public -yarn fmt:generated +npm run fmt:generated diff --git a/scripts/build-wasm.ps1 b/scripts/build-wasm.ps1 index 07082cfb0..e8f0dd1ce 100644 --- a/scripts/build-wasm.ps1 +++ b/scripts/build-wasm.ps1 @@ -19,4 +19,4 @@ cargo test -p kcl-lib export_bindings cd .. copy rust\kcl-wasm-lib\pkg\kcl_wasm_lib_bg.wasm public -yarn fmt:generated +npm run fmt:generated diff --git a/scripts/build-wasm.sh b/scripts/build-wasm.sh index 9053d4cd9..ccc10068e 100755 --- a/scripts/build-wasm.sh +++ b/scripts/build-wasm.sh @@ -13,4 +13,4 @@ cargo test -p kcl-lib export_bindings cd .. cp rust/kcl-wasm-lib/pkg/kcl_wasm_lib_bg.wasm public -yarn fmt:generated +npm run fmt:generated diff --git a/scripts/diff-circular-deps.sh b/scripts/diff-circular-deps.sh index 71ba2cdcb..425b363b2 100755 --- a/scripts/diff-circular-deps.sh +++ b/scripts/diff-circular-deps.sh @@ -1,5 +1,5 @@ #!/bin/bash set -euo pipefail -yarn circular-deps | sed '$d' | grep -v '^yarn run' > /tmp/circular-deps.txt +npm run circular-deps | sed '$d' > /tmp/circular-deps.txt diff --ignore-blank-lines -w /tmp/circular-deps.txt ./known-circular.txt diff --git a/src/Toolbar.tsx b/src/Toolbar.tsx index 93a438652..fc9aa65d2 100644 --- a/src/Toolbar.tsx +++ b/src/Toolbar.tsx @@ -17,12 +17,14 @@ import { isDesktop } from '@src/lib/isDesktop' import { openExternalBrowserIfDesktop } from '@src/lib/openWindow' import { editorManager, kclManager } from '@src/lib/singletons' import type { + ToolbarDropdown, ToolbarItem, ToolbarItemCallbackProps, ToolbarItemResolved, + ToolbarItemResolvedDropdown, ToolbarModeName, } from '@src/lib/toolbar' -import { toolbarConfig } from '@src/lib/toolbar' +import { isToolbarItemResolvedDropdown, toolbarConfig } from '@src/lib/toolbar' import { isArray } from '@src/lib/utils' import { commandBarActor } from '@src/machines/commandBarMachine' @@ -131,21 +133,27 @@ export function Toolbar({ */ const currentModeItems: ( | ToolbarItemResolved - | ToolbarItemResolved[] + | ToolbarItemResolvedDropdown | 'break' )[] = useMemo(() => { return toolbarConfig[currentMode].items.map((maybeIconConfig) => { if (maybeIconConfig === 'break') { return 'break' - } else if (isArray(maybeIconConfig)) { - return maybeIconConfig.map(resolveItemConfig) + } else if (isToolbarDropdown(maybeIconConfig)) { + return { + id: maybeIconConfig.id, + array: maybeIconConfig.array.map((item) => + resolveItemConfig(item, maybeIconConfig.id) + ), + } } else { return resolveItemConfig(maybeIconConfig) } }) function resolveItemConfig( - maybeIconConfig: ToolbarItem + maybeIconConfig: ToolbarItem, + dropdownId?: string ): ToolbarItemResolved { const isDisabled = disableAllButtons || @@ -176,6 +184,14 @@ export function Toolbar({ } }, [currentMode, disableAllButtons, configCallbackProps]) + // To remember the last selected item in an ActionButtonDropdown + const [lastSelectedMultiActionItem, _] = useState( + new Map< + number /* index in currentModeItems */, + number /* index in maybeIconConfig */ + >() + ) + return ( ) - } else if (isArray(maybeIconConfig)) { + } else if (isToolbarItemResolvedDropdown(maybeIconConfig)) { // A button with a dropdown + const selectedIcon = + maybeIconConfig.array.find((c) => c.isActive) || + maybeIconConfig.array[lastSelectedMultiActionItem.get(i) ?? 0] + + // Save the last selected item in the dropdown + lastSelectedMultiActionItem.set( + i, + maybeIconConfig.array.indexOf(selectedIcon) + ) return ( ({ + splitMenuItems={maybeIconConfig.array.map((itemConfig) => ({ id: itemConfig.id, label: itemConfig.title, hotkey: itemConfig.hotkey, @@ -236,11 +261,11 @@ export function Toolbar({ > - maybeIconConfig[0].onClick(configCallbackProps) - } + aria-description={selectedIcon.description} + onClick={() => selectedIcon.onClick(configCallbackProps)} > - - {maybeIconConfig[0].title} + + {selectedIcon.title} {showRichContent ? ( ) : ( )} @@ -430,7 +451,9 @@ const ToolbarItemTooltipShortContent = ({ > {title} {hotkey && ( - {hotkey} + + {displayHotkeys(hotkey)} + )} ) @@ -461,7 +484,9 @@ const ToolbarItemTooltipRichContent = ({ {itemConfig.title} {itemConfig.status === 'available' && itemConfig.hotkey ? ( - {itemConfig.hotkey} + + {displayHotkeys(itemConfig.hotkey)} + ) : itemConfig.status === 'kcl-only' ? ( <> @@ -522,3 +547,14 @@ const ToolbarItemTooltipRichContent = ({ ) } + +// We don't want to display Esc hotkeys to avoid confusion in the Toolbar UI (eg. "EscR") +function displayHotkeys(hotkey: string | string[]) { + return (isArray(hotkey) ? hotkey : [hotkey]).filter((h) => h !== 'Esc') +} + +function isToolbarDropdown( + item: ToolbarItem | ToolbarDropdown +): item is ToolbarDropdown { + return 'array' in item +} diff --git a/src/clientSideScene/sceneEntities.ts b/src/clientSideScene/sceneEntities.ts index 8dffef924..c97f4cd73 100644 --- a/src/clientSideScene/sceneEntities.ts +++ b/src/clientSideScene/sceneEntities.ts @@ -95,7 +95,7 @@ import { } from '@src/clientSideScene/segments' import type EditorManager from '@src/editor/manager' import type CodeManager from '@src/lang/codeManager' -import { ARG_END_ABSOLUTE } from '@src/lang/constants' +import { ARG_END, ARG_END_ABSOLUTE } from '@src/lang/constants' import { createArrayExpression, createCallExpressionStdLib, @@ -164,7 +164,7 @@ import type { SketchTool, } from '@src/machines/modelingMachine' -type DraftSegment = 'line' | 'tangentialArcTo' +type DraftSegment = 'line' | 'tangentialArc' type Vec3Array = [number, number, number] @@ -235,7 +235,7 @@ export class SceneEntities { segment.userData.prevSegment && segment.userData.type === TANGENTIAL_ARC_TO_SEGMENT ) { - update = segmentUtils.tangentialArcTo.update + update = segmentUtils.tangentialArc.update } if ( segment.userData && @@ -758,7 +758,7 @@ export class SceneEntities { const initSegment = segment.type === 'TangentialArcTo' - ? segmentUtils.tangentialArcTo.init + ? segmentUtils.tangentialArc.init : segment.type === 'Circle' ? segmentUtils.circle.init : segment.type === 'Arc' @@ -903,7 +903,7 @@ export class SceneEntities { forward: [number, number, number], up: [number, number, number], origin: [number, number, number], - segmentName: 'line' | 'tangentialArcTo' = 'line', + segmentName: 'line' | 'tangentialArc' = 'line', shouldTearDown = true ) => { const _ast = structuredClone(this.kclManager.ast) @@ -999,10 +999,9 @@ export class SceneEntities { variables: this.kclManager.variables, pathToNode: sketchEntryNodePath, expressions: [ - segmentName === 'tangentialArcTo' - ? createCallExpressionStdLib('tangentialArcTo', [ - originCoords, - createPipeSubstitution(), + segmentName === 'tangentialArc' + ? createCallExpressionStdLibKw('tangentialArc', null, [ + createLabeledArg(ARG_END_ABSOLUTE, originCoords), ]) : createCallExpressionStdLibKw('line', null, [ createLabeledArg(ARG_END_ABSOLUTE, originCoords), @@ -1048,11 +1047,10 @@ export class SceneEntities { // This might need to become its own function if we want more // case-based logic for different segment types if ( - (lastSegment.type === 'TangentialArcTo' && - segmentName !== 'line') || - segmentName === 'tangentialArcTo' + (lastSegment.type === 'TangentialArc' && segmentName !== 'line') || + segmentName === 'tangentialArc' ) { - resolvedFunctionName = 'tangentialArcTo' + resolvedFunctionName = 'tangentialArc' } else if (isHorizontal) { // If the angle between is 0 or 180 degrees (+/- the snapping angle), make the line an xLine resolvedFunctionName = 'xLine' @@ -1180,7 +1178,8 @@ export class SceneEntities { _ast = pResult.program // do a quick mock execution to get the program memory up-to-date - await this.kclManager.executeAstMock(_ast) + const didReParse = await this.kclManager.executeAstMock(_ast) + if (err(didReParse)) return didReParse const justCreatedNode = getNodeFromPath( _ast, @@ -1436,7 +1435,7 @@ export class SceneEntities { const y = (args.intersectionPoint.twoD.y || 0) - rectangleOrigin[1] if (sketchInit.type === 'PipeExpression') { - updateCenterRectangleSketch( + const maybeError = updateCenterRectangleSketch( sketchInit, x, y, @@ -1444,6 +1443,9 @@ export class SceneEntities { rectangleOrigin[0], rectangleOrigin[1] ) + if (err(maybeError)) { + return Promise.reject(maybeError) + } } const { execState } = await executeAstMock({ @@ -1491,7 +1493,7 @@ export class SceneEntities { const sketchInit = _node.node?.declaration.init if (sketchInit.type === 'PipeExpression') { - updateCenterRectangleSketch( + const maybeError = updateCenterRectangleSketch( sketchInit, x, y, @@ -1499,6 +1501,9 @@ export class SceneEntities { rectangleOrigin[0], rectangleOrigin[1] ) + if (err(maybeError)) { + return Promise.reject(maybeError) + } const pResult = parse(recast(_ast)) if (trap(pResult) || !resultIsOk(pResult)) @@ -1574,7 +1579,8 @@ export class SceneEntities { _ast = pResult.program // do a quick mock execution to get the program memory up-to-date - await this.kclManager.executeAstMock(_ast) + const didReParse = await this.kclManager.executeAstMock(_ast) + if (err(didReParse)) return didReParse const { truncatedAst } = await this.setupSketch({ sketchEntryNodePath: updatedEntryNodePath, @@ -1769,7 +1775,8 @@ export class SceneEntities { _ast = pResult.program // do a quick mock execution to get the program memory up-to-date - await this.kclManager.executeAstMock(_ast) + const didReParse = await this.kclManager.executeAstMock(_ast) + if (err(didReParse)) return didReParse const index = sg.paths.length // because we've added a new segment that's not in the memory yet const draftExpressionsIndices = { start: index, end: index } @@ -1996,7 +2003,8 @@ export class SceneEntities { _ast = pResult.program // do a quick mock execution to get the program memory up-to-date - await this.kclManager.executeAstMock(_ast) + const didReParse = await this.kclManager.executeAstMock(_ast) + if (err(didReParse)) return didReParse const index = sg.paths.length // because we've added a new segment that's not in the memory yet const draftExpressionsIndices = { start: index, end: index } @@ -2261,7 +2269,8 @@ export class SceneEntities { _ast = pResult.program // do a quick mock execution to get the program memory up-to-date - await this.kclManager.executeAstMock(_ast) + const didReParse = await this.kclManager.executeAstMock(_ast) + if (err(didReParse)) return didReParse const { truncatedAst } = await this.setupSketch({ sketchEntryNodePath: updatedEntryNodePath, @@ -2494,7 +2503,10 @@ export class SceneEntities { addingNewSegmentStatus = 'pending' if (trap(mod)) return - await this.kclManager.executeAstMock(mod.modifiedAst) + const didReParse = await this.kclManager.executeAstMock( + mod.modifiedAst + ) + if (err(didReParse)) return this.tearDownSketch({ removeAxis: false }) // eslint-disable-next-line @typescript-eslint/no-floating-promises this.setupSketch({ @@ -2989,7 +3001,7 @@ export class SceneEntities { } let update: SegmentUtils['update'] | null = null if (type === TANGENTIAL_ARC_TO_SEGMENT) { - update = segmentUtils.tangentialArcTo.update + update = segmentUtils.tangentialArc.update } else if (type === STRAIGHT_SEGMENT) { update = segmentUtils.straight.update } else if ( @@ -3168,7 +3180,7 @@ export class SceneEntities { if (parent.name === STRAIGHT_SEGMENT) { update = segmentUtils.straight.update } else if (parent.name === TANGENTIAL_ARC_TO_SEGMENT) { - update = segmentUtils.tangentialArcTo.update + update = segmentUtils.tangentialArc.update input = { type: 'arc-segment', from: parent.userData.from, @@ -3245,7 +3257,7 @@ export class SceneEntities { if (parent.name === STRAIGHT_SEGMENT) { update = segmentUtils.straight.update } else if (parent.name === TANGENTIAL_ARC_TO_SEGMENT) { - update = segmentUtils.tangentialArcTo.update + update = segmentUtils.tangentialArc.update input = { type: 'arc-segment', from: parent.userData.from, @@ -3519,17 +3531,19 @@ function prepareTruncatedAst( if (draftSegment === 'line') { newSegment = createCallExpressionStdLibKw('line', null, [ createLabeledArg( - 'end', + ARG_END, createArrayExpression([createLiteral(0), createLiteral(0)]) ), ]) } else { - newSegment = createCallExpressionStdLib('tangentialArcTo', [ - createArrayExpression([ - createLiteral(lastSeg.to[0]), - createLiteral(lastSeg.to[1]), - ]), - createPipeSubstitution(), + newSegment = createCallExpressionStdLibKw('tangentialArc', null, [ + createLabeledArg( + ARG_END_ABSOLUTE, + createArrayExpression([ + createLiteral(lastSeg.to[0]), + createLiteral(lastSeg.to[1]), + ]) + ), ]) } ;( diff --git a/src/clientSideScene/segments.ts b/src/clientSideScene/segments.ts index 9a393ed21..0f8fc6f6b 100644 --- a/src/clientSideScene/segments.ts +++ b/src/clientSideScene/segments.ts @@ -505,19 +505,19 @@ class TangentialArcToSegment implements SegmentUtils { extraSegmentGroup.visible = isHandlesVisible } - const tangentialArcToSegmentBody = group.children.find( + const tangentialArcSegmentBody = group.children.find( (child) => child.userData.type === TANGENTIAL_ARC_TO_SEGMENT_BODY ) as Mesh - if (tangentialArcToSegmentBody) { + if (tangentialArcSegmentBody) { const newGeo = createArcGeometry({ ...arcInfo, scale }) - tangentialArcToSegmentBody.geometry = newGeo + tangentialArcSegmentBody.geometry = newGeo } - const tangentialArcToSegmentBodyDashed = group.getObjectByName( + const tangentialArcSegmentBodyDashed = group.getObjectByName( TANGENTIAL_ARC_TO__SEGMENT_DASH ) - if (tangentialArcToSegmentBodyDashed instanceof Mesh) { - tangentialArcToSegmentBodyDashed.geometry = createArcGeometry({ + if (tangentialArcSegmentBodyDashed instanceof Mesh) { + tangentialArcSegmentBodyDashed.geometry = createArcGeometry({ ...arcInfo, isDashed: true, scale, @@ -1705,6 +1705,10 @@ function createLengthIndicator({ lengthIndicatorText.innerText = roundOff(length).toString() const lengthIndicatorWrapper = document.createElement('div') + lengthIndicatorWrapper.addEventListener('wheel', (e) => { + // dispatch to cameraControls, without this mouse wheel wouldn't work when hovering this segment label + sceneInfra.camControls.onMouseWheel(e) + }) // Double click workflow lengthIndicatorWrapper.ondblclick = () => { const selection = lengthIndicatorGroup.parent?.userData.selection @@ -2087,7 +2091,7 @@ function updateAngleIndicator( export const segmentUtils = { straight: new StraightSegment(), - tangentialArcTo: new TangentialArcToSegment(), + tangentialArc: new TangentialArcToSegment(), circle: new CircleSegment(), circleThreePoint: new CircleThreePointSegment(), arc: new ArcSegment(), diff --git a/src/components/ActionButton.tsx b/src/components/ActionButton.tsx index 766d19d93..1c0957a81 100644 --- a/src/components/ActionButton.tsx +++ b/src/components/ActionButton.tsx @@ -44,7 +44,7 @@ export type ActionButtonProps = | ActionButtonAsElement export const ActionButton = forwardRef((props: ActionButtonProps, ref) => { - const classNames = `action-button p-0 m-0 group mono text-xs leading-none flex items-center gap-2 rounded-sm border-solid border border-chalkboard-30 hover:border-chalkboard-40 enabled:dark:border-chalkboard-70 dark:hover:border-chalkboard-60 dark:bg-chalkboard-90/50 text-chalkboard-100 dark:text-chalkboard-10 ${ + const classNames = `action-button leading-[0.7] p-0 m-0 group mono text-xs leading-none flex items-center gap-2 rounded-sm border-solid border border-chalkboard-30 hover:border-chalkboard-40 enabled:dark:border-chalkboard-70 dark:hover:border-chalkboard-60 dark:bg-chalkboard-90/50 text-chalkboard-100 dark:text-chalkboard-10 ${ props.iconStart ? props.iconEnd ? 'px-0' // No padding if both icons are present @@ -71,6 +71,7 @@ export const ActionButton = forwardRef((props: ActionButtonProps, ref) => {